From d9c8980c63140e7ac5775ada29c960baf3326e0a Mon Sep 17 00:00:00 2001 From: Colin Diem Date: Thu, 9 Jun 2022 19:25:47 -0400 Subject: [PATCH] removes node_modules dir, adds gitignore. --- .gitignore | 1 + node_modules/.bin/csvtojson | 1 - node_modules/.bin/json2csv | 1 - node_modules/.package-lock.json | 88 - node_modules/bluebird/LICENSE | 21 - node_modules/bluebird/README.md | 57 - node_modules/bluebird/changelog.md | 1 - .../bluebird/js/browser/bluebird.core.js | 3914 - .../bluebird/js/browser/bluebird.core.min.js | 31 - node_modules/bluebird/js/browser/bluebird.js | 5778 -- .../bluebird/js/browser/bluebird.min.js | 31 - node_modules/bluebird/js/release/any.js | 21 - node_modules/bluebird/js/release/assert.js | 55 - node_modules/bluebird/js/release/async.js | 120 - node_modules/bluebird/js/release/bind.js | 67 - node_modules/bluebird/js/release/bluebird.js | 11 - node_modules/bluebird/js/release/call_get.js | 123 - node_modules/bluebird/js/release/cancel.js | 129 - .../bluebird/js/release/catch_filter.js | 42 - node_modules/bluebird/js/release/context.js | 69 - .../bluebird/js/release/debuggability.js | 1009 - .../bluebird/js/release/direct_resolve.js | 46 - node_modules/bluebird/js/release/each.js | 30 - node_modules/bluebird/js/release/errors.js | 116 - node_modules/bluebird/js/release/es5.js | 80 - node_modules/bluebird/js/release/filter.js | 12 - node_modules/bluebird/js/release/finally.js | 146 - .../bluebird/js/release/generators.js | 223 - node_modules/bluebird/js/release/join.js | 165 - node_modules/bluebird/js/release/map.js | 175 - node_modules/bluebird/js/release/method.js | 55 - node_modules/bluebird/js/release/nodeback.js | 51 - node_modules/bluebird/js/release/nodeify.js | 58 - node_modules/bluebird/js/release/promise.js | 819 - .../bluebird/js/release/promise_array.js | 186 - node_modules/bluebird/js/release/promisify.js | 314 - node_modules/bluebird/js/release/props.js | 118 - node_modules/bluebird/js/release/queue.js | 73 - node_modules/bluebird/js/release/race.js | 49 - node_modules/bluebird/js/release/reduce.js | 183 - node_modules/bluebird/js/release/schedule.js | 62 - node_modules/bluebird/js/release/settle.js | 47 - node_modules/bluebird/js/release/some.js | 148 - .../js/release/synchronous_inspection.js | 103 - node_modules/bluebird/js/release/thenables.js | 86 - node_modules/bluebird/js/release/timers.js | 93 - node_modules/bluebird/js/release/using.js | 226 - node_modules/bluebird/js/release/util.js | 421 - node_modules/bluebird/package.json | 78 - node_modules/commander/CHANGELOG.md | 361 - node_modules/commander/LICENSE | 22 - node_modules/commander/Readme.md | 791 - node_modules/commander/index.js | 1881 - node_modules/commander/package.json | 51 - node_modules/commander/typings/index.d.ts | 410 - node_modules/csvtojson/.coveralls.yml | 1 - .../081f64d5edb0cbe31f73fbc9234d8e0e.json | 1 - .../0b5b534d8fdda9c9e8b53fce635f391b.json | 1 - .../0b82538911259cd760273af57e1b568e.json | 1 - .../1fca5d8f4e8d0d7070af41ac05926b53.json | 1 - .../28300bac0b62bba7556e850269888b3a.json | 1 - .../290a14ffd14b612104d733748fcb00ea.json | 1 - .../2d0a0489ff0595b8e4e6adccf81060c8.json | 1 - .../3285cdcafb8fcaecfa2fd1db8f6d35c1.json | 1 - .../353a08632aa428048df9d67f46b2a943.json | 1 - .../372af79153a72baeaaee8fac2c00326e.json | 1 - .../3c338e25b082cae5697e985e98a01fe0.json | 1 - .../3f4b44285d46037be38e2a3fb692ca90.json | 1 - .../408532dd749511a552d2171e6dd846f9.json | 1 - .../427f91d355efe544f3c08bef54b0cba4.json | 1 - .../5295987c062fb22dfb962addac01e463.json | 1 - .../548df513a8d4bb28c35f0142c19e88da.json | 1 - .../5aa3d5a9e40c7b393bcc5741ab892901.json | 1 - .../5be35f8b3b5266ff2eae0d4a535f9472.json | 1 - .../5e4760ecbfae5fa02da0dfc78b080df1.json | 1 - .../5ecfa6bb23b282fe433bacd19be3c301.json | 1 - .../619b06b7be8e214e8fb326e4f336a7be.json | 1 - .../6ebc3edd99eabbc335501c2ab5302ffd.json | 1 - .../74d45bc2be4d60ae2bc0793cbb6bffcd.json | 1 - .../763b2880a165693362fce56b1ac899e3.json | 1 - .../764c64567872f5beaff5721b469b15c8.json | 1 - .../8324a746e7efbf67009c3427165fe910.json | 1 - .../8f11bb580569edc78e9ac43a4e77ebf7.json | 1 - .../934df09d48f9ab6d63432230cb8317bb.json | 1 - .../95f40fd8e3124bf5095029ef2d7b2992.json | 1 - .../a314d83b6e7be2c677c93ea6fbcdbdbc.json | 1 - .../ac79bb4f8b5a2c44b47ba0e0ff1981b8.json | 1 - .../b5b5ac11f64a1197639ab87ddf790f3f.json | 1 - .../c444d3abd00b76b655d8c52d1d6d9a18.json | 1 - .../d69c8a3cb089743a1c6fe6af1b55dcaf.json | 1 - .../d9ab5ea23a578236eda29d6fb5d81a89.json | 1 - .../ddbb6c792d436c4896dca99a6889d310.json | 1 - .../e30b290de441d813f69836edb7b6bf69.json | 1 - .../e6b880f5dcf4799d52e940c12d2c0fc8.json | 1 - .../f5bf0478c1625678749178bdb2e5098d.json | 1 - .../f6e47582bba1716e24a1e52d01da6e9c.json | 1 - node_modules/csvtojson/.travis.yml | 7 - ...100b167a1060208a0fdf57d39dc695ae209e0c9.js | 212 - ...b661828a2caaa54a764fc152183ad640d1d66be.js | 32 - ...33b2a96e89ab84d86142a1bc9b7767bb5601d6d.js | 522 - ...66bac032beb92732a7fc3a93a7da308df59074b.js | 310 - ...0ef34f7c2da2287e3d58928ceb5b83feb3b528b.js | 43 - ...f23cb6f79647e7f5e59dce04654581288e7e3e7.js | 12 - ...3623baabb47d90efcb26810c79a570fed5ad880.js | 27 - ...c82531410ecb53ccdbe486e410336329db2fdb4.js | 131 - ...6fb1a1baa361e29c2df52092099a5376d037cb9.js | 22 - ...8f5c515dd472fccb2f189b66ce7a266fce983f9.js | 9 - ...19e27e33da138d89fb7c3054fa3b5f0085263e2.js | 193 - ...fc46a34e2f38a490b8b82485bbbf319282a9c64.js | 22 - ...cd2739b703649046edb8805d043fd9d43e23581.js | 638 - ...5baaf68e9e74f24d69965986f1dfd58764d8f18.js | 223 - ...c30264b6721c20a7144d863993a743b0fd3d45f.js | 164 - ...1cc03a456f7a02682d837efbfd48c3882c1725a.js | 72 - ...7b4ed78373de3210b31ccf65b4aed7731f9e9cd.js | 418 - ...4bd777abbe25614c4f67780bdd3d4f82f7da832.js | 39 - ...48b72d263fc7188f8adba2c85aec0c27e54ba1e.js | 342 - ...7da8b891eb80498ee4ab50c99085e120ad44307.js | 42 - ...cce32bd3d2a0b578a3d58bf502142d57979736c.js | 55 - ...e4b115d1ca9f4258e909100787837de7b2c2dde.js | 99 - ...fcba99b4eb7ee0ec505f5bc404dfb198396e590.js | 7 - ...00691dc885e4e64429d73b07dd25f75a49704bb.js | 16 - node_modules/csvtojson/LICENSE | 7 - node_modules/csvtojson/bin/csvtojson | 3 - node_modules/csvtojson/bin/csvtojson.bat | 1 - node_modules/csvtojson/bin/csvtojson.js | 180 - node_modules/csvtojson/bin/genCsv.js | 32 - node_modules/csvtojson/bin/options.json | 95 - node_modules/csvtojson/browser/browser.js | 8 - .../csvtojson/browser/csvtojson.min.js | 8 - node_modules/csvtojson/contributors.md | 80 - .../csvtojson/coverage/CSVError.test.ts.html | 84 - .../csvtojson/coverage/CSVError.ts.html | 153 - .../csvtojson/coverage/Converter.ts.html | 618 - .../csvtojson/coverage/Parameters.ts.html | 420 - .../csvtojson/coverage/ParseRuntime.ts.html | 336 - .../csvtojson/coverage/ProcessFork.ts.html | 489 - .../csvtojson/coverage/Processor.ts.html | 123 - .../coverage/ProcessorLocal.test.ts.html | 189 - .../csvtojson/coverage/ProcessorLocal.ts.html | 870 - .../csvtojson/coverage/Result.ts.html | 516 - .../csvtojson/coverage/Worker.ts.html | 87 - node_modules/csvtojson/coverage/base.css | 223 - .../csvtojson/coverage/block-navigation.js | 63 - .../coverage/csv2json/Gruntfile.js.html | 102 - .../coverage/csv2json/bin/benchmark.js.html | 210 - .../coverage/csv2json/bin/csvtojson.js.html | 552 - .../coverage/csv2json/bin/genCsv.js.html | 165 - .../coverage/csv2json/bin/index.html | 123 - .../coverage/csv2json/browser_index.js.html | 102 - .../coverage/csv2json/dist/csvtojson.js.html | 102 - .../csv2json/dist/csvtojson.min.js.html | 102 - .../coverage/csv2json/dist/index.html | 110 - .../csvtojson/coverage/csv2json/index.html | 123 - .../csvtojson/coverage/csv2json/index.js.html | 69 - .../csv2json/libs/core/CSVError.js.html | 102 - .../csv2json/libs/core/Converter.js.html | 102 - .../csv2json/libs/core/csvline.js.html | 102 - .../csv2json/libs/core/dataToCSVLine.js.html | 102 - .../csv2json/libs/core/defParam.js.html | 102 - .../libs/core/defaultParsers/index.html | 162 - .../libs/core/defaultParsers/index.js.html | 102 - .../core/defaultParsers/parser_array.js.html | 102 - .../core/defaultParsers/parser_flat.js.html | 102 - .../core/defaultParsers/parser_json.js.html | 102 - .../defaultParsers/parser_jsonarray.js.html | 102 - .../core/defaultParsers/parser_omit.js.html | 102 - .../libs/core/fileLineToCSVLine.js.html | 102 - .../csv2json/libs/core/fileline.js.html | 102 - .../csv2json/libs/core/filterRow.js.html | 102 - .../csv2json/libs/core/getDelimiter.js.html | 102 - .../csv2json/libs/core/getEol.js.html | 102 - .../coverage/csv2json/libs/core/index.html | 305 - .../coverage/csv2json/libs/core/index.js.html | 102 - .../csv2json/libs/core/linesToJson.js.html | 102 - .../csv2json/libs/core/parser.js.html | 102 - .../csv2json/libs/core/parserMgr.js.html | 102 - .../csv2json/libs/core/rowSplit.js.html | 102 - .../csv2json/libs/core/worker.js.html | 102 - .../csv2json/libs/core/workerMgr.js.html | 102 - .../coverage/csv2json/libs/csv2json.js.html | 102 - .../coverage/csv2json/libs/index.html | 97 - .../csv2json/libs/interfaces/cli/index.html | 110 - .../libs/interfaces/cli/index.js.html | 102 - .../csv2json/libs/interfaces/cli/main.js.html | 102 - .../csv2json/libs/interfaces/index.html | 97 - .../csv2json/libs/interfaces/index.js.html | 102 - .../coverage/csv2json/src/CSVError.ts.html | 138 - .../coverage/csv2json/src/Converter.ts.html | 636 - .../coverage/csv2json/src/Processor.ts.html | 117 - .../csv2json/src/ProcessorLocal.test.ts.html | 153 - .../csv2json/src/ProcessorLocal.ts.html | 810 - .../coverage/csv2json/src/Result.ts.html | 516 - .../coverage/csv2json/src/Worker.ts.html | 87 - .../coverage/csv2json/src/dataClean.ts.html | 255 - .../csv2json/src/fileline.test.ts.html | 111 - .../coverage/csv2json/src/fileline.ts.html | 141 - .../coverage/csv2json/src/getEol.ts.html | 132 - .../coverage/csv2json/src/index.html | 305 - .../coverage/csv2json/src/index.ts.html | 93 - .../coverage/csv2json/src/lineToJson.ts.html | 660 - .../csv2json/src/rowSplit.test.ts.html | 399 - .../coverage/csv2json/src/rowSplit.ts.html | 666 - .../coverage/csv2json/src/test.ts.html | 81 - .../coverage/csv2json/src/util.ts.html | 120 - .../coverage/csv2json/testNew/index.html | 136 - .../csv2json/testNew/testCSVConverter.ts.html | 102 - .../testNew/testCSVConverter2.ts.html | 102 - .../testNew/testCSVConverter3.ts.html | 102 - .../csv2json/testNew/testErrorHandle.ts.html | 102 - .../csvtojson/coverage/dataClean.ts.html | 255 - .../csvtojson/coverage/fileline.test.ts.html | 111 - .../csvtojson/coverage/fileline.ts.html | 141 - .../csvtojson/coverage/getEol.ts.html | 132 - node_modules/csvtojson/coverage/index.html | 305 - node_modules/csvtojson/coverage/index.ts.html | 93 - .../csvtojson/coverage/lcov-report/base.css | 223 - .../coverage/lcov-report/block-navigation.js | 63 - .../lcov-report/csv2json/Gruntfile.js.html | 330 - .../csv2json/bin/benchmark.js.html | 210 - .../csv2json/bin/csvtojson.js.html | 552 - .../lcov-report/csv2json/bin/genCsv.js.html | 165 - .../lcov-report/csv2json/bin/index.html | 123 - .../csv2json/browser_index.js.html | 81 - .../csv2json/dist/csvtojson.js.html | 84849 ---------------- .../csv2json/dist/csvtojson.min.js.html | 90 - .../lcov-report/csv2json/dist/index.html | 110 - .../coverage/lcov-report/csv2json/index.html | 123 - .../lcov-report/csv2json/index.js.html | 69 - .../csv2json/libs/core/CSVError.js.html | 150 - .../csv2json/libs/core/Converter.js.html | 1836 - .../csv2json/libs/core/csvline.js.html | 138 - .../csv2json/libs/core/dataToCSVLine.js.html | 120 - .../csv2json/libs/core/defParam.js.html | 270 - .../libs/core/defaultParsers/index.html | 162 - .../libs/core/defaultParsers/index.js.html | 90 - .../core/defaultParsers/parser_array.js.html | 105 - .../core/defaultParsers/parser_flat.js.html | 99 - .../core/defaultParsers/parser_json.js.html | 279 - .../defaultParsers/parser_jsonarray.js.html | 135 - .../core/defaultParsers/parser_omit.js.html | 87 - .../libs/core/fileLineToCSVLine.js.html | 114 - .../csv2json/libs/core/fileline.js.html | 108 - .../csv2json/libs/core/filterRow.js.html | 123 - .../csv2json/libs/core/getDelimiter.js.html | 135 - .../csv2json/libs/core/getEol.js.html | 129 - .../lcov-report/csv2json/libs/core/index.html | 305 - .../csv2json/libs/core/index.js.html | 87 - .../csv2json/libs/core/linesToJson.js.html | 774 - .../csv2json/libs/core/parser.js.html | 417 - .../csv2json/libs/core/parserMgr.js.html | 276 - .../csv2json/libs/core/rowSplit.js.html | 462 - .../csv2json/libs/core/worker.js.html | 321 - .../csv2json/libs/core/workerMgr.js.html | 522 - .../csv2json/libs/csv2json.js.html | 87 - .../lcov-report/csv2json/libs/index.html | 97 - .../csv2json/libs/interfaces/cli/index.html | 110 - .../libs/interfaces/cli/index.js.html | 69 - .../csv2json/libs/interfaces/cli/main.js.html | 192 - .../csv2json/libs/interfaces/index.html | 97 - .../csv2json/libs/interfaces/index.js.html | 69 - .../lcov-report/csv2json/src/CSVError.ts.html | 138 - .../csv2json/src/Converter.ts.html | 636 - .../csv2json/src/Processor.ts.html | 117 - .../csv2json/src/ProcessorLocal.test.ts.html | 153 - .../csv2json/src/ProcessorLocal.ts.html | 810 - .../lcov-report/csv2json/src/Result.ts.html | 516 - .../lcov-report/csv2json/src/Worker.ts.html | 87 - .../csv2json/src/dataClean.ts.html | 255 - .../csv2json/src/fileline.test.ts.html | 111 - .../lcov-report/csv2json/src/fileline.ts.html | 141 - .../lcov-report/csv2json/src/getEol.ts.html | 132 - .../lcov-report/csv2json/src/index.html | 305 - .../lcov-report/csv2json/src/index.ts.html | 93 - .../csv2json/src/lineToJson.ts.html | 660 - .../csv2json/src/rowSplit.test.ts.html | 399 - .../lcov-report/csv2json/src/rowSplit.ts.html | 666 - .../lcov-report/csv2json/src/test.ts.html | 81 - .../lcov-report/csv2json/src/util.ts.html | 120 - .../lcov-report/csv2json/testNew/index.html | 136 - .../csv2json/testNew/testCSVConverter.ts.html | 102 - .../testNew/testCSVConverter2.ts.html | 102 - .../testNew/testCSVConverter3.ts.html | 102 - .../csv2json/testNew/testErrorHandle.ts.html | 102 - .../csvtojson/coverage/lcov-report/index.html | 227 - .../coverage/lcov-report/prettify.css | 1 - .../coverage/lcov-report/prettify.js | 1 - .../lcov-report/sort-arrow-sprite.png | Bin 209 -> 0 bytes .../csvtojson/coverage/lcov-report/sorter.js | 158 - node_modules/csvtojson/coverage/lcov.info | 31888 ------ .../csvtojson/coverage/lineToJson.ts.html | 660 - node_modules/csvtojson/coverage/prettify.css | 1 - node_modules/csvtojson/coverage/prettify.js | 1 - .../csvtojson/coverage/rowSplit.test.ts.html | 399 - .../csvtojson/coverage/rowSplit.ts.html | 681 - .../csvtojson/coverage/sort-arrow-sprite.png | Bin 209 -> 0 bytes node_modules/csvtojson/coverage/sorter.js | 158 - node_modules/csvtojson/coverage/test.ts.html | 81 - node_modules/csvtojson/coverage/util.ts.html | 141 - node_modules/csvtojson/index.d.ts | 4 - node_modules/csvtojson/index.js | 1 - node_modules/csvtojson/package.json | 315 - node_modules/csvtojson/readme-old.md | 914 - node_modules/csvtojson/readme.md | 680 - node_modules/csvtojson/src/CSVError.test.ts | 6 - node_modules/csvtojson/src/CSVError.ts | 27 - node_modules/csvtojson/src/Converter.ts | 189 - node_modules/csvtojson/src/Parameters.ts | 136 - node_modules/csvtojson/src/ParseRuntime.ts | 90 - node_modules/csvtojson/src/ProcessFork.ts | 150 - node_modules/csvtojson/src/Processor.ts | 18 - .../csvtojson/src/ProcessorLocal.test.ts | 40 - node_modules/csvtojson/src/ProcessorLocal.ts | 270 - node_modules/csvtojson/src/Result.test.ts | 22 - node_modules/csvtojson/src/Result.ts | 164 - node_modules/csvtojson/src/dataClean.ts | 63 - node_modules/csvtojson/src/fileline.test.ts | 14 - node_modules/csvtojson/src/fileline.ts | 25 - node_modules/csvtojson/src/getEol.ts | 21 - node_modules/csvtojson/src/index.ts | 10 - node_modules/csvtojson/src/lineToJson.ts | 210 - node_modules/csvtojson/src/rowSplit.test.ts | 142 - node_modules/csvtojson/src/rowSplit.ts | 235 - node_modules/csvtojson/src/util.ts | 37 - node_modules/csvtojson/src/worker.ts | 76 - node_modules/csvtojson/test/data/columnArray | 6 - .../csvtojson/test/data/complexJSONCSV | 3 - .../csvtojson/test/data/csvWithUnclosedHeader | 3 - node_modules/csvtojson/test/data/data#139 | 4 - .../csvtojson/test/data/dataDiffDelimiter | 3 - .../csvtojson/test/data/dataIgnoreEmpty | 13 - .../csvtojson/test/data/dataNoTrimBOM | 3 - .../csvtojson/test/data/dataNoTrimCRLF | 3 - node_modules/csvtojson/test/data/dataTsv | 201 - .../csvtojson/test/data/dataWithAutoDelimiter | 5 - .../csvtojson/test/data/dataWithComma | 5 - .../csvtojson/test/data/dataWithEmptyString | 1 - .../csvtojson/test/data/dataWithLongRow | 2 - .../test/data/dataWithMismatchedColumn | 5 - .../test/data/dataWithMultipleLineRow | 4 - .../test/data/dataWithPipeAsDelimiter | 3 - .../csvtojson/test/data/dataWithQoutes | 8 - .../csvtojson/test/data/dataWithSlashEscape | 2 - ...taWithSlashEscapeAndDelimiterBetweenQuotes | 2 - .../test/data/dataWithTabAsDelimiter | 3 - .../csvtojson/test/data/dataWithTripleQoutes | 5 - node_modules/csvtojson/test/data/dataWithType | 2 - .../test/data/dataWithUnclosedQuotes | 8 - .../csvtojson/test/data/dataWithWhiteSpace | 2 - node_modules/csvtojson/test/data/emptyFile | 0 .../csvtojson/test/data/invalidHeader | 6 - .../csvtojson/test/data/large-csv-sample.csv | 5291 - .../csvtojson/test/data/large-utf8.csv | 5291 - node_modules/csvtojson/test/data/lineBreak | 8 - node_modules/csvtojson/test/data/longHeader | 2 - .../test/data/noheaderWithVaryColumnNum | 2 - node_modules/csvtojson/test/data/noheadercsv | 5 - node_modules/csvtojson/test/data/pipeAsQuote | 2 - .../csvtojson/test/data/quoteTolerant | 2 - node_modules/csvtojson/test/data/tabsv | 5 - node_modules/csvtojson/test/data/testData | 3 - node_modules/csvtojson/test/data/testEol | 1 - .../csvtojson/test/data/trailingComma | 3 - .../csvtojson/test/data/twodoublequotes | 2 - .../csvtojson/test/testCSVConverter.fork.ts | 682 - .../csvtojson/test/testCSVConverter.ts | 450 - .../csvtojson/test/testCSVConverter2.ts | 583 - .../csvtojson/test/testCSVConverter3.ts | 323 - .../csvtojson/test/testErrorHandle.ts | 57 - node_modules/csvtojson/tsconfig.json | 64 - node_modules/csvtojson/typings.d.ts | 4 - node_modules/csvtojson/v1/core/CSVError.js | 27 - node_modules/csvtojson/v1/core/Converter.js | 580 - node_modules/csvtojson/v1/core/csvline.js | 23 - .../csvtojson/v1/core/dataToCSVLine.js | 17 - node_modules/csvtojson/v1/core/defParam.js | 67 - .../csvtojson/v1/core/defaultParsers/index.js | 7 - .../v1/core/defaultParsers/parser_array.js | 12 - .../v1/core/defaultParsers/parser_flat.js | 10 - .../v1/core/defaultParsers/parser_json.js | 70 - .../core/defaultParsers/parser_jsonarray.js | 22 - .../v1/core/defaultParsers/parser_omit.js | 6 - .../csvtojson/v1/core/fileLineToCSVLine.js | 15 - node_modules/csvtojson/v1/core/fileline.js | 13 - node_modules/csvtojson/v1/core/filterRow.js | 19 - .../csvtojson/v1/core/getDelimiter.js | 22 - node_modules/csvtojson/v1/core/getEol.js | 20 - node_modules/csvtojson/v1/core/index.js | 6 - node_modules/csvtojson/v1/core/linesToJson.js | 235 - node_modules/csvtojson/v1/core/parser.js | 116 - node_modules/csvtojson/v1/core/parserMgr.js | 69 - node_modules/csvtojson/v1/core/rowSplit.js | 131 - node_modules/csvtojson/v1/core/worker.js | 84 - node_modules/csvtojson/v1/core/workerMgr.js | 150 - node_modules/csvtojson/v1/index.js | 6 - .../csvtojson/v1/interfaces/cli/index.js | 1 - .../csvtojson/v1/interfaces/cli/main.js | 42 - node_modules/csvtojson/v1/interfaces/index.js | 2 - .../csvtojson/v1/interfaces/web/index.js | 1 - .../csvtojson/v1/interfaces/web/webServer.js | 23 - node_modules/csvtojson/v2/CSVError.d.ts | 14 - node_modules/csvtojson/v2/CSVError.js | 42 - node_modules/csvtojson/v2/CSVError.js.map | 1 - node_modules/csvtojson/v2/Converter.d.ts | 39 - node_modules/csvtojson/v2/Converter.js | 193 - node_modules/csvtojson/v2/Converter.js.map | 1 - node_modules/csvtojson/v2/Parameters.d.ts | 93 - node_modules/csvtojson/v2/Parameters.js | 43 - node_modules/csvtojson/v2/Parameters.js.map | 1 - node_modules/csvtojson/v2/ParseRuntime.d.ts | 59 - node_modules/csvtojson/v2/ParseRuntime.js | 32 - node_modules/csvtojson/v2/ParseRuntime.js.map | 1 - node_modules/csvtojson/v2/ProcessFork.d.ts | 33 - node_modules/csvtojson/v2/ProcessFork.js | 154 - node_modules/csvtojson/v2/ProcessFork.js.map | 1 - node_modules/csvtojson/v2/Processor.d.ts | 17 - node_modules/csvtojson/v2/Processor.js | 12 - node_modules/csvtojson/v2/Processor.js.map | 1 - node_modules/csvtojson/v2/ProcessorLocal.d.ts | 22 - node_modules/csvtojson/v2/ProcessorLocal.js | 310 - .../csvtojson/v2/ProcessorLocal.js.map | 1 - node_modules/csvtojson/v2/Result.d.ts | 18 - node_modules/csvtojson/v2/Result.js | 164 - node_modules/csvtojson/v2/Result.js.map | 1 - node_modules/csvtojson/v2/dataClean.d.ts | 9 - node_modules/csvtojson/v2/dataClean.js | 72 - node_modules/csvtojson/v2/dataClean.js.map | 1 - node_modules/csvtojson/v2/fileline.d.ts | 16 - node_modules/csvtojson/v2/fileline.js | 22 - node_modules/csvtojson/v2/fileline.js.map | 1 - node_modules/csvtojson/v2/getEol.d.ts | 2 - node_modules/csvtojson/v2/getEol.js | 27 - node_modules/csvtojson/v2/getEol.js.map | 1 - node_modules/csvtojson/v2/index.d.ts | 6 - node_modules/csvtojson/v2/index.js | 9 - node_modules/csvtojson/v2/index.js.map | 1 - node_modules/csvtojson/v2/lineToJson.d.ts | 5 - node_modules/csvtojson/v2/lineToJson.js | 212 - node_modules/csvtojson/v2/lineToJson.js.map | 1 - node_modules/csvtojson/v2/rowSplit.d.ts | 34 - node_modules/csvtojson/v2/rowSplit.js | 230 - node_modules/csvtojson/v2/rowSplit.js.map | 1 - node_modules/csvtojson/v2/util.d.ts | 6 - node_modules/csvtojson/v2/util.js | 39 - node_modules/csvtojson/v2/util.js.map | 1 - node_modules/csvtojson/v2/worker.d.ts | 0 node_modules/csvtojson/v2/worker.js | 72 - node_modules/csvtojson/v2/worker.js.map | 1 - node_modules/csvtojson/webpack.config.js | 66 - node_modules/is-utf8/LICENSE | 9 - node_modules/is-utf8/README.md | 16 - node_modules/is-utf8/is-utf8.js | 76 - node_modules/is-utf8/package.json | 19 - node_modules/json2csv/.eslintrc | 10 - node_modules/json2csv/.gitattributes | 3 - node_modules/json2csv/CHANGELOG.md | 614 - node_modules/json2csv/LICENSE.md | 14 - node_modules/json2csv/README.md | 970 - node_modules/json2csv/bin/json2csv.js | 183 - .../json2csv/bin/utils/TablePrinter.js | 117 - .../json2csv/bin/utils/parseNdjson.js | 11 - node_modules/json2csv/dist/json2csv.esm.js | 2361 - node_modules/json2csv/dist/json2csv.umd.js | 7448 -- .../json2csv/lib/JSON2CSVAsyncParser.js | 60 - node_modules/json2csv/lib/JSON2CSVBase.js | 188 - node_modules/json2csv/lib/JSON2CSVParser.js | 81 - .../json2csv/lib/JSON2CSVTransform.js | 203 - node_modules/json2csv/lib/json2csv.js | 44 - .../json2csv/lib/transforms/flatten.js | 37 - .../json2csv/lib/transforms/unwind.js | 63 - node_modules/json2csv/lib/utils.js | 72 - node_modules/json2csv/package.json | 73 - node_modules/json2csv/rollup.config.js | 46 - node_modules/jsonparse/.npmignore | 1 - node_modules/jsonparse/LICENSE | 24 - node_modules/jsonparse/README.markdown | 11 - node_modules/jsonparse/bench.js | 26 - .../jsonparse/examples/twitterfeed.js | 30 - node_modules/jsonparse/jsonparse.js | 413 - node_modules/jsonparse/package.json | 22 - node_modules/jsonparse/samplejson/basic.json | 167 - node_modules/jsonparse/samplejson/basic2.json | 180 - node_modules/jsonparse/test/big-token.js | 24 - node_modules/jsonparse/test/boundary.js | 110 - node_modules/jsonparse/test/offset.js | 67 - node_modules/jsonparse/test/primitives.js | 57 - node_modules/jsonparse/test/surrogate.js | 26 - node_modules/jsonparse/test/unvalid.js | 15 - node_modules/jsonparse/test/utf8.js | 38 - node_modules/lodash.get/LICENSE | 47 - node_modules/lodash.get/README.md | 18 - node_modules/lodash.get/index.js | 931 - node_modules/lodash.get/package.json | 17 - node_modules/lodash/LICENSE | 47 - node_modules/lodash/README.md | 39 - node_modules/lodash/_DataView.js | 7 - node_modules/lodash/_Hash.js | 32 - node_modules/lodash/_LazyWrapper.js | 28 - node_modules/lodash/_ListCache.js | 32 - node_modules/lodash/_LodashWrapper.js | 22 - node_modules/lodash/_Map.js | 7 - node_modules/lodash/_MapCache.js | 32 - node_modules/lodash/_Promise.js | 7 - node_modules/lodash/_Set.js | 7 - node_modules/lodash/_SetCache.js | 27 - node_modules/lodash/_Stack.js | 27 - node_modules/lodash/_Symbol.js | 6 - node_modules/lodash/_Uint8Array.js | 6 - node_modules/lodash/_WeakMap.js | 7 - node_modules/lodash/_apply.js | 21 - node_modules/lodash/_arrayAggregator.js | 22 - node_modules/lodash/_arrayEach.js | 22 - node_modules/lodash/_arrayEachRight.js | 21 - node_modules/lodash/_arrayEvery.js | 23 - node_modules/lodash/_arrayFilter.js | 25 - node_modules/lodash/_arrayIncludes.js | 17 - node_modules/lodash/_arrayIncludesWith.js | 22 - node_modules/lodash/_arrayLikeKeys.js | 49 - node_modules/lodash/_arrayMap.js | 21 - node_modules/lodash/_arrayPush.js | 20 - node_modules/lodash/_arrayReduce.js | 26 - node_modules/lodash/_arrayReduceRight.js | 24 - node_modules/lodash/_arraySample.js | 15 - node_modules/lodash/_arraySampleSize.js | 17 - node_modules/lodash/_arrayShuffle.js | 15 - node_modules/lodash/_arraySome.js | 23 - node_modules/lodash/_asciiSize.js | 12 - node_modules/lodash/_asciiToArray.js | 12 - node_modules/lodash/_asciiWords.js | 15 - node_modules/lodash/_assignMergeValue.js | 20 - node_modules/lodash/_assignValue.js | 28 - node_modules/lodash/_assocIndexOf.js | 21 - node_modules/lodash/_baseAggregator.js | 21 - node_modules/lodash/_baseAssign.js | 17 - node_modules/lodash/_baseAssignIn.js | 17 - node_modules/lodash/_baseAssignValue.js | 25 - node_modules/lodash/_baseAt.js | 23 - node_modules/lodash/_baseClamp.js | 22 - node_modules/lodash/_baseClone.js | 166 - node_modules/lodash/_baseConforms.js | 18 - node_modules/lodash/_baseConformsTo.js | 27 - node_modules/lodash/_baseCreate.js | 30 - node_modules/lodash/_baseDelay.js | 21 - node_modules/lodash/_baseDifference.js | 67 - node_modules/lodash/_baseEach.js | 14 - node_modules/lodash/_baseEachRight.js | 14 - node_modules/lodash/_baseEvery.js | 21 - node_modules/lodash/_baseExtremum.js | 32 - node_modules/lodash/_baseFill.js | 32 - node_modules/lodash/_baseFilter.js | 21 - node_modules/lodash/_baseFindIndex.js | 24 - node_modules/lodash/_baseFindKey.js | 23 - node_modules/lodash/_baseFlatten.js | 38 - node_modules/lodash/_baseFor.js | 16 - node_modules/lodash/_baseForOwn.js | 16 - node_modules/lodash/_baseForOwnRight.js | 16 - node_modules/lodash/_baseForRight.js | 15 - node_modules/lodash/_baseFunctions.js | 19 - node_modules/lodash/_baseGet.js | 24 - node_modules/lodash/_baseGetAllKeys.js | 20 - node_modules/lodash/_baseGetTag.js | 28 - node_modules/lodash/_baseGt.js | 14 - node_modules/lodash/_baseHas.js | 19 - node_modules/lodash/_baseHasIn.js | 13 - node_modules/lodash/_baseInRange.js | 18 - node_modules/lodash/_baseIndexOf.js | 20 - node_modules/lodash/_baseIndexOfWith.js | 23 - node_modules/lodash/_baseIntersection.js | 74 - node_modules/lodash/_baseInverter.js | 21 - node_modules/lodash/_baseInvoke.js | 24 - node_modules/lodash/_baseIsArguments.js | 18 - node_modules/lodash/_baseIsArrayBuffer.js | 17 - node_modules/lodash/_baseIsDate.js | 18 - node_modules/lodash/_baseIsEqual.js | 28 - node_modules/lodash/_baseIsEqualDeep.js | 83 - node_modules/lodash/_baseIsMap.js | 18 - node_modules/lodash/_baseIsMatch.js | 62 - node_modules/lodash/_baseIsNaN.js | 12 - node_modules/lodash/_baseIsNative.js | 47 - node_modules/lodash/_baseIsRegExp.js | 18 - node_modules/lodash/_baseIsSet.js | 18 - node_modules/lodash/_baseIsTypedArray.js | 60 - node_modules/lodash/_baseIteratee.js | 31 - node_modules/lodash/_baseKeys.js | 30 - node_modules/lodash/_baseKeysIn.js | 33 - node_modules/lodash/_baseLodash.js | 10 - node_modules/lodash/_baseLt.js | 14 - node_modules/lodash/_baseMap.js | 22 - node_modules/lodash/_baseMatches.js | 22 - node_modules/lodash/_baseMatchesProperty.js | 33 - node_modules/lodash/_baseMean.js | 20 - node_modules/lodash/_baseMerge.js | 42 - node_modules/lodash/_baseMergeDeep.js | 94 - node_modules/lodash/_baseNth.js | 20 - node_modules/lodash/_baseOrderBy.js | 49 - node_modules/lodash/_basePick.js | 19 - node_modules/lodash/_basePickBy.js | 30 - node_modules/lodash/_baseProperty.js | 14 - node_modules/lodash/_basePropertyDeep.js | 16 - node_modules/lodash/_basePropertyOf.js | 14 - node_modules/lodash/_basePullAll.js | 51 - node_modules/lodash/_basePullAt.js | 37 - node_modules/lodash/_baseRandom.js | 18 - node_modules/lodash/_baseRange.js | 28 - node_modules/lodash/_baseReduce.js | 23 - node_modules/lodash/_baseRepeat.js | 35 - node_modules/lodash/_baseRest.js | 17 - node_modules/lodash/_baseSample.js | 15 - node_modules/lodash/_baseSampleSize.js | 18 - node_modules/lodash/_baseSet.js | 51 - node_modules/lodash/_baseSetData.js | 17 - node_modules/lodash/_baseSetToString.js | 22 - node_modules/lodash/_baseShuffle.js | 15 - node_modules/lodash/_baseSlice.js | 31 - node_modules/lodash/_baseSome.js | 22 - node_modules/lodash/_baseSortBy.js | 21 - node_modules/lodash/_baseSortedIndex.js | 42 - node_modules/lodash/_baseSortedIndexBy.js | 67 - node_modules/lodash/_baseSortedUniq.js | 30 - node_modules/lodash/_baseSum.js | 24 - node_modules/lodash/_baseTimes.js | 20 - node_modules/lodash/_baseToNumber.js | 24 - node_modules/lodash/_baseToPairs.js | 18 - node_modules/lodash/_baseToString.js | 37 - node_modules/lodash/_baseTrim.js | 19 - node_modules/lodash/_baseUnary.js | 14 - node_modules/lodash/_baseUniq.js | 72 - node_modules/lodash/_baseUnset.js | 20 - node_modules/lodash/_baseUpdate.js | 18 - node_modules/lodash/_baseValues.js | 19 - node_modules/lodash/_baseWhile.js | 26 - node_modules/lodash/_baseWrapperValue.js | 25 - node_modules/lodash/_baseXor.js | 36 - node_modules/lodash/_baseZipObject.js | 23 - node_modules/lodash/_cacheHas.js | 13 - node_modules/lodash/_castArrayLikeObject.js | 14 - node_modules/lodash/_castFunction.js | 14 - node_modules/lodash/_castPath.js | 21 - node_modules/lodash/_castRest.js | 14 - node_modules/lodash/_castSlice.js | 18 - node_modules/lodash/_charsEndIndex.js | 19 - node_modules/lodash/_charsStartIndex.js | 20 - node_modules/lodash/_cloneArrayBuffer.js | 16 - node_modules/lodash/_cloneBuffer.js | 35 - node_modules/lodash/_cloneDataView.js | 16 - node_modules/lodash/_cloneRegExp.js | 17 - node_modules/lodash/_cloneSymbol.js | 18 - node_modules/lodash/_cloneTypedArray.js | 16 - node_modules/lodash/_compareAscending.js | 41 - node_modules/lodash/_compareMultiple.js | 44 - node_modules/lodash/_composeArgs.js | 39 - node_modules/lodash/_composeArgsRight.js | 41 - node_modules/lodash/_copyArray.js | 20 - node_modules/lodash/_copyObject.js | 40 - node_modules/lodash/_copySymbols.js | 16 - node_modules/lodash/_copySymbolsIn.js | 16 - node_modules/lodash/_coreJsData.js | 6 - node_modules/lodash/_countHolders.js | 21 - node_modules/lodash/_createAggregator.js | 23 - node_modules/lodash/_createAssigner.js | 37 - node_modules/lodash/_createBaseEach.js | 32 - node_modules/lodash/_createBaseFor.js | 25 - node_modules/lodash/_createBind.js | 28 - node_modules/lodash/_createCaseFirst.js | 33 - node_modules/lodash/_createCompounder.js | 24 - node_modules/lodash/_createCtor.js | 37 - node_modules/lodash/_createCurry.js | 46 - node_modules/lodash/_createFind.js | 25 - node_modules/lodash/_createFlow.js | 78 - node_modules/lodash/_createHybrid.js | 92 - node_modules/lodash/_createInverter.js | 17 - node_modules/lodash/_createMathOperation.js | 38 - node_modules/lodash/_createOver.js | 27 - node_modules/lodash/_createPadding.js | 33 - node_modules/lodash/_createPartial.js | 43 - node_modules/lodash/_createRange.js | 30 - node_modules/lodash/_createRecurry.js | 56 - .../lodash/_createRelationalOperation.js | 20 - node_modules/lodash/_createRound.js | 35 - node_modules/lodash/_createSet.js | 19 - node_modules/lodash/_createToPairs.js | 30 - node_modules/lodash/_createWrap.js | 106 - .../lodash/_customDefaultsAssignIn.js | 29 - node_modules/lodash/_customDefaultsMerge.js | 28 - node_modules/lodash/_customOmitClone.js | 16 - node_modules/lodash/_deburrLetter.js | 71 - node_modules/lodash/_defineProperty.js | 11 - node_modules/lodash/_equalArrays.js | 84 - node_modules/lodash/_equalByTag.js | 112 - node_modules/lodash/_equalObjects.js | 90 - node_modules/lodash/_escapeHtmlChar.js | 21 - node_modules/lodash/_escapeStringChar.js | 22 - node_modules/lodash/_flatRest.js | 16 - node_modules/lodash/_freeGlobal.js | 4 - node_modules/lodash/_getAllKeys.js | 16 - node_modules/lodash/_getAllKeysIn.js | 17 - node_modules/lodash/_getData.js | 15 - node_modules/lodash/_getFuncName.js | 31 - node_modules/lodash/_getHolder.js | 13 - node_modules/lodash/_getMapData.js | 18 - node_modules/lodash/_getMatchData.js | 24 - node_modules/lodash/_getNative.js | 17 - node_modules/lodash/_getPrototype.js | 6 - node_modules/lodash/_getRawTag.js | 46 - node_modules/lodash/_getSymbols.js | 30 - node_modules/lodash/_getSymbolsIn.js | 25 - node_modules/lodash/_getTag.js | 58 - node_modules/lodash/_getValue.js | 13 - node_modules/lodash/_getView.js | 33 - node_modules/lodash/_getWrapDetails.js | 17 - node_modules/lodash/_hasPath.js | 39 - node_modules/lodash/_hasUnicode.js | 26 - node_modules/lodash/_hasUnicodeWord.js | 15 - node_modules/lodash/_hashClear.js | 15 - node_modules/lodash/_hashDelete.js | 17 - node_modules/lodash/_hashGet.js | 30 - node_modules/lodash/_hashHas.js | 23 - node_modules/lodash/_hashSet.js | 23 - node_modules/lodash/_initCloneArray.js | 26 - node_modules/lodash/_initCloneByTag.js | 77 - node_modules/lodash/_initCloneObject.js | 18 - node_modules/lodash/_insertWrapDetails.js | 23 - node_modules/lodash/_isFlattenable.js | 20 - node_modules/lodash/_isIndex.js | 25 - node_modules/lodash/_isIterateeCall.js | 30 - node_modules/lodash/_isKey.js | 29 - node_modules/lodash/_isKeyable.js | 15 - node_modules/lodash/_isLaziable.js | 28 - node_modules/lodash/_isMaskable.js | 14 - node_modules/lodash/_isMasked.js | 20 - node_modules/lodash/_isPrototype.js | 18 - node_modules/lodash/_isStrictComparable.js | 15 - node_modules/lodash/_iteratorToArray.js | 18 - node_modules/lodash/_lazyClone.js | 23 - node_modules/lodash/_lazyReverse.js | 23 - node_modules/lodash/_lazyValue.js | 69 - node_modules/lodash/_listCacheClear.js | 13 - node_modules/lodash/_listCacheDelete.js | 35 - node_modules/lodash/_listCacheGet.js | 19 - node_modules/lodash/_listCacheHas.js | 16 - node_modules/lodash/_listCacheSet.js | 26 - node_modules/lodash/_mapCacheClear.js | 21 - node_modules/lodash/_mapCacheDelete.js | 18 - node_modules/lodash/_mapCacheGet.js | 16 - node_modules/lodash/_mapCacheHas.js | 16 - node_modules/lodash/_mapCacheSet.js | 22 - node_modules/lodash/_mapToArray.js | 18 - .../lodash/_matchesStrictComparable.js | 20 - node_modules/lodash/_memoizeCapped.js | 26 - node_modules/lodash/_mergeData.js | 90 - node_modules/lodash/_metaMap.js | 6 - node_modules/lodash/_nativeCreate.js | 6 - node_modules/lodash/_nativeKeys.js | 6 - node_modules/lodash/_nativeKeysIn.js | 20 - node_modules/lodash/_nodeUtil.js | 30 - node_modules/lodash/_objectToString.js | 22 - node_modules/lodash/_overArg.js | 15 - node_modules/lodash/_overRest.js | 36 - node_modules/lodash/_parent.js | 16 - node_modules/lodash/_reEscape.js | 4 - node_modules/lodash/_reEvaluate.js | 4 - node_modules/lodash/_reInterpolate.js | 4 - node_modules/lodash/_realNames.js | 4 - node_modules/lodash/_reorder.js | 29 - node_modules/lodash/_replaceHolders.js | 29 - node_modules/lodash/_root.js | 9 - node_modules/lodash/_safeGet.js | 21 - node_modules/lodash/_setCacheAdd.js | 19 - node_modules/lodash/_setCacheHas.js | 14 - node_modules/lodash/_setData.js | 20 - node_modules/lodash/_setToArray.js | 18 - node_modules/lodash/_setToPairs.js | 18 - node_modules/lodash/_setToString.js | 14 - node_modules/lodash/_setWrapToString.js | 21 - node_modules/lodash/_shortOut.js | 37 - node_modules/lodash/_shuffleSelf.js | 28 - node_modules/lodash/_stackClear.js | 15 - node_modules/lodash/_stackDelete.js | 18 - node_modules/lodash/_stackGet.js | 14 - node_modules/lodash/_stackHas.js | 14 - node_modules/lodash/_stackSet.js | 34 - node_modules/lodash/_strictIndexOf.js | 23 - node_modules/lodash/_strictLastIndexOf.js | 21 - node_modules/lodash/_stringSize.js | 18 - node_modules/lodash/_stringToArray.js | 18 - node_modules/lodash/_stringToPath.js | 27 - node_modules/lodash/_toKey.js | 21 - node_modules/lodash/_toSource.js | 26 - node_modules/lodash/_trimmedEndIndex.js | 19 - node_modules/lodash/_unescapeHtmlChar.js | 21 - node_modules/lodash/_unicodeSize.js | 44 - node_modules/lodash/_unicodeToArray.js | 40 - node_modules/lodash/_unicodeWords.js | 69 - node_modules/lodash/_updateWrapDetails.js | 46 - node_modules/lodash/_wrapperClone.js | 23 - node_modules/lodash/add.js | 22 - node_modules/lodash/after.js | 42 - node_modules/lodash/array.js | 67 - node_modules/lodash/ary.js | 29 - node_modules/lodash/assign.js | 58 - node_modules/lodash/assignIn.js | 40 - node_modules/lodash/assignInWith.js | 38 - node_modules/lodash/assignWith.js | 37 - node_modules/lodash/at.js | 23 - node_modules/lodash/attempt.js | 35 - node_modules/lodash/before.js | 40 - node_modules/lodash/bind.js | 57 - node_modules/lodash/bindAll.js | 41 - node_modules/lodash/bindKey.js | 68 - node_modules/lodash/camelCase.js | 29 - node_modules/lodash/capitalize.js | 23 - node_modules/lodash/castArray.js | 44 - node_modules/lodash/ceil.js | 26 - node_modules/lodash/chain.js | 38 - node_modules/lodash/chunk.js | 50 - node_modules/lodash/clamp.js | 39 - node_modules/lodash/clone.js | 36 - node_modules/lodash/cloneDeep.js | 29 - node_modules/lodash/cloneDeepWith.js | 40 - node_modules/lodash/cloneWith.js | 42 - node_modules/lodash/collection.js | 30 - node_modules/lodash/commit.js | 33 - node_modules/lodash/compact.js | 31 - node_modules/lodash/concat.js | 43 - node_modules/lodash/cond.js | 60 - node_modules/lodash/conforms.js | 35 - node_modules/lodash/conformsTo.js | 32 - node_modules/lodash/constant.js | 26 - node_modules/lodash/core.js | 3877 - node_modules/lodash/core.min.js | 29 - node_modules/lodash/countBy.js | 40 - node_modules/lodash/create.js | 43 - node_modules/lodash/curry.js | 57 - node_modules/lodash/curryRight.js | 54 - node_modules/lodash/date.js | 3 - node_modules/lodash/debounce.js | 191 - node_modules/lodash/deburr.js | 45 - node_modules/lodash/defaultTo.js | 25 - node_modules/lodash/defaults.js | 64 - node_modules/lodash/defaultsDeep.js | 30 - node_modules/lodash/defer.js | 26 - node_modules/lodash/delay.js | 28 - node_modules/lodash/difference.js | 33 - node_modules/lodash/differenceBy.js | 44 - node_modules/lodash/differenceWith.js | 40 - node_modules/lodash/divide.js | 22 - node_modules/lodash/drop.js | 38 - node_modules/lodash/dropRight.js | 39 - node_modules/lodash/dropRightWhile.js | 45 - node_modules/lodash/dropWhile.js | 45 - node_modules/lodash/each.js | 1 - node_modules/lodash/eachRight.js | 1 - node_modules/lodash/endsWith.js | 43 - node_modules/lodash/entries.js | 1 - node_modules/lodash/entriesIn.js | 1 - node_modules/lodash/eq.js | 37 - node_modules/lodash/escape.js | 43 - node_modules/lodash/escapeRegExp.js | 32 - node_modules/lodash/every.js | 56 - node_modules/lodash/extend.js | 1 - node_modules/lodash/extendWith.js | 1 - node_modules/lodash/fill.js | 45 - node_modules/lodash/filter.js | 52 - node_modules/lodash/find.js | 42 - node_modules/lodash/findIndex.js | 55 - node_modules/lodash/findKey.js | 44 - node_modules/lodash/findLast.js | 25 - node_modules/lodash/findLastIndex.js | 59 - node_modules/lodash/findLastKey.js | 44 - node_modules/lodash/first.js | 1 - node_modules/lodash/flake.lock | 40 - node_modules/lodash/flake.nix | 20 - node_modules/lodash/flatMap.js | 29 - node_modules/lodash/flatMapDeep.js | 31 - node_modules/lodash/flatMapDepth.js | 31 - node_modules/lodash/flatten.js | 22 - node_modules/lodash/flattenDeep.js | 25 - node_modules/lodash/flattenDepth.js | 33 - node_modules/lodash/flip.js | 28 - node_modules/lodash/floor.js | 26 - node_modules/lodash/flow.js | 27 - node_modules/lodash/flowRight.js | 26 - node_modules/lodash/forEach.js | 41 - node_modules/lodash/forEachRight.js | 31 - node_modules/lodash/forIn.js | 39 - node_modules/lodash/forInRight.js | 37 - node_modules/lodash/forOwn.js | 36 - node_modules/lodash/forOwnRight.js | 34 - node_modules/lodash/fp.js | 2 - node_modules/lodash/fp/F.js | 1 - node_modules/lodash/fp/T.js | 1 - node_modules/lodash/fp/__.js | 1 - node_modules/lodash/fp/_baseConvert.js | 569 - node_modules/lodash/fp/_convertBrowser.js | 18 - node_modules/lodash/fp/_falseOptions.js | 7 - node_modules/lodash/fp/_mapping.js | 358 - node_modules/lodash/fp/_util.js | 16 - node_modules/lodash/fp/add.js | 5 - node_modules/lodash/fp/after.js | 5 - node_modules/lodash/fp/all.js | 1 - node_modules/lodash/fp/allPass.js | 1 - node_modules/lodash/fp/always.js | 1 - node_modules/lodash/fp/any.js | 1 - node_modules/lodash/fp/anyPass.js | 1 - node_modules/lodash/fp/apply.js | 1 - node_modules/lodash/fp/array.js | 2 - node_modules/lodash/fp/ary.js | 5 - node_modules/lodash/fp/assign.js | 5 - node_modules/lodash/fp/assignAll.js | 5 - node_modules/lodash/fp/assignAllWith.js | 5 - node_modules/lodash/fp/assignIn.js | 5 - node_modules/lodash/fp/assignInAll.js | 5 - node_modules/lodash/fp/assignInAllWith.js | 5 - node_modules/lodash/fp/assignInWith.js | 5 - node_modules/lodash/fp/assignWith.js | 5 - node_modules/lodash/fp/assoc.js | 1 - node_modules/lodash/fp/assocPath.js | 1 - node_modules/lodash/fp/at.js | 5 - node_modules/lodash/fp/attempt.js | 5 - node_modules/lodash/fp/before.js | 5 - node_modules/lodash/fp/bind.js | 5 - node_modules/lodash/fp/bindAll.js | 5 - node_modules/lodash/fp/bindKey.js | 5 - node_modules/lodash/fp/camelCase.js | 5 - node_modules/lodash/fp/capitalize.js | 5 - node_modules/lodash/fp/castArray.js | 5 - node_modules/lodash/fp/ceil.js | 5 - node_modules/lodash/fp/chain.js | 5 - node_modules/lodash/fp/chunk.js | 5 - node_modules/lodash/fp/clamp.js | 5 - node_modules/lodash/fp/clone.js | 5 - node_modules/lodash/fp/cloneDeep.js | 5 - node_modules/lodash/fp/cloneDeepWith.js | 5 - node_modules/lodash/fp/cloneWith.js | 5 - node_modules/lodash/fp/collection.js | 2 - node_modules/lodash/fp/commit.js | 5 - node_modules/lodash/fp/compact.js | 5 - node_modules/lodash/fp/complement.js | 1 - node_modules/lodash/fp/compose.js | 1 - node_modules/lodash/fp/concat.js | 5 - node_modules/lodash/fp/cond.js | 5 - node_modules/lodash/fp/conforms.js | 1 - node_modules/lodash/fp/conformsTo.js | 5 - node_modules/lodash/fp/constant.js | 5 - node_modules/lodash/fp/contains.js | 1 - node_modules/lodash/fp/convert.js | 18 - node_modules/lodash/fp/countBy.js | 5 - node_modules/lodash/fp/create.js | 5 - node_modules/lodash/fp/curry.js | 5 - node_modules/lodash/fp/curryN.js | 5 - node_modules/lodash/fp/curryRight.js | 5 - node_modules/lodash/fp/curryRightN.js | 5 - node_modules/lodash/fp/date.js | 2 - node_modules/lodash/fp/debounce.js | 5 - node_modules/lodash/fp/deburr.js | 5 - node_modules/lodash/fp/defaultTo.js | 5 - node_modules/lodash/fp/defaults.js | 5 - node_modules/lodash/fp/defaultsAll.js | 5 - node_modules/lodash/fp/defaultsDeep.js | 5 - node_modules/lodash/fp/defaultsDeepAll.js | 5 - node_modules/lodash/fp/defer.js | 5 - node_modules/lodash/fp/delay.js | 5 - node_modules/lodash/fp/difference.js | 5 - node_modules/lodash/fp/differenceBy.js | 5 - node_modules/lodash/fp/differenceWith.js | 5 - node_modules/lodash/fp/dissoc.js | 1 - node_modules/lodash/fp/dissocPath.js | 1 - node_modules/lodash/fp/divide.js | 5 - node_modules/lodash/fp/drop.js | 5 - node_modules/lodash/fp/dropLast.js | 1 - node_modules/lodash/fp/dropLastWhile.js | 1 - node_modules/lodash/fp/dropRight.js | 5 - node_modules/lodash/fp/dropRightWhile.js | 5 - node_modules/lodash/fp/dropWhile.js | 5 - node_modules/lodash/fp/each.js | 1 - node_modules/lodash/fp/eachRight.js | 1 - node_modules/lodash/fp/endsWith.js | 5 - node_modules/lodash/fp/entries.js | 1 - node_modules/lodash/fp/entriesIn.js | 1 - node_modules/lodash/fp/eq.js | 5 - node_modules/lodash/fp/equals.js | 1 - node_modules/lodash/fp/escape.js | 5 - node_modules/lodash/fp/escapeRegExp.js | 5 - node_modules/lodash/fp/every.js | 5 - node_modules/lodash/fp/extend.js | 1 - node_modules/lodash/fp/extendAll.js | 1 - node_modules/lodash/fp/extendAllWith.js | 1 - node_modules/lodash/fp/extendWith.js | 1 - node_modules/lodash/fp/fill.js | 5 - node_modules/lodash/fp/filter.js | 5 - node_modules/lodash/fp/find.js | 5 - node_modules/lodash/fp/findFrom.js | 5 - node_modules/lodash/fp/findIndex.js | 5 - node_modules/lodash/fp/findIndexFrom.js | 5 - node_modules/lodash/fp/findKey.js | 5 - node_modules/lodash/fp/findLast.js | 5 - node_modules/lodash/fp/findLastFrom.js | 5 - node_modules/lodash/fp/findLastIndex.js | 5 - node_modules/lodash/fp/findLastIndexFrom.js | 5 - node_modules/lodash/fp/findLastKey.js | 5 - node_modules/lodash/fp/first.js | 1 - node_modules/lodash/fp/flatMap.js | 5 - node_modules/lodash/fp/flatMapDeep.js | 5 - node_modules/lodash/fp/flatMapDepth.js | 5 - node_modules/lodash/fp/flatten.js | 5 - node_modules/lodash/fp/flattenDeep.js | 5 - node_modules/lodash/fp/flattenDepth.js | 5 - node_modules/lodash/fp/flip.js | 5 - node_modules/lodash/fp/floor.js | 5 - node_modules/lodash/fp/flow.js | 5 - node_modules/lodash/fp/flowRight.js | 5 - node_modules/lodash/fp/forEach.js | 5 - node_modules/lodash/fp/forEachRight.js | 5 - node_modules/lodash/fp/forIn.js | 5 - node_modules/lodash/fp/forInRight.js | 5 - node_modules/lodash/fp/forOwn.js | 5 - node_modules/lodash/fp/forOwnRight.js | 5 - node_modules/lodash/fp/fromPairs.js | 5 - node_modules/lodash/fp/function.js | 2 - node_modules/lodash/fp/functions.js | 5 - node_modules/lodash/fp/functionsIn.js | 5 - node_modules/lodash/fp/get.js | 5 - node_modules/lodash/fp/getOr.js | 5 - node_modules/lodash/fp/groupBy.js | 5 - node_modules/lodash/fp/gt.js | 5 - node_modules/lodash/fp/gte.js | 5 - node_modules/lodash/fp/has.js | 5 - node_modules/lodash/fp/hasIn.js | 5 - node_modules/lodash/fp/head.js | 5 - node_modules/lodash/fp/identical.js | 1 - node_modules/lodash/fp/identity.js | 5 - node_modules/lodash/fp/inRange.js | 5 - node_modules/lodash/fp/includes.js | 5 - node_modules/lodash/fp/includesFrom.js | 5 - node_modules/lodash/fp/indexBy.js | 1 - node_modules/lodash/fp/indexOf.js | 5 - node_modules/lodash/fp/indexOfFrom.js | 5 - node_modules/lodash/fp/init.js | 1 - node_modules/lodash/fp/initial.js | 5 - node_modules/lodash/fp/intersection.js | 5 - node_modules/lodash/fp/intersectionBy.js | 5 - node_modules/lodash/fp/intersectionWith.js | 5 - node_modules/lodash/fp/invert.js | 5 - node_modules/lodash/fp/invertBy.js | 5 - node_modules/lodash/fp/invertObj.js | 1 - node_modules/lodash/fp/invoke.js | 5 - node_modules/lodash/fp/invokeArgs.js | 5 - node_modules/lodash/fp/invokeArgsMap.js | 5 - node_modules/lodash/fp/invokeMap.js | 5 - node_modules/lodash/fp/isArguments.js | 5 - node_modules/lodash/fp/isArray.js | 5 - node_modules/lodash/fp/isArrayBuffer.js | 5 - node_modules/lodash/fp/isArrayLike.js | 5 - node_modules/lodash/fp/isArrayLikeObject.js | 5 - node_modules/lodash/fp/isBoolean.js | 5 - node_modules/lodash/fp/isBuffer.js | 5 - node_modules/lodash/fp/isDate.js | 5 - node_modules/lodash/fp/isElement.js | 5 - node_modules/lodash/fp/isEmpty.js | 5 - node_modules/lodash/fp/isEqual.js | 5 - node_modules/lodash/fp/isEqualWith.js | 5 - node_modules/lodash/fp/isError.js | 5 - node_modules/lodash/fp/isFinite.js | 5 - node_modules/lodash/fp/isFunction.js | 5 - node_modules/lodash/fp/isInteger.js | 5 - node_modules/lodash/fp/isLength.js | 5 - node_modules/lodash/fp/isMap.js | 5 - node_modules/lodash/fp/isMatch.js | 5 - node_modules/lodash/fp/isMatchWith.js | 5 - node_modules/lodash/fp/isNaN.js | 5 - node_modules/lodash/fp/isNative.js | 5 - node_modules/lodash/fp/isNil.js | 5 - node_modules/lodash/fp/isNull.js | 5 - node_modules/lodash/fp/isNumber.js | 5 - node_modules/lodash/fp/isObject.js | 5 - node_modules/lodash/fp/isObjectLike.js | 5 - node_modules/lodash/fp/isPlainObject.js | 5 - node_modules/lodash/fp/isRegExp.js | 5 - node_modules/lodash/fp/isSafeInteger.js | 5 - node_modules/lodash/fp/isSet.js | 5 - node_modules/lodash/fp/isString.js | 5 - node_modules/lodash/fp/isSymbol.js | 5 - node_modules/lodash/fp/isTypedArray.js | 5 - node_modules/lodash/fp/isUndefined.js | 5 - node_modules/lodash/fp/isWeakMap.js | 5 - node_modules/lodash/fp/isWeakSet.js | 5 - node_modules/lodash/fp/iteratee.js | 5 - node_modules/lodash/fp/join.js | 5 - node_modules/lodash/fp/juxt.js | 1 - node_modules/lodash/fp/kebabCase.js | 5 - node_modules/lodash/fp/keyBy.js | 5 - node_modules/lodash/fp/keys.js | 5 - node_modules/lodash/fp/keysIn.js | 5 - node_modules/lodash/fp/lang.js | 2 - node_modules/lodash/fp/last.js | 5 - node_modules/lodash/fp/lastIndexOf.js | 5 - node_modules/lodash/fp/lastIndexOfFrom.js | 5 - node_modules/lodash/fp/lowerCase.js | 5 - node_modules/lodash/fp/lowerFirst.js | 5 - node_modules/lodash/fp/lt.js | 5 - node_modules/lodash/fp/lte.js | 5 - node_modules/lodash/fp/map.js | 5 - node_modules/lodash/fp/mapKeys.js | 5 - node_modules/lodash/fp/mapValues.js | 5 - node_modules/lodash/fp/matches.js | 1 - node_modules/lodash/fp/matchesProperty.js | 5 - node_modules/lodash/fp/math.js | 2 - node_modules/lodash/fp/max.js | 5 - node_modules/lodash/fp/maxBy.js | 5 - node_modules/lodash/fp/mean.js | 5 - node_modules/lodash/fp/meanBy.js | 5 - node_modules/lodash/fp/memoize.js | 5 - node_modules/lodash/fp/merge.js | 5 - node_modules/lodash/fp/mergeAll.js | 5 - node_modules/lodash/fp/mergeAllWith.js | 5 - node_modules/lodash/fp/mergeWith.js | 5 - node_modules/lodash/fp/method.js | 5 - node_modules/lodash/fp/methodOf.js | 5 - node_modules/lodash/fp/min.js | 5 - node_modules/lodash/fp/minBy.js | 5 - node_modules/lodash/fp/mixin.js | 5 - node_modules/lodash/fp/multiply.js | 5 - node_modules/lodash/fp/nAry.js | 1 - node_modules/lodash/fp/negate.js | 5 - node_modules/lodash/fp/next.js | 5 - node_modules/lodash/fp/noop.js | 5 - node_modules/lodash/fp/now.js | 5 - node_modules/lodash/fp/nth.js | 5 - node_modules/lodash/fp/nthArg.js | 5 - node_modules/lodash/fp/number.js | 2 - node_modules/lodash/fp/object.js | 2 - node_modules/lodash/fp/omit.js | 5 - node_modules/lodash/fp/omitAll.js | 1 - node_modules/lodash/fp/omitBy.js | 5 - node_modules/lodash/fp/once.js | 5 - node_modules/lodash/fp/orderBy.js | 5 - node_modules/lodash/fp/over.js | 5 - node_modules/lodash/fp/overArgs.js | 5 - node_modules/lodash/fp/overEvery.js | 5 - node_modules/lodash/fp/overSome.js | 5 - node_modules/lodash/fp/pad.js | 5 - node_modules/lodash/fp/padChars.js | 5 - node_modules/lodash/fp/padCharsEnd.js | 5 - node_modules/lodash/fp/padCharsStart.js | 5 - node_modules/lodash/fp/padEnd.js | 5 - node_modules/lodash/fp/padStart.js | 5 - node_modules/lodash/fp/parseInt.js | 5 - node_modules/lodash/fp/partial.js | 5 - node_modules/lodash/fp/partialRight.js | 5 - node_modules/lodash/fp/partition.js | 5 - node_modules/lodash/fp/path.js | 1 - node_modules/lodash/fp/pathEq.js | 1 - node_modules/lodash/fp/pathOr.js | 1 - node_modules/lodash/fp/paths.js | 1 - node_modules/lodash/fp/pick.js | 5 - node_modules/lodash/fp/pickAll.js | 1 - node_modules/lodash/fp/pickBy.js | 5 - node_modules/lodash/fp/pipe.js | 1 - node_modules/lodash/fp/placeholder.js | 6 - node_modules/lodash/fp/plant.js | 5 - node_modules/lodash/fp/pluck.js | 1 - node_modules/lodash/fp/prop.js | 1 - node_modules/lodash/fp/propEq.js | 1 - node_modules/lodash/fp/propOr.js | 1 - node_modules/lodash/fp/property.js | 1 - node_modules/lodash/fp/propertyOf.js | 5 - node_modules/lodash/fp/props.js | 1 - node_modules/lodash/fp/pull.js | 5 - node_modules/lodash/fp/pullAll.js | 5 - node_modules/lodash/fp/pullAllBy.js | 5 - node_modules/lodash/fp/pullAllWith.js | 5 - node_modules/lodash/fp/pullAt.js | 5 - node_modules/lodash/fp/random.js | 5 - node_modules/lodash/fp/range.js | 5 - node_modules/lodash/fp/rangeRight.js | 5 - node_modules/lodash/fp/rangeStep.js | 5 - node_modules/lodash/fp/rangeStepRight.js | 5 - node_modules/lodash/fp/rearg.js | 5 - node_modules/lodash/fp/reduce.js | 5 - node_modules/lodash/fp/reduceRight.js | 5 - node_modules/lodash/fp/reject.js | 5 - node_modules/lodash/fp/remove.js | 5 - node_modules/lodash/fp/repeat.js | 5 - node_modules/lodash/fp/replace.js | 5 - node_modules/lodash/fp/rest.js | 5 - node_modules/lodash/fp/restFrom.js | 5 - node_modules/lodash/fp/result.js | 5 - node_modules/lodash/fp/reverse.js | 5 - node_modules/lodash/fp/round.js | 5 - node_modules/lodash/fp/sample.js | 5 - node_modules/lodash/fp/sampleSize.js | 5 - node_modules/lodash/fp/seq.js | 2 - node_modules/lodash/fp/set.js | 5 - node_modules/lodash/fp/setWith.js | 5 - node_modules/lodash/fp/shuffle.js | 5 - node_modules/lodash/fp/size.js | 5 - node_modules/lodash/fp/slice.js | 5 - node_modules/lodash/fp/snakeCase.js | 5 - node_modules/lodash/fp/some.js | 5 - node_modules/lodash/fp/sortBy.js | 5 - node_modules/lodash/fp/sortedIndex.js | 5 - node_modules/lodash/fp/sortedIndexBy.js | 5 - node_modules/lodash/fp/sortedIndexOf.js | 5 - node_modules/lodash/fp/sortedLastIndex.js | 5 - node_modules/lodash/fp/sortedLastIndexBy.js | 5 - node_modules/lodash/fp/sortedLastIndexOf.js | 5 - node_modules/lodash/fp/sortedUniq.js | 5 - node_modules/lodash/fp/sortedUniqBy.js | 5 - node_modules/lodash/fp/split.js | 5 - node_modules/lodash/fp/spread.js | 5 - node_modules/lodash/fp/spreadFrom.js | 5 - node_modules/lodash/fp/startCase.js | 5 - node_modules/lodash/fp/startsWith.js | 5 - node_modules/lodash/fp/string.js | 2 - node_modules/lodash/fp/stubArray.js | 5 - node_modules/lodash/fp/stubFalse.js | 5 - node_modules/lodash/fp/stubObject.js | 5 - node_modules/lodash/fp/stubString.js | 5 - node_modules/lodash/fp/stubTrue.js | 5 - node_modules/lodash/fp/subtract.js | 5 - node_modules/lodash/fp/sum.js | 5 - node_modules/lodash/fp/sumBy.js | 5 - node_modules/lodash/fp/symmetricDifference.js | 1 - .../lodash/fp/symmetricDifferenceBy.js | 1 - .../lodash/fp/symmetricDifferenceWith.js | 1 - node_modules/lodash/fp/tail.js | 5 - node_modules/lodash/fp/take.js | 5 - node_modules/lodash/fp/takeLast.js | 1 - node_modules/lodash/fp/takeLastWhile.js | 1 - node_modules/lodash/fp/takeRight.js | 5 - node_modules/lodash/fp/takeRightWhile.js | 5 - node_modules/lodash/fp/takeWhile.js | 5 - node_modules/lodash/fp/tap.js | 5 - node_modules/lodash/fp/template.js | 5 - node_modules/lodash/fp/templateSettings.js | 5 - node_modules/lodash/fp/throttle.js | 5 - node_modules/lodash/fp/thru.js | 5 - node_modules/lodash/fp/times.js | 5 - node_modules/lodash/fp/toArray.js | 5 - node_modules/lodash/fp/toFinite.js | 5 - node_modules/lodash/fp/toInteger.js | 5 - node_modules/lodash/fp/toIterator.js | 5 - node_modules/lodash/fp/toJSON.js | 5 - node_modules/lodash/fp/toLength.js | 5 - node_modules/lodash/fp/toLower.js | 5 - node_modules/lodash/fp/toNumber.js | 5 - node_modules/lodash/fp/toPairs.js | 5 - node_modules/lodash/fp/toPairsIn.js | 5 - node_modules/lodash/fp/toPath.js | 5 - node_modules/lodash/fp/toPlainObject.js | 5 - node_modules/lodash/fp/toSafeInteger.js | 5 - node_modules/lodash/fp/toString.js | 5 - node_modules/lodash/fp/toUpper.js | 5 - node_modules/lodash/fp/transform.js | 5 - node_modules/lodash/fp/trim.js | 5 - node_modules/lodash/fp/trimChars.js | 5 - node_modules/lodash/fp/trimCharsEnd.js | 5 - node_modules/lodash/fp/trimCharsStart.js | 5 - node_modules/lodash/fp/trimEnd.js | 5 - node_modules/lodash/fp/trimStart.js | 5 - node_modules/lodash/fp/truncate.js | 5 - node_modules/lodash/fp/unapply.js | 1 - node_modules/lodash/fp/unary.js | 5 - node_modules/lodash/fp/unescape.js | 5 - node_modules/lodash/fp/union.js | 5 - node_modules/lodash/fp/unionBy.js | 5 - node_modules/lodash/fp/unionWith.js | 5 - node_modules/lodash/fp/uniq.js | 5 - node_modules/lodash/fp/uniqBy.js | 5 - node_modules/lodash/fp/uniqWith.js | 5 - node_modules/lodash/fp/uniqueId.js | 5 - node_modules/lodash/fp/unnest.js | 1 - node_modules/lodash/fp/unset.js | 5 - node_modules/lodash/fp/unzip.js | 5 - node_modules/lodash/fp/unzipWith.js | 5 - node_modules/lodash/fp/update.js | 5 - node_modules/lodash/fp/updateWith.js | 5 - node_modules/lodash/fp/upperCase.js | 5 - node_modules/lodash/fp/upperFirst.js | 5 - node_modules/lodash/fp/useWith.js | 1 - node_modules/lodash/fp/util.js | 2 - node_modules/lodash/fp/value.js | 5 - node_modules/lodash/fp/valueOf.js | 5 - node_modules/lodash/fp/values.js | 5 - node_modules/lodash/fp/valuesIn.js | 5 - node_modules/lodash/fp/where.js | 1 - node_modules/lodash/fp/whereEq.js | 1 - node_modules/lodash/fp/without.js | 5 - node_modules/lodash/fp/words.js | 5 - node_modules/lodash/fp/wrap.js | 5 - node_modules/lodash/fp/wrapperAt.js | 5 - node_modules/lodash/fp/wrapperChain.js | 5 - node_modules/lodash/fp/wrapperLodash.js | 5 - node_modules/lodash/fp/wrapperReverse.js | 5 - node_modules/lodash/fp/wrapperValue.js | 5 - node_modules/lodash/fp/xor.js | 5 - node_modules/lodash/fp/xorBy.js | 5 - node_modules/lodash/fp/xorWith.js | 5 - node_modules/lodash/fp/zip.js | 5 - node_modules/lodash/fp/zipAll.js | 5 - node_modules/lodash/fp/zipObj.js | 1 - node_modules/lodash/fp/zipObject.js | 5 - node_modules/lodash/fp/zipObjectDeep.js | 5 - node_modules/lodash/fp/zipWith.js | 5 - node_modules/lodash/fromPairs.js | 28 - node_modules/lodash/function.js | 25 - node_modules/lodash/functions.js | 31 - node_modules/lodash/functionsIn.js | 31 - node_modules/lodash/get.js | 33 - node_modules/lodash/groupBy.js | 41 - node_modules/lodash/gt.js | 29 - node_modules/lodash/gte.js | 30 - node_modules/lodash/has.js | 35 - node_modules/lodash/hasIn.js | 34 - node_modules/lodash/head.js | 23 - node_modules/lodash/identity.js | 21 - node_modules/lodash/inRange.js | 55 - node_modules/lodash/includes.js | 53 - node_modules/lodash/index.js | 1 - node_modules/lodash/indexOf.js | 42 - node_modules/lodash/initial.js | 22 - node_modules/lodash/intersection.js | 30 - node_modules/lodash/intersectionBy.js | 45 - node_modules/lodash/intersectionWith.js | 41 - node_modules/lodash/invert.js | 42 - node_modules/lodash/invertBy.js | 56 - node_modules/lodash/invoke.js | 24 - node_modules/lodash/invokeMap.js | 41 - node_modules/lodash/isArguments.js | 36 - node_modules/lodash/isArray.js | 26 - node_modules/lodash/isArrayBuffer.js | 27 - node_modules/lodash/isArrayLike.js | 33 - node_modules/lodash/isArrayLikeObject.js | 33 - node_modules/lodash/isBoolean.js | 29 - node_modules/lodash/isBuffer.js | 38 - node_modules/lodash/isDate.js | 27 - node_modules/lodash/isElement.js | 25 - node_modules/lodash/isEmpty.js | 77 - node_modules/lodash/isEqual.js | 35 - node_modules/lodash/isEqualWith.js | 41 - node_modules/lodash/isError.js | 36 - node_modules/lodash/isFinite.js | 36 - node_modules/lodash/isFunction.js | 37 - node_modules/lodash/isInteger.js | 33 - node_modules/lodash/isLength.js | 35 - node_modules/lodash/isMap.js | 27 - node_modules/lodash/isMatch.js | 36 - node_modules/lodash/isMatchWith.js | 41 - node_modules/lodash/isNaN.js | 38 - node_modules/lodash/isNative.js | 40 - node_modules/lodash/isNil.js | 25 - node_modules/lodash/isNull.js | 22 - node_modules/lodash/isNumber.js | 38 - node_modules/lodash/isObject.js | 31 - node_modules/lodash/isObjectLike.js | 29 - node_modules/lodash/isPlainObject.js | 62 - node_modules/lodash/isRegExp.js | 27 - node_modules/lodash/isSafeInteger.js | 37 - node_modules/lodash/isSet.js | 27 - node_modules/lodash/isString.js | 30 - node_modules/lodash/isSymbol.js | 29 - node_modules/lodash/isTypedArray.js | 27 - node_modules/lodash/isUndefined.js | 22 - node_modules/lodash/isWeakMap.js | 28 - node_modules/lodash/isWeakSet.js | 28 - node_modules/lodash/iteratee.js | 53 - node_modules/lodash/join.js | 26 - node_modules/lodash/kebabCase.js | 28 - node_modules/lodash/keyBy.js | 36 - node_modules/lodash/keys.js | 37 - node_modules/lodash/keysIn.js | 32 - node_modules/lodash/lang.js | 58 - node_modules/lodash/last.js | 20 - node_modules/lodash/lastIndexOf.js | 46 - node_modules/lodash/lodash.js | 17209 ---- node_modules/lodash/lodash.min.js | 140 - node_modules/lodash/lowerCase.js | 27 - node_modules/lodash/lowerFirst.js | 22 - node_modules/lodash/lt.js | 29 - node_modules/lodash/lte.js | 30 - node_modules/lodash/map.js | 53 - node_modules/lodash/mapKeys.js | 36 - node_modules/lodash/mapValues.js | 43 - node_modules/lodash/matches.js | 46 - node_modules/lodash/matchesProperty.js | 44 - node_modules/lodash/math.js | 17 - node_modules/lodash/max.js | 29 - node_modules/lodash/maxBy.js | 34 - node_modules/lodash/mean.js | 22 - node_modules/lodash/meanBy.js | 31 - node_modules/lodash/memoize.js | 73 - node_modules/lodash/merge.js | 39 - node_modules/lodash/mergeWith.js | 39 - node_modules/lodash/method.js | 34 - node_modules/lodash/methodOf.js | 33 - node_modules/lodash/min.js | 29 - node_modules/lodash/minBy.js | 34 - node_modules/lodash/mixin.js | 74 - node_modules/lodash/multiply.js | 22 - node_modules/lodash/negate.js | 40 - node_modules/lodash/next.js | 35 - node_modules/lodash/noop.js | 17 - node_modules/lodash/now.js | 23 - node_modules/lodash/nth.js | 29 - node_modules/lodash/nthArg.js | 32 - node_modules/lodash/number.js | 5 - node_modules/lodash/object.js | 49 - node_modules/lodash/omit.js | 57 - node_modules/lodash/omitBy.js | 29 - node_modules/lodash/once.js | 25 - node_modules/lodash/orderBy.js | 47 - node_modules/lodash/over.js | 24 - node_modules/lodash/overArgs.js | 61 - node_modules/lodash/overEvery.js | 34 - node_modules/lodash/overSome.js | 37 - node_modules/lodash/package.json | 17 - node_modules/lodash/pad.js | 49 - node_modules/lodash/padEnd.js | 39 - node_modules/lodash/padStart.js | 39 - node_modules/lodash/parseInt.js | 43 - node_modules/lodash/partial.js | 50 - node_modules/lodash/partialRight.js | 49 - node_modules/lodash/partition.js | 43 - node_modules/lodash/pick.js | 25 - node_modules/lodash/pickBy.js | 37 - node_modules/lodash/plant.js | 48 - node_modules/lodash/property.js | 32 - node_modules/lodash/propertyOf.js | 30 - node_modules/lodash/pull.js | 29 - node_modules/lodash/pullAll.js | 29 - node_modules/lodash/pullAllBy.js | 33 - node_modules/lodash/pullAllWith.js | 32 - node_modules/lodash/pullAt.js | 43 - node_modules/lodash/random.js | 82 - node_modules/lodash/range.js | 46 - node_modules/lodash/rangeRight.js | 41 - node_modules/lodash/rearg.js | 33 - node_modules/lodash/reduce.js | 51 - node_modules/lodash/reduceRight.js | 36 - node_modules/lodash/reject.js | 46 - node_modules/lodash/release.md | 48 - node_modules/lodash/remove.js | 53 - node_modules/lodash/repeat.js | 37 - node_modules/lodash/replace.js | 29 - node_modules/lodash/rest.js | 40 - node_modules/lodash/result.js | 56 - node_modules/lodash/reverse.js | 34 - node_modules/lodash/round.js | 26 - node_modules/lodash/sample.js | 24 - node_modules/lodash/sampleSize.js | 37 - node_modules/lodash/seq.js | 16 - node_modules/lodash/set.js | 35 - node_modules/lodash/setWith.js | 32 - node_modules/lodash/shuffle.js | 25 - node_modules/lodash/size.js | 46 - node_modules/lodash/slice.js | 37 - node_modules/lodash/snakeCase.js | 28 - node_modules/lodash/some.js | 51 - node_modules/lodash/sortBy.js | 48 - node_modules/lodash/sortedIndex.js | 24 - node_modules/lodash/sortedIndexBy.js | 33 - node_modules/lodash/sortedIndexOf.js | 31 - node_modules/lodash/sortedLastIndex.js | 25 - node_modules/lodash/sortedLastIndexBy.js | 33 - node_modules/lodash/sortedLastIndexOf.js | 31 - node_modules/lodash/sortedUniq.js | 24 - node_modules/lodash/sortedUniqBy.js | 26 - node_modules/lodash/split.js | 52 - node_modules/lodash/spread.js | 63 - node_modules/lodash/startCase.js | 29 - node_modules/lodash/startsWith.js | 39 - node_modules/lodash/string.js | 33 - node_modules/lodash/stubArray.js | 23 - node_modules/lodash/stubFalse.js | 18 - node_modules/lodash/stubObject.js | 23 - node_modules/lodash/stubString.js | 18 - node_modules/lodash/stubTrue.js | 18 - node_modules/lodash/subtract.js | 22 - node_modules/lodash/sum.js | 24 - node_modules/lodash/sumBy.js | 33 - node_modules/lodash/tail.js | 22 - node_modules/lodash/take.js | 37 - node_modules/lodash/takeRight.js | 39 - node_modules/lodash/takeRightWhile.js | 45 - node_modules/lodash/takeWhile.js | 45 - node_modules/lodash/tap.js | 29 - node_modules/lodash/template.js | 272 - node_modules/lodash/templateSettings.js | 67 - node_modules/lodash/throttle.js | 69 - node_modules/lodash/thru.js | 28 - node_modules/lodash/times.js | 51 - node_modules/lodash/toArray.js | 58 - node_modules/lodash/toFinite.js | 42 - node_modules/lodash/toInteger.js | 36 - node_modules/lodash/toIterator.js | 23 - node_modules/lodash/toJSON.js | 1 - node_modules/lodash/toLength.js | 38 - node_modules/lodash/toLower.js | 28 - node_modules/lodash/toNumber.js | 64 - node_modules/lodash/toPairs.js | 30 - node_modules/lodash/toPairsIn.js | 30 - node_modules/lodash/toPath.js | 33 - node_modules/lodash/toPlainObject.js | 32 - node_modules/lodash/toSafeInteger.js | 37 - node_modules/lodash/toString.js | 28 - node_modules/lodash/toUpper.js | 28 - node_modules/lodash/transform.js | 65 - node_modules/lodash/trim.js | 47 - node_modules/lodash/trimEnd.js | 41 - node_modules/lodash/trimStart.js | 43 - node_modules/lodash/truncate.js | 111 - node_modules/lodash/unary.js | 22 - node_modules/lodash/unescape.js | 34 - node_modules/lodash/union.js | 26 - node_modules/lodash/unionBy.js | 39 - node_modules/lodash/unionWith.js | 34 - node_modules/lodash/uniq.js | 25 - node_modules/lodash/uniqBy.js | 31 - node_modules/lodash/uniqWith.js | 28 - node_modules/lodash/uniqueId.js | 28 - node_modules/lodash/unset.js | 34 - node_modules/lodash/unzip.js | 45 - node_modules/lodash/unzipWith.js | 39 - node_modules/lodash/update.js | 35 - node_modules/lodash/updateWith.js | 33 - node_modules/lodash/upperCase.js | 27 - node_modules/lodash/upperFirst.js | 22 - node_modules/lodash/util.js | 34 - node_modules/lodash/value.js | 1 - node_modules/lodash/valueOf.js | 1 - node_modules/lodash/values.js | 34 - node_modules/lodash/valuesIn.js | 32 - node_modules/lodash/without.js | 31 - node_modules/lodash/words.js | 35 - node_modules/lodash/wrap.js | 30 - node_modules/lodash/wrapperAt.js | 48 - node_modules/lodash/wrapperChain.js | 34 - node_modules/lodash/wrapperLodash.js | 147 - node_modules/lodash/wrapperReverse.js | 44 - node_modules/lodash/wrapperValue.js | 21 - node_modules/lodash/xor.js | 28 - node_modules/lodash/xorBy.js | 39 - node_modules/lodash/xorWith.js | 34 - node_modules/lodash/zip.js | 22 - node_modules/lodash/zipObject.js | 24 - node_modules/lodash/zipObjectDeep.js | 23 - node_modules/lodash/zipWith.js | 32 - node_modules/strip-bom/index.js | 17 - node_modules/strip-bom/license | 21 - node_modules/strip-bom/package.json | 42 - node_modules/strip-bom/readme.md | 39 - 1550 files changed, 1 insertion(+), 255282 deletions(-) create mode 100644 .gitignore delete mode 120000 node_modules/.bin/csvtojson delete mode 120000 node_modules/.bin/json2csv delete mode 100644 node_modules/.package-lock.json delete mode 100644 node_modules/bluebird/LICENSE delete mode 100644 node_modules/bluebird/README.md delete mode 100644 node_modules/bluebird/changelog.md delete mode 100644 node_modules/bluebird/js/browser/bluebird.core.js delete mode 100644 node_modules/bluebird/js/browser/bluebird.core.min.js delete mode 100644 node_modules/bluebird/js/browser/bluebird.js delete mode 100644 node_modules/bluebird/js/browser/bluebird.min.js delete mode 100644 node_modules/bluebird/js/release/any.js delete mode 100644 node_modules/bluebird/js/release/assert.js delete mode 100644 node_modules/bluebird/js/release/async.js delete mode 100644 node_modules/bluebird/js/release/bind.js delete mode 100644 node_modules/bluebird/js/release/bluebird.js delete mode 100644 node_modules/bluebird/js/release/call_get.js delete mode 100644 node_modules/bluebird/js/release/cancel.js delete mode 100644 node_modules/bluebird/js/release/catch_filter.js delete mode 100644 node_modules/bluebird/js/release/context.js delete mode 100644 node_modules/bluebird/js/release/debuggability.js delete mode 100644 node_modules/bluebird/js/release/direct_resolve.js delete mode 100644 node_modules/bluebird/js/release/each.js delete mode 100644 node_modules/bluebird/js/release/errors.js delete mode 100644 node_modules/bluebird/js/release/es5.js delete mode 100644 node_modules/bluebird/js/release/filter.js delete mode 100644 node_modules/bluebird/js/release/finally.js delete mode 100644 node_modules/bluebird/js/release/generators.js delete mode 100644 node_modules/bluebird/js/release/join.js delete mode 100644 node_modules/bluebird/js/release/map.js delete mode 100644 node_modules/bluebird/js/release/method.js delete mode 100644 node_modules/bluebird/js/release/nodeback.js delete mode 100644 node_modules/bluebird/js/release/nodeify.js delete mode 100644 node_modules/bluebird/js/release/promise.js delete mode 100644 node_modules/bluebird/js/release/promise_array.js delete mode 100644 node_modules/bluebird/js/release/promisify.js delete mode 100644 node_modules/bluebird/js/release/props.js delete mode 100644 node_modules/bluebird/js/release/queue.js delete mode 100644 node_modules/bluebird/js/release/race.js delete mode 100644 node_modules/bluebird/js/release/reduce.js delete mode 100644 node_modules/bluebird/js/release/schedule.js delete mode 100644 node_modules/bluebird/js/release/settle.js delete mode 100644 node_modules/bluebird/js/release/some.js delete mode 100644 node_modules/bluebird/js/release/synchronous_inspection.js delete mode 100644 node_modules/bluebird/js/release/thenables.js delete mode 100644 node_modules/bluebird/js/release/timers.js delete mode 100644 node_modules/bluebird/js/release/using.js delete mode 100644 node_modules/bluebird/js/release/util.js delete mode 100644 node_modules/bluebird/package.json delete mode 100644 node_modules/commander/CHANGELOG.md delete mode 100644 node_modules/commander/LICENSE delete mode 100644 node_modules/commander/Readme.md delete mode 100644 node_modules/commander/index.js delete mode 100644 node_modules/commander/package.json delete mode 100644 node_modules/commander/typings/index.d.ts delete mode 100644 node_modules/csvtojson/.coveralls.yml delete mode 100644 node_modules/csvtojson/.nyc_output/081f64d5edb0cbe31f73fbc9234d8e0e.json delete mode 100644 node_modules/csvtojson/.nyc_output/0b5b534d8fdda9c9e8b53fce635f391b.json delete mode 100644 node_modules/csvtojson/.nyc_output/0b82538911259cd760273af57e1b568e.json delete mode 100644 node_modules/csvtojson/.nyc_output/1fca5d8f4e8d0d7070af41ac05926b53.json delete mode 100644 node_modules/csvtojson/.nyc_output/28300bac0b62bba7556e850269888b3a.json delete mode 100644 node_modules/csvtojson/.nyc_output/290a14ffd14b612104d733748fcb00ea.json delete mode 100644 node_modules/csvtojson/.nyc_output/2d0a0489ff0595b8e4e6adccf81060c8.json delete mode 100644 node_modules/csvtojson/.nyc_output/3285cdcafb8fcaecfa2fd1db8f6d35c1.json delete mode 100644 node_modules/csvtojson/.nyc_output/353a08632aa428048df9d67f46b2a943.json delete mode 100644 node_modules/csvtojson/.nyc_output/372af79153a72baeaaee8fac2c00326e.json delete mode 100644 node_modules/csvtojson/.nyc_output/3c338e25b082cae5697e985e98a01fe0.json delete mode 100644 node_modules/csvtojson/.nyc_output/3f4b44285d46037be38e2a3fb692ca90.json delete mode 100644 node_modules/csvtojson/.nyc_output/408532dd749511a552d2171e6dd846f9.json delete mode 100644 node_modules/csvtojson/.nyc_output/427f91d355efe544f3c08bef54b0cba4.json delete mode 100644 node_modules/csvtojson/.nyc_output/5295987c062fb22dfb962addac01e463.json delete mode 100644 node_modules/csvtojson/.nyc_output/548df513a8d4bb28c35f0142c19e88da.json delete mode 100644 node_modules/csvtojson/.nyc_output/5aa3d5a9e40c7b393bcc5741ab892901.json delete mode 100644 node_modules/csvtojson/.nyc_output/5be35f8b3b5266ff2eae0d4a535f9472.json delete mode 100644 node_modules/csvtojson/.nyc_output/5e4760ecbfae5fa02da0dfc78b080df1.json delete mode 100644 node_modules/csvtojson/.nyc_output/5ecfa6bb23b282fe433bacd19be3c301.json delete mode 100644 node_modules/csvtojson/.nyc_output/619b06b7be8e214e8fb326e4f336a7be.json delete mode 100644 node_modules/csvtojson/.nyc_output/6ebc3edd99eabbc335501c2ab5302ffd.json delete mode 100644 node_modules/csvtojson/.nyc_output/74d45bc2be4d60ae2bc0793cbb6bffcd.json delete mode 100644 node_modules/csvtojson/.nyc_output/763b2880a165693362fce56b1ac899e3.json delete mode 100644 node_modules/csvtojson/.nyc_output/764c64567872f5beaff5721b469b15c8.json delete mode 100644 node_modules/csvtojson/.nyc_output/8324a746e7efbf67009c3427165fe910.json delete mode 100644 node_modules/csvtojson/.nyc_output/8f11bb580569edc78e9ac43a4e77ebf7.json delete mode 100644 node_modules/csvtojson/.nyc_output/934df09d48f9ab6d63432230cb8317bb.json delete mode 100644 node_modules/csvtojson/.nyc_output/95f40fd8e3124bf5095029ef2d7b2992.json delete mode 100644 node_modules/csvtojson/.nyc_output/a314d83b6e7be2c677c93ea6fbcdbdbc.json delete mode 100644 node_modules/csvtojson/.nyc_output/ac79bb4f8b5a2c44b47ba0e0ff1981b8.json delete mode 100644 node_modules/csvtojson/.nyc_output/b5b5ac11f64a1197639ab87ddf790f3f.json delete mode 100644 node_modules/csvtojson/.nyc_output/c444d3abd00b76b655d8c52d1d6d9a18.json delete mode 100644 node_modules/csvtojson/.nyc_output/d69c8a3cb089743a1c6fe6af1b55dcaf.json delete mode 100644 node_modules/csvtojson/.nyc_output/d9ab5ea23a578236eda29d6fb5d81a89.json delete mode 100644 node_modules/csvtojson/.nyc_output/ddbb6c792d436c4896dca99a6889d310.json delete mode 100644 node_modules/csvtojson/.nyc_output/e30b290de441d813f69836edb7b6bf69.json delete mode 100644 node_modules/csvtojson/.nyc_output/e6b880f5dcf4799d52e940c12d2c0fc8.json delete mode 100644 node_modules/csvtojson/.nyc_output/f5bf0478c1625678749178bdb2e5098d.json delete mode 100644 node_modules/csvtojson/.nyc_output/f6e47582bba1716e24a1e52d01da6e9c.json delete mode 100644 node_modules/csvtojson/.travis.yml delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/09978396b133849a0d0f83c9c100b167a1060208a0fdf57d39dc695ae209e0c9.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/146467813f9eee2e9487539f1b661828a2caaa54a764fc152183ad640d1d66be.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/204d44a3b08589411788351f533b2a96e89ab84d86142a1bc9b7767bb5601d6d.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/2137721389d49414201ec34dd66bac032beb92732a7fc3a93a7da308df59074b.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/220d4ea980d1b3641219c9c350ef34f7c2da2287e3d58928ceb5b83feb3b528b.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/2a9bafe9fbe95ecf89f636e4ef23cb6f79647e7f5e59dce04654581288e7e3e7.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/35eb90faf3bc35f59e53824803623baabb47d90efcb26810c79a570fed5ad880.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/5b7b6cc115cc8559849a34561c82531410ecb53ccdbe486e410336329db2fdb4.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/6c7a4bd504b58ba513336814c6fb1a1baa361e29c2df52092099a5376d037cb9.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/83fb32366eeebd3a934318efe8f5c515dd472fccb2f189b66ce7a266fce983f9.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/84e674946fa3a10db018321f519e27e33da138d89fb7c3054fa3b5f0085263e2.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/86a61f32a623616f1cdec9f22fc46a34e2f38a490b8b82485bbbf319282a9c64.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/8d3edcece85e84b439b2d726acd2739b703649046edb8805d043fd9d43e23581.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/994c8b0ade8061fb63db45ab25baaf68e9e74f24d69965986f1dfd58764d8f18.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/9ec1200ff64260596014a889ec30264b6721c20a7144d863993a743b0fd3d45f.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/ac6559c9ea3c7a83782cf43cf1cc03a456f7a02682d837efbfd48c3882c1725a.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/c4d06c0118a31c538a37ec66e7b4ed78373de3210b31ccf65b4aed7731f9e9cd.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/c8e70df643ed74eb6c2787fa04bd777abbe25614c4f67780bdd3d4f82f7da832.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/c9dd2cde876725b95252230af48b72d263fc7188f8adba2c85aec0c27e54ba1e.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/dff58c3574a6aa9c5fb6c818f7da8b891eb80498ee4ab50c99085e120ad44307.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/ea6725c683df8e737bfe3585acce32bd3d2a0b578a3d58bf502142d57979736c.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/f869b8207955336fc82664bcde4b115d1ca9f4258e909100787837de7b2c2dde.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/faa9fa3d0ff9bc89b0f57c0b9fcba99b4eb7ee0ec505f5bc404dfb198396e590.js delete mode 100644 node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/fcd05a9b151e0034c5b5950c400691dc885e4e64429d73b07dd25f75a49704bb.js delete mode 100644 node_modules/csvtojson/LICENSE delete mode 100755 node_modules/csvtojson/bin/csvtojson delete mode 100644 node_modules/csvtojson/bin/csvtojson.bat delete mode 100644 node_modules/csvtojson/bin/csvtojson.js delete mode 100755 node_modules/csvtojson/bin/genCsv.js delete mode 100644 node_modules/csvtojson/bin/options.json delete mode 100644 node_modules/csvtojson/browser/browser.js delete mode 100644 node_modules/csvtojson/browser/csvtojson.min.js delete mode 100644 node_modules/csvtojson/contributors.md delete mode 100644 node_modules/csvtojson/coverage/CSVError.test.ts.html delete mode 100644 node_modules/csvtojson/coverage/CSVError.ts.html delete mode 100644 node_modules/csvtojson/coverage/Converter.ts.html delete mode 100644 node_modules/csvtojson/coverage/Parameters.ts.html delete mode 100644 node_modules/csvtojson/coverage/ParseRuntime.ts.html delete mode 100644 node_modules/csvtojson/coverage/ProcessFork.ts.html delete mode 100644 node_modules/csvtojson/coverage/Processor.ts.html delete mode 100644 node_modules/csvtojson/coverage/ProcessorLocal.test.ts.html delete mode 100644 node_modules/csvtojson/coverage/ProcessorLocal.ts.html delete mode 100644 node_modules/csvtojson/coverage/Result.ts.html delete mode 100644 node_modules/csvtojson/coverage/Worker.ts.html delete mode 100644 node_modules/csvtojson/coverage/base.css delete mode 100644 node_modules/csvtojson/coverage/block-navigation.js delete mode 100644 node_modules/csvtojson/coverage/csv2json/Gruntfile.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/bin/benchmark.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/bin/csvtojson.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/bin/genCsv.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/bin/index.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/browser_index.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/dist/csvtojson.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/dist/csvtojson.min.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/dist/index.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/index.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/index.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/CSVError.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/Converter.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/csvline.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/dataToCSVLine.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/defParam.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/index.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/index.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_array.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_flat.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_json.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_jsonarray.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_omit.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/fileLineToCSVLine.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/fileline.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/filterRow.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/getDelimiter.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/getEol.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/index.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/index.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/linesToJson.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/parser.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/parserMgr.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/rowSplit.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/worker.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/core/workerMgr.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/csv2json.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/index.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/interfaces/cli/index.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/interfaces/cli/index.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/interfaces/cli/main.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/interfaces/index.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/libs/interfaces/index.js.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/CSVError.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/Converter.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/Processor.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/ProcessorLocal.test.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/ProcessorLocal.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/Result.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/Worker.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/dataClean.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/fileline.test.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/fileline.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/getEol.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/index.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/index.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/lineToJson.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/rowSplit.test.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/rowSplit.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/test.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/src/util.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/testNew/index.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/testNew/testCSVConverter.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/testNew/testCSVConverter2.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/testNew/testCSVConverter3.ts.html delete mode 100644 node_modules/csvtojson/coverage/csv2json/testNew/testErrorHandle.ts.html delete mode 100644 node_modules/csvtojson/coverage/dataClean.ts.html delete mode 100644 node_modules/csvtojson/coverage/fileline.test.ts.html delete mode 100644 node_modules/csvtojson/coverage/fileline.ts.html delete mode 100644 node_modules/csvtojson/coverage/getEol.ts.html delete mode 100644 node_modules/csvtojson/coverage/index.html delete mode 100644 node_modules/csvtojson/coverage/index.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/base.css delete mode 100644 node_modules/csvtojson/coverage/lcov-report/block-navigation.js delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/Gruntfile.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/bin/benchmark.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/bin/csvtojson.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/bin/genCsv.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/bin/index.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/browser_index.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/dist/csvtojson.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/dist/csvtojson.min.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/dist/index.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/index.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/index.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/CSVError.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/Converter.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/csvline.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/dataToCSVLine.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defParam.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/index.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/index.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_array.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_flat.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_json.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_jsonarray.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_omit.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/fileLineToCSVLine.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/fileline.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/filterRow.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/getDelimiter.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/getEol.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/index.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/index.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/linesToJson.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/parser.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/parserMgr.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/rowSplit.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/worker.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/workerMgr.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/csv2json.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/index.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/cli/index.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/cli/index.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/cli/main.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/index.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/index.js.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/CSVError.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/Converter.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/Processor.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/ProcessorLocal.test.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/ProcessorLocal.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/Result.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/Worker.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/dataClean.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/fileline.test.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/fileline.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/getEol.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/index.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/index.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/lineToJson.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/rowSplit.test.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/rowSplit.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/test.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/src/util.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/index.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/testCSVConverter.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/testCSVConverter2.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/testCSVConverter3.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/testErrorHandle.ts.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/index.html delete mode 100644 node_modules/csvtojson/coverage/lcov-report/prettify.css delete mode 100644 node_modules/csvtojson/coverage/lcov-report/prettify.js delete mode 100644 node_modules/csvtojson/coverage/lcov-report/sort-arrow-sprite.png delete mode 100644 node_modules/csvtojson/coverage/lcov-report/sorter.js delete mode 100644 node_modules/csvtojson/coverage/lcov.info delete mode 100644 node_modules/csvtojson/coverage/lineToJson.ts.html delete mode 100644 node_modules/csvtojson/coverage/prettify.css delete mode 100644 node_modules/csvtojson/coverage/prettify.js delete mode 100644 node_modules/csvtojson/coverage/rowSplit.test.ts.html delete mode 100644 node_modules/csvtojson/coverage/rowSplit.ts.html delete mode 100644 node_modules/csvtojson/coverage/sort-arrow-sprite.png delete mode 100644 node_modules/csvtojson/coverage/sorter.js delete mode 100644 node_modules/csvtojson/coverage/test.ts.html delete mode 100644 node_modules/csvtojson/coverage/util.ts.html delete mode 100644 node_modules/csvtojson/index.d.ts delete mode 100644 node_modules/csvtojson/index.js delete mode 100644 node_modules/csvtojson/package.json delete mode 100644 node_modules/csvtojson/readme-old.md delete mode 100644 node_modules/csvtojson/readme.md delete mode 100644 node_modules/csvtojson/src/CSVError.test.ts delete mode 100644 node_modules/csvtojson/src/CSVError.ts delete mode 100644 node_modules/csvtojson/src/Converter.ts delete mode 100644 node_modules/csvtojson/src/Parameters.ts delete mode 100644 node_modules/csvtojson/src/ParseRuntime.ts delete mode 100644 node_modules/csvtojson/src/ProcessFork.ts delete mode 100644 node_modules/csvtojson/src/Processor.ts delete mode 100644 node_modules/csvtojson/src/ProcessorLocal.test.ts delete mode 100644 node_modules/csvtojson/src/ProcessorLocal.ts delete mode 100644 node_modules/csvtojson/src/Result.test.ts delete mode 100644 node_modules/csvtojson/src/Result.ts delete mode 100644 node_modules/csvtojson/src/dataClean.ts delete mode 100644 node_modules/csvtojson/src/fileline.test.ts delete mode 100644 node_modules/csvtojson/src/fileline.ts delete mode 100644 node_modules/csvtojson/src/getEol.ts delete mode 100644 node_modules/csvtojson/src/index.ts delete mode 100644 node_modules/csvtojson/src/lineToJson.ts delete mode 100644 node_modules/csvtojson/src/rowSplit.test.ts delete mode 100644 node_modules/csvtojson/src/rowSplit.ts delete mode 100644 node_modules/csvtojson/src/util.ts delete mode 100644 node_modules/csvtojson/src/worker.ts delete mode 100644 node_modules/csvtojson/test/data/columnArray delete mode 100644 node_modules/csvtojson/test/data/complexJSONCSV delete mode 100644 node_modules/csvtojson/test/data/csvWithUnclosedHeader delete mode 100644 node_modules/csvtojson/test/data/data#139 delete mode 100644 node_modules/csvtojson/test/data/dataDiffDelimiter delete mode 100644 node_modules/csvtojson/test/data/dataIgnoreEmpty delete mode 100644 node_modules/csvtojson/test/data/dataNoTrimBOM delete mode 100644 node_modules/csvtojson/test/data/dataNoTrimCRLF delete mode 100644 node_modules/csvtojson/test/data/dataTsv delete mode 100644 node_modules/csvtojson/test/data/dataWithAutoDelimiter delete mode 100644 node_modules/csvtojson/test/data/dataWithComma delete mode 100644 node_modules/csvtojson/test/data/dataWithEmptyString delete mode 100644 node_modules/csvtojson/test/data/dataWithLongRow delete mode 100644 node_modules/csvtojson/test/data/dataWithMismatchedColumn delete mode 100644 node_modules/csvtojson/test/data/dataWithMultipleLineRow delete mode 100644 node_modules/csvtojson/test/data/dataWithPipeAsDelimiter delete mode 100644 node_modules/csvtojson/test/data/dataWithQoutes delete mode 100644 node_modules/csvtojson/test/data/dataWithSlashEscape delete mode 100644 node_modules/csvtojson/test/data/dataWithSlashEscapeAndDelimiterBetweenQuotes delete mode 100644 node_modules/csvtojson/test/data/dataWithTabAsDelimiter delete mode 100644 node_modules/csvtojson/test/data/dataWithTripleQoutes delete mode 100644 node_modules/csvtojson/test/data/dataWithType delete mode 100644 node_modules/csvtojson/test/data/dataWithUnclosedQuotes delete mode 100644 node_modules/csvtojson/test/data/dataWithWhiteSpace delete mode 100644 node_modules/csvtojson/test/data/emptyFile delete mode 100644 node_modules/csvtojson/test/data/invalidHeader delete mode 100644 node_modules/csvtojson/test/data/large-csv-sample.csv delete mode 100644 node_modules/csvtojson/test/data/large-utf8.csv delete mode 100644 node_modules/csvtojson/test/data/lineBreak delete mode 100644 node_modules/csvtojson/test/data/longHeader delete mode 100644 node_modules/csvtojson/test/data/noheaderWithVaryColumnNum delete mode 100644 node_modules/csvtojson/test/data/noheadercsv delete mode 100644 node_modules/csvtojson/test/data/pipeAsQuote delete mode 100644 node_modules/csvtojson/test/data/quoteTolerant delete mode 100644 node_modules/csvtojson/test/data/tabsv delete mode 100644 node_modules/csvtojson/test/data/testData delete mode 100644 node_modules/csvtojson/test/data/testEol delete mode 100644 node_modules/csvtojson/test/data/trailingComma delete mode 100644 node_modules/csvtojson/test/data/twodoublequotes delete mode 100644 node_modules/csvtojson/test/testCSVConverter.fork.ts delete mode 100644 node_modules/csvtojson/test/testCSVConverter.ts delete mode 100644 node_modules/csvtojson/test/testCSVConverter2.ts delete mode 100644 node_modules/csvtojson/test/testCSVConverter3.ts delete mode 100644 node_modules/csvtojson/test/testErrorHandle.ts delete mode 100644 node_modules/csvtojson/tsconfig.json delete mode 100644 node_modules/csvtojson/typings.d.ts delete mode 100644 node_modules/csvtojson/v1/core/CSVError.js delete mode 100644 node_modules/csvtojson/v1/core/Converter.js delete mode 100644 node_modules/csvtojson/v1/core/csvline.js delete mode 100644 node_modules/csvtojson/v1/core/dataToCSVLine.js delete mode 100644 node_modules/csvtojson/v1/core/defParam.js delete mode 100644 node_modules/csvtojson/v1/core/defaultParsers/index.js delete mode 100644 node_modules/csvtojson/v1/core/defaultParsers/parser_array.js delete mode 100644 node_modules/csvtojson/v1/core/defaultParsers/parser_flat.js delete mode 100644 node_modules/csvtojson/v1/core/defaultParsers/parser_json.js delete mode 100644 node_modules/csvtojson/v1/core/defaultParsers/parser_jsonarray.js delete mode 100644 node_modules/csvtojson/v1/core/defaultParsers/parser_omit.js delete mode 100644 node_modules/csvtojson/v1/core/fileLineToCSVLine.js delete mode 100644 node_modules/csvtojson/v1/core/fileline.js delete mode 100644 node_modules/csvtojson/v1/core/filterRow.js delete mode 100644 node_modules/csvtojson/v1/core/getDelimiter.js delete mode 100644 node_modules/csvtojson/v1/core/getEol.js delete mode 100644 node_modules/csvtojson/v1/core/index.js delete mode 100644 node_modules/csvtojson/v1/core/linesToJson.js delete mode 100644 node_modules/csvtojson/v1/core/parser.js delete mode 100644 node_modules/csvtojson/v1/core/parserMgr.js delete mode 100644 node_modules/csvtojson/v1/core/rowSplit.js delete mode 100644 node_modules/csvtojson/v1/core/worker.js delete mode 100644 node_modules/csvtojson/v1/core/workerMgr.js delete mode 100644 node_modules/csvtojson/v1/index.js delete mode 100644 node_modules/csvtojson/v1/interfaces/cli/index.js delete mode 100644 node_modules/csvtojson/v1/interfaces/cli/main.js delete mode 100644 node_modules/csvtojson/v1/interfaces/index.js delete mode 100644 node_modules/csvtojson/v1/interfaces/web/index.js delete mode 100644 node_modules/csvtojson/v1/interfaces/web/webServer.js delete mode 100644 node_modules/csvtojson/v2/CSVError.d.ts delete mode 100644 node_modules/csvtojson/v2/CSVError.js delete mode 100644 node_modules/csvtojson/v2/CSVError.js.map delete mode 100644 node_modules/csvtojson/v2/Converter.d.ts delete mode 100644 node_modules/csvtojson/v2/Converter.js delete mode 100644 node_modules/csvtojson/v2/Converter.js.map delete mode 100644 node_modules/csvtojson/v2/Parameters.d.ts delete mode 100644 node_modules/csvtojson/v2/Parameters.js delete mode 100644 node_modules/csvtojson/v2/Parameters.js.map delete mode 100644 node_modules/csvtojson/v2/ParseRuntime.d.ts delete mode 100644 node_modules/csvtojson/v2/ParseRuntime.js delete mode 100644 node_modules/csvtojson/v2/ParseRuntime.js.map delete mode 100644 node_modules/csvtojson/v2/ProcessFork.d.ts delete mode 100644 node_modules/csvtojson/v2/ProcessFork.js delete mode 100644 node_modules/csvtojson/v2/ProcessFork.js.map delete mode 100644 node_modules/csvtojson/v2/Processor.d.ts delete mode 100644 node_modules/csvtojson/v2/Processor.js delete mode 100644 node_modules/csvtojson/v2/Processor.js.map delete mode 100644 node_modules/csvtojson/v2/ProcessorLocal.d.ts delete mode 100644 node_modules/csvtojson/v2/ProcessorLocal.js delete mode 100644 node_modules/csvtojson/v2/ProcessorLocal.js.map delete mode 100644 node_modules/csvtojson/v2/Result.d.ts delete mode 100644 node_modules/csvtojson/v2/Result.js delete mode 100644 node_modules/csvtojson/v2/Result.js.map delete mode 100644 node_modules/csvtojson/v2/dataClean.d.ts delete mode 100644 node_modules/csvtojson/v2/dataClean.js delete mode 100644 node_modules/csvtojson/v2/dataClean.js.map delete mode 100644 node_modules/csvtojson/v2/fileline.d.ts delete mode 100644 node_modules/csvtojson/v2/fileline.js delete mode 100644 node_modules/csvtojson/v2/fileline.js.map delete mode 100644 node_modules/csvtojson/v2/getEol.d.ts delete mode 100644 node_modules/csvtojson/v2/getEol.js delete mode 100644 node_modules/csvtojson/v2/getEol.js.map delete mode 100644 node_modules/csvtojson/v2/index.d.ts delete mode 100644 node_modules/csvtojson/v2/index.js delete mode 100644 node_modules/csvtojson/v2/index.js.map delete mode 100644 node_modules/csvtojson/v2/lineToJson.d.ts delete mode 100644 node_modules/csvtojson/v2/lineToJson.js delete mode 100644 node_modules/csvtojson/v2/lineToJson.js.map delete mode 100644 node_modules/csvtojson/v2/rowSplit.d.ts delete mode 100644 node_modules/csvtojson/v2/rowSplit.js delete mode 100644 node_modules/csvtojson/v2/rowSplit.js.map delete mode 100644 node_modules/csvtojson/v2/util.d.ts delete mode 100644 node_modules/csvtojson/v2/util.js delete mode 100644 node_modules/csvtojson/v2/util.js.map delete mode 100644 node_modules/csvtojson/v2/worker.d.ts delete mode 100644 node_modules/csvtojson/v2/worker.js delete mode 100644 node_modules/csvtojson/v2/worker.js.map delete mode 100644 node_modules/csvtojson/webpack.config.js delete mode 100644 node_modules/is-utf8/LICENSE delete mode 100644 node_modules/is-utf8/README.md delete mode 100644 node_modules/is-utf8/is-utf8.js delete mode 100644 node_modules/is-utf8/package.json delete mode 100644 node_modules/json2csv/.eslintrc delete mode 100644 node_modules/json2csv/.gitattributes delete mode 100644 node_modules/json2csv/CHANGELOG.md delete mode 100644 node_modules/json2csv/LICENSE.md delete mode 100644 node_modules/json2csv/README.md delete mode 100755 node_modules/json2csv/bin/json2csv.js delete mode 100644 node_modules/json2csv/bin/utils/TablePrinter.js delete mode 100644 node_modules/json2csv/bin/utils/parseNdjson.js delete mode 100644 node_modules/json2csv/dist/json2csv.esm.js delete mode 100644 node_modules/json2csv/dist/json2csv.umd.js delete mode 100644 node_modules/json2csv/lib/JSON2CSVAsyncParser.js delete mode 100644 node_modules/json2csv/lib/JSON2CSVBase.js delete mode 100644 node_modules/json2csv/lib/JSON2CSVParser.js delete mode 100644 node_modules/json2csv/lib/JSON2CSVTransform.js delete mode 100644 node_modules/json2csv/lib/json2csv.js delete mode 100644 node_modules/json2csv/lib/transforms/flatten.js delete mode 100644 node_modules/json2csv/lib/transforms/unwind.js delete mode 100644 node_modules/json2csv/lib/utils.js delete mode 100644 node_modules/json2csv/package.json delete mode 100644 node_modules/json2csv/rollup.config.js delete mode 100644 node_modules/jsonparse/.npmignore delete mode 100644 node_modules/jsonparse/LICENSE delete mode 100644 node_modules/jsonparse/README.markdown delete mode 100644 node_modules/jsonparse/bench.js delete mode 100644 node_modules/jsonparse/examples/twitterfeed.js delete mode 100644 node_modules/jsonparse/jsonparse.js delete mode 100644 node_modules/jsonparse/package.json delete mode 100644 node_modules/jsonparse/samplejson/basic.json delete mode 100644 node_modules/jsonparse/samplejson/basic2.json delete mode 100644 node_modules/jsonparse/test/big-token.js delete mode 100644 node_modules/jsonparse/test/boundary.js delete mode 100644 node_modules/jsonparse/test/offset.js delete mode 100644 node_modules/jsonparse/test/primitives.js delete mode 100644 node_modules/jsonparse/test/surrogate.js delete mode 100644 node_modules/jsonparse/test/unvalid.js delete mode 100644 node_modules/jsonparse/test/utf8.js delete mode 100644 node_modules/lodash.get/LICENSE delete mode 100644 node_modules/lodash.get/README.md delete mode 100644 node_modules/lodash.get/index.js delete mode 100644 node_modules/lodash.get/package.json delete mode 100644 node_modules/lodash/LICENSE delete mode 100644 node_modules/lodash/README.md delete mode 100644 node_modules/lodash/_DataView.js delete mode 100644 node_modules/lodash/_Hash.js delete mode 100644 node_modules/lodash/_LazyWrapper.js delete mode 100644 node_modules/lodash/_ListCache.js delete mode 100644 node_modules/lodash/_LodashWrapper.js delete mode 100644 node_modules/lodash/_Map.js delete mode 100644 node_modules/lodash/_MapCache.js delete mode 100644 node_modules/lodash/_Promise.js delete mode 100644 node_modules/lodash/_Set.js delete mode 100644 node_modules/lodash/_SetCache.js delete mode 100644 node_modules/lodash/_Stack.js delete mode 100644 node_modules/lodash/_Symbol.js delete mode 100644 node_modules/lodash/_Uint8Array.js delete mode 100644 node_modules/lodash/_WeakMap.js delete mode 100644 node_modules/lodash/_apply.js delete mode 100644 node_modules/lodash/_arrayAggregator.js delete mode 100644 node_modules/lodash/_arrayEach.js delete mode 100644 node_modules/lodash/_arrayEachRight.js delete mode 100644 node_modules/lodash/_arrayEvery.js delete mode 100644 node_modules/lodash/_arrayFilter.js delete mode 100644 node_modules/lodash/_arrayIncludes.js delete mode 100644 node_modules/lodash/_arrayIncludesWith.js delete mode 100644 node_modules/lodash/_arrayLikeKeys.js delete mode 100644 node_modules/lodash/_arrayMap.js delete mode 100644 node_modules/lodash/_arrayPush.js delete mode 100644 node_modules/lodash/_arrayReduce.js delete mode 100644 node_modules/lodash/_arrayReduceRight.js delete mode 100644 node_modules/lodash/_arraySample.js delete mode 100644 node_modules/lodash/_arraySampleSize.js delete mode 100644 node_modules/lodash/_arrayShuffle.js delete mode 100644 node_modules/lodash/_arraySome.js delete mode 100644 node_modules/lodash/_asciiSize.js delete mode 100644 node_modules/lodash/_asciiToArray.js delete mode 100644 node_modules/lodash/_asciiWords.js delete mode 100644 node_modules/lodash/_assignMergeValue.js delete mode 100644 node_modules/lodash/_assignValue.js delete mode 100644 node_modules/lodash/_assocIndexOf.js delete mode 100644 node_modules/lodash/_baseAggregator.js delete mode 100644 node_modules/lodash/_baseAssign.js delete mode 100644 node_modules/lodash/_baseAssignIn.js delete mode 100644 node_modules/lodash/_baseAssignValue.js delete mode 100644 node_modules/lodash/_baseAt.js delete mode 100644 node_modules/lodash/_baseClamp.js delete mode 100644 node_modules/lodash/_baseClone.js delete mode 100644 node_modules/lodash/_baseConforms.js delete mode 100644 node_modules/lodash/_baseConformsTo.js delete mode 100644 node_modules/lodash/_baseCreate.js delete mode 100644 node_modules/lodash/_baseDelay.js delete mode 100644 node_modules/lodash/_baseDifference.js delete mode 100644 node_modules/lodash/_baseEach.js delete mode 100644 node_modules/lodash/_baseEachRight.js delete mode 100644 node_modules/lodash/_baseEvery.js delete mode 100644 node_modules/lodash/_baseExtremum.js delete mode 100644 node_modules/lodash/_baseFill.js delete mode 100644 node_modules/lodash/_baseFilter.js delete mode 100644 node_modules/lodash/_baseFindIndex.js delete mode 100644 node_modules/lodash/_baseFindKey.js delete mode 100644 node_modules/lodash/_baseFlatten.js delete mode 100644 node_modules/lodash/_baseFor.js delete mode 100644 node_modules/lodash/_baseForOwn.js delete mode 100644 node_modules/lodash/_baseForOwnRight.js delete mode 100644 node_modules/lodash/_baseForRight.js delete mode 100644 node_modules/lodash/_baseFunctions.js delete mode 100644 node_modules/lodash/_baseGet.js delete mode 100644 node_modules/lodash/_baseGetAllKeys.js delete mode 100644 node_modules/lodash/_baseGetTag.js delete mode 100644 node_modules/lodash/_baseGt.js delete mode 100644 node_modules/lodash/_baseHas.js delete mode 100644 node_modules/lodash/_baseHasIn.js delete mode 100644 node_modules/lodash/_baseInRange.js delete mode 100644 node_modules/lodash/_baseIndexOf.js delete mode 100644 node_modules/lodash/_baseIndexOfWith.js delete mode 100644 node_modules/lodash/_baseIntersection.js delete mode 100644 node_modules/lodash/_baseInverter.js delete mode 100644 node_modules/lodash/_baseInvoke.js delete mode 100644 node_modules/lodash/_baseIsArguments.js delete mode 100644 node_modules/lodash/_baseIsArrayBuffer.js delete mode 100644 node_modules/lodash/_baseIsDate.js delete mode 100644 node_modules/lodash/_baseIsEqual.js delete mode 100644 node_modules/lodash/_baseIsEqualDeep.js delete mode 100644 node_modules/lodash/_baseIsMap.js delete mode 100644 node_modules/lodash/_baseIsMatch.js delete mode 100644 node_modules/lodash/_baseIsNaN.js delete mode 100644 node_modules/lodash/_baseIsNative.js delete mode 100644 node_modules/lodash/_baseIsRegExp.js delete mode 100644 node_modules/lodash/_baseIsSet.js delete mode 100644 node_modules/lodash/_baseIsTypedArray.js delete mode 100644 node_modules/lodash/_baseIteratee.js delete mode 100644 node_modules/lodash/_baseKeys.js delete mode 100644 node_modules/lodash/_baseKeysIn.js delete mode 100644 node_modules/lodash/_baseLodash.js delete mode 100644 node_modules/lodash/_baseLt.js delete mode 100644 node_modules/lodash/_baseMap.js delete mode 100644 node_modules/lodash/_baseMatches.js delete mode 100644 node_modules/lodash/_baseMatchesProperty.js delete mode 100644 node_modules/lodash/_baseMean.js delete mode 100644 node_modules/lodash/_baseMerge.js delete mode 100644 node_modules/lodash/_baseMergeDeep.js delete mode 100644 node_modules/lodash/_baseNth.js delete mode 100644 node_modules/lodash/_baseOrderBy.js delete mode 100644 node_modules/lodash/_basePick.js delete mode 100644 node_modules/lodash/_basePickBy.js delete mode 100644 node_modules/lodash/_baseProperty.js delete mode 100644 node_modules/lodash/_basePropertyDeep.js delete mode 100644 node_modules/lodash/_basePropertyOf.js delete mode 100644 node_modules/lodash/_basePullAll.js delete mode 100644 node_modules/lodash/_basePullAt.js delete mode 100644 node_modules/lodash/_baseRandom.js delete mode 100644 node_modules/lodash/_baseRange.js delete mode 100644 node_modules/lodash/_baseReduce.js delete mode 100644 node_modules/lodash/_baseRepeat.js delete mode 100644 node_modules/lodash/_baseRest.js delete mode 100644 node_modules/lodash/_baseSample.js delete mode 100644 node_modules/lodash/_baseSampleSize.js delete mode 100644 node_modules/lodash/_baseSet.js delete mode 100644 node_modules/lodash/_baseSetData.js delete mode 100644 node_modules/lodash/_baseSetToString.js delete mode 100644 node_modules/lodash/_baseShuffle.js delete mode 100644 node_modules/lodash/_baseSlice.js delete mode 100644 node_modules/lodash/_baseSome.js delete mode 100644 node_modules/lodash/_baseSortBy.js delete mode 100644 node_modules/lodash/_baseSortedIndex.js delete mode 100644 node_modules/lodash/_baseSortedIndexBy.js delete mode 100644 node_modules/lodash/_baseSortedUniq.js delete mode 100644 node_modules/lodash/_baseSum.js delete mode 100644 node_modules/lodash/_baseTimes.js delete mode 100644 node_modules/lodash/_baseToNumber.js delete mode 100644 node_modules/lodash/_baseToPairs.js delete mode 100644 node_modules/lodash/_baseToString.js delete mode 100644 node_modules/lodash/_baseTrim.js delete mode 100644 node_modules/lodash/_baseUnary.js delete mode 100644 node_modules/lodash/_baseUniq.js delete mode 100644 node_modules/lodash/_baseUnset.js delete mode 100644 node_modules/lodash/_baseUpdate.js delete mode 100644 node_modules/lodash/_baseValues.js delete mode 100644 node_modules/lodash/_baseWhile.js delete mode 100644 node_modules/lodash/_baseWrapperValue.js delete mode 100644 node_modules/lodash/_baseXor.js delete mode 100644 node_modules/lodash/_baseZipObject.js delete mode 100644 node_modules/lodash/_cacheHas.js delete mode 100644 node_modules/lodash/_castArrayLikeObject.js delete mode 100644 node_modules/lodash/_castFunction.js delete mode 100644 node_modules/lodash/_castPath.js delete mode 100644 node_modules/lodash/_castRest.js delete mode 100644 node_modules/lodash/_castSlice.js delete mode 100644 node_modules/lodash/_charsEndIndex.js delete mode 100644 node_modules/lodash/_charsStartIndex.js delete mode 100644 node_modules/lodash/_cloneArrayBuffer.js delete mode 100644 node_modules/lodash/_cloneBuffer.js delete mode 100644 node_modules/lodash/_cloneDataView.js delete mode 100644 node_modules/lodash/_cloneRegExp.js delete mode 100644 node_modules/lodash/_cloneSymbol.js delete mode 100644 node_modules/lodash/_cloneTypedArray.js delete mode 100644 node_modules/lodash/_compareAscending.js delete mode 100644 node_modules/lodash/_compareMultiple.js delete mode 100644 node_modules/lodash/_composeArgs.js delete mode 100644 node_modules/lodash/_composeArgsRight.js delete mode 100644 node_modules/lodash/_copyArray.js delete mode 100644 node_modules/lodash/_copyObject.js delete mode 100644 node_modules/lodash/_copySymbols.js delete mode 100644 node_modules/lodash/_copySymbolsIn.js delete mode 100644 node_modules/lodash/_coreJsData.js delete mode 100644 node_modules/lodash/_countHolders.js delete mode 100644 node_modules/lodash/_createAggregator.js delete mode 100644 node_modules/lodash/_createAssigner.js delete mode 100644 node_modules/lodash/_createBaseEach.js delete mode 100644 node_modules/lodash/_createBaseFor.js delete mode 100644 node_modules/lodash/_createBind.js delete mode 100644 node_modules/lodash/_createCaseFirst.js delete mode 100644 node_modules/lodash/_createCompounder.js delete mode 100644 node_modules/lodash/_createCtor.js delete mode 100644 node_modules/lodash/_createCurry.js delete mode 100644 node_modules/lodash/_createFind.js delete mode 100644 node_modules/lodash/_createFlow.js delete mode 100644 node_modules/lodash/_createHybrid.js delete mode 100644 node_modules/lodash/_createInverter.js delete mode 100644 node_modules/lodash/_createMathOperation.js delete mode 100644 node_modules/lodash/_createOver.js delete mode 100644 node_modules/lodash/_createPadding.js delete mode 100644 node_modules/lodash/_createPartial.js delete mode 100644 node_modules/lodash/_createRange.js delete mode 100644 node_modules/lodash/_createRecurry.js delete mode 100644 node_modules/lodash/_createRelationalOperation.js delete mode 100644 node_modules/lodash/_createRound.js delete mode 100644 node_modules/lodash/_createSet.js delete mode 100644 node_modules/lodash/_createToPairs.js delete mode 100644 node_modules/lodash/_createWrap.js delete mode 100644 node_modules/lodash/_customDefaultsAssignIn.js delete mode 100644 node_modules/lodash/_customDefaultsMerge.js delete mode 100644 node_modules/lodash/_customOmitClone.js delete mode 100644 node_modules/lodash/_deburrLetter.js delete mode 100644 node_modules/lodash/_defineProperty.js delete mode 100644 node_modules/lodash/_equalArrays.js delete mode 100644 node_modules/lodash/_equalByTag.js delete mode 100644 node_modules/lodash/_equalObjects.js delete mode 100644 node_modules/lodash/_escapeHtmlChar.js delete mode 100644 node_modules/lodash/_escapeStringChar.js delete mode 100644 node_modules/lodash/_flatRest.js delete mode 100644 node_modules/lodash/_freeGlobal.js delete mode 100644 node_modules/lodash/_getAllKeys.js delete mode 100644 node_modules/lodash/_getAllKeysIn.js delete mode 100644 node_modules/lodash/_getData.js delete mode 100644 node_modules/lodash/_getFuncName.js delete mode 100644 node_modules/lodash/_getHolder.js delete mode 100644 node_modules/lodash/_getMapData.js delete mode 100644 node_modules/lodash/_getMatchData.js delete mode 100644 node_modules/lodash/_getNative.js delete mode 100644 node_modules/lodash/_getPrototype.js delete mode 100644 node_modules/lodash/_getRawTag.js delete mode 100644 node_modules/lodash/_getSymbols.js delete mode 100644 node_modules/lodash/_getSymbolsIn.js delete mode 100644 node_modules/lodash/_getTag.js delete mode 100644 node_modules/lodash/_getValue.js delete mode 100644 node_modules/lodash/_getView.js delete mode 100644 node_modules/lodash/_getWrapDetails.js delete mode 100644 node_modules/lodash/_hasPath.js delete mode 100644 node_modules/lodash/_hasUnicode.js delete mode 100644 node_modules/lodash/_hasUnicodeWord.js delete mode 100644 node_modules/lodash/_hashClear.js delete mode 100644 node_modules/lodash/_hashDelete.js delete mode 100644 node_modules/lodash/_hashGet.js delete mode 100644 node_modules/lodash/_hashHas.js delete mode 100644 node_modules/lodash/_hashSet.js delete mode 100644 node_modules/lodash/_initCloneArray.js delete mode 100644 node_modules/lodash/_initCloneByTag.js delete mode 100644 node_modules/lodash/_initCloneObject.js delete mode 100644 node_modules/lodash/_insertWrapDetails.js delete mode 100644 node_modules/lodash/_isFlattenable.js delete mode 100644 node_modules/lodash/_isIndex.js delete mode 100644 node_modules/lodash/_isIterateeCall.js delete mode 100644 node_modules/lodash/_isKey.js delete mode 100644 node_modules/lodash/_isKeyable.js delete mode 100644 node_modules/lodash/_isLaziable.js delete mode 100644 node_modules/lodash/_isMaskable.js delete mode 100644 node_modules/lodash/_isMasked.js delete mode 100644 node_modules/lodash/_isPrototype.js delete mode 100644 node_modules/lodash/_isStrictComparable.js delete mode 100644 node_modules/lodash/_iteratorToArray.js delete mode 100644 node_modules/lodash/_lazyClone.js delete mode 100644 node_modules/lodash/_lazyReverse.js delete mode 100644 node_modules/lodash/_lazyValue.js delete mode 100644 node_modules/lodash/_listCacheClear.js delete mode 100644 node_modules/lodash/_listCacheDelete.js delete mode 100644 node_modules/lodash/_listCacheGet.js delete mode 100644 node_modules/lodash/_listCacheHas.js delete mode 100644 node_modules/lodash/_listCacheSet.js delete mode 100644 node_modules/lodash/_mapCacheClear.js delete mode 100644 node_modules/lodash/_mapCacheDelete.js delete mode 100644 node_modules/lodash/_mapCacheGet.js delete mode 100644 node_modules/lodash/_mapCacheHas.js delete mode 100644 node_modules/lodash/_mapCacheSet.js delete mode 100644 node_modules/lodash/_mapToArray.js delete mode 100644 node_modules/lodash/_matchesStrictComparable.js delete mode 100644 node_modules/lodash/_memoizeCapped.js delete mode 100644 node_modules/lodash/_mergeData.js delete mode 100644 node_modules/lodash/_metaMap.js delete mode 100644 node_modules/lodash/_nativeCreate.js delete mode 100644 node_modules/lodash/_nativeKeys.js delete mode 100644 node_modules/lodash/_nativeKeysIn.js delete mode 100644 node_modules/lodash/_nodeUtil.js delete mode 100644 node_modules/lodash/_objectToString.js delete mode 100644 node_modules/lodash/_overArg.js delete mode 100644 node_modules/lodash/_overRest.js delete mode 100644 node_modules/lodash/_parent.js delete mode 100644 node_modules/lodash/_reEscape.js delete mode 100644 node_modules/lodash/_reEvaluate.js delete mode 100644 node_modules/lodash/_reInterpolate.js delete mode 100644 node_modules/lodash/_realNames.js delete mode 100644 node_modules/lodash/_reorder.js delete mode 100644 node_modules/lodash/_replaceHolders.js delete mode 100644 node_modules/lodash/_root.js delete mode 100644 node_modules/lodash/_safeGet.js delete mode 100644 node_modules/lodash/_setCacheAdd.js delete mode 100644 node_modules/lodash/_setCacheHas.js delete mode 100644 node_modules/lodash/_setData.js delete mode 100644 node_modules/lodash/_setToArray.js delete mode 100644 node_modules/lodash/_setToPairs.js delete mode 100644 node_modules/lodash/_setToString.js delete mode 100644 node_modules/lodash/_setWrapToString.js delete mode 100644 node_modules/lodash/_shortOut.js delete mode 100644 node_modules/lodash/_shuffleSelf.js delete mode 100644 node_modules/lodash/_stackClear.js delete mode 100644 node_modules/lodash/_stackDelete.js delete mode 100644 node_modules/lodash/_stackGet.js delete mode 100644 node_modules/lodash/_stackHas.js delete mode 100644 node_modules/lodash/_stackSet.js delete mode 100644 node_modules/lodash/_strictIndexOf.js delete mode 100644 node_modules/lodash/_strictLastIndexOf.js delete mode 100644 node_modules/lodash/_stringSize.js delete mode 100644 node_modules/lodash/_stringToArray.js delete mode 100644 node_modules/lodash/_stringToPath.js delete mode 100644 node_modules/lodash/_toKey.js delete mode 100644 node_modules/lodash/_toSource.js delete mode 100644 node_modules/lodash/_trimmedEndIndex.js delete mode 100644 node_modules/lodash/_unescapeHtmlChar.js delete mode 100644 node_modules/lodash/_unicodeSize.js delete mode 100644 node_modules/lodash/_unicodeToArray.js delete mode 100644 node_modules/lodash/_unicodeWords.js delete mode 100644 node_modules/lodash/_updateWrapDetails.js delete mode 100644 node_modules/lodash/_wrapperClone.js delete mode 100644 node_modules/lodash/add.js delete mode 100644 node_modules/lodash/after.js delete mode 100644 node_modules/lodash/array.js delete mode 100644 node_modules/lodash/ary.js delete mode 100644 node_modules/lodash/assign.js delete mode 100644 node_modules/lodash/assignIn.js delete mode 100644 node_modules/lodash/assignInWith.js delete mode 100644 node_modules/lodash/assignWith.js delete mode 100644 node_modules/lodash/at.js delete mode 100644 node_modules/lodash/attempt.js delete mode 100644 node_modules/lodash/before.js delete mode 100644 node_modules/lodash/bind.js delete mode 100644 node_modules/lodash/bindAll.js delete mode 100644 node_modules/lodash/bindKey.js delete mode 100644 node_modules/lodash/camelCase.js delete mode 100644 node_modules/lodash/capitalize.js delete mode 100644 node_modules/lodash/castArray.js delete mode 100644 node_modules/lodash/ceil.js delete mode 100644 node_modules/lodash/chain.js delete mode 100644 node_modules/lodash/chunk.js delete mode 100644 node_modules/lodash/clamp.js delete mode 100644 node_modules/lodash/clone.js delete mode 100644 node_modules/lodash/cloneDeep.js delete mode 100644 node_modules/lodash/cloneDeepWith.js delete mode 100644 node_modules/lodash/cloneWith.js delete mode 100644 node_modules/lodash/collection.js delete mode 100644 node_modules/lodash/commit.js delete mode 100644 node_modules/lodash/compact.js delete mode 100644 node_modules/lodash/concat.js delete mode 100644 node_modules/lodash/cond.js delete mode 100644 node_modules/lodash/conforms.js delete mode 100644 node_modules/lodash/conformsTo.js delete mode 100644 node_modules/lodash/constant.js delete mode 100644 node_modules/lodash/core.js delete mode 100644 node_modules/lodash/core.min.js delete mode 100644 node_modules/lodash/countBy.js delete mode 100644 node_modules/lodash/create.js delete mode 100644 node_modules/lodash/curry.js delete mode 100644 node_modules/lodash/curryRight.js delete mode 100644 node_modules/lodash/date.js delete mode 100644 node_modules/lodash/debounce.js delete mode 100644 node_modules/lodash/deburr.js delete mode 100644 node_modules/lodash/defaultTo.js delete mode 100644 node_modules/lodash/defaults.js delete mode 100644 node_modules/lodash/defaultsDeep.js delete mode 100644 node_modules/lodash/defer.js delete mode 100644 node_modules/lodash/delay.js delete mode 100644 node_modules/lodash/difference.js delete mode 100644 node_modules/lodash/differenceBy.js delete mode 100644 node_modules/lodash/differenceWith.js delete mode 100644 node_modules/lodash/divide.js delete mode 100644 node_modules/lodash/drop.js delete mode 100644 node_modules/lodash/dropRight.js delete mode 100644 node_modules/lodash/dropRightWhile.js delete mode 100644 node_modules/lodash/dropWhile.js delete mode 100644 node_modules/lodash/each.js delete mode 100644 node_modules/lodash/eachRight.js delete mode 100644 node_modules/lodash/endsWith.js delete mode 100644 node_modules/lodash/entries.js delete mode 100644 node_modules/lodash/entriesIn.js delete mode 100644 node_modules/lodash/eq.js delete mode 100644 node_modules/lodash/escape.js delete mode 100644 node_modules/lodash/escapeRegExp.js delete mode 100644 node_modules/lodash/every.js delete mode 100644 node_modules/lodash/extend.js delete mode 100644 node_modules/lodash/extendWith.js delete mode 100644 node_modules/lodash/fill.js delete mode 100644 node_modules/lodash/filter.js delete mode 100644 node_modules/lodash/find.js delete mode 100644 node_modules/lodash/findIndex.js delete mode 100644 node_modules/lodash/findKey.js delete mode 100644 node_modules/lodash/findLast.js delete mode 100644 node_modules/lodash/findLastIndex.js delete mode 100644 node_modules/lodash/findLastKey.js delete mode 100644 node_modules/lodash/first.js delete mode 100644 node_modules/lodash/flake.lock delete mode 100644 node_modules/lodash/flake.nix delete mode 100644 node_modules/lodash/flatMap.js delete mode 100644 node_modules/lodash/flatMapDeep.js delete mode 100644 node_modules/lodash/flatMapDepth.js delete mode 100644 node_modules/lodash/flatten.js delete mode 100644 node_modules/lodash/flattenDeep.js delete mode 100644 node_modules/lodash/flattenDepth.js delete mode 100644 node_modules/lodash/flip.js delete mode 100644 node_modules/lodash/floor.js delete mode 100644 node_modules/lodash/flow.js delete mode 100644 node_modules/lodash/flowRight.js delete mode 100644 node_modules/lodash/forEach.js delete mode 100644 node_modules/lodash/forEachRight.js delete mode 100644 node_modules/lodash/forIn.js delete mode 100644 node_modules/lodash/forInRight.js delete mode 100644 node_modules/lodash/forOwn.js delete mode 100644 node_modules/lodash/forOwnRight.js delete mode 100644 node_modules/lodash/fp.js delete mode 100644 node_modules/lodash/fp/F.js delete mode 100644 node_modules/lodash/fp/T.js delete mode 100644 node_modules/lodash/fp/__.js delete mode 100644 node_modules/lodash/fp/_baseConvert.js delete mode 100644 node_modules/lodash/fp/_convertBrowser.js delete mode 100644 node_modules/lodash/fp/_falseOptions.js delete mode 100644 node_modules/lodash/fp/_mapping.js delete mode 100644 node_modules/lodash/fp/_util.js delete mode 100644 node_modules/lodash/fp/add.js delete mode 100644 node_modules/lodash/fp/after.js delete mode 100644 node_modules/lodash/fp/all.js delete mode 100644 node_modules/lodash/fp/allPass.js delete mode 100644 node_modules/lodash/fp/always.js delete mode 100644 node_modules/lodash/fp/any.js delete mode 100644 node_modules/lodash/fp/anyPass.js delete mode 100644 node_modules/lodash/fp/apply.js delete mode 100644 node_modules/lodash/fp/array.js delete mode 100644 node_modules/lodash/fp/ary.js delete mode 100644 node_modules/lodash/fp/assign.js delete mode 100644 node_modules/lodash/fp/assignAll.js delete mode 100644 node_modules/lodash/fp/assignAllWith.js delete mode 100644 node_modules/lodash/fp/assignIn.js delete mode 100644 node_modules/lodash/fp/assignInAll.js delete mode 100644 node_modules/lodash/fp/assignInAllWith.js delete mode 100644 node_modules/lodash/fp/assignInWith.js delete mode 100644 node_modules/lodash/fp/assignWith.js delete mode 100644 node_modules/lodash/fp/assoc.js delete mode 100644 node_modules/lodash/fp/assocPath.js delete mode 100644 node_modules/lodash/fp/at.js delete mode 100644 node_modules/lodash/fp/attempt.js delete mode 100644 node_modules/lodash/fp/before.js delete mode 100644 node_modules/lodash/fp/bind.js delete mode 100644 node_modules/lodash/fp/bindAll.js delete mode 100644 node_modules/lodash/fp/bindKey.js delete mode 100644 node_modules/lodash/fp/camelCase.js delete mode 100644 node_modules/lodash/fp/capitalize.js delete mode 100644 node_modules/lodash/fp/castArray.js delete mode 100644 node_modules/lodash/fp/ceil.js delete mode 100644 node_modules/lodash/fp/chain.js delete mode 100644 node_modules/lodash/fp/chunk.js delete mode 100644 node_modules/lodash/fp/clamp.js delete mode 100644 node_modules/lodash/fp/clone.js delete mode 100644 node_modules/lodash/fp/cloneDeep.js delete mode 100644 node_modules/lodash/fp/cloneDeepWith.js delete mode 100644 node_modules/lodash/fp/cloneWith.js delete mode 100644 node_modules/lodash/fp/collection.js delete mode 100644 node_modules/lodash/fp/commit.js delete mode 100644 node_modules/lodash/fp/compact.js delete mode 100644 node_modules/lodash/fp/complement.js delete mode 100644 node_modules/lodash/fp/compose.js delete mode 100644 node_modules/lodash/fp/concat.js delete mode 100644 node_modules/lodash/fp/cond.js delete mode 100644 node_modules/lodash/fp/conforms.js delete mode 100644 node_modules/lodash/fp/conformsTo.js delete mode 100644 node_modules/lodash/fp/constant.js delete mode 100644 node_modules/lodash/fp/contains.js delete mode 100644 node_modules/lodash/fp/convert.js delete mode 100644 node_modules/lodash/fp/countBy.js delete mode 100644 node_modules/lodash/fp/create.js delete mode 100644 node_modules/lodash/fp/curry.js delete mode 100644 node_modules/lodash/fp/curryN.js delete mode 100644 node_modules/lodash/fp/curryRight.js delete mode 100644 node_modules/lodash/fp/curryRightN.js delete mode 100644 node_modules/lodash/fp/date.js delete mode 100644 node_modules/lodash/fp/debounce.js delete mode 100644 node_modules/lodash/fp/deburr.js delete mode 100644 node_modules/lodash/fp/defaultTo.js delete mode 100644 node_modules/lodash/fp/defaults.js delete mode 100644 node_modules/lodash/fp/defaultsAll.js delete mode 100644 node_modules/lodash/fp/defaultsDeep.js delete mode 100644 node_modules/lodash/fp/defaultsDeepAll.js delete mode 100644 node_modules/lodash/fp/defer.js delete mode 100644 node_modules/lodash/fp/delay.js delete mode 100644 node_modules/lodash/fp/difference.js delete mode 100644 node_modules/lodash/fp/differenceBy.js delete mode 100644 node_modules/lodash/fp/differenceWith.js delete mode 100644 node_modules/lodash/fp/dissoc.js delete mode 100644 node_modules/lodash/fp/dissocPath.js delete mode 100644 node_modules/lodash/fp/divide.js delete mode 100644 node_modules/lodash/fp/drop.js delete mode 100644 node_modules/lodash/fp/dropLast.js delete mode 100644 node_modules/lodash/fp/dropLastWhile.js delete mode 100644 node_modules/lodash/fp/dropRight.js delete mode 100644 node_modules/lodash/fp/dropRightWhile.js delete mode 100644 node_modules/lodash/fp/dropWhile.js delete mode 100644 node_modules/lodash/fp/each.js delete mode 100644 node_modules/lodash/fp/eachRight.js delete mode 100644 node_modules/lodash/fp/endsWith.js delete mode 100644 node_modules/lodash/fp/entries.js delete mode 100644 node_modules/lodash/fp/entriesIn.js delete mode 100644 node_modules/lodash/fp/eq.js delete mode 100644 node_modules/lodash/fp/equals.js delete mode 100644 node_modules/lodash/fp/escape.js delete mode 100644 node_modules/lodash/fp/escapeRegExp.js delete mode 100644 node_modules/lodash/fp/every.js delete mode 100644 node_modules/lodash/fp/extend.js delete mode 100644 node_modules/lodash/fp/extendAll.js delete mode 100644 node_modules/lodash/fp/extendAllWith.js delete mode 100644 node_modules/lodash/fp/extendWith.js delete mode 100644 node_modules/lodash/fp/fill.js delete mode 100644 node_modules/lodash/fp/filter.js delete mode 100644 node_modules/lodash/fp/find.js delete mode 100644 node_modules/lodash/fp/findFrom.js delete mode 100644 node_modules/lodash/fp/findIndex.js delete mode 100644 node_modules/lodash/fp/findIndexFrom.js delete mode 100644 node_modules/lodash/fp/findKey.js delete mode 100644 node_modules/lodash/fp/findLast.js delete mode 100644 node_modules/lodash/fp/findLastFrom.js delete mode 100644 node_modules/lodash/fp/findLastIndex.js delete mode 100644 node_modules/lodash/fp/findLastIndexFrom.js delete mode 100644 node_modules/lodash/fp/findLastKey.js delete mode 100644 node_modules/lodash/fp/first.js delete mode 100644 node_modules/lodash/fp/flatMap.js delete mode 100644 node_modules/lodash/fp/flatMapDeep.js delete mode 100644 node_modules/lodash/fp/flatMapDepth.js delete mode 100644 node_modules/lodash/fp/flatten.js delete mode 100644 node_modules/lodash/fp/flattenDeep.js delete mode 100644 node_modules/lodash/fp/flattenDepth.js delete mode 100644 node_modules/lodash/fp/flip.js delete mode 100644 node_modules/lodash/fp/floor.js delete mode 100644 node_modules/lodash/fp/flow.js delete mode 100644 node_modules/lodash/fp/flowRight.js delete mode 100644 node_modules/lodash/fp/forEach.js delete mode 100644 node_modules/lodash/fp/forEachRight.js delete mode 100644 node_modules/lodash/fp/forIn.js delete mode 100644 node_modules/lodash/fp/forInRight.js delete mode 100644 node_modules/lodash/fp/forOwn.js delete mode 100644 node_modules/lodash/fp/forOwnRight.js delete mode 100644 node_modules/lodash/fp/fromPairs.js delete mode 100644 node_modules/lodash/fp/function.js delete mode 100644 node_modules/lodash/fp/functions.js delete mode 100644 node_modules/lodash/fp/functionsIn.js delete mode 100644 node_modules/lodash/fp/get.js delete mode 100644 node_modules/lodash/fp/getOr.js delete mode 100644 node_modules/lodash/fp/groupBy.js delete mode 100644 node_modules/lodash/fp/gt.js delete mode 100644 node_modules/lodash/fp/gte.js delete mode 100644 node_modules/lodash/fp/has.js delete mode 100644 node_modules/lodash/fp/hasIn.js delete mode 100644 node_modules/lodash/fp/head.js delete mode 100644 node_modules/lodash/fp/identical.js delete mode 100644 node_modules/lodash/fp/identity.js delete mode 100644 node_modules/lodash/fp/inRange.js delete mode 100644 node_modules/lodash/fp/includes.js delete mode 100644 node_modules/lodash/fp/includesFrom.js delete mode 100644 node_modules/lodash/fp/indexBy.js delete mode 100644 node_modules/lodash/fp/indexOf.js delete mode 100644 node_modules/lodash/fp/indexOfFrom.js delete mode 100644 node_modules/lodash/fp/init.js delete mode 100644 node_modules/lodash/fp/initial.js delete mode 100644 node_modules/lodash/fp/intersection.js delete mode 100644 node_modules/lodash/fp/intersectionBy.js delete mode 100644 node_modules/lodash/fp/intersectionWith.js delete mode 100644 node_modules/lodash/fp/invert.js delete mode 100644 node_modules/lodash/fp/invertBy.js delete mode 100644 node_modules/lodash/fp/invertObj.js delete mode 100644 node_modules/lodash/fp/invoke.js delete mode 100644 node_modules/lodash/fp/invokeArgs.js delete mode 100644 node_modules/lodash/fp/invokeArgsMap.js delete mode 100644 node_modules/lodash/fp/invokeMap.js delete mode 100644 node_modules/lodash/fp/isArguments.js delete mode 100644 node_modules/lodash/fp/isArray.js delete mode 100644 node_modules/lodash/fp/isArrayBuffer.js delete mode 100644 node_modules/lodash/fp/isArrayLike.js delete mode 100644 node_modules/lodash/fp/isArrayLikeObject.js delete mode 100644 node_modules/lodash/fp/isBoolean.js delete mode 100644 node_modules/lodash/fp/isBuffer.js delete mode 100644 node_modules/lodash/fp/isDate.js delete mode 100644 node_modules/lodash/fp/isElement.js delete mode 100644 node_modules/lodash/fp/isEmpty.js delete mode 100644 node_modules/lodash/fp/isEqual.js delete mode 100644 node_modules/lodash/fp/isEqualWith.js delete mode 100644 node_modules/lodash/fp/isError.js delete mode 100644 node_modules/lodash/fp/isFinite.js delete mode 100644 node_modules/lodash/fp/isFunction.js delete mode 100644 node_modules/lodash/fp/isInteger.js delete mode 100644 node_modules/lodash/fp/isLength.js delete mode 100644 node_modules/lodash/fp/isMap.js delete mode 100644 node_modules/lodash/fp/isMatch.js delete mode 100644 node_modules/lodash/fp/isMatchWith.js delete mode 100644 node_modules/lodash/fp/isNaN.js delete mode 100644 node_modules/lodash/fp/isNative.js delete mode 100644 node_modules/lodash/fp/isNil.js delete mode 100644 node_modules/lodash/fp/isNull.js delete mode 100644 node_modules/lodash/fp/isNumber.js delete mode 100644 node_modules/lodash/fp/isObject.js delete mode 100644 node_modules/lodash/fp/isObjectLike.js delete mode 100644 node_modules/lodash/fp/isPlainObject.js delete mode 100644 node_modules/lodash/fp/isRegExp.js delete mode 100644 node_modules/lodash/fp/isSafeInteger.js delete mode 100644 node_modules/lodash/fp/isSet.js delete mode 100644 node_modules/lodash/fp/isString.js delete mode 100644 node_modules/lodash/fp/isSymbol.js delete mode 100644 node_modules/lodash/fp/isTypedArray.js delete mode 100644 node_modules/lodash/fp/isUndefined.js delete mode 100644 node_modules/lodash/fp/isWeakMap.js delete mode 100644 node_modules/lodash/fp/isWeakSet.js delete mode 100644 node_modules/lodash/fp/iteratee.js delete mode 100644 node_modules/lodash/fp/join.js delete mode 100644 node_modules/lodash/fp/juxt.js delete mode 100644 node_modules/lodash/fp/kebabCase.js delete mode 100644 node_modules/lodash/fp/keyBy.js delete mode 100644 node_modules/lodash/fp/keys.js delete mode 100644 node_modules/lodash/fp/keysIn.js delete mode 100644 node_modules/lodash/fp/lang.js delete mode 100644 node_modules/lodash/fp/last.js delete mode 100644 node_modules/lodash/fp/lastIndexOf.js delete mode 100644 node_modules/lodash/fp/lastIndexOfFrom.js delete mode 100644 node_modules/lodash/fp/lowerCase.js delete mode 100644 node_modules/lodash/fp/lowerFirst.js delete mode 100644 node_modules/lodash/fp/lt.js delete mode 100644 node_modules/lodash/fp/lte.js delete mode 100644 node_modules/lodash/fp/map.js delete mode 100644 node_modules/lodash/fp/mapKeys.js delete mode 100644 node_modules/lodash/fp/mapValues.js delete mode 100644 node_modules/lodash/fp/matches.js delete mode 100644 node_modules/lodash/fp/matchesProperty.js delete mode 100644 node_modules/lodash/fp/math.js delete mode 100644 node_modules/lodash/fp/max.js delete mode 100644 node_modules/lodash/fp/maxBy.js delete mode 100644 node_modules/lodash/fp/mean.js delete mode 100644 node_modules/lodash/fp/meanBy.js delete mode 100644 node_modules/lodash/fp/memoize.js delete mode 100644 node_modules/lodash/fp/merge.js delete mode 100644 node_modules/lodash/fp/mergeAll.js delete mode 100644 node_modules/lodash/fp/mergeAllWith.js delete mode 100644 node_modules/lodash/fp/mergeWith.js delete mode 100644 node_modules/lodash/fp/method.js delete mode 100644 node_modules/lodash/fp/methodOf.js delete mode 100644 node_modules/lodash/fp/min.js delete mode 100644 node_modules/lodash/fp/minBy.js delete mode 100644 node_modules/lodash/fp/mixin.js delete mode 100644 node_modules/lodash/fp/multiply.js delete mode 100644 node_modules/lodash/fp/nAry.js delete mode 100644 node_modules/lodash/fp/negate.js delete mode 100644 node_modules/lodash/fp/next.js delete mode 100644 node_modules/lodash/fp/noop.js delete mode 100644 node_modules/lodash/fp/now.js delete mode 100644 node_modules/lodash/fp/nth.js delete mode 100644 node_modules/lodash/fp/nthArg.js delete mode 100644 node_modules/lodash/fp/number.js delete mode 100644 node_modules/lodash/fp/object.js delete mode 100644 node_modules/lodash/fp/omit.js delete mode 100644 node_modules/lodash/fp/omitAll.js delete mode 100644 node_modules/lodash/fp/omitBy.js delete mode 100644 node_modules/lodash/fp/once.js delete mode 100644 node_modules/lodash/fp/orderBy.js delete mode 100644 node_modules/lodash/fp/over.js delete mode 100644 node_modules/lodash/fp/overArgs.js delete mode 100644 node_modules/lodash/fp/overEvery.js delete mode 100644 node_modules/lodash/fp/overSome.js delete mode 100644 node_modules/lodash/fp/pad.js delete mode 100644 node_modules/lodash/fp/padChars.js delete mode 100644 node_modules/lodash/fp/padCharsEnd.js delete mode 100644 node_modules/lodash/fp/padCharsStart.js delete mode 100644 node_modules/lodash/fp/padEnd.js delete mode 100644 node_modules/lodash/fp/padStart.js delete mode 100644 node_modules/lodash/fp/parseInt.js delete mode 100644 node_modules/lodash/fp/partial.js delete mode 100644 node_modules/lodash/fp/partialRight.js delete mode 100644 node_modules/lodash/fp/partition.js delete mode 100644 node_modules/lodash/fp/path.js delete mode 100644 node_modules/lodash/fp/pathEq.js delete mode 100644 node_modules/lodash/fp/pathOr.js delete mode 100644 node_modules/lodash/fp/paths.js delete mode 100644 node_modules/lodash/fp/pick.js delete mode 100644 node_modules/lodash/fp/pickAll.js delete mode 100644 node_modules/lodash/fp/pickBy.js delete mode 100644 node_modules/lodash/fp/pipe.js delete mode 100644 node_modules/lodash/fp/placeholder.js delete mode 100644 node_modules/lodash/fp/plant.js delete mode 100644 node_modules/lodash/fp/pluck.js delete mode 100644 node_modules/lodash/fp/prop.js delete mode 100644 node_modules/lodash/fp/propEq.js delete mode 100644 node_modules/lodash/fp/propOr.js delete mode 100644 node_modules/lodash/fp/property.js delete mode 100644 node_modules/lodash/fp/propertyOf.js delete mode 100644 node_modules/lodash/fp/props.js delete mode 100644 node_modules/lodash/fp/pull.js delete mode 100644 node_modules/lodash/fp/pullAll.js delete mode 100644 node_modules/lodash/fp/pullAllBy.js delete mode 100644 node_modules/lodash/fp/pullAllWith.js delete mode 100644 node_modules/lodash/fp/pullAt.js delete mode 100644 node_modules/lodash/fp/random.js delete mode 100644 node_modules/lodash/fp/range.js delete mode 100644 node_modules/lodash/fp/rangeRight.js delete mode 100644 node_modules/lodash/fp/rangeStep.js delete mode 100644 node_modules/lodash/fp/rangeStepRight.js delete mode 100644 node_modules/lodash/fp/rearg.js delete mode 100644 node_modules/lodash/fp/reduce.js delete mode 100644 node_modules/lodash/fp/reduceRight.js delete mode 100644 node_modules/lodash/fp/reject.js delete mode 100644 node_modules/lodash/fp/remove.js delete mode 100644 node_modules/lodash/fp/repeat.js delete mode 100644 node_modules/lodash/fp/replace.js delete mode 100644 node_modules/lodash/fp/rest.js delete mode 100644 node_modules/lodash/fp/restFrom.js delete mode 100644 node_modules/lodash/fp/result.js delete mode 100644 node_modules/lodash/fp/reverse.js delete mode 100644 node_modules/lodash/fp/round.js delete mode 100644 node_modules/lodash/fp/sample.js delete mode 100644 node_modules/lodash/fp/sampleSize.js delete mode 100644 node_modules/lodash/fp/seq.js delete mode 100644 node_modules/lodash/fp/set.js delete mode 100644 node_modules/lodash/fp/setWith.js delete mode 100644 node_modules/lodash/fp/shuffle.js delete mode 100644 node_modules/lodash/fp/size.js delete mode 100644 node_modules/lodash/fp/slice.js delete mode 100644 node_modules/lodash/fp/snakeCase.js delete mode 100644 node_modules/lodash/fp/some.js delete mode 100644 node_modules/lodash/fp/sortBy.js delete mode 100644 node_modules/lodash/fp/sortedIndex.js delete mode 100644 node_modules/lodash/fp/sortedIndexBy.js delete mode 100644 node_modules/lodash/fp/sortedIndexOf.js delete mode 100644 node_modules/lodash/fp/sortedLastIndex.js delete mode 100644 node_modules/lodash/fp/sortedLastIndexBy.js delete mode 100644 node_modules/lodash/fp/sortedLastIndexOf.js delete mode 100644 node_modules/lodash/fp/sortedUniq.js delete mode 100644 node_modules/lodash/fp/sortedUniqBy.js delete mode 100644 node_modules/lodash/fp/split.js delete mode 100644 node_modules/lodash/fp/spread.js delete mode 100644 node_modules/lodash/fp/spreadFrom.js delete mode 100644 node_modules/lodash/fp/startCase.js delete mode 100644 node_modules/lodash/fp/startsWith.js delete mode 100644 node_modules/lodash/fp/string.js delete mode 100644 node_modules/lodash/fp/stubArray.js delete mode 100644 node_modules/lodash/fp/stubFalse.js delete mode 100644 node_modules/lodash/fp/stubObject.js delete mode 100644 node_modules/lodash/fp/stubString.js delete mode 100644 node_modules/lodash/fp/stubTrue.js delete mode 100644 node_modules/lodash/fp/subtract.js delete mode 100644 node_modules/lodash/fp/sum.js delete mode 100644 node_modules/lodash/fp/sumBy.js delete mode 100644 node_modules/lodash/fp/symmetricDifference.js delete mode 100644 node_modules/lodash/fp/symmetricDifferenceBy.js delete mode 100644 node_modules/lodash/fp/symmetricDifferenceWith.js delete mode 100644 node_modules/lodash/fp/tail.js delete mode 100644 node_modules/lodash/fp/take.js delete mode 100644 node_modules/lodash/fp/takeLast.js delete mode 100644 node_modules/lodash/fp/takeLastWhile.js delete mode 100644 node_modules/lodash/fp/takeRight.js delete mode 100644 node_modules/lodash/fp/takeRightWhile.js delete mode 100644 node_modules/lodash/fp/takeWhile.js delete mode 100644 node_modules/lodash/fp/tap.js delete mode 100644 node_modules/lodash/fp/template.js delete mode 100644 node_modules/lodash/fp/templateSettings.js delete mode 100644 node_modules/lodash/fp/throttle.js delete mode 100644 node_modules/lodash/fp/thru.js delete mode 100644 node_modules/lodash/fp/times.js delete mode 100644 node_modules/lodash/fp/toArray.js delete mode 100644 node_modules/lodash/fp/toFinite.js delete mode 100644 node_modules/lodash/fp/toInteger.js delete mode 100644 node_modules/lodash/fp/toIterator.js delete mode 100644 node_modules/lodash/fp/toJSON.js delete mode 100644 node_modules/lodash/fp/toLength.js delete mode 100644 node_modules/lodash/fp/toLower.js delete mode 100644 node_modules/lodash/fp/toNumber.js delete mode 100644 node_modules/lodash/fp/toPairs.js delete mode 100644 node_modules/lodash/fp/toPairsIn.js delete mode 100644 node_modules/lodash/fp/toPath.js delete mode 100644 node_modules/lodash/fp/toPlainObject.js delete mode 100644 node_modules/lodash/fp/toSafeInteger.js delete mode 100644 node_modules/lodash/fp/toString.js delete mode 100644 node_modules/lodash/fp/toUpper.js delete mode 100644 node_modules/lodash/fp/transform.js delete mode 100644 node_modules/lodash/fp/trim.js delete mode 100644 node_modules/lodash/fp/trimChars.js delete mode 100644 node_modules/lodash/fp/trimCharsEnd.js delete mode 100644 node_modules/lodash/fp/trimCharsStart.js delete mode 100644 node_modules/lodash/fp/trimEnd.js delete mode 100644 node_modules/lodash/fp/trimStart.js delete mode 100644 node_modules/lodash/fp/truncate.js delete mode 100644 node_modules/lodash/fp/unapply.js delete mode 100644 node_modules/lodash/fp/unary.js delete mode 100644 node_modules/lodash/fp/unescape.js delete mode 100644 node_modules/lodash/fp/union.js delete mode 100644 node_modules/lodash/fp/unionBy.js delete mode 100644 node_modules/lodash/fp/unionWith.js delete mode 100644 node_modules/lodash/fp/uniq.js delete mode 100644 node_modules/lodash/fp/uniqBy.js delete mode 100644 node_modules/lodash/fp/uniqWith.js delete mode 100644 node_modules/lodash/fp/uniqueId.js delete mode 100644 node_modules/lodash/fp/unnest.js delete mode 100644 node_modules/lodash/fp/unset.js delete mode 100644 node_modules/lodash/fp/unzip.js delete mode 100644 node_modules/lodash/fp/unzipWith.js delete mode 100644 node_modules/lodash/fp/update.js delete mode 100644 node_modules/lodash/fp/updateWith.js delete mode 100644 node_modules/lodash/fp/upperCase.js delete mode 100644 node_modules/lodash/fp/upperFirst.js delete mode 100644 node_modules/lodash/fp/useWith.js delete mode 100644 node_modules/lodash/fp/util.js delete mode 100644 node_modules/lodash/fp/value.js delete mode 100644 node_modules/lodash/fp/valueOf.js delete mode 100644 node_modules/lodash/fp/values.js delete mode 100644 node_modules/lodash/fp/valuesIn.js delete mode 100644 node_modules/lodash/fp/where.js delete mode 100644 node_modules/lodash/fp/whereEq.js delete mode 100644 node_modules/lodash/fp/without.js delete mode 100644 node_modules/lodash/fp/words.js delete mode 100644 node_modules/lodash/fp/wrap.js delete mode 100644 node_modules/lodash/fp/wrapperAt.js delete mode 100644 node_modules/lodash/fp/wrapperChain.js delete mode 100644 node_modules/lodash/fp/wrapperLodash.js delete mode 100644 node_modules/lodash/fp/wrapperReverse.js delete mode 100644 node_modules/lodash/fp/wrapperValue.js delete mode 100644 node_modules/lodash/fp/xor.js delete mode 100644 node_modules/lodash/fp/xorBy.js delete mode 100644 node_modules/lodash/fp/xorWith.js delete mode 100644 node_modules/lodash/fp/zip.js delete mode 100644 node_modules/lodash/fp/zipAll.js delete mode 100644 node_modules/lodash/fp/zipObj.js delete mode 100644 node_modules/lodash/fp/zipObject.js delete mode 100644 node_modules/lodash/fp/zipObjectDeep.js delete mode 100644 node_modules/lodash/fp/zipWith.js delete mode 100644 node_modules/lodash/fromPairs.js delete mode 100644 node_modules/lodash/function.js delete mode 100644 node_modules/lodash/functions.js delete mode 100644 node_modules/lodash/functionsIn.js delete mode 100644 node_modules/lodash/get.js delete mode 100644 node_modules/lodash/groupBy.js delete mode 100644 node_modules/lodash/gt.js delete mode 100644 node_modules/lodash/gte.js delete mode 100644 node_modules/lodash/has.js delete mode 100644 node_modules/lodash/hasIn.js delete mode 100644 node_modules/lodash/head.js delete mode 100644 node_modules/lodash/identity.js delete mode 100644 node_modules/lodash/inRange.js delete mode 100644 node_modules/lodash/includes.js delete mode 100644 node_modules/lodash/index.js delete mode 100644 node_modules/lodash/indexOf.js delete mode 100644 node_modules/lodash/initial.js delete mode 100644 node_modules/lodash/intersection.js delete mode 100644 node_modules/lodash/intersectionBy.js delete mode 100644 node_modules/lodash/intersectionWith.js delete mode 100644 node_modules/lodash/invert.js delete mode 100644 node_modules/lodash/invertBy.js delete mode 100644 node_modules/lodash/invoke.js delete mode 100644 node_modules/lodash/invokeMap.js delete mode 100644 node_modules/lodash/isArguments.js delete mode 100644 node_modules/lodash/isArray.js delete mode 100644 node_modules/lodash/isArrayBuffer.js delete mode 100644 node_modules/lodash/isArrayLike.js delete mode 100644 node_modules/lodash/isArrayLikeObject.js delete mode 100644 node_modules/lodash/isBoolean.js delete mode 100644 node_modules/lodash/isBuffer.js delete mode 100644 node_modules/lodash/isDate.js delete mode 100644 node_modules/lodash/isElement.js delete mode 100644 node_modules/lodash/isEmpty.js delete mode 100644 node_modules/lodash/isEqual.js delete mode 100644 node_modules/lodash/isEqualWith.js delete mode 100644 node_modules/lodash/isError.js delete mode 100644 node_modules/lodash/isFinite.js delete mode 100644 node_modules/lodash/isFunction.js delete mode 100644 node_modules/lodash/isInteger.js delete mode 100644 node_modules/lodash/isLength.js delete mode 100644 node_modules/lodash/isMap.js delete mode 100644 node_modules/lodash/isMatch.js delete mode 100644 node_modules/lodash/isMatchWith.js delete mode 100644 node_modules/lodash/isNaN.js delete mode 100644 node_modules/lodash/isNative.js delete mode 100644 node_modules/lodash/isNil.js delete mode 100644 node_modules/lodash/isNull.js delete mode 100644 node_modules/lodash/isNumber.js delete mode 100644 node_modules/lodash/isObject.js delete mode 100644 node_modules/lodash/isObjectLike.js delete mode 100644 node_modules/lodash/isPlainObject.js delete mode 100644 node_modules/lodash/isRegExp.js delete mode 100644 node_modules/lodash/isSafeInteger.js delete mode 100644 node_modules/lodash/isSet.js delete mode 100644 node_modules/lodash/isString.js delete mode 100644 node_modules/lodash/isSymbol.js delete mode 100644 node_modules/lodash/isTypedArray.js delete mode 100644 node_modules/lodash/isUndefined.js delete mode 100644 node_modules/lodash/isWeakMap.js delete mode 100644 node_modules/lodash/isWeakSet.js delete mode 100644 node_modules/lodash/iteratee.js delete mode 100644 node_modules/lodash/join.js delete mode 100644 node_modules/lodash/kebabCase.js delete mode 100644 node_modules/lodash/keyBy.js delete mode 100644 node_modules/lodash/keys.js delete mode 100644 node_modules/lodash/keysIn.js delete mode 100644 node_modules/lodash/lang.js delete mode 100644 node_modules/lodash/last.js delete mode 100644 node_modules/lodash/lastIndexOf.js delete mode 100644 node_modules/lodash/lodash.js delete mode 100644 node_modules/lodash/lodash.min.js delete mode 100644 node_modules/lodash/lowerCase.js delete mode 100644 node_modules/lodash/lowerFirst.js delete mode 100644 node_modules/lodash/lt.js delete mode 100644 node_modules/lodash/lte.js delete mode 100644 node_modules/lodash/map.js delete mode 100644 node_modules/lodash/mapKeys.js delete mode 100644 node_modules/lodash/mapValues.js delete mode 100644 node_modules/lodash/matches.js delete mode 100644 node_modules/lodash/matchesProperty.js delete mode 100644 node_modules/lodash/math.js delete mode 100644 node_modules/lodash/max.js delete mode 100644 node_modules/lodash/maxBy.js delete mode 100644 node_modules/lodash/mean.js delete mode 100644 node_modules/lodash/meanBy.js delete mode 100644 node_modules/lodash/memoize.js delete mode 100644 node_modules/lodash/merge.js delete mode 100644 node_modules/lodash/mergeWith.js delete mode 100644 node_modules/lodash/method.js delete mode 100644 node_modules/lodash/methodOf.js delete mode 100644 node_modules/lodash/min.js delete mode 100644 node_modules/lodash/minBy.js delete mode 100644 node_modules/lodash/mixin.js delete mode 100644 node_modules/lodash/multiply.js delete mode 100644 node_modules/lodash/negate.js delete mode 100644 node_modules/lodash/next.js delete mode 100644 node_modules/lodash/noop.js delete mode 100644 node_modules/lodash/now.js delete mode 100644 node_modules/lodash/nth.js delete mode 100644 node_modules/lodash/nthArg.js delete mode 100644 node_modules/lodash/number.js delete mode 100644 node_modules/lodash/object.js delete mode 100644 node_modules/lodash/omit.js delete mode 100644 node_modules/lodash/omitBy.js delete mode 100644 node_modules/lodash/once.js delete mode 100644 node_modules/lodash/orderBy.js delete mode 100644 node_modules/lodash/over.js delete mode 100644 node_modules/lodash/overArgs.js delete mode 100644 node_modules/lodash/overEvery.js delete mode 100644 node_modules/lodash/overSome.js delete mode 100644 node_modules/lodash/package.json delete mode 100644 node_modules/lodash/pad.js delete mode 100644 node_modules/lodash/padEnd.js delete mode 100644 node_modules/lodash/padStart.js delete mode 100644 node_modules/lodash/parseInt.js delete mode 100644 node_modules/lodash/partial.js delete mode 100644 node_modules/lodash/partialRight.js delete mode 100644 node_modules/lodash/partition.js delete mode 100644 node_modules/lodash/pick.js delete mode 100644 node_modules/lodash/pickBy.js delete mode 100644 node_modules/lodash/plant.js delete mode 100644 node_modules/lodash/property.js delete mode 100644 node_modules/lodash/propertyOf.js delete mode 100644 node_modules/lodash/pull.js delete mode 100644 node_modules/lodash/pullAll.js delete mode 100644 node_modules/lodash/pullAllBy.js delete mode 100644 node_modules/lodash/pullAllWith.js delete mode 100644 node_modules/lodash/pullAt.js delete mode 100644 node_modules/lodash/random.js delete mode 100644 node_modules/lodash/range.js delete mode 100644 node_modules/lodash/rangeRight.js delete mode 100644 node_modules/lodash/rearg.js delete mode 100644 node_modules/lodash/reduce.js delete mode 100644 node_modules/lodash/reduceRight.js delete mode 100644 node_modules/lodash/reject.js delete mode 100644 node_modules/lodash/release.md delete mode 100644 node_modules/lodash/remove.js delete mode 100644 node_modules/lodash/repeat.js delete mode 100644 node_modules/lodash/replace.js delete mode 100644 node_modules/lodash/rest.js delete mode 100644 node_modules/lodash/result.js delete mode 100644 node_modules/lodash/reverse.js delete mode 100644 node_modules/lodash/round.js delete mode 100644 node_modules/lodash/sample.js delete mode 100644 node_modules/lodash/sampleSize.js delete mode 100644 node_modules/lodash/seq.js delete mode 100644 node_modules/lodash/set.js delete mode 100644 node_modules/lodash/setWith.js delete mode 100644 node_modules/lodash/shuffle.js delete mode 100644 node_modules/lodash/size.js delete mode 100644 node_modules/lodash/slice.js delete mode 100644 node_modules/lodash/snakeCase.js delete mode 100644 node_modules/lodash/some.js delete mode 100644 node_modules/lodash/sortBy.js delete mode 100644 node_modules/lodash/sortedIndex.js delete mode 100644 node_modules/lodash/sortedIndexBy.js delete mode 100644 node_modules/lodash/sortedIndexOf.js delete mode 100644 node_modules/lodash/sortedLastIndex.js delete mode 100644 node_modules/lodash/sortedLastIndexBy.js delete mode 100644 node_modules/lodash/sortedLastIndexOf.js delete mode 100644 node_modules/lodash/sortedUniq.js delete mode 100644 node_modules/lodash/sortedUniqBy.js delete mode 100644 node_modules/lodash/split.js delete mode 100644 node_modules/lodash/spread.js delete mode 100644 node_modules/lodash/startCase.js delete mode 100644 node_modules/lodash/startsWith.js delete mode 100644 node_modules/lodash/string.js delete mode 100644 node_modules/lodash/stubArray.js delete mode 100644 node_modules/lodash/stubFalse.js delete mode 100644 node_modules/lodash/stubObject.js delete mode 100644 node_modules/lodash/stubString.js delete mode 100644 node_modules/lodash/stubTrue.js delete mode 100644 node_modules/lodash/subtract.js delete mode 100644 node_modules/lodash/sum.js delete mode 100644 node_modules/lodash/sumBy.js delete mode 100644 node_modules/lodash/tail.js delete mode 100644 node_modules/lodash/take.js delete mode 100644 node_modules/lodash/takeRight.js delete mode 100644 node_modules/lodash/takeRightWhile.js delete mode 100644 node_modules/lodash/takeWhile.js delete mode 100644 node_modules/lodash/tap.js delete mode 100644 node_modules/lodash/template.js delete mode 100644 node_modules/lodash/templateSettings.js delete mode 100644 node_modules/lodash/throttle.js delete mode 100644 node_modules/lodash/thru.js delete mode 100644 node_modules/lodash/times.js delete mode 100644 node_modules/lodash/toArray.js delete mode 100644 node_modules/lodash/toFinite.js delete mode 100644 node_modules/lodash/toInteger.js delete mode 100644 node_modules/lodash/toIterator.js delete mode 100644 node_modules/lodash/toJSON.js delete mode 100644 node_modules/lodash/toLength.js delete mode 100644 node_modules/lodash/toLower.js delete mode 100644 node_modules/lodash/toNumber.js delete mode 100644 node_modules/lodash/toPairs.js delete mode 100644 node_modules/lodash/toPairsIn.js delete mode 100644 node_modules/lodash/toPath.js delete mode 100644 node_modules/lodash/toPlainObject.js delete mode 100644 node_modules/lodash/toSafeInteger.js delete mode 100644 node_modules/lodash/toString.js delete mode 100644 node_modules/lodash/toUpper.js delete mode 100644 node_modules/lodash/transform.js delete mode 100644 node_modules/lodash/trim.js delete mode 100644 node_modules/lodash/trimEnd.js delete mode 100644 node_modules/lodash/trimStart.js delete mode 100644 node_modules/lodash/truncate.js delete mode 100644 node_modules/lodash/unary.js delete mode 100644 node_modules/lodash/unescape.js delete mode 100644 node_modules/lodash/union.js delete mode 100644 node_modules/lodash/unionBy.js delete mode 100644 node_modules/lodash/unionWith.js delete mode 100644 node_modules/lodash/uniq.js delete mode 100644 node_modules/lodash/uniqBy.js delete mode 100644 node_modules/lodash/uniqWith.js delete mode 100644 node_modules/lodash/uniqueId.js delete mode 100644 node_modules/lodash/unset.js delete mode 100644 node_modules/lodash/unzip.js delete mode 100644 node_modules/lodash/unzipWith.js delete mode 100644 node_modules/lodash/update.js delete mode 100644 node_modules/lodash/updateWith.js delete mode 100644 node_modules/lodash/upperCase.js delete mode 100644 node_modules/lodash/upperFirst.js delete mode 100644 node_modules/lodash/util.js delete mode 100644 node_modules/lodash/value.js delete mode 100644 node_modules/lodash/valueOf.js delete mode 100644 node_modules/lodash/values.js delete mode 100644 node_modules/lodash/valuesIn.js delete mode 100644 node_modules/lodash/without.js delete mode 100644 node_modules/lodash/words.js delete mode 100644 node_modules/lodash/wrap.js delete mode 100644 node_modules/lodash/wrapperAt.js delete mode 100644 node_modules/lodash/wrapperChain.js delete mode 100644 node_modules/lodash/wrapperLodash.js delete mode 100644 node_modules/lodash/wrapperReverse.js delete mode 100644 node_modules/lodash/wrapperValue.js delete mode 100644 node_modules/lodash/xor.js delete mode 100644 node_modules/lodash/xorBy.js delete mode 100644 node_modules/lodash/xorWith.js delete mode 100644 node_modules/lodash/zip.js delete mode 100644 node_modules/lodash/zipObject.js delete mode 100644 node_modules/lodash/zipObjectDeep.js delete mode 100644 node_modules/lodash/zipWith.js delete mode 100644 node_modules/strip-bom/index.js delete mode 100644 node_modules/strip-bom/license delete mode 100644 node_modules/strip-bom/package.json delete mode 100644 node_modules/strip-bom/readme.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..07f43b8 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +data/* \ No newline at end of file diff --git a/node_modules/.bin/csvtojson b/node_modules/.bin/csvtojson deleted file mode 120000 index f6c6cfe..0000000 --- a/node_modules/.bin/csvtojson +++ /dev/null @@ -1 +0,0 @@ -../csvtojson/bin/csvtojson \ No newline at end of file diff --git a/node_modules/.bin/json2csv b/node_modules/.bin/json2csv deleted file mode 120000 index 2eed657..0000000 --- a/node_modules/.bin/json2csv +++ /dev/null @@ -1 +0,0 @@ -../json2csv/bin/json2csv.js \ No newline at end of file diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json deleted file mode 100644 index d614d3a..0000000 --- a/node_modules/.package-lock.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "name": "costar-data-ingest", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/csvtojson": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/csvtojson/-/csvtojson-2.0.10.tgz", - "integrity": "sha512-lUWFxGKyhraKCW8Qghz6Z0f2l/PqB1W3AO0HKJzGIQ5JRSlR651ekJDiGJbBT4sRNNv5ddnSGVEnsxP9XRCVpQ==", - "dependencies": { - "bluebird": "^3.5.1", - "lodash": "^4.17.3", - "strip-bom": "^2.0.0" - }, - "bin": { - "csvtojson": "bin/csvtojson" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" - }, - "node_modules/json2csv": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/json2csv/-/json2csv-5.0.7.tgz", - "integrity": "sha512-YRZbUnyaJZLZUJSRi2G/MqahCyRv9n/ds+4oIetjDF3jWQA7AG7iSeKTiZiCNqtMZM7HDyt0e/W6lEnoGEmMGA==", - "dependencies": { - "commander": "^6.1.0", - "jsonparse": "^1.3.1", - "lodash.get": "^4.4.2" - }, - "bin": { - "json2csv": "bin/json2csv.js" - }, - "engines": { - "node": ">= 10", - "npm": ">= 6.13.0" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" - }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - } - } -} diff --git a/node_modules/bluebird/LICENSE b/node_modules/bluebird/LICENSE deleted file mode 100644 index b24e635..0000000 --- a/node_modules/bluebird/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013-2018 Petka Antonov - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/bluebird/README.md b/node_modules/bluebird/README.md deleted file mode 100644 index 7c1dd66..0000000 --- a/node_modules/bluebird/README.md +++ /dev/null @@ -1,57 +0,0 @@ - - Promises/A+ logo - - - -[![Build Status](https://travis-ci.org/petkaantonov/bluebird.svg?branch=master)](https://travis-ci.org/petkaantonov/bluebird) -[![coverage-98%](https://img.shields.io/badge/coverage-98%25-brightgreen.svg?style=flat)](http://petkaantonov.github.io/bluebird/coverage/debug/index.html) - -**Got a question?** Join us on [stackoverflow](http://stackoverflow.com/questions/tagged/bluebird), the [mailing list](https://groups.google.com/forum/#!forum/bluebird-js) or chat on [IRC](https://webchat.freenode.net/?channels=#promises) - -# Introduction - -Bluebird is a fully featured promise library with focus on innovative features and performance - -See the [**bluebird website**](http://bluebirdjs.com/docs/getting-started.html) for further documentation, references and instructions. See the [**API reference**](http://bluebirdjs.com/docs/api-reference.html) here. - -For bluebird 2.x documentation and files, see the [2.x tree](https://github.com/petkaantonov/bluebird/tree/2.x). - -### Note - -Promises in Node.js 10 are significantly faster than before. Bluebird still includes a lot of features like cancellation, iteration methods and warnings that native promises don't. If you are using Bluebird for performance rather than for those - please consider giving native promises a shot and running the benchmarks yourself. - -# Questions and issues - -The [github issue tracker](https://github.com/petkaantonov/bluebird/issues) is **_only_** for bug reports and feature requests. Anything else, such as questions for help in using the library, should be posted in [StackOverflow](http://stackoverflow.com/questions/tagged/bluebird) under tags `promise` and `bluebird`. - - - -## Thanks - -Thanks to BrowserStack for providing us with a free account which lets us support old browsers like IE8. - -# License - -The MIT License (MIT) - -Copyright (c) 2013-2019 Petka Antonov - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/node_modules/bluebird/changelog.md b/node_modules/bluebird/changelog.md deleted file mode 100644 index 73b2eb6..0000000 --- a/node_modules/bluebird/changelog.md +++ /dev/null @@ -1 +0,0 @@ -[http://bluebirdjs.com/docs/changelog.html](http://bluebirdjs.com/docs/changelog.html) diff --git a/node_modules/bluebird/js/browser/bluebird.core.js b/node_modules/bluebird/js/browser/bluebird.core.js deleted file mode 100644 index 24a8bf2..0000000 --- a/node_modules/bluebird/js/browser/bluebird.core.js +++ /dev/null @@ -1,3914 +0,0 @@ -/* @preserve - * The MIT License (MIT) - * - * Copyright (c) 2013-2018 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -/** - * bluebird build version 3.7.2 - * Features enabled: core - * Features disabled: race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each -*/ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_=="function"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_=="function"&&_dereq_;for(var o=0;o 0) { - _drainQueueStep(queue); - } -} - -function _drainQueueStep(queue) { - var fn = queue.shift(); - if (typeof fn !== "function") { - fn._settlePromises(); - } else { - var receiver = queue.shift(); - var arg = queue.shift(); - fn.call(receiver, arg); - } -} - -Async.prototype._drainQueues = function () { - _drainQueue(this._normalQueue); - this._reset(); - this._haveDrainedQueues = true; - _drainQueue(this._lateQueue); -}; - -Async.prototype._queueTick = function () { - if (!this._isTickUsed) { - this._isTickUsed = true; - this._schedule(this.drainQueues); - } -}; - -Async.prototype._reset = function () { - this._isTickUsed = false; -}; - -module.exports = Async; -module.exports.firstLineError = firstLineError; - -},{"./queue":17,"./schedule":18}],2:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) { -var calledBind = false; -var rejectThis = function(_, e) { - this._reject(e); -}; - -var targetRejected = function(e, context) { - context.promiseRejectionQueued = true; - context.bindingPromise._then(rejectThis, rejectThis, null, this, e); -}; - -var bindingResolved = function(thisArg, context) { - if (((this._bitField & 50397184) === 0)) { - this._resolveCallback(context.target); - } -}; - -var bindingRejected = function(e, context) { - if (!context.promiseRejectionQueued) this._reject(e); -}; - -Promise.prototype.bind = function (thisArg) { - if (!calledBind) { - calledBind = true; - Promise.prototype._propagateFrom = debug.propagateFromFunction(); - Promise.prototype._boundValue = debug.boundValueFunction(); - } - var maybePromise = tryConvertToPromise(thisArg); - var ret = new Promise(INTERNAL); - ret._propagateFrom(this, 1); - var target = this._target(); - ret._setBoundTo(maybePromise); - if (maybePromise instanceof Promise) { - var context = { - promiseRejectionQueued: false, - promise: ret, - target: target, - bindingPromise: maybePromise - }; - target._then(INTERNAL, targetRejected, undefined, ret, context); - maybePromise._then( - bindingResolved, bindingRejected, undefined, ret, context); - ret._setOnCancel(maybePromise); - } else { - ret._resolveCallback(target); - } - return ret; -}; - -Promise.prototype._setBoundTo = function (obj) { - if (obj !== undefined) { - this._bitField = this._bitField | 2097152; - this._boundTo = obj; - } else { - this._bitField = this._bitField & (~2097152); - } -}; - -Promise.prototype._isBound = function () { - return (this._bitField & 2097152) === 2097152; -}; - -Promise.bind = function (thisArg, value) { - return Promise.resolve(value).bind(thisArg); -}; -}; - -},{}],3:[function(_dereq_,module,exports){ -"use strict"; -var old; -if (typeof Promise !== "undefined") old = Promise; -function noConflict() { - try { if (Promise === bluebird) Promise = old; } - catch (e) {} - return bluebird; -} -var bluebird = _dereq_("./promise")(); -bluebird.noConflict = noConflict; -module.exports = bluebird; - -},{"./promise":15}],4:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, PromiseArray, apiRejection, debug) { -var util = _dereq_("./util"); -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var async = Promise._async; - -Promise.prototype["break"] = Promise.prototype.cancel = function() { - if (!debug.cancellation()) return this._warn("cancellation is disabled"); - - var promise = this; - var child = promise; - while (promise._isCancellable()) { - if (!promise._cancelBy(child)) { - if (child._isFollowing()) { - child._followee().cancel(); - } else { - child._cancelBranched(); - } - break; - } - - var parent = promise._cancellationParent; - if (parent == null || !parent._isCancellable()) { - if (promise._isFollowing()) { - promise._followee().cancel(); - } else { - promise._cancelBranched(); - } - break; - } else { - if (promise._isFollowing()) promise._followee().cancel(); - promise._setWillBeCancelled(); - child = promise; - promise = parent; - } - } -}; - -Promise.prototype._branchHasCancelled = function() { - this._branchesRemainingToCancel--; -}; - -Promise.prototype._enoughBranchesHaveCancelled = function() { - return this._branchesRemainingToCancel === undefined || - this._branchesRemainingToCancel <= 0; -}; - -Promise.prototype._cancelBy = function(canceller) { - if (canceller === this) { - this._branchesRemainingToCancel = 0; - this._invokeOnCancel(); - return true; - } else { - this._branchHasCancelled(); - if (this._enoughBranchesHaveCancelled()) { - this._invokeOnCancel(); - return true; - } - } - return false; -}; - -Promise.prototype._cancelBranched = function() { - if (this._enoughBranchesHaveCancelled()) { - this._cancel(); - } -}; - -Promise.prototype._cancel = function() { - if (!this._isCancellable()) return; - this._setCancelled(); - async.invoke(this._cancelPromises, this, undefined); -}; - -Promise.prototype._cancelPromises = function() { - if (this._length() > 0) this._settlePromises(); -}; - -Promise.prototype._unsetOnCancel = function() { - this._onCancelField = undefined; -}; - -Promise.prototype._isCancellable = function() { - return this.isPending() && !this._isCancelled(); -}; - -Promise.prototype.isCancellable = function() { - return this.isPending() && !this.isCancelled(); -}; - -Promise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) { - if (util.isArray(onCancelCallback)) { - for (var i = 0; i < onCancelCallback.length; ++i) { - this._doInvokeOnCancel(onCancelCallback[i], internalOnly); - } - } else if (onCancelCallback !== undefined) { - if (typeof onCancelCallback === "function") { - if (!internalOnly) { - var e = tryCatch(onCancelCallback).call(this._boundValue()); - if (e === errorObj) { - this._attachExtraTrace(e.e); - async.throwLater(e.e); - } - } - } else { - onCancelCallback._resultCancelled(this); - } - } -}; - -Promise.prototype._invokeOnCancel = function() { - var onCancelCallback = this._onCancel(); - this._unsetOnCancel(); - async.invoke(this._doInvokeOnCancel, this, onCancelCallback); -}; - -Promise.prototype._invokeInternalOnCancel = function() { - if (this._isCancellable()) { - this._doInvokeOnCancel(this._onCancel(), true); - this._unsetOnCancel(); - } -}; - -Promise.prototype._resultCancelled = function() { - this.cancel(); -}; - -}; - -},{"./util":21}],5:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(NEXT_FILTER) { -var util = _dereq_("./util"); -var getKeys = _dereq_("./es5").keys; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; - -function catchFilter(instances, cb, promise) { - return function(e) { - var boundTo = promise._boundValue(); - predicateLoop: for (var i = 0; i < instances.length; ++i) { - var item = instances[i]; - - if (item === Error || - (item != null && item.prototype instanceof Error)) { - if (e instanceof item) { - return tryCatch(cb).call(boundTo, e); - } - } else if (typeof item === "function") { - var matchesPredicate = tryCatch(item).call(boundTo, e); - if (matchesPredicate === errorObj) { - return matchesPredicate; - } else if (matchesPredicate) { - return tryCatch(cb).call(boundTo, e); - } - } else if (util.isObject(e)) { - var keys = getKeys(item); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - if (item[key] != e[key]) { - continue predicateLoop; - } - } - return tryCatch(cb).call(boundTo, e); - } - } - return NEXT_FILTER; - }; -} - -return catchFilter; -}; - -},{"./es5":10,"./util":21}],6:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -var longStackTraces = false; -var contextStack = []; - -Promise.prototype._promiseCreated = function() {}; -Promise.prototype._pushContext = function() {}; -Promise.prototype._popContext = function() {return null;}; -Promise._peekContext = Promise.prototype._peekContext = function() {}; - -function Context() { - this._trace = new Context.CapturedTrace(peekContext()); -} -Context.prototype._pushContext = function () { - if (this._trace !== undefined) { - this._trace._promiseCreated = null; - contextStack.push(this._trace); - } -}; - -Context.prototype._popContext = function () { - if (this._trace !== undefined) { - var trace = contextStack.pop(); - var ret = trace._promiseCreated; - trace._promiseCreated = null; - return ret; - } - return null; -}; - -function createContext() { - if (longStackTraces) return new Context(); -} - -function peekContext() { - var lastIndex = contextStack.length - 1; - if (lastIndex >= 0) { - return contextStack[lastIndex]; - } - return undefined; -} -Context.CapturedTrace = null; -Context.create = createContext; -Context.deactivateLongStackTraces = function() {}; -Context.activateLongStackTraces = function() { - var Promise_pushContext = Promise.prototype._pushContext; - var Promise_popContext = Promise.prototype._popContext; - var Promise_PeekContext = Promise._peekContext; - var Promise_peekContext = Promise.prototype._peekContext; - var Promise_promiseCreated = Promise.prototype._promiseCreated; - Context.deactivateLongStackTraces = function() { - Promise.prototype._pushContext = Promise_pushContext; - Promise.prototype._popContext = Promise_popContext; - Promise._peekContext = Promise_PeekContext; - Promise.prototype._peekContext = Promise_peekContext; - Promise.prototype._promiseCreated = Promise_promiseCreated; - longStackTraces = false; - }; - longStackTraces = true; - Promise.prototype._pushContext = Context.prototype._pushContext; - Promise.prototype._popContext = Context.prototype._popContext; - Promise._peekContext = Promise.prototype._peekContext = peekContext; - Promise.prototype._promiseCreated = function() { - var ctx = this._peekContext(); - if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this; - }; -}; -return Context; -}; - -},{}],7:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, Context, - enableAsyncHooks, disableAsyncHooks) { -var async = Promise._async; -var Warning = _dereq_("./errors").Warning; -var util = _dereq_("./util"); -var es5 = _dereq_("./es5"); -var canAttachTrace = util.canAttachTrace; -var unhandledRejectionHandled; -var possiblyUnhandledRejection; -var bluebirdFramePattern = - /[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/; -var nodeFramePattern = /\((?:timers\.js):\d+:\d+\)/; -var parseLinePattern = /[\/<\(](.+?):(\d+):(\d+)\)?\s*$/; -var stackFramePattern = null; -var formatStack = null; -var indentStackFrames = false; -var printWarning; -var debugging = !!(util.env("BLUEBIRD_DEBUG") != 0 && - (true || - util.env("BLUEBIRD_DEBUG") || - util.env("NODE_ENV") === "development")); - -var warnings = !!(util.env("BLUEBIRD_WARNINGS") != 0 && - (debugging || util.env("BLUEBIRD_WARNINGS"))); - -var longStackTraces = !!(util.env("BLUEBIRD_LONG_STACK_TRACES") != 0 && - (debugging || util.env("BLUEBIRD_LONG_STACK_TRACES"))); - -var wForgottenReturn = util.env("BLUEBIRD_W_FORGOTTEN_RETURN") != 0 && - (warnings || !!util.env("BLUEBIRD_W_FORGOTTEN_RETURN")); - -var deferUnhandledRejectionCheck; -(function() { - var promises = []; - - function unhandledRejectionCheck() { - for (var i = 0; i < promises.length; ++i) { - promises[i]._notifyUnhandledRejection(); - } - unhandledRejectionClear(); - } - - function unhandledRejectionClear() { - promises.length = 0; - } - - deferUnhandledRejectionCheck = function(promise) { - promises.push(promise); - setTimeout(unhandledRejectionCheck, 1); - }; - - es5.defineProperty(Promise, "_unhandledRejectionCheck", { - value: unhandledRejectionCheck - }); - es5.defineProperty(Promise, "_unhandledRejectionClear", { - value: unhandledRejectionClear - }); -})(); - -Promise.prototype.suppressUnhandledRejections = function() { - var target = this._target(); - target._bitField = ((target._bitField & (~1048576)) | - 524288); -}; - -Promise.prototype._ensurePossibleRejectionHandled = function () { - if ((this._bitField & 524288) !== 0) return; - this._setRejectionIsUnhandled(); - deferUnhandledRejectionCheck(this); -}; - -Promise.prototype._notifyUnhandledRejectionIsHandled = function () { - fireRejectionEvent("rejectionHandled", - unhandledRejectionHandled, undefined, this); -}; - -Promise.prototype._setReturnedNonUndefined = function() { - this._bitField = this._bitField | 268435456; -}; - -Promise.prototype._returnedNonUndefined = function() { - return (this._bitField & 268435456) !== 0; -}; - -Promise.prototype._notifyUnhandledRejection = function () { - if (this._isRejectionUnhandled()) { - var reason = this._settledValue(); - this._setUnhandledRejectionIsNotified(); - fireRejectionEvent("unhandledRejection", - possiblyUnhandledRejection, reason, this); - } -}; - -Promise.prototype._setUnhandledRejectionIsNotified = function () { - this._bitField = this._bitField | 262144; -}; - -Promise.prototype._unsetUnhandledRejectionIsNotified = function () { - this._bitField = this._bitField & (~262144); -}; - -Promise.prototype._isUnhandledRejectionNotified = function () { - return (this._bitField & 262144) > 0; -}; - -Promise.prototype._setRejectionIsUnhandled = function () { - this._bitField = this._bitField | 1048576; -}; - -Promise.prototype._unsetRejectionIsUnhandled = function () { - this._bitField = this._bitField & (~1048576); - if (this._isUnhandledRejectionNotified()) { - this._unsetUnhandledRejectionIsNotified(); - this._notifyUnhandledRejectionIsHandled(); - } -}; - -Promise.prototype._isRejectionUnhandled = function () { - return (this._bitField & 1048576) > 0; -}; - -Promise.prototype._warn = function(message, shouldUseOwnTrace, promise) { - return warn(message, shouldUseOwnTrace, promise || this); -}; - -Promise.onPossiblyUnhandledRejection = function (fn) { - var context = Promise._getContext(); - possiblyUnhandledRejection = util.contextBind(context, fn); -}; - -Promise.onUnhandledRejectionHandled = function (fn) { - var context = Promise._getContext(); - unhandledRejectionHandled = util.contextBind(context, fn); -}; - -var disableLongStackTraces = function() {}; -Promise.longStackTraces = function () { - if (async.haveItemsQueued() && !config.longStackTraces) { - throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - if (!config.longStackTraces && longStackTracesIsSupported()) { - var Promise_captureStackTrace = Promise.prototype._captureStackTrace; - var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace; - var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace; - config.longStackTraces = true; - disableLongStackTraces = function() { - if (async.haveItemsQueued() && !config.longStackTraces) { - throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - Promise.prototype._captureStackTrace = Promise_captureStackTrace; - Promise.prototype._attachExtraTrace = Promise_attachExtraTrace; - Promise.prototype._dereferenceTrace = Promise_dereferenceTrace; - Context.deactivateLongStackTraces(); - config.longStackTraces = false; - }; - Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace; - Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace; - Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace; - Context.activateLongStackTraces(); - } -}; - -Promise.hasLongStackTraces = function () { - return config.longStackTraces && longStackTracesIsSupported(); -}; - - -var legacyHandlers = { - unhandledrejection: { - before: function() { - var ret = util.global.onunhandledrejection; - util.global.onunhandledrejection = null; - return ret; - }, - after: function(fn) { - util.global.onunhandledrejection = fn; - } - }, - rejectionhandled: { - before: function() { - var ret = util.global.onrejectionhandled; - util.global.onrejectionhandled = null; - return ret; - }, - after: function(fn) { - util.global.onrejectionhandled = fn; - } - } -}; - -var fireDomEvent = (function() { - var dispatch = function(legacy, e) { - if (legacy) { - var fn; - try { - fn = legacy.before(); - return !util.global.dispatchEvent(e); - } finally { - legacy.after(fn); - } - } else { - return !util.global.dispatchEvent(e); - } - }; - try { - if (typeof CustomEvent === "function") { - var event = new CustomEvent("CustomEvent"); - util.global.dispatchEvent(event); - return function(name, event) { - name = name.toLowerCase(); - var eventData = { - detail: event, - cancelable: true - }; - var domEvent = new CustomEvent(name, eventData); - es5.defineProperty( - domEvent, "promise", {value: event.promise}); - es5.defineProperty( - domEvent, "reason", {value: event.reason}); - - return dispatch(legacyHandlers[name], domEvent); - }; - } else if (typeof Event === "function") { - var event = new Event("CustomEvent"); - util.global.dispatchEvent(event); - return function(name, event) { - name = name.toLowerCase(); - var domEvent = new Event(name, { - cancelable: true - }); - domEvent.detail = event; - es5.defineProperty(domEvent, "promise", {value: event.promise}); - es5.defineProperty(domEvent, "reason", {value: event.reason}); - return dispatch(legacyHandlers[name], domEvent); - }; - } else { - var event = document.createEvent("CustomEvent"); - event.initCustomEvent("testingtheevent", false, true, {}); - util.global.dispatchEvent(event); - return function(name, event) { - name = name.toLowerCase(); - var domEvent = document.createEvent("CustomEvent"); - domEvent.initCustomEvent(name, false, true, - event); - return dispatch(legacyHandlers[name], domEvent); - }; - } - } catch (e) {} - return function() { - return false; - }; -})(); - -var fireGlobalEvent = (function() { - if (util.isNode) { - return function() { - return process.emit.apply(process, arguments); - }; - } else { - if (!util.global) { - return function() { - return false; - }; - } - return function(name) { - var methodName = "on" + name.toLowerCase(); - var method = util.global[methodName]; - if (!method) return false; - method.apply(util.global, [].slice.call(arguments, 1)); - return true; - }; - } -})(); - -function generatePromiseLifecycleEventObject(name, promise) { - return {promise: promise}; -} - -var eventToObjectGenerator = { - promiseCreated: generatePromiseLifecycleEventObject, - promiseFulfilled: generatePromiseLifecycleEventObject, - promiseRejected: generatePromiseLifecycleEventObject, - promiseResolved: generatePromiseLifecycleEventObject, - promiseCancelled: generatePromiseLifecycleEventObject, - promiseChained: function(name, promise, child) { - return {promise: promise, child: child}; - }, - warning: function(name, warning) { - return {warning: warning}; - }, - unhandledRejection: function (name, reason, promise) { - return {reason: reason, promise: promise}; - }, - rejectionHandled: generatePromiseLifecycleEventObject -}; - -var activeFireEvent = function (name) { - var globalEventFired = false; - try { - globalEventFired = fireGlobalEvent.apply(null, arguments); - } catch (e) { - async.throwLater(e); - globalEventFired = true; - } - - var domEventFired = false; - try { - domEventFired = fireDomEvent(name, - eventToObjectGenerator[name].apply(null, arguments)); - } catch (e) { - async.throwLater(e); - domEventFired = true; - } - - return domEventFired || globalEventFired; -}; - -Promise.config = function(opts) { - opts = Object(opts); - if ("longStackTraces" in opts) { - if (opts.longStackTraces) { - Promise.longStackTraces(); - } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) { - disableLongStackTraces(); - } - } - if ("warnings" in opts) { - var warningsOption = opts.warnings; - config.warnings = !!warningsOption; - wForgottenReturn = config.warnings; - - if (util.isObject(warningsOption)) { - if ("wForgottenReturn" in warningsOption) { - wForgottenReturn = !!warningsOption.wForgottenReturn; - } - } - } - if ("cancellation" in opts && opts.cancellation && !config.cancellation) { - if (async.haveItemsQueued()) { - throw new Error( - "cannot enable cancellation after promises are in use"); - } - Promise.prototype._clearCancellationData = - cancellationClearCancellationData; - Promise.prototype._propagateFrom = cancellationPropagateFrom; - Promise.prototype._onCancel = cancellationOnCancel; - Promise.prototype._setOnCancel = cancellationSetOnCancel; - Promise.prototype._attachCancellationCallback = - cancellationAttachCancellationCallback; - Promise.prototype._execute = cancellationExecute; - propagateFromFunction = cancellationPropagateFrom; - config.cancellation = true; - } - if ("monitoring" in opts) { - if (opts.monitoring && !config.monitoring) { - config.monitoring = true; - Promise.prototype._fireEvent = activeFireEvent; - } else if (!opts.monitoring && config.monitoring) { - config.monitoring = false; - Promise.prototype._fireEvent = defaultFireEvent; - } - } - if ("asyncHooks" in opts && util.nodeSupportsAsyncResource) { - var prev = config.asyncHooks; - var cur = !!opts.asyncHooks; - if (prev !== cur) { - config.asyncHooks = cur; - if (cur) { - enableAsyncHooks(); - } else { - disableAsyncHooks(); - } - } - } - return Promise; -}; - -function defaultFireEvent() { return false; } - -Promise.prototype._fireEvent = defaultFireEvent; -Promise.prototype._execute = function(executor, resolve, reject) { - try { - executor(resolve, reject); - } catch (e) { - return e; - } -}; -Promise.prototype._onCancel = function () {}; -Promise.prototype._setOnCancel = function (handler) { ; }; -Promise.prototype._attachCancellationCallback = function(onCancel) { - ; -}; -Promise.prototype._captureStackTrace = function () {}; -Promise.prototype._attachExtraTrace = function () {}; -Promise.prototype._dereferenceTrace = function () {}; -Promise.prototype._clearCancellationData = function() {}; -Promise.prototype._propagateFrom = function (parent, flags) { - ; - ; -}; - -function cancellationExecute(executor, resolve, reject) { - var promise = this; - try { - executor(resolve, reject, function(onCancel) { - if (typeof onCancel !== "function") { - throw new TypeError("onCancel must be a function, got: " + - util.toString(onCancel)); - } - promise._attachCancellationCallback(onCancel); - }); - } catch (e) { - return e; - } -} - -function cancellationAttachCancellationCallback(onCancel) { - if (!this._isCancellable()) return this; - - var previousOnCancel = this._onCancel(); - if (previousOnCancel !== undefined) { - if (util.isArray(previousOnCancel)) { - previousOnCancel.push(onCancel); - } else { - this._setOnCancel([previousOnCancel, onCancel]); - } - } else { - this._setOnCancel(onCancel); - } -} - -function cancellationOnCancel() { - return this._onCancelField; -} - -function cancellationSetOnCancel(onCancel) { - this._onCancelField = onCancel; -} - -function cancellationClearCancellationData() { - this._cancellationParent = undefined; - this._onCancelField = undefined; -} - -function cancellationPropagateFrom(parent, flags) { - if ((flags & 1) !== 0) { - this._cancellationParent = parent; - var branchesRemainingToCancel = parent._branchesRemainingToCancel; - if (branchesRemainingToCancel === undefined) { - branchesRemainingToCancel = 0; - } - parent._branchesRemainingToCancel = branchesRemainingToCancel + 1; - } - if ((flags & 2) !== 0 && parent._isBound()) { - this._setBoundTo(parent._boundTo); - } -} - -function bindingPropagateFrom(parent, flags) { - if ((flags & 2) !== 0 && parent._isBound()) { - this._setBoundTo(parent._boundTo); - } -} -var propagateFromFunction = bindingPropagateFrom; - -function boundValueFunction() { - var ret = this._boundTo; - if (ret !== undefined) { - if (ret instanceof Promise) { - if (ret.isFulfilled()) { - return ret.value(); - } else { - return undefined; - } - } - } - return ret; -} - -function longStackTracesCaptureStackTrace() { - this._trace = new CapturedTrace(this._peekContext()); -} - -function longStackTracesAttachExtraTrace(error, ignoreSelf) { - if (canAttachTrace(error)) { - var trace = this._trace; - if (trace !== undefined) { - if (ignoreSelf) trace = trace._parent; - } - if (trace !== undefined) { - trace.attachExtraTrace(error); - } else if (!error.__stackCleaned__) { - var parsed = parseStackAndMessage(error); - util.notEnumerableProp(error, "stack", - parsed.message + "\n" + parsed.stack.join("\n")); - util.notEnumerableProp(error, "__stackCleaned__", true); - } - } -} - -function longStackTracesDereferenceTrace() { - this._trace = undefined; -} - -function checkForgottenReturns(returnValue, promiseCreated, name, promise, - parent) { - if (returnValue === undefined && promiseCreated !== null && - wForgottenReturn) { - if (parent !== undefined && parent._returnedNonUndefined()) return; - if ((promise._bitField & 65535) === 0) return; - - if (name) name = name + " "; - var handlerLine = ""; - var creatorLine = ""; - if (promiseCreated._trace) { - var traceLines = promiseCreated._trace.stack.split("\n"); - var stack = cleanStack(traceLines); - for (var i = stack.length - 1; i >= 0; --i) { - var line = stack[i]; - if (!nodeFramePattern.test(line)) { - var lineMatches = line.match(parseLinePattern); - if (lineMatches) { - handlerLine = "at " + lineMatches[1] + - ":" + lineMatches[2] + ":" + lineMatches[3] + " "; - } - break; - } - } - - if (stack.length > 0) { - var firstUserLine = stack[0]; - for (var i = 0; i < traceLines.length; ++i) { - - if (traceLines[i] === firstUserLine) { - if (i > 0) { - creatorLine = "\n" + traceLines[i - 1]; - } - break; - } - } - - } - } - var msg = "a promise was created in a " + name + - "handler " + handlerLine + "but was not returned from it, " + - "see http://goo.gl/rRqMUw" + - creatorLine; - promise._warn(msg, true, promiseCreated); - } -} - -function deprecated(name, replacement) { - var message = name + - " is deprecated and will be removed in a future version."; - if (replacement) message += " Use " + replacement + " instead."; - return warn(message); -} - -function warn(message, shouldUseOwnTrace, promise) { - if (!config.warnings) return; - var warning = new Warning(message); - var ctx; - if (shouldUseOwnTrace) { - promise._attachExtraTrace(warning); - } else if (config.longStackTraces && (ctx = Promise._peekContext())) { - ctx.attachExtraTrace(warning); - } else { - var parsed = parseStackAndMessage(warning); - warning.stack = parsed.message + "\n" + parsed.stack.join("\n"); - } - - if (!activeFireEvent("warning", warning)) { - formatAndLogError(warning, "", true); - } -} - -function reconstructStack(message, stacks) { - for (var i = 0; i < stacks.length - 1; ++i) { - stacks[i].push("From previous event:"); - stacks[i] = stacks[i].join("\n"); - } - if (i < stacks.length) { - stacks[i] = stacks[i].join("\n"); - } - return message + "\n" + stacks.join("\n"); -} - -function removeDuplicateOrEmptyJumps(stacks) { - for (var i = 0; i < stacks.length; ++i) { - if (stacks[i].length === 0 || - ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) { - stacks.splice(i, 1); - i--; - } - } -} - -function removeCommonRoots(stacks) { - var current = stacks[0]; - for (var i = 1; i < stacks.length; ++i) { - var prev = stacks[i]; - var currentLastIndex = current.length - 1; - var currentLastLine = current[currentLastIndex]; - var commonRootMeetPoint = -1; - - for (var j = prev.length - 1; j >= 0; --j) { - if (prev[j] === currentLastLine) { - commonRootMeetPoint = j; - break; - } - } - - for (var j = commonRootMeetPoint; j >= 0; --j) { - var line = prev[j]; - if (current[currentLastIndex] === line) { - current.pop(); - currentLastIndex--; - } else { - break; - } - } - current = prev; - } -} - -function cleanStack(stack) { - var ret = []; - for (var i = 0; i < stack.length; ++i) { - var line = stack[i]; - var isTraceLine = " (No stack trace)" === line || - stackFramePattern.test(line); - var isInternalFrame = isTraceLine && shouldIgnore(line); - if (isTraceLine && !isInternalFrame) { - if (indentStackFrames && line.charAt(0) !== " ") { - line = " " + line; - } - ret.push(line); - } - } - return ret; -} - -function stackFramesAsArray(error) { - var stack = error.stack.replace(/\s+$/g, "").split("\n"); - for (var i = 0; i < stack.length; ++i) { - var line = stack[i]; - if (" (No stack trace)" === line || stackFramePattern.test(line)) { - break; - } - } - if (i > 0 && error.name != "SyntaxError") { - stack = stack.slice(i); - } - return stack; -} - -function parseStackAndMessage(error) { - var stack = error.stack; - var message = error.toString(); - stack = typeof stack === "string" && stack.length > 0 - ? stackFramesAsArray(error) : [" (No stack trace)"]; - return { - message: message, - stack: error.name == "SyntaxError" ? stack : cleanStack(stack) - }; -} - -function formatAndLogError(error, title, isSoft) { - if (typeof console !== "undefined") { - var message; - if (util.isObject(error)) { - var stack = error.stack; - message = title + formatStack(stack, error); - } else { - message = title + String(error); - } - if (typeof printWarning === "function") { - printWarning(message, isSoft); - } else if (typeof console.log === "function" || - typeof console.log === "object") { - console.log(message); - } - } -} - -function fireRejectionEvent(name, localHandler, reason, promise) { - var localEventFired = false; - try { - if (typeof localHandler === "function") { - localEventFired = true; - if (name === "rejectionHandled") { - localHandler(promise); - } else { - localHandler(reason, promise); - } - } - } catch (e) { - async.throwLater(e); - } - - if (name === "unhandledRejection") { - if (!activeFireEvent(name, reason, promise) && !localEventFired) { - formatAndLogError(reason, "Unhandled rejection "); - } - } else { - activeFireEvent(name, promise); - } -} - -function formatNonError(obj) { - var str; - if (typeof obj === "function") { - str = "[function " + - (obj.name || "anonymous") + - "]"; - } else { - str = obj && typeof obj.toString === "function" - ? obj.toString() : util.toString(obj); - var ruselessToString = /\[object [a-zA-Z0-9$_]+\]/; - if (ruselessToString.test(str)) { - try { - var newStr = JSON.stringify(obj); - str = newStr; - } - catch(e) { - - } - } - if (str.length === 0) { - str = "(empty array)"; - } - } - return ("(<" + snip(str) + ">, no stack trace)"); -} - -function snip(str) { - var maxChars = 41; - if (str.length < maxChars) { - return str; - } - return str.substr(0, maxChars - 3) + "..."; -} - -function longStackTracesIsSupported() { - return typeof captureStackTrace === "function"; -} - -var shouldIgnore = function() { return false; }; -var parseLineInfoRegex = /[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/; -function parseLineInfo(line) { - var matches = line.match(parseLineInfoRegex); - if (matches) { - return { - fileName: matches[1], - line: parseInt(matches[2], 10) - }; - } -} - -function setBounds(firstLineError, lastLineError) { - if (!longStackTracesIsSupported()) return; - var firstStackLines = (firstLineError.stack || "").split("\n"); - var lastStackLines = (lastLineError.stack || "").split("\n"); - var firstIndex = -1; - var lastIndex = -1; - var firstFileName; - var lastFileName; - for (var i = 0; i < firstStackLines.length; ++i) { - var result = parseLineInfo(firstStackLines[i]); - if (result) { - firstFileName = result.fileName; - firstIndex = result.line; - break; - } - } - for (var i = 0; i < lastStackLines.length; ++i) { - var result = parseLineInfo(lastStackLines[i]); - if (result) { - lastFileName = result.fileName; - lastIndex = result.line; - break; - } - } - if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName || - firstFileName !== lastFileName || firstIndex >= lastIndex) { - return; - } - - shouldIgnore = function(line) { - if (bluebirdFramePattern.test(line)) return true; - var info = parseLineInfo(line); - if (info) { - if (info.fileName === firstFileName && - (firstIndex <= info.line && info.line <= lastIndex)) { - return true; - } - } - return false; - }; -} - -function CapturedTrace(parent) { - this._parent = parent; - this._promisesCreated = 0; - var length = this._length = 1 + (parent === undefined ? 0 : parent._length); - captureStackTrace(this, CapturedTrace); - if (length > 32) this.uncycle(); -} -util.inherits(CapturedTrace, Error); -Context.CapturedTrace = CapturedTrace; - -CapturedTrace.prototype.uncycle = function() { - var length = this._length; - if (length < 2) return; - var nodes = []; - var stackToIndex = {}; - - for (var i = 0, node = this; node !== undefined; ++i) { - nodes.push(node); - node = node._parent; - } - length = this._length = i; - for (var i = length - 1; i >= 0; --i) { - var stack = nodes[i].stack; - if (stackToIndex[stack] === undefined) { - stackToIndex[stack] = i; - } - } - for (var i = 0; i < length; ++i) { - var currentStack = nodes[i].stack; - var index = stackToIndex[currentStack]; - if (index !== undefined && index !== i) { - if (index > 0) { - nodes[index - 1]._parent = undefined; - nodes[index - 1]._length = 1; - } - nodes[i]._parent = undefined; - nodes[i]._length = 1; - var cycleEdgeNode = i > 0 ? nodes[i - 1] : this; - - if (index < length - 1) { - cycleEdgeNode._parent = nodes[index + 1]; - cycleEdgeNode._parent.uncycle(); - cycleEdgeNode._length = - cycleEdgeNode._parent._length + 1; - } else { - cycleEdgeNode._parent = undefined; - cycleEdgeNode._length = 1; - } - var currentChildLength = cycleEdgeNode._length + 1; - for (var j = i - 2; j >= 0; --j) { - nodes[j]._length = currentChildLength; - currentChildLength++; - } - return; - } - } -}; - -CapturedTrace.prototype.attachExtraTrace = function(error) { - if (error.__stackCleaned__) return; - this.uncycle(); - var parsed = parseStackAndMessage(error); - var message = parsed.message; - var stacks = [parsed.stack]; - - var trace = this; - while (trace !== undefined) { - stacks.push(cleanStack(trace.stack.split("\n"))); - trace = trace._parent; - } - removeCommonRoots(stacks); - removeDuplicateOrEmptyJumps(stacks); - util.notEnumerableProp(error, "stack", reconstructStack(message, stacks)); - util.notEnumerableProp(error, "__stackCleaned__", true); -}; - -var captureStackTrace = (function stackDetection() { - var v8stackFramePattern = /^\s*at\s*/; - var v8stackFormatter = function(stack, error) { - if (typeof stack === "string") return stack; - - if (error.name !== undefined && - error.message !== undefined) { - return error.toString(); - } - return formatNonError(error); - }; - - if (typeof Error.stackTraceLimit === "number" && - typeof Error.captureStackTrace === "function") { - Error.stackTraceLimit += 6; - stackFramePattern = v8stackFramePattern; - formatStack = v8stackFormatter; - var captureStackTrace = Error.captureStackTrace; - - shouldIgnore = function(line) { - return bluebirdFramePattern.test(line); - }; - return function(receiver, ignoreUntil) { - Error.stackTraceLimit += 6; - captureStackTrace(receiver, ignoreUntil); - Error.stackTraceLimit -= 6; - }; - } - var err = new Error(); - - if (typeof err.stack === "string" && - err.stack.split("\n")[0].indexOf("stackDetection@") >= 0) { - stackFramePattern = /@/; - formatStack = v8stackFormatter; - indentStackFrames = true; - return function captureStackTrace(o) { - o.stack = new Error().stack; - }; - } - - var hasStackAfterThrow; - try { throw new Error(); } - catch(e) { - hasStackAfterThrow = ("stack" in e); - } - if (!("stack" in err) && hasStackAfterThrow && - typeof Error.stackTraceLimit === "number") { - stackFramePattern = v8stackFramePattern; - formatStack = v8stackFormatter; - return function captureStackTrace(o) { - Error.stackTraceLimit += 6; - try { throw new Error(); } - catch(e) { o.stack = e.stack; } - Error.stackTraceLimit -= 6; - }; - } - - formatStack = function(stack, error) { - if (typeof stack === "string") return stack; - - if ((typeof error === "object" || - typeof error === "function") && - error.name !== undefined && - error.message !== undefined) { - return error.toString(); - } - return formatNonError(error); - }; - - return null; - -})([]); - -if (typeof console !== "undefined" && typeof console.warn !== "undefined") { - printWarning = function (message) { - console.warn(message); - }; - if (util.isNode && process.stderr.isTTY) { - printWarning = function(message, isSoft) { - var color = isSoft ? "\u001b[33m" : "\u001b[31m"; - console.warn(color + message + "\u001b[0m\n"); - }; - } else if (!util.isNode && typeof (new Error().stack) === "string") { - printWarning = function(message, isSoft) { - console.warn("%c" + message, - isSoft ? "color: darkorange" : "color: red"); - }; - } -} - -var config = { - warnings: warnings, - longStackTraces: false, - cancellation: false, - monitoring: false, - asyncHooks: false -}; - -if (longStackTraces) Promise.longStackTraces(); - -return { - asyncHooks: function() { - return config.asyncHooks; - }, - longStackTraces: function() { - return config.longStackTraces; - }, - warnings: function() { - return config.warnings; - }, - cancellation: function() { - return config.cancellation; - }, - monitoring: function() { - return config.monitoring; - }, - propagateFromFunction: function() { - return propagateFromFunction; - }, - boundValueFunction: function() { - return boundValueFunction; - }, - checkForgottenReturns: checkForgottenReturns, - setBounds: setBounds, - warn: warn, - deprecated: deprecated, - CapturedTrace: CapturedTrace, - fireDomEvent: fireDomEvent, - fireGlobalEvent: fireGlobalEvent -}; -}; - -},{"./errors":9,"./es5":10,"./util":21}],8:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -function returner() { - return this.value; -} -function thrower() { - throw this.reason; -} - -Promise.prototype["return"] = -Promise.prototype.thenReturn = function (value) { - if (value instanceof Promise) value.suppressUnhandledRejections(); - return this._then( - returner, undefined, undefined, {value: value}, undefined); -}; - -Promise.prototype["throw"] = -Promise.prototype.thenThrow = function (reason) { - return this._then( - thrower, undefined, undefined, {reason: reason}, undefined); -}; - -Promise.prototype.catchThrow = function (reason) { - if (arguments.length <= 1) { - return this._then( - undefined, thrower, undefined, {reason: reason}, undefined); - } else { - var _reason = arguments[1]; - var handler = function() {throw _reason;}; - return this.caught(reason, handler); - } -}; - -Promise.prototype.catchReturn = function (value) { - if (arguments.length <= 1) { - if (value instanceof Promise) value.suppressUnhandledRejections(); - return this._then( - undefined, returner, undefined, {value: value}, undefined); - } else { - var _value = arguments[1]; - if (_value instanceof Promise) _value.suppressUnhandledRejections(); - var handler = function() {return _value;}; - return this.caught(value, handler); - } -}; -}; - -},{}],9:[function(_dereq_,module,exports){ -"use strict"; -var es5 = _dereq_("./es5"); -var Objectfreeze = es5.freeze; -var util = _dereq_("./util"); -var inherits = util.inherits; -var notEnumerableProp = util.notEnumerableProp; - -function subError(nameProperty, defaultMessage) { - function SubError(message) { - if (!(this instanceof SubError)) return new SubError(message); - notEnumerableProp(this, "message", - typeof message === "string" ? message : defaultMessage); - notEnumerableProp(this, "name", nameProperty); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - Error.call(this); - } - } - inherits(SubError, Error); - return SubError; -} - -var _TypeError, _RangeError; -var Warning = subError("Warning", "warning"); -var CancellationError = subError("CancellationError", "cancellation error"); -var TimeoutError = subError("TimeoutError", "timeout error"); -var AggregateError = subError("AggregateError", "aggregate error"); -try { - _TypeError = TypeError; - _RangeError = RangeError; -} catch(e) { - _TypeError = subError("TypeError", "type error"); - _RangeError = subError("RangeError", "range error"); -} - -var methods = ("join pop push shift unshift slice filter forEach some " + - "every map indexOf lastIndexOf reduce reduceRight sort reverse").split(" "); - -for (var i = 0; i < methods.length; ++i) { - if (typeof Array.prototype[methods[i]] === "function") { - AggregateError.prototype[methods[i]] = Array.prototype[methods[i]]; - } -} - -es5.defineProperty(AggregateError.prototype, "length", { - value: 0, - configurable: false, - writable: true, - enumerable: true -}); -AggregateError.prototype["isOperational"] = true; -var level = 0; -AggregateError.prototype.toString = function() { - var indent = Array(level * 4 + 1).join(" "); - var ret = "\n" + indent + "AggregateError of:" + "\n"; - level++; - indent = Array(level * 4 + 1).join(" "); - for (var i = 0; i < this.length; ++i) { - var str = this[i] === this ? "[Circular AggregateError]" : this[i] + ""; - var lines = str.split("\n"); - for (var j = 0; j < lines.length; ++j) { - lines[j] = indent + lines[j]; - } - str = lines.join("\n"); - ret += str + "\n"; - } - level--; - return ret; -}; - -function OperationalError(message) { - if (!(this instanceof OperationalError)) - return new OperationalError(message); - notEnumerableProp(this, "name", "OperationalError"); - notEnumerableProp(this, "message", message); - this.cause = message; - this["isOperational"] = true; - - if (message instanceof Error) { - notEnumerableProp(this, "message", message.message); - notEnumerableProp(this, "stack", message.stack); - } else if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - -} -inherits(OperationalError, Error); - -var errorTypes = Error["__BluebirdErrorTypes__"]; -if (!errorTypes) { - errorTypes = Objectfreeze({ - CancellationError: CancellationError, - TimeoutError: TimeoutError, - OperationalError: OperationalError, - RejectionError: OperationalError, - AggregateError: AggregateError - }); - es5.defineProperty(Error, "__BluebirdErrorTypes__", { - value: errorTypes, - writable: false, - enumerable: false, - configurable: false - }); -} - -module.exports = { - Error: Error, - TypeError: _TypeError, - RangeError: _RangeError, - CancellationError: errorTypes.CancellationError, - OperationalError: errorTypes.OperationalError, - TimeoutError: errorTypes.TimeoutError, - AggregateError: errorTypes.AggregateError, - Warning: Warning -}; - -},{"./es5":10,"./util":21}],10:[function(_dereq_,module,exports){ -var isES5 = (function(){ - "use strict"; - return this === undefined; -})(); - -if (isES5) { - module.exports = { - freeze: Object.freeze, - defineProperty: Object.defineProperty, - getDescriptor: Object.getOwnPropertyDescriptor, - keys: Object.keys, - names: Object.getOwnPropertyNames, - getPrototypeOf: Object.getPrototypeOf, - isArray: Array.isArray, - isES5: isES5, - propertyIsWritable: function(obj, prop) { - var descriptor = Object.getOwnPropertyDescriptor(obj, prop); - return !!(!descriptor || descriptor.writable || descriptor.set); - } - }; -} else { - var has = {}.hasOwnProperty; - var str = {}.toString; - var proto = {}.constructor.prototype; - - var ObjectKeys = function (o) { - var ret = []; - for (var key in o) { - if (has.call(o, key)) { - ret.push(key); - } - } - return ret; - }; - - var ObjectGetDescriptor = function(o, key) { - return {value: o[key]}; - }; - - var ObjectDefineProperty = function (o, key, desc) { - o[key] = desc.value; - return o; - }; - - var ObjectFreeze = function (obj) { - return obj; - }; - - var ObjectGetPrototypeOf = function (obj) { - try { - return Object(obj).constructor.prototype; - } - catch (e) { - return proto; - } - }; - - var ArrayIsArray = function (obj) { - try { - return str.call(obj) === "[object Array]"; - } - catch(e) { - return false; - } - }; - - module.exports = { - isArray: ArrayIsArray, - keys: ObjectKeys, - names: ObjectKeys, - defineProperty: ObjectDefineProperty, - getDescriptor: ObjectGetDescriptor, - freeze: ObjectFreeze, - getPrototypeOf: ObjectGetPrototypeOf, - isES5: isES5, - propertyIsWritable: function() { - return true; - } - }; -} - -},{}],11:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) { -var util = _dereq_("./util"); -var CancellationError = Promise.CancellationError; -var errorObj = util.errorObj; -var catchFilter = _dereq_("./catch_filter")(NEXT_FILTER); - -function PassThroughHandlerContext(promise, type, handler) { - this.promise = promise; - this.type = type; - this.handler = handler; - this.called = false; - this.cancelPromise = null; -} - -PassThroughHandlerContext.prototype.isFinallyHandler = function() { - return this.type === 0; -}; - -function FinallyHandlerCancelReaction(finallyHandler) { - this.finallyHandler = finallyHandler; -} - -FinallyHandlerCancelReaction.prototype._resultCancelled = function() { - checkCancel(this.finallyHandler); -}; - -function checkCancel(ctx, reason) { - if (ctx.cancelPromise != null) { - if (arguments.length > 1) { - ctx.cancelPromise._reject(reason); - } else { - ctx.cancelPromise._cancel(); - } - ctx.cancelPromise = null; - return true; - } - return false; -} - -function succeed() { - return finallyHandler.call(this, this.promise._target()._settledValue()); -} -function fail(reason) { - if (checkCancel(this, reason)) return; - errorObj.e = reason; - return errorObj; -} -function finallyHandler(reasonOrValue) { - var promise = this.promise; - var handler = this.handler; - - if (!this.called) { - this.called = true; - var ret = this.isFinallyHandler() - ? handler.call(promise._boundValue()) - : handler.call(promise._boundValue(), reasonOrValue); - if (ret === NEXT_FILTER) { - return ret; - } else if (ret !== undefined) { - promise._setReturnedNonUndefined(); - var maybePromise = tryConvertToPromise(ret, promise); - if (maybePromise instanceof Promise) { - if (this.cancelPromise != null) { - if (maybePromise._isCancelled()) { - var reason = - new CancellationError("late cancellation observer"); - promise._attachExtraTrace(reason); - errorObj.e = reason; - return errorObj; - } else if (maybePromise.isPending()) { - maybePromise._attachCancellationCallback( - new FinallyHandlerCancelReaction(this)); - } - } - return maybePromise._then( - succeed, fail, undefined, this, undefined); - } - } - } - - if (promise.isRejected()) { - checkCancel(this); - errorObj.e = reasonOrValue; - return errorObj; - } else { - checkCancel(this); - return reasonOrValue; - } -} - -Promise.prototype._passThrough = function(handler, type, success, fail) { - if (typeof handler !== "function") return this.then(); - return this._then(success, - fail, - undefined, - new PassThroughHandlerContext(this, type, handler), - undefined); -}; - -Promise.prototype.lastly = -Promise.prototype["finally"] = function (handler) { - return this._passThrough(handler, - 0, - finallyHandler, - finallyHandler); -}; - - -Promise.prototype.tap = function (handler) { - return this._passThrough(handler, 1, finallyHandler); -}; - -Promise.prototype.tapCatch = function (handlerOrPredicate) { - var len = arguments.length; - if(len === 1) { - return this._passThrough(handlerOrPredicate, - 1, - undefined, - finallyHandler); - } else { - var catchInstances = new Array(len - 1), - j = 0, i; - for (i = 0; i < len - 1; ++i) { - var item = arguments[i]; - if (util.isObject(item)) { - catchInstances[j++] = item; - } else { - return Promise.reject(new TypeError( - "tapCatch statement predicate: " - + "expecting an object but got " + util.classString(item) - )); - } - } - catchInstances.length = j; - var handler = arguments[i]; - return this._passThrough(catchFilter(catchInstances, handler, this), - 1, - undefined, - finallyHandler); - } - -}; - -return PassThroughHandlerContext; -}; - -},{"./catch_filter":5,"./util":21}],12:[function(_dereq_,module,exports){ -"use strict"; -module.exports = -function(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async) { -var util = _dereq_("./util"); -var canEvaluate = util.canEvaluate; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var reject; - -if (!true) { -if (canEvaluate) { - var thenCallback = function(i) { - return new Function("value", "holder", " \n\ - 'use strict'; \n\ - holder.pIndex = value; \n\ - holder.checkFulfillment(this); \n\ - ".replace(/Index/g, i)); - }; - - var promiseSetter = function(i) { - return new Function("promise", "holder", " \n\ - 'use strict'; \n\ - holder.pIndex = promise; \n\ - ".replace(/Index/g, i)); - }; - - var generateHolderClass = function(total) { - var props = new Array(total); - for (var i = 0; i < props.length; ++i) { - props[i] = "this.p" + (i+1); - } - var assignment = props.join(" = ") + " = null;"; - var cancellationCode= "var promise;\n" + props.map(function(prop) { - return " \n\ - promise = " + prop + "; \n\ - if (promise instanceof Promise) { \n\ - promise.cancel(); \n\ - } \n\ - "; - }).join("\n"); - var passedArguments = props.join(", "); - var name = "Holder$" + total; - - - var code = "return function(tryCatch, errorObj, Promise, async) { \n\ - 'use strict'; \n\ - function [TheName](fn) { \n\ - [TheProperties] \n\ - this.fn = fn; \n\ - this.asyncNeeded = true; \n\ - this.now = 0; \n\ - } \n\ - \n\ - [TheName].prototype._callFunction = function(promise) { \n\ - promise._pushContext(); \n\ - var ret = tryCatch(this.fn)([ThePassedArguments]); \n\ - promise._popContext(); \n\ - if (ret === errorObj) { \n\ - promise._rejectCallback(ret.e, false); \n\ - } else { \n\ - promise._resolveCallback(ret); \n\ - } \n\ - }; \n\ - \n\ - [TheName].prototype.checkFulfillment = function(promise) { \n\ - var now = ++this.now; \n\ - if (now === [TheTotal]) { \n\ - if (this.asyncNeeded) { \n\ - async.invoke(this._callFunction, this, promise); \n\ - } else { \n\ - this._callFunction(promise); \n\ - } \n\ - \n\ - } \n\ - }; \n\ - \n\ - [TheName].prototype._resultCancelled = function() { \n\ - [CancellationCode] \n\ - }; \n\ - \n\ - return [TheName]; \n\ - }(tryCatch, errorObj, Promise, async); \n\ - "; - - code = code.replace(/\[TheName\]/g, name) - .replace(/\[TheTotal\]/g, total) - .replace(/\[ThePassedArguments\]/g, passedArguments) - .replace(/\[TheProperties\]/g, assignment) - .replace(/\[CancellationCode\]/g, cancellationCode); - - return new Function("tryCatch", "errorObj", "Promise", "async", code) - (tryCatch, errorObj, Promise, async); - }; - - var holderClasses = []; - var thenCallbacks = []; - var promiseSetters = []; - - for (var i = 0; i < 8; ++i) { - holderClasses.push(generateHolderClass(i + 1)); - thenCallbacks.push(thenCallback(i + 1)); - promiseSetters.push(promiseSetter(i + 1)); - } - - reject = function (reason) { - this._reject(reason); - }; -}} - -Promise.join = function () { - var last = arguments.length - 1; - var fn; - if (last > 0 && typeof arguments[last] === "function") { - fn = arguments[last]; - if (!true) { - if (last <= 8 && canEvaluate) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - var HolderClass = holderClasses[last - 1]; - var holder = new HolderClass(fn); - var callbacks = thenCallbacks; - - for (var i = 0; i < last; ++i) { - var maybePromise = tryConvertToPromise(arguments[i], ret); - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - maybePromise._then(callbacks[i], reject, - undefined, ret, holder); - promiseSetters[i](maybePromise, holder); - holder.asyncNeeded = false; - } else if (((bitField & 33554432) !== 0)) { - callbacks[i].call(ret, - maybePromise._value(), holder); - } else if (((bitField & 16777216) !== 0)) { - ret._reject(maybePromise._reason()); - } else { - ret._cancel(); - } - } else { - callbacks[i].call(ret, maybePromise, holder); - } - } - - if (!ret._isFateSealed()) { - if (holder.asyncNeeded) { - var context = Promise._getContext(); - holder.fn = util.contextBind(context, holder.fn); - } - ret._setAsyncGuaranteed(); - ret._setOnCancel(holder); - } - return ret; - } - } - } - var args = [].slice.call(arguments);; - if (fn) args.pop(); - var ret = new PromiseArray(args).promise(); - return fn !== undefined ? ret.spread(fn) : ret; -}; - -}; - -},{"./util":21}],13:[function(_dereq_,module,exports){ -"use strict"; -module.exports = -function(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) { -var util = _dereq_("./util"); -var tryCatch = util.tryCatch; - -Promise.method = function (fn) { - if (typeof fn !== "function") { - throw new Promise.TypeError("expecting a function but got " + util.classString(fn)); - } - return function () { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._pushContext(); - var value = tryCatch(fn).apply(this, arguments); - var promiseCreated = ret._popContext(); - debug.checkForgottenReturns( - value, promiseCreated, "Promise.method", ret); - ret._resolveFromSyncValue(value); - return ret; - }; -}; - -Promise.attempt = Promise["try"] = function (fn) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._pushContext(); - var value; - if (arguments.length > 1) { - debug.deprecated("calling Promise.try with more than 1 argument"); - var arg = arguments[1]; - var ctx = arguments[2]; - value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg) - : tryCatch(fn).call(ctx, arg); - } else { - value = tryCatch(fn)(); - } - var promiseCreated = ret._popContext(); - debug.checkForgottenReturns( - value, promiseCreated, "Promise.try", ret); - ret._resolveFromSyncValue(value); - return ret; -}; - -Promise.prototype._resolveFromSyncValue = function (value) { - if (value === util.errorObj) { - this._rejectCallback(value.e, false); - } else { - this._resolveCallback(value, true); - } -}; -}; - -},{"./util":21}],14:[function(_dereq_,module,exports){ -"use strict"; -var util = _dereq_("./util"); -var maybeWrapAsError = util.maybeWrapAsError; -var errors = _dereq_("./errors"); -var OperationalError = errors.OperationalError; -var es5 = _dereq_("./es5"); - -function isUntypedError(obj) { - return obj instanceof Error && - es5.getPrototypeOf(obj) === Error.prototype; -} - -var rErrorKey = /^(?:name|message|stack|cause)$/; -function wrapAsOperationalError(obj) { - var ret; - if (isUntypedError(obj)) { - ret = new OperationalError(obj); - ret.name = obj.name; - ret.message = obj.message; - ret.stack = obj.stack; - var keys = es5.keys(obj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (!rErrorKey.test(key)) { - ret[key] = obj[key]; - } - } - return ret; - } - util.markAsOriginatingFromRejection(obj); - return obj; -} - -function nodebackForPromise(promise, multiArgs) { - return function(err, value) { - if (promise === null) return; - if (err) { - var wrapped = wrapAsOperationalError(maybeWrapAsError(err)); - promise._attachExtraTrace(wrapped); - promise._reject(wrapped); - } else if (!multiArgs) { - promise._fulfill(value); - } else { - var args = [].slice.call(arguments, 1);; - promise._fulfill(args); - } - promise = null; - }; -} - -module.exports = nodebackForPromise; - -},{"./errors":9,"./es5":10,"./util":21}],15:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function() { -var makeSelfResolutionError = function () { - return new TypeError("circular promise resolution chain\u000a\u000a See http://goo.gl/MqrFmX\u000a"); -}; -var reflectHandler = function() { - return new Promise.PromiseInspection(this._target()); -}; -var apiRejection = function(msg) { - return Promise.reject(new TypeError(msg)); -}; -function Proxyable() {} -var UNDEFINED_BINDING = {}; -var util = _dereq_("./util"); -util.setReflectHandler(reflectHandler); - -var getDomain = function() { - var domain = process.domain; - if (domain === undefined) { - return null; - } - return domain; -}; -var getContextDefault = function() { - return null; -}; -var getContextDomain = function() { - return { - domain: getDomain(), - async: null - }; -}; -var AsyncResource = util.isNode && util.nodeSupportsAsyncResource ? - _dereq_("async_hooks").AsyncResource : null; -var getContextAsyncHooks = function() { - return { - domain: getDomain(), - async: new AsyncResource("Bluebird::Promise") - }; -}; -var getContext = util.isNode ? getContextDomain : getContextDefault; -util.notEnumerableProp(Promise, "_getContext", getContext); -var enableAsyncHooks = function() { - getContext = getContextAsyncHooks; - util.notEnumerableProp(Promise, "_getContext", getContextAsyncHooks); -}; -var disableAsyncHooks = function() { - getContext = getContextDomain; - util.notEnumerableProp(Promise, "_getContext", getContextDomain); -}; - -var es5 = _dereq_("./es5"); -var Async = _dereq_("./async"); -var async = new Async(); -es5.defineProperty(Promise, "_async", {value: async}); -var errors = _dereq_("./errors"); -var TypeError = Promise.TypeError = errors.TypeError; -Promise.RangeError = errors.RangeError; -var CancellationError = Promise.CancellationError = errors.CancellationError; -Promise.TimeoutError = errors.TimeoutError; -Promise.OperationalError = errors.OperationalError; -Promise.RejectionError = errors.OperationalError; -Promise.AggregateError = errors.AggregateError; -var INTERNAL = function(){}; -var APPLY = {}; -var NEXT_FILTER = {}; -var tryConvertToPromise = _dereq_("./thenables")(Promise, INTERNAL); -var PromiseArray = - _dereq_("./promise_array")(Promise, INTERNAL, - tryConvertToPromise, apiRejection, Proxyable); -var Context = _dereq_("./context")(Promise); - /*jshint unused:false*/ -var createContext = Context.create; - -var debug = _dereq_("./debuggability")(Promise, Context, - enableAsyncHooks, disableAsyncHooks); -var CapturedTrace = debug.CapturedTrace; -var PassThroughHandlerContext = - _dereq_("./finally")(Promise, tryConvertToPromise, NEXT_FILTER); -var catchFilter = _dereq_("./catch_filter")(NEXT_FILTER); -var nodebackForPromise = _dereq_("./nodeback"); -var errorObj = util.errorObj; -var tryCatch = util.tryCatch; -function check(self, executor) { - if (self == null || self.constructor !== Promise) { - throw new TypeError("the promise constructor cannot be invoked directly\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - if (typeof executor !== "function") { - throw new TypeError("expecting a function but got " + util.classString(executor)); - } - -} - -function Promise(executor) { - if (executor !== INTERNAL) { - check(this, executor); - } - this._bitField = 0; - this._fulfillmentHandler0 = undefined; - this._rejectionHandler0 = undefined; - this._promise0 = undefined; - this._receiver0 = undefined; - this._resolveFromExecutor(executor); - this._promiseCreated(); - this._fireEvent("promiseCreated", this); -} - -Promise.prototype.toString = function () { - return "[object Promise]"; -}; - -Promise.prototype.caught = Promise.prototype["catch"] = function (fn) { - var len = arguments.length; - if (len > 1) { - var catchInstances = new Array(len - 1), - j = 0, i; - for (i = 0; i < len - 1; ++i) { - var item = arguments[i]; - if (util.isObject(item)) { - catchInstances[j++] = item; - } else { - return apiRejection("Catch statement predicate: " + - "expecting an object but got " + util.classString(item)); - } - } - catchInstances.length = j; - fn = arguments[i]; - - if (typeof fn !== "function") { - throw new TypeError("The last argument to .catch() " + - "must be a function, got " + util.toString(fn)); - } - return this.then(undefined, catchFilter(catchInstances, fn, this)); - } - return this.then(undefined, fn); -}; - -Promise.prototype.reflect = function () { - return this._then(reflectHandler, - reflectHandler, undefined, this, undefined); -}; - -Promise.prototype.then = function (didFulfill, didReject) { - if (debug.warnings() && arguments.length > 0 && - typeof didFulfill !== "function" && - typeof didReject !== "function") { - var msg = ".then() only accepts functions but was passed: " + - util.classString(didFulfill); - if (arguments.length > 1) { - msg += ", " + util.classString(didReject); - } - this._warn(msg); - } - return this._then(didFulfill, didReject, undefined, undefined, undefined); -}; - -Promise.prototype.done = function (didFulfill, didReject) { - var promise = - this._then(didFulfill, didReject, undefined, undefined, undefined); - promise._setIsFinal(); -}; - -Promise.prototype.spread = function (fn) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - return this.all()._then(fn, undefined, undefined, APPLY, undefined); -}; - -Promise.prototype.toJSON = function () { - var ret = { - isFulfilled: false, - isRejected: false, - fulfillmentValue: undefined, - rejectionReason: undefined - }; - if (this.isFulfilled()) { - ret.fulfillmentValue = this.value(); - ret.isFulfilled = true; - } else if (this.isRejected()) { - ret.rejectionReason = this.reason(); - ret.isRejected = true; - } - return ret; -}; - -Promise.prototype.all = function () { - if (arguments.length > 0) { - this._warn(".all() was passed arguments but it does not take any"); - } - return new PromiseArray(this).promise(); -}; - -Promise.prototype.error = function (fn) { - return this.caught(util.originatesFromRejection, fn); -}; - -Promise.getNewLibraryCopy = module.exports; - -Promise.is = function (val) { - return val instanceof Promise; -}; - -Promise.fromNode = Promise.fromCallback = function(fn) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs - : false; - var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs)); - if (result === errorObj) { - ret._rejectCallback(result.e, true); - } - if (!ret._isFateSealed()) ret._setAsyncGuaranteed(); - return ret; -}; - -Promise.all = function (promises) { - return new PromiseArray(promises).promise(); -}; - -Promise.cast = function (obj) { - var ret = tryConvertToPromise(obj); - if (!(ret instanceof Promise)) { - ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._setFulfilled(); - ret._rejectionHandler0 = obj; - } - return ret; -}; - -Promise.resolve = Promise.fulfilled = Promise.cast; - -Promise.reject = Promise.rejected = function (reason) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._rejectCallback(reason, true); - return ret; -}; - -Promise.setScheduler = function(fn) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - return async.setScheduler(fn); -}; - -Promise.prototype._then = function ( - didFulfill, - didReject, - _, receiver, - internalData -) { - var haveInternalData = internalData !== undefined; - var promise = haveInternalData ? internalData : new Promise(INTERNAL); - var target = this._target(); - var bitField = target._bitField; - - if (!haveInternalData) { - promise._propagateFrom(this, 3); - promise._captureStackTrace(); - if (receiver === undefined && - ((this._bitField & 2097152) !== 0)) { - if (!((bitField & 50397184) === 0)) { - receiver = this._boundValue(); - } else { - receiver = target === this ? undefined : this._boundTo; - } - } - this._fireEvent("promiseChained", this, promise); - } - - var context = getContext(); - if (!((bitField & 50397184) === 0)) { - var handler, value, settler = target._settlePromiseCtx; - if (((bitField & 33554432) !== 0)) { - value = target._rejectionHandler0; - handler = didFulfill; - } else if (((bitField & 16777216) !== 0)) { - value = target._fulfillmentHandler0; - handler = didReject; - target._unsetRejectionIsUnhandled(); - } else { - settler = target._settlePromiseLateCancellationObserver; - value = new CancellationError("late cancellation observer"); - target._attachExtraTrace(value); - handler = didReject; - } - - async.invoke(settler, target, { - handler: util.contextBind(context, handler), - promise: promise, - receiver: receiver, - value: value - }); - } else { - target._addCallbacks(didFulfill, didReject, promise, - receiver, context); - } - - return promise; -}; - -Promise.prototype._length = function () { - return this._bitField & 65535; -}; - -Promise.prototype._isFateSealed = function () { - return (this._bitField & 117506048) !== 0; -}; - -Promise.prototype._isFollowing = function () { - return (this._bitField & 67108864) === 67108864; -}; - -Promise.prototype._setLength = function (len) { - this._bitField = (this._bitField & -65536) | - (len & 65535); -}; - -Promise.prototype._setFulfilled = function () { - this._bitField = this._bitField | 33554432; - this._fireEvent("promiseFulfilled", this); -}; - -Promise.prototype._setRejected = function () { - this._bitField = this._bitField | 16777216; - this._fireEvent("promiseRejected", this); -}; - -Promise.prototype._setFollowing = function () { - this._bitField = this._bitField | 67108864; - this._fireEvent("promiseResolved", this); -}; - -Promise.prototype._setIsFinal = function () { - this._bitField = this._bitField | 4194304; -}; - -Promise.prototype._isFinal = function () { - return (this._bitField & 4194304) > 0; -}; - -Promise.prototype._unsetCancelled = function() { - this._bitField = this._bitField & (~65536); -}; - -Promise.prototype._setCancelled = function() { - this._bitField = this._bitField | 65536; - this._fireEvent("promiseCancelled", this); -}; - -Promise.prototype._setWillBeCancelled = function() { - this._bitField = this._bitField | 8388608; -}; - -Promise.prototype._setAsyncGuaranteed = function() { - if (async.hasCustomScheduler()) return; - var bitField = this._bitField; - this._bitField = bitField | - (((bitField & 536870912) >> 2) ^ - 134217728); -}; - -Promise.prototype._setNoAsyncGuarantee = function() { - this._bitField = (this._bitField | 536870912) & - (~134217728); -}; - -Promise.prototype._receiverAt = function (index) { - var ret = index === 0 ? this._receiver0 : this[ - index * 4 - 4 + 3]; - if (ret === UNDEFINED_BINDING) { - return undefined; - } else if (ret === undefined && this._isBound()) { - return this._boundValue(); - } - return ret; -}; - -Promise.prototype._promiseAt = function (index) { - return this[ - index * 4 - 4 + 2]; -}; - -Promise.prototype._fulfillmentHandlerAt = function (index) { - return this[ - index * 4 - 4 + 0]; -}; - -Promise.prototype._rejectionHandlerAt = function (index) { - return this[ - index * 4 - 4 + 1]; -}; - -Promise.prototype._boundValue = function() {}; - -Promise.prototype._migrateCallback0 = function (follower) { - var bitField = follower._bitField; - var fulfill = follower._fulfillmentHandler0; - var reject = follower._rejectionHandler0; - var promise = follower._promise0; - var receiver = follower._receiverAt(0); - if (receiver === undefined) receiver = UNDEFINED_BINDING; - this._addCallbacks(fulfill, reject, promise, receiver, null); -}; - -Promise.prototype._migrateCallbackAt = function (follower, index) { - var fulfill = follower._fulfillmentHandlerAt(index); - var reject = follower._rejectionHandlerAt(index); - var promise = follower._promiseAt(index); - var receiver = follower._receiverAt(index); - if (receiver === undefined) receiver = UNDEFINED_BINDING; - this._addCallbacks(fulfill, reject, promise, receiver, null); -}; - -Promise.prototype._addCallbacks = function ( - fulfill, - reject, - promise, - receiver, - context -) { - var index = this._length(); - - if (index >= 65535 - 4) { - index = 0; - this._setLength(0); - } - - if (index === 0) { - this._promise0 = promise; - this._receiver0 = receiver; - if (typeof fulfill === "function") { - this._fulfillmentHandler0 = util.contextBind(context, fulfill); - } - if (typeof reject === "function") { - this._rejectionHandler0 = util.contextBind(context, reject); - } - } else { - var base = index * 4 - 4; - this[base + 2] = promise; - this[base + 3] = receiver; - if (typeof fulfill === "function") { - this[base + 0] = - util.contextBind(context, fulfill); - } - if (typeof reject === "function") { - this[base + 1] = - util.contextBind(context, reject); - } - } - this._setLength(index + 1); - return index; -}; - -Promise.prototype._proxy = function (proxyable, arg) { - this._addCallbacks(undefined, undefined, arg, proxyable, null); -}; - -Promise.prototype._resolveCallback = function(value, shouldBind) { - if (((this._bitField & 117506048) !== 0)) return; - if (value === this) - return this._rejectCallback(makeSelfResolutionError(), false); - var maybePromise = tryConvertToPromise(value, this); - if (!(maybePromise instanceof Promise)) return this._fulfill(value); - - if (shouldBind) this._propagateFrom(maybePromise, 2); - - - var promise = maybePromise._target(); - - if (promise === this) { - this._reject(makeSelfResolutionError()); - return; - } - - var bitField = promise._bitField; - if (((bitField & 50397184) === 0)) { - var len = this._length(); - if (len > 0) promise._migrateCallback0(this); - for (var i = 1; i < len; ++i) { - promise._migrateCallbackAt(this, i); - } - this._setFollowing(); - this._setLength(0); - this._setFollowee(maybePromise); - } else if (((bitField & 33554432) !== 0)) { - this._fulfill(promise._value()); - } else if (((bitField & 16777216) !== 0)) { - this._reject(promise._reason()); - } else { - var reason = new CancellationError("late cancellation observer"); - promise._attachExtraTrace(reason); - this._reject(reason); - } -}; - -Promise.prototype._rejectCallback = -function(reason, synchronous, ignoreNonErrorWarnings) { - var trace = util.ensureErrorObject(reason); - var hasStack = trace === reason; - if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) { - var message = "a promise was rejected with a non-error: " + - util.classString(reason); - this._warn(message, true); - } - this._attachExtraTrace(trace, synchronous ? hasStack : false); - this._reject(reason); -}; - -Promise.prototype._resolveFromExecutor = function (executor) { - if (executor === INTERNAL) return; - var promise = this; - this._captureStackTrace(); - this._pushContext(); - var synchronous = true; - var r = this._execute(executor, function(value) { - promise._resolveCallback(value); - }, function (reason) { - promise._rejectCallback(reason, synchronous); - }); - synchronous = false; - this._popContext(); - - if (r !== undefined) { - promise._rejectCallback(r, true); - } -}; - -Promise.prototype._settlePromiseFromHandler = function ( - handler, receiver, value, promise -) { - var bitField = promise._bitField; - if (((bitField & 65536) !== 0)) return; - promise._pushContext(); - var x; - if (receiver === APPLY) { - if (!value || typeof value.length !== "number") { - x = errorObj; - x.e = new TypeError("cannot .spread() a non-array: " + - util.classString(value)); - } else { - x = tryCatch(handler).apply(this._boundValue(), value); - } - } else { - x = tryCatch(handler).call(receiver, value); - } - var promiseCreated = promise._popContext(); - bitField = promise._bitField; - if (((bitField & 65536) !== 0)) return; - - if (x === NEXT_FILTER) { - promise._reject(value); - } else if (x === errorObj) { - promise._rejectCallback(x.e, false); - } else { - debug.checkForgottenReturns(x, promiseCreated, "", promise, this); - promise._resolveCallback(x); - } -}; - -Promise.prototype._target = function() { - var ret = this; - while (ret._isFollowing()) ret = ret._followee(); - return ret; -}; - -Promise.prototype._followee = function() { - return this._rejectionHandler0; -}; - -Promise.prototype._setFollowee = function(promise) { - this._rejectionHandler0 = promise; -}; - -Promise.prototype._settlePromise = function(promise, handler, receiver, value) { - var isPromise = promise instanceof Promise; - var bitField = this._bitField; - var asyncGuaranteed = ((bitField & 134217728) !== 0); - if (((bitField & 65536) !== 0)) { - if (isPromise) promise._invokeInternalOnCancel(); - - if (receiver instanceof PassThroughHandlerContext && - receiver.isFinallyHandler()) { - receiver.cancelPromise = promise; - if (tryCatch(handler).call(receiver, value) === errorObj) { - promise._reject(errorObj.e); - } - } else if (handler === reflectHandler) { - promise._fulfill(reflectHandler.call(receiver)); - } else if (receiver instanceof Proxyable) { - receiver._promiseCancelled(promise); - } else if (isPromise || promise instanceof PromiseArray) { - promise._cancel(); - } else { - receiver.cancel(); - } - } else if (typeof handler === "function") { - if (!isPromise) { - handler.call(receiver, value, promise); - } else { - if (asyncGuaranteed) promise._setAsyncGuaranteed(); - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - } else if (receiver instanceof Proxyable) { - if (!receiver._isResolved()) { - if (((bitField & 33554432) !== 0)) { - receiver._promiseFulfilled(value, promise); - } else { - receiver._promiseRejected(value, promise); - } - } - } else if (isPromise) { - if (asyncGuaranteed) promise._setAsyncGuaranteed(); - if (((bitField & 33554432) !== 0)) { - promise._fulfill(value); - } else { - promise._reject(value); - } - } -}; - -Promise.prototype._settlePromiseLateCancellationObserver = function(ctx) { - var handler = ctx.handler; - var promise = ctx.promise; - var receiver = ctx.receiver; - var value = ctx.value; - if (typeof handler === "function") { - if (!(promise instanceof Promise)) { - handler.call(receiver, value, promise); - } else { - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - } else if (promise instanceof Promise) { - promise._reject(value); - } -}; - -Promise.prototype._settlePromiseCtx = function(ctx) { - this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value); -}; - -Promise.prototype._settlePromise0 = function(handler, value, bitField) { - var promise = this._promise0; - var receiver = this._receiverAt(0); - this._promise0 = undefined; - this._receiver0 = undefined; - this._settlePromise(promise, handler, receiver, value); -}; - -Promise.prototype._clearCallbackDataAtIndex = function(index) { - var base = index * 4 - 4; - this[base + 2] = - this[base + 3] = - this[base + 0] = - this[base + 1] = undefined; -}; - -Promise.prototype._fulfill = function (value) { - var bitField = this._bitField; - if (((bitField & 117506048) >>> 16)) return; - if (value === this) { - var err = makeSelfResolutionError(); - this._attachExtraTrace(err); - return this._reject(err); - } - this._setFulfilled(); - this._rejectionHandler0 = value; - - if ((bitField & 65535) > 0) { - if (((bitField & 134217728) !== 0)) { - this._settlePromises(); - } else { - async.settlePromises(this); - } - this._dereferenceTrace(); - } -}; - -Promise.prototype._reject = function (reason) { - var bitField = this._bitField; - if (((bitField & 117506048) >>> 16)) return; - this._setRejected(); - this._fulfillmentHandler0 = reason; - - if (this._isFinal()) { - return async.fatalError(reason, util.isNode); - } - - if ((bitField & 65535) > 0) { - async.settlePromises(this); - } else { - this._ensurePossibleRejectionHandled(); - } -}; - -Promise.prototype._fulfillPromises = function (len, value) { - for (var i = 1; i < len; i++) { - var handler = this._fulfillmentHandlerAt(i); - var promise = this._promiseAt(i); - var receiver = this._receiverAt(i); - this._clearCallbackDataAtIndex(i); - this._settlePromise(promise, handler, receiver, value); - } -}; - -Promise.prototype._rejectPromises = function (len, reason) { - for (var i = 1; i < len; i++) { - var handler = this._rejectionHandlerAt(i); - var promise = this._promiseAt(i); - var receiver = this._receiverAt(i); - this._clearCallbackDataAtIndex(i); - this._settlePromise(promise, handler, receiver, reason); - } -}; - -Promise.prototype._settlePromises = function () { - var bitField = this._bitField; - var len = (bitField & 65535); - - if (len > 0) { - if (((bitField & 16842752) !== 0)) { - var reason = this._fulfillmentHandler0; - this._settlePromise0(this._rejectionHandler0, reason, bitField); - this._rejectPromises(len, reason); - } else { - var value = this._rejectionHandler0; - this._settlePromise0(this._fulfillmentHandler0, value, bitField); - this._fulfillPromises(len, value); - } - this._setLength(0); - } - this._clearCancellationData(); -}; - -Promise.prototype._settledValue = function() { - var bitField = this._bitField; - if (((bitField & 33554432) !== 0)) { - return this._rejectionHandler0; - } else if (((bitField & 16777216) !== 0)) { - return this._fulfillmentHandler0; - } -}; - -if (typeof Symbol !== "undefined" && Symbol.toStringTag) { - es5.defineProperty(Promise.prototype, Symbol.toStringTag, { - get: function () { - return "Object"; - } - }); -} - -function deferResolve(v) {this.promise._resolveCallback(v);} -function deferReject(v) {this.promise._rejectCallback(v, false);} - -Promise.defer = Promise.pending = function() { - debug.deprecated("Promise.defer", "new Promise"); - var promise = new Promise(INTERNAL); - return { - promise: promise, - resolve: deferResolve, - reject: deferReject - }; -}; - -util.notEnumerableProp(Promise, - "_makeSelfResolutionError", - makeSelfResolutionError); - -_dereq_("./method")(Promise, INTERNAL, tryConvertToPromise, apiRejection, - debug); -_dereq_("./bind")(Promise, INTERNAL, tryConvertToPromise, debug); -_dereq_("./cancel")(Promise, PromiseArray, apiRejection, debug); -_dereq_("./direct_resolve")(Promise); -_dereq_("./synchronous_inspection")(Promise); -_dereq_("./join")( - Promise, PromiseArray, tryConvertToPromise, INTERNAL, async); -Promise.Promise = Promise; -Promise.version = "3.7.2"; - - util.toFastProperties(Promise); - util.toFastProperties(Promise.prototype); - function fillTypes(value) { - var p = new Promise(INTERNAL); - p._fulfillmentHandler0 = value; - p._rejectionHandler0 = value; - p._promise0 = value; - p._receiver0 = value; - } - // Complete slack tracking, opt out of field-type tracking and - // stabilize map - fillTypes({a: 1}); - fillTypes({b: 2}); - fillTypes({c: 3}); - fillTypes(1); - fillTypes(function(){}); - fillTypes(undefined); - fillTypes(false); - fillTypes(new Promise(INTERNAL)); - debug.setBounds(Async.firstLineError, util.lastLineError); - return Promise; - -}; - -},{"./async":1,"./bind":2,"./cancel":4,"./catch_filter":5,"./context":6,"./debuggability":7,"./direct_resolve":8,"./errors":9,"./es5":10,"./finally":11,"./join":12,"./method":13,"./nodeback":14,"./promise_array":16,"./synchronous_inspection":19,"./thenables":20,"./util":21,"async_hooks":undefined}],16:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL, tryConvertToPromise, - apiRejection, Proxyable) { -var util = _dereq_("./util"); -var isArray = util.isArray; - -function toResolutionValue(val) { - switch(val) { - case -2: return []; - case -3: return {}; - case -6: return new Map(); - } -} - -function PromiseArray(values) { - var promise = this._promise = new Promise(INTERNAL); - if (values instanceof Promise) { - promise._propagateFrom(values, 3); - values.suppressUnhandledRejections(); - } - promise._setOnCancel(this); - this._values = values; - this._length = 0; - this._totalResolved = 0; - this._init(undefined, -2); -} -util.inherits(PromiseArray, Proxyable); - -PromiseArray.prototype.length = function () { - return this._length; -}; - -PromiseArray.prototype.promise = function () { - return this._promise; -}; - -PromiseArray.prototype._init = function init(_, resolveValueIfEmpty) { - var values = tryConvertToPromise(this._values, this._promise); - if (values instanceof Promise) { - values = values._target(); - var bitField = values._bitField; - ; - this._values = values; - - if (((bitField & 50397184) === 0)) { - this._promise._setAsyncGuaranteed(); - return values._then( - init, - this._reject, - undefined, - this, - resolveValueIfEmpty - ); - } else if (((bitField & 33554432) !== 0)) { - values = values._value(); - } else if (((bitField & 16777216) !== 0)) { - return this._reject(values._reason()); - } else { - return this._cancel(); - } - } - values = util.asArray(values); - if (values === null) { - var err = apiRejection( - "expecting an array or an iterable object but got " + util.classString(values)).reason(); - this._promise._rejectCallback(err, false); - return; - } - - if (values.length === 0) { - if (resolveValueIfEmpty === -5) { - this._resolveEmptyArray(); - } - else { - this._resolve(toResolutionValue(resolveValueIfEmpty)); - } - return; - } - this._iterate(values); -}; - -PromiseArray.prototype._iterate = function(values) { - var len = this.getActualLength(values.length); - this._length = len; - this._values = this.shouldCopyValues() ? new Array(len) : this._values; - var result = this._promise; - var isResolved = false; - var bitField = null; - for (var i = 0; i < len; ++i) { - var maybePromise = tryConvertToPromise(values[i], result); - - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - bitField = maybePromise._bitField; - } else { - bitField = null; - } - - if (isResolved) { - if (bitField !== null) { - maybePromise.suppressUnhandledRejections(); - } - } else if (bitField !== null) { - if (((bitField & 50397184) === 0)) { - maybePromise._proxy(this, i); - this._values[i] = maybePromise; - } else if (((bitField & 33554432) !== 0)) { - isResolved = this._promiseFulfilled(maybePromise._value(), i); - } else if (((bitField & 16777216) !== 0)) { - isResolved = this._promiseRejected(maybePromise._reason(), i); - } else { - isResolved = this._promiseCancelled(i); - } - } else { - isResolved = this._promiseFulfilled(maybePromise, i); - } - } - if (!isResolved) result._setAsyncGuaranteed(); -}; - -PromiseArray.prototype._isResolved = function () { - return this._values === null; -}; - -PromiseArray.prototype._resolve = function (value) { - this._values = null; - this._promise._fulfill(value); -}; - -PromiseArray.prototype._cancel = function() { - if (this._isResolved() || !this._promise._isCancellable()) return; - this._values = null; - this._promise._cancel(); -}; - -PromiseArray.prototype._reject = function (reason) { - this._values = null; - this._promise._rejectCallback(reason, false); -}; - -PromiseArray.prototype._promiseFulfilled = function (value, index) { - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - return true; - } - return false; -}; - -PromiseArray.prototype._promiseCancelled = function() { - this._cancel(); - return true; -}; - -PromiseArray.prototype._promiseRejected = function (reason) { - this._totalResolved++; - this._reject(reason); - return true; -}; - -PromiseArray.prototype._resultCancelled = function() { - if (this._isResolved()) return; - var values = this._values; - this._cancel(); - if (values instanceof Promise) { - values.cancel(); - } else { - for (var i = 0; i < values.length; ++i) { - if (values[i] instanceof Promise) { - values[i].cancel(); - } - } - } -}; - -PromiseArray.prototype.shouldCopyValues = function () { - return true; -}; - -PromiseArray.prototype.getActualLength = function (len) { - return len; -}; - -return PromiseArray; -}; - -},{"./util":21}],17:[function(_dereq_,module,exports){ -"use strict"; -function arrayMove(src, srcIndex, dst, dstIndex, len) { - for (var j = 0; j < len; ++j) { - dst[j + dstIndex] = src[j + srcIndex]; - src[j + srcIndex] = void 0; - } -} - -function Queue(capacity) { - this._capacity = capacity; - this._length = 0; - this._front = 0; -} - -Queue.prototype._willBeOverCapacity = function (size) { - return this._capacity < size; -}; - -Queue.prototype._pushOne = function (arg) { - var length = this.length(); - this._checkCapacity(length + 1); - var i = (this._front + length) & (this._capacity - 1); - this[i] = arg; - this._length = length + 1; -}; - -Queue.prototype.push = function (fn, receiver, arg) { - var length = this.length() + 3; - if (this._willBeOverCapacity(length)) { - this._pushOne(fn); - this._pushOne(receiver); - this._pushOne(arg); - return; - } - var j = this._front + length - 3; - this._checkCapacity(length); - var wrapMask = this._capacity - 1; - this[(j + 0) & wrapMask] = fn; - this[(j + 1) & wrapMask] = receiver; - this[(j + 2) & wrapMask] = arg; - this._length = length; -}; - -Queue.prototype.shift = function () { - var front = this._front, - ret = this[front]; - - this[front] = undefined; - this._front = (front + 1) & (this._capacity - 1); - this._length--; - return ret; -}; - -Queue.prototype.length = function () { - return this._length; -}; - -Queue.prototype._checkCapacity = function (size) { - if (this._capacity < size) { - this._resizeTo(this._capacity << 1); - } -}; - -Queue.prototype._resizeTo = function (capacity) { - var oldCapacity = this._capacity; - this._capacity = capacity; - var front = this._front; - var length = this._length; - var moveItemsCount = (front + length) & (oldCapacity - 1); - arrayMove(this, 0, this, oldCapacity, moveItemsCount); -}; - -module.exports = Queue; - -},{}],18:[function(_dereq_,module,exports){ -"use strict"; -var util = _dereq_("./util"); -var schedule; -var noAsyncScheduler = function() { - throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/MqrFmX\u000a"); -}; -var NativePromise = util.getNativePromise(); -if (util.isNode && typeof MutationObserver === "undefined") { - var GlobalSetImmediate = global.setImmediate; - var ProcessNextTick = process.nextTick; - schedule = util.isRecentNode - ? function(fn) { GlobalSetImmediate.call(global, fn); } - : function(fn) { ProcessNextTick.call(process, fn); }; -} else if (typeof NativePromise === "function" && - typeof NativePromise.resolve === "function") { - var nativePromise = NativePromise.resolve(); - schedule = function(fn) { - nativePromise.then(fn); - }; -} else if ((typeof MutationObserver !== "undefined") && - !(typeof window !== "undefined" && - window.navigator && - (window.navigator.standalone || window.cordova)) && - ("classList" in document.documentElement)) { - schedule = (function() { - var div = document.createElement("div"); - var opts = {attributes: true}; - var toggleScheduled = false; - var div2 = document.createElement("div"); - var o2 = new MutationObserver(function() { - div.classList.toggle("foo"); - toggleScheduled = false; - }); - o2.observe(div2, opts); - - var scheduleToggle = function() { - if (toggleScheduled) return; - toggleScheduled = true; - div2.classList.toggle("foo"); - }; - - return function schedule(fn) { - var o = new MutationObserver(function() { - o.disconnect(); - fn(); - }); - o.observe(div, opts); - scheduleToggle(); - }; - })(); -} else if (typeof setImmediate !== "undefined") { - schedule = function (fn) { - setImmediate(fn); - }; -} else if (typeof setTimeout !== "undefined") { - schedule = function (fn) { - setTimeout(fn, 0); - }; -} else { - schedule = noAsyncScheduler; -} -module.exports = schedule; - -},{"./util":21}],19:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -function PromiseInspection(promise) { - if (promise !== undefined) { - promise = promise._target(); - this._bitField = promise._bitField; - this._settledValueField = promise._isFateSealed() - ? promise._settledValue() : undefined; - } - else { - this._bitField = 0; - this._settledValueField = undefined; - } -} - -PromiseInspection.prototype._settledValue = function() { - return this._settledValueField; -}; - -var value = PromiseInspection.prototype.value = function () { - if (!this.isFulfilled()) { - throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - return this._settledValue(); -}; - -var reason = PromiseInspection.prototype.error = -PromiseInspection.prototype.reason = function () { - if (!this.isRejected()) { - throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - return this._settledValue(); -}; - -var isFulfilled = PromiseInspection.prototype.isFulfilled = function() { - return (this._bitField & 33554432) !== 0; -}; - -var isRejected = PromiseInspection.prototype.isRejected = function () { - return (this._bitField & 16777216) !== 0; -}; - -var isPending = PromiseInspection.prototype.isPending = function () { - return (this._bitField & 50397184) === 0; -}; - -var isResolved = PromiseInspection.prototype.isResolved = function () { - return (this._bitField & 50331648) !== 0; -}; - -PromiseInspection.prototype.isCancelled = function() { - return (this._bitField & 8454144) !== 0; -}; - -Promise.prototype.__isCancelled = function() { - return (this._bitField & 65536) === 65536; -}; - -Promise.prototype._isCancelled = function() { - return this._target().__isCancelled(); -}; - -Promise.prototype.isCancelled = function() { - return (this._target()._bitField & 8454144) !== 0; -}; - -Promise.prototype.isPending = function() { - return isPending.call(this._target()); -}; - -Promise.prototype.isRejected = function() { - return isRejected.call(this._target()); -}; - -Promise.prototype.isFulfilled = function() { - return isFulfilled.call(this._target()); -}; - -Promise.prototype.isResolved = function() { - return isResolved.call(this._target()); -}; - -Promise.prototype.value = function() { - return value.call(this._target()); -}; - -Promise.prototype.reason = function() { - var target = this._target(); - target._unsetRejectionIsUnhandled(); - return reason.call(target); -}; - -Promise.prototype._value = function() { - return this._settledValue(); -}; - -Promise.prototype._reason = function() { - this._unsetRejectionIsUnhandled(); - return this._settledValue(); -}; - -Promise.PromiseInspection = PromiseInspection; -}; - -},{}],20:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var util = _dereq_("./util"); -var errorObj = util.errorObj; -var isObject = util.isObject; - -function tryConvertToPromise(obj, context) { - if (isObject(obj)) { - if (obj instanceof Promise) return obj; - var then = getThen(obj); - if (then === errorObj) { - if (context) context._pushContext(); - var ret = Promise.reject(then.e); - if (context) context._popContext(); - return ret; - } else if (typeof then === "function") { - if (isAnyBluebirdPromise(obj)) { - var ret = new Promise(INTERNAL); - obj._then( - ret._fulfill, - ret._reject, - undefined, - ret, - null - ); - return ret; - } - return doThenable(obj, then, context); - } - } - return obj; -} - -function doGetThen(obj) { - return obj.then; -} - -function getThen(obj) { - try { - return doGetThen(obj); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} - -var hasProp = {}.hasOwnProperty; -function isAnyBluebirdPromise(obj) { - try { - return hasProp.call(obj, "_promise0"); - } catch (e) { - return false; - } -} - -function doThenable(x, then, context) { - var promise = new Promise(INTERNAL); - var ret = promise; - if (context) context._pushContext(); - promise._captureStackTrace(); - if (context) context._popContext(); - var synchronous = true; - var result = util.tryCatch(then).call(x, resolve, reject); - synchronous = false; - - if (promise && result === errorObj) { - promise._rejectCallback(result.e, true, true); - promise = null; - } - - function resolve(value) { - if (!promise) return; - promise._resolveCallback(value); - promise = null; - } - - function reject(reason) { - if (!promise) return; - promise._rejectCallback(reason, synchronous, true); - promise = null; - } - return ret; -} - -return tryConvertToPromise; -}; - -},{"./util":21}],21:[function(_dereq_,module,exports){ -"use strict"; -var es5 = _dereq_("./es5"); -var canEvaluate = typeof navigator == "undefined"; - -var errorObj = {e: {}}; -var tryCatchTarget; -var globalObject = typeof self !== "undefined" ? self : - typeof window !== "undefined" ? window : - typeof global !== "undefined" ? global : - this !== undefined ? this : null; - -function tryCatcher() { - try { - var target = tryCatchTarget; - tryCatchTarget = null; - return target.apply(this, arguments); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} -function tryCatch(fn) { - tryCatchTarget = fn; - return tryCatcher; -} - -var inherits = function(Child, Parent) { - var hasProp = {}.hasOwnProperty; - - function T() { - this.constructor = Child; - this.constructor$ = Parent; - for (var propertyName in Parent.prototype) { - if (hasProp.call(Parent.prototype, propertyName) && - propertyName.charAt(propertyName.length-1) !== "$" - ) { - this[propertyName + "$"] = Parent.prototype[propertyName]; - } - } - } - T.prototype = Parent.prototype; - Child.prototype = new T(); - return Child.prototype; -}; - - -function isPrimitive(val) { - return val == null || val === true || val === false || - typeof val === "string" || typeof val === "number"; - -} - -function isObject(value) { - return typeof value === "function" || - typeof value === "object" && value !== null; -} - -function maybeWrapAsError(maybeError) { - if (!isPrimitive(maybeError)) return maybeError; - - return new Error(safeToString(maybeError)); -} - -function withAppended(target, appendee) { - var len = target.length; - var ret = new Array(len + 1); - var i; - for (i = 0; i < len; ++i) { - ret[i] = target[i]; - } - ret[i] = appendee; - return ret; -} - -function getDataPropertyOrDefault(obj, key, defaultValue) { - if (es5.isES5) { - var desc = Object.getOwnPropertyDescriptor(obj, key); - - if (desc != null) { - return desc.get == null && desc.set == null - ? desc.value - : defaultValue; - } - } else { - return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined; - } -} - -function notEnumerableProp(obj, name, value) { - if (isPrimitive(obj)) return obj; - var descriptor = { - value: value, - configurable: true, - enumerable: false, - writable: true - }; - es5.defineProperty(obj, name, descriptor); - return obj; -} - -function thrower(r) { - throw r; -} - -var inheritedDataKeys = (function() { - var excludedPrototypes = [ - Array.prototype, - Object.prototype, - Function.prototype - ]; - - var isExcludedProto = function(val) { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (excludedPrototypes[i] === val) { - return true; - } - } - return false; - }; - - if (es5.isES5) { - var getKeys = Object.getOwnPropertyNames; - return function(obj) { - var ret = []; - var visitedKeys = Object.create(null); - while (obj != null && !isExcludedProto(obj)) { - var keys; - try { - keys = getKeys(obj); - } catch (e) { - return ret; - } - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (visitedKeys[key]) continue; - visitedKeys[key] = true; - var desc = Object.getOwnPropertyDescriptor(obj, key); - if (desc != null && desc.get == null && desc.set == null) { - ret.push(key); - } - } - obj = es5.getPrototypeOf(obj); - } - return ret; - }; - } else { - var hasProp = {}.hasOwnProperty; - return function(obj) { - if (isExcludedProto(obj)) return []; - var ret = []; - - /*jshint forin:false */ - enumeration: for (var key in obj) { - if (hasProp.call(obj, key)) { - ret.push(key); - } else { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (hasProp.call(excludedPrototypes[i], key)) { - continue enumeration; - } - } - ret.push(key); - } - } - return ret; - }; - } - -})(); - -var thisAssignmentPattern = /this\s*\.\s*\S+\s*=/; -function isClass(fn) { - try { - if (typeof fn === "function") { - var keys = es5.names(fn.prototype); - - var hasMethods = es5.isES5 && keys.length > 1; - var hasMethodsOtherThanConstructor = keys.length > 0 && - !(keys.length === 1 && keys[0] === "constructor"); - var hasThisAssignmentAndStaticMethods = - thisAssignmentPattern.test(fn + "") && es5.names(fn).length > 0; - - if (hasMethods || hasMethodsOtherThanConstructor || - hasThisAssignmentAndStaticMethods) { - return true; - } - } - return false; - } catch (e) { - return false; - } -} - -function toFastProperties(obj) { - /*jshint -W027,-W055,-W031*/ - function FakeConstructor() {} - FakeConstructor.prototype = obj; - var receiver = new FakeConstructor(); - function ic() { - return typeof receiver.foo; - } - ic(); - ic(); - return obj; - eval(obj); -} - -var rident = /^[a-z$_][a-z$_0-9]*$/i; -function isIdentifier(str) { - return rident.test(str); -} - -function filledRange(count, prefix, suffix) { - var ret = new Array(count); - for(var i = 0; i < count; ++i) { - ret[i] = prefix + i + suffix; - } - return ret; -} - -function safeToString(obj) { - try { - return obj + ""; - } catch (e) { - return "[no string representation]"; - } -} - -function isError(obj) { - return obj instanceof Error || - (obj !== null && - typeof obj === "object" && - typeof obj.message === "string" && - typeof obj.name === "string"); -} - -function markAsOriginatingFromRejection(e) { - try { - notEnumerableProp(e, "isOperational", true); - } - catch(ignore) {} -} - -function originatesFromRejection(e) { - if (e == null) return false; - return ((e instanceof Error["__BluebirdErrorTypes__"].OperationalError) || - e["isOperational"] === true); -} - -function canAttachTrace(obj) { - return isError(obj) && es5.propertyIsWritable(obj, "stack"); -} - -var ensureErrorObject = (function() { - if (!("stack" in new Error())) { - return function(value) { - if (canAttachTrace(value)) return value; - try {throw new Error(safeToString(value));} - catch(err) {return err;} - }; - } else { - return function(value) { - if (canAttachTrace(value)) return value; - return new Error(safeToString(value)); - }; - } -})(); - -function classString(obj) { - return {}.toString.call(obj); -} - -function copyDescriptors(from, to, filter) { - var keys = es5.names(from); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (filter(key)) { - try { - es5.defineProperty(to, key, es5.getDescriptor(from, key)); - } catch (ignore) {} - } - } -} - -var asArray = function(v) { - if (es5.isArray(v)) { - return v; - } - return null; -}; - -if (typeof Symbol !== "undefined" && Symbol.iterator) { - var ArrayFrom = typeof Array.from === "function" ? function(v) { - return Array.from(v); - } : function(v) { - var ret = []; - var it = v[Symbol.iterator](); - var itResult; - while (!((itResult = it.next()).done)) { - ret.push(itResult.value); - } - return ret; - }; - - asArray = function(v) { - if (es5.isArray(v)) { - return v; - } else if (v != null && typeof v[Symbol.iterator] === "function") { - return ArrayFrom(v); - } - return null; - }; -} - -var isNode = typeof process !== "undefined" && - classString(process).toLowerCase() === "[object process]"; - -var hasEnvVariables = typeof process !== "undefined" && - typeof process.env !== "undefined"; - -function env(key) { - return hasEnvVariables ? process.env[key] : undefined; -} - -function getNativePromise() { - if (typeof Promise === "function") { - try { - var promise = new Promise(function(){}); - if (classString(promise) === "[object Promise]") { - return Promise; - } - } catch (e) {} - } -} - -var reflectHandler; -function contextBind(ctx, cb) { - if (ctx === null || - typeof cb !== "function" || - cb === reflectHandler) { - return cb; - } - - if (ctx.domain !== null) { - cb = ctx.domain.bind(cb); - } - - var async = ctx.async; - if (async !== null) { - var old = cb; - cb = function() { - var args = (new Array(2)).concat([].slice.call(arguments));; - args[0] = old; - args[1] = this; - return async.runInAsyncScope.apply(async, args); - }; - } - return cb; -} - -var ret = { - setReflectHandler: function(fn) { - reflectHandler = fn; - }, - isClass: isClass, - isIdentifier: isIdentifier, - inheritedDataKeys: inheritedDataKeys, - getDataPropertyOrDefault: getDataPropertyOrDefault, - thrower: thrower, - isArray: es5.isArray, - asArray: asArray, - notEnumerableProp: notEnumerableProp, - isPrimitive: isPrimitive, - isObject: isObject, - isError: isError, - canEvaluate: canEvaluate, - errorObj: errorObj, - tryCatch: tryCatch, - inherits: inherits, - withAppended: withAppended, - maybeWrapAsError: maybeWrapAsError, - toFastProperties: toFastProperties, - filledRange: filledRange, - toString: safeToString, - canAttachTrace: canAttachTrace, - ensureErrorObject: ensureErrorObject, - originatesFromRejection: originatesFromRejection, - markAsOriginatingFromRejection: markAsOriginatingFromRejection, - classString: classString, - copyDescriptors: copyDescriptors, - isNode: isNode, - hasEnvVariables: hasEnvVariables, - env: env, - global: globalObject, - getNativePromise: getNativePromise, - contextBind: contextBind -}; -ret.isRecentNode = ret.isNode && (function() { - var version; - if (process.versions && process.versions.node) { - version = process.versions.node.split(".").map(Number); - } else if (process.version) { - version = process.version.split(".").map(Number); - } - return (version[0] === 0 && version[1] > 10) || (version[0] > 0); -})(); -ret.nodeSupportsAsyncResource = ret.isNode && (function() { - var supportsAsync = false; - try { - var res = _dereq_("async_hooks").AsyncResource; - supportsAsync = typeof res.prototype.runInAsyncScope === "function"; - } catch (e) { - supportsAsync = false; - } - return supportsAsync; -})(); - -if (ret.isNode) ret.toFastProperties(process); - -try {throw new Error(); } catch (e) {ret.lastLineError = e;} -module.exports = ret; - -},{"./es5":10,"async_hooks":undefined}]},{},[3])(3) -}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; } \ No newline at end of file diff --git a/node_modules/bluebird/js/browser/bluebird.core.min.js b/node_modules/bluebird/js/browser/bluebird.core.min.js deleted file mode 100644 index 836176e..0000000 --- a/node_modules/bluebird/js/browser/bluebird.core.min.js +++ /dev/null @@ -1,31 +0,0 @@ -/* @preserve - * The MIT License (MIT) - * - * Copyright (c) 2013-2018 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -/** - * bluebird build version 3.7.2 - * Features enabled: core - * Features disabled: race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each -*/ -!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self),e.Promise=t()}}(function(){var t,e,n;return function r(t,e,n){function o(a,s){if(!e[a]){if(!t[a]){var c="function"==typeof _dereq_&&_dereq_;if(!s&&c)return c(a,!0);if(i)return i(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var u=e[a]={exports:{}};t[a][0].call(u.exports,function(e){var n=t[a][1][e];return o(n?n:e)},u,u.exports,r,t,e,n)}return e[a].exports}for(var i="function"==typeof _dereq_&&_dereq_,a=0;a0;)c(t)}function c(t){var e=t.shift();if("function"!=typeof e)e._settlePromises();else{var n=t.shift(),r=t.shift();e.call(n,r)}}var l;try{throw new Error}catch(u){l=u}var p=t("./schedule"),f=t("./queue");r.prototype.setScheduler=function(t){var e=this._schedule;return this._schedule=t,this._customScheduler=!0,e},r.prototype.hasCustomScheduler=function(){return this._customScheduler},r.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},r.prototype.fatalError=function(t,e){e?(process.stderr.write("Fatal "+(t instanceof Error?t.stack:t)+"\n"),process.exit(2)):this.throwLater(t)},r.prototype.throwLater=function(t,e){if(1===arguments.length&&(e=t,t=function(){throw e}),"undefined"!=typeof setTimeout)setTimeout(function(){t(e)},0);else try{this._schedule(function(){t(e)})}catch(n){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},r.prototype.invokeLater=o,r.prototype.invoke=i,r.prototype.settlePromises=a,r.prototype._drainQueues=function(){s(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,s(this._lateQueue)},r.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},r.prototype._reset=function(){this._isTickUsed=!1},e.exports=r,e.exports.firstLineError=l},{"./queue":17,"./schedule":18}],2:[function(t,e,n){"use strict";e.exports=function(t,e,n,r){var o=!1,i=function(t,e){this._reject(e)},a=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(i,i,null,this,t)},s=function(t,e){0===(50397184&this._bitField)&&this._resolveCallback(e.target)},c=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(i){o||(o=!0,t.prototype._propagateFrom=r.propagateFromFunction(),t.prototype._boundValue=r.boundValueFunction());var l=n(i),u=new t(e);u._propagateFrom(this,1);var p=this._target();if(u._setBoundTo(l),l instanceof t){var f={promiseRejectionQueued:!1,promise:u,target:p,bindingPromise:l};p._then(e,a,void 0,u,f),l._then(s,c,void 0,u,f),u._setOnCancel(l)}else u._resolveCallback(p);return u},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152===(2097152&this._bitField)},t.bind=function(e,n){return t.resolve(n).bind(e)}}},{}],3:[function(t,e,n){"use strict";function r(){try{Promise===i&&(Promise=o)}catch(t){}return i}var o;"undefined"!=typeof Promise&&(o=Promise);var i=t("./promise")();i.noConflict=r,e.exports=i},{"./promise":15}],4:[function(t,e,n){"use strict";e.exports=function(e,n,r,o){var i=t("./util"),a=i.tryCatch,s=i.errorObj,c=e._async;e.prototype["break"]=e.prototype.cancel=function(){if(!o.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var n=t._cancellationParent;if(null==n||!n._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=n}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),this._enoughBranchesHaveCancelled()?(this._invokeOnCancel(),!0):!1)},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),c.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(i.isArray(t))for(var n=0;n=0?i[t]:void 0}var o=!1,i=[];return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},e.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,i.push(this._trace))},e.prototype._popContext=function(){if(void 0!==this._trace){var t=i.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},e.CapturedTrace=null,e.create=n,e.deactivateLongStackTraces=function(){},e.activateLongStackTraces=function(){var n=t.prototype._pushContext,i=t.prototype._popContext,a=t._peekContext,s=t.prototype._peekContext,c=t.prototype._promiseCreated;e.deactivateLongStackTraces=function(){t.prototype._pushContext=n,t.prototype._popContext=i,t._peekContext=a,t.prototype._peekContext=s,t.prototype._promiseCreated=c,o=!1},o=!0,t.prototype._pushContext=e.prototype._pushContext,t.prototype._popContext=e.prototype._popContext,t._peekContext=t.prototype._peekContext=r,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},e}},{}],7:[function(t,e,n){"use strict";e.exports=function(e,n,r,o){function i(t,e){return{promise:e}}function a(){return!1}function s(t,e,n){var r=this;try{t(e,n,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+V.toString(t));r._attachCancellationCallback(t)})}catch(o){return o}}function c(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?V.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function l(){return this._onCancelField}function u(t){this._onCancelField=t}function p(){this._cancellationParent=void 0,this._onCancelField=void 0}function f(t,e){if(0!==(1&e)){this._cancellationParent=t;var n=t._branchesRemainingToCancel;void 0===n&&(n=0),t._branchesRemainingToCancel=n+1}0!==(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}function h(t,e){0!==(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}function d(){var t=this._boundTo;return void 0!==t&&t instanceof e?t.isFulfilled()?t.value():void 0:t}function _(){this._trace=new H(this._peekContext())}function v(t,e){if(q(t)){var n=this._trace;if(void 0!==n&&e&&(n=n._parent),void 0!==n)n.attachExtraTrace(t);else if(!t.__stackCleaned__){var r=F(t);V.notEnumerableProp(t,"stack",r.message+"\n"+r.stack.join("\n")),V.notEnumerableProp(t,"__stackCleaned__",!0)}}}function y(){this._trace=void 0}function g(t,e,n,r,o){if(void 0===t&&null!==e&&Z){if(void 0!==o&&o._returnedNonUndefined())return;if(0===(65535&r._bitField))return;n&&(n+=" ");var i="",a="";if(e._trace){for(var s=e._trace.stack.split("\n"),c=E(s),l=c.length-1;l>=0;--l){var u=c[l];if(!M.test(u)){var p=u.match(W);p&&(i="at "+p[1]+":"+p[2]+":"+p[3]+" ");break}}if(c.length>0)for(var f=c[0],l=0;l0&&(a="\n"+s[l-1]);break}}var h="a promise was created in a "+n+"handler "+i+"but was not returned from it, see http://goo.gl/rRqMUw"+a;r._warn(h,!0,e)}}function m(t,e){var n=t+" is deprecated and will be removed in a future version.";return e&&(n+=" Use "+e+" instead."),b(n)}function b(t,n,r){if(ut.warnings){var o,i=new D(t);if(n)r._attachExtraTrace(i);else if(ut.longStackTraces&&(o=e._peekContext()))o.attachExtraTrace(i);else{var a=F(i);i.stack=a.message+"\n"+a.stack.join("\n")}it("warning",i)||T(i,"",!0)}}function C(t,e){for(var n=0;n=0;--s)if(r[s]===i){a=s;break}for(var s=a;s>=0;--s){var c=r[s];if(e[o]!==c)break;e.pop(),o--}e=r}}function E(t){for(var e=[],n=0;n0&&"SyntaxError"!=t.name&&(e=e.slice(n)),e}function F(t){var e=t.stack,n=t.toString();return e="string"==typeof e&&e.length>0?j(t):[" (No stack trace)"],{message:n,stack:"SyntaxError"==t.name?e:E(e)}}function T(t,e,n){if("undefined"!=typeof console){var r;if(V.isObject(t)){var o=t.stack;r=e+z(o,t)}else r=e+String(t);"function"==typeof B?B(r,n):("function"==typeof console.log||"object"==typeof console.log)&&console.log(r)}}function x(t,e,n,r){var o=!1;try{"function"==typeof e&&(o=!0,"rejectionHandled"===t?e(r):e(n,r))}catch(i){I.throwLater(i)}"unhandledRejection"===t?it(t,n,r)||o||T(n,"Unhandled rejection "):it(t,r)}function R(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{e=t&&"function"==typeof t.toString?t.toString():V.toString(t);var n=/\[object [a-zA-Z0-9$_]+\]/;if(n.test(e))try{var r=JSON.stringify(t);e=r}catch(o){}0===e.length&&(e="(empty array)")}return"(<"+S(e)+">, no stack trace)"}function S(t){var e=41;return t.lengtha||0>s||!n||!r||n!==r||a>=s||(st=function(t){if(G.test(t))return!0;var e=O(t);return e&&e.fileName===n&&a<=e.line&&e.line<=s?!0:!1})}}function H(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);lt(this,H),e>32&&this.uncycle()}var N,L,B,U,I=e._async,D=t("./errors").Warning,V=t("./util"),Q=t("./es5"),q=V.canAttachTrace,G=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,M=/\((?:timers\.js):\d+:\d+\)/,W=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,$=null,z=null,X=!1,K=!(0==V.env("BLUEBIRD_DEBUG")||!V.env("BLUEBIRD_DEBUG")&&"development"!==V.env("NODE_ENV")),J=!(0==V.env("BLUEBIRD_WARNINGS")||!K&&!V.env("BLUEBIRD_WARNINGS")),Y=!(0==V.env("BLUEBIRD_LONG_STACK_TRACES")||!K&&!V.env("BLUEBIRD_LONG_STACK_TRACES")),Z=0!=V.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(J||!!V.env("BLUEBIRD_W_FORGOTTEN_RETURN"));!function(){function t(){for(var t=0;t0},e.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},e.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},e.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},e.prototype._warn=function(t,e,n){return b(t,e,n||this)},e.onPossiblyUnhandledRejection=function(t){var n=e._getContext();L=V.contextBind(n,t)},e.onUnhandledRejectionHandled=function(t){var n=e._getContext();N=V.contextBind(n,t)};var tt=function(){};e.longStackTraces=function(){if(I.haveItemsQueued()&&!ut.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!ut.longStackTraces&&P()){var t=e.prototype._captureStackTrace,r=e.prototype._attachExtraTrace,o=e.prototype._dereferenceTrace;ut.longStackTraces=!0,tt=function(){if(I.haveItemsQueued()&&!ut.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");e.prototype._captureStackTrace=t,e.prototype._attachExtraTrace=r,e.prototype._dereferenceTrace=o,n.deactivateLongStackTraces(),ut.longStackTraces=!1},e.prototype._captureStackTrace=_,e.prototype._attachExtraTrace=v,e.prototype._dereferenceTrace=y,n.activateLongStackTraces()}},e.hasLongStackTraces=function(){return ut.longStackTraces&&P()};var et={unhandledrejection:{before:function(){var t=V.global.onunhandledrejection;return V.global.onunhandledrejection=null,t},after:function(t){V.global.onunhandledrejection=t}},rejectionhandled:{before:function(){var t=V.global.onrejectionhandled;return V.global.onrejectionhandled=null,t},after:function(t){V.global.onrejectionhandled=t}}},nt=function(){var t=function(t,e){if(!t)return!V.global.dispatchEvent(e);var n;try{return n=t.before(),!V.global.dispatchEvent(e)}finally{t.after(n)}};try{if("function"==typeof CustomEvent){var e=new CustomEvent("CustomEvent");return V.global.dispatchEvent(e),function(e,n){e=e.toLowerCase();var r={detail:n,cancelable:!0},o=new CustomEvent(e,r);return Q.defineProperty(o,"promise",{value:n.promise}),Q.defineProperty(o,"reason",{value:n.reason}),t(et[e],o)}}if("function"==typeof Event){var e=new Event("CustomEvent");return V.global.dispatchEvent(e),function(e,n){e=e.toLowerCase();var r=new Event(e,{cancelable:!0});return r.detail=n,Q.defineProperty(r,"promise",{value:n.promise}),Q.defineProperty(r,"reason",{value:n.reason}),t(et[e],r)}}var e=document.createEvent("CustomEvent");return e.initCustomEvent("testingtheevent",!1,!0,{}),V.global.dispatchEvent(e),function(e,n){e=e.toLowerCase();var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,!1,!0,n),t(et[e],r)}}catch(n){}return function(){return!1}}(),rt=function(){return V.isNode?function(){return process.emit.apply(process,arguments)}:V.global?function(t){var e="on"+t.toLowerCase(),n=V.global[e];return n?(n.apply(V.global,[].slice.call(arguments,1)),!0):!1}:function(){return!1}}(),ot={promiseCreated:i,promiseFulfilled:i,promiseRejected:i,promiseResolved:i,promiseCancelled:i,promiseChained:function(t,e,n){return{promise:e,child:n}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,n){return{reason:e,promise:n}},rejectionHandled:i},it=function(t){var e=!1;try{e=rt.apply(null,arguments)}catch(n){I.throwLater(n),e=!0}var r=!1;try{r=nt(t,ot[t].apply(null,arguments))}catch(n){I.throwLater(n),r=!0}return r||e};e.config=function(t){if(t=Object(t),"longStackTraces"in t&&(t.longStackTraces?e.longStackTraces():!t.longStackTraces&&e.hasLongStackTraces()&&tt()),"warnings"in t){var n=t.warnings;ut.warnings=!!n,Z=ut.warnings,V.isObject(n)&&"wForgottenReturn"in n&&(Z=!!n.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!ut.cancellation){if(I.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");e.prototype._clearCancellationData=p,e.prototype._propagateFrom=f,e.prototype._onCancel=l,e.prototype._setOnCancel=u,e.prototype._attachCancellationCallback=c,e.prototype._execute=s,at=f,ut.cancellation=!0}if("monitoring"in t&&(t.monitoring&&!ut.monitoring?(ut.monitoring=!0,e.prototype._fireEvent=it):!t.monitoring&&ut.monitoring&&(ut.monitoring=!1,e.prototype._fireEvent=a)),"asyncHooks"in t&&V.nodeSupportsAsyncResource){var i=ut.asyncHooks,h=!!t.asyncHooks;i!==h&&(ut.asyncHooks=h,h?r():o())}return e},e.prototype._fireEvent=a,e.prototype._execute=function(t,e,n){try{t(e,n)}catch(r){return r}},e.prototype._onCancel=function(){},e.prototype._setOnCancel=function(t){},e.prototype._attachCancellationCallback=function(t){},e.prototype._captureStackTrace=function(){},e.prototype._attachExtraTrace=function(){},e.prototype._dereferenceTrace=function(){},e.prototype._clearCancellationData=function(){},e.prototype._propagateFrom=function(t,e){};var at=h,st=function(){return!1},ct=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;V.inherits(H,Error),n.CapturedTrace=H,H.prototype.uncycle=function(){var t=this._length;if(!(2>t)){for(var e=[],n={},r=0,o=this;void 0!==o;++r)e.push(o),o=o._parent;t=this._length=r;for(var r=t-1;r>=0;--r){var i=e[r].stack;void 0===n[i]&&(n[i]=r)}for(var r=0;t>r;++r){var a=e[r].stack,s=n[a];if(void 0!==s&&s!==r){s>0&&(e[s-1]._parent=void 0,e[s-1]._length=1),e[r]._parent=void 0,e[r]._length=1;var c=r>0?e[r-1]:this;t-1>s?(c._parent=e[s+1],c._parent.uncycle(),c._length=c._parent._length+1):(c._parent=void 0,c._length=1);for(var l=c._length+1,u=r-2;u>=0;--u)e[u]._length=l,l++;return}}}},H.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=F(t),n=e.message,r=[e.stack],o=this;void 0!==o;)r.push(E(o.stack.split("\n"))),o=o._parent;k(r),w(r),V.notEnumerableProp(t,"stack",C(n,r)),V.notEnumerableProp(t,"__stackCleaned__",!0)}};var lt=function(){var t=/^\s*at\s*/,e=function(t,e){return"string"==typeof t?t:void 0!==e.name&&void 0!==e.message?e.toString():R(e)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,$=t,z=e;var n=Error.captureStackTrace;return st=function(t){return G.test(t)},function(t,e){Error.stackTraceLimit+=6,n(t,e),Error.stackTraceLimit-=6}}var r=new Error;if("string"==typeof r.stack&&r.stack.split("\n")[0].indexOf("stackDetection@")>=0)return $=/@/,z=e,X=!0,function(t){t.stack=(new Error).stack};var o;try{throw new Error}catch(i){o="stack"in i}return"stack"in r||!o||"number"!=typeof Error.stackTraceLimit?(z=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?R(e):e.toString()},null):($=t,z=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}([]);"undefined"!=typeof console&&"undefined"!=typeof console.warn&&(B=function(t){console.warn(t)},V.isNode&&process.stderr.isTTY?B=function(t,e){var n=e?"":"";console.warn(n+t+"\n")}:V.isNode||"string"!=typeof(new Error).stack||(B=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var ut={warnings:J,longStackTraces:!1,cancellation:!1,monitoring:!1,asyncHooks:!1};return Y&&e.longStackTraces(),{asyncHooks:function(){return ut.asyncHooks},longStackTraces:function(){return ut.longStackTraces},warnings:function(){return ut.warnings},cancellation:function(){return ut.cancellation},monitoring:function(){return ut.monitoring},propagateFromFunction:function(){return at},boundValueFunction:function(){return d},checkForgottenReturns:g,setBounds:A,warn:b,deprecated:m,CapturedTrace:H,fireDomEvent:nt,fireGlobalEvent:rt}}},{"./errors":9,"./es5":10,"./util":21}],8:[function(t,e,n){"use strict";e.exports=function(t){function e(){return this.value}function n(){throw this.reason}t.prototype["return"]=t.prototype.thenReturn=function(n){return n instanceof t&&n.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:n},void 0)},t.prototype["throw"]=t.prototype.thenThrow=function(t){return this._then(n,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:t},void 0);var e=arguments[1],r=function(){throw e};return this.caught(t,r)},t.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof t&&n.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:n},void 0);var r=arguments[1];r instanceof t&&r.suppressUnhandledRejections();var o=function(){return r};return this.caught(n,o)}}},{}],9:[function(t,e,n){"use strict";function r(t,e){function n(r){return this instanceof n?(p(this,"message","string"==typeof r?r:e),p(this,"name",t),void(Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this))):new n(r)}return u(n,Error),n}function o(t){return this instanceof o?(p(this,"name","OperationalError"),p(this,"message",t),this.cause=t,this.isOperational=!0,void(t instanceof Error?(p(this,"message",t.message),p(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor))):new o(t)}var i,a,s=t("./es5"),c=s.freeze,l=t("./util"),u=l.inherits,p=l.notEnumerableProp,f=r("Warning","warning"),h=r("CancellationError","cancellation error"),d=r("TimeoutError","timeout error"),_=r("AggregateError","aggregate error");try{i=TypeError,a=RangeError}catch(v){i=r("TypeError","type error"),a=r("RangeError","range error")}for(var y="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),g=0;g1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0):!1}function s(){return l.call(this,this.promise._target()._settledValue())}function c(t){return a(this,t)?void 0:(f.e=t,f)}function l(t){var o=this.promise,l=this.handler;if(!this.called){this.called=!0;var u=this.isFinallyHandler()?l.call(o._boundValue()):l.call(o._boundValue(),t);if(u===r)return u;if(void 0!==u){o._setReturnedNonUndefined();var h=n(u,o);if(h instanceof e){if(null!=this.cancelPromise){if(h._isCancelled()){var d=new p("late cancellation observer");return o._attachExtraTrace(d),f.e=d,f}h.isPending()&&h._attachCancellationCallback(new i(this))}return h._then(s,c,void 0,this,void 0)}}}return o.isRejected()?(a(this),f.e=t,f):(a(this),t)}var u=t("./util"),p=e.CancellationError,f=u.errorObj,h=t("./catch_filter")(r);return o.prototype.isFinallyHandler=function(){return 0===this.type},i.prototype._resultCancelled=function(){a(this.finallyHandler)},e.prototype._passThrough=function(t,e,n,r){return"function"!=typeof t?this.then():this._then(n,r,void 0,new o(this,e,t),void 0)},e.prototype.lastly=e.prototype["finally"]=function(t){return this._passThrough(t,0,l,l)},e.prototype.tap=function(t){return this._passThrough(t,1,l)},e.prototype.tapCatch=function(t){var n=arguments.length;if(1===n)return this._passThrough(t,1,void 0,l);var r,o=new Array(n-1),i=0;for(r=0;n-1>r;++r){var a=arguments[r];if(!u.isObject(a))return e.reject(new TypeError("tapCatch statement predicate: expecting an object but got "+u.classString(a)));o[i++]=a}o.length=i;var s=arguments[r];return this._passThrough(h(o,s,this),1,void 0,l)},o}},{"./catch_filter":5,"./util":21}],12:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i){var a=t("./util");a.canEvaluate,a.tryCatch,a.errorObj;e.join=function(){var t,e=arguments.length-1;if(e>0&&"function"==typeof arguments[e]){t=arguments[e];var r}var o=[].slice.call(arguments);t&&o.pop();var r=new n(o).promise();return void 0!==t?r.spread(t):r}}},{"./util":21}],13:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i){var a=t("./util"),s=a.tryCatch;e.method=function(t){if("function"!=typeof t)throw new e.TypeError("expecting a function but got "+a.classString(t));return function(){var r=new e(n);r._captureStackTrace(),r._pushContext();var o=s(t).apply(this,arguments),a=r._popContext();return i.checkForgottenReturns(o,a,"Promise.method",r),r._resolveFromSyncValue(o),r}},e.attempt=e["try"]=function(t){if("function"!=typeof t)return o("expecting a function but got "+a.classString(t));var r=new e(n);r._captureStackTrace(),r._pushContext();var c;if(arguments.length>1){i.deprecated("calling Promise.try with more than 1 argument");var l=arguments[1],u=arguments[2];c=a.isArray(l)?s(t).apply(u,l):s(t).call(u,l)}else c=s(t)();var p=r._popContext();return i.checkForgottenReturns(c,p,"Promise.try",r),r._resolveFromSyncValue(c),r},e.prototype._resolveFromSyncValue=function(t){t===a.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":21}],14:[function(t,e,n){"use strict";function r(t){return t instanceof Error&&u.getPrototypeOf(t)===Error.prototype}function o(t){var e;if(r(t)){e=new l(t),e.name=t.name,e.message=t.message,e.stack=t.stack;for(var n=u.keys(t),o=0;o1){var n,r=new Array(e-1),o=0; -for(n=0;e-1>n;++n){var i=arguments[n];if(!f.isObject(i))return u("Catch statement predicate: expecting an object but got "+f.classString(i));r[o++]=i}if(r.length=o,t=arguments[n],"function"!=typeof t)throw new j("The last argument to .catch() must be a function, got "+f.toString(t));return this.then(void 0,N(r,t,this))}return this.then(void 0,t)},o.prototype.reflect=function(){return this._then(l,l,void 0,this,void 0)},o.prototype.then=function(t,e){if(A.warnings()&&arguments.length>0&&"function"!=typeof t&&"function"!=typeof e){var n=".then() only accepts functions but was passed: "+f.classString(t);arguments.length>1&&(n+=", "+f.classString(e)),this._warn(n)}return this._then(t,e,void 0,void 0,void 0)},o.prototype.done=function(t,e){var n=this._then(t,e,void 0,void 0,void 0);n._setIsFinal()},o.prototype.spread=function(t){return"function"!=typeof t?u("expecting a function but got "+f.classString(t)):this.all()._then(t,void 0,void 0,x,void 0)},o.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},o.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new P(this).promise()},o.prototype.error=function(t){return this.caught(f.originatesFromRejection,t)},o.getNewLibraryCopy=e.exports,o.is=function(t){return t instanceof o},o.fromNode=o.fromCallback=function(t){var e=new o(T);e._captureStackTrace();var n=arguments.length>1?!!Object(arguments[1]).multiArgs:!1,r=U(t)(L(e,n));return r===B&&e._rejectCallback(r.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},o.all=function(t){return new P(t).promise()},o.cast=function(t){var e=S(t);return e instanceof o||(e=new o(T),e._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},o.resolve=o.fulfilled=o.cast,o.reject=o.rejected=function(t){var e=new o(T);return e._captureStackTrace(),e._rejectCallback(t,!0),e},o.setScheduler=function(t){if("function"!=typeof t)throw new j("expecting a function but got "+f.classString(t));return k.setScheduler(t)},o.prototype._then=function(t,e,n,r,i){var a=void 0!==i,s=a?i:new o(T),c=this._target(),l=c._bitField;a||(s._propagateFrom(this,3),s._captureStackTrace(),void 0===r&&0!==(2097152&this._bitField)&&(r=0!==(50397184&l)?this._boundValue():c===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,s));var u=g();if(0!==(50397184&l)){var p,h,d=c._settlePromiseCtx;0!==(33554432&l)?(h=c._rejectionHandler0,p=t):0!==(16777216&l)?(h=c._fulfillmentHandler0,p=e,c._unsetRejectionIsUnhandled()):(d=c._settlePromiseLateCancellationObserver,h=new F("late cancellation observer"),c._attachExtraTrace(h),p=e),k.invoke(d,c,{handler:f.contextBind(u,p),promise:s,receiver:r,value:h})}else c._addCallbacks(t,e,s,r,u);return s},o.prototype._length=function(){return 65535&this._bitField},o.prototype._isFateSealed=function(){return 0!==(117506048&this._bitField)},o.prototype._isFollowing=function(){return 67108864===(67108864&this._bitField)},o.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},o.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},o.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},o.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},o.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},o.prototype._isFinal=function(){return(4194304&this._bitField)>0},o.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},o.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},o.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},o.prototype._setAsyncGuaranteed=function(){if(!k.hasCustomScheduler()){var t=this._bitField;this._bitField=t|(536870912&t)>>2^134217728}},o.prototype._setNoAsyncGuarantee=function(){this._bitField=-134217729&(536870912|this._bitField)},o.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];return e===p?void 0:void 0===e&&this._isBound()?this._boundValue():e},o.prototype._promiseAt=function(t){return this[4*t-4+2]},o.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},o.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},o.prototype._boundValue=function(){},o.prototype._migrateCallback0=function(t){var e=(t._bitField,t._fulfillmentHandler0),n=t._rejectionHandler0,r=t._promise0,o=t._receiverAt(0);void 0===o&&(o=p),this._addCallbacks(e,n,r,o,null)},o.prototype._migrateCallbackAt=function(t,e){var n=t._fulfillmentHandlerAt(e),r=t._rejectionHandlerAt(e),o=t._promiseAt(e),i=t._receiverAt(e);void 0===i&&(i=p),this._addCallbacks(n,r,o,i,null)},o.prototype._addCallbacks=function(t,e,n,r,o){var i=this._length();if(i>=65531&&(i=0,this._setLength(0)),0===i)this._promise0=n,this._receiver0=r,"function"==typeof t&&(this._fulfillmentHandler0=f.contextBind(o,t)),"function"==typeof e&&(this._rejectionHandler0=f.contextBind(o,e));else{var a=4*i-4;this[a+2]=n,this[a+3]=r,"function"==typeof t&&(this[a+0]=f.contextBind(o,t)),"function"==typeof e&&(this[a+1]=f.contextBind(o,e))}return this._setLength(i+1),i},o.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},o.prototype._resolveCallback=function(t,e){if(0===(117506048&this._bitField)){if(t===this)return this._rejectCallback(c(),!1);var n=S(t,this);if(!(n instanceof o))return this._fulfill(t);e&&this._propagateFrom(n,2);var r=n._target();if(r===this)return void this._reject(c());var i=r._bitField;if(0===(50397184&i)){var a=this._length();a>0&&r._migrateCallback0(this);for(var s=1;a>s;++s)r._migrateCallbackAt(this,s);this._setFollowing(),this._setLength(0),this._setFollowee(n)}else if(0!==(33554432&i))this._fulfill(r._value());else if(0!==(16777216&i))this._reject(r._reason());else{var l=new F("late cancellation observer");r._attachExtraTrace(l),this._reject(l)}}},o.prototype._rejectCallback=function(t,e,n){var r=f.ensureErrorObject(t),o=r===t;if(!o&&!n&&A.warnings()){var i="a promise was rejected with a non-error: "+f.classString(t);this._warn(i,!0)}this._attachExtraTrace(r,e?o:!1),this._reject(t)},o.prototype._resolveFromExecutor=function(t){if(t!==T){var e=this;this._captureStackTrace(),this._pushContext();var n=!0,r=this._execute(t,function(t){e._resolveCallback(t)},function(t){e._rejectCallback(t,n)});n=!1,this._popContext(),void 0!==r&&e._rejectCallback(r,!0)}},o.prototype._settlePromiseFromHandler=function(t,e,n,r){var o=r._bitField;if(0===(65536&o)){r._pushContext();var i;e===x?n&&"number"==typeof n.length?i=U(t).apply(this._boundValue(),n):(i=B,i.e=new j("cannot .spread() a non-array: "+f.classString(n))):i=U(t).call(e,n);var a=r._popContext();o=r._bitField,0===(65536&o)&&(i===R?r._reject(n):i===B?r._rejectCallback(i.e,!1):(A.checkForgottenReturns(i,a,"",r,this),r._resolveCallback(i)))}},o.prototype._target=function(){for(var t=this;t._isFollowing();)t=t._followee();return t},o.prototype._followee=function(){return this._rejectionHandler0},o.prototype._setFollowee=function(t){this._rejectionHandler0=t},o.prototype._settlePromise=function(t,e,r,i){var a=t instanceof o,s=this._bitField,c=0!==(134217728&s);0!==(65536&s)?(a&&t._invokeInternalOnCancel(),r instanceof H&&r.isFinallyHandler()?(r.cancelPromise=t,U(e).call(r,i)===B&&t._reject(B.e)):e===l?t._fulfill(l.call(r)):r instanceof n?r._promiseCancelled(t):a||t instanceof P?t._cancel():r.cancel()):"function"==typeof e?a?(c&&t._setAsyncGuaranteed(),this._settlePromiseFromHandler(e,r,i,t)):e.call(r,i,t):r instanceof n?r._isResolved()||(0!==(33554432&s)?r._promiseFulfilled(i,t):r._promiseRejected(i,t)):a&&(c&&t._setAsyncGuaranteed(),0!==(33554432&s)?t._fulfill(i):t._reject(i))},o.prototype._settlePromiseLateCancellationObserver=function(t){var e=t.handler,n=t.promise,r=t.receiver,i=t.value;"function"==typeof e?n instanceof o?this._settlePromiseFromHandler(e,r,i,n):e.call(r,i,n):n instanceof o&&n._reject(i)},o.prototype._settlePromiseCtx=function(t){this._settlePromise(t.promise,t.handler,t.receiver,t.value)},o.prototype._settlePromise0=function(t,e,n){var r=this._promise0,o=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(r,t,o,e)},o.prototype._clearCallbackDataAtIndex=function(t){var e=4*t-4;this[e+2]=this[e+3]=this[e+0]=this[e+1]=void 0},o.prototype._fulfill=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(t===this){var n=c();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!==(134217728&e)?this._settlePromises():k.settlePromises(this),this._dereferenceTrace())}},o.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16))return this._setRejected(),this._fulfillmentHandler0=t,this._isFinal()?k.fatalError(t,f.isNode):void((65535&e)>0?k.settlePromises(this):this._ensurePossibleRejectionHandled())},o.prototype._fulfillPromises=function(t,e){for(var n=1;t>n;n++){var r=this._fulfillmentHandlerAt(n),o=this._promiseAt(n),i=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(o,r,i,e)}},o.prototype._rejectPromises=function(t,e){for(var n=1;t>n;n++){var r=this._rejectionHandlerAt(n),o=this._promiseAt(n),i=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(o,r,i,e)}},o.prototype._settlePromises=function(){var t=this._bitField,e=65535&t;if(e>0){if(0!==(16842752&t)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,t),this._rejectPromises(e,n)}else{var r=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,r,t),this._fulfillPromises(e,r)}this._setLength(0)}this._clearCancellationData()},o.prototype._settledValue=function(){var t=this._bitField;return 0!==(33554432&t)?this._rejectionHandler0:0!==(16777216&t)?this._fulfillmentHandler0:void 0},"undefined"!=typeof Symbol&&Symbol.toStringTag&&C.defineProperty(o.prototype,Symbol.toStringTag,{get:function(){return"Object"}}),o.defer=o.pending=function(){A.deprecated("Promise.defer","new Promise");var t=new o(T);return{promise:t,resolve:i,reject:a}},f.notEnumerableProp(o,"_makeSelfResolutionError",c),t("./method")(o,T,S,u,A),t("./bind")(o,T,S,A),t("./cancel")(o,P,u,A),t("./direct_resolve")(o),t("./synchronous_inspection")(o),t("./join")(o,P,S,T,k),o.Promise=o,o.version="3.7.2",f.toFastProperties(o),f.toFastProperties(o.prototype),s({a:1}),s({b:2}),s({c:3}),s(1),s(function(){}),s(void 0),s(!1),s(new o(T)),A.setBounds(w.firstLineError,f.lastLineError),o}},{"./async":1,"./bind":2,"./cancel":4,"./catch_filter":5,"./context":6,"./debuggability":7,"./direct_resolve":8,"./errors":9,"./es5":10,"./finally":11,"./join":12,"./method":13,"./nodeback":14,"./promise_array":16,"./synchronous_inspection":19,"./thenables":20,"./util":21,async_hooks:void 0}],16:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i){function a(t){switch(t){case-2:return[];case-3:return{};case-6:return new Map}}function s(t){var r=this._promise=new e(n);t instanceof e&&(r._propagateFrom(t,3),t.suppressUnhandledRejections()),r._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}var c=t("./util");c.isArray;return c.inherits(s,i),s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function l(t,n){var i=r(this._values,this._promise);if(i instanceof e){i=i._target();var s=i._bitField;if(this._values=i,0===(50397184&s))return this._promise._setAsyncGuaranteed(),i._then(l,this._reject,void 0,this,n);if(0===(33554432&s))return 0!==(16777216&s)?this._reject(i._reason()):this._cancel();i=i._value()}if(i=c.asArray(i),null===i){var u=o("expecting an array or an iterable object but got "+c.classString(i)).reason();return void this._promise._rejectCallback(u,!1)}return 0===i.length?void(-5===n?this._resolveEmptyArray():this._resolve(a(n))):void this._iterate(i)},s.prototype._iterate=function(t){var n=this.getActualLength(t.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var o=this._promise,i=!1,a=null,s=0;n>s;++s){var c=r(t[s],o);c instanceof e?(c=c._target(),a=c._bitField):a=null,i?null!==a&&c.suppressUnhandledRejections():null!==a?0===(50397184&a)?(c._proxy(this,s),this._values[s]=c):i=0!==(33554432&a)?this._promiseFulfilled(c._value(),s):0!==(16777216&a)?this._promiseRejected(c._reason(),s):this._promiseCancelled(s):i=this._promiseFulfilled(c,s)}i||o._setAsyncGuaranteed()},s.prototype._isResolved=function(){return null===this._values},s.prototype._resolve=function(t){this._values=null,this._promise._fulfill(t)},s.prototype._cancel=function(){!this._isResolved()&&this._promise._isCancellable()&&(this._values=null,this._promise._cancel())},s.prototype._reject=function(t){this._values=null,this._promise._rejectCallback(t,!1)},s.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;return n>=this._length?(this._resolve(this._values),!0):!1},s.prototype._promiseCancelled=function(){return this._cancel(),!0},s.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},s.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var n=0;ni;++i)n[i+r]=t[i+e],t[i+e]=void 0}function o(t){this._capacity=t,this._length=0,this._front=0}o.prototype._willBeOverCapacity=function(t){return this._capacityn;++n)o[n]=t[n];return o[n]=e,o}function l(t,e,n){if(!F.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var r=Object.getOwnPropertyDescriptor(t,e);return null!=r?null==r.get&&null==r.set?r.value:n:void 0}function u(t,e,n){if(i(t))return t;var r={value:n,configurable:!0,enumerable:!1,writable:!0};return F.defineProperty(t,e,r),t}function p(t){throw t}function f(t){try{if("function"==typeof t){var e=F.names(t.prototype),n=F.isES5&&e.length>1,r=e.length>0&&!(1===e.length&&"constructor"===e[0]),o=A.test(t+"")&&F.names(t).length>0;if(n||r||o)return!0}return!1}catch(i){return!1}}function h(t){function e(){}function n(){return typeof r.foo}e.prototype=t;var r=new e;return n(),n(),t}function d(t){return H.test(t)}function _(t,e,n){for(var r=new Array(t),o=0;t>o;++o)r[o]=e+o+n;return r}function v(t){try{return t+""}catch(e){return"[no string representation]"}}function y(t){return t instanceof Error||null!==t&&"object"==typeof t&&"string"==typeof t.message&&"string"==typeof t.name}function g(t){try{u(t,"isOperational",!0)}catch(e){}}function m(t){return null==t?!1:t instanceof Error.__BluebirdErrorTypes__.OperationalError||t.isOperational===!0}function b(t){return y(t)&&F.propertyIsWritable(t,"stack")}function C(t){return{}.toString.call(t)}function w(t,e,n){for(var r=F.names(t),o=0;o10||t[0]>0}(),V.nodeSupportsAsyncResource=V.isNode&&function(){var e=!1;try{var n=t("async_hooks").AsyncResource;e="function"==typeof n.prototype.runInAsyncScope}catch(r){e=!1}return e}(),V.isNode&&V.toFastProperties(process);try{throw new Error}catch(Q){V.lastLineError=Q}e.exports=V},{"./es5":10,async_hooks:void 0}]},{},[3])(3)}),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise); \ No newline at end of file diff --git a/node_modules/bluebird/js/browser/bluebird.js b/node_modules/bluebird/js/browser/bluebird.js deleted file mode 100644 index 7f0686f..0000000 --- a/node_modules/bluebird/js/browser/bluebird.js +++ /dev/null @@ -1,5778 +0,0 @@ -/* @preserve - * The MIT License (MIT) - * - * Copyright (c) 2013-2018 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -/** - * bluebird build version 3.7.2 - * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each -*/ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_=="function"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_=="function"&&_dereq_;for(var o=0;o 0) { - _drainQueueStep(queue); - } -} - -function _drainQueueStep(queue) { - var fn = queue.shift(); - if (typeof fn !== "function") { - fn._settlePromises(); - } else { - var receiver = queue.shift(); - var arg = queue.shift(); - fn.call(receiver, arg); - } -} - -Async.prototype._drainQueues = function () { - _drainQueue(this._normalQueue); - this._reset(); - this._haveDrainedQueues = true; - _drainQueue(this._lateQueue); -}; - -Async.prototype._queueTick = function () { - if (!this._isTickUsed) { - this._isTickUsed = true; - this._schedule(this.drainQueues); - } -}; - -Async.prototype._reset = function () { - this._isTickUsed = false; -}; - -module.exports = Async; -module.exports.firstLineError = firstLineError; - -},{"./queue":26,"./schedule":29}],3:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) { -var calledBind = false; -var rejectThis = function(_, e) { - this._reject(e); -}; - -var targetRejected = function(e, context) { - context.promiseRejectionQueued = true; - context.bindingPromise._then(rejectThis, rejectThis, null, this, e); -}; - -var bindingResolved = function(thisArg, context) { - if (((this._bitField & 50397184) === 0)) { - this._resolveCallback(context.target); - } -}; - -var bindingRejected = function(e, context) { - if (!context.promiseRejectionQueued) this._reject(e); -}; - -Promise.prototype.bind = function (thisArg) { - if (!calledBind) { - calledBind = true; - Promise.prototype._propagateFrom = debug.propagateFromFunction(); - Promise.prototype._boundValue = debug.boundValueFunction(); - } - var maybePromise = tryConvertToPromise(thisArg); - var ret = new Promise(INTERNAL); - ret._propagateFrom(this, 1); - var target = this._target(); - ret._setBoundTo(maybePromise); - if (maybePromise instanceof Promise) { - var context = { - promiseRejectionQueued: false, - promise: ret, - target: target, - bindingPromise: maybePromise - }; - target._then(INTERNAL, targetRejected, undefined, ret, context); - maybePromise._then( - bindingResolved, bindingRejected, undefined, ret, context); - ret._setOnCancel(maybePromise); - } else { - ret._resolveCallback(target); - } - return ret; -}; - -Promise.prototype._setBoundTo = function (obj) { - if (obj !== undefined) { - this._bitField = this._bitField | 2097152; - this._boundTo = obj; - } else { - this._bitField = this._bitField & (~2097152); - } -}; - -Promise.prototype._isBound = function () { - return (this._bitField & 2097152) === 2097152; -}; - -Promise.bind = function (thisArg, value) { - return Promise.resolve(value).bind(thisArg); -}; -}; - -},{}],4:[function(_dereq_,module,exports){ -"use strict"; -var old; -if (typeof Promise !== "undefined") old = Promise; -function noConflict() { - try { if (Promise === bluebird) Promise = old; } - catch (e) {} - return bluebird; -} -var bluebird = _dereq_("./promise")(); -bluebird.noConflict = noConflict; -module.exports = bluebird; - -},{"./promise":22}],5:[function(_dereq_,module,exports){ -"use strict"; -var cr = Object.create; -if (cr) { - var callerCache = cr(null); - var getterCache = cr(null); - callerCache[" size"] = getterCache[" size"] = 0; -} - -module.exports = function(Promise) { -var util = _dereq_("./util"); -var canEvaluate = util.canEvaluate; -var isIdentifier = util.isIdentifier; - -var getMethodCaller; -var getGetter; -if (!true) { -var makeMethodCaller = function (methodName) { - return new Function("ensureMethod", " \n\ - return function(obj) { \n\ - 'use strict' \n\ - var len = this.length; \n\ - ensureMethod(obj, 'methodName'); \n\ - switch(len) { \n\ - case 1: return obj.methodName(this[0]); \n\ - case 2: return obj.methodName(this[0], this[1]); \n\ - case 3: return obj.methodName(this[0], this[1], this[2]); \n\ - case 0: return obj.methodName(); \n\ - default: \n\ - return obj.methodName.apply(obj, this); \n\ - } \n\ - }; \n\ - ".replace(/methodName/g, methodName))(ensureMethod); -}; - -var makeGetter = function (propertyName) { - return new Function("obj", " \n\ - 'use strict'; \n\ - return obj.propertyName; \n\ - ".replace("propertyName", propertyName)); -}; - -var getCompiled = function(name, compiler, cache) { - var ret = cache[name]; - if (typeof ret !== "function") { - if (!isIdentifier(name)) { - return null; - } - ret = compiler(name); - cache[name] = ret; - cache[" size"]++; - if (cache[" size"] > 512) { - var keys = Object.keys(cache); - for (var i = 0; i < 256; ++i) delete cache[keys[i]]; - cache[" size"] = keys.length - 256; - } - } - return ret; -}; - -getMethodCaller = function(name) { - return getCompiled(name, makeMethodCaller, callerCache); -}; - -getGetter = function(name) { - return getCompiled(name, makeGetter, getterCache); -}; -} - -function ensureMethod(obj, methodName) { - var fn; - if (obj != null) fn = obj[methodName]; - if (typeof fn !== "function") { - var message = "Object " + util.classString(obj) + " has no method '" + - util.toString(methodName) + "'"; - throw new Promise.TypeError(message); - } - return fn; -} - -function caller(obj) { - var methodName = this.pop(); - var fn = ensureMethod(obj, methodName); - return fn.apply(obj, this); -} -Promise.prototype.call = function (methodName) { - var args = [].slice.call(arguments, 1);; - if (!true) { - if (canEvaluate) { - var maybeCaller = getMethodCaller(methodName); - if (maybeCaller !== null) { - return this._then( - maybeCaller, undefined, undefined, args, undefined); - } - } - } - args.push(methodName); - return this._then(caller, undefined, undefined, args, undefined); -}; - -function namedGetter(obj) { - return obj[this]; -} -function indexedGetter(obj) { - var index = +this; - if (index < 0) index = Math.max(0, index + obj.length); - return obj[index]; -} -Promise.prototype.get = function (propertyName) { - var isIndex = (typeof propertyName === "number"); - var getter; - if (!isIndex) { - if (canEvaluate) { - var maybeGetter = getGetter(propertyName); - getter = maybeGetter !== null ? maybeGetter : namedGetter; - } else { - getter = namedGetter; - } - } else { - getter = indexedGetter; - } - return this._then(getter, undefined, undefined, propertyName, undefined); -}; -}; - -},{"./util":36}],6:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, PromiseArray, apiRejection, debug) { -var util = _dereq_("./util"); -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var async = Promise._async; - -Promise.prototype["break"] = Promise.prototype.cancel = function() { - if (!debug.cancellation()) return this._warn("cancellation is disabled"); - - var promise = this; - var child = promise; - while (promise._isCancellable()) { - if (!promise._cancelBy(child)) { - if (child._isFollowing()) { - child._followee().cancel(); - } else { - child._cancelBranched(); - } - break; - } - - var parent = promise._cancellationParent; - if (parent == null || !parent._isCancellable()) { - if (promise._isFollowing()) { - promise._followee().cancel(); - } else { - promise._cancelBranched(); - } - break; - } else { - if (promise._isFollowing()) promise._followee().cancel(); - promise._setWillBeCancelled(); - child = promise; - promise = parent; - } - } -}; - -Promise.prototype._branchHasCancelled = function() { - this._branchesRemainingToCancel--; -}; - -Promise.prototype._enoughBranchesHaveCancelled = function() { - return this._branchesRemainingToCancel === undefined || - this._branchesRemainingToCancel <= 0; -}; - -Promise.prototype._cancelBy = function(canceller) { - if (canceller === this) { - this._branchesRemainingToCancel = 0; - this._invokeOnCancel(); - return true; - } else { - this._branchHasCancelled(); - if (this._enoughBranchesHaveCancelled()) { - this._invokeOnCancel(); - return true; - } - } - return false; -}; - -Promise.prototype._cancelBranched = function() { - if (this._enoughBranchesHaveCancelled()) { - this._cancel(); - } -}; - -Promise.prototype._cancel = function() { - if (!this._isCancellable()) return; - this._setCancelled(); - async.invoke(this._cancelPromises, this, undefined); -}; - -Promise.prototype._cancelPromises = function() { - if (this._length() > 0) this._settlePromises(); -}; - -Promise.prototype._unsetOnCancel = function() { - this._onCancelField = undefined; -}; - -Promise.prototype._isCancellable = function() { - return this.isPending() && !this._isCancelled(); -}; - -Promise.prototype.isCancellable = function() { - return this.isPending() && !this.isCancelled(); -}; - -Promise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) { - if (util.isArray(onCancelCallback)) { - for (var i = 0; i < onCancelCallback.length; ++i) { - this._doInvokeOnCancel(onCancelCallback[i], internalOnly); - } - } else if (onCancelCallback !== undefined) { - if (typeof onCancelCallback === "function") { - if (!internalOnly) { - var e = tryCatch(onCancelCallback).call(this._boundValue()); - if (e === errorObj) { - this._attachExtraTrace(e.e); - async.throwLater(e.e); - } - } - } else { - onCancelCallback._resultCancelled(this); - } - } -}; - -Promise.prototype._invokeOnCancel = function() { - var onCancelCallback = this._onCancel(); - this._unsetOnCancel(); - async.invoke(this._doInvokeOnCancel, this, onCancelCallback); -}; - -Promise.prototype._invokeInternalOnCancel = function() { - if (this._isCancellable()) { - this._doInvokeOnCancel(this._onCancel(), true); - this._unsetOnCancel(); - } -}; - -Promise.prototype._resultCancelled = function() { - this.cancel(); -}; - -}; - -},{"./util":36}],7:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(NEXT_FILTER) { -var util = _dereq_("./util"); -var getKeys = _dereq_("./es5").keys; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; - -function catchFilter(instances, cb, promise) { - return function(e) { - var boundTo = promise._boundValue(); - predicateLoop: for (var i = 0; i < instances.length; ++i) { - var item = instances[i]; - - if (item === Error || - (item != null && item.prototype instanceof Error)) { - if (e instanceof item) { - return tryCatch(cb).call(boundTo, e); - } - } else if (typeof item === "function") { - var matchesPredicate = tryCatch(item).call(boundTo, e); - if (matchesPredicate === errorObj) { - return matchesPredicate; - } else if (matchesPredicate) { - return tryCatch(cb).call(boundTo, e); - } - } else if (util.isObject(e)) { - var keys = getKeys(item); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - if (item[key] != e[key]) { - continue predicateLoop; - } - } - return tryCatch(cb).call(boundTo, e); - } - } - return NEXT_FILTER; - }; -} - -return catchFilter; -}; - -},{"./es5":13,"./util":36}],8:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -var longStackTraces = false; -var contextStack = []; - -Promise.prototype._promiseCreated = function() {}; -Promise.prototype._pushContext = function() {}; -Promise.prototype._popContext = function() {return null;}; -Promise._peekContext = Promise.prototype._peekContext = function() {}; - -function Context() { - this._trace = new Context.CapturedTrace(peekContext()); -} -Context.prototype._pushContext = function () { - if (this._trace !== undefined) { - this._trace._promiseCreated = null; - contextStack.push(this._trace); - } -}; - -Context.prototype._popContext = function () { - if (this._trace !== undefined) { - var trace = contextStack.pop(); - var ret = trace._promiseCreated; - trace._promiseCreated = null; - return ret; - } - return null; -}; - -function createContext() { - if (longStackTraces) return new Context(); -} - -function peekContext() { - var lastIndex = contextStack.length - 1; - if (lastIndex >= 0) { - return contextStack[lastIndex]; - } - return undefined; -} -Context.CapturedTrace = null; -Context.create = createContext; -Context.deactivateLongStackTraces = function() {}; -Context.activateLongStackTraces = function() { - var Promise_pushContext = Promise.prototype._pushContext; - var Promise_popContext = Promise.prototype._popContext; - var Promise_PeekContext = Promise._peekContext; - var Promise_peekContext = Promise.prototype._peekContext; - var Promise_promiseCreated = Promise.prototype._promiseCreated; - Context.deactivateLongStackTraces = function() { - Promise.prototype._pushContext = Promise_pushContext; - Promise.prototype._popContext = Promise_popContext; - Promise._peekContext = Promise_PeekContext; - Promise.prototype._peekContext = Promise_peekContext; - Promise.prototype._promiseCreated = Promise_promiseCreated; - longStackTraces = false; - }; - longStackTraces = true; - Promise.prototype._pushContext = Context.prototype._pushContext; - Promise.prototype._popContext = Context.prototype._popContext; - Promise._peekContext = Promise.prototype._peekContext = peekContext; - Promise.prototype._promiseCreated = function() { - var ctx = this._peekContext(); - if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this; - }; -}; -return Context; -}; - -},{}],9:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, Context, - enableAsyncHooks, disableAsyncHooks) { -var async = Promise._async; -var Warning = _dereq_("./errors").Warning; -var util = _dereq_("./util"); -var es5 = _dereq_("./es5"); -var canAttachTrace = util.canAttachTrace; -var unhandledRejectionHandled; -var possiblyUnhandledRejection; -var bluebirdFramePattern = - /[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/; -var nodeFramePattern = /\((?:timers\.js):\d+:\d+\)/; -var parseLinePattern = /[\/<\(](.+?):(\d+):(\d+)\)?\s*$/; -var stackFramePattern = null; -var formatStack = null; -var indentStackFrames = false; -var printWarning; -var debugging = !!(util.env("BLUEBIRD_DEBUG") != 0 && - (true || - util.env("BLUEBIRD_DEBUG") || - util.env("NODE_ENV") === "development")); - -var warnings = !!(util.env("BLUEBIRD_WARNINGS") != 0 && - (debugging || util.env("BLUEBIRD_WARNINGS"))); - -var longStackTraces = !!(util.env("BLUEBIRD_LONG_STACK_TRACES") != 0 && - (debugging || util.env("BLUEBIRD_LONG_STACK_TRACES"))); - -var wForgottenReturn = util.env("BLUEBIRD_W_FORGOTTEN_RETURN") != 0 && - (warnings || !!util.env("BLUEBIRD_W_FORGOTTEN_RETURN")); - -var deferUnhandledRejectionCheck; -(function() { - var promises = []; - - function unhandledRejectionCheck() { - for (var i = 0; i < promises.length; ++i) { - promises[i]._notifyUnhandledRejection(); - } - unhandledRejectionClear(); - } - - function unhandledRejectionClear() { - promises.length = 0; - } - - deferUnhandledRejectionCheck = function(promise) { - promises.push(promise); - setTimeout(unhandledRejectionCheck, 1); - }; - - es5.defineProperty(Promise, "_unhandledRejectionCheck", { - value: unhandledRejectionCheck - }); - es5.defineProperty(Promise, "_unhandledRejectionClear", { - value: unhandledRejectionClear - }); -})(); - -Promise.prototype.suppressUnhandledRejections = function() { - var target = this._target(); - target._bitField = ((target._bitField & (~1048576)) | - 524288); -}; - -Promise.prototype._ensurePossibleRejectionHandled = function () { - if ((this._bitField & 524288) !== 0) return; - this._setRejectionIsUnhandled(); - deferUnhandledRejectionCheck(this); -}; - -Promise.prototype._notifyUnhandledRejectionIsHandled = function () { - fireRejectionEvent("rejectionHandled", - unhandledRejectionHandled, undefined, this); -}; - -Promise.prototype._setReturnedNonUndefined = function() { - this._bitField = this._bitField | 268435456; -}; - -Promise.prototype._returnedNonUndefined = function() { - return (this._bitField & 268435456) !== 0; -}; - -Promise.prototype._notifyUnhandledRejection = function () { - if (this._isRejectionUnhandled()) { - var reason = this._settledValue(); - this._setUnhandledRejectionIsNotified(); - fireRejectionEvent("unhandledRejection", - possiblyUnhandledRejection, reason, this); - } -}; - -Promise.prototype._setUnhandledRejectionIsNotified = function () { - this._bitField = this._bitField | 262144; -}; - -Promise.prototype._unsetUnhandledRejectionIsNotified = function () { - this._bitField = this._bitField & (~262144); -}; - -Promise.prototype._isUnhandledRejectionNotified = function () { - return (this._bitField & 262144) > 0; -}; - -Promise.prototype._setRejectionIsUnhandled = function () { - this._bitField = this._bitField | 1048576; -}; - -Promise.prototype._unsetRejectionIsUnhandled = function () { - this._bitField = this._bitField & (~1048576); - if (this._isUnhandledRejectionNotified()) { - this._unsetUnhandledRejectionIsNotified(); - this._notifyUnhandledRejectionIsHandled(); - } -}; - -Promise.prototype._isRejectionUnhandled = function () { - return (this._bitField & 1048576) > 0; -}; - -Promise.prototype._warn = function(message, shouldUseOwnTrace, promise) { - return warn(message, shouldUseOwnTrace, promise || this); -}; - -Promise.onPossiblyUnhandledRejection = function (fn) { - var context = Promise._getContext(); - possiblyUnhandledRejection = util.contextBind(context, fn); -}; - -Promise.onUnhandledRejectionHandled = function (fn) { - var context = Promise._getContext(); - unhandledRejectionHandled = util.contextBind(context, fn); -}; - -var disableLongStackTraces = function() {}; -Promise.longStackTraces = function () { - if (async.haveItemsQueued() && !config.longStackTraces) { - throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - if (!config.longStackTraces && longStackTracesIsSupported()) { - var Promise_captureStackTrace = Promise.prototype._captureStackTrace; - var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace; - var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace; - config.longStackTraces = true; - disableLongStackTraces = function() { - if (async.haveItemsQueued() && !config.longStackTraces) { - throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - Promise.prototype._captureStackTrace = Promise_captureStackTrace; - Promise.prototype._attachExtraTrace = Promise_attachExtraTrace; - Promise.prototype._dereferenceTrace = Promise_dereferenceTrace; - Context.deactivateLongStackTraces(); - config.longStackTraces = false; - }; - Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace; - Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace; - Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace; - Context.activateLongStackTraces(); - } -}; - -Promise.hasLongStackTraces = function () { - return config.longStackTraces && longStackTracesIsSupported(); -}; - - -var legacyHandlers = { - unhandledrejection: { - before: function() { - var ret = util.global.onunhandledrejection; - util.global.onunhandledrejection = null; - return ret; - }, - after: function(fn) { - util.global.onunhandledrejection = fn; - } - }, - rejectionhandled: { - before: function() { - var ret = util.global.onrejectionhandled; - util.global.onrejectionhandled = null; - return ret; - }, - after: function(fn) { - util.global.onrejectionhandled = fn; - } - } -}; - -var fireDomEvent = (function() { - var dispatch = function(legacy, e) { - if (legacy) { - var fn; - try { - fn = legacy.before(); - return !util.global.dispatchEvent(e); - } finally { - legacy.after(fn); - } - } else { - return !util.global.dispatchEvent(e); - } - }; - try { - if (typeof CustomEvent === "function") { - var event = new CustomEvent("CustomEvent"); - util.global.dispatchEvent(event); - return function(name, event) { - name = name.toLowerCase(); - var eventData = { - detail: event, - cancelable: true - }; - var domEvent = new CustomEvent(name, eventData); - es5.defineProperty( - domEvent, "promise", {value: event.promise}); - es5.defineProperty( - domEvent, "reason", {value: event.reason}); - - return dispatch(legacyHandlers[name], domEvent); - }; - } else if (typeof Event === "function") { - var event = new Event("CustomEvent"); - util.global.dispatchEvent(event); - return function(name, event) { - name = name.toLowerCase(); - var domEvent = new Event(name, { - cancelable: true - }); - domEvent.detail = event; - es5.defineProperty(domEvent, "promise", {value: event.promise}); - es5.defineProperty(domEvent, "reason", {value: event.reason}); - return dispatch(legacyHandlers[name], domEvent); - }; - } else { - var event = document.createEvent("CustomEvent"); - event.initCustomEvent("testingtheevent", false, true, {}); - util.global.dispatchEvent(event); - return function(name, event) { - name = name.toLowerCase(); - var domEvent = document.createEvent("CustomEvent"); - domEvent.initCustomEvent(name, false, true, - event); - return dispatch(legacyHandlers[name], domEvent); - }; - } - } catch (e) {} - return function() { - return false; - }; -})(); - -var fireGlobalEvent = (function() { - if (util.isNode) { - return function() { - return process.emit.apply(process, arguments); - }; - } else { - if (!util.global) { - return function() { - return false; - }; - } - return function(name) { - var methodName = "on" + name.toLowerCase(); - var method = util.global[methodName]; - if (!method) return false; - method.apply(util.global, [].slice.call(arguments, 1)); - return true; - }; - } -})(); - -function generatePromiseLifecycleEventObject(name, promise) { - return {promise: promise}; -} - -var eventToObjectGenerator = { - promiseCreated: generatePromiseLifecycleEventObject, - promiseFulfilled: generatePromiseLifecycleEventObject, - promiseRejected: generatePromiseLifecycleEventObject, - promiseResolved: generatePromiseLifecycleEventObject, - promiseCancelled: generatePromiseLifecycleEventObject, - promiseChained: function(name, promise, child) { - return {promise: promise, child: child}; - }, - warning: function(name, warning) { - return {warning: warning}; - }, - unhandledRejection: function (name, reason, promise) { - return {reason: reason, promise: promise}; - }, - rejectionHandled: generatePromiseLifecycleEventObject -}; - -var activeFireEvent = function (name) { - var globalEventFired = false; - try { - globalEventFired = fireGlobalEvent.apply(null, arguments); - } catch (e) { - async.throwLater(e); - globalEventFired = true; - } - - var domEventFired = false; - try { - domEventFired = fireDomEvent(name, - eventToObjectGenerator[name].apply(null, arguments)); - } catch (e) { - async.throwLater(e); - domEventFired = true; - } - - return domEventFired || globalEventFired; -}; - -Promise.config = function(opts) { - opts = Object(opts); - if ("longStackTraces" in opts) { - if (opts.longStackTraces) { - Promise.longStackTraces(); - } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) { - disableLongStackTraces(); - } - } - if ("warnings" in opts) { - var warningsOption = opts.warnings; - config.warnings = !!warningsOption; - wForgottenReturn = config.warnings; - - if (util.isObject(warningsOption)) { - if ("wForgottenReturn" in warningsOption) { - wForgottenReturn = !!warningsOption.wForgottenReturn; - } - } - } - if ("cancellation" in opts && opts.cancellation && !config.cancellation) { - if (async.haveItemsQueued()) { - throw new Error( - "cannot enable cancellation after promises are in use"); - } - Promise.prototype._clearCancellationData = - cancellationClearCancellationData; - Promise.prototype._propagateFrom = cancellationPropagateFrom; - Promise.prototype._onCancel = cancellationOnCancel; - Promise.prototype._setOnCancel = cancellationSetOnCancel; - Promise.prototype._attachCancellationCallback = - cancellationAttachCancellationCallback; - Promise.prototype._execute = cancellationExecute; - propagateFromFunction = cancellationPropagateFrom; - config.cancellation = true; - } - if ("monitoring" in opts) { - if (opts.monitoring && !config.monitoring) { - config.monitoring = true; - Promise.prototype._fireEvent = activeFireEvent; - } else if (!opts.monitoring && config.monitoring) { - config.monitoring = false; - Promise.prototype._fireEvent = defaultFireEvent; - } - } - if ("asyncHooks" in opts && util.nodeSupportsAsyncResource) { - var prev = config.asyncHooks; - var cur = !!opts.asyncHooks; - if (prev !== cur) { - config.asyncHooks = cur; - if (cur) { - enableAsyncHooks(); - } else { - disableAsyncHooks(); - } - } - } - return Promise; -}; - -function defaultFireEvent() { return false; } - -Promise.prototype._fireEvent = defaultFireEvent; -Promise.prototype._execute = function(executor, resolve, reject) { - try { - executor(resolve, reject); - } catch (e) { - return e; - } -}; -Promise.prototype._onCancel = function () {}; -Promise.prototype._setOnCancel = function (handler) { ; }; -Promise.prototype._attachCancellationCallback = function(onCancel) { - ; -}; -Promise.prototype._captureStackTrace = function () {}; -Promise.prototype._attachExtraTrace = function () {}; -Promise.prototype._dereferenceTrace = function () {}; -Promise.prototype._clearCancellationData = function() {}; -Promise.prototype._propagateFrom = function (parent, flags) { - ; - ; -}; - -function cancellationExecute(executor, resolve, reject) { - var promise = this; - try { - executor(resolve, reject, function(onCancel) { - if (typeof onCancel !== "function") { - throw new TypeError("onCancel must be a function, got: " + - util.toString(onCancel)); - } - promise._attachCancellationCallback(onCancel); - }); - } catch (e) { - return e; - } -} - -function cancellationAttachCancellationCallback(onCancel) { - if (!this._isCancellable()) return this; - - var previousOnCancel = this._onCancel(); - if (previousOnCancel !== undefined) { - if (util.isArray(previousOnCancel)) { - previousOnCancel.push(onCancel); - } else { - this._setOnCancel([previousOnCancel, onCancel]); - } - } else { - this._setOnCancel(onCancel); - } -} - -function cancellationOnCancel() { - return this._onCancelField; -} - -function cancellationSetOnCancel(onCancel) { - this._onCancelField = onCancel; -} - -function cancellationClearCancellationData() { - this._cancellationParent = undefined; - this._onCancelField = undefined; -} - -function cancellationPropagateFrom(parent, flags) { - if ((flags & 1) !== 0) { - this._cancellationParent = parent; - var branchesRemainingToCancel = parent._branchesRemainingToCancel; - if (branchesRemainingToCancel === undefined) { - branchesRemainingToCancel = 0; - } - parent._branchesRemainingToCancel = branchesRemainingToCancel + 1; - } - if ((flags & 2) !== 0 && parent._isBound()) { - this._setBoundTo(parent._boundTo); - } -} - -function bindingPropagateFrom(parent, flags) { - if ((flags & 2) !== 0 && parent._isBound()) { - this._setBoundTo(parent._boundTo); - } -} -var propagateFromFunction = bindingPropagateFrom; - -function boundValueFunction() { - var ret = this._boundTo; - if (ret !== undefined) { - if (ret instanceof Promise) { - if (ret.isFulfilled()) { - return ret.value(); - } else { - return undefined; - } - } - } - return ret; -} - -function longStackTracesCaptureStackTrace() { - this._trace = new CapturedTrace(this._peekContext()); -} - -function longStackTracesAttachExtraTrace(error, ignoreSelf) { - if (canAttachTrace(error)) { - var trace = this._trace; - if (trace !== undefined) { - if (ignoreSelf) trace = trace._parent; - } - if (trace !== undefined) { - trace.attachExtraTrace(error); - } else if (!error.__stackCleaned__) { - var parsed = parseStackAndMessage(error); - util.notEnumerableProp(error, "stack", - parsed.message + "\n" + parsed.stack.join("\n")); - util.notEnumerableProp(error, "__stackCleaned__", true); - } - } -} - -function longStackTracesDereferenceTrace() { - this._trace = undefined; -} - -function checkForgottenReturns(returnValue, promiseCreated, name, promise, - parent) { - if (returnValue === undefined && promiseCreated !== null && - wForgottenReturn) { - if (parent !== undefined && parent._returnedNonUndefined()) return; - if ((promise._bitField & 65535) === 0) return; - - if (name) name = name + " "; - var handlerLine = ""; - var creatorLine = ""; - if (promiseCreated._trace) { - var traceLines = promiseCreated._trace.stack.split("\n"); - var stack = cleanStack(traceLines); - for (var i = stack.length - 1; i >= 0; --i) { - var line = stack[i]; - if (!nodeFramePattern.test(line)) { - var lineMatches = line.match(parseLinePattern); - if (lineMatches) { - handlerLine = "at " + lineMatches[1] + - ":" + lineMatches[2] + ":" + lineMatches[3] + " "; - } - break; - } - } - - if (stack.length > 0) { - var firstUserLine = stack[0]; - for (var i = 0; i < traceLines.length; ++i) { - - if (traceLines[i] === firstUserLine) { - if (i > 0) { - creatorLine = "\n" + traceLines[i - 1]; - } - break; - } - } - - } - } - var msg = "a promise was created in a " + name + - "handler " + handlerLine + "but was not returned from it, " + - "see http://goo.gl/rRqMUw" + - creatorLine; - promise._warn(msg, true, promiseCreated); - } -} - -function deprecated(name, replacement) { - var message = name + - " is deprecated and will be removed in a future version."; - if (replacement) message += " Use " + replacement + " instead."; - return warn(message); -} - -function warn(message, shouldUseOwnTrace, promise) { - if (!config.warnings) return; - var warning = new Warning(message); - var ctx; - if (shouldUseOwnTrace) { - promise._attachExtraTrace(warning); - } else if (config.longStackTraces && (ctx = Promise._peekContext())) { - ctx.attachExtraTrace(warning); - } else { - var parsed = parseStackAndMessage(warning); - warning.stack = parsed.message + "\n" + parsed.stack.join("\n"); - } - - if (!activeFireEvent("warning", warning)) { - formatAndLogError(warning, "", true); - } -} - -function reconstructStack(message, stacks) { - for (var i = 0; i < stacks.length - 1; ++i) { - stacks[i].push("From previous event:"); - stacks[i] = stacks[i].join("\n"); - } - if (i < stacks.length) { - stacks[i] = stacks[i].join("\n"); - } - return message + "\n" + stacks.join("\n"); -} - -function removeDuplicateOrEmptyJumps(stacks) { - for (var i = 0; i < stacks.length; ++i) { - if (stacks[i].length === 0 || - ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) { - stacks.splice(i, 1); - i--; - } - } -} - -function removeCommonRoots(stacks) { - var current = stacks[0]; - for (var i = 1; i < stacks.length; ++i) { - var prev = stacks[i]; - var currentLastIndex = current.length - 1; - var currentLastLine = current[currentLastIndex]; - var commonRootMeetPoint = -1; - - for (var j = prev.length - 1; j >= 0; --j) { - if (prev[j] === currentLastLine) { - commonRootMeetPoint = j; - break; - } - } - - for (var j = commonRootMeetPoint; j >= 0; --j) { - var line = prev[j]; - if (current[currentLastIndex] === line) { - current.pop(); - currentLastIndex--; - } else { - break; - } - } - current = prev; - } -} - -function cleanStack(stack) { - var ret = []; - for (var i = 0; i < stack.length; ++i) { - var line = stack[i]; - var isTraceLine = " (No stack trace)" === line || - stackFramePattern.test(line); - var isInternalFrame = isTraceLine && shouldIgnore(line); - if (isTraceLine && !isInternalFrame) { - if (indentStackFrames && line.charAt(0) !== " ") { - line = " " + line; - } - ret.push(line); - } - } - return ret; -} - -function stackFramesAsArray(error) { - var stack = error.stack.replace(/\s+$/g, "").split("\n"); - for (var i = 0; i < stack.length; ++i) { - var line = stack[i]; - if (" (No stack trace)" === line || stackFramePattern.test(line)) { - break; - } - } - if (i > 0 && error.name != "SyntaxError") { - stack = stack.slice(i); - } - return stack; -} - -function parseStackAndMessage(error) { - var stack = error.stack; - var message = error.toString(); - stack = typeof stack === "string" && stack.length > 0 - ? stackFramesAsArray(error) : [" (No stack trace)"]; - return { - message: message, - stack: error.name == "SyntaxError" ? stack : cleanStack(stack) - }; -} - -function formatAndLogError(error, title, isSoft) { - if (typeof console !== "undefined") { - var message; - if (util.isObject(error)) { - var stack = error.stack; - message = title + formatStack(stack, error); - } else { - message = title + String(error); - } - if (typeof printWarning === "function") { - printWarning(message, isSoft); - } else if (typeof console.log === "function" || - typeof console.log === "object") { - console.log(message); - } - } -} - -function fireRejectionEvent(name, localHandler, reason, promise) { - var localEventFired = false; - try { - if (typeof localHandler === "function") { - localEventFired = true; - if (name === "rejectionHandled") { - localHandler(promise); - } else { - localHandler(reason, promise); - } - } - } catch (e) { - async.throwLater(e); - } - - if (name === "unhandledRejection") { - if (!activeFireEvent(name, reason, promise) && !localEventFired) { - formatAndLogError(reason, "Unhandled rejection "); - } - } else { - activeFireEvent(name, promise); - } -} - -function formatNonError(obj) { - var str; - if (typeof obj === "function") { - str = "[function " + - (obj.name || "anonymous") + - "]"; - } else { - str = obj && typeof obj.toString === "function" - ? obj.toString() : util.toString(obj); - var ruselessToString = /\[object [a-zA-Z0-9$_]+\]/; - if (ruselessToString.test(str)) { - try { - var newStr = JSON.stringify(obj); - str = newStr; - } - catch(e) { - - } - } - if (str.length === 0) { - str = "(empty array)"; - } - } - return ("(<" + snip(str) + ">, no stack trace)"); -} - -function snip(str) { - var maxChars = 41; - if (str.length < maxChars) { - return str; - } - return str.substr(0, maxChars - 3) + "..."; -} - -function longStackTracesIsSupported() { - return typeof captureStackTrace === "function"; -} - -var shouldIgnore = function() { return false; }; -var parseLineInfoRegex = /[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/; -function parseLineInfo(line) { - var matches = line.match(parseLineInfoRegex); - if (matches) { - return { - fileName: matches[1], - line: parseInt(matches[2], 10) - }; - } -} - -function setBounds(firstLineError, lastLineError) { - if (!longStackTracesIsSupported()) return; - var firstStackLines = (firstLineError.stack || "").split("\n"); - var lastStackLines = (lastLineError.stack || "").split("\n"); - var firstIndex = -1; - var lastIndex = -1; - var firstFileName; - var lastFileName; - for (var i = 0; i < firstStackLines.length; ++i) { - var result = parseLineInfo(firstStackLines[i]); - if (result) { - firstFileName = result.fileName; - firstIndex = result.line; - break; - } - } - for (var i = 0; i < lastStackLines.length; ++i) { - var result = parseLineInfo(lastStackLines[i]); - if (result) { - lastFileName = result.fileName; - lastIndex = result.line; - break; - } - } - if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName || - firstFileName !== lastFileName || firstIndex >= lastIndex) { - return; - } - - shouldIgnore = function(line) { - if (bluebirdFramePattern.test(line)) return true; - var info = parseLineInfo(line); - if (info) { - if (info.fileName === firstFileName && - (firstIndex <= info.line && info.line <= lastIndex)) { - return true; - } - } - return false; - }; -} - -function CapturedTrace(parent) { - this._parent = parent; - this._promisesCreated = 0; - var length = this._length = 1 + (parent === undefined ? 0 : parent._length); - captureStackTrace(this, CapturedTrace); - if (length > 32) this.uncycle(); -} -util.inherits(CapturedTrace, Error); -Context.CapturedTrace = CapturedTrace; - -CapturedTrace.prototype.uncycle = function() { - var length = this._length; - if (length < 2) return; - var nodes = []; - var stackToIndex = {}; - - for (var i = 0, node = this; node !== undefined; ++i) { - nodes.push(node); - node = node._parent; - } - length = this._length = i; - for (var i = length - 1; i >= 0; --i) { - var stack = nodes[i].stack; - if (stackToIndex[stack] === undefined) { - stackToIndex[stack] = i; - } - } - for (var i = 0; i < length; ++i) { - var currentStack = nodes[i].stack; - var index = stackToIndex[currentStack]; - if (index !== undefined && index !== i) { - if (index > 0) { - nodes[index - 1]._parent = undefined; - nodes[index - 1]._length = 1; - } - nodes[i]._parent = undefined; - nodes[i]._length = 1; - var cycleEdgeNode = i > 0 ? nodes[i - 1] : this; - - if (index < length - 1) { - cycleEdgeNode._parent = nodes[index + 1]; - cycleEdgeNode._parent.uncycle(); - cycleEdgeNode._length = - cycleEdgeNode._parent._length + 1; - } else { - cycleEdgeNode._parent = undefined; - cycleEdgeNode._length = 1; - } - var currentChildLength = cycleEdgeNode._length + 1; - for (var j = i - 2; j >= 0; --j) { - nodes[j]._length = currentChildLength; - currentChildLength++; - } - return; - } - } -}; - -CapturedTrace.prototype.attachExtraTrace = function(error) { - if (error.__stackCleaned__) return; - this.uncycle(); - var parsed = parseStackAndMessage(error); - var message = parsed.message; - var stacks = [parsed.stack]; - - var trace = this; - while (trace !== undefined) { - stacks.push(cleanStack(trace.stack.split("\n"))); - trace = trace._parent; - } - removeCommonRoots(stacks); - removeDuplicateOrEmptyJumps(stacks); - util.notEnumerableProp(error, "stack", reconstructStack(message, stacks)); - util.notEnumerableProp(error, "__stackCleaned__", true); -}; - -var captureStackTrace = (function stackDetection() { - var v8stackFramePattern = /^\s*at\s*/; - var v8stackFormatter = function(stack, error) { - if (typeof stack === "string") return stack; - - if (error.name !== undefined && - error.message !== undefined) { - return error.toString(); - } - return formatNonError(error); - }; - - if (typeof Error.stackTraceLimit === "number" && - typeof Error.captureStackTrace === "function") { - Error.stackTraceLimit += 6; - stackFramePattern = v8stackFramePattern; - formatStack = v8stackFormatter; - var captureStackTrace = Error.captureStackTrace; - - shouldIgnore = function(line) { - return bluebirdFramePattern.test(line); - }; - return function(receiver, ignoreUntil) { - Error.stackTraceLimit += 6; - captureStackTrace(receiver, ignoreUntil); - Error.stackTraceLimit -= 6; - }; - } - var err = new Error(); - - if (typeof err.stack === "string" && - err.stack.split("\n")[0].indexOf("stackDetection@") >= 0) { - stackFramePattern = /@/; - formatStack = v8stackFormatter; - indentStackFrames = true; - return function captureStackTrace(o) { - o.stack = new Error().stack; - }; - } - - var hasStackAfterThrow; - try { throw new Error(); } - catch(e) { - hasStackAfterThrow = ("stack" in e); - } - if (!("stack" in err) && hasStackAfterThrow && - typeof Error.stackTraceLimit === "number") { - stackFramePattern = v8stackFramePattern; - formatStack = v8stackFormatter; - return function captureStackTrace(o) { - Error.stackTraceLimit += 6; - try { throw new Error(); } - catch(e) { o.stack = e.stack; } - Error.stackTraceLimit -= 6; - }; - } - - formatStack = function(stack, error) { - if (typeof stack === "string") return stack; - - if ((typeof error === "object" || - typeof error === "function") && - error.name !== undefined && - error.message !== undefined) { - return error.toString(); - } - return formatNonError(error); - }; - - return null; - -})([]); - -if (typeof console !== "undefined" && typeof console.warn !== "undefined") { - printWarning = function (message) { - console.warn(message); - }; - if (util.isNode && process.stderr.isTTY) { - printWarning = function(message, isSoft) { - var color = isSoft ? "\u001b[33m" : "\u001b[31m"; - console.warn(color + message + "\u001b[0m\n"); - }; - } else if (!util.isNode && typeof (new Error().stack) === "string") { - printWarning = function(message, isSoft) { - console.warn("%c" + message, - isSoft ? "color: darkorange" : "color: red"); - }; - } -} - -var config = { - warnings: warnings, - longStackTraces: false, - cancellation: false, - monitoring: false, - asyncHooks: false -}; - -if (longStackTraces) Promise.longStackTraces(); - -return { - asyncHooks: function() { - return config.asyncHooks; - }, - longStackTraces: function() { - return config.longStackTraces; - }, - warnings: function() { - return config.warnings; - }, - cancellation: function() { - return config.cancellation; - }, - monitoring: function() { - return config.monitoring; - }, - propagateFromFunction: function() { - return propagateFromFunction; - }, - boundValueFunction: function() { - return boundValueFunction; - }, - checkForgottenReturns: checkForgottenReturns, - setBounds: setBounds, - warn: warn, - deprecated: deprecated, - CapturedTrace: CapturedTrace, - fireDomEvent: fireDomEvent, - fireGlobalEvent: fireGlobalEvent -}; -}; - -},{"./errors":12,"./es5":13,"./util":36}],10:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -function returner() { - return this.value; -} -function thrower() { - throw this.reason; -} - -Promise.prototype["return"] = -Promise.prototype.thenReturn = function (value) { - if (value instanceof Promise) value.suppressUnhandledRejections(); - return this._then( - returner, undefined, undefined, {value: value}, undefined); -}; - -Promise.prototype["throw"] = -Promise.prototype.thenThrow = function (reason) { - return this._then( - thrower, undefined, undefined, {reason: reason}, undefined); -}; - -Promise.prototype.catchThrow = function (reason) { - if (arguments.length <= 1) { - return this._then( - undefined, thrower, undefined, {reason: reason}, undefined); - } else { - var _reason = arguments[1]; - var handler = function() {throw _reason;}; - return this.caught(reason, handler); - } -}; - -Promise.prototype.catchReturn = function (value) { - if (arguments.length <= 1) { - if (value instanceof Promise) value.suppressUnhandledRejections(); - return this._then( - undefined, returner, undefined, {value: value}, undefined); - } else { - var _value = arguments[1]; - if (_value instanceof Promise) _value.suppressUnhandledRejections(); - var handler = function() {return _value;}; - return this.caught(value, handler); - } -}; -}; - -},{}],11:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var PromiseReduce = Promise.reduce; -var PromiseAll = Promise.all; - -function promiseAllThis() { - return PromiseAll(this); -} - -function PromiseMapSeries(promises, fn) { - return PromiseReduce(promises, fn, INTERNAL, INTERNAL); -} - -Promise.prototype.each = function (fn) { - return PromiseReduce(this, fn, INTERNAL, 0) - ._then(promiseAllThis, undefined, undefined, this, undefined); -}; - -Promise.prototype.mapSeries = function (fn) { - return PromiseReduce(this, fn, INTERNAL, INTERNAL); -}; - -Promise.each = function (promises, fn) { - return PromiseReduce(promises, fn, INTERNAL, 0) - ._then(promiseAllThis, undefined, undefined, promises, undefined); -}; - -Promise.mapSeries = PromiseMapSeries; -}; - - -},{}],12:[function(_dereq_,module,exports){ -"use strict"; -var es5 = _dereq_("./es5"); -var Objectfreeze = es5.freeze; -var util = _dereq_("./util"); -var inherits = util.inherits; -var notEnumerableProp = util.notEnumerableProp; - -function subError(nameProperty, defaultMessage) { - function SubError(message) { - if (!(this instanceof SubError)) return new SubError(message); - notEnumerableProp(this, "message", - typeof message === "string" ? message : defaultMessage); - notEnumerableProp(this, "name", nameProperty); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - Error.call(this); - } - } - inherits(SubError, Error); - return SubError; -} - -var _TypeError, _RangeError; -var Warning = subError("Warning", "warning"); -var CancellationError = subError("CancellationError", "cancellation error"); -var TimeoutError = subError("TimeoutError", "timeout error"); -var AggregateError = subError("AggregateError", "aggregate error"); -try { - _TypeError = TypeError; - _RangeError = RangeError; -} catch(e) { - _TypeError = subError("TypeError", "type error"); - _RangeError = subError("RangeError", "range error"); -} - -var methods = ("join pop push shift unshift slice filter forEach some " + - "every map indexOf lastIndexOf reduce reduceRight sort reverse").split(" "); - -for (var i = 0; i < methods.length; ++i) { - if (typeof Array.prototype[methods[i]] === "function") { - AggregateError.prototype[methods[i]] = Array.prototype[methods[i]]; - } -} - -es5.defineProperty(AggregateError.prototype, "length", { - value: 0, - configurable: false, - writable: true, - enumerable: true -}); -AggregateError.prototype["isOperational"] = true; -var level = 0; -AggregateError.prototype.toString = function() { - var indent = Array(level * 4 + 1).join(" "); - var ret = "\n" + indent + "AggregateError of:" + "\n"; - level++; - indent = Array(level * 4 + 1).join(" "); - for (var i = 0; i < this.length; ++i) { - var str = this[i] === this ? "[Circular AggregateError]" : this[i] + ""; - var lines = str.split("\n"); - for (var j = 0; j < lines.length; ++j) { - lines[j] = indent + lines[j]; - } - str = lines.join("\n"); - ret += str + "\n"; - } - level--; - return ret; -}; - -function OperationalError(message) { - if (!(this instanceof OperationalError)) - return new OperationalError(message); - notEnumerableProp(this, "name", "OperationalError"); - notEnumerableProp(this, "message", message); - this.cause = message; - this["isOperational"] = true; - - if (message instanceof Error) { - notEnumerableProp(this, "message", message.message); - notEnumerableProp(this, "stack", message.stack); - } else if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - -} -inherits(OperationalError, Error); - -var errorTypes = Error["__BluebirdErrorTypes__"]; -if (!errorTypes) { - errorTypes = Objectfreeze({ - CancellationError: CancellationError, - TimeoutError: TimeoutError, - OperationalError: OperationalError, - RejectionError: OperationalError, - AggregateError: AggregateError - }); - es5.defineProperty(Error, "__BluebirdErrorTypes__", { - value: errorTypes, - writable: false, - enumerable: false, - configurable: false - }); -} - -module.exports = { - Error: Error, - TypeError: _TypeError, - RangeError: _RangeError, - CancellationError: errorTypes.CancellationError, - OperationalError: errorTypes.OperationalError, - TimeoutError: errorTypes.TimeoutError, - AggregateError: errorTypes.AggregateError, - Warning: Warning -}; - -},{"./es5":13,"./util":36}],13:[function(_dereq_,module,exports){ -var isES5 = (function(){ - "use strict"; - return this === undefined; -})(); - -if (isES5) { - module.exports = { - freeze: Object.freeze, - defineProperty: Object.defineProperty, - getDescriptor: Object.getOwnPropertyDescriptor, - keys: Object.keys, - names: Object.getOwnPropertyNames, - getPrototypeOf: Object.getPrototypeOf, - isArray: Array.isArray, - isES5: isES5, - propertyIsWritable: function(obj, prop) { - var descriptor = Object.getOwnPropertyDescriptor(obj, prop); - return !!(!descriptor || descriptor.writable || descriptor.set); - } - }; -} else { - var has = {}.hasOwnProperty; - var str = {}.toString; - var proto = {}.constructor.prototype; - - var ObjectKeys = function (o) { - var ret = []; - for (var key in o) { - if (has.call(o, key)) { - ret.push(key); - } - } - return ret; - }; - - var ObjectGetDescriptor = function(o, key) { - return {value: o[key]}; - }; - - var ObjectDefineProperty = function (o, key, desc) { - o[key] = desc.value; - return o; - }; - - var ObjectFreeze = function (obj) { - return obj; - }; - - var ObjectGetPrototypeOf = function (obj) { - try { - return Object(obj).constructor.prototype; - } - catch (e) { - return proto; - } - }; - - var ArrayIsArray = function (obj) { - try { - return str.call(obj) === "[object Array]"; - } - catch(e) { - return false; - } - }; - - module.exports = { - isArray: ArrayIsArray, - keys: ObjectKeys, - names: ObjectKeys, - defineProperty: ObjectDefineProperty, - getDescriptor: ObjectGetDescriptor, - freeze: ObjectFreeze, - getPrototypeOf: ObjectGetPrototypeOf, - isES5: isES5, - propertyIsWritable: function() { - return true; - } - }; -} - -},{}],14:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var PromiseMap = Promise.map; - -Promise.prototype.filter = function (fn, options) { - return PromiseMap(this, fn, options, INTERNAL); -}; - -Promise.filter = function (promises, fn, options) { - return PromiseMap(promises, fn, options, INTERNAL); -}; -}; - -},{}],15:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) { -var util = _dereq_("./util"); -var CancellationError = Promise.CancellationError; -var errorObj = util.errorObj; -var catchFilter = _dereq_("./catch_filter")(NEXT_FILTER); - -function PassThroughHandlerContext(promise, type, handler) { - this.promise = promise; - this.type = type; - this.handler = handler; - this.called = false; - this.cancelPromise = null; -} - -PassThroughHandlerContext.prototype.isFinallyHandler = function() { - return this.type === 0; -}; - -function FinallyHandlerCancelReaction(finallyHandler) { - this.finallyHandler = finallyHandler; -} - -FinallyHandlerCancelReaction.prototype._resultCancelled = function() { - checkCancel(this.finallyHandler); -}; - -function checkCancel(ctx, reason) { - if (ctx.cancelPromise != null) { - if (arguments.length > 1) { - ctx.cancelPromise._reject(reason); - } else { - ctx.cancelPromise._cancel(); - } - ctx.cancelPromise = null; - return true; - } - return false; -} - -function succeed() { - return finallyHandler.call(this, this.promise._target()._settledValue()); -} -function fail(reason) { - if (checkCancel(this, reason)) return; - errorObj.e = reason; - return errorObj; -} -function finallyHandler(reasonOrValue) { - var promise = this.promise; - var handler = this.handler; - - if (!this.called) { - this.called = true; - var ret = this.isFinallyHandler() - ? handler.call(promise._boundValue()) - : handler.call(promise._boundValue(), reasonOrValue); - if (ret === NEXT_FILTER) { - return ret; - } else if (ret !== undefined) { - promise._setReturnedNonUndefined(); - var maybePromise = tryConvertToPromise(ret, promise); - if (maybePromise instanceof Promise) { - if (this.cancelPromise != null) { - if (maybePromise._isCancelled()) { - var reason = - new CancellationError("late cancellation observer"); - promise._attachExtraTrace(reason); - errorObj.e = reason; - return errorObj; - } else if (maybePromise.isPending()) { - maybePromise._attachCancellationCallback( - new FinallyHandlerCancelReaction(this)); - } - } - return maybePromise._then( - succeed, fail, undefined, this, undefined); - } - } - } - - if (promise.isRejected()) { - checkCancel(this); - errorObj.e = reasonOrValue; - return errorObj; - } else { - checkCancel(this); - return reasonOrValue; - } -} - -Promise.prototype._passThrough = function(handler, type, success, fail) { - if (typeof handler !== "function") return this.then(); - return this._then(success, - fail, - undefined, - new PassThroughHandlerContext(this, type, handler), - undefined); -}; - -Promise.prototype.lastly = -Promise.prototype["finally"] = function (handler) { - return this._passThrough(handler, - 0, - finallyHandler, - finallyHandler); -}; - - -Promise.prototype.tap = function (handler) { - return this._passThrough(handler, 1, finallyHandler); -}; - -Promise.prototype.tapCatch = function (handlerOrPredicate) { - var len = arguments.length; - if(len === 1) { - return this._passThrough(handlerOrPredicate, - 1, - undefined, - finallyHandler); - } else { - var catchInstances = new Array(len - 1), - j = 0, i; - for (i = 0; i < len - 1; ++i) { - var item = arguments[i]; - if (util.isObject(item)) { - catchInstances[j++] = item; - } else { - return Promise.reject(new TypeError( - "tapCatch statement predicate: " - + "expecting an object but got " + util.classString(item) - )); - } - } - catchInstances.length = j; - var handler = arguments[i]; - return this._passThrough(catchFilter(catchInstances, handler, this), - 1, - undefined, - finallyHandler); - } - -}; - -return PassThroughHandlerContext; -}; - -},{"./catch_filter":7,"./util":36}],16:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, - apiRejection, - INTERNAL, - tryConvertToPromise, - Proxyable, - debug) { -var errors = _dereq_("./errors"); -var TypeError = errors.TypeError; -var util = _dereq_("./util"); -var errorObj = util.errorObj; -var tryCatch = util.tryCatch; -var yieldHandlers = []; - -function promiseFromYieldHandler(value, yieldHandlers, traceParent) { - for (var i = 0; i < yieldHandlers.length; ++i) { - traceParent._pushContext(); - var result = tryCatch(yieldHandlers[i])(value); - traceParent._popContext(); - if (result === errorObj) { - traceParent._pushContext(); - var ret = Promise.reject(errorObj.e); - traceParent._popContext(); - return ret; - } - var maybePromise = tryConvertToPromise(result, traceParent); - if (maybePromise instanceof Promise) return maybePromise; - } - return null; -} - -function PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) { - if (debug.cancellation()) { - var internal = new Promise(INTERNAL); - var _finallyPromise = this._finallyPromise = new Promise(INTERNAL); - this._promise = internal.lastly(function() { - return _finallyPromise; - }); - internal._captureStackTrace(); - internal._setOnCancel(this); - } else { - var promise = this._promise = new Promise(INTERNAL); - promise._captureStackTrace(); - } - this._stack = stack; - this._generatorFunction = generatorFunction; - this._receiver = receiver; - this._generator = undefined; - this._yieldHandlers = typeof yieldHandler === "function" - ? [yieldHandler].concat(yieldHandlers) - : yieldHandlers; - this._yieldedPromise = null; - this._cancellationPhase = false; -} -util.inherits(PromiseSpawn, Proxyable); - -PromiseSpawn.prototype._isResolved = function() { - return this._promise === null; -}; - -PromiseSpawn.prototype._cleanup = function() { - this._promise = this._generator = null; - if (debug.cancellation() && this._finallyPromise !== null) { - this._finallyPromise._fulfill(); - this._finallyPromise = null; - } -}; - -PromiseSpawn.prototype._promiseCancelled = function() { - if (this._isResolved()) return; - var implementsReturn = typeof this._generator["return"] !== "undefined"; - - var result; - if (!implementsReturn) { - var reason = new Promise.CancellationError( - "generator .return() sentinel"); - Promise.coroutine.returnSentinel = reason; - this._promise._attachExtraTrace(reason); - this._promise._pushContext(); - result = tryCatch(this._generator["throw"]).call(this._generator, - reason); - this._promise._popContext(); - } else { - this._promise._pushContext(); - result = tryCatch(this._generator["return"]).call(this._generator, - undefined); - this._promise._popContext(); - } - this._cancellationPhase = true; - this._yieldedPromise = null; - this._continue(result); -}; - -PromiseSpawn.prototype._promiseFulfilled = function(value) { - this._yieldedPromise = null; - this._promise._pushContext(); - var result = tryCatch(this._generator.next).call(this._generator, value); - this._promise._popContext(); - this._continue(result); -}; - -PromiseSpawn.prototype._promiseRejected = function(reason) { - this._yieldedPromise = null; - this._promise._attachExtraTrace(reason); - this._promise._pushContext(); - var result = tryCatch(this._generator["throw"]) - .call(this._generator, reason); - this._promise._popContext(); - this._continue(result); -}; - -PromiseSpawn.prototype._resultCancelled = function() { - if (this._yieldedPromise instanceof Promise) { - var promise = this._yieldedPromise; - this._yieldedPromise = null; - promise.cancel(); - } -}; - -PromiseSpawn.prototype.promise = function () { - return this._promise; -}; - -PromiseSpawn.prototype._run = function () { - this._generator = this._generatorFunction.call(this._receiver); - this._receiver = - this._generatorFunction = undefined; - this._promiseFulfilled(undefined); -}; - -PromiseSpawn.prototype._continue = function (result) { - var promise = this._promise; - if (result === errorObj) { - this._cleanup(); - if (this._cancellationPhase) { - return promise.cancel(); - } else { - return promise._rejectCallback(result.e, false); - } - } - - var value = result.value; - if (result.done === true) { - this._cleanup(); - if (this._cancellationPhase) { - return promise.cancel(); - } else { - return promise._resolveCallback(value); - } - } else { - var maybePromise = tryConvertToPromise(value, this._promise); - if (!(maybePromise instanceof Promise)) { - maybePromise = - promiseFromYieldHandler(maybePromise, - this._yieldHandlers, - this._promise); - if (maybePromise === null) { - this._promiseRejected( - new TypeError( - "A value %s was yielded that could not be treated as a promise\u000a\u000a See http://goo.gl/MqrFmX\u000a\u000a".replace("%s", String(value)) + - "From coroutine:\u000a" + - this._stack.split("\n").slice(1, -7).join("\n") - ) - ); - return; - } - } - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - this._yieldedPromise = maybePromise; - maybePromise._proxy(this, null); - } else if (((bitField & 33554432) !== 0)) { - Promise._async.invoke( - this._promiseFulfilled, this, maybePromise._value() - ); - } else if (((bitField & 16777216) !== 0)) { - Promise._async.invoke( - this._promiseRejected, this, maybePromise._reason() - ); - } else { - this._promiseCancelled(); - } - } -}; - -Promise.coroutine = function (generatorFunction, options) { - if (typeof generatorFunction !== "function") { - throw new TypeError("generatorFunction must be a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var yieldHandler = Object(options).yieldHandler; - var PromiseSpawn$ = PromiseSpawn; - var stack = new Error().stack; - return function () { - var generator = generatorFunction.apply(this, arguments); - var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler, - stack); - var ret = spawn.promise(); - spawn._generator = generator; - spawn._promiseFulfilled(undefined); - return ret; - }; -}; - -Promise.coroutine.addYieldHandler = function(fn) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - yieldHandlers.push(fn); -}; - -Promise.spawn = function (generatorFunction) { - debug.deprecated("Promise.spawn()", "Promise.coroutine()"); - if (typeof generatorFunction !== "function") { - return apiRejection("generatorFunction must be a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var spawn = new PromiseSpawn(generatorFunction, this); - var ret = spawn.promise(); - spawn._run(Promise.spawn); - return ret; -}; -}; - -},{"./errors":12,"./util":36}],17:[function(_dereq_,module,exports){ -"use strict"; -module.exports = -function(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async) { -var util = _dereq_("./util"); -var canEvaluate = util.canEvaluate; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var reject; - -if (!true) { -if (canEvaluate) { - var thenCallback = function(i) { - return new Function("value", "holder", " \n\ - 'use strict'; \n\ - holder.pIndex = value; \n\ - holder.checkFulfillment(this); \n\ - ".replace(/Index/g, i)); - }; - - var promiseSetter = function(i) { - return new Function("promise", "holder", " \n\ - 'use strict'; \n\ - holder.pIndex = promise; \n\ - ".replace(/Index/g, i)); - }; - - var generateHolderClass = function(total) { - var props = new Array(total); - for (var i = 0; i < props.length; ++i) { - props[i] = "this.p" + (i+1); - } - var assignment = props.join(" = ") + " = null;"; - var cancellationCode= "var promise;\n" + props.map(function(prop) { - return " \n\ - promise = " + prop + "; \n\ - if (promise instanceof Promise) { \n\ - promise.cancel(); \n\ - } \n\ - "; - }).join("\n"); - var passedArguments = props.join(", "); - var name = "Holder$" + total; - - - var code = "return function(tryCatch, errorObj, Promise, async) { \n\ - 'use strict'; \n\ - function [TheName](fn) { \n\ - [TheProperties] \n\ - this.fn = fn; \n\ - this.asyncNeeded = true; \n\ - this.now = 0; \n\ - } \n\ - \n\ - [TheName].prototype._callFunction = function(promise) { \n\ - promise._pushContext(); \n\ - var ret = tryCatch(this.fn)([ThePassedArguments]); \n\ - promise._popContext(); \n\ - if (ret === errorObj) { \n\ - promise._rejectCallback(ret.e, false); \n\ - } else { \n\ - promise._resolveCallback(ret); \n\ - } \n\ - }; \n\ - \n\ - [TheName].prototype.checkFulfillment = function(promise) { \n\ - var now = ++this.now; \n\ - if (now === [TheTotal]) { \n\ - if (this.asyncNeeded) { \n\ - async.invoke(this._callFunction, this, promise); \n\ - } else { \n\ - this._callFunction(promise); \n\ - } \n\ - \n\ - } \n\ - }; \n\ - \n\ - [TheName].prototype._resultCancelled = function() { \n\ - [CancellationCode] \n\ - }; \n\ - \n\ - return [TheName]; \n\ - }(tryCatch, errorObj, Promise, async); \n\ - "; - - code = code.replace(/\[TheName\]/g, name) - .replace(/\[TheTotal\]/g, total) - .replace(/\[ThePassedArguments\]/g, passedArguments) - .replace(/\[TheProperties\]/g, assignment) - .replace(/\[CancellationCode\]/g, cancellationCode); - - return new Function("tryCatch", "errorObj", "Promise", "async", code) - (tryCatch, errorObj, Promise, async); - }; - - var holderClasses = []; - var thenCallbacks = []; - var promiseSetters = []; - - for (var i = 0; i < 8; ++i) { - holderClasses.push(generateHolderClass(i + 1)); - thenCallbacks.push(thenCallback(i + 1)); - promiseSetters.push(promiseSetter(i + 1)); - } - - reject = function (reason) { - this._reject(reason); - }; -}} - -Promise.join = function () { - var last = arguments.length - 1; - var fn; - if (last > 0 && typeof arguments[last] === "function") { - fn = arguments[last]; - if (!true) { - if (last <= 8 && canEvaluate) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - var HolderClass = holderClasses[last - 1]; - var holder = new HolderClass(fn); - var callbacks = thenCallbacks; - - for (var i = 0; i < last; ++i) { - var maybePromise = tryConvertToPromise(arguments[i], ret); - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - maybePromise._then(callbacks[i], reject, - undefined, ret, holder); - promiseSetters[i](maybePromise, holder); - holder.asyncNeeded = false; - } else if (((bitField & 33554432) !== 0)) { - callbacks[i].call(ret, - maybePromise._value(), holder); - } else if (((bitField & 16777216) !== 0)) { - ret._reject(maybePromise._reason()); - } else { - ret._cancel(); - } - } else { - callbacks[i].call(ret, maybePromise, holder); - } - } - - if (!ret._isFateSealed()) { - if (holder.asyncNeeded) { - var context = Promise._getContext(); - holder.fn = util.contextBind(context, holder.fn); - } - ret._setAsyncGuaranteed(); - ret._setOnCancel(holder); - } - return ret; - } - } - } - var args = [].slice.call(arguments);; - if (fn) args.pop(); - var ret = new PromiseArray(args).promise(); - return fn !== undefined ? ret.spread(fn) : ret; -}; - -}; - -},{"./util":36}],18:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, - PromiseArray, - apiRejection, - tryConvertToPromise, - INTERNAL, - debug) { -var util = _dereq_("./util"); -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var async = Promise._async; - -function MappingPromiseArray(promises, fn, limit, _filter) { - this.constructor$(promises); - this._promise._captureStackTrace(); - var context = Promise._getContext(); - this._callback = util.contextBind(context, fn); - this._preservedValues = _filter === INTERNAL - ? new Array(this.length()) - : null; - this._limit = limit; - this._inFlight = 0; - this._queue = []; - async.invoke(this._asyncInit, this, undefined); - if (util.isArray(promises)) { - for (var i = 0; i < promises.length; ++i) { - var maybePromise = promises[i]; - if (maybePromise instanceof Promise) { - maybePromise.suppressUnhandledRejections(); - } - } - } -} -util.inherits(MappingPromiseArray, PromiseArray); - -MappingPromiseArray.prototype._asyncInit = function() { - this._init$(undefined, -2); -}; - -MappingPromiseArray.prototype._init = function () {}; - -MappingPromiseArray.prototype._promiseFulfilled = function (value, index) { - var values = this._values; - var length = this.length(); - var preservedValues = this._preservedValues; - var limit = this._limit; - - if (index < 0) { - index = (index * -1) - 1; - values[index] = value; - if (limit >= 1) { - this._inFlight--; - this._drainQueue(); - if (this._isResolved()) return true; - } - } else { - if (limit >= 1 && this._inFlight >= limit) { - values[index] = value; - this._queue.push(index); - return false; - } - if (preservedValues !== null) preservedValues[index] = value; - - var promise = this._promise; - var callback = this._callback; - var receiver = promise._boundValue(); - promise._pushContext(); - var ret = tryCatch(callback).call(receiver, value, index, length); - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, - promiseCreated, - preservedValues !== null ? "Promise.filter" : "Promise.map", - promise - ); - if (ret === errorObj) { - this._reject(ret.e); - return true; - } - - var maybePromise = tryConvertToPromise(ret, this._promise); - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - if (limit >= 1) this._inFlight++; - values[index] = maybePromise; - maybePromise._proxy(this, (index + 1) * -1); - return false; - } else if (((bitField & 33554432) !== 0)) { - ret = maybePromise._value(); - } else if (((bitField & 16777216) !== 0)) { - this._reject(maybePromise._reason()); - return true; - } else { - this._cancel(); - return true; - } - } - values[index] = ret; - } - var totalResolved = ++this._totalResolved; - if (totalResolved >= length) { - if (preservedValues !== null) { - this._filter(values, preservedValues); - } else { - this._resolve(values); - } - return true; - } - return false; -}; - -MappingPromiseArray.prototype._drainQueue = function () { - var queue = this._queue; - var limit = this._limit; - var values = this._values; - while (queue.length > 0 && this._inFlight < limit) { - if (this._isResolved()) return; - var index = queue.pop(); - this._promiseFulfilled(values[index], index); - } -}; - -MappingPromiseArray.prototype._filter = function (booleans, values) { - var len = values.length; - var ret = new Array(len); - var j = 0; - for (var i = 0; i < len; ++i) { - if (booleans[i]) ret[j++] = values[i]; - } - ret.length = j; - this._resolve(ret); -}; - -MappingPromiseArray.prototype.preservedValues = function () { - return this._preservedValues; -}; - -function map(promises, fn, options, _filter) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - - var limit = 0; - if (options !== undefined) { - if (typeof options === "object" && options !== null) { - if (typeof options.concurrency !== "number") { - return Promise.reject( - new TypeError("'concurrency' must be a number but it is " + - util.classString(options.concurrency))); - } - limit = options.concurrency; - } else { - return Promise.reject(new TypeError( - "options argument must be an object but it is " + - util.classString(options))); - } - } - limit = typeof limit === "number" && - isFinite(limit) && limit >= 1 ? limit : 0; - return new MappingPromiseArray(promises, fn, limit, _filter).promise(); -} - -Promise.prototype.map = function (fn, options) { - return map(this, fn, options, null); -}; - -Promise.map = function (promises, fn, options, _filter) { - return map(promises, fn, options, _filter); -}; - - -}; - -},{"./util":36}],19:[function(_dereq_,module,exports){ -"use strict"; -module.exports = -function(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) { -var util = _dereq_("./util"); -var tryCatch = util.tryCatch; - -Promise.method = function (fn) { - if (typeof fn !== "function") { - throw new Promise.TypeError("expecting a function but got " + util.classString(fn)); - } - return function () { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._pushContext(); - var value = tryCatch(fn).apply(this, arguments); - var promiseCreated = ret._popContext(); - debug.checkForgottenReturns( - value, promiseCreated, "Promise.method", ret); - ret._resolveFromSyncValue(value); - return ret; - }; -}; - -Promise.attempt = Promise["try"] = function (fn) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._pushContext(); - var value; - if (arguments.length > 1) { - debug.deprecated("calling Promise.try with more than 1 argument"); - var arg = arguments[1]; - var ctx = arguments[2]; - value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg) - : tryCatch(fn).call(ctx, arg); - } else { - value = tryCatch(fn)(); - } - var promiseCreated = ret._popContext(); - debug.checkForgottenReturns( - value, promiseCreated, "Promise.try", ret); - ret._resolveFromSyncValue(value); - return ret; -}; - -Promise.prototype._resolveFromSyncValue = function (value) { - if (value === util.errorObj) { - this._rejectCallback(value.e, false); - } else { - this._resolveCallback(value, true); - } -}; -}; - -},{"./util":36}],20:[function(_dereq_,module,exports){ -"use strict"; -var util = _dereq_("./util"); -var maybeWrapAsError = util.maybeWrapAsError; -var errors = _dereq_("./errors"); -var OperationalError = errors.OperationalError; -var es5 = _dereq_("./es5"); - -function isUntypedError(obj) { - return obj instanceof Error && - es5.getPrototypeOf(obj) === Error.prototype; -} - -var rErrorKey = /^(?:name|message|stack|cause)$/; -function wrapAsOperationalError(obj) { - var ret; - if (isUntypedError(obj)) { - ret = new OperationalError(obj); - ret.name = obj.name; - ret.message = obj.message; - ret.stack = obj.stack; - var keys = es5.keys(obj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (!rErrorKey.test(key)) { - ret[key] = obj[key]; - } - } - return ret; - } - util.markAsOriginatingFromRejection(obj); - return obj; -} - -function nodebackForPromise(promise, multiArgs) { - return function(err, value) { - if (promise === null) return; - if (err) { - var wrapped = wrapAsOperationalError(maybeWrapAsError(err)); - promise._attachExtraTrace(wrapped); - promise._reject(wrapped); - } else if (!multiArgs) { - promise._fulfill(value); - } else { - var args = [].slice.call(arguments, 1);; - promise._fulfill(args); - } - promise = null; - }; -} - -module.exports = nodebackForPromise; - -},{"./errors":12,"./es5":13,"./util":36}],21:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -var util = _dereq_("./util"); -var async = Promise._async; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; - -function spreadAdapter(val, nodeback) { - var promise = this; - if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback); - var ret = - tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val)); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} - -function successAdapter(val, nodeback) { - var promise = this; - var receiver = promise._boundValue(); - var ret = val === undefined - ? tryCatch(nodeback).call(receiver, null) - : tryCatch(nodeback).call(receiver, null, val); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} -function errorAdapter(reason, nodeback) { - var promise = this; - if (!reason) { - var newReason = new Error(reason + ""); - newReason.cause = reason; - reason = newReason; - } - var ret = tryCatch(nodeback).call(promise._boundValue(), reason); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} - -Promise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback, - options) { - if (typeof nodeback == "function") { - var adapter = successAdapter; - if (options !== undefined && Object(options).spread) { - adapter = spreadAdapter; - } - this._then( - adapter, - errorAdapter, - undefined, - this, - nodeback - ); - } - return this; -}; -}; - -},{"./util":36}],22:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function() { -var makeSelfResolutionError = function () { - return new TypeError("circular promise resolution chain\u000a\u000a See http://goo.gl/MqrFmX\u000a"); -}; -var reflectHandler = function() { - return new Promise.PromiseInspection(this._target()); -}; -var apiRejection = function(msg) { - return Promise.reject(new TypeError(msg)); -}; -function Proxyable() {} -var UNDEFINED_BINDING = {}; -var util = _dereq_("./util"); -util.setReflectHandler(reflectHandler); - -var getDomain = function() { - var domain = process.domain; - if (domain === undefined) { - return null; - } - return domain; -}; -var getContextDefault = function() { - return null; -}; -var getContextDomain = function() { - return { - domain: getDomain(), - async: null - }; -}; -var AsyncResource = util.isNode && util.nodeSupportsAsyncResource ? - _dereq_("async_hooks").AsyncResource : null; -var getContextAsyncHooks = function() { - return { - domain: getDomain(), - async: new AsyncResource("Bluebird::Promise") - }; -}; -var getContext = util.isNode ? getContextDomain : getContextDefault; -util.notEnumerableProp(Promise, "_getContext", getContext); -var enableAsyncHooks = function() { - getContext = getContextAsyncHooks; - util.notEnumerableProp(Promise, "_getContext", getContextAsyncHooks); -}; -var disableAsyncHooks = function() { - getContext = getContextDomain; - util.notEnumerableProp(Promise, "_getContext", getContextDomain); -}; - -var es5 = _dereq_("./es5"); -var Async = _dereq_("./async"); -var async = new Async(); -es5.defineProperty(Promise, "_async", {value: async}); -var errors = _dereq_("./errors"); -var TypeError = Promise.TypeError = errors.TypeError; -Promise.RangeError = errors.RangeError; -var CancellationError = Promise.CancellationError = errors.CancellationError; -Promise.TimeoutError = errors.TimeoutError; -Promise.OperationalError = errors.OperationalError; -Promise.RejectionError = errors.OperationalError; -Promise.AggregateError = errors.AggregateError; -var INTERNAL = function(){}; -var APPLY = {}; -var NEXT_FILTER = {}; -var tryConvertToPromise = _dereq_("./thenables")(Promise, INTERNAL); -var PromiseArray = - _dereq_("./promise_array")(Promise, INTERNAL, - tryConvertToPromise, apiRejection, Proxyable); -var Context = _dereq_("./context")(Promise); - /*jshint unused:false*/ -var createContext = Context.create; - -var debug = _dereq_("./debuggability")(Promise, Context, - enableAsyncHooks, disableAsyncHooks); -var CapturedTrace = debug.CapturedTrace; -var PassThroughHandlerContext = - _dereq_("./finally")(Promise, tryConvertToPromise, NEXT_FILTER); -var catchFilter = _dereq_("./catch_filter")(NEXT_FILTER); -var nodebackForPromise = _dereq_("./nodeback"); -var errorObj = util.errorObj; -var tryCatch = util.tryCatch; -function check(self, executor) { - if (self == null || self.constructor !== Promise) { - throw new TypeError("the promise constructor cannot be invoked directly\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - if (typeof executor !== "function") { - throw new TypeError("expecting a function but got " + util.classString(executor)); - } - -} - -function Promise(executor) { - if (executor !== INTERNAL) { - check(this, executor); - } - this._bitField = 0; - this._fulfillmentHandler0 = undefined; - this._rejectionHandler0 = undefined; - this._promise0 = undefined; - this._receiver0 = undefined; - this._resolveFromExecutor(executor); - this._promiseCreated(); - this._fireEvent("promiseCreated", this); -} - -Promise.prototype.toString = function () { - return "[object Promise]"; -}; - -Promise.prototype.caught = Promise.prototype["catch"] = function (fn) { - var len = arguments.length; - if (len > 1) { - var catchInstances = new Array(len - 1), - j = 0, i; - for (i = 0; i < len - 1; ++i) { - var item = arguments[i]; - if (util.isObject(item)) { - catchInstances[j++] = item; - } else { - return apiRejection("Catch statement predicate: " + - "expecting an object but got " + util.classString(item)); - } - } - catchInstances.length = j; - fn = arguments[i]; - - if (typeof fn !== "function") { - throw new TypeError("The last argument to .catch() " + - "must be a function, got " + util.toString(fn)); - } - return this.then(undefined, catchFilter(catchInstances, fn, this)); - } - return this.then(undefined, fn); -}; - -Promise.prototype.reflect = function () { - return this._then(reflectHandler, - reflectHandler, undefined, this, undefined); -}; - -Promise.prototype.then = function (didFulfill, didReject) { - if (debug.warnings() && arguments.length > 0 && - typeof didFulfill !== "function" && - typeof didReject !== "function") { - var msg = ".then() only accepts functions but was passed: " + - util.classString(didFulfill); - if (arguments.length > 1) { - msg += ", " + util.classString(didReject); - } - this._warn(msg); - } - return this._then(didFulfill, didReject, undefined, undefined, undefined); -}; - -Promise.prototype.done = function (didFulfill, didReject) { - var promise = - this._then(didFulfill, didReject, undefined, undefined, undefined); - promise._setIsFinal(); -}; - -Promise.prototype.spread = function (fn) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - return this.all()._then(fn, undefined, undefined, APPLY, undefined); -}; - -Promise.prototype.toJSON = function () { - var ret = { - isFulfilled: false, - isRejected: false, - fulfillmentValue: undefined, - rejectionReason: undefined - }; - if (this.isFulfilled()) { - ret.fulfillmentValue = this.value(); - ret.isFulfilled = true; - } else if (this.isRejected()) { - ret.rejectionReason = this.reason(); - ret.isRejected = true; - } - return ret; -}; - -Promise.prototype.all = function () { - if (arguments.length > 0) { - this._warn(".all() was passed arguments but it does not take any"); - } - return new PromiseArray(this).promise(); -}; - -Promise.prototype.error = function (fn) { - return this.caught(util.originatesFromRejection, fn); -}; - -Promise.getNewLibraryCopy = module.exports; - -Promise.is = function (val) { - return val instanceof Promise; -}; - -Promise.fromNode = Promise.fromCallback = function(fn) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs - : false; - var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs)); - if (result === errorObj) { - ret._rejectCallback(result.e, true); - } - if (!ret._isFateSealed()) ret._setAsyncGuaranteed(); - return ret; -}; - -Promise.all = function (promises) { - return new PromiseArray(promises).promise(); -}; - -Promise.cast = function (obj) { - var ret = tryConvertToPromise(obj); - if (!(ret instanceof Promise)) { - ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._setFulfilled(); - ret._rejectionHandler0 = obj; - } - return ret; -}; - -Promise.resolve = Promise.fulfilled = Promise.cast; - -Promise.reject = Promise.rejected = function (reason) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._rejectCallback(reason, true); - return ret; -}; - -Promise.setScheduler = function(fn) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - return async.setScheduler(fn); -}; - -Promise.prototype._then = function ( - didFulfill, - didReject, - _, receiver, - internalData -) { - var haveInternalData = internalData !== undefined; - var promise = haveInternalData ? internalData : new Promise(INTERNAL); - var target = this._target(); - var bitField = target._bitField; - - if (!haveInternalData) { - promise._propagateFrom(this, 3); - promise._captureStackTrace(); - if (receiver === undefined && - ((this._bitField & 2097152) !== 0)) { - if (!((bitField & 50397184) === 0)) { - receiver = this._boundValue(); - } else { - receiver = target === this ? undefined : this._boundTo; - } - } - this._fireEvent("promiseChained", this, promise); - } - - var context = getContext(); - if (!((bitField & 50397184) === 0)) { - var handler, value, settler = target._settlePromiseCtx; - if (((bitField & 33554432) !== 0)) { - value = target._rejectionHandler0; - handler = didFulfill; - } else if (((bitField & 16777216) !== 0)) { - value = target._fulfillmentHandler0; - handler = didReject; - target._unsetRejectionIsUnhandled(); - } else { - settler = target._settlePromiseLateCancellationObserver; - value = new CancellationError("late cancellation observer"); - target._attachExtraTrace(value); - handler = didReject; - } - - async.invoke(settler, target, { - handler: util.contextBind(context, handler), - promise: promise, - receiver: receiver, - value: value - }); - } else { - target._addCallbacks(didFulfill, didReject, promise, - receiver, context); - } - - return promise; -}; - -Promise.prototype._length = function () { - return this._bitField & 65535; -}; - -Promise.prototype._isFateSealed = function () { - return (this._bitField & 117506048) !== 0; -}; - -Promise.prototype._isFollowing = function () { - return (this._bitField & 67108864) === 67108864; -}; - -Promise.prototype._setLength = function (len) { - this._bitField = (this._bitField & -65536) | - (len & 65535); -}; - -Promise.prototype._setFulfilled = function () { - this._bitField = this._bitField | 33554432; - this._fireEvent("promiseFulfilled", this); -}; - -Promise.prototype._setRejected = function () { - this._bitField = this._bitField | 16777216; - this._fireEvent("promiseRejected", this); -}; - -Promise.prototype._setFollowing = function () { - this._bitField = this._bitField | 67108864; - this._fireEvent("promiseResolved", this); -}; - -Promise.prototype._setIsFinal = function () { - this._bitField = this._bitField | 4194304; -}; - -Promise.prototype._isFinal = function () { - return (this._bitField & 4194304) > 0; -}; - -Promise.prototype._unsetCancelled = function() { - this._bitField = this._bitField & (~65536); -}; - -Promise.prototype._setCancelled = function() { - this._bitField = this._bitField | 65536; - this._fireEvent("promiseCancelled", this); -}; - -Promise.prototype._setWillBeCancelled = function() { - this._bitField = this._bitField | 8388608; -}; - -Promise.prototype._setAsyncGuaranteed = function() { - if (async.hasCustomScheduler()) return; - var bitField = this._bitField; - this._bitField = bitField | - (((bitField & 536870912) >> 2) ^ - 134217728); -}; - -Promise.prototype._setNoAsyncGuarantee = function() { - this._bitField = (this._bitField | 536870912) & - (~134217728); -}; - -Promise.prototype._receiverAt = function (index) { - var ret = index === 0 ? this._receiver0 : this[ - index * 4 - 4 + 3]; - if (ret === UNDEFINED_BINDING) { - return undefined; - } else if (ret === undefined && this._isBound()) { - return this._boundValue(); - } - return ret; -}; - -Promise.prototype._promiseAt = function (index) { - return this[ - index * 4 - 4 + 2]; -}; - -Promise.prototype._fulfillmentHandlerAt = function (index) { - return this[ - index * 4 - 4 + 0]; -}; - -Promise.prototype._rejectionHandlerAt = function (index) { - return this[ - index * 4 - 4 + 1]; -}; - -Promise.prototype._boundValue = function() {}; - -Promise.prototype._migrateCallback0 = function (follower) { - var bitField = follower._bitField; - var fulfill = follower._fulfillmentHandler0; - var reject = follower._rejectionHandler0; - var promise = follower._promise0; - var receiver = follower._receiverAt(0); - if (receiver === undefined) receiver = UNDEFINED_BINDING; - this._addCallbacks(fulfill, reject, promise, receiver, null); -}; - -Promise.prototype._migrateCallbackAt = function (follower, index) { - var fulfill = follower._fulfillmentHandlerAt(index); - var reject = follower._rejectionHandlerAt(index); - var promise = follower._promiseAt(index); - var receiver = follower._receiverAt(index); - if (receiver === undefined) receiver = UNDEFINED_BINDING; - this._addCallbacks(fulfill, reject, promise, receiver, null); -}; - -Promise.prototype._addCallbacks = function ( - fulfill, - reject, - promise, - receiver, - context -) { - var index = this._length(); - - if (index >= 65535 - 4) { - index = 0; - this._setLength(0); - } - - if (index === 0) { - this._promise0 = promise; - this._receiver0 = receiver; - if (typeof fulfill === "function") { - this._fulfillmentHandler0 = util.contextBind(context, fulfill); - } - if (typeof reject === "function") { - this._rejectionHandler0 = util.contextBind(context, reject); - } - } else { - var base = index * 4 - 4; - this[base + 2] = promise; - this[base + 3] = receiver; - if (typeof fulfill === "function") { - this[base + 0] = - util.contextBind(context, fulfill); - } - if (typeof reject === "function") { - this[base + 1] = - util.contextBind(context, reject); - } - } - this._setLength(index + 1); - return index; -}; - -Promise.prototype._proxy = function (proxyable, arg) { - this._addCallbacks(undefined, undefined, arg, proxyable, null); -}; - -Promise.prototype._resolveCallback = function(value, shouldBind) { - if (((this._bitField & 117506048) !== 0)) return; - if (value === this) - return this._rejectCallback(makeSelfResolutionError(), false); - var maybePromise = tryConvertToPromise(value, this); - if (!(maybePromise instanceof Promise)) return this._fulfill(value); - - if (shouldBind) this._propagateFrom(maybePromise, 2); - - - var promise = maybePromise._target(); - - if (promise === this) { - this._reject(makeSelfResolutionError()); - return; - } - - var bitField = promise._bitField; - if (((bitField & 50397184) === 0)) { - var len = this._length(); - if (len > 0) promise._migrateCallback0(this); - for (var i = 1; i < len; ++i) { - promise._migrateCallbackAt(this, i); - } - this._setFollowing(); - this._setLength(0); - this._setFollowee(maybePromise); - } else if (((bitField & 33554432) !== 0)) { - this._fulfill(promise._value()); - } else if (((bitField & 16777216) !== 0)) { - this._reject(promise._reason()); - } else { - var reason = new CancellationError("late cancellation observer"); - promise._attachExtraTrace(reason); - this._reject(reason); - } -}; - -Promise.prototype._rejectCallback = -function(reason, synchronous, ignoreNonErrorWarnings) { - var trace = util.ensureErrorObject(reason); - var hasStack = trace === reason; - if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) { - var message = "a promise was rejected with a non-error: " + - util.classString(reason); - this._warn(message, true); - } - this._attachExtraTrace(trace, synchronous ? hasStack : false); - this._reject(reason); -}; - -Promise.prototype._resolveFromExecutor = function (executor) { - if (executor === INTERNAL) return; - var promise = this; - this._captureStackTrace(); - this._pushContext(); - var synchronous = true; - var r = this._execute(executor, function(value) { - promise._resolveCallback(value); - }, function (reason) { - promise._rejectCallback(reason, synchronous); - }); - synchronous = false; - this._popContext(); - - if (r !== undefined) { - promise._rejectCallback(r, true); - } -}; - -Promise.prototype._settlePromiseFromHandler = function ( - handler, receiver, value, promise -) { - var bitField = promise._bitField; - if (((bitField & 65536) !== 0)) return; - promise._pushContext(); - var x; - if (receiver === APPLY) { - if (!value || typeof value.length !== "number") { - x = errorObj; - x.e = new TypeError("cannot .spread() a non-array: " + - util.classString(value)); - } else { - x = tryCatch(handler).apply(this._boundValue(), value); - } - } else { - x = tryCatch(handler).call(receiver, value); - } - var promiseCreated = promise._popContext(); - bitField = promise._bitField; - if (((bitField & 65536) !== 0)) return; - - if (x === NEXT_FILTER) { - promise._reject(value); - } else if (x === errorObj) { - promise._rejectCallback(x.e, false); - } else { - debug.checkForgottenReturns(x, promiseCreated, "", promise, this); - promise._resolveCallback(x); - } -}; - -Promise.prototype._target = function() { - var ret = this; - while (ret._isFollowing()) ret = ret._followee(); - return ret; -}; - -Promise.prototype._followee = function() { - return this._rejectionHandler0; -}; - -Promise.prototype._setFollowee = function(promise) { - this._rejectionHandler0 = promise; -}; - -Promise.prototype._settlePromise = function(promise, handler, receiver, value) { - var isPromise = promise instanceof Promise; - var bitField = this._bitField; - var asyncGuaranteed = ((bitField & 134217728) !== 0); - if (((bitField & 65536) !== 0)) { - if (isPromise) promise._invokeInternalOnCancel(); - - if (receiver instanceof PassThroughHandlerContext && - receiver.isFinallyHandler()) { - receiver.cancelPromise = promise; - if (tryCatch(handler).call(receiver, value) === errorObj) { - promise._reject(errorObj.e); - } - } else if (handler === reflectHandler) { - promise._fulfill(reflectHandler.call(receiver)); - } else if (receiver instanceof Proxyable) { - receiver._promiseCancelled(promise); - } else if (isPromise || promise instanceof PromiseArray) { - promise._cancel(); - } else { - receiver.cancel(); - } - } else if (typeof handler === "function") { - if (!isPromise) { - handler.call(receiver, value, promise); - } else { - if (asyncGuaranteed) promise._setAsyncGuaranteed(); - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - } else if (receiver instanceof Proxyable) { - if (!receiver._isResolved()) { - if (((bitField & 33554432) !== 0)) { - receiver._promiseFulfilled(value, promise); - } else { - receiver._promiseRejected(value, promise); - } - } - } else if (isPromise) { - if (asyncGuaranteed) promise._setAsyncGuaranteed(); - if (((bitField & 33554432) !== 0)) { - promise._fulfill(value); - } else { - promise._reject(value); - } - } -}; - -Promise.prototype._settlePromiseLateCancellationObserver = function(ctx) { - var handler = ctx.handler; - var promise = ctx.promise; - var receiver = ctx.receiver; - var value = ctx.value; - if (typeof handler === "function") { - if (!(promise instanceof Promise)) { - handler.call(receiver, value, promise); - } else { - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - } else if (promise instanceof Promise) { - promise._reject(value); - } -}; - -Promise.prototype._settlePromiseCtx = function(ctx) { - this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value); -}; - -Promise.prototype._settlePromise0 = function(handler, value, bitField) { - var promise = this._promise0; - var receiver = this._receiverAt(0); - this._promise0 = undefined; - this._receiver0 = undefined; - this._settlePromise(promise, handler, receiver, value); -}; - -Promise.prototype._clearCallbackDataAtIndex = function(index) { - var base = index * 4 - 4; - this[base + 2] = - this[base + 3] = - this[base + 0] = - this[base + 1] = undefined; -}; - -Promise.prototype._fulfill = function (value) { - var bitField = this._bitField; - if (((bitField & 117506048) >>> 16)) return; - if (value === this) { - var err = makeSelfResolutionError(); - this._attachExtraTrace(err); - return this._reject(err); - } - this._setFulfilled(); - this._rejectionHandler0 = value; - - if ((bitField & 65535) > 0) { - if (((bitField & 134217728) !== 0)) { - this._settlePromises(); - } else { - async.settlePromises(this); - } - this._dereferenceTrace(); - } -}; - -Promise.prototype._reject = function (reason) { - var bitField = this._bitField; - if (((bitField & 117506048) >>> 16)) return; - this._setRejected(); - this._fulfillmentHandler0 = reason; - - if (this._isFinal()) { - return async.fatalError(reason, util.isNode); - } - - if ((bitField & 65535) > 0) { - async.settlePromises(this); - } else { - this._ensurePossibleRejectionHandled(); - } -}; - -Promise.prototype._fulfillPromises = function (len, value) { - for (var i = 1; i < len; i++) { - var handler = this._fulfillmentHandlerAt(i); - var promise = this._promiseAt(i); - var receiver = this._receiverAt(i); - this._clearCallbackDataAtIndex(i); - this._settlePromise(promise, handler, receiver, value); - } -}; - -Promise.prototype._rejectPromises = function (len, reason) { - for (var i = 1; i < len; i++) { - var handler = this._rejectionHandlerAt(i); - var promise = this._promiseAt(i); - var receiver = this._receiverAt(i); - this._clearCallbackDataAtIndex(i); - this._settlePromise(promise, handler, receiver, reason); - } -}; - -Promise.prototype._settlePromises = function () { - var bitField = this._bitField; - var len = (bitField & 65535); - - if (len > 0) { - if (((bitField & 16842752) !== 0)) { - var reason = this._fulfillmentHandler0; - this._settlePromise0(this._rejectionHandler0, reason, bitField); - this._rejectPromises(len, reason); - } else { - var value = this._rejectionHandler0; - this._settlePromise0(this._fulfillmentHandler0, value, bitField); - this._fulfillPromises(len, value); - } - this._setLength(0); - } - this._clearCancellationData(); -}; - -Promise.prototype._settledValue = function() { - var bitField = this._bitField; - if (((bitField & 33554432) !== 0)) { - return this._rejectionHandler0; - } else if (((bitField & 16777216) !== 0)) { - return this._fulfillmentHandler0; - } -}; - -if (typeof Symbol !== "undefined" && Symbol.toStringTag) { - es5.defineProperty(Promise.prototype, Symbol.toStringTag, { - get: function () { - return "Object"; - } - }); -} - -function deferResolve(v) {this.promise._resolveCallback(v);} -function deferReject(v) {this.promise._rejectCallback(v, false);} - -Promise.defer = Promise.pending = function() { - debug.deprecated("Promise.defer", "new Promise"); - var promise = new Promise(INTERNAL); - return { - promise: promise, - resolve: deferResolve, - reject: deferReject - }; -}; - -util.notEnumerableProp(Promise, - "_makeSelfResolutionError", - makeSelfResolutionError); - -_dereq_("./method")(Promise, INTERNAL, tryConvertToPromise, apiRejection, - debug); -_dereq_("./bind")(Promise, INTERNAL, tryConvertToPromise, debug); -_dereq_("./cancel")(Promise, PromiseArray, apiRejection, debug); -_dereq_("./direct_resolve")(Promise); -_dereq_("./synchronous_inspection")(Promise); -_dereq_("./join")( - Promise, PromiseArray, tryConvertToPromise, INTERNAL, async); -Promise.Promise = Promise; -Promise.version = "3.7.2"; -_dereq_('./call_get.js')(Promise); -_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug); -_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug); -_dereq_('./nodeify.js')(Promise); -_dereq_('./promisify.js')(Promise, INTERNAL); -_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection); -_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection); -_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug); -_dereq_('./settle.js')(Promise, PromiseArray, debug); -_dereq_('./some.js')(Promise, PromiseArray, apiRejection); -_dereq_('./timers.js')(Promise, INTERNAL, debug); -_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug); -_dereq_('./any.js')(Promise); -_dereq_('./each.js')(Promise, INTERNAL); -_dereq_('./filter.js')(Promise, INTERNAL); - - util.toFastProperties(Promise); - util.toFastProperties(Promise.prototype); - function fillTypes(value) { - var p = new Promise(INTERNAL); - p._fulfillmentHandler0 = value; - p._rejectionHandler0 = value; - p._promise0 = value; - p._receiver0 = value; - } - // Complete slack tracking, opt out of field-type tracking and - // stabilize map - fillTypes({a: 1}); - fillTypes({b: 2}); - fillTypes({c: 3}); - fillTypes(1); - fillTypes(function(){}); - fillTypes(undefined); - fillTypes(false); - fillTypes(new Promise(INTERNAL)); - debug.setBounds(Async.firstLineError, util.lastLineError); - return Promise; - -}; - -},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36,"async_hooks":undefined}],23:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL, tryConvertToPromise, - apiRejection, Proxyable) { -var util = _dereq_("./util"); -var isArray = util.isArray; - -function toResolutionValue(val) { - switch(val) { - case -2: return []; - case -3: return {}; - case -6: return new Map(); - } -} - -function PromiseArray(values) { - var promise = this._promise = new Promise(INTERNAL); - if (values instanceof Promise) { - promise._propagateFrom(values, 3); - values.suppressUnhandledRejections(); - } - promise._setOnCancel(this); - this._values = values; - this._length = 0; - this._totalResolved = 0; - this._init(undefined, -2); -} -util.inherits(PromiseArray, Proxyable); - -PromiseArray.prototype.length = function () { - return this._length; -}; - -PromiseArray.prototype.promise = function () { - return this._promise; -}; - -PromiseArray.prototype._init = function init(_, resolveValueIfEmpty) { - var values = tryConvertToPromise(this._values, this._promise); - if (values instanceof Promise) { - values = values._target(); - var bitField = values._bitField; - ; - this._values = values; - - if (((bitField & 50397184) === 0)) { - this._promise._setAsyncGuaranteed(); - return values._then( - init, - this._reject, - undefined, - this, - resolveValueIfEmpty - ); - } else if (((bitField & 33554432) !== 0)) { - values = values._value(); - } else if (((bitField & 16777216) !== 0)) { - return this._reject(values._reason()); - } else { - return this._cancel(); - } - } - values = util.asArray(values); - if (values === null) { - var err = apiRejection( - "expecting an array or an iterable object but got " + util.classString(values)).reason(); - this._promise._rejectCallback(err, false); - return; - } - - if (values.length === 0) { - if (resolveValueIfEmpty === -5) { - this._resolveEmptyArray(); - } - else { - this._resolve(toResolutionValue(resolveValueIfEmpty)); - } - return; - } - this._iterate(values); -}; - -PromiseArray.prototype._iterate = function(values) { - var len = this.getActualLength(values.length); - this._length = len; - this._values = this.shouldCopyValues() ? new Array(len) : this._values; - var result = this._promise; - var isResolved = false; - var bitField = null; - for (var i = 0; i < len; ++i) { - var maybePromise = tryConvertToPromise(values[i], result); - - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - bitField = maybePromise._bitField; - } else { - bitField = null; - } - - if (isResolved) { - if (bitField !== null) { - maybePromise.suppressUnhandledRejections(); - } - } else if (bitField !== null) { - if (((bitField & 50397184) === 0)) { - maybePromise._proxy(this, i); - this._values[i] = maybePromise; - } else if (((bitField & 33554432) !== 0)) { - isResolved = this._promiseFulfilled(maybePromise._value(), i); - } else if (((bitField & 16777216) !== 0)) { - isResolved = this._promiseRejected(maybePromise._reason(), i); - } else { - isResolved = this._promiseCancelled(i); - } - } else { - isResolved = this._promiseFulfilled(maybePromise, i); - } - } - if (!isResolved) result._setAsyncGuaranteed(); -}; - -PromiseArray.prototype._isResolved = function () { - return this._values === null; -}; - -PromiseArray.prototype._resolve = function (value) { - this._values = null; - this._promise._fulfill(value); -}; - -PromiseArray.prototype._cancel = function() { - if (this._isResolved() || !this._promise._isCancellable()) return; - this._values = null; - this._promise._cancel(); -}; - -PromiseArray.prototype._reject = function (reason) { - this._values = null; - this._promise._rejectCallback(reason, false); -}; - -PromiseArray.prototype._promiseFulfilled = function (value, index) { - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - return true; - } - return false; -}; - -PromiseArray.prototype._promiseCancelled = function() { - this._cancel(); - return true; -}; - -PromiseArray.prototype._promiseRejected = function (reason) { - this._totalResolved++; - this._reject(reason); - return true; -}; - -PromiseArray.prototype._resultCancelled = function() { - if (this._isResolved()) return; - var values = this._values; - this._cancel(); - if (values instanceof Promise) { - values.cancel(); - } else { - for (var i = 0; i < values.length; ++i) { - if (values[i] instanceof Promise) { - values[i].cancel(); - } - } - } -}; - -PromiseArray.prototype.shouldCopyValues = function () { - return true; -}; - -PromiseArray.prototype.getActualLength = function (len) { - return len; -}; - -return PromiseArray; -}; - -},{"./util":36}],24:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var THIS = {}; -var util = _dereq_("./util"); -var nodebackForPromise = _dereq_("./nodeback"); -var withAppended = util.withAppended; -var maybeWrapAsError = util.maybeWrapAsError; -var canEvaluate = util.canEvaluate; -var TypeError = _dereq_("./errors").TypeError; -var defaultSuffix = "Async"; -var defaultPromisified = {__isPromisified__: true}; -var noCopyProps = [ - "arity", "length", - "name", - "arguments", - "caller", - "callee", - "prototype", - "__isPromisified__" -]; -var noCopyPropsPattern = new RegExp("^(?:" + noCopyProps.join("|") + ")$"); - -var defaultFilter = function(name) { - return util.isIdentifier(name) && - name.charAt(0) !== "_" && - name !== "constructor"; -}; - -function propsFilter(key) { - return !noCopyPropsPattern.test(key); -} - -function isPromisified(fn) { - try { - return fn.__isPromisified__ === true; - } - catch (e) { - return false; - } -} - -function hasPromisified(obj, key, suffix) { - var val = util.getDataPropertyOrDefault(obj, key + suffix, - defaultPromisified); - return val ? isPromisified(val) : false; -} -function checkValid(ret, suffix, suffixRegexp) { - for (var i = 0; i < ret.length; i += 2) { - var key = ret[i]; - if (suffixRegexp.test(key)) { - var keyWithoutAsyncSuffix = key.replace(suffixRegexp, ""); - for (var j = 0; j < ret.length; j += 2) { - if (ret[j] === keyWithoutAsyncSuffix) { - throw new TypeError("Cannot promisify an API that has normal methods with '%s'-suffix\u000a\u000a See http://goo.gl/MqrFmX\u000a" - .replace("%s", suffix)); - } - } - } - } -} - -function promisifiableMethods(obj, suffix, suffixRegexp, filter) { - var keys = util.inheritedDataKeys(obj); - var ret = []; - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - var value = obj[key]; - var passesDefaultFilter = filter === defaultFilter - ? true : defaultFilter(key, value, obj); - if (typeof value === "function" && - !isPromisified(value) && - !hasPromisified(obj, key, suffix) && - filter(key, value, obj, passesDefaultFilter)) { - ret.push(key, value); - } - } - checkValid(ret, suffix, suffixRegexp); - return ret; -} - -var escapeIdentRegex = function(str) { - return str.replace(/([$])/, "\\$"); -}; - -var makeNodePromisifiedEval; -if (!true) { -var switchCaseArgumentOrder = function(likelyArgumentCount) { - var ret = [likelyArgumentCount]; - var min = Math.max(0, likelyArgumentCount - 1 - 3); - for(var i = likelyArgumentCount - 1; i >= min; --i) { - ret.push(i); - } - for(var i = likelyArgumentCount + 1; i <= 3; ++i) { - ret.push(i); - } - return ret; -}; - -var argumentSequence = function(argumentCount) { - return util.filledRange(argumentCount, "_arg", ""); -}; - -var parameterDeclaration = function(parameterCount) { - return util.filledRange( - Math.max(parameterCount, 3), "_arg", ""); -}; - -var parameterCount = function(fn) { - if (typeof fn.length === "number") { - return Math.max(Math.min(fn.length, 1023 + 1), 0); - } - return 0; -}; - -makeNodePromisifiedEval = -function(callback, receiver, originalName, fn, _, multiArgs) { - var newParameterCount = Math.max(0, parameterCount(fn) - 1); - var argumentOrder = switchCaseArgumentOrder(newParameterCount); - var shouldProxyThis = typeof callback === "string" || receiver === THIS; - - function generateCallForArgumentCount(count) { - var args = argumentSequence(count).join(", "); - var comma = count > 0 ? ", " : ""; - var ret; - if (shouldProxyThis) { - ret = "ret = callback.call(this, {{args}}, nodeback); break;\n"; - } else { - ret = receiver === undefined - ? "ret = callback({{args}}, nodeback); break;\n" - : "ret = callback.call(receiver, {{args}}, nodeback); break;\n"; - } - return ret.replace("{{args}}", args).replace(", ", comma); - } - - function generateArgumentSwitchCase() { - var ret = ""; - for (var i = 0; i < argumentOrder.length; ++i) { - ret += "case " + argumentOrder[i] +":" + - generateCallForArgumentCount(argumentOrder[i]); - } - - ret += " \n\ - default: \n\ - var args = new Array(len + 1); \n\ - var i = 0; \n\ - for (var i = 0; i < len; ++i) { \n\ - args[i] = arguments[i]; \n\ - } \n\ - args[i] = nodeback; \n\ - [CodeForCall] \n\ - break; \n\ - ".replace("[CodeForCall]", (shouldProxyThis - ? "ret = callback.apply(this, args);\n" - : "ret = callback.apply(receiver, args);\n")); - return ret; - } - - var getFunctionCode = typeof callback === "string" - ? ("this != null ? this['"+callback+"'] : fn") - : "fn"; - var body = "'use strict'; \n\ - var ret = function (Parameters) { \n\ - 'use strict'; \n\ - var len = arguments.length; \n\ - var promise = new Promise(INTERNAL); \n\ - promise._captureStackTrace(); \n\ - var nodeback = nodebackForPromise(promise, " + multiArgs + "); \n\ - var ret; \n\ - var callback = tryCatch([GetFunctionCode]); \n\ - switch(len) { \n\ - [CodeForSwitchCase] \n\ - } \n\ - if (ret === errorObj) { \n\ - promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\n\ - } \n\ - if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \n\ - return promise; \n\ - }; \n\ - notEnumerableProp(ret, '__isPromisified__', true); \n\ - return ret; \n\ - ".replace("[CodeForSwitchCase]", generateArgumentSwitchCase()) - .replace("[GetFunctionCode]", getFunctionCode); - body = body.replace("Parameters", parameterDeclaration(newParameterCount)); - return new Function("Promise", - "fn", - "receiver", - "withAppended", - "maybeWrapAsError", - "nodebackForPromise", - "tryCatch", - "errorObj", - "notEnumerableProp", - "INTERNAL", - body)( - Promise, - fn, - receiver, - withAppended, - maybeWrapAsError, - nodebackForPromise, - util.tryCatch, - util.errorObj, - util.notEnumerableProp, - INTERNAL); -}; -} - -function makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) { - var defaultThis = (function() {return this;})(); - var method = callback; - if (typeof method === "string") { - callback = fn; - } - function promisified() { - var _receiver = receiver; - if (receiver === THIS) _receiver = this; - var promise = new Promise(INTERNAL); - promise._captureStackTrace(); - var cb = typeof method === "string" && this !== defaultThis - ? this[method] : callback; - var fn = nodebackForPromise(promise, multiArgs); - try { - cb.apply(_receiver, withAppended(arguments, fn)); - } catch(e) { - promise._rejectCallback(maybeWrapAsError(e), true, true); - } - if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); - return promise; - } - util.notEnumerableProp(promisified, "__isPromisified__", true); - return promisified; -} - -var makeNodePromisified = canEvaluate - ? makeNodePromisifiedEval - : makeNodePromisifiedClosure; - -function promisifyAll(obj, suffix, filter, promisifier, multiArgs) { - var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + "$"); - var methods = - promisifiableMethods(obj, suffix, suffixRegexp, filter); - - for (var i = 0, len = methods.length; i < len; i+= 2) { - var key = methods[i]; - var fn = methods[i+1]; - var promisifiedKey = key + suffix; - if (promisifier === makeNodePromisified) { - obj[promisifiedKey] = - makeNodePromisified(key, THIS, key, fn, suffix, multiArgs); - } else { - var promisified = promisifier(fn, function() { - return makeNodePromisified(key, THIS, key, - fn, suffix, multiArgs); - }); - util.notEnumerableProp(promisified, "__isPromisified__", true); - obj[promisifiedKey] = promisified; - } - } - util.toFastProperties(obj); - return obj; -} - -function promisify(callback, receiver, multiArgs) { - return makeNodePromisified(callback, receiver, undefined, - callback, null, multiArgs); -} - -Promise.promisify = function (fn, options) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - if (isPromisified(fn)) { - return fn; - } - options = Object(options); - var receiver = options.context === undefined ? THIS : options.context; - var multiArgs = !!options.multiArgs; - var ret = promisify(fn, receiver, multiArgs); - util.copyDescriptors(fn, ret, propsFilter); - return ret; -}; - -Promise.promisifyAll = function (target, options) { - if (typeof target !== "function" && typeof target !== "object") { - throw new TypeError("the target of promisifyAll must be an object or a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - options = Object(options); - var multiArgs = !!options.multiArgs; - var suffix = options.suffix; - if (typeof suffix !== "string") suffix = defaultSuffix; - var filter = options.filter; - if (typeof filter !== "function") filter = defaultFilter; - var promisifier = options.promisifier; - if (typeof promisifier !== "function") promisifier = makeNodePromisified; - - if (!util.isIdentifier(suffix)) { - throw new RangeError("suffix must be a valid identifier\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - - var keys = util.inheritedDataKeys(target); - for (var i = 0; i < keys.length; ++i) { - var value = target[keys[i]]; - if (keys[i] !== "constructor" && - util.isClass(value)) { - promisifyAll(value.prototype, suffix, filter, promisifier, - multiArgs); - promisifyAll(value, suffix, filter, promisifier, multiArgs); - } - } - - return promisifyAll(target, suffix, filter, promisifier, multiArgs); -}; -}; - - -},{"./errors":12,"./nodeback":20,"./util":36}],25:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function( - Promise, PromiseArray, tryConvertToPromise, apiRejection) { -var util = _dereq_("./util"); -var isObject = util.isObject; -var es5 = _dereq_("./es5"); -var Es6Map; -if (typeof Map === "function") Es6Map = Map; - -var mapToEntries = (function() { - var index = 0; - var size = 0; - - function extractEntry(value, key) { - this[index] = value; - this[index + size] = key; - index++; - } - - return function mapToEntries(map) { - size = map.size; - index = 0; - var ret = new Array(map.size * 2); - map.forEach(extractEntry, ret); - return ret; - }; -})(); - -var entriesToMap = function(entries) { - var ret = new Es6Map(); - var length = entries.length / 2 | 0; - for (var i = 0; i < length; ++i) { - var key = entries[length + i]; - var value = entries[i]; - ret.set(key, value); - } - return ret; -}; - -function PropertiesPromiseArray(obj) { - var isMap = false; - var entries; - if (Es6Map !== undefined && obj instanceof Es6Map) { - entries = mapToEntries(obj); - isMap = true; - } else { - var keys = es5.keys(obj); - var len = keys.length; - entries = new Array(len * 2); - for (var i = 0; i < len; ++i) { - var key = keys[i]; - entries[i] = obj[key]; - entries[i + len] = key; - } - } - this.constructor$(entries); - this._isMap = isMap; - this._init$(undefined, isMap ? -6 : -3); -} -util.inherits(PropertiesPromiseArray, PromiseArray); - -PropertiesPromiseArray.prototype._init = function () {}; - -PropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) { - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - var val; - if (this._isMap) { - val = entriesToMap(this._values); - } else { - val = {}; - var keyOffset = this.length(); - for (var i = 0, len = this.length(); i < len; ++i) { - val[this._values[i + keyOffset]] = this._values[i]; - } - } - this._resolve(val); - return true; - } - return false; -}; - -PropertiesPromiseArray.prototype.shouldCopyValues = function () { - return false; -}; - -PropertiesPromiseArray.prototype.getActualLength = function (len) { - return len >> 1; -}; - -function props(promises) { - var ret; - var castValue = tryConvertToPromise(promises); - - if (!isObject(castValue)) { - return apiRejection("cannot await properties of a non-object\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } else if (castValue instanceof Promise) { - ret = castValue._then( - Promise.props, undefined, undefined, undefined, undefined); - } else { - ret = new PropertiesPromiseArray(castValue).promise(); - } - - if (castValue instanceof Promise) { - ret._propagateFrom(castValue, 2); - } - return ret; -} - -Promise.prototype.props = function () { - return props(this); -}; - -Promise.props = function (promises) { - return props(promises); -}; -}; - -},{"./es5":13,"./util":36}],26:[function(_dereq_,module,exports){ -"use strict"; -function arrayMove(src, srcIndex, dst, dstIndex, len) { - for (var j = 0; j < len; ++j) { - dst[j + dstIndex] = src[j + srcIndex]; - src[j + srcIndex] = void 0; - } -} - -function Queue(capacity) { - this._capacity = capacity; - this._length = 0; - this._front = 0; -} - -Queue.prototype._willBeOverCapacity = function (size) { - return this._capacity < size; -}; - -Queue.prototype._pushOne = function (arg) { - var length = this.length(); - this._checkCapacity(length + 1); - var i = (this._front + length) & (this._capacity - 1); - this[i] = arg; - this._length = length + 1; -}; - -Queue.prototype.push = function (fn, receiver, arg) { - var length = this.length() + 3; - if (this._willBeOverCapacity(length)) { - this._pushOne(fn); - this._pushOne(receiver); - this._pushOne(arg); - return; - } - var j = this._front + length - 3; - this._checkCapacity(length); - var wrapMask = this._capacity - 1; - this[(j + 0) & wrapMask] = fn; - this[(j + 1) & wrapMask] = receiver; - this[(j + 2) & wrapMask] = arg; - this._length = length; -}; - -Queue.prototype.shift = function () { - var front = this._front, - ret = this[front]; - - this[front] = undefined; - this._front = (front + 1) & (this._capacity - 1); - this._length--; - return ret; -}; - -Queue.prototype.length = function () { - return this._length; -}; - -Queue.prototype._checkCapacity = function (size) { - if (this._capacity < size) { - this._resizeTo(this._capacity << 1); - } -}; - -Queue.prototype._resizeTo = function (capacity) { - var oldCapacity = this._capacity; - this._capacity = capacity; - var front = this._front; - var length = this._length; - var moveItemsCount = (front + length) & (oldCapacity - 1); - arrayMove(this, 0, this, oldCapacity, moveItemsCount); -}; - -module.exports = Queue; - -},{}],27:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function( - Promise, INTERNAL, tryConvertToPromise, apiRejection) { -var util = _dereq_("./util"); - -var raceLater = function (promise) { - return promise.then(function(array) { - return race(array, promise); - }); -}; - -function race(promises, parent) { - var maybePromise = tryConvertToPromise(promises); - - if (maybePromise instanceof Promise) { - return raceLater(maybePromise); - } else { - promises = util.asArray(promises); - if (promises === null) - return apiRejection("expecting an array or an iterable object but got " + util.classString(promises)); - } - - var ret = new Promise(INTERNAL); - if (parent !== undefined) { - ret._propagateFrom(parent, 3); - } - var fulfill = ret._fulfill; - var reject = ret._reject; - for (var i = 0, len = promises.length; i < len; ++i) { - var val = promises[i]; - - if (val === undefined && !(i in promises)) { - continue; - } - - Promise.cast(val)._then(fulfill, reject, undefined, ret, null); - } - return ret; -} - -Promise.race = function (promises) { - return race(promises, undefined); -}; - -Promise.prototype.race = function () { - return race(this, undefined); -}; - -}; - -},{"./util":36}],28:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, - PromiseArray, - apiRejection, - tryConvertToPromise, - INTERNAL, - debug) { -var util = _dereq_("./util"); -var tryCatch = util.tryCatch; - -function ReductionPromiseArray(promises, fn, initialValue, _each) { - this.constructor$(promises); - var context = Promise._getContext(); - this._fn = util.contextBind(context, fn); - if (initialValue !== undefined) { - initialValue = Promise.resolve(initialValue); - initialValue._attachCancellationCallback(this); - } - this._initialValue = initialValue; - this._currentCancellable = null; - if(_each === INTERNAL) { - this._eachValues = Array(this._length); - } else if (_each === 0) { - this._eachValues = null; - } else { - this._eachValues = undefined; - } - this._promise._captureStackTrace(); - this._init$(undefined, -5); -} -util.inherits(ReductionPromiseArray, PromiseArray); - -ReductionPromiseArray.prototype._gotAccum = function(accum) { - if (this._eachValues !== undefined && - this._eachValues !== null && - accum !== INTERNAL) { - this._eachValues.push(accum); - } -}; - -ReductionPromiseArray.prototype._eachComplete = function(value) { - if (this._eachValues !== null) { - this._eachValues.push(value); - } - return this._eachValues; -}; - -ReductionPromiseArray.prototype._init = function() {}; - -ReductionPromiseArray.prototype._resolveEmptyArray = function() { - this._resolve(this._eachValues !== undefined ? this._eachValues - : this._initialValue); -}; - -ReductionPromiseArray.prototype.shouldCopyValues = function () { - return false; -}; - -ReductionPromiseArray.prototype._resolve = function(value) { - this._promise._resolveCallback(value); - this._values = null; -}; - -ReductionPromiseArray.prototype._resultCancelled = function(sender) { - if (sender === this._initialValue) return this._cancel(); - if (this._isResolved()) return; - this._resultCancelled$(); - if (this._currentCancellable instanceof Promise) { - this._currentCancellable.cancel(); - } - if (this._initialValue instanceof Promise) { - this._initialValue.cancel(); - } -}; - -ReductionPromiseArray.prototype._iterate = function (values) { - this._values = values; - var value; - var i; - var length = values.length; - if (this._initialValue !== undefined) { - value = this._initialValue; - i = 0; - } else { - value = Promise.resolve(values[0]); - i = 1; - } - - this._currentCancellable = value; - - for (var j = i; j < length; ++j) { - var maybePromise = values[j]; - if (maybePromise instanceof Promise) { - maybePromise.suppressUnhandledRejections(); - } - } - - if (!value.isRejected()) { - for (; i < length; ++i) { - var ctx = { - accum: null, - value: values[i], - index: i, - length: length, - array: this - }; - - value = value._then(gotAccum, undefined, undefined, ctx, undefined); - - if ((i & 127) === 0) { - value._setNoAsyncGuarantee(); - } - } - } - - if (this._eachValues !== undefined) { - value = value - ._then(this._eachComplete, undefined, undefined, this, undefined); - } - value._then(completed, completed, undefined, value, this); -}; - -Promise.prototype.reduce = function (fn, initialValue) { - return reduce(this, fn, initialValue, null); -}; - -Promise.reduce = function (promises, fn, initialValue, _each) { - return reduce(promises, fn, initialValue, _each); -}; - -function completed(valueOrReason, array) { - if (this.isFulfilled()) { - array._resolve(valueOrReason); - } else { - array._reject(valueOrReason); - } -} - -function reduce(promises, fn, initialValue, _each) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var array = new ReductionPromiseArray(promises, fn, initialValue, _each); - return array.promise(); -} - -function gotAccum(accum) { - this.accum = accum; - this.array._gotAccum(accum); - var value = tryConvertToPromise(this.value, this.array._promise); - if (value instanceof Promise) { - this.array._currentCancellable = value; - return value._then(gotValue, undefined, undefined, this, undefined); - } else { - return gotValue.call(this, value); - } -} - -function gotValue(value) { - var array = this.array; - var promise = array._promise; - var fn = tryCatch(array._fn); - promise._pushContext(); - var ret; - if (array._eachValues !== undefined) { - ret = fn.call(promise._boundValue(), value, this.index, this.length); - } else { - ret = fn.call(promise._boundValue(), - this.accum, value, this.index, this.length); - } - if (ret instanceof Promise) { - array._currentCancellable = ret; - } - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, - promiseCreated, - array._eachValues !== undefined ? "Promise.each" : "Promise.reduce", - promise - ); - return ret; -} -}; - -},{"./util":36}],29:[function(_dereq_,module,exports){ -"use strict"; -var util = _dereq_("./util"); -var schedule; -var noAsyncScheduler = function() { - throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/MqrFmX\u000a"); -}; -var NativePromise = util.getNativePromise(); -if (util.isNode && typeof MutationObserver === "undefined") { - var GlobalSetImmediate = global.setImmediate; - var ProcessNextTick = process.nextTick; - schedule = util.isRecentNode - ? function(fn) { GlobalSetImmediate.call(global, fn); } - : function(fn) { ProcessNextTick.call(process, fn); }; -} else if (typeof NativePromise === "function" && - typeof NativePromise.resolve === "function") { - var nativePromise = NativePromise.resolve(); - schedule = function(fn) { - nativePromise.then(fn); - }; -} else if ((typeof MutationObserver !== "undefined") && - !(typeof window !== "undefined" && - window.navigator && - (window.navigator.standalone || window.cordova)) && - ("classList" in document.documentElement)) { - schedule = (function() { - var div = document.createElement("div"); - var opts = {attributes: true}; - var toggleScheduled = false; - var div2 = document.createElement("div"); - var o2 = new MutationObserver(function() { - div.classList.toggle("foo"); - toggleScheduled = false; - }); - o2.observe(div2, opts); - - var scheduleToggle = function() { - if (toggleScheduled) return; - toggleScheduled = true; - div2.classList.toggle("foo"); - }; - - return function schedule(fn) { - var o = new MutationObserver(function() { - o.disconnect(); - fn(); - }); - o.observe(div, opts); - scheduleToggle(); - }; - })(); -} else if (typeof setImmediate !== "undefined") { - schedule = function (fn) { - setImmediate(fn); - }; -} else if (typeof setTimeout !== "undefined") { - schedule = function (fn) { - setTimeout(fn, 0); - }; -} else { - schedule = noAsyncScheduler; -} -module.exports = schedule; - -},{"./util":36}],30:[function(_dereq_,module,exports){ -"use strict"; -module.exports = - function(Promise, PromiseArray, debug) { -var PromiseInspection = Promise.PromiseInspection; -var util = _dereq_("./util"); - -function SettledPromiseArray(values) { - this.constructor$(values); -} -util.inherits(SettledPromiseArray, PromiseArray); - -SettledPromiseArray.prototype._promiseResolved = function (index, inspection) { - this._values[index] = inspection; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - return true; - } - return false; -}; - -SettledPromiseArray.prototype._promiseFulfilled = function (value, index) { - var ret = new PromiseInspection(); - ret._bitField = 33554432; - ret._settledValueField = value; - return this._promiseResolved(index, ret); -}; -SettledPromiseArray.prototype._promiseRejected = function (reason, index) { - var ret = new PromiseInspection(); - ret._bitField = 16777216; - ret._settledValueField = reason; - return this._promiseResolved(index, ret); -}; - -Promise.settle = function (promises) { - debug.deprecated(".settle()", ".reflect()"); - return new SettledPromiseArray(promises).promise(); -}; - -Promise.allSettled = function (promises) { - return new SettledPromiseArray(promises).promise(); -}; - -Promise.prototype.settle = function () { - return Promise.settle(this); -}; -}; - -},{"./util":36}],31:[function(_dereq_,module,exports){ -"use strict"; -module.exports = -function(Promise, PromiseArray, apiRejection) { -var util = _dereq_("./util"); -var RangeError = _dereq_("./errors").RangeError; -var AggregateError = _dereq_("./errors").AggregateError; -var isArray = util.isArray; -var CANCELLATION = {}; - - -function SomePromiseArray(values) { - this.constructor$(values); - this._howMany = 0; - this._unwrap = false; - this._initialized = false; -} -util.inherits(SomePromiseArray, PromiseArray); - -SomePromiseArray.prototype._init = function () { - if (!this._initialized) { - return; - } - if (this._howMany === 0) { - this._resolve([]); - return; - } - this._init$(undefined, -5); - var isArrayResolved = isArray(this._values); - if (!this._isResolved() && - isArrayResolved && - this._howMany > this._canPossiblyFulfill()) { - this._reject(this._getRangeError(this.length())); - } -}; - -SomePromiseArray.prototype.init = function () { - this._initialized = true; - this._init(); -}; - -SomePromiseArray.prototype.setUnwrap = function () { - this._unwrap = true; -}; - -SomePromiseArray.prototype.howMany = function () { - return this._howMany; -}; - -SomePromiseArray.prototype.setHowMany = function (count) { - this._howMany = count; -}; - -SomePromiseArray.prototype._promiseFulfilled = function (value) { - this._addFulfilled(value); - if (this._fulfilled() === this.howMany()) { - this._values.length = this.howMany(); - if (this.howMany() === 1 && this._unwrap) { - this._resolve(this._values[0]); - } else { - this._resolve(this._values); - } - return true; - } - return false; - -}; -SomePromiseArray.prototype._promiseRejected = function (reason) { - this._addRejected(reason); - return this._checkOutcome(); -}; - -SomePromiseArray.prototype._promiseCancelled = function () { - if (this._values instanceof Promise || this._values == null) { - return this._cancel(); - } - this._addRejected(CANCELLATION); - return this._checkOutcome(); -}; - -SomePromiseArray.prototype._checkOutcome = function() { - if (this.howMany() > this._canPossiblyFulfill()) { - var e = new AggregateError(); - for (var i = this.length(); i < this._values.length; ++i) { - if (this._values[i] !== CANCELLATION) { - e.push(this._values[i]); - } - } - if (e.length > 0) { - this._reject(e); - } else { - this._cancel(); - } - return true; - } - return false; -}; - -SomePromiseArray.prototype._fulfilled = function () { - return this._totalResolved; -}; - -SomePromiseArray.prototype._rejected = function () { - return this._values.length - this.length(); -}; - -SomePromiseArray.prototype._addRejected = function (reason) { - this._values.push(reason); -}; - -SomePromiseArray.prototype._addFulfilled = function (value) { - this._values[this._totalResolved++] = value; -}; - -SomePromiseArray.prototype._canPossiblyFulfill = function () { - return this.length() - this._rejected(); -}; - -SomePromiseArray.prototype._getRangeError = function (count) { - var message = "Input array must contain at least " + - this._howMany + " items but contains only " + count + " items"; - return new RangeError(message); -}; - -SomePromiseArray.prototype._resolveEmptyArray = function () { - this._reject(this._getRangeError(0)); -}; - -function some(promises, howMany) { - if ((howMany | 0) !== howMany || howMany < 0) { - return apiRejection("expecting a positive integer\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var ret = new SomePromiseArray(promises); - var promise = ret.promise(); - ret.setHowMany(howMany); - ret.init(); - return promise; -} - -Promise.some = function (promises, howMany) { - return some(promises, howMany); -}; - -Promise.prototype.some = function (howMany) { - return some(this, howMany); -}; - -Promise._SomePromiseArray = SomePromiseArray; -}; - -},{"./errors":12,"./util":36}],32:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -function PromiseInspection(promise) { - if (promise !== undefined) { - promise = promise._target(); - this._bitField = promise._bitField; - this._settledValueField = promise._isFateSealed() - ? promise._settledValue() : undefined; - } - else { - this._bitField = 0; - this._settledValueField = undefined; - } -} - -PromiseInspection.prototype._settledValue = function() { - return this._settledValueField; -}; - -var value = PromiseInspection.prototype.value = function () { - if (!this.isFulfilled()) { - throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - return this._settledValue(); -}; - -var reason = PromiseInspection.prototype.error = -PromiseInspection.prototype.reason = function () { - if (!this.isRejected()) { - throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - return this._settledValue(); -}; - -var isFulfilled = PromiseInspection.prototype.isFulfilled = function() { - return (this._bitField & 33554432) !== 0; -}; - -var isRejected = PromiseInspection.prototype.isRejected = function () { - return (this._bitField & 16777216) !== 0; -}; - -var isPending = PromiseInspection.prototype.isPending = function () { - return (this._bitField & 50397184) === 0; -}; - -var isResolved = PromiseInspection.prototype.isResolved = function () { - return (this._bitField & 50331648) !== 0; -}; - -PromiseInspection.prototype.isCancelled = function() { - return (this._bitField & 8454144) !== 0; -}; - -Promise.prototype.__isCancelled = function() { - return (this._bitField & 65536) === 65536; -}; - -Promise.prototype._isCancelled = function() { - return this._target().__isCancelled(); -}; - -Promise.prototype.isCancelled = function() { - return (this._target()._bitField & 8454144) !== 0; -}; - -Promise.prototype.isPending = function() { - return isPending.call(this._target()); -}; - -Promise.prototype.isRejected = function() { - return isRejected.call(this._target()); -}; - -Promise.prototype.isFulfilled = function() { - return isFulfilled.call(this._target()); -}; - -Promise.prototype.isResolved = function() { - return isResolved.call(this._target()); -}; - -Promise.prototype.value = function() { - return value.call(this._target()); -}; - -Promise.prototype.reason = function() { - var target = this._target(); - target._unsetRejectionIsUnhandled(); - return reason.call(target); -}; - -Promise.prototype._value = function() { - return this._settledValue(); -}; - -Promise.prototype._reason = function() { - this._unsetRejectionIsUnhandled(); - return this._settledValue(); -}; - -Promise.PromiseInspection = PromiseInspection; -}; - -},{}],33:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var util = _dereq_("./util"); -var errorObj = util.errorObj; -var isObject = util.isObject; - -function tryConvertToPromise(obj, context) { - if (isObject(obj)) { - if (obj instanceof Promise) return obj; - var then = getThen(obj); - if (then === errorObj) { - if (context) context._pushContext(); - var ret = Promise.reject(then.e); - if (context) context._popContext(); - return ret; - } else if (typeof then === "function") { - if (isAnyBluebirdPromise(obj)) { - var ret = new Promise(INTERNAL); - obj._then( - ret._fulfill, - ret._reject, - undefined, - ret, - null - ); - return ret; - } - return doThenable(obj, then, context); - } - } - return obj; -} - -function doGetThen(obj) { - return obj.then; -} - -function getThen(obj) { - try { - return doGetThen(obj); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} - -var hasProp = {}.hasOwnProperty; -function isAnyBluebirdPromise(obj) { - try { - return hasProp.call(obj, "_promise0"); - } catch (e) { - return false; - } -} - -function doThenable(x, then, context) { - var promise = new Promise(INTERNAL); - var ret = promise; - if (context) context._pushContext(); - promise._captureStackTrace(); - if (context) context._popContext(); - var synchronous = true; - var result = util.tryCatch(then).call(x, resolve, reject); - synchronous = false; - - if (promise && result === errorObj) { - promise._rejectCallback(result.e, true, true); - promise = null; - } - - function resolve(value) { - if (!promise) return; - promise._resolveCallback(value); - promise = null; - } - - function reject(reason) { - if (!promise) return; - promise._rejectCallback(reason, synchronous, true); - promise = null; - } - return ret; -} - -return tryConvertToPromise; -}; - -},{"./util":36}],34:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL, debug) { -var util = _dereq_("./util"); -var TimeoutError = Promise.TimeoutError; - -function HandleWrapper(handle) { - this.handle = handle; -} - -HandleWrapper.prototype._resultCancelled = function() { - clearTimeout(this.handle); -}; - -var afterValue = function(value) { return delay(+this).thenReturn(value); }; -var delay = Promise.delay = function (ms, value) { - var ret; - var handle; - if (value !== undefined) { - ret = Promise.resolve(value) - ._then(afterValue, null, null, ms, undefined); - if (debug.cancellation() && value instanceof Promise) { - ret._setOnCancel(value); - } - } else { - ret = new Promise(INTERNAL); - handle = setTimeout(function() { ret._fulfill(); }, +ms); - if (debug.cancellation()) { - ret._setOnCancel(new HandleWrapper(handle)); - } - ret._captureStackTrace(); - } - ret._setAsyncGuaranteed(); - return ret; -}; - -Promise.prototype.delay = function (ms) { - return delay(ms, this); -}; - -var afterTimeout = function (promise, message, parent) { - var err; - if (typeof message !== "string") { - if (message instanceof Error) { - err = message; - } else { - err = new TimeoutError("operation timed out"); - } - } else { - err = new TimeoutError(message); - } - util.markAsOriginatingFromRejection(err); - promise._attachExtraTrace(err); - promise._reject(err); - - if (parent != null) { - parent.cancel(); - } -}; - -function successClear(value) { - clearTimeout(this.handle); - return value; -} - -function failureClear(reason) { - clearTimeout(this.handle); - throw reason; -} - -Promise.prototype.timeout = function (ms, message) { - ms = +ms; - var ret, parent; - - var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() { - if (ret.isPending()) { - afterTimeout(ret, message, parent); - } - }, ms)); - - if (debug.cancellation()) { - parent = this.then(); - ret = parent._then(successClear, failureClear, - undefined, handleWrapper, undefined); - ret._setOnCancel(handleWrapper); - } else { - ret = this._then(successClear, failureClear, - undefined, handleWrapper, undefined); - } - - return ret; -}; - -}; - -},{"./util":36}],35:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function (Promise, apiRejection, tryConvertToPromise, - createContext, INTERNAL, debug) { - var util = _dereq_("./util"); - var TypeError = _dereq_("./errors").TypeError; - var inherits = _dereq_("./util").inherits; - var errorObj = util.errorObj; - var tryCatch = util.tryCatch; - var NULL = {}; - - function thrower(e) { - setTimeout(function(){throw e;}, 0); - } - - function castPreservingDisposable(thenable) { - var maybePromise = tryConvertToPromise(thenable); - if (maybePromise !== thenable && - typeof thenable._isDisposable === "function" && - typeof thenable._getDisposer === "function" && - thenable._isDisposable()) { - maybePromise._setDisposable(thenable._getDisposer()); - } - return maybePromise; - } - function dispose(resources, inspection) { - var i = 0; - var len = resources.length; - var ret = new Promise(INTERNAL); - function iterator() { - if (i >= len) return ret._fulfill(); - var maybePromise = castPreservingDisposable(resources[i++]); - if (maybePromise instanceof Promise && - maybePromise._isDisposable()) { - try { - maybePromise = tryConvertToPromise( - maybePromise._getDisposer().tryDispose(inspection), - resources.promise); - } catch (e) { - return thrower(e); - } - if (maybePromise instanceof Promise) { - return maybePromise._then(iterator, thrower, - null, null, null); - } - } - iterator(); - } - iterator(); - return ret; - } - - function Disposer(data, promise, context) { - this._data = data; - this._promise = promise; - this._context = context; - } - - Disposer.prototype.data = function () { - return this._data; - }; - - Disposer.prototype.promise = function () { - return this._promise; - }; - - Disposer.prototype.resource = function () { - if (this.promise().isFulfilled()) { - return this.promise().value(); - } - return NULL; - }; - - Disposer.prototype.tryDispose = function(inspection) { - var resource = this.resource(); - var context = this._context; - if (context !== undefined) context._pushContext(); - var ret = resource !== NULL - ? this.doDispose(resource, inspection) : null; - if (context !== undefined) context._popContext(); - this._promise._unsetDisposable(); - this._data = null; - return ret; - }; - - Disposer.isDisposer = function (d) { - return (d != null && - typeof d.resource === "function" && - typeof d.tryDispose === "function"); - }; - - function FunctionDisposer(fn, promise, context) { - this.constructor$(fn, promise, context); - } - inherits(FunctionDisposer, Disposer); - - FunctionDisposer.prototype.doDispose = function (resource, inspection) { - var fn = this.data(); - return fn.call(resource, resource, inspection); - }; - - function maybeUnwrapDisposer(value) { - if (Disposer.isDisposer(value)) { - this.resources[this.index]._setDisposable(value); - return value.promise(); - } - return value; - } - - function ResourceList(length) { - this.length = length; - this.promise = null; - this[length-1] = null; - } - - ResourceList.prototype._resultCancelled = function() { - var len = this.length; - for (var i = 0; i < len; ++i) { - var item = this[i]; - if (item instanceof Promise) { - item.cancel(); - } - } - }; - - Promise.using = function () { - var len = arguments.length; - if (len < 2) return apiRejection( - "you must pass at least 2 arguments to Promise.using"); - var fn = arguments[len - 1]; - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var input; - var spreadArgs = true; - if (len === 2 && Array.isArray(arguments[0])) { - input = arguments[0]; - len = input.length; - spreadArgs = false; - } else { - input = arguments; - len--; - } - var resources = new ResourceList(len); - for (var i = 0; i < len; ++i) { - var resource = input[i]; - if (Disposer.isDisposer(resource)) { - var disposer = resource; - resource = resource.promise(); - resource._setDisposable(disposer); - } else { - var maybePromise = tryConvertToPromise(resource); - if (maybePromise instanceof Promise) { - resource = - maybePromise._then(maybeUnwrapDisposer, null, null, { - resources: resources, - index: i - }, undefined); - } - } - resources[i] = resource; - } - - var reflectedResources = new Array(resources.length); - for (var i = 0; i < reflectedResources.length; ++i) { - reflectedResources[i] = Promise.resolve(resources[i]).reflect(); - } - - var resultPromise = Promise.all(reflectedResources) - .then(function(inspections) { - for (var i = 0; i < inspections.length; ++i) { - var inspection = inspections[i]; - if (inspection.isRejected()) { - errorObj.e = inspection.error(); - return errorObj; - } else if (!inspection.isFulfilled()) { - resultPromise.cancel(); - return; - } - inspections[i] = inspection.value(); - } - promise._pushContext(); - - fn = tryCatch(fn); - var ret = spreadArgs - ? fn.apply(undefined, inspections) : fn(inspections); - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, promiseCreated, "Promise.using", promise); - return ret; - }); - - var promise = resultPromise.lastly(function() { - var inspection = new Promise.PromiseInspection(resultPromise); - return dispose(resources, inspection); - }); - resources.promise = promise; - promise._setOnCancel(resources); - return promise; - }; - - Promise.prototype._setDisposable = function (disposer) { - this._bitField = this._bitField | 131072; - this._disposer = disposer; - }; - - Promise.prototype._isDisposable = function () { - return (this._bitField & 131072) > 0; - }; - - Promise.prototype._getDisposer = function () { - return this._disposer; - }; - - Promise.prototype._unsetDisposable = function () { - this._bitField = this._bitField & (~131072); - this._disposer = undefined; - }; - - Promise.prototype.disposer = function (fn) { - if (typeof fn === "function") { - return new FunctionDisposer(fn, this, createContext()); - } - throw new TypeError(); - }; - -}; - -},{"./errors":12,"./util":36}],36:[function(_dereq_,module,exports){ -"use strict"; -var es5 = _dereq_("./es5"); -var canEvaluate = typeof navigator == "undefined"; - -var errorObj = {e: {}}; -var tryCatchTarget; -var globalObject = typeof self !== "undefined" ? self : - typeof window !== "undefined" ? window : - typeof global !== "undefined" ? global : - this !== undefined ? this : null; - -function tryCatcher() { - try { - var target = tryCatchTarget; - tryCatchTarget = null; - return target.apply(this, arguments); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} -function tryCatch(fn) { - tryCatchTarget = fn; - return tryCatcher; -} - -var inherits = function(Child, Parent) { - var hasProp = {}.hasOwnProperty; - - function T() { - this.constructor = Child; - this.constructor$ = Parent; - for (var propertyName in Parent.prototype) { - if (hasProp.call(Parent.prototype, propertyName) && - propertyName.charAt(propertyName.length-1) !== "$" - ) { - this[propertyName + "$"] = Parent.prototype[propertyName]; - } - } - } - T.prototype = Parent.prototype; - Child.prototype = new T(); - return Child.prototype; -}; - - -function isPrimitive(val) { - return val == null || val === true || val === false || - typeof val === "string" || typeof val === "number"; - -} - -function isObject(value) { - return typeof value === "function" || - typeof value === "object" && value !== null; -} - -function maybeWrapAsError(maybeError) { - if (!isPrimitive(maybeError)) return maybeError; - - return new Error(safeToString(maybeError)); -} - -function withAppended(target, appendee) { - var len = target.length; - var ret = new Array(len + 1); - var i; - for (i = 0; i < len; ++i) { - ret[i] = target[i]; - } - ret[i] = appendee; - return ret; -} - -function getDataPropertyOrDefault(obj, key, defaultValue) { - if (es5.isES5) { - var desc = Object.getOwnPropertyDescriptor(obj, key); - - if (desc != null) { - return desc.get == null && desc.set == null - ? desc.value - : defaultValue; - } - } else { - return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined; - } -} - -function notEnumerableProp(obj, name, value) { - if (isPrimitive(obj)) return obj; - var descriptor = { - value: value, - configurable: true, - enumerable: false, - writable: true - }; - es5.defineProperty(obj, name, descriptor); - return obj; -} - -function thrower(r) { - throw r; -} - -var inheritedDataKeys = (function() { - var excludedPrototypes = [ - Array.prototype, - Object.prototype, - Function.prototype - ]; - - var isExcludedProto = function(val) { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (excludedPrototypes[i] === val) { - return true; - } - } - return false; - }; - - if (es5.isES5) { - var getKeys = Object.getOwnPropertyNames; - return function(obj) { - var ret = []; - var visitedKeys = Object.create(null); - while (obj != null && !isExcludedProto(obj)) { - var keys; - try { - keys = getKeys(obj); - } catch (e) { - return ret; - } - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (visitedKeys[key]) continue; - visitedKeys[key] = true; - var desc = Object.getOwnPropertyDescriptor(obj, key); - if (desc != null && desc.get == null && desc.set == null) { - ret.push(key); - } - } - obj = es5.getPrototypeOf(obj); - } - return ret; - }; - } else { - var hasProp = {}.hasOwnProperty; - return function(obj) { - if (isExcludedProto(obj)) return []; - var ret = []; - - /*jshint forin:false */ - enumeration: for (var key in obj) { - if (hasProp.call(obj, key)) { - ret.push(key); - } else { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (hasProp.call(excludedPrototypes[i], key)) { - continue enumeration; - } - } - ret.push(key); - } - } - return ret; - }; - } - -})(); - -var thisAssignmentPattern = /this\s*\.\s*\S+\s*=/; -function isClass(fn) { - try { - if (typeof fn === "function") { - var keys = es5.names(fn.prototype); - - var hasMethods = es5.isES5 && keys.length > 1; - var hasMethodsOtherThanConstructor = keys.length > 0 && - !(keys.length === 1 && keys[0] === "constructor"); - var hasThisAssignmentAndStaticMethods = - thisAssignmentPattern.test(fn + "") && es5.names(fn).length > 0; - - if (hasMethods || hasMethodsOtherThanConstructor || - hasThisAssignmentAndStaticMethods) { - return true; - } - } - return false; - } catch (e) { - return false; - } -} - -function toFastProperties(obj) { - /*jshint -W027,-W055,-W031*/ - function FakeConstructor() {} - FakeConstructor.prototype = obj; - var receiver = new FakeConstructor(); - function ic() { - return typeof receiver.foo; - } - ic(); - ic(); - return obj; - eval(obj); -} - -var rident = /^[a-z$_][a-z$_0-9]*$/i; -function isIdentifier(str) { - return rident.test(str); -} - -function filledRange(count, prefix, suffix) { - var ret = new Array(count); - for(var i = 0; i < count; ++i) { - ret[i] = prefix + i + suffix; - } - return ret; -} - -function safeToString(obj) { - try { - return obj + ""; - } catch (e) { - return "[no string representation]"; - } -} - -function isError(obj) { - return obj instanceof Error || - (obj !== null && - typeof obj === "object" && - typeof obj.message === "string" && - typeof obj.name === "string"); -} - -function markAsOriginatingFromRejection(e) { - try { - notEnumerableProp(e, "isOperational", true); - } - catch(ignore) {} -} - -function originatesFromRejection(e) { - if (e == null) return false; - return ((e instanceof Error["__BluebirdErrorTypes__"].OperationalError) || - e["isOperational"] === true); -} - -function canAttachTrace(obj) { - return isError(obj) && es5.propertyIsWritable(obj, "stack"); -} - -var ensureErrorObject = (function() { - if (!("stack" in new Error())) { - return function(value) { - if (canAttachTrace(value)) return value; - try {throw new Error(safeToString(value));} - catch(err) {return err;} - }; - } else { - return function(value) { - if (canAttachTrace(value)) return value; - return new Error(safeToString(value)); - }; - } -})(); - -function classString(obj) { - return {}.toString.call(obj); -} - -function copyDescriptors(from, to, filter) { - var keys = es5.names(from); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (filter(key)) { - try { - es5.defineProperty(to, key, es5.getDescriptor(from, key)); - } catch (ignore) {} - } - } -} - -var asArray = function(v) { - if (es5.isArray(v)) { - return v; - } - return null; -}; - -if (typeof Symbol !== "undefined" && Symbol.iterator) { - var ArrayFrom = typeof Array.from === "function" ? function(v) { - return Array.from(v); - } : function(v) { - var ret = []; - var it = v[Symbol.iterator](); - var itResult; - while (!((itResult = it.next()).done)) { - ret.push(itResult.value); - } - return ret; - }; - - asArray = function(v) { - if (es5.isArray(v)) { - return v; - } else if (v != null && typeof v[Symbol.iterator] === "function") { - return ArrayFrom(v); - } - return null; - }; -} - -var isNode = typeof process !== "undefined" && - classString(process).toLowerCase() === "[object process]"; - -var hasEnvVariables = typeof process !== "undefined" && - typeof process.env !== "undefined"; - -function env(key) { - return hasEnvVariables ? process.env[key] : undefined; -} - -function getNativePromise() { - if (typeof Promise === "function") { - try { - var promise = new Promise(function(){}); - if (classString(promise) === "[object Promise]") { - return Promise; - } - } catch (e) {} - } -} - -var reflectHandler; -function contextBind(ctx, cb) { - if (ctx === null || - typeof cb !== "function" || - cb === reflectHandler) { - return cb; - } - - if (ctx.domain !== null) { - cb = ctx.domain.bind(cb); - } - - var async = ctx.async; - if (async !== null) { - var old = cb; - cb = function() { - var args = (new Array(2)).concat([].slice.call(arguments));; - args[0] = old; - args[1] = this; - return async.runInAsyncScope.apply(async, args); - }; - } - return cb; -} - -var ret = { - setReflectHandler: function(fn) { - reflectHandler = fn; - }, - isClass: isClass, - isIdentifier: isIdentifier, - inheritedDataKeys: inheritedDataKeys, - getDataPropertyOrDefault: getDataPropertyOrDefault, - thrower: thrower, - isArray: es5.isArray, - asArray: asArray, - notEnumerableProp: notEnumerableProp, - isPrimitive: isPrimitive, - isObject: isObject, - isError: isError, - canEvaluate: canEvaluate, - errorObj: errorObj, - tryCatch: tryCatch, - inherits: inherits, - withAppended: withAppended, - maybeWrapAsError: maybeWrapAsError, - toFastProperties: toFastProperties, - filledRange: filledRange, - toString: safeToString, - canAttachTrace: canAttachTrace, - ensureErrorObject: ensureErrorObject, - originatesFromRejection: originatesFromRejection, - markAsOriginatingFromRejection: markAsOriginatingFromRejection, - classString: classString, - copyDescriptors: copyDescriptors, - isNode: isNode, - hasEnvVariables: hasEnvVariables, - env: env, - global: globalObject, - getNativePromise: getNativePromise, - contextBind: contextBind -}; -ret.isRecentNode = ret.isNode && (function() { - var version; - if (process.versions && process.versions.node) { - version = process.versions.node.split(".").map(Number); - } else if (process.version) { - version = process.version.split(".").map(Number); - } - return (version[0] === 0 && version[1] > 10) || (version[0] > 0); -})(); -ret.nodeSupportsAsyncResource = ret.isNode && (function() { - var supportsAsync = false; - try { - var res = _dereq_("async_hooks").AsyncResource; - supportsAsync = typeof res.prototype.runInAsyncScope === "function"; - } catch (e) { - supportsAsync = false; - } - return supportsAsync; -})(); - -if (ret.isNode) ret.toFastProperties(process); - -try {throw new Error(); } catch (e) {ret.lastLineError = e;} -module.exports = ret; - -},{"./es5":13,"async_hooks":undefined}]},{},[4])(4) -}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; } \ No newline at end of file diff --git a/node_modules/bluebird/js/browser/bluebird.min.js b/node_modules/bluebird/js/browser/bluebird.min.js deleted file mode 100644 index c1e907b..0000000 --- a/node_modules/bluebird/js/browser/bluebird.min.js +++ /dev/null @@ -1,31 +0,0 @@ -/* @preserve - * The MIT License (MIT) - * - * Copyright (c) 2013-2018 Petka Antonov - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - */ -/** - * bluebird build version 3.7.2 - * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each -*/ -!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self),e.Promise=t()}}(function(){var t,e,n;return function r(t,e,n){function i(s,a){if(!e[s]){if(!t[s]){var c="function"==typeof _dereq_&&_dereq_;if(!a&&c)return c(s,!0);if(o)return o(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var l=e[s]={exports:{}};t[s][0].call(l.exports,function(e){var n=t[s][1][e];return i(n?n:e)},l,l.exports,r,t,e,n)}return e[s].exports}for(var o="function"==typeof _dereq_&&_dereq_,s=0;s0;)c(t)}function c(t){var e=t.shift();if("function"!=typeof e)e._settlePromises();else{var n=t.shift(),r=t.shift();e.call(n,r)}}var u;try{throw new Error}catch(l){u=l}var p=t("./schedule"),f=t("./queue");r.prototype.setScheduler=function(t){var e=this._schedule;return this._schedule=t,this._customScheduler=!0,e},r.prototype.hasCustomScheduler=function(){return this._customScheduler},r.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},r.prototype.fatalError=function(t,e){e?(process.stderr.write("Fatal "+(t instanceof Error?t.stack:t)+"\n"),process.exit(2)):this.throwLater(t)},r.prototype.throwLater=function(t,e){if(1===arguments.length&&(e=t,t=function(){throw e}),"undefined"!=typeof setTimeout)setTimeout(function(){t(e)},0);else try{this._schedule(function(){t(e)})}catch(n){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},r.prototype.invokeLater=i,r.prototype.invoke=o,r.prototype.settlePromises=s,r.prototype._drainQueues=function(){a(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,a(this._lateQueue)},r.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},r.prototype._reset=function(){this._isTickUsed=!1},e.exports=r,e.exports.firstLineError=u},{"./queue":26,"./schedule":29}],3:[function(t,e,n){"use strict";e.exports=function(t,e,n,r){var i=!1,o=function(t,e){this._reject(e)},s=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(o,o,null,this,t)},a=function(t,e){0===(50397184&this._bitField)&&this._resolveCallback(e.target)},c=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(o){i||(i=!0,t.prototype._propagateFrom=r.propagateFromFunction(),t.prototype._boundValue=r.boundValueFunction());var u=n(o),l=new t(e);l._propagateFrom(this,1);var p=this._target();if(l._setBoundTo(u),u instanceof t){var f={promiseRejectionQueued:!1,promise:l,target:p,bindingPromise:u};p._then(e,s,void 0,l,f),u._then(a,c,void 0,l,f),l._setOnCancel(u)}else l._resolveCallback(p);return l},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152===(2097152&this._bitField)},t.bind=function(e,n){return t.resolve(n).bind(e)}}},{}],4:[function(t,e,n){"use strict";function r(){try{Promise===o&&(Promise=i)}catch(t){}return o}var i;"undefined"!=typeof Promise&&(i=Promise);var o=t("./promise")();o.noConflict=r,e.exports=o},{"./promise":22}],5:[function(t,e,n){"use strict";var r=Object.create;if(r){var i=r(null),o=r(null);i[" size"]=o[" size"]=0}e.exports=function(e){function n(t,n){var r;if(null!=t&&(r=t[n]),"function"!=typeof r){var i="Object "+a.classString(t)+" has no method '"+a.toString(n)+"'";throw new e.TypeError(i)}return r}function r(t){var e=this.pop(),r=n(t,e);return r.apply(t,this)}function i(t){return t[this]}function o(t){var e=+this;return 0>e&&(e=Math.max(0,e+t.length)),t[e]}var s,a=t("./util"),c=a.canEvaluate;a.isIdentifier;e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(r,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e,n="number"==typeof t;if(n)e=o;else if(c){var r=s(t);e=null!==r?r:i}else e=i;return this._then(e,void 0,void 0,t,void 0)}}},{"./util":36}],6:[function(t,e,n){"use strict";e.exports=function(e,n,r,i){var o=t("./util"),s=o.tryCatch,a=o.errorObj,c=e._async;e.prototype["break"]=e.prototype.cancel=function(){if(!i.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var n=t._cancellationParent;if(null==n||!n._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=n}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),this._enoughBranchesHaveCancelled()?(this._invokeOnCancel(),!0):!1)},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),c.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(o.isArray(t))for(var n=0;n=0?o[t]:void 0}var i=!1,o=[];return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},e.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,o.push(this._trace))},e.prototype._popContext=function(){if(void 0!==this._trace){var t=o.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},e.CapturedTrace=null,e.create=n,e.deactivateLongStackTraces=function(){},e.activateLongStackTraces=function(){var n=t.prototype._pushContext,o=t.prototype._popContext,s=t._peekContext,a=t.prototype._peekContext,c=t.prototype._promiseCreated;e.deactivateLongStackTraces=function(){t.prototype._pushContext=n,t.prototype._popContext=o,t._peekContext=s,t.prototype._peekContext=a,t.prototype._promiseCreated=c,i=!1},i=!0,t.prototype._pushContext=e.prototype._pushContext,t.prototype._popContext=e.prototype._popContext,t._peekContext=t.prototype._peekContext=r,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},e}},{}],9:[function(t,e,n){"use strict";e.exports=function(e,n,r,i){function o(t,e){return{promise:e}}function s(){return!1}function a(t,e,n){var r=this;try{t(e,n,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+B.toString(t));r._attachCancellationCallback(t)})}catch(i){return i}}function c(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?B.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function u(){return this._onCancelField}function l(t){this._onCancelField=t}function p(){this._cancellationParent=void 0,this._onCancelField=void 0}function f(t,e){if(0!==(1&e)){this._cancellationParent=t;var n=t._branchesRemainingToCancel;void 0===n&&(n=0),t._branchesRemainingToCancel=n+1}0!==(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}function h(t,e){0!==(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}function _(){var t=this._boundTo;return void 0!==t&&t instanceof e?t.isFulfilled()?t.value():void 0:t}function d(){this._trace=new V(this._peekContext())}function v(t,e){if(q(t)){var n=this._trace;if(void 0!==n&&e&&(n=n._parent),void 0!==n)n.attachExtraTrace(t);else if(!t.__stackCleaned__){var r=F(t);B.notEnumerableProp(t,"stack",r.message+"\n"+r.stack.join("\n")),B.notEnumerableProp(t,"__stackCleaned__",!0)}}}function y(){this._trace=void 0}function g(t,e,n,r,i){if(void 0===t&&null!==e&&Z){if(void 0!==i&&i._returnedNonUndefined())return;if(0===(65535&r._bitField))return;n&&(n+=" ");var o="",s="";if(e._trace){for(var a=e._trace.stack.split("\n"),c=k(a),u=c.length-1;u>=0;--u){var l=c[u];if(!Q.test(l)){var p=l.match(G);p&&(o="at "+p[1]+":"+p[2]+":"+p[3]+" ");break}}if(c.length>0)for(var f=c[0],u=0;u0&&(s="\n"+a[u-1]);break}}var h="a promise was created in a "+n+"handler "+o+"but was not returned from it, see http://goo.gl/rRqMUw"+s;r._warn(h,!0,e)}}function m(t,e){var n=t+" is deprecated and will be removed in a future version.";return e&&(n+=" Use "+e+" instead."),b(n)}function b(t,n,r){if(lt.warnings){var i,o=new U(t);if(n)r._attachExtraTrace(o);else if(lt.longStackTraces&&(i=e._peekContext()))i.attachExtraTrace(o);else{var s=F(o);o.stack=s.message+"\n"+s.stack.join("\n")}ot("warning",o)||x(o,"",!0)}}function w(t,e){for(var n=0;n=0;--a)if(r[a]===o){s=a;break}for(var a=s;a>=0;--a){var c=r[a];if(e[i]!==c)break;e.pop(),i--}e=r}}function k(t){for(var e=[],n=0;n0&&"SyntaxError"!=t.name&&(e=e.slice(n)),e}function F(t){var e=t.stack,n=t.toString();return e="string"==typeof e&&e.length>0?E(t):[" (No stack trace)"],{message:n,stack:"SyntaxError"==t.name?e:k(e)}}function x(t,e,n){if("undefined"!=typeof console){var r;if(B.isObject(t)){var i=t.stack;r=e+X(i,t)}else r=e+String(t);"function"==typeof I?I(r,n):("function"==typeof console.log||"object"==typeof console.log)&&console.log(r)}}function T(t,e,n,r){var i=!1;try{"function"==typeof e&&(i=!0,"rejectionHandled"===t?e(r):e(n,r))}catch(o){N.throwLater(o)}"unhandledRejection"===t?ot(t,n,r)||i||x(n,"Unhandled rejection "):ot(t,r)}function P(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{e=t&&"function"==typeof t.toString?t.toString():B.toString(t);var n=/\[object [a-zA-Z0-9$_]+\]/;if(n.test(e))try{var r=JSON.stringify(t);e=r}catch(i){}0===e.length&&(e="(empty array)")}return"(<"+R(e)+">, no stack trace)"}function R(t){var e=41;return t.lengths||0>a||!n||!r||n!==r||s>=a||(at=function(t){if($.test(t))return!0;var e=O(t);return e&&e.fileName===n&&s<=e.line&&e.line<=a?!0:!1})}}function V(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);ut(this,V),e>32&&this.uncycle()}var H,D,I,L,N=e._async,U=t("./errors").Warning,B=t("./util"),M=t("./es5"),q=B.canAttachTrace,$=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,Q=/\((?:timers\.js):\d+:\d+\)/,G=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,z=null,X=null,W=!1,K=!(0==B.env("BLUEBIRD_DEBUG")||!B.env("BLUEBIRD_DEBUG")&&"development"!==B.env("NODE_ENV")),J=!(0==B.env("BLUEBIRD_WARNINGS")||!K&&!B.env("BLUEBIRD_WARNINGS")),Y=!(0==B.env("BLUEBIRD_LONG_STACK_TRACES")||!K&&!B.env("BLUEBIRD_LONG_STACK_TRACES")),Z=0!=B.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(J||!!B.env("BLUEBIRD_W_FORGOTTEN_RETURN"));!function(){function t(){for(var t=0;t0},e.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},e.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},e.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},e.prototype._warn=function(t,e,n){return b(t,e,n||this)},e.onPossiblyUnhandledRejection=function(t){var n=e._getContext();D=B.contextBind(n,t)},e.onUnhandledRejectionHandled=function(t){var n=e._getContext();H=B.contextBind(n,t)};var tt=function(){};e.longStackTraces=function(){if(N.haveItemsQueued()&&!lt.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!lt.longStackTraces&&S()){var t=e.prototype._captureStackTrace,r=e.prototype._attachExtraTrace,i=e.prototype._dereferenceTrace;lt.longStackTraces=!0,tt=function(){if(N.haveItemsQueued()&&!lt.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");e.prototype._captureStackTrace=t,e.prototype._attachExtraTrace=r,e.prototype._dereferenceTrace=i,n.deactivateLongStackTraces(),lt.longStackTraces=!1},e.prototype._captureStackTrace=d,e.prototype._attachExtraTrace=v,e.prototype._dereferenceTrace=y,n.activateLongStackTraces()}},e.hasLongStackTraces=function(){return lt.longStackTraces&&S()};var et={unhandledrejection:{before:function(){var t=B.global.onunhandledrejection;return B.global.onunhandledrejection=null,t},after:function(t){B.global.onunhandledrejection=t}},rejectionhandled:{before:function(){var t=B.global.onrejectionhandled;return B.global.onrejectionhandled=null,t},after:function(t){B.global.onrejectionhandled=t}}},nt=function(){var t=function(t,e){if(!t)return!B.global.dispatchEvent(e);var n;try{return n=t.before(),!B.global.dispatchEvent(e)}finally{t.after(n)}};try{if("function"==typeof CustomEvent){var e=new CustomEvent("CustomEvent");return B.global.dispatchEvent(e),function(e,n){e=e.toLowerCase();var r={detail:n,cancelable:!0},i=new CustomEvent(e,r);return M.defineProperty(i,"promise",{value:n.promise}),M.defineProperty(i,"reason",{value:n.reason}),t(et[e],i)}}if("function"==typeof Event){var e=new Event("CustomEvent");return B.global.dispatchEvent(e),function(e,n){e=e.toLowerCase();var r=new Event(e,{cancelable:!0});return r.detail=n,M.defineProperty(r,"promise",{value:n.promise}),M.defineProperty(r,"reason",{value:n.reason}),t(et[e],r)}}var e=document.createEvent("CustomEvent");return e.initCustomEvent("testingtheevent",!1,!0,{}),B.global.dispatchEvent(e),function(e,n){e=e.toLowerCase();var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,!1,!0,n),t(et[e],r)}}catch(n){}return function(){return!1}}(),rt=function(){return B.isNode?function(){return process.emit.apply(process,arguments)}:B.global?function(t){var e="on"+t.toLowerCase(),n=B.global[e];return n?(n.apply(B.global,[].slice.call(arguments,1)),!0):!1}:function(){return!1}}(),it={promiseCreated:o,promiseFulfilled:o,promiseRejected:o,promiseResolved:o,promiseCancelled:o,promiseChained:function(t,e,n){return{promise:e,child:n}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,n){return{reason:e,promise:n}},rejectionHandled:o},ot=function(t){var e=!1;try{e=rt.apply(null,arguments)}catch(n){N.throwLater(n),e=!0}var r=!1;try{r=nt(t,it[t].apply(null,arguments))}catch(n){N.throwLater(n),r=!0}return r||e};e.config=function(t){if(t=Object(t),"longStackTraces"in t&&(t.longStackTraces?e.longStackTraces():!t.longStackTraces&&e.hasLongStackTraces()&&tt()),"warnings"in t){var n=t.warnings;lt.warnings=!!n,Z=lt.warnings,B.isObject(n)&&"wForgottenReturn"in n&&(Z=!!n.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!lt.cancellation){if(N.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");e.prototype._clearCancellationData=p,e.prototype._propagateFrom=f,e.prototype._onCancel=u,e.prototype._setOnCancel=l,e.prototype._attachCancellationCallback=c,e.prototype._execute=a,st=f,lt.cancellation=!0}if("monitoring"in t&&(t.monitoring&&!lt.monitoring?(lt.monitoring=!0,e.prototype._fireEvent=ot):!t.monitoring&<.monitoring&&(lt.monitoring=!1,e.prototype._fireEvent=s)),"asyncHooks"in t&&B.nodeSupportsAsyncResource){var o=lt.asyncHooks,h=!!t.asyncHooks;o!==h&&(lt.asyncHooks=h,h?r():i())}return e},e.prototype._fireEvent=s,e.prototype._execute=function(t,e,n){try{t(e,n)}catch(r){return r}},e.prototype._onCancel=function(){},e.prototype._setOnCancel=function(t){},e.prototype._attachCancellationCallback=function(t){},e.prototype._captureStackTrace=function(){},e.prototype._attachExtraTrace=function(){},e.prototype._dereferenceTrace=function(){},e.prototype._clearCancellationData=function(){},e.prototype._propagateFrom=function(t,e){};var st=h,at=function(){return!1},ct=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;B.inherits(V,Error),n.CapturedTrace=V,V.prototype.uncycle=function(){var t=this._length;if(!(2>t)){for(var e=[],n={},r=0,i=this;void 0!==i;++r)e.push(i),i=i._parent;t=this._length=r;for(var r=t-1;r>=0;--r){var o=e[r].stack;void 0===n[o]&&(n[o]=r)}for(var r=0;t>r;++r){var s=e[r].stack,a=n[s];if(void 0!==a&&a!==r){a>0&&(e[a-1]._parent=void 0,e[a-1]._length=1),e[r]._parent=void 0,e[r]._length=1;var c=r>0?e[r-1]:this;t-1>a?(c._parent=e[a+1],c._parent.uncycle(),c._length=c._parent._length+1):(c._parent=void 0,c._length=1);for(var u=c._length+1,l=r-2;l>=0;--l)e[l]._length=u,u++;return}}}},V.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=F(t),n=e.message,r=[e.stack],i=this;void 0!==i;)r.push(k(i.stack.split("\n"))),i=i._parent;j(r),C(r),B.notEnumerableProp(t,"stack",w(n,r)),B.notEnumerableProp(t,"__stackCleaned__",!0)}};var ut=function(){var t=/^\s*at\s*/,e=function(t,e){return"string"==typeof t?t:void 0!==e.name&&void 0!==e.message?e.toString():P(e)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,z=t,X=e;var n=Error.captureStackTrace;return at=function(t){return $.test(t)},function(t,e){Error.stackTraceLimit+=6,n(t,e),Error.stackTraceLimit-=6}}var r=new Error;if("string"==typeof r.stack&&r.stack.split("\n")[0].indexOf("stackDetection@")>=0)return z=/@/,X=e,W=!0,function(t){t.stack=(new Error).stack};var i;try{throw new Error}catch(o){i="stack"in o}return"stack"in r||!i||"number"!=typeof Error.stackTraceLimit?(X=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?P(e):e.toString()},null):(z=t,X=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}([]);"undefined"!=typeof console&&"undefined"!=typeof console.warn&&(I=function(t){console.warn(t)},B.isNode&&process.stderr.isTTY?I=function(t,e){var n=e?"":"";console.warn(n+t+"\n")}:B.isNode||"string"!=typeof(new Error).stack||(I=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var lt={warnings:J,longStackTraces:!1,cancellation:!1,monitoring:!1,asyncHooks:!1};return Y&&e.longStackTraces(),{asyncHooks:function(){return lt.asyncHooks},longStackTraces:function(){return lt.longStackTraces},warnings:function(){return lt.warnings},cancellation:function(){return lt.cancellation},monitoring:function(){return lt.monitoring},propagateFromFunction:function(){return st},boundValueFunction:function(){return _},checkForgottenReturns:g,setBounds:A,warn:b,deprecated:m,CapturedTrace:V,fireDomEvent:nt,fireGlobalEvent:rt}}},{"./errors":12,"./es5":13,"./util":36}],10:[function(t,e,n){"use strict";e.exports=function(t){function e(){return this.value}function n(){throw this.reason}t.prototype["return"]=t.prototype.thenReturn=function(n){return n instanceof t&&n.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:n},void 0)},t.prototype["throw"]=t.prototype.thenThrow=function(t){return this._then(n,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:t},void 0);var e=arguments[1],r=function(){throw e};return this.caught(t,r)},t.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof t&&n.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:n},void 0);var r=arguments[1];r instanceof t&&r.suppressUnhandledRejections();var i=function(){return r};return this.caught(n,i)}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t,e){function n(){return o(this)}function r(t,n){return i(t,n,e,e)}var i=t.reduce,o=t.all;t.prototype.each=function(t){return i(this,t,e,0)._then(n,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return i(this,t,e,e)},t.each=function(t,r){return i(t,r,e,0)._then(n,void 0,void 0,t,void 0)},t.mapSeries=r}},{}],12:[function(t,e,n){"use strict";function r(t,e){function n(r){return this instanceof n?(p(this,"message","string"==typeof r?r:e),p(this,"name",t),void(Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this))):new n(r)}return l(n,Error),n}function i(t){return this instanceof i?(p(this,"name","OperationalError"),p(this,"message",t),this.cause=t,this.isOperational=!0,void(t instanceof Error?(p(this,"message",t.message),p(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor))):new i(t)}var o,s,a=t("./es5"),c=a.freeze,u=t("./util"),l=u.inherits,p=u.notEnumerableProp,f=r("Warning","warning"),h=r("CancellationError","cancellation error"),_=r("TimeoutError","timeout error"),d=r("AggregateError","aggregate error");try{o=TypeError,s=RangeError}catch(v){o=r("TypeError","type error"),s=r("RangeError","range error")}for(var y="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),g=0;g1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0):!1}function a(){return u.call(this,this.promise._target()._settledValue())}function c(t){return s(this,t)?void 0:(f.e=t,f)}function u(t){var i=this.promise,u=this.handler;if(!this.called){this.called=!0;var l=this.isFinallyHandler()?u.call(i._boundValue()):u.call(i._boundValue(),t);if(l===r)return l;if(void 0!==l){i._setReturnedNonUndefined();var h=n(l,i);if(h instanceof e){if(null!=this.cancelPromise){if(h._isCancelled()){var _=new p("late cancellation observer");return i._attachExtraTrace(_),f.e=_,f}h.isPending()&&h._attachCancellationCallback(new o(this))}return h._then(a,c,void 0,this,void 0)}}}return i.isRejected()?(s(this),f.e=t,f):(s(this),t)}var l=t("./util"),p=e.CancellationError,f=l.errorObj,h=t("./catch_filter")(r);return i.prototype.isFinallyHandler=function(){return 0===this.type},o.prototype._resultCancelled=function(){s(this.finallyHandler)},e.prototype._passThrough=function(t,e,n,r){return"function"!=typeof t?this.then():this._then(n,r,void 0,new i(this,e,t),void 0)},e.prototype.lastly=e.prototype["finally"]=function(t){return this._passThrough(t,0,u,u)},e.prototype.tap=function(t){return this._passThrough(t,1,u)},e.prototype.tapCatch=function(t){var n=arguments.length;if(1===n)return this._passThrough(t,1,void 0,u);var r,i=new Array(n-1),o=0;for(r=0;n-1>r;++r){var s=arguments[r];if(!l.isObject(s))return e.reject(new TypeError("tapCatch statement predicate: expecting an object but got "+l.classString(s)));i[o++]=s}i.length=o;var a=arguments[r];return this._passThrough(h(i,a,this),1,void 0,u)},i}},{"./catch_filter":7,"./util":36}],16:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,s){function a(t,n,r){for(var o=0;o0&&"function"==typeof arguments[e]){t=arguments[e];var r}var i=[].slice.call(arguments);t&&i.pop();var r=new n(i).promise();return void 0!==t?r.spread(t):r}}},{"./util":36}],18:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,s){function a(t,n,r,i){this.constructor$(t),this._promise._captureStackTrace();var s=e._getContext();if(this._callback=u.contextBind(s,n),this._preservedValues=i===o?new Array(this.length()):null,this._limit=r,this._inFlight=0,this._queue=[],f.invoke(this._asyncInit,this,void 0),u.isArray(t))for(var a=0;a=1?s:0,new a(t,n,s,o).promise()}var u=t("./util"),l=u.tryCatch,p=u.errorObj,f=e._async;u.inherits(a,n),a.prototype._asyncInit=function(){this._init$(void 0,-2)},a.prototype._init=function(){},a.prototype._promiseFulfilled=function(t,n){var r=this._values,o=this.length(),a=this._preservedValues,c=this._limit;if(0>n){if(n=-1*n-1,r[n]=t,c>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(c>=1&&this._inFlight>=c)return r[n]=t,this._queue.push(n),!1;null!==a&&(a[n]=t);var u=this._promise,f=this._callback,h=u._boundValue();u._pushContext();var _=l(f).call(h,t,n,o),d=u._popContext();if(s.checkForgottenReturns(_,d,null!==a?"Promise.filter":"Promise.map",u),_===p)return this._reject(_.e),!0;var v=i(_,this._promise);if(v instanceof e){v=v._target();var y=v._bitField;if(0===(50397184&y))return c>=1&&this._inFlight++,r[n]=v,v._proxy(this,-1*(n+1)),!1;if(0===(33554432&y))return 0!==(16777216&y)?(this._reject(v._reason()),!0):(this._cancel(),!0);_=v._value()}r[n]=_}var g=++this._totalResolved;return g>=o?(null!==a?this._filter(r,a):this._resolve(r),!0):!1},a.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,n=this._values;t.length>0&&this._inFlighto;++o)t[o]&&(r[i++]=e[o]);r.length=i,this._resolve(r)},a.prototype.preservedValues=function(){return this._preservedValues},e.prototype.map=function(t,e){return c(this,t,e,null)},e.map=function(t,e,n,r){return c(t,e,n,r)}}},{"./util":36}],19:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o){var s=t("./util"),a=s.tryCatch;e.method=function(t){if("function"!=typeof t)throw new e.TypeError("expecting a function but got "+s.classString(t));return function(){var r=new e(n);r._captureStackTrace(),r._pushContext();var i=a(t).apply(this,arguments),s=r._popContext();return o.checkForgottenReturns(i,s,"Promise.method",r),r._resolveFromSyncValue(i),r}},e.attempt=e["try"]=function(t){if("function"!=typeof t)return i("expecting a function but got "+s.classString(t));var r=new e(n);r._captureStackTrace(),r._pushContext();var c;if(arguments.length>1){o.deprecated("calling Promise.try with more than 1 argument");var u=arguments[1],l=arguments[2];c=s.isArray(u)?a(t).apply(l,u):a(t).call(l,u)}else c=a(t)();var p=r._popContext();return o.checkForgottenReturns(c,p,"Promise.try",r),r._resolveFromSyncValue(c),r},e.prototype._resolveFromSyncValue=function(t){t===s.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":36}],20:[function(t,e,n){"use strict";function r(t){return t instanceof Error&&l.getPrototypeOf(t)===Error.prototype}function i(t){var e;if(r(t)){e=new u(t),e.name=t.name,e.message=t.message,e.stack=t.stack;for(var n=l.keys(t),i=0;i1){var n,r=new Array(e-1),i=0;for(n=0;e-1>n;++n){var o=arguments[n];if(!f.isObject(o))return l("Catch statement predicate: expecting an object but got "+f.classString(o));r[i++]=o}if(r.length=i,t=arguments[n],"function"!=typeof t)throw new E("The last argument to .catch() must be a function, got "+f.toString(t));return this.then(void 0,D(r,t,this))}return this.then(void 0,t)},i.prototype.reflect=function(){return this._then(u,u,void 0,this,void 0)},i.prototype.then=function(t,e){if(V.warnings()&&arguments.length>0&&"function"!=typeof t&&"function"!=typeof e){var n=".then() only accepts functions but was passed: "+f.classString(t);arguments.length>1&&(n+=", "+f.classString(e)),this._warn(n)}return this._then(t,e,void 0,void 0,void 0)},i.prototype.done=function(t,e){var n=this._then(t,e,void 0,void 0,void 0);n._setIsFinal()},i.prototype.spread=function(t){return"function"!=typeof t?l("expecting a function but got "+f.classString(t)):this.all()._then(t,void 0,void 0,T,void 0)},i.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},i.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new S(this).promise()},i.prototype.error=function(t){return this.caught(f.originatesFromRejection,t)},i.getNewLibraryCopy=e.exports,i.is=function(t){return t instanceof i},i.fromNode=i.fromCallback=function(t){var e=new i(x);e._captureStackTrace();var n=arguments.length>1?!!Object(arguments[1]).multiArgs:!1,r=N(t)(I(e,n));return r===L&&e._rejectCallback(r.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},i.all=function(t){return new S(t).promise()},i.cast=function(t){var e=R(t);return e instanceof i||(e=new i(x),e._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},i.resolve=i.fulfilled=i.cast,i.reject=i.rejected=function(t){var e=new i(x);return e._captureStackTrace(),e._rejectCallback(t,!0),e},i.setScheduler=function(t){if("function"!=typeof t)throw new E("expecting a function but got "+f.classString(t));return j.setScheduler(t)},i.prototype._then=function(t,e,n,r,o){var s=void 0!==o,a=s?o:new i(x),c=this._target(),u=c._bitField;s||(a._propagateFrom(this,3),a._captureStackTrace(),void 0===r&&0!==(2097152&this._bitField)&&(r=0!==(50397184&u)?this._boundValue():c===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,a));var l=g();if(0!==(50397184&u)){var p,h,_=c._settlePromiseCtx;0!==(33554432&u)?(h=c._rejectionHandler0,p=t):0!==(16777216&u)?(h=c._fulfillmentHandler0,p=e,c._unsetRejectionIsUnhandled()):(_=c._settlePromiseLateCancellationObserver,h=new F("late cancellation observer"),c._attachExtraTrace(h),p=e),j.invoke(_,c,{handler:f.contextBind(l,p),promise:a,receiver:r,value:h})}else c._addCallbacks(t,e,a,r,l);return a},i.prototype._length=function(){return 65535&this._bitField},i.prototype._isFateSealed=function(){return 0!==(117506048&this._bitField)},i.prototype._isFollowing=function(){return 67108864===(67108864&this._bitField)},i.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},i.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},i.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},i.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},i.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},i.prototype._isFinal=function(){return(4194304&this._bitField)>0},i.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},i.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},i.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},i.prototype._setAsyncGuaranteed=function(){if(!j.hasCustomScheduler()){var t=this._bitField;this._bitField=t|(536870912&t)>>2^134217728}},i.prototype._setNoAsyncGuarantee=function(){this._bitField=-134217729&(536870912|this._bitField)},i.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];return e===p?void 0:void 0===e&&this._isBound()?this._boundValue():e},i.prototype._promiseAt=function(t){return this[4*t-4+2]},i.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},i.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},i.prototype._boundValue=function(){},i.prototype._migrateCallback0=function(t){var e=(t._bitField,t._fulfillmentHandler0),n=t._rejectionHandler0,r=t._promise0,i=t._receiverAt(0);void 0===i&&(i=p),this._addCallbacks(e,n,r,i,null)},i.prototype._migrateCallbackAt=function(t,e){var n=t._fulfillmentHandlerAt(e),r=t._rejectionHandlerAt(e),i=t._promiseAt(e),o=t._receiverAt(e);void 0===o&&(o=p),this._addCallbacks(n,r,i,o,null)},i.prototype._addCallbacks=function(t,e,n,r,i){var o=this._length();if(o>=65531&&(o=0,this._setLength(0)),0===o)this._promise0=n,this._receiver0=r,"function"==typeof t&&(this._fulfillmentHandler0=f.contextBind(i,t)),"function"==typeof e&&(this._rejectionHandler0=f.contextBind(i,e));else{var s=4*o-4;this[s+2]=n,this[s+3]=r,"function"==typeof t&&(this[s+0]=f.contextBind(i,t)),"function"==typeof e&&(this[s+1]=f.contextBind(i,e))}return this._setLength(o+1),o},i.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},i.prototype._resolveCallback=function(t,e){if(0===(117506048&this._bitField)){if(t===this)return this._rejectCallback(c(),!1);var n=R(t,this);if(!(n instanceof i))return this._fulfill(t);e&&this._propagateFrom(n,2);var r=n._target();if(r===this)return void this._reject(c());var o=r._bitField;if(0===(50397184&o)){var s=this._length();s>0&&r._migrateCallback0(this);for(var a=1;s>a;++a)r._migrateCallbackAt(this,a);this._setFollowing(),this._setLength(0),this._setFollowee(n)}else if(0!==(33554432&o))this._fulfill(r._value());else if(0!==(16777216&o))this._reject(r._reason());else{var u=new F("late cancellation observer");r._attachExtraTrace(u),this._reject(u)}}},i.prototype._rejectCallback=function(t,e,n){var r=f.ensureErrorObject(t),i=r===t;if(!i&&!n&&V.warnings()){var o="a promise was rejected with a non-error: "+f.classString(t);this._warn(o,!0)}this._attachExtraTrace(r,e?i:!1),this._reject(t)},i.prototype._resolveFromExecutor=function(t){if(t!==x){var e=this;this._captureStackTrace(),this._pushContext();var n=!0,r=this._execute(t,function(t){e._resolveCallback(t)},function(t){e._rejectCallback(t,n)});n=!1,this._popContext(),void 0!==r&&e._rejectCallback(r,!0)}},i.prototype._settlePromiseFromHandler=function(t,e,n,r){var i=r._bitField;if(0===(65536&i)){r._pushContext();var o;e===T?n&&"number"==typeof n.length?o=N(t).apply(this._boundValue(),n):(o=L,o.e=new E("cannot .spread() a non-array: "+f.classString(n))):o=N(t).call(e,n);var s=r._popContext();i=r._bitField,0===(65536&i)&&(o===P?r._reject(n):o===L?r._rejectCallback(o.e,!1):(V.checkForgottenReturns(o,s,"",r,this),r._resolveCallback(o)))}},i.prototype._target=function(){for(var t=this;t._isFollowing();)t=t._followee();return t},i.prototype._followee=function(){return this._rejectionHandler0},i.prototype._setFollowee=function(t){this._rejectionHandler0=t},i.prototype._settlePromise=function(t,e,r,o){var s=t instanceof i,a=this._bitField,c=0!==(134217728&a);0!==(65536&a)?(s&&t._invokeInternalOnCancel(),r instanceof H&&r.isFinallyHandler()?(r.cancelPromise=t,N(e).call(r,o)===L&&t._reject(L.e)):e===u?t._fulfill(u.call(r)):r instanceof n?r._promiseCancelled(t):s||t instanceof S?t._cancel():r.cancel()):"function"==typeof e?s?(c&&t._setAsyncGuaranteed(),this._settlePromiseFromHandler(e,r,o,t)):e.call(r,o,t):r instanceof n?r._isResolved()||(0!==(33554432&a)?r._promiseFulfilled(o,t):r._promiseRejected(o,t)):s&&(c&&t._setAsyncGuaranteed(),0!==(33554432&a)?t._fulfill(o):t._reject(o))},i.prototype._settlePromiseLateCancellationObserver=function(t){var e=t.handler,n=t.promise,r=t.receiver,o=t.value;"function"==typeof e?n instanceof i?this._settlePromiseFromHandler(e,r,o,n):e.call(r,o,n):n instanceof i&&n._reject(o)},i.prototype._settlePromiseCtx=function(t){this._settlePromise(t.promise,t.handler,t.receiver,t.value)},i.prototype._settlePromise0=function(t,e,n){var r=this._promise0,i=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(r,t,i,e)},i.prototype._clearCallbackDataAtIndex=function(t){var e=4*t-4;this[e+2]=this[e+3]=this[e+0]=this[e+1]=void 0},i.prototype._fulfill=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(t===this){var n=c();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!==(134217728&e)?this._settlePromises():j.settlePromises(this),this._dereferenceTrace())}},i.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16))return this._setRejected(),this._fulfillmentHandler0=t,this._isFinal()?j.fatalError(t,f.isNode):void((65535&e)>0?j.settlePromises(this):this._ensurePossibleRejectionHandled())},i.prototype._fulfillPromises=function(t,e){for(var n=1;t>n;n++){var r=this._fulfillmentHandlerAt(n),i=this._promiseAt(n),o=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(i,r,o,e)}},i.prototype._rejectPromises=function(t,e){for(var n=1;t>n;n++){var r=this._rejectionHandlerAt(n),i=this._promiseAt(n),o=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(i,r,o,e)}},i.prototype._settlePromises=function(){var t=this._bitField,e=65535&t;if(e>0){if(0!==(16842752&t)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,t),this._rejectPromises(e,n)}else{var r=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,r,t),this._fulfillPromises(e,r)}this._setLength(0)}this._clearCancellationData()},i.prototype._settledValue=function(){var t=this._bitField;return 0!==(33554432&t)?this._rejectionHandler0:0!==(16777216&t)?this._fulfillmentHandler0:void 0},"undefined"!=typeof Symbol&&Symbol.toStringTag&&w.defineProperty(i.prototype,Symbol.toStringTag,{get:function(){return"Object"}}),i.defer=i.pending=function(){V.deprecated("Promise.defer","new Promise");var t=new i(x);return{promise:t,resolve:o,reject:s}},f.notEnumerableProp(i,"_makeSelfResolutionError",c),t("./method")(i,x,R,l,V),t("./bind")(i,x,R,V),t("./cancel")(i,S,l,V),t("./direct_resolve")(i),t("./synchronous_inspection")(i),t("./join")(i,S,R,x,j),i.Promise=i,i.version="3.7.2",t("./call_get.js")(i),t("./generators.js")(i,l,x,R,n,V),t("./map.js")(i,S,l,R,x,V),t("./nodeify.js")(i),t("./promisify.js")(i,x),t("./props.js")(i,S,R,l),t("./race.js")(i,x,R,l),t("./reduce.js")(i,S,l,R,x,V),t("./settle.js")(i,S,V),t("./some.js")(i,S,l),t("./timers.js")(i,x,V),t("./using.js")(i,l,R,A,x,V),t("./any.js")(i),t("./each.js")(i,x),t("./filter.js")(i,x),f.toFastProperties(i),f.toFastProperties(i.prototype),a({a:1}),a({b:2}),a({c:3}),a(1),a(function(){}),a(void 0),a(!1),a(new i(x)),V.setBounds(C.firstLineError,f.lastLineError),i}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36,async_hooks:void 0}],23:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o){function s(t){switch(t){case-2:return[];case-3:return{};case-6:return new Map}}function a(t){var r=this._promise=new e(n);t instanceof e&&(r._propagateFrom(t,3),t.suppressUnhandledRejections()),r._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}var c=t("./util");c.isArray;return c.inherits(a,o),a.prototype.length=function(){return this._length},a.prototype.promise=function(){return this._promise},a.prototype._init=function u(t,n){var o=r(this._values,this._promise);if(o instanceof e){o=o._target();var a=o._bitField;if(this._values=o,0===(50397184&a))return this._promise._setAsyncGuaranteed(),o._then(u,this._reject,void 0,this,n);if(0===(33554432&a))return 0!==(16777216&a)?this._reject(o._reason()):this._cancel();o=o._value()}if(o=c.asArray(o),null===o){var l=i("expecting an array or an iterable object but got "+c.classString(o)).reason();return void this._promise._rejectCallback(l,!1)}return 0===o.length?void(-5===n?this._resolveEmptyArray():this._resolve(s(n))):void this._iterate(o)},a.prototype._iterate=function(t){var n=this.getActualLength(t.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var i=this._promise,o=!1,s=null,a=0;n>a;++a){var c=r(t[a],i);c instanceof e?(c=c._target(),s=c._bitField):s=null,o?null!==s&&c.suppressUnhandledRejections():null!==s?0===(50397184&s)?(c._proxy(this,a),this._values[a]=c):o=0!==(33554432&s)?this._promiseFulfilled(c._value(),a):0!==(16777216&s)?this._promiseRejected(c._reason(),a):this._promiseCancelled(a):o=this._promiseFulfilled(c,a)}o||i._setAsyncGuaranteed()},a.prototype._isResolved=function(){return null===this._values},a.prototype._resolve=function(t){this._values=null,this._promise._fulfill(t)},a.prototype._cancel=function(){!this._isResolved()&&this._promise._isCancellable()&&(this._values=null,this._promise._cancel())},a.prototype._reject=function(t){this._values=null,this._promise._rejectCallback(t,!1)},a.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;return n>=this._length?(this._resolve(this._values),!0):!1},a.prototype._promiseCancelled=function(){return this._cancel(),!0},a.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},a.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var n=0;nc;c+=2){var l=s[c],p=s[c+1],_=l+e;if(r===E)t[_]=E(l,f,l,p,e,i);else{var d=r(p,function(){return E(l,f,l,p,e,i)});h.notEnumerableProp(d,"__isPromisified__",!0),t[_]=d}}return h.toFastProperties(t),t}function l(t,e,n){return E(t,e,void 0,t,null,n)}var p,f={},h=t("./util"),_=t("./nodeback"),d=h.withAppended,v=h.maybeWrapAsError,y=h.canEvaluate,g=t("./errors").TypeError,m="Async",b={__isPromisified__:!0},w=["arity","length","name","arguments","caller","callee","prototype","__isPromisified__"],C=new RegExp("^(?:"+w.join("|")+")$"),j=function(t){return h.isIdentifier(t)&&"_"!==t.charAt(0)&&"constructor"!==t},k=function(t){return t.replace(/([$])/,"\\$")},E=y?p:c;e.promisify=function(t,e){if("function"!=typeof t)throw new g("expecting a function but got "+h.classString(t));if(i(t))return t;e=Object(e);var n=void 0===e.context?f:e.context,o=!!e.multiArgs,s=l(t,n,o);return h.copyDescriptors(t,s,r),s},e.promisifyAll=function(t,e){if("function"!=typeof t&&"object"!=typeof t)throw new g("the target of promisifyAll must be an object or a function\n\n See http://goo.gl/MqrFmX\n");e=Object(e);var n=!!e.multiArgs,r=e.suffix;"string"!=typeof r&&(r=m);var i=e.filter;"function"!=typeof i&&(i=j);var o=e.promisifier;if("function"!=typeof o&&(o=E),!h.isIdentifier(r))throw new RangeError("suffix must be a valid identifier\n\n See http://goo.gl/MqrFmX\n");for(var s=h.inheritedDataKeys(t),a=0;ao;++o){var s=r[o];e[o]=t[s],e[o+i]=s}}this.constructor$(e),this._isMap=n,this._init$(void 0,n?-6:-3)}function s(t){var n,s=r(t);return u(s)?(n=s instanceof e?s._then(e.props,void 0,void 0,void 0,void 0):new o(s).promise(),s instanceof e&&n._propagateFrom(s,2),n):i("cannot await properties of a non-object\n\n See http://goo.gl/MqrFmX\n")}var a,c=t("./util"),u=c.isObject,l=t("./es5");"function"==typeof Map&&(a=Map);var p=function(){function t(t,r){this[e]=t,this[e+n]=r,e++}var e=0,n=0;return function(r){n=r.size,e=0;var i=new Array(2*r.size);return r.forEach(t,i),i}}(),f=function(t){for(var e=new a,n=t.length/2|0,r=0;n>r;++r){var i=t[n+r],o=t[r];e.set(i,o)}return e};c.inherits(o,n),o.prototype._init=function(){},o.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;if(n>=this._length){var r;if(this._isMap)r=f(this._values);else{r={};for(var i=this.length(),o=0,s=this.length();s>o;++o)r[this._values[o+i]]=this._values[o]}return this._resolve(r),!0}return!1},o.prototype.shouldCopyValues=function(){return!1},o.prototype.getActualLength=function(t){return t>>1},e.prototype.props=function(){return s(this)},e.props=function(t){return s(t)}}},{"./es5":13,"./util":36}],26:[function(t,e,n){"use strict";function r(t,e,n,r,i){for(var o=0;i>o;++o)n[o+r]=t[o+e],t[o+e]=void 0}function i(t){this._capacity=t,this._length=0,this._front=0}i.prototype._willBeOverCapacity=function(t){return this._capacityf;++f){var _=t[f];(void 0!==_||f in t)&&e.cast(_)._then(l,p,void 0,u,null)}return u}var s=t("./util"),a=function(t){return t.then(function(e){return o(e,t)})};e.race=function(t){return o(t,void 0)},e.prototype.race=function(){return o(this,void 0)}}},{"./util":36}],28:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,s){function a(t,n,r,i){this.constructor$(t);var s=e._getContext();this._fn=f.contextBind(s,n),void 0!==r&&(r=e.resolve(r),r._attachCancellationCallback(this)),this._initialValue=r,this._currentCancellable=null,i===o?this._eachValues=Array(this._length):0===i?this._eachValues=null:this._eachValues=void 0,this._promise._captureStackTrace(),this._init$(void 0,-5)}function c(t,e){this.isFulfilled()?e._resolve(t):e._reject(t)}function u(t,e,n,i){if("function"!=typeof e)return r("expecting a function but got "+f.classString(e));var o=new a(t,e,n,i);return o.promise()}function l(t){this.accum=t,this.array._gotAccum(t);var n=i(this.value,this.array._promise);return n instanceof e?(this.array._currentCancellable=n,n._then(p,void 0,void 0,this,void 0)):p.call(this,n)}function p(t){var n=this.array,r=n._promise,i=h(n._fn);r._pushContext();var o;o=void 0!==n._eachValues?i.call(r._boundValue(),t,this.index,this.length):i.call(r._boundValue(),this.accum,t,this.index,this.length),o instanceof e&&(n._currentCancellable=o);var a=r._popContext();return s.checkForgottenReturns(o,a,void 0!==n._eachValues?"Promise.each":"Promise.reduce",r),o}var f=t("./util"),h=f.tryCatch;f.inherits(a,n),a.prototype._gotAccum=function(t){void 0!==this._eachValues&&null!==this._eachValues&&t!==o&&this._eachValues.push(t)},a.prototype._eachComplete=function(t){return null!==this._eachValues&&this._eachValues.push(t),this._eachValues},a.prototype._init=function(){},a.prototype._resolveEmptyArray=function(){this._resolve(void 0!==this._eachValues?this._eachValues:this._initialValue)},a.prototype.shouldCopyValues=function(){return!1},a.prototype._resolve=function(t){this._promise._resolveCallback(t),this._values=null},a.prototype._resultCancelled=function(t){return t===this._initialValue?this._cancel():void(this._isResolved()||(this._resultCancelled$(),this._currentCancellable instanceof e&&this._currentCancellable.cancel(),this._initialValue instanceof e&&this._initialValue.cancel()))},a.prototype._iterate=function(t){this._values=t;var n,r,i=t.length;void 0!==this._initialValue?(n=this._initialValue,r=0):(n=e.resolve(t[0]),r=1),this._currentCancellable=n;for(var o=r;i>o;++o){var s=t[o];s instanceof e&&s.suppressUnhandledRejections()}if(!n.isRejected())for(;i>r;++r){var a={accum:null,value:t[r],index:r,length:i,array:this};n=n._then(l,void 0,void 0,a,void 0),0===(127&r)&&n._setNoAsyncGuarantee()}void 0!==this._eachValues&&(n=n._then(this._eachComplete,void 0,void 0,this,void 0)),n._then(c,c,void 0,n,this)},e.prototype.reduce=function(t,e){return u(this,t,e,null)},e.reduce=function(t,e,n,r){return u(t,e,n,r)}}},{"./util":36}],29:[function(t,e,n){"use strict";var r,i=t("./util"),o=function(){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")},s=i.getNativePromise();if(i.isNode&&"undefined"==typeof MutationObserver){var a=global.setImmediate,c=process.nextTick;r=i.isRecentNode?function(t){a.call(global,t)}:function(t){c.call(process,t)}}else if("function"==typeof s&&"function"==typeof s.resolve){ -var u=s.resolve();r=function(t){u.then(t)}}else r="undefined"!=typeof MutationObserver&&("undefined"==typeof window||!window.navigator||!window.navigator.standalone&&!window.cordova)&&"classList"in document.documentElement?function(){var t=document.createElement("div"),e={attributes:!0},n=!1,r=document.createElement("div"),i=new MutationObserver(function(){t.classList.toggle("foo"),n=!1});i.observe(r,e);var o=function(){n||(n=!0,r.classList.toggle("foo"))};return function(n){var r=new MutationObserver(function(){r.disconnect(),n()});r.observe(t,e),o()}}():"undefined"!=typeof setImmediate?function(t){setImmediate(t)}:"undefined"!=typeof setTimeout?function(t){setTimeout(t,0)}:o;e.exports=r},{"./util":36}],30:[function(t,e,n){"use strict";e.exports=function(e,n,r){function i(t){this.constructor$(t)}var o=e.PromiseInspection,s=t("./util");s.inherits(i,n),i.prototype._promiseResolved=function(t,e){this._values[t]=e;var n=++this._totalResolved;return n>=this._length?(this._resolve(this._values),!0):!1},i.prototype._promiseFulfilled=function(t,e){var n=new o;return n._bitField=33554432,n._settledValueField=t,this._promiseResolved(e,n)},i.prototype._promiseRejected=function(t,e){var n=new o;return n._bitField=16777216,n._settledValueField=t,this._promiseResolved(e,n)},e.settle=function(t){return r.deprecated(".settle()",".reflect()"),new i(t).promise()},e.allSettled=function(t){return new i(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{"./util":36}],31:[function(t,e,n){"use strict";e.exports=function(e,n,r){function i(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function o(t,e){if((0|e)!==e||0>e)return r("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var n=new i(t),o=n.promise();return n.setHowMany(e),n.init(),o}var s=t("./util"),a=t("./errors").RangeError,c=t("./errors").AggregateError,u=s.isArray,l={};s.inherits(i,n),i.prototype._init=function(){if(this._initialized){if(0===this._howMany)return void this._resolve([]);this._init$(void 0,-5);var t=u(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}},i.prototype.init=function(){this._initialized=!0,this._init()},i.prototype.setUnwrap=function(){this._unwrap=!0},i.prototype.howMany=function(){return this._howMany},i.prototype.setHowMany=function(t){this._howMany=t},i.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()?(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0):!1},i.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},i.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(l),this._checkOutcome())},i.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new c,e=this.length();e0?this._reject(t):this._cancel(),!0}return!1},i.prototype._fulfilled=function(){return this._totalResolved},i.prototype._rejected=function(){return this._values.length-this.length()},i.prototype._addRejected=function(t){this._values.push(t)},i.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},i.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},i.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new a(e)},i.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return o(t,e)},e.prototype.some=function(t){return o(this,t)},e._SomePromiseArray=i}},{"./errors":12,"./util":36}],32:[function(t,e,n){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var n=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},i=e.prototype.isFulfilled=function(){return 0!==(33554432&this._bitField)},o=e.prototype.isRejected=function(){return 0!==(16777216&this._bitField)},s=e.prototype.isPending=function(){return 0===(50397184&this._bitField)},a=e.prototype.isResolved=function(){return 0!==(50331648&this._bitField)};e.prototype.isCancelled=function(){return 0!==(8454144&this._bitField)},t.prototype.__isCancelled=function(){return 65536===(65536&this._bitField)},t.prototype._isCancelled=function(){return this._target().__isCancelled()},t.prototype.isCancelled=function(){return 0!==(8454144&this._target()._bitField)},t.prototype.isPending=function(){return s.call(this._target())},t.prototype.isRejected=function(){return o.call(this._target())},t.prototype.isFulfilled=function(){return i.call(this._target())},t.prototype.isResolved=function(){return a.call(this._target())},t.prototype.value=function(){return n.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),r.call(t)},t.prototype._value=function(){return this._settledValue()},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e,n){"use strict";e.exports=function(e,n){function r(t,r){if(l(t)){if(t instanceof e)return t;var i=o(t);if(i===u){r&&r._pushContext();var c=e.reject(i.e);return r&&r._popContext(),c}if("function"==typeof i){if(s(t)){var c=new e(n);return t._then(c._fulfill,c._reject,void 0,c,null),c}return a(t,i,r)}}return t}function i(t){return t.then}function o(t){try{return i(t)}catch(e){return u.e=e,u}}function s(t){try{return p.call(t,"_promise0")}catch(e){return!1}}function a(t,r,i){function o(t){a&&(a._resolveCallback(t),a=null)}function s(t){a&&(a._rejectCallback(t,p,!0),a=null)}var a=new e(n),l=a;i&&i._pushContext(),a._captureStackTrace(),i&&i._popContext();var p=!0,f=c.tryCatch(r).call(t,o,s);return p=!1,a&&f===u&&(a._rejectCallback(f.e,!0,!0),a=null),l}var c=t("./util"),u=c.errorObj,l=c.isObject,p={}.hasOwnProperty;return r}},{"./util":36}],34:[function(t,e,n){"use strict";e.exports=function(e,n,r){function i(t){this.handle=t}function o(t){return clearTimeout(this.handle),t}function s(t){throw clearTimeout(this.handle),t}var a=t("./util"),c=e.TimeoutError;i.prototype._resultCancelled=function(){clearTimeout(this.handle)};var u=function(t){return l(+this).thenReturn(t)},l=e.delay=function(t,o){var s,a;return void 0!==o?(s=e.resolve(o)._then(u,null,null,t,void 0),r.cancellation()&&o instanceof e&&s._setOnCancel(o)):(s=new e(n),a=setTimeout(function(){s._fulfill()},+t),r.cancellation()&&s._setOnCancel(new i(a)),s._captureStackTrace()),s._setAsyncGuaranteed(),s};e.prototype.delay=function(t){return l(t,this)};var p=function(t,e,n){var r;r="string"!=typeof e?e instanceof Error?e:new c("operation timed out"):new c(e),a.markAsOriginatingFromRejection(r),t._attachExtraTrace(r),t._reject(r),null!=n&&n.cancel()};e.prototype.timeout=function(t,e){t=+t;var n,a,c=new i(setTimeout(function(){n.isPending()&&p(n,e,a)},t));return r.cancellation()?(a=this.then(),n=a._then(o,s,void 0,c,void 0),n._setOnCancel(c)):n=this._then(o,s,void 0,c,void 0),n}}},{"./util":36}],35:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,s){function a(t){setTimeout(function(){throw t},0)}function c(t){var e=r(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}function u(t,n){function i(){if(s>=u)return l._fulfill();var o=c(t[s++]);if(o instanceof e&&o._isDisposable()){try{o=r(o._getDisposer().tryDispose(n),t.promise)}catch(p){return a(p)}if(o instanceof e)return o._then(i,a,null,null,null)}i()}var s=0,u=t.length,l=new e(o);return i(),l}function l(t,e,n){this._data=t,this._promise=e,this._context=n}function p(t,e,n){this.constructor$(t,e,n)}function f(t){return l.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function h(t){this.length=t,this.promise=null,this[t-1]=null}var _=t("./util"),d=t("./errors").TypeError,v=t("./util").inherits,y=_.errorObj,g=_.tryCatch,m={};l.prototype.data=function(){return this._data},l.prototype.promise=function(){return this._promise},l.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():m},l.prototype.tryDispose=function(t){var e=this.resource(),n=this._context;void 0!==n&&n._pushContext();var r=e!==m?this.doDispose(e,t):null;return void 0!==n&&n._popContext(),this._promise._unsetDisposable(),this._data=null,r},l.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},v(p,l),p.prototype.doDispose=function(t,e){var n=this.data();return n.call(t,t,e)},h.prototype._resultCancelled=function(){for(var t=this.length,n=0;t>n;++n){var r=this[n];r instanceof e&&r.cancel()}},e.using=function(){var t=arguments.length;if(2>t)return n("you must pass at least 2 arguments to Promise.using");var i=arguments[t-1];if("function"!=typeof i)return n("expecting a function but got "+_.classString(i));var o,a=!0;2===t&&Array.isArray(arguments[0])?(o=arguments[0],t=o.length,a=!1):(o=arguments,t--);for(var c=new h(t),p=0;t>p;++p){var d=o[p];if(l.isDisposer(d)){var v=d;d=d.promise(),d._setDisposable(v)}else{var m=r(d);m instanceof e&&(d=m._then(f,null,null,{resources:c,index:p},void 0))}c[p]=d}for(var b=new Array(c.length),p=0;p0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if("function"==typeof t)return new p(t,this,i());throw new d}}},{"./errors":12,"./util":36}],36:[function(t,e,n){"use strict";function r(){try{var t=P;return P=null,t.apply(this,arguments)}catch(e){return T.e=e,T}}function i(t){return P=t,r}function o(t){return null==t||t===!0||t===!1||"string"==typeof t||"number"==typeof t}function s(t){return"function"==typeof t||"object"==typeof t&&null!==t}function a(t){return o(t)?new Error(v(t)):t}function c(t,e){var n,r=t.length,i=new Array(r+1);for(n=0;r>n;++n)i[n]=t[n];return i[n]=e,i}function u(t,e,n){if(!F.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var r=Object.getOwnPropertyDescriptor(t,e);return null!=r?null==r.get&&null==r.set?r.value:n:void 0}function l(t,e,n){if(o(t))return t;var r={value:n,configurable:!0,enumerable:!1,writable:!0};return F.defineProperty(t,e,r),t}function p(t){throw t}function f(t){try{if("function"==typeof t){var e=F.names(t.prototype),n=F.isES5&&e.length>1,r=e.length>0&&!(1===e.length&&"constructor"===e[0]),i=A.test(t+"")&&F.names(t).length>0;if(n||r||i)return!0}return!1}catch(o){return!1}}function h(t){function e(){}function n(){return typeof r.foo}e.prototype=t;var r=new e;return n(),n(),t}function _(t){return V.test(t)}function d(t,e,n){for(var r=new Array(t),i=0;t>i;++i)r[i]=e+i+n;return r}function v(t){try{return t+""}catch(e){return"[no string representation]"}}function y(t){return t instanceof Error||null!==t&&"object"==typeof t&&"string"==typeof t.message&&"string"==typeof t.name}function g(t){try{l(t,"isOperational",!0)}catch(e){}}function m(t){return null==t?!1:t instanceof Error.__BluebirdErrorTypes__.OperationalError||t.isOperational===!0}function b(t){return y(t)&&F.propertyIsWritable(t,"stack")}function w(t){return{}.toString.call(t)}function C(t,e,n){for(var r=F.names(t),i=0;i10||t[0]>0}(),B.nodeSupportsAsyncResource=B.isNode&&function(){var e=!1;try{var n=t("async_hooks").AsyncResource;e="function"==typeof n.prototype.runInAsyncScope}catch(r){e=!1}return e}(),B.isNode&&B.toFastProperties(process);try{throw new Error}catch(M){B.lastLineError=M}e.exports=B},{"./es5":13,async_hooks:void 0}]},{},[4])(4)}),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise); \ No newline at end of file diff --git a/node_modules/bluebird/js/release/any.js b/node_modules/bluebird/js/release/any.js deleted file mode 100644 index 05a6228..0000000 --- a/node_modules/bluebird/js/release/any.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; -module.exports = function(Promise) { -var SomePromiseArray = Promise._SomePromiseArray; -function any(promises) { - var ret = new SomePromiseArray(promises); - var promise = ret.promise(); - ret.setHowMany(1); - ret.setUnwrap(); - ret.init(); - return promise; -} - -Promise.any = function (promises) { - return any(promises); -}; - -Promise.prototype.any = function () { - return any(this); -}; - -}; diff --git a/node_modules/bluebird/js/release/assert.js b/node_modules/bluebird/js/release/assert.js deleted file mode 100644 index 4518231..0000000 --- a/node_modules/bluebird/js/release/assert.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -module.exports = (function(){ -var AssertionError = (function() { - function AssertionError(a) { - this.constructor$(a); - this.message = a; - this.name = "AssertionError"; - } - AssertionError.prototype = new Error(); - AssertionError.prototype.constructor = AssertionError; - AssertionError.prototype.constructor$ = Error; - return AssertionError; -})(); - -function getParams(args) { - var params = []; - for (var i = 0; i < args.length; ++i) params.push("arg" + i); - return params; -} - -function nativeAssert(callName, args, expect) { - try { - var params = getParams(args); - var constructorArgs = params; - constructorArgs.push("return " + - callName + "("+ params.join(",") + ");"); - var fn = Function.apply(null, constructorArgs); - return fn.apply(null, args); - } catch (e) { - if (!(e instanceof SyntaxError)) { - throw e; - } else { - return expect; - } - } -} - -return function assert(boolExpr, message) { - if (boolExpr === true) return; - - if (typeof boolExpr === "string" && - boolExpr.charAt(0) === "%") { - var nativeCallName = boolExpr; - var $_len = arguments.length;var args = new Array(Math.max($_len - 2, 0)); for(var $_i = 2; $_i < $_len; ++$_i) {args[$_i - 2] = arguments[$_i];}; - if (nativeAssert(nativeCallName, args, message) === message) return; - message = (nativeCallName + " !== " + message); - } - - var ret = new AssertionError(message); - if (Error.captureStackTrace) { - Error.captureStackTrace(ret, assert); - } - throw ret; -}; -})(); diff --git a/node_modules/bluebird/js/release/async.js b/node_modules/bluebird/js/release/async.js deleted file mode 100644 index 8eab6f8..0000000 --- a/node_modules/bluebird/js/release/async.js +++ /dev/null @@ -1,120 +0,0 @@ -"use strict"; -var firstLineError; -try {throw new Error(); } catch (e) {firstLineError = e;} -var schedule = require("./schedule"); -var Queue = require("./queue"); - -function Async() { - this._customScheduler = false; - this._isTickUsed = false; - this._lateQueue = new Queue(16); - this._normalQueue = new Queue(16); - this._haveDrainedQueues = false; - var self = this; - this.drainQueues = function () { - self._drainQueues(); - }; - this._schedule = schedule; -} - -Async.prototype.setScheduler = function(fn) { - var prev = this._schedule; - this._schedule = fn; - this._customScheduler = true; - return prev; -}; - -Async.prototype.hasCustomScheduler = function() { - return this._customScheduler; -}; - -Async.prototype.haveItemsQueued = function () { - return this._isTickUsed || this._haveDrainedQueues; -}; - - -Async.prototype.fatalError = function(e, isNode) { - if (isNode) { - process.stderr.write("Fatal " + (e instanceof Error ? e.stack : e) + - "\n"); - process.exit(2); - } else { - this.throwLater(e); - } -}; - -Async.prototype.throwLater = function(fn, arg) { - if (arguments.length === 1) { - arg = fn; - fn = function () { throw arg; }; - } - if (typeof setTimeout !== "undefined") { - setTimeout(function() { - fn(arg); - }, 0); - } else try { - this._schedule(function() { - fn(arg); - }); - } catch (e) { - throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } -}; - -function AsyncInvokeLater(fn, receiver, arg) { - this._lateQueue.push(fn, receiver, arg); - this._queueTick(); -} - -function AsyncInvoke(fn, receiver, arg) { - this._normalQueue.push(fn, receiver, arg); - this._queueTick(); -} - -function AsyncSettlePromises(promise) { - this._normalQueue._pushOne(promise); - this._queueTick(); -} - -Async.prototype.invokeLater = AsyncInvokeLater; -Async.prototype.invoke = AsyncInvoke; -Async.prototype.settlePromises = AsyncSettlePromises; - - -function _drainQueue(queue) { - while (queue.length() > 0) { - _drainQueueStep(queue); - } -} - -function _drainQueueStep(queue) { - var fn = queue.shift(); - if (typeof fn !== "function") { - fn._settlePromises(); - } else { - var receiver = queue.shift(); - var arg = queue.shift(); - fn.call(receiver, arg); - } -} - -Async.prototype._drainQueues = function () { - _drainQueue(this._normalQueue); - this._reset(); - this._haveDrainedQueues = true; - _drainQueue(this._lateQueue); -}; - -Async.prototype._queueTick = function () { - if (!this._isTickUsed) { - this._isTickUsed = true; - this._schedule(this.drainQueues); - } -}; - -Async.prototype._reset = function () { - this._isTickUsed = false; -}; - -module.exports = Async; -module.exports.firstLineError = firstLineError; diff --git a/node_modules/bluebird/js/release/bind.js b/node_modules/bluebird/js/release/bind.js deleted file mode 100644 index fc3379d..0000000 --- a/node_modules/bluebird/js/release/bind.js +++ /dev/null @@ -1,67 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) { -var calledBind = false; -var rejectThis = function(_, e) { - this._reject(e); -}; - -var targetRejected = function(e, context) { - context.promiseRejectionQueued = true; - context.bindingPromise._then(rejectThis, rejectThis, null, this, e); -}; - -var bindingResolved = function(thisArg, context) { - if (((this._bitField & 50397184) === 0)) { - this._resolveCallback(context.target); - } -}; - -var bindingRejected = function(e, context) { - if (!context.promiseRejectionQueued) this._reject(e); -}; - -Promise.prototype.bind = function (thisArg) { - if (!calledBind) { - calledBind = true; - Promise.prototype._propagateFrom = debug.propagateFromFunction(); - Promise.prototype._boundValue = debug.boundValueFunction(); - } - var maybePromise = tryConvertToPromise(thisArg); - var ret = new Promise(INTERNAL); - ret._propagateFrom(this, 1); - var target = this._target(); - ret._setBoundTo(maybePromise); - if (maybePromise instanceof Promise) { - var context = { - promiseRejectionQueued: false, - promise: ret, - target: target, - bindingPromise: maybePromise - }; - target._then(INTERNAL, targetRejected, undefined, ret, context); - maybePromise._then( - bindingResolved, bindingRejected, undefined, ret, context); - ret._setOnCancel(maybePromise); - } else { - ret._resolveCallback(target); - } - return ret; -}; - -Promise.prototype._setBoundTo = function (obj) { - if (obj !== undefined) { - this._bitField = this._bitField | 2097152; - this._boundTo = obj; - } else { - this._bitField = this._bitField & (~2097152); - } -}; - -Promise.prototype._isBound = function () { - return (this._bitField & 2097152) === 2097152; -}; - -Promise.bind = function (thisArg, value) { - return Promise.resolve(value).bind(thisArg); -}; -}; diff --git a/node_modules/bluebird/js/release/bluebird.js b/node_modules/bluebird/js/release/bluebird.js deleted file mode 100644 index 1c36cf3..0000000 --- a/node_modules/bluebird/js/release/bluebird.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; -var old; -if (typeof Promise !== "undefined") old = Promise; -function noConflict() { - try { if (Promise === bluebird) Promise = old; } - catch (e) {} - return bluebird; -} -var bluebird = require("./promise")(); -bluebird.noConflict = noConflict; -module.exports = bluebird; diff --git a/node_modules/bluebird/js/release/call_get.js b/node_modules/bluebird/js/release/call_get.js deleted file mode 100644 index 0ed7714..0000000 --- a/node_modules/bluebird/js/release/call_get.js +++ /dev/null @@ -1,123 +0,0 @@ -"use strict"; -var cr = Object.create; -if (cr) { - var callerCache = cr(null); - var getterCache = cr(null); - callerCache[" size"] = getterCache[" size"] = 0; -} - -module.exports = function(Promise) { -var util = require("./util"); -var canEvaluate = util.canEvaluate; -var isIdentifier = util.isIdentifier; - -var getMethodCaller; -var getGetter; -if (!false) { -var makeMethodCaller = function (methodName) { - return new Function("ensureMethod", " \n\ - return function(obj) { \n\ - 'use strict' \n\ - var len = this.length; \n\ - ensureMethod(obj, 'methodName'); \n\ - switch(len) { \n\ - case 1: return obj.methodName(this[0]); \n\ - case 2: return obj.methodName(this[0], this[1]); \n\ - case 3: return obj.methodName(this[0], this[1], this[2]); \n\ - case 0: return obj.methodName(); \n\ - default: \n\ - return obj.methodName.apply(obj, this); \n\ - } \n\ - }; \n\ - ".replace(/methodName/g, methodName))(ensureMethod); -}; - -var makeGetter = function (propertyName) { - return new Function("obj", " \n\ - 'use strict'; \n\ - return obj.propertyName; \n\ - ".replace("propertyName", propertyName)); -}; - -var getCompiled = function(name, compiler, cache) { - var ret = cache[name]; - if (typeof ret !== "function") { - if (!isIdentifier(name)) { - return null; - } - ret = compiler(name); - cache[name] = ret; - cache[" size"]++; - if (cache[" size"] > 512) { - var keys = Object.keys(cache); - for (var i = 0; i < 256; ++i) delete cache[keys[i]]; - cache[" size"] = keys.length - 256; - } - } - return ret; -}; - -getMethodCaller = function(name) { - return getCompiled(name, makeMethodCaller, callerCache); -}; - -getGetter = function(name) { - return getCompiled(name, makeGetter, getterCache); -}; -} - -function ensureMethod(obj, methodName) { - var fn; - if (obj != null) fn = obj[methodName]; - if (typeof fn !== "function") { - var message = "Object " + util.classString(obj) + " has no method '" + - util.toString(methodName) + "'"; - throw new Promise.TypeError(message); - } - return fn; -} - -function caller(obj) { - var methodName = this.pop(); - var fn = ensureMethod(obj, methodName); - return fn.apply(obj, this); -} -Promise.prototype.call = function (methodName) { - var $_len = arguments.length;var args = new Array(Math.max($_len - 1, 0)); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];}; - if (!false) { - if (canEvaluate) { - var maybeCaller = getMethodCaller(methodName); - if (maybeCaller !== null) { - return this._then( - maybeCaller, undefined, undefined, args, undefined); - } - } - } - args.push(methodName); - return this._then(caller, undefined, undefined, args, undefined); -}; - -function namedGetter(obj) { - return obj[this]; -} -function indexedGetter(obj) { - var index = +this; - if (index < 0) index = Math.max(0, index + obj.length); - return obj[index]; -} -Promise.prototype.get = function (propertyName) { - var isIndex = (typeof propertyName === "number"); - var getter; - if (!isIndex) { - if (canEvaluate) { - var maybeGetter = getGetter(propertyName); - getter = maybeGetter !== null ? maybeGetter : namedGetter; - } else { - getter = namedGetter; - } - } else { - getter = indexedGetter; - } - return this._then(getter, undefined, undefined, propertyName, undefined); -}; -}; diff --git a/node_modules/bluebird/js/release/cancel.js b/node_modules/bluebird/js/release/cancel.js deleted file mode 100644 index 7a12415..0000000 --- a/node_modules/bluebird/js/release/cancel.js +++ /dev/null @@ -1,129 +0,0 @@ -"use strict"; -module.exports = function(Promise, PromiseArray, apiRejection, debug) { -var util = require("./util"); -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var async = Promise._async; - -Promise.prototype["break"] = Promise.prototype.cancel = function() { - if (!debug.cancellation()) return this._warn("cancellation is disabled"); - - var promise = this; - var child = promise; - while (promise._isCancellable()) { - if (!promise._cancelBy(child)) { - if (child._isFollowing()) { - child._followee().cancel(); - } else { - child._cancelBranched(); - } - break; - } - - var parent = promise._cancellationParent; - if (parent == null || !parent._isCancellable()) { - if (promise._isFollowing()) { - promise._followee().cancel(); - } else { - promise._cancelBranched(); - } - break; - } else { - if (promise._isFollowing()) promise._followee().cancel(); - promise._setWillBeCancelled(); - child = promise; - promise = parent; - } - } -}; - -Promise.prototype._branchHasCancelled = function() { - this._branchesRemainingToCancel--; -}; - -Promise.prototype._enoughBranchesHaveCancelled = function() { - return this._branchesRemainingToCancel === undefined || - this._branchesRemainingToCancel <= 0; -}; - -Promise.prototype._cancelBy = function(canceller) { - if (canceller === this) { - this._branchesRemainingToCancel = 0; - this._invokeOnCancel(); - return true; - } else { - this._branchHasCancelled(); - if (this._enoughBranchesHaveCancelled()) { - this._invokeOnCancel(); - return true; - } - } - return false; -}; - -Promise.prototype._cancelBranched = function() { - if (this._enoughBranchesHaveCancelled()) { - this._cancel(); - } -}; - -Promise.prototype._cancel = function() { - if (!this._isCancellable()) return; - this._setCancelled(); - async.invoke(this._cancelPromises, this, undefined); -}; - -Promise.prototype._cancelPromises = function() { - if (this._length() > 0) this._settlePromises(); -}; - -Promise.prototype._unsetOnCancel = function() { - this._onCancelField = undefined; -}; - -Promise.prototype._isCancellable = function() { - return this.isPending() && !this._isCancelled(); -}; - -Promise.prototype.isCancellable = function() { - return this.isPending() && !this.isCancelled(); -}; - -Promise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) { - if (util.isArray(onCancelCallback)) { - for (var i = 0; i < onCancelCallback.length; ++i) { - this._doInvokeOnCancel(onCancelCallback[i], internalOnly); - } - } else if (onCancelCallback !== undefined) { - if (typeof onCancelCallback === "function") { - if (!internalOnly) { - var e = tryCatch(onCancelCallback).call(this._boundValue()); - if (e === errorObj) { - this._attachExtraTrace(e.e); - async.throwLater(e.e); - } - } - } else { - onCancelCallback._resultCancelled(this); - } - } -}; - -Promise.prototype._invokeOnCancel = function() { - var onCancelCallback = this._onCancel(); - this._unsetOnCancel(); - async.invoke(this._doInvokeOnCancel, this, onCancelCallback); -}; - -Promise.prototype._invokeInternalOnCancel = function() { - if (this._isCancellable()) { - this._doInvokeOnCancel(this._onCancel(), true); - this._unsetOnCancel(); - } -}; - -Promise.prototype._resultCancelled = function() { - this.cancel(); -}; - -}; diff --git a/node_modules/bluebird/js/release/catch_filter.js b/node_modules/bluebird/js/release/catch_filter.js deleted file mode 100644 index 0f24ce2..0000000 --- a/node_modules/bluebird/js/release/catch_filter.js +++ /dev/null @@ -1,42 +0,0 @@ -"use strict"; -module.exports = function(NEXT_FILTER) { -var util = require("./util"); -var getKeys = require("./es5").keys; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; - -function catchFilter(instances, cb, promise) { - return function(e) { - var boundTo = promise._boundValue(); - predicateLoop: for (var i = 0; i < instances.length; ++i) { - var item = instances[i]; - - if (item === Error || - (item != null && item.prototype instanceof Error)) { - if (e instanceof item) { - return tryCatch(cb).call(boundTo, e); - } - } else if (typeof item === "function") { - var matchesPredicate = tryCatch(item).call(boundTo, e); - if (matchesPredicate === errorObj) { - return matchesPredicate; - } else if (matchesPredicate) { - return tryCatch(cb).call(boundTo, e); - } - } else if (util.isObject(e)) { - var keys = getKeys(item); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - if (item[key] != e[key]) { - continue predicateLoop; - } - } - return tryCatch(cb).call(boundTo, e); - } - } - return NEXT_FILTER; - }; -} - -return catchFilter; -}; diff --git a/node_modules/bluebird/js/release/context.js b/node_modules/bluebird/js/release/context.js deleted file mode 100644 index c307414..0000000 --- a/node_modules/bluebird/js/release/context.js +++ /dev/null @@ -1,69 +0,0 @@ -"use strict"; -module.exports = function(Promise) { -var longStackTraces = false; -var contextStack = []; - -Promise.prototype._promiseCreated = function() {}; -Promise.prototype._pushContext = function() {}; -Promise.prototype._popContext = function() {return null;}; -Promise._peekContext = Promise.prototype._peekContext = function() {}; - -function Context() { - this._trace = new Context.CapturedTrace(peekContext()); -} -Context.prototype._pushContext = function () { - if (this._trace !== undefined) { - this._trace._promiseCreated = null; - contextStack.push(this._trace); - } -}; - -Context.prototype._popContext = function () { - if (this._trace !== undefined) { - var trace = contextStack.pop(); - var ret = trace._promiseCreated; - trace._promiseCreated = null; - return ret; - } - return null; -}; - -function createContext() { - if (longStackTraces) return new Context(); -} - -function peekContext() { - var lastIndex = contextStack.length - 1; - if (lastIndex >= 0) { - return contextStack[lastIndex]; - } - return undefined; -} -Context.CapturedTrace = null; -Context.create = createContext; -Context.deactivateLongStackTraces = function() {}; -Context.activateLongStackTraces = function() { - var Promise_pushContext = Promise.prototype._pushContext; - var Promise_popContext = Promise.prototype._popContext; - var Promise_PeekContext = Promise._peekContext; - var Promise_peekContext = Promise.prototype._peekContext; - var Promise_promiseCreated = Promise.prototype._promiseCreated; - Context.deactivateLongStackTraces = function() { - Promise.prototype._pushContext = Promise_pushContext; - Promise.prototype._popContext = Promise_popContext; - Promise._peekContext = Promise_PeekContext; - Promise.prototype._peekContext = Promise_peekContext; - Promise.prototype._promiseCreated = Promise_promiseCreated; - longStackTraces = false; - }; - longStackTraces = true; - Promise.prototype._pushContext = Context.prototype._pushContext; - Promise.prototype._popContext = Context.prototype._popContext; - Promise._peekContext = Promise.prototype._peekContext = peekContext; - Promise.prototype._promiseCreated = function() { - var ctx = this._peekContext(); - if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this; - }; -}; -return Context; -}; diff --git a/node_modules/bluebird/js/release/debuggability.js b/node_modules/bluebird/js/release/debuggability.js deleted file mode 100644 index ce997ee..0000000 --- a/node_modules/bluebird/js/release/debuggability.js +++ /dev/null @@ -1,1009 +0,0 @@ -"use strict"; -module.exports = function(Promise, Context, - enableAsyncHooks, disableAsyncHooks) { -var async = Promise._async; -var Warning = require("./errors").Warning; -var util = require("./util"); -var es5 = require("./es5"); -var canAttachTrace = util.canAttachTrace; -var unhandledRejectionHandled; -var possiblyUnhandledRejection; -var bluebirdFramePattern = - /[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/; -var nodeFramePattern = /\((?:timers\.js):\d+:\d+\)/; -var parseLinePattern = /[\/<\(](.+?):(\d+):(\d+)\)?\s*$/; -var stackFramePattern = null; -var formatStack = null; -var indentStackFrames = false; -var printWarning; -var debugging = !!(util.env("BLUEBIRD_DEBUG") != 0 && - (false || - util.env("BLUEBIRD_DEBUG") || - util.env("NODE_ENV") === "development")); - -var warnings = !!(util.env("BLUEBIRD_WARNINGS") != 0 && - (debugging || util.env("BLUEBIRD_WARNINGS"))); - -var longStackTraces = !!(util.env("BLUEBIRD_LONG_STACK_TRACES") != 0 && - (debugging || util.env("BLUEBIRD_LONG_STACK_TRACES"))); - -var wForgottenReturn = util.env("BLUEBIRD_W_FORGOTTEN_RETURN") != 0 && - (warnings || !!util.env("BLUEBIRD_W_FORGOTTEN_RETURN")); - -var deferUnhandledRejectionCheck; -(function() { - var promises = []; - - function unhandledRejectionCheck() { - for (var i = 0; i < promises.length; ++i) { - promises[i]._notifyUnhandledRejection(); - } - unhandledRejectionClear(); - } - - function unhandledRejectionClear() { - promises.length = 0; - } - - deferUnhandledRejectionCheck = function(promise) { - promises.push(promise); - setTimeout(unhandledRejectionCheck, 1); - }; - - es5.defineProperty(Promise, "_unhandledRejectionCheck", { - value: unhandledRejectionCheck - }); - es5.defineProperty(Promise, "_unhandledRejectionClear", { - value: unhandledRejectionClear - }); -})(); - -Promise.prototype.suppressUnhandledRejections = function() { - var target = this._target(); - target._bitField = ((target._bitField & (~1048576)) | - 524288); -}; - -Promise.prototype._ensurePossibleRejectionHandled = function () { - if ((this._bitField & 524288) !== 0) return; - this._setRejectionIsUnhandled(); - deferUnhandledRejectionCheck(this); -}; - -Promise.prototype._notifyUnhandledRejectionIsHandled = function () { - fireRejectionEvent("rejectionHandled", - unhandledRejectionHandled, undefined, this); -}; - -Promise.prototype._setReturnedNonUndefined = function() { - this._bitField = this._bitField | 268435456; -}; - -Promise.prototype._returnedNonUndefined = function() { - return (this._bitField & 268435456) !== 0; -}; - -Promise.prototype._notifyUnhandledRejection = function () { - if (this._isRejectionUnhandled()) { - var reason = this._settledValue(); - this._setUnhandledRejectionIsNotified(); - fireRejectionEvent("unhandledRejection", - possiblyUnhandledRejection, reason, this); - } -}; - -Promise.prototype._setUnhandledRejectionIsNotified = function () { - this._bitField = this._bitField | 262144; -}; - -Promise.prototype._unsetUnhandledRejectionIsNotified = function () { - this._bitField = this._bitField & (~262144); -}; - -Promise.prototype._isUnhandledRejectionNotified = function () { - return (this._bitField & 262144) > 0; -}; - -Promise.prototype._setRejectionIsUnhandled = function () { - this._bitField = this._bitField | 1048576; -}; - -Promise.prototype._unsetRejectionIsUnhandled = function () { - this._bitField = this._bitField & (~1048576); - if (this._isUnhandledRejectionNotified()) { - this._unsetUnhandledRejectionIsNotified(); - this._notifyUnhandledRejectionIsHandled(); - } -}; - -Promise.prototype._isRejectionUnhandled = function () { - return (this._bitField & 1048576) > 0; -}; - -Promise.prototype._warn = function(message, shouldUseOwnTrace, promise) { - return warn(message, shouldUseOwnTrace, promise || this); -}; - -Promise.onPossiblyUnhandledRejection = function (fn) { - var context = Promise._getContext(); - possiblyUnhandledRejection = util.contextBind(context, fn); -}; - -Promise.onUnhandledRejectionHandled = function (fn) { - var context = Promise._getContext(); - unhandledRejectionHandled = util.contextBind(context, fn); -}; - -var disableLongStackTraces = function() {}; -Promise.longStackTraces = function () { - if (async.haveItemsQueued() && !config.longStackTraces) { - throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - if (!config.longStackTraces && longStackTracesIsSupported()) { - var Promise_captureStackTrace = Promise.prototype._captureStackTrace; - var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace; - var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace; - config.longStackTraces = true; - disableLongStackTraces = function() { - if (async.haveItemsQueued() && !config.longStackTraces) { - throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - Promise.prototype._captureStackTrace = Promise_captureStackTrace; - Promise.prototype._attachExtraTrace = Promise_attachExtraTrace; - Promise.prototype._dereferenceTrace = Promise_dereferenceTrace; - Context.deactivateLongStackTraces(); - config.longStackTraces = false; - }; - Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace; - Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace; - Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace; - Context.activateLongStackTraces(); - } -}; - -Promise.hasLongStackTraces = function () { - return config.longStackTraces && longStackTracesIsSupported(); -}; - - -var legacyHandlers = { - unhandledrejection: { - before: function() { - var ret = util.global.onunhandledrejection; - util.global.onunhandledrejection = null; - return ret; - }, - after: function(fn) { - util.global.onunhandledrejection = fn; - } - }, - rejectionhandled: { - before: function() { - var ret = util.global.onrejectionhandled; - util.global.onrejectionhandled = null; - return ret; - }, - after: function(fn) { - util.global.onrejectionhandled = fn; - } - } -}; - -var fireDomEvent = (function() { - var dispatch = function(legacy, e) { - if (legacy) { - var fn; - try { - fn = legacy.before(); - return !util.global.dispatchEvent(e); - } finally { - legacy.after(fn); - } - } else { - return !util.global.dispatchEvent(e); - } - }; - try { - if (typeof CustomEvent === "function") { - var event = new CustomEvent("CustomEvent"); - util.global.dispatchEvent(event); - return function(name, event) { - name = name.toLowerCase(); - var eventData = { - detail: event, - cancelable: true - }; - var domEvent = new CustomEvent(name, eventData); - es5.defineProperty( - domEvent, "promise", {value: event.promise}); - es5.defineProperty( - domEvent, "reason", {value: event.reason}); - - return dispatch(legacyHandlers[name], domEvent); - }; - } else if (typeof Event === "function") { - var event = new Event("CustomEvent"); - util.global.dispatchEvent(event); - return function(name, event) { - name = name.toLowerCase(); - var domEvent = new Event(name, { - cancelable: true - }); - domEvent.detail = event; - es5.defineProperty(domEvent, "promise", {value: event.promise}); - es5.defineProperty(domEvent, "reason", {value: event.reason}); - return dispatch(legacyHandlers[name], domEvent); - }; - } else { - var event = document.createEvent("CustomEvent"); - event.initCustomEvent("testingtheevent", false, true, {}); - util.global.dispatchEvent(event); - return function(name, event) { - name = name.toLowerCase(); - var domEvent = document.createEvent("CustomEvent"); - domEvent.initCustomEvent(name, false, true, - event); - return dispatch(legacyHandlers[name], domEvent); - }; - } - } catch (e) {} - return function() { - return false; - }; -})(); - -var fireGlobalEvent = (function() { - if (util.isNode) { - return function() { - return process.emit.apply(process, arguments); - }; - } else { - if (!util.global) { - return function() { - return false; - }; - } - return function(name) { - var methodName = "on" + name.toLowerCase(); - var method = util.global[methodName]; - if (!method) return false; - method.apply(util.global, [].slice.call(arguments, 1)); - return true; - }; - } -})(); - -function generatePromiseLifecycleEventObject(name, promise) { - return {promise: promise}; -} - -var eventToObjectGenerator = { - promiseCreated: generatePromiseLifecycleEventObject, - promiseFulfilled: generatePromiseLifecycleEventObject, - promiseRejected: generatePromiseLifecycleEventObject, - promiseResolved: generatePromiseLifecycleEventObject, - promiseCancelled: generatePromiseLifecycleEventObject, - promiseChained: function(name, promise, child) { - return {promise: promise, child: child}; - }, - warning: function(name, warning) { - return {warning: warning}; - }, - unhandledRejection: function (name, reason, promise) { - return {reason: reason, promise: promise}; - }, - rejectionHandled: generatePromiseLifecycleEventObject -}; - -var activeFireEvent = function (name) { - var globalEventFired = false; - try { - globalEventFired = fireGlobalEvent.apply(null, arguments); - } catch (e) { - async.throwLater(e); - globalEventFired = true; - } - - var domEventFired = false; - try { - domEventFired = fireDomEvent(name, - eventToObjectGenerator[name].apply(null, arguments)); - } catch (e) { - async.throwLater(e); - domEventFired = true; - } - - return domEventFired || globalEventFired; -}; - -Promise.config = function(opts) { - opts = Object(opts); - if ("longStackTraces" in opts) { - if (opts.longStackTraces) { - Promise.longStackTraces(); - } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) { - disableLongStackTraces(); - } - } - if ("warnings" in opts) { - var warningsOption = opts.warnings; - config.warnings = !!warningsOption; - wForgottenReturn = config.warnings; - - if (util.isObject(warningsOption)) { - if ("wForgottenReturn" in warningsOption) { - wForgottenReturn = !!warningsOption.wForgottenReturn; - } - } - } - if ("cancellation" in opts && opts.cancellation && !config.cancellation) { - if (async.haveItemsQueued()) { - throw new Error( - "cannot enable cancellation after promises are in use"); - } - Promise.prototype._clearCancellationData = - cancellationClearCancellationData; - Promise.prototype._propagateFrom = cancellationPropagateFrom; - Promise.prototype._onCancel = cancellationOnCancel; - Promise.prototype._setOnCancel = cancellationSetOnCancel; - Promise.prototype._attachCancellationCallback = - cancellationAttachCancellationCallback; - Promise.prototype._execute = cancellationExecute; - propagateFromFunction = cancellationPropagateFrom; - config.cancellation = true; - } - if ("monitoring" in opts) { - if (opts.monitoring && !config.monitoring) { - config.monitoring = true; - Promise.prototype._fireEvent = activeFireEvent; - } else if (!opts.monitoring && config.monitoring) { - config.monitoring = false; - Promise.prototype._fireEvent = defaultFireEvent; - } - } - if ("asyncHooks" in opts && util.nodeSupportsAsyncResource) { - var prev = config.asyncHooks; - var cur = !!opts.asyncHooks; - if (prev !== cur) { - config.asyncHooks = cur; - if (cur) { - enableAsyncHooks(); - } else { - disableAsyncHooks(); - } - } - } - return Promise; -}; - -function defaultFireEvent() { return false; } - -Promise.prototype._fireEvent = defaultFireEvent; -Promise.prototype._execute = function(executor, resolve, reject) { - try { - executor(resolve, reject); - } catch (e) { - return e; - } -}; -Promise.prototype._onCancel = function () {}; -Promise.prototype._setOnCancel = function (handler) { ; }; -Promise.prototype._attachCancellationCallback = function(onCancel) { - ; -}; -Promise.prototype._captureStackTrace = function () {}; -Promise.prototype._attachExtraTrace = function () {}; -Promise.prototype._dereferenceTrace = function () {}; -Promise.prototype._clearCancellationData = function() {}; -Promise.prototype._propagateFrom = function (parent, flags) { - ; - ; -}; - -function cancellationExecute(executor, resolve, reject) { - var promise = this; - try { - executor(resolve, reject, function(onCancel) { - if (typeof onCancel !== "function") { - throw new TypeError("onCancel must be a function, got: " + - util.toString(onCancel)); - } - promise._attachCancellationCallback(onCancel); - }); - } catch (e) { - return e; - } -} - -function cancellationAttachCancellationCallback(onCancel) { - if (!this._isCancellable()) return this; - - var previousOnCancel = this._onCancel(); - if (previousOnCancel !== undefined) { - if (util.isArray(previousOnCancel)) { - previousOnCancel.push(onCancel); - } else { - this._setOnCancel([previousOnCancel, onCancel]); - } - } else { - this._setOnCancel(onCancel); - } -} - -function cancellationOnCancel() { - return this._onCancelField; -} - -function cancellationSetOnCancel(onCancel) { - this._onCancelField = onCancel; -} - -function cancellationClearCancellationData() { - this._cancellationParent = undefined; - this._onCancelField = undefined; -} - -function cancellationPropagateFrom(parent, flags) { - if ((flags & 1) !== 0) { - this._cancellationParent = parent; - var branchesRemainingToCancel = parent._branchesRemainingToCancel; - if (branchesRemainingToCancel === undefined) { - branchesRemainingToCancel = 0; - } - parent._branchesRemainingToCancel = branchesRemainingToCancel + 1; - } - if ((flags & 2) !== 0 && parent._isBound()) { - this._setBoundTo(parent._boundTo); - } -} - -function bindingPropagateFrom(parent, flags) { - if ((flags & 2) !== 0 && parent._isBound()) { - this._setBoundTo(parent._boundTo); - } -} -var propagateFromFunction = bindingPropagateFrom; - -function boundValueFunction() { - var ret = this._boundTo; - if (ret !== undefined) { - if (ret instanceof Promise) { - if (ret.isFulfilled()) { - return ret.value(); - } else { - return undefined; - } - } - } - return ret; -} - -function longStackTracesCaptureStackTrace() { - this._trace = new CapturedTrace(this._peekContext()); -} - -function longStackTracesAttachExtraTrace(error, ignoreSelf) { - if (canAttachTrace(error)) { - var trace = this._trace; - if (trace !== undefined) { - if (ignoreSelf) trace = trace._parent; - } - if (trace !== undefined) { - trace.attachExtraTrace(error); - } else if (!error.__stackCleaned__) { - var parsed = parseStackAndMessage(error); - util.notEnumerableProp(error, "stack", - parsed.message + "\n" + parsed.stack.join("\n")); - util.notEnumerableProp(error, "__stackCleaned__", true); - } - } -} - -function longStackTracesDereferenceTrace() { - this._trace = undefined; -} - -function checkForgottenReturns(returnValue, promiseCreated, name, promise, - parent) { - if (returnValue === undefined && promiseCreated !== null && - wForgottenReturn) { - if (parent !== undefined && parent._returnedNonUndefined()) return; - if ((promise._bitField & 65535) === 0) return; - - if (name) name = name + " "; - var handlerLine = ""; - var creatorLine = ""; - if (promiseCreated._trace) { - var traceLines = promiseCreated._trace.stack.split("\n"); - var stack = cleanStack(traceLines); - for (var i = stack.length - 1; i >= 0; --i) { - var line = stack[i]; - if (!nodeFramePattern.test(line)) { - var lineMatches = line.match(parseLinePattern); - if (lineMatches) { - handlerLine = "at " + lineMatches[1] + - ":" + lineMatches[2] + ":" + lineMatches[3] + " "; - } - break; - } - } - - if (stack.length > 0) { - var firstUserLine = stack[0]; - for (var i = 0; i < traceLines.length; ++i) { - - if (traceLines[i] === firstUserLine) { - if (i > 0) { - creatorLine = "\n" + traceLines[i - 1]; - } - break; - } - } - - } - } - var msg = "a promise was created in a " + name + - "handler " + handlerLine + "but was not returned from it, " + - "see http://goo.gl/rRqMUw" + - creatorLine; - promise._warn(msg, true, promiseCreated); - } -} - -function deprecated(name, replacement) { - var message = name + - " is deprecated and will be removed in a future version."; - if (replacement) message += " Use " + replacement + " instead."; - return warn(message); -} - -function warn(message, shouldUseOwnTrace, promise) { - if (!config.warnings) return; - var warning = new Warning(message); - var ctx; - if (shouldUseOwnTrace) { - promise._attachExtraTrace(warning); - } else if (config.longStackTraces && (ctx = Promise._peekContext())) { - ctx.attachExtraTrace(warning); - } else { - var parsed = parseStackAndMessage(warning); - warning.stack = parsed.message + "\n" + parsed.stack.join("\n"); - } - - if (!activeFireEvent("warning", warning)) { - formatAndLogError(warning, "", true); - } -} - -function reconstructStack(message, stacks) { - for (var i = 0; i < stacks.length - 1; ++i) { - stacks[i].push("From previous event:"); - stacks[i] = stacks[i].join("\n"); - } - if (i < stacks.length) { - stacks[i] = stacks[i].join("\n"); - } - return message + "\n" + stacks.join("\n"); -} - -function removeDuplicateOrEmptyJumps(stacks) { - for (var i = 0; i < stacks.length; ++i) { - if (stacks[i].length === 0 || - ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) { - stacks.splice(i, 1); - i--; - } - } -} - -function removeCommonRoots(stacks) { - var current = stacks[0]; - for (var i = 1; i < stacks.length; ++i) { - var prev = stacks[i]; - var currentLastIndex = current.length - 1; - var currentLastLine = current[currentLastIndex]; - var commonRootMeetPoint = -1; - - for (var j = prev.length - 1; j >= 0; --j) { - if (prev[j] === currentLastLine) { - commonRootMeetPoint = j; - break; - } - } - - for (var j = commonRootMeetPoint; j >= 0; --j) { - var line = prev[j]; - if (current[currentLastIndex] === line) { - current.pop(); - currentLastIndex--; - } else { - break; - } - } - current = prev; - } -} - -function cleanStack(stack) { - var ret = []; - for (var i = 0; i < stack.length; ++i) { - var line = stack[i]; - var isTraceLine = " (No stack trace)" === line || - stackFramePattern.test(line); - var isInternalFrame = isTraceLine && shouldIgnore(line); - if (isTraceLine && !isInternalFrame) { - if (indentStackFrames && line.charAt(0) !== " ") { - line = " " + line; - } - ret.push(line); - } - } - return ret; -} - -function stackFramesAsArray(error) { - var stack = error.stack.replace(/\s+$/g, "").split("\n"); - for (var i = 0; i < stack.length; ++i) { - var line = stack[i]; - if (" (No stack trace)" === line || stackFramePattern.test(line)) { - break; - } - } - if (i > 0 && error.name != "SyntaxError") { - stack = stack.slice(i); - } - return stack; -} - -function parseStackAndMessage(error) { - var stack = error.stack; - var message = error.toString(); - stack = typeof stack === "string" && stack.length > 0 - ? stackFramesAsArray(error) : [" (No stack trace)"]; - return { - message: message, - stack: error.name == "SyntaxError" ? stack : cleanStack(stack) - }; -} - -function formatAndLogError(error, title, isSoft) { - if (typeof console !== "undefined") { - var message; - if (util.isObject(error)) { - var stack = error.stack; - message = title + formatStack(stack, error); - } else { - message = title + String(error); - } - if (typeof printWarning === "function") { - printWarning(message, isSoft); - } else if (typeof console.log === "function" || - typeof console.log === "object") { - console.log(message); - } - } -} - -function fireRejectionEvent(name, localHandler, reason, promise) { - var localEventFired = false; - try { - if (typeof localHandler === "function") { - localEventFired = true; - if (name === "rejectionHandled") { - localHandler(promise); - } else { - localHandler(reason, promise); - } - } - } catch (e) { - async.throwLater(e); - } - - if (name === "unhandledRejection") { - if (!activeFireEvent(name, reason, promise) && !localEventFired) { - formatAndLogError(reason, "Unhandled rejection "); - } - } else { - activeFireEvent(name, promise); - } -} - -function formatNonError(obj) { - var str; - if (typeof obj === "function") { - str = "[function " + - (obj.name || "anonymous") + - "]"; - } else { - str = obj && typeof obj.toString === "function" - ? obj.toString() : util.toString(obj); - var ruselessToString = /\[object [a-zA-Z0-9$_]+\]/; - if (ruselessToString.test(str)) { - try { - var newStr = JSON.stringify(obj); - str = newStr; - } - catch(e) { - - } - } - if (str.length === 0) { - str = "(empty array)"; - } - } - return ("(<" + snip(str) + ">, no stack trace)"); -} - -function snip(str) { - var maxChars = 41; - if (str.length < maxChars) { - return str; - } - return str.substr(0, maxChars - 3) + "..."; -} - -function longStackTracesIsSupported() { - return typeof captureStackTrace === "function"; -} - -var shouldIgnore = function() { return false; }; -var parseLineInfoRegex = /[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/; -function parseLineInfo(line) { - var matches = line.match(parseLineInfoRegex); - if (matches) { - return { - fileName: matches[1], - line: parseInt(matches[2], 10) - }; - } -} - -function setBounds(firstLineError, lastLineError) { - if (!longStackTracesIsSupported()) return; - var firstStackLines = (firstLineError.stack || "").split("\n"); - var lastStackLines = (lastLineError.stack || "").split("\n"); - var firstIndex = -1; - var lastIndex = -1; - var firstFileName; - var lastFileName; - for (var i = 0; i < firstStackLines.length; ++i) { - var result = parseLineInfo(firstStackLines[i]); - if (result) { - firstFileName = result.fileName; - firstIndex = result.line; - break; - } - } - for (var i = 0; i < lastStackLines.length; ++i) { - var result = parseLineInfo(lastStackLines[i]); - if (result) { - lastFileName = result.fileName; - lastIndex = result.line; - break; - } - } - if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName || - firstFileName !== lastFileName || firstIndex >= lastIndex) { - return; - } - - shouldIgnore = function(line) { - if (bluebirdFramePattern.test(line)) return true; - var info = parseLineInfo(line); - if (info) { - if (info.fileName === firstFileName && - (firstIndex <= info.line && info.line <= lastIndex)) { - return true; - } - } - return false; - }; -} - -function CapturedTrace(parent) { - this._parent = parent; - this._promisesCreated = 0; - var length = this._length = 1 + (parent === undefined ? 0 : parent._length); - captureStackTrace(this, CapturedTrace); - if (length > 32) this.uncycle(); -} -util.inherits(CapturedTrace, Error); -Context.CapturedTrace = CapturedTrace; - -CapturedTrace.prototype.uncycle = function() { - var length = this._length; - if (length < 2) return; - var nodes = []; - var stackToIndex = {}; - - for (var i = 0, node = this; node !== undefined; ++i) { - nodes.push(node); - node = node._parent; - } - length = this._length = i; - for (var i = length - 1; i >= 0; --i) { - var stack = nodes[i].stack; - if (stackToIndex[stack] === undefined) { - stackToIndex[stack] = i; - } - } - for (var i = 0; i < length; ++i) { - var currentStack = nodes[i].stack; - var index = stackToIndex[currentStack]; - if (index !== undefined && index !== i) { - if (index > 0) { - nodes[index - 1]._parent = undefined; - nodes[index - 1]._length = 1; - } - nodes[i]._parent = undefined; - nodes[i]._length = 1; - var cycleEdgeNode = i > 0 ? nodes[i - 1] : this; - - if (index < length - 1) { - cycleEdgeNode._parent = nodes[index + 1]; - cycleEdgeNode._parent.uncycle(); - cycleEdgeNode._length = - cycleEdgeNode._parent._length + 1; - } else { - cycleEdgeNode._parent = undefined; - cycleEdgeNode._length = 1; - } - var currentChildLength = cycleEdgeNode._length + 1; - for (var j = i - 2; j >= 0; --j) { - nodes[j]._length = currentChildLength; - currentChildLength++; - } - return; - } - } -}; - -CapturedTrace.prototype.attachExtraTrace = function(error) { - if (error.__stackCleaned__) return; - this.uncycle(); - var parsed = parseStackAndMessage(error); - var message = parsed.message; - var stacks = [parsed.stack]; - - var trace = this; - while (trace !== undefined) { - stacks.push(cleanStack(trace.stack.split("\n"))); - trace = trace._parent; - } - removeCommonRoots(stacks); - removeDuplicateOrEmptyJumps(stacks); - util.notEnumerableProp(error, "stack", reconstructStack(message, stacks)); - util.notEnumerableProp(error, "__stackCleaned__", true); -}; - -var captureStackTrace = (function stackDetection() { - var v8stackFramePattern = /^\s*at\s*/; - var v8stackFormatter = function(stack, error) { - if (typeof stack === "string") return stack; - - if (error.name !== undefined && - error.message !== undefined) { - return error.toString(); - } - return formatNonError(error); - }; - - if (typeof Error.stackTraceLimit === "number" && - typeof Error.captureStackTrace === "function") { - Error.stackTraceLimit += 6; - stackFramePattern = v8stackFramePattern; - formatStack = v8stackFormatter; - var captureStackTrace = Error.captureStackTrace; - - shouldIgnore = function(line) { - return bluebirdFramePattern.test(line); - }; - return function(receiver, ignoreUntil) { - Error.stackTraceLimit += 6; - captureStackTrace(receiver, ignoreUntil); - Error.stackTraceLimit -= 6; - }; - } - var err = new Error(); - - if (typeof err.stack === "string" && - err.stack.split("\n")[0].indexOf("stackDetection@") >= 0) { - stackFramePattern = /@/; - formatStack = v8stackFormatter; - indentStackFrames = true; - return function captureStackTrace(o) { - o.stack = new Error().stack; - }; - } - - var hasStackAfterThrow; - try { throw new Error(); } - catch(e) { - hasStackAfterThrow = ("stack" in e); - } - if (!("stack" in err) && hasStackAfterThrow && - typeof Error.stackTraceLimit === "number") { - stackFramePattern = v8stackFramePattern; - formatStack = v8stackFormatter; - return function captureStackTrace(o) { - Error.stackTraceLimit += 6; - try { throw new Error(); } - catch(e) { o.stack = e.stack; } - Error.stackTraceLimit -= 6; - }; - } - - formatStack = function(stack, error) { - if (typeof stack === "string") return stack; - - if ((typeof error === "object" || - typeof error === "function") && - error.name !== undefined && - error.message !== undefined) { - return error.toString(); - } - return formatNonError(error); - }; - - return null; - -})([]); - -if (typeof console !== "undefined" && typeof console.warn !== "undefined") { - printWarning = function (message) { - console.warn(message); - }; - if (util.isNode && process.stderr.isTTY) { - printWarning = function(message, isSoft) { - var color = isSoft ? "\u001b[33m" : "\u001b[31m"; - console.warn(color + message + "\u001b[0m\n"); - }; - } else if (!util.isNode && typeof (new Error().stack) === "string") { - printWarning = function(message, isSoft) { - console.warn("%c" + message, - isSoft ? "color: darkorange" : "color: red"); - }; - } -} - -var config = { - warnings: warnings, - longStackTraces: false, - cancellation: false, - monitoring: false, - asyncHooks: false -}; - -if (longStackTraces) Promise.longStackTraces(); - -return { - asyncHooks: function() { - return config.asyncHooks; - }, - longStackTraces: function() { - return config.longStackTraces; - }, - warnings: function() { - return config.warnings; - }, - cancellation: function() { - return config.cancellation; - }, - monitoring: function() { - return config.monitoring; - }, - propagateFromFunction: function() { - return propagateFromFunction; - }, - boundValueFunction: function() { - return boundValueFunction; - }, - checkForgottenReturns: checkForgottenReturns, - setBounds: setBounds, - warn: warn, - deprecated: deprecated, - CapturedTrace: CapturedTrace, - fireDomEvent: fireDomEvent, - fireGlobalEvent: fireGlobalEvent -}; -}; diff --git a/node_modules/bluebird/js/release/direct_resolve.js b/node_modules/bluebird/js/release/direct_resolve.js deleted file mode 100644 index a890298..0000000 --- a/node_modules/bluebird/js/release/direct_resolve.js +++ /dev/null @@ -1,46 +0,0 @@ -"use strict"; -module.exports = function(Promise) { -function returner() { - return this.value; -} -function thrower() { - throw this.reason; -} - -Promise.prototype["return"] = -Promise.prototype.thenReturn = function (value) { - if (value instanceof Promise) value.suppressUnhandledRejections(); - return this._then( - returner, undefined, undefined, {value: value}, undefined); -}; - -Promise.prototype["throw"] = -Promise.prototype.thenThrow = function (reason) { - return this._then( - thrower, undefined, undefined, {reason: reason}, undefined); -}; - -Promise.prototype.catchThrow = function (reason) { - if (arguments.length <= 1) { - return this._then( - undefined, thrower, undefined, {reason: reason}, undefined); - } else { - var _reason = arguments[1]; - var handler = function() {throw _reason;}; - return this.caught(reason, handler); - } -}; - -Promise.prototype.catchReturn = function (value) { - if (arguments.length <= 1) { - if (value instanceof Promise) value.suppressUnhandledRejections(); - return this._then( - undefined, returner, undefined, {value: value}, undefined); - } else { - var _value = arguments[1]; - if (_value instanceof Promise) _value.suppressUnhandledRejections(); - var handler = function() {return _value;}; - return this.caught(value, handler); - } -}; -}; diff --git a/node_modules/bluebird/js/release/each.js b/node_modules/bluebird/js/release/each.js deleted file mode 100644 index e4f3d05..0000000 --- a/node_modules/bluebird/js/release/each.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var PromiseReduce = Promise.reduce; -var PromiseAll = Promise.all; - -function promiseAllThis() { - return PromiseAll(this); -} - -function PromiseMapSeries(promises, fn) { - return PromiseReduce(promises, fn, INTERNAL, INTERNAL); -} - -Promise.prototype.each = function (fn) { - return PromiseReduce(this, fn, INTERNAL, 0) - ._then(promiseAllThis, undefined, undefined, this, undefined); -}; - -Promise.prototype.mapSeries = function (fn) { - return PromiseReduce(this, fn, INTERNAL, INTERNAL); -}; - -Promise.each = function (promises, fn) { - return PromiseReduce(promises, fn, INTERNAL, 0) - ._then(promiseAllThis, undefined, undefined, promises, undefined); -}; - -Promise.mapSeries = PromiseMapSeries; -}; - diff --git a/node_modules/bluebird/js/release/errors.js b/node_modules/bluebird/js/release/errors.js deleted file mode 100644 index f62f323..0000000 --- a/node_modules/bluebird/js/release/errors.js +++ /dev/null @@ -1,116 +0,0 @@ -"use strict"; -var es5 = require("./es5"); -var Objectfreeze = es5.freeze; -var util = require("./util"); -var inherits = util.inherits; -var notEnumerableProp = util.notEnumerableProp; - -function subError(nameProperty, defaultMessage) { - function SubError(message) { - if (!(this instanceof SubError)) return new SubError(message); - notEnumerableProp(this, "message", - typeof message === "string" ? message : defaultMessage); - notEnumerableProp(this, "name", nameProperty); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - Error.call(this); - } - } - inherits(SubError, Error); - return SubError; -} - -var _TypeError, _RangeError; -var Warning = subError("Warning", "warning"); -var CancellationError = subError("CancellationError", "cancellation error"); -var TimeoutError = subError("TimeoutError", "timeout error"); -var AggregateError = subError("AggregateError", "aggregate error"); -try { - _TypeError = TypeError; - _RangeError = RangeError; -} catch(e) { - _TypeError = subError("TypeError", "type error"); - _RangeError = subError("RangeError", "range error"); -} - -var methods = ("join pop push shift unshift slice filter forEach some " + - "every map indexOf lastIndexOf reduce reduceRight sort reverse").split(" "); - -for (var i = 0; i < methods.length; ++i) { - if (typeof Array.prototype[methods[i]] === "function") { - AggregateError.prototype[methods[i]] = Array.prototype[methods[i]]; - } -} - -es5.defineProperty(AggregateError.prototype, "length", { - value: 0, - configurable: false, - writable: true, - enumerable: true -}); -AggregateError.prototype["isOperational"] = true; -var level = 0; -AggregateError.prototype.toString = function() { - var indent = Array(level * 4 + 1).join(" "); - var ret = "\n" + indent + "AggregateError of:" + "\n"; - level++; - indent = Array(level * 4 + 1).join(" "); - for (var i = 0; i < this.length; ++i) { - var str = this[i] === this ? "[Circular AggregateError]" : this[i] + ""; - var lines = str.split("\n"); - for (var j = 0; j < lines.length; ++j) { - lines[j] = indent + lines[j]; - } - str = lines.join("\n"); - ret += str + "\n"; - } - level--; - return ret; -}; - -function OperationalError(message) { - if (!(this instanceof OperationalError)) - return new OperationalError(message); - notEnumerableProp(this, "name", "OperationalError"); - notEnumerableProp(this, "message", message); - this.cause = message; - this["isOperational"] = true; - - if (message instanceof Error) { - notEnumerableProp(this, "message", message.message); - notEnumerableProp(this, "stack", message.stack); - } else if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - -} -inherits(OperationalError, Error); - -var errorTypes = Error["__BluebirdErrorTypes__"]; -if (!errorTypes) { - errorTypes = Objectfreeze({ - CancellationError: CancellationError, - TimeoutError: TimeoutError, - OperationalError: OperationalError, - RejectionError: OperationalError, - AggregateError: AggregateError - }); - es5.defineProperty(Error, "__BluebirdErrorTypes__", { - value: errorTypes, - writable: false, - enumerable: false, - configurable: false - }); -} - -module.exports = { - Error: Error, - TypeError: _TypeError, - RangeError: _RangeError, - CancellationError: errorTypes.CancellationError, - OperationalError: errorTypes.OperationalError, - TimeoutError: errorTypes.TimeoutError, - AggregateError: errorTypes.AggregateError, - Warning: Warning -}; diff --git a/node_modules/bluebird/js/release/es5.js b/node_modules/bluebird/js/release/es5.js deleted file mode 100644 index ea41d5a..0000000 --- a/node_modules/bluebird/js/release/es5.js +++ /dev/null @@ -1,80 +0,0 @@ -var isES5 = (function(){ - "use strict"; - return this === undefined; -})(); - -if (isES5) { - module.exports = { - freeze: Object.freeze, - defineProperty: Object.defineProperty, - getDescriptor: Object.getOwnPropertyDescriptor, - keys: Object.keys, - names: Object.getOwnPropertyNames, - getPrototypeOf: Object.getPrototypeOf, - isArray: Array.isArray, - isES5: isES5, - propertyIsWritable: function(obj, prop) { - var descriptor = Object.getOwnPropertyDescriptor(obj, prop); - return !!(!descriptor || descriptor.writable || descriptor.set); - } - }; -} else { - var has = {}.hasOwnProperty; - var str = {}.toString; - var proto = {}.constructor.prototype; - - var ObjectKeys = function (o) { - var ret = []; - for (var key in o) { - if (has.call(o, key)) { - ret.push(key); - } - } - return ret; - }; - - var ObjectGetDescriptor = function(o, key) { - return {value: o[key]}; - }; - - var ObjectDefineProperty = function (o, key, desc) { - o[key] = desc.value; - return o; - }; - - var ObjectFreeze = function (obj) { - return obj; - }; - - var ObjectGetPrototypeOf = function (obj) { - try { - return Object(obj).constructor.prototype; - } - catch (e) { - return proto; - } - }; - - var ArrayIsArray = function (obj) { - try { - return str.call(obj) === "[object Array]"; - } - catch(e) { - return false; - } - }; - - module.exports = { - isArray: ArrayIsArray, - keys: ObjectKeys, - names: ObjectKeys, - defineProperty: ObjectDefineProperty, - getDescriptor: ObjectGetDescriptor, - freeze: ObjectFreeze, - getPrototypeOf: ObjectGetPrototypeOf, - isES5: isES5, - propertyIsWritable: function() { - return true; - } - }; -} diff --git a/node_modules/bluebird/js/release/filter.js b/node_modules/bluebird/js/release/filter.js deleted file mode 100644 index ed57bf0..0000000 --- a/node_modules/bluebird/js/release/filter.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var PromiseMap = Promise.map; - -Promise.prototype.filter = function (fn, options) { - return PromiseMap(this, fn, options, INTERNAL); -}; - -Promise.filter = function (promises, fn, options) { - return PromiseMap(promises, fn, options, INTERNAL); -}; -}; diff --git a/node_modules/bluebird/js/release/finally.js b/node_modules/bluebird/js/release/finally.js deleted file mode 100644 index d57444b..0000000 --- a/node_modules/bluebird/js/release/finally.js +++ /dev/null @@ -1,146 +0,0 @@ -"use strict"; -module.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) { -var util = require("./util"); -var CancellationError = Promise.CancellationError; -var errorObj = util.errorObj; -var catchFilter = require("./catch_filter")(NEXT_FILTER); - -function PassThroughHandlerContext(promise, type, handler) { - this.promise = promise; - this.type = type; - this.handler = handler; - this.called = false; - this.cancelPromise = null; -} - -PassThroughHandlerContext.prototype.isFinallyHandler = function() { - return this.type === 0; -}; - -function FinallyHandlerCancelReaction(finallyHandler) { - this.finallyHandler = finallyHandler; -} - -FinallyHandlerCancelReaction.prototype._resultCancelled = function() { - checkCancel(this.finallyHandler); -}; - -function checkCancel(ctx, reason) { - if (ctx.cancelPromise != null) { - if (arguments.length > 1) { - ctx.cancelPromise._reject(reason); - } else { - ctx.cancelPromise._cancel(); - } - ctx.cancelPromise = null; - return true; - } - return false; -} - -function succeed() { - return finallyHandler.call(this, this.promise._target()._settledValue()); -} -function fail(reason) { - if (checkCancel(this, reason)) return; - errorObj.e = reason; - return errorObj; -} -function finallyHandler(reasonOrValue) { - var promise = this.promise; - var handler = this.handler; - - if (!this.called) { - this.called = true; - var ret = this.isFinallyHandler() - ? handler.call(promise._boundValue()) - : handler.call(promise._boundValue(), reasonOrValue); - if (ret === NEXT_FILTER) { - return ret; - } else if (ret !== undefined) { - promise._setReturnedNonUndefined(); - var maybePromise = tryConvertToPromise(ret, promise); - if (maybePromise instanceof Promise) { - if (this.cancelPromise != null) { - if (maybePromise._isCancelled()) { - var reason = - new CancellationError("late cancellation observer"); - promise._attachExtraTrace(reason); - errorObj.e = reason; - return errorObj; - } else if (maybePromise.isPending()) { - maybePromise._attachCancellationCallback( - new FinallyHandlerCancelReaction(this)); - } - } - return maybePromise._then( - succeed, fail, undefined, this, undefined); - } - } - } - - if (promise.isRejected()) { - checkCancel(this); - errorObj.e = reasonOrValue; - return errorObj; - } else { - checkCancel(this); - return reasonOrValue; - } -} - -Promise.prototype._passThrough = function(handler, type, success, fail) { - if (typeof handler !== "function") return this.then(); - return this._then(success, - fail, - undefined, - new PassThroughHandlerContext(this, type, handler), - undefined); -}; - -Promise.prototype.lastly = -Promise.prototype["finally"] = function (handler) { - return this._passThrough(handler, - 0, - finallyHandler, - finallyHandler); -}; - - -Promise.prototype.tap = function (handler) { - return this._passThrough(handler, 1, finallyHandler); -}; - -Promise.prototype.tapCatch = function (handlerOrPredicate) { - var len = arguments.length; - if(len === 1) { - return this._passThrough(handlerOrPredicate, - 1, - undefined, - finallyHandler); - } else { - var catchInstances = new Array(len - 1), - j = 0, i; - for (i = 0; i < len - 1; ++i) { - var item = arguments[i]; - if (util.isObject(item)) { - catchInstances[j++] = item; - } else { - return Promise.reject(new TypeError( - "tapCatch statement predicate: " - + "expecting an object but got " + util.classString(item) - )); - } - } - catchInstances.length = j; - var handler = arguments[i]; - return this._passThrough(catchFilter(catchInstances, handler, this), - 1, - undefined, - finallyHandler); - } - -}; - -return PassThroughHandlerContext; -}; diff --git a/node_modules/bluebird/js/release/generators.js b/node_modules/bluebird/js/release/generators.js deleted file mode 100644 index 500c280..0000000 --- a/node_modules/bluebird/js/release/generators.js +++ /dev/null @@ -1,223 +0,0 @@ -"use strict"; -module.exports = function(Promise, - apiRejection, - INTERNAL, - tryConvertToPromise, - Proxyable, - debug) { -var errors = require("./errors"); -var TypeError = errors.TypeError; -var util = require("./util"); -var errorObj = util.errorObj; -var tryCatch = util.tryCatch; -var yieldHandlers = []; - -function promiseFromYieldHandler(value, yieldHandlers, traceParent) { - for (var i = 0; i < yieldHandlers.length; ++i) { - traceParent._pushContext(); - var result = tryCatch(yieldHandlers[i])(value); - traceParent._popContext(); - if (result === errorObj) { - traceParent._pushContext(); - var ret = Promise.reject(errorObj.e); - traceParent._popContext(); - return ret; - } - var maybePromise = tryConvertToPromise(result, traceParent); - if (maybePromise instanceof Promise) return maybePromise; - } - return null; -} - -function PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) { - if (debug.cancellation()) { - var internal = new Promise(INTERNAL); - var _finallyPromise = this._finallyPromise = new Promise(INTERNAL); - this._promise = internal.lastly(function() { - return _finallyPromise; - }); - internal._captureStackTrace(); - internal._setOnCancel(this); - } else { - var promise = this._promise = new Promise(INTERNAL); - promise._captureStackTrace(); - } - this._stack = stack; - this._generatorFunction = generatorFunction; - this._receiver = receiver; - this._generator = undefined; - this._yieldHandlers = typeof yieldHandler === "function" - ? [yieldHandler].concat(yieldHandlers) - : yieldHandlers; - this._yieldedPromise = null; - this._cancellationPhase = false; -} -util.inherits(PromiseSpawn, Proxyable); - -PromiseSpawn.prototype._isResolved = function() { - return this._promise === null; -}; - -PromiseSpawn.prototype._cleanup = function() { - this._promise = this._generator = null; - if (debug.cancellation() && this._finallyPromise !== null) { - this._finallyPromise._fulfill(); - this._finallyPromise = null; - } -}; - -PromiseSpawn.prototype._promiseCancelled = function() { - if (this._isResolved()) return; - var implementsReturn = typeof this._generator["return"] !== "undefined"; - - var result; - if (!implementsReturn) { - var reason = new Promise.CancellationError( - "generator .return() sentinel"); - Promise.coroutine.returnSentinel = reason; - this._promise._attachExtraTrace(reason); - this._promise._pushContext(); - result = tryCatch(this._generator["throw"]).call(this._generator, - reason); - this._promise._popContext(); - } else { - this._promise._pushContext(); - result = tryCatch(this._generator["return"]).call(this._generator, - undefined); - this._promise._popContext(); - } - this._cancellationPhase = true; - this._yieldedPromise = null; - this._continue(result); -}; - -PromiseSpawn.prototype._promiseFulfilled = function(value) { - this._yieldedPromise = null; - this._promise._pushContext(); - var result = tryCatch(this._generator.next).call(this._generator, value); - this._promise._popContext(); - this._continue(result); -}; - -PromiseSpawn.prototype._promiseRejected = function(reason) { - this._yieldedPromise = null; - this._promise._attachExtraTrace(reason); - this._promise._pushContext(); - var result = tryCatch(this._generator["throw"]) - .call(this._generator, reason); - this._promise._popContext(); - this._continue(result); -}; - -PromiseSpawn.prototype._resultCancelled = function() { - if (this._yieldedPromise instanceof Promise) { - var promise = this._yieldedPromise; - this._yieldedPromise = null; - promise.cancel(); - } -}; - -PromiseSpawn.prototype.promise = function () { - return this._promise; -}; - -PromiseSpawn.prototype._run = function () { - this._generator = this._generatorFunction.call(this._receiver); - this._receiver = - this._generatorFunction = undefined; - this._promiseFulfilled(undefined); -}; - -PromiseSpawn.prototype._continue = function (result) { - var promise = this._promise; - if (result === errorObj) { - this._cleanup(); - if (this._cancellationPhase) { - return promise.cancel(); - } else { - return promise._rejectCallback(result.e, false); - } - } - - var value = result.value; - if (result.done === true) { - this._cleanup(); - if (this._cancellationPhase) { - return promise.cancel(); - } else { - return promise._resolveCallback(value); - } - } else { - var maybePromise = tryConvertToPromise(value, this._promise); - if (!(maybePromise instanceof Promise)) { - maybePromise = - promiseFromYieldHandler(maybePromise, - this._yieldHandlers, - this._promise); - if (maybePromise === null) { - this._promiseRejected( - new TypeError( - "A value %s was yielded that could not be treated as a promise\u000a\u000a See http://goo.gl/MqrFmX\u000a\u000a".replace("%s", String(value)) + - "From coroutine:\u000a" + - this._stack.split("\n").slice(1, -7).join("\n") - ) - ); - return; - } - } - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - this._yieldedPromise = maybePromise; - maybePromise._proxy(this, null); - } else if (((bitField & 33554432) !== 0)) { - Promise._async.invoke( - this._promiseFulfilled, this, maybePromise._value() - ); - } else if (((bitField & 16777216) !== 0)) { - Promise._async.invoke( - this._promiseRejected, this, maybePromise._reason() - ); - } else { - this._promiseCancelled(); - } - } -}; - -Promise.coroutine = function (generatorFunction, options) { - if (typeof generatorFunction !== "function") { - throw new TypeError("generatorFunction must be a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var yieldHandler = Object(options).yieldHandler; - var PromiseSpawn$ = PromiseSpawn; - var stack = new Error().stack; - return function () { - var generator = generatorFunction.apply(this, arguments); - var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler, - stack); - var ret = spawn.promise(); - spawn._generator = generator; - spawn._promiseFulfilled(undefined); - return ret; - }; -}; - -Promise.coroutine.addYieldHandler = function(fn) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - yieldHandlers.push(fn); -}; - -Promise.spawn = function (generatorFunction) { - debug.deprecated("Promise.spawn()", "Promise.coroutine()"); - if (typeof generatorFunction !== "function") { - return apiRejection("generatorFunction must be a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var spawn = new PromiseSpawn(generatorFunction, this); - var ret = spawn.promise(); - spawn._run(Promise.spawn); - return ret; -}; -}; diff --git a/node_modules/bluebird/js/release/join.js b/node_modules/bluebird/js/release/join.js deleted file mode 100644 index e7e19f0..0000000 --- a/node_modules/bluebird/js/release/join.js +++ /dev/null @@ -1,165 +0,0 @@ -"use strict"; -module.exports = -function(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async) { -var util = require("./util"); -var canEvaluate = util.canEvaluate; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var reject; - -if (!false) { -if (canEvaluate) { - var thenCallback = function(i) { - return new Function("value", "holder", " \n\ - 'use strict'; \n\ - holder.pIndex = value; \n\ - holder.checkFulfillment(this); \n\ - ".replace(/Index/g, i)); - }; - - var promiseSetter = function(i) { - return new Function("promise", "holder", " \n\ - 'use strict'; \n\ - holder.pIndex = promise; \n\ - ".replace(/Index/g, i)); - }; - - var generateHolderClass = function(total) { - var props = new Array(total); - for (var i = 0; i < props.length; ++i) { - props[i] = "this.p" + (i+1); - } - var assignment = props.join(" = ") + " = null;"; - var cancellationCode= "var promise;\n" + props.map(function(prop) { - return " \n\ - promise = " + prop + "; \n\ - if (promise instanceof Promise) { \n\ - promise.cancel(); \n\ - } \n\ - "; - }).join("\n"); - var passedArguments = props.join(", "); - var name = "Holder$" + total; - - - var code = "return function(tryCatch, errorObj, Promise, async) { \n\ - 'use strict'; \n\ - function [TheName](fn) { \n\ - [TheProperties] \n\ - this.fn = fn; \n\ - this.asyncNeeded = true; \n\ - this.now = 0; \n\ - } \n\ - \n\ - [TheName].prototype._callFunction = function(promise) { \n\ - promise._pushContext(); \n\ - var ret = tryCatch(this.fn)([ThePassedArguments]); \n\ - promise._popContext(); \n\ - if (ret === errorObj) { \n\ - promise._rejectCallback(ret.e, false); \n\ - } else { \n\ - promise._resolveCallback(ret); \n\ - } \n\ - }; \n\ - \n\ - [TheName].prototype.checkFulfillment = function(promise) { \n\ - var now = ++this.now; \n\ - if (now === [TheTotal]) { \n\ - if (this.asyncNeeded) { \n\ - async.invoke(this._callFunction, this, promise); \n\ - } else { \n\ - this._callFunction(promise); \n\ - } \n\ - \n\ - } \n\ - }; \n\ - \n\ - [TheName].prototype._resultCancelled = function() { \n\ - [CancellationCode] \n\ - }; \n\ - \n\ - return [TheName]; \n\ - }(tryCatch, errorObj, Promise, async); \n\ - "; - - code = code.replace(/\[TheName\]/g, name) - .replace(/\[TheTotal\]/g, total) - .replace(/\[ThePassedArguments\]/g, passedArguments) - .replace(/\[TheProperties\]/g, assignment) - .replace(/\[CancellationCode\]/g, cancellationCode); - - return new Function("tryCatch", "errorObj", "Promise", "async", code) - (tryCatch, errorObj, Promise, async); - }; - - var holderClasses = []; - var thenCallbacks = []; - var promiseSetters = []; - - for (var i = 0; i < 8; ++i) { - holderClasses.push(generateHolderClass(i + 1)); - thenCallbacks.push(thenCallback(i + 1)); - promiseSetters.push(promiseSetter(i + 1)); - } - - reject = function (reason) { - this._reject(reason); - }; -}} - -Promise.join = function () { - var last = arguments.length - 1; - var fn; - if (last > 0 && typeof arguments[last] === "function") { - fn = arguments[last]; - if (!false) { - if (last <= 8 && canEvaluate) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - var HolderClass = holderClasses[last - 1]; - var holder = new HolderClass(fn); - var callbacks = thenCallbacks; - - for (var i = 0; i < last; ++i) { - var maybePromise = tryConvertToPromise(arguments[i], ret); - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - maybePromise._then(callbacks[i], reject, - undefined, ret, holder); - promiseSetters[i](maybePromise, holder); - holder.asyncNeeded = false; - } else if (((bitField & 33554432) !== 0)) { - callbacks[i].call(ret, - maybePromise._value(), holder); - } else if (((bitField & 16777216) !== 0)) { - ret._reject(maybePromise._reason()); - } else { - ret._cancel(); - } - } else { - callbacks[i].call(ret, maybePromise, holder); - } - } - - if (!ret._isFateSealed()) { - if (holder.asyncNeeded) { - var context = Promise._getContext(); - holder.fn = util.contextBind(context, holder.fn); - } - ret._setAsyncGuaranteed(); - ret._setOnCancel(holder); - } - return ret; - } - } - } - var $_len = arguments.length;var args = new Array($_len); for(var $_i = 0; $_i < $_len ; ++$_i) {args[$_i] = arguments[$_i ];}; - if (fn) args.pop(); - var ret = new PromiseArray(args).promise(); - return fn !== undefined ? ret.spread(fn) : ret; -}; - -}; diff --git a/node_modules/bluebird/js/release/map.js b/node_modules/bluebird/js/release/map.js deleted file mode 100644 index 91d5a82..0000000 --- a/node_modules/bluebird/js/release/map.js +++ /dev/null @@ -1,175 +0,0 @@ -"use strict"; -module.exports = function(Promise, - PromiseArray, - apiRejection, - tryConvertToPromise, - INTERNAL, - debug) { -var util = require("./util"); -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var async = Promise._async; - -function MappingPromiseArray(promises, fn, limit, _filter) { - this.constructor$(promises); - this._promise._captureStackTrace(); - var context = Promise._getContext(); - this._callback = util.contextBind(context, fn); - this._preservedValues = _filter === INTERNAL - ? new Array(this.length()) - : null; - this._limit = limit; - this._inFlight = 0; - this._queue = []; - async.invoke(this._asyncInit, this, undefined); - if (util.isArray(promises)) { - for (var i = 0; i < promises.length; ++i) { - var maybePromise = promises[i]; - if (maybePromise instanceof Promise) { - maybePromise.suppressUnhandledRejections(); - } - } - } -} -util.inherits(MappingPromiseArray, PromiseArray); - -MappingPromiseArray.prototype._asyncInit = function() { - this._init$(undefined, -2); -}; - -MappingPromiseArray.prototype._init = function () {}; - -MappingPromiseArray.prototype._promiseFulfilled = function (value, index) { - var values = this._values; - var length = this.length(); - var preservedValues = this._preservedValues; - var limit = this._limit; - - if (index < 0) { - index = (index * -1) - 1; - values[index] = value; - if (limit >= 1) { - this._inFlight--; - this._drainQueue(); - if (this._isResolved()) return true; - } - } else { - if (limit >= 1 && this._inFlight >= limit) { - values[index] = value; - this._queue.push(index); - return false; - } - if (preservedValues !== null) preservedValues[index] = value; - - var promise = this._promise; - var callback = this._callback; - var receiver = promise._boundValue(); - promise._pushContext(); - var ret = tryCatch(callback).call(receiver, value, index, length); - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, - promiseCreated, - preservedValues !== null ? "Promise.filter" : "Promise.map", - promise - ); - if (ret === errorObj) { - this._reject(ret.e); - return true; - } - - var maybePromise = tryConvertToPromise(ret, this._promise); - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - if (limit >= 1) this._inFlight++; - values[index] = maybePromise; - maybePromise._proxy(this, (index + 1) * -1); - return false; - } else if (((bitField & 33554432) !== 0)) { - ret = maybePromise._value(); - } else if (((bitField & 16777216) !== 0)) { - this._reject(maybePromise._reason()); - return true; - } else { - this._cancel(); - return true; - } - } - values[index] = ret; - } - var totalResolved = ++this._totalResolved; - if (totalResolved >= length) { - if (preservedValues !== null) { - this._filter(values, preservedValues); - } else { - this._resolve(values); - } - return true; - } - return false; -}; - -MappingPromiseArray.prototype._drainQueue = function () { - var queue = this._queue; - var limit = this._limit; - var values = this._values; - while (queue.length > 0 && this._inFlight < limit) { - if (this._isResolved()) return; - var index = queue.pop(); - this._promiseFulfilled(values[index], index); - } -}; - -MappingPromiseArray.prototype._filter = function (booleans, values) { - var len = values.length; - var ret = new Array(len); - var j = 0; - for (var i = 0; i < len; ++i) { - if (booleans[i]) ret[j++] = values[i]; - } - ret.length = j; - this._resolve(ret); -}; - -MappingPromiseArray.prototype.preservedValues = function () { - return this._preservedValues; -}; - -function map(promises, fn, options, _filter) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - - var limit = 0; - if (options !== undefined) { - if (typeof options === "object" && options !== null) { - if (typeof options.concurrency !== "number") { - return Promise.reject( - new TypeError("'concurrency' must be a number but it is " + - util.classString(options.concurrency))); - } - limit = options.concurrency; - } else { - return Promise.reject(new TypeError( - "options argument must be an object but it is " + - util.classString(options))); - } - } - limit = typeof limit === "number" && - isFinite(limit) && limit >= 1 ? limit : 0; - return new MappingPromiseArray(promises, fn, limit, _filter).promise(); -} - -Promise.prototype.map = function (fn, options) { - return map(this, fn, options, null); -}; - -Promise.map = function (promises, fn, options, _filter) { - return map(promises, fn, options, _filter); -}; - - -}; diff --git a/node_modules/bluebird/js/release/method.js b/node_modules/bluebird/js/release/method.js deleted file mode 100644 index ce9e4db..0000000 --- a/node_modules/bluebird/js/release/method.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -module.exports = -function(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) { -var util = require("./util"); -var tryCatch = util.tryCatch; - -Promise.method = function (fn) { - if (typeof fn !== "function") { - throw new Promise.TypeError("expecting a function but got " + util.classString(fn)); - } - return function () { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._pushContext(); - var value = tryCatch(fn).apply(this, arguments); - var promiseCreated = ret._popContext(); - debug.checkForgottenReturns( - value, promiseCreated, "Promise.method", ret); - ret._resolveFromSyncValue(value); - return ret; - }; -}; - -Promise.attempt = Promise["try"] = function (fn) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._pushContext(); - var value; - if (arguments.length > 1) { - debug.deprecated("calling Promise.try with more than 1 argument"); - var arg = arguments[1]; - var ctx = arguments[2]; - value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg) - : tryCatch(fn).call(ctx, arg); - } else { - value = tryCatch(fn)(); - } - var promiseCreated = ret._popContext(); - debug.checkForgottenReturns( - value, promiseCreated, "Promise.try", ret); - ret._resolveFromSyncValue(value); - return ret; -}; - -Promise.prototype._resolveFromSyncValue = function (value) { - if (value === util.errorObj) { - this._rejectCallback(value.e, false); - } else { - this._resolveCallback(value, true); - } -}; -}; diff --git a/node_modules/bluebird/js/release/nodeback.js b/node_modules/bluebird/js/release/nodeback.js deleted file mode 100644 index 71e69eb..0000000 --- a/node_modules/bluebird/js/release/nodeback.js +++ /dev/null @@ -1,51 +0,0 @@ -"use strict"; -var util = require("./util"); -var maybeWrapAsError = util.maybeWrapAsError; -var errors = require("./errors"); -var OperationalError = errors.OperationalError; -var es5 = require("./es5"); - -function isUntypedError(obj) { - return obj instanceof Error && - es5.getPrototypeOf(obj) === Error.prototype; -} - -var rErrorKey = /^(?:name|message|stack|cause)$/; -function wrapAsOperationalError(obj) { - var ret; - if (isUntypedError(obj)) { - ret = new OperationalError(obj); - ret.name = obj.name; - ret.message = obj.message; - ret.stack = obj.stack; - var keys = es5.keys(obj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (!rErrorKey.test(key)) { - ret[key] = obj[key]; - } - } - return ret; - } - util.markAsOriginatingFromRejection(obj); - return obj; -} - -function nodebackForPromise(promise, multiArgs) { - return function(err, value) { - if (promise === null) return; - if (err) { - var wrapped = wrapAsOperationalError(maybeWrapAsError(err)); - promise._attachExtraTrace(wrapped); - promise._reject(wrapped); - } else if (!multiArgs) { - promise._fulfill(value); - } else { - var $_len = arguments.length;var args = new Array(Math.max($_len - 1, 0)); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];}; - promise._fulfill(args); - } - promise = null; - }; -} - -module.exports = nodebackForPromise; diff --git a/node_modules/bluebird/js/release/nodeify.js b/node_modules/bluebird/js/release/nodeify.js deleted file mode 100644 index ce2b190..0000000 --- a/node_modules/bluebird/js/release/nodeify.js +++ /dev/null @@ -1,58 +0,0 @@ -"use strict"; -module.exports = function(Promise) { -var util = require("./util"); -var async = Promise._async; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; - -function spreadAdapter(val, nodeback) { - var promise = this; - if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback); - var ret = - tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val)); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} - -function successAdapter(val, nodeback) { - var promise = this; - var receiver = promise._boundValue(); - var ret = val === undefined - ? tryCatch(nodeback).call(receiver, null) - : tryCatch(nodeback).call(receiver, null, val); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} -function errorAdapter(reason, nodeback) { - var promise = this; - if (!reason) { - var newReason = new Error(reason + ""); - newReason.cause = reason; - reason = newReason; - } - var ret = tryCatch(nodeback).call(promise._boundValue(), reason); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} - -Promise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback, - options) { - if (typeof nodeback == "function") { - var adapter = successAdapter; - if (options !== undefined && Object(options).spread) { - adapter = spreadAdapter; - } - this._then( - adapter, - errorAdapter, - undefined, - this, - nodeback - ); - } - return this; -}; -}; diff --git a/node_modules/bluebird/js/release/promise.js b/node_modules/bluebird/js/release/promise.js deleted file mode 100644 index 622a86f..0000000 --- a/node_modules/bluebird/js/release/promise.js +++ /dev/null @@ -1,819 +0,0 @@ -"use strict"; -module.exports = function() { -var makeSelfResolutionError = function () { - return new TypeError("circular promise resolution chain\u000a\u000a See http://goo.gl/MqrFmX\u000a"); -}; -var reflectHandler = function() { - return new Promise.PromiseInspection(this._target()); -}; -var apiRejection = function(msg) { - return Promise.reject(new TypeError(msg)); -}; -function Proxyable() {} -var UNDEFINED_BINDING = {}; -var util = require("./util"); -util.setReflectHandler(reflectHandler); - -var getDomain = function() { - var domain = process.domain; - if (domain === undefined) { - return null; - } - return domain; -}; -var getContextDefault = function() { - return null; -}; -var getContextDomain = function() { - return { - domain: getDomain(), - async: null - }; -}; -var AsyncResource = util.isNode && util.nodeSupportsAsyncResource ? - require("async_hooks").AsyncResource : null; -var getContextAsyncHooks = function() { - return { - domain: getDomain(), - async: new AsyncResource("Bluebird::Promise") - }; -}; -var getContext = util.isNode ? getContextDomain : getContextDefault; -util.notEnumerableProp(Promise, "_getContext", getContext); -var enableAsyncHooks = function() { - getContext = getContextAsyncHooks; - util.notEnumerableProp(Promise, "_getContext", getContextAsyncHooks); -}; -var disableAsyncHooks = function() { - getContext = getContextDomain; - util.notEnumerableProp(Promise, "_getContext", getContextDomain); -}; - -var es5 = require("./es5"); -var Async = require("./async"); -var async = new Async(); -es5.defineProperty(Promise, "_async", {value: async}); -var errors = require("./errors"); -var TypeError = Promise.TypeError = errors.TypeError; -Promise.RangeError = errors.RangeError; -var CancellationError = Promise.CancellationError = errors.CancellationError; -Promise.TimeoutError = errors.TimeoutError; -Promise.OperationalError = errors.OperationalError; -Promise.RejectionError = errors.OperationalError; -Promise.AggregateError = errors.AggregateError; -var INTERNAL = function(){}; -var APPLY = {}; -var NEXT_FILTER = {}; -var tryConvertToPromise = require("./thenables")(Promise, INTERNAL); -var PromiseArray = - require("./promise_array")(Promise, INTERNAL, - tryConvertToPromise, apiRejection, Proxyable); -var Context = require("./context")(Promise); - /*jshint unused:false*/ -var createContext = Context.create; - -var debug = require("./debuggability")(Promise, Context, - enableAsyncHooks, disableAsyncHooks); -var CapturedTrace = debug.CapturedTrace; -var PassThroughHandlerContext = - require("./finally")(Promise, tryConvertToPromise, NEXT_FILTER); -var catchFilter = require("./catch_filter")(NEXT_FILTER); -var nodebackForPromise = require("./nodeback"); -var errorObj = util.errorObj; -var tryCatch = util.tryCatch; -function check(self, executor) { - if (self == null || self.constructor !== Promise) { - throw new TypeError("the promise constructor cannot be invoked directly\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - if (typeof executor !== "function") { - throw new TypeError("expecting a function but got " + util.classString(executor)); - } - -} - -function Promise(executor) { - if (executor !== INTERNAL) { - check(this, executor); - } - this._bitField = 0; - this._fulfillmentHandler0 = undefined; - this._rejectionHandler0 = undefined; - this._promise0 = undefined; - this._receiver0 = undefined; - this._resolveFromExecutor(executor); - this._promiseCreated(); - this._fireEvent("promiseCreated", this); -} - -Promise.prototype.toString = function () { - return "[object Promise]"; -}; - -Promise.prototype.caught = Promise.prototype["catch"] = function (fn) { - var len = arguments.length; - if (len > 1) { - var catchInstances = new Array(len - 1), - j = 0, i; - for (i = 0; i < len - 1; ++i) { - var item = arguments[i]; - if (util.isObject(item)) { - catchInstances[j++] = item; - } else { - return apiRejection("Catch statement predicate: " + - "expecting an object but got " + util.classString(item)); - } - } - catchInstances.length = j; - fn = arguments[i]; - - if (typeof fn !== "function") { - throw new TypeError("The last argument to .catch() " + - "must be a function, got " + util.toString(fn)); - } - return this.then(undefined, catchFilter(catchInstances, fn, this)); - } - return this.then(undefined, fn); -}; - -Promise.prototype.reflect = function () { - return this._then(reflectHandler, - reflectHandler, undefined, this, undefined); -}; - -Promise.prototype.then = function (didFulfill, didReject) { - if (debug.warnings() && arguments.length > 0 && - typeof didFulfill !== "function" && - typeof didReject !== "function") { - var msg = ".then() only accepts functions but was passed: " + - util.classString(didFulfill); - if (arguments.length > 1) { - msg += ", " + util.classString(didReject); - } - this._warn(msg); - } - return this._then(didFulfill, didReject, undefined, undefined, undefined); -}; - -Promise.prototype.done = function (didFulfill, didReject) { - var promise = - this._then(didFulfill, didReject, undefined, undefined, undefined); - promise._setIsFinal(); -}; - -Promise.prototype.spread = function (fn) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - return this.all()._then(fn, undefined, undefined, APPLY, undefined); -}; - -Promise.prototype.toJSON = function () { - var ret = { - isFulfilled: false, - isRejected: false, - fulfillmentValue: undefined, - rejectionReason: undefined - }; - if (this.isFulfilled()) { - ret.fulfillmentValue = this.value(); - ret.isFulfilled = true; - } else if (this.isRejected()) { - ret.rejectionReason = this.reason(); - ret.isRejected = true; - } - return ret; -}; - -Promise.prototype.all = function () { - if (arguments.length > 0) { - this._warn(".all() was passed arguments but it does not take any"); - } - return new PromiseArray(this).promise(); -}; - -Promise.prototype.error = function (fn) { - return this.caught(util.originatesFromRejection, fn); -}; - -Promise.getNewLibraryCopy = module.exports; - -Promise.is = function (val) { - return val instanceof Promise; -}; - -Promise.fromNode = Promise.fromCallback = function(fn) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs - : false; - var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs)); - if (result === errorObj) { - ret._rejectCallback(result.e, true); - } - if (!ret._isFateSealed()) ret._setAsyncGuaranteed(); - return ret; -}; - -Promise.all = function (promises) { - return new PromiseArray(promises).promise(); -}; - -Promise.cast = function (obj) { - var ret = tryConvertToPromise(obj); - if (!(ret instanceof Promise)) { - ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._setFulfilled(); - ret._rejectionHandler0 = obj; - } - return ret; -}; - -Promise.resolve = Promise.fulfilled = Promise.cast; - -Promise.reject = Promise.rejected = function (reason) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._rejectCallback(reason, true); - return ret; -}; - -Promise.setScheduler = function(fn) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - return async.setScheduler(fn); -}; - -Promise.prototype._then = function ( - didFulfill, - didReject, - _, receiver, - internalData -) { - var haveInternalData = internalData !== undefined; - var promise = haveInternalData ? internalData : new Promise(INTERNAL); - var target = this._target(); - var bitField = target._bitField; - - if (!haveInternalData) { - promise._propagateFrom(this, 3); - promise._captureStackTrace(); - if (receiver === undefined && - ((this._bitField & 2097152) !== 0)) { - if (!((bitField & 50397184) === 0)) { - receiver = this._boundValue(); - } else { - receiver = target === this ? undefined : this._boundTo; - } - } - this._fireEvent("promiseChained", this, promise); - } - - var context = getContext(); - if (!((bitField & 50397184) === 0)) { - var handler, value, settler = target._settlePromiseCtx; - if (((bitField & 33554432) !== 0)) { - value = target._rejectionHandler0; - handler = didFulfill; - } else if (((bitField & 16777216) !== 0)) { - value = target._fulfillmentHandler0; - handler = didReject; - target._unsetRejectionIsUnhandled(); - } else { - settler = target._settlePromiseLateCancellationObserver; - value = new CancellationError("late cancellation observer"); - target._attachExtraTrace(value); - handler = didReject; - } - - async.invoke(settler, target, { - handler: util.contextBind(context, handler), - promise: promise, - receiver: receiver, - value: value - }); - } else { - target._addCallbacks(didFulfill, didReject, promise, - receiver, context); - } - - return promise; -}; - -Promise.prototype._length = function () { - return this._bitField & 65535; -}; - -Promise.prototype._isFateSealed = function () { - return (this._bitField & 117506048) !== 0; -}; - -Promise.prototype._isFollowing = function () { - return (this._bitField & 67108864) === 67108864; -}; - -Promise.prototype._setLength = function (len) { - this._bitField = (this._bitField & -65536) | - (len & 65535); -}; - -Promise.prototype._setFulfilled = function () { - this._bitField = this._bitField | 33554432; - this._fireEvent("promiseFulfilled", this); -}; - -Promise.prototype._setRejected = function () { - this._bitField = this._bitField | 16777216; - this._fireEvent("promiseRejected", this); -}; - -Promise.prototype._setFollowing = function () { - this._bitField = this._bitField | 67108864; - this._fireEvent("promiseResolved", this); -}; - -Promise.prototype._setIsFinal = function () { - this._bitField = this._bitField | 4194304; -}; - -Promise.prototype._isFinal = function () { - return (this._bitField & 4194304) > 0; -}; - -Promise.prototype._unsetCancelled = function() { - this._bitField = this._bitField & (~65536); -}; - -Promise.prototype._setCancelled = function() { - this._bitField = this._bitField | 65536; - this._fireEvent("promiseCancelled", this); -}; - -Promise.prototype._setWillBeCancelled = function() { - this._bitField = this._bitField | 8388608; -}; - -Promise.prototype._setAsyncGuaranteed = function() { - if (async.hasCustomScheduler()) return; - var bitField = this._bitField; - this._bitField = bitField | - (((bitField & 536870912) >> 2) ^ - 134217728); -}; - -Promise.prototype._setNoAsyncGuarantee = function() { - this._bitField = (this._bitField | 536870912) & - (~134217728); -}; - -Promise.prototype._receiverAt = function (index) { - var ret = index === 0 ? this._receiver0 : this[ - index * 4 - 4 + 3]; - if (ret === UNDEFINED_BINDING) { - return undefined; - } else if (ret === undefined && this._isBound()) { - return this._boundValue(); - } - return ret; -}; - -Promise.prototype._promiseAt = function (index) { - return this[ - index * 4 - 4 + 2]; -}; - -Promise.prototype._fulfillmentHandlerAt = function (index) { - return this[ - index * 4 - 4 + 0]; -}; - -Promise.prototype._rejectionHandlerAt = function (index) { - return this[ - index * 4 - 4 + 1]; -}; - -Promise.prototype._boundValue = function() {}; - -Promise.prototype._migrateCallback0 = function (follower) { - var bitField = follower._bitField; - var fulfill = follower._fulfillmentHandler0; - var reject = follower._rejectionHandler0; - var promise = follower._promise0; - var receiver = follower._receiverAt(0); - if (receiver === undefined) receiver = UNDEFINED_BINDING; - this._addCallbacks(fulfill, reject, promise, receiver, null); -}; - -Promise.prototype._migrateCallbackAt = function (follower, index) { - var fulfill = follower._fulfillmentHandlerAt(index); - var reject = follower._rejectionHandlerAt(index); - var promise = follower._promiseAt(index); - var receiver = follower._receiverAt(index); - if (receiver === undefined) receiver = UNDEFINED_BINDING; - this._addCallbacks(fulfill, reject, promise, receiver, null); -}; - -Promise.prototype._addCallbacks = function ( - fulfill, - reject, - promise, - receiver, - context -) { - var index = this._length(); - - if (index >= 65535 - 4) { - index = 0; - this._setLength(0); - } - - if (index === 0) { - this._promise0 = promise; - this._receiver0 = receiver; - if (typeof fulfill === "function") { - this._fulfillmentHandler0 = util.contextBind(context, fulfill); - } - if (typeof reject === "function") { - this._rejectionHandler0 = util.contextBind(context, reject); - } - } else { - var base = index * 4 - 4; - this[base + 2] = promise; - this[base + 3] = receiver; - if (typeof fulfill === "function") { - this[base + 0] = - util.contextBind(context, fulfill); - } - if (typeof reject === "function") { - this[base + 1] = - util.contextBind(context, reject); - } - } - this._setLength(index + 1); - return index; -}; - -Promise.prototype._proxy = function (proxyable, arg) { - this._addCallbacks(undefined, undefined, arg, proxyable, null); -}; - -Promise.prototype._resolveCallback = function(value, shouldBind) { - if (((this._bitField & 117506048) !== 0)) return; - if (value === this) - return this._rejectCallback(makeSelfResolutionError(), false); - var maybePromise = tryConvertToPromise(value, this); - if (!(maybePromise instanceof Promise)) return this._fulfill(value); - - if (shouldBind) this._propagateFrom(maybePromise, 2); - - - var promise = maybePromise._target(); - - if (promise === this) { - this._reject(makeSelfResolutionError()); - return; - } - - var bitField = promise._bitField; - if (((bitField & 50397184) === 0)) { - var len = this._length(); - if (len > 0) promise._migrateCallback0(this); - for (var i = 1; i < len; ++i) { - promise._migrateCallbackAt(this, i); - } - this._setFollowing(); - this._setLength(0); - this._setFollowee(maybePromise); - } else if (((bitField & 33554432) !== 0)) { - this._fulfill(promise._value()); - } else if (((bitField & 16777216) !== 0)) { - this._reject(promise._reason()); - } else { - var reason = new CancellationError("late cancellation observer"); - promise._attachExtraTrace(reason); - this._reject(reason); - } -}; - -Promise.prototype._rejectCallback = -function(reason, synchronous, ignoreNonErrorWarnings) { - var trace = util.ensureErrorObject(reason); - var hasStack = trace === reason; - if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) { - var message = "a promise was rejected with a non-error: " + - util.classString(reason); - this._warn(message, true); - } - this._attachExtraTrace(trace, synchronous ? hasStack : false); - this._reject(reason); -}; - -Promise.prototype._resolveFromExecutor = function (executor) { - if (executor === INTERNAL) return; - var promise = this; - this._captureStackTrace(); - this._pushContext(); - var synchronous = true; - var r = this._execute(executor, function(value) { - promise._resolveCallback(value); - }, function (reason) { - promise._rejectCallback(reason, synchronous); - }); - synchronous = false; - this._popContext(); - - if (r !== undefined) { - promise._rejectCallback(r, true); - } -}; - -Promise.prototype._settlePromiseFromHandler = function ( - handler, receiver, value, promise -) { - var bitField = promise._bitField; - if (((bitField & 65536) !== 0)) return; - promise._pushContext(); - var x; - if (receiver === APPLY) { - if (!value || typeof value.length !== "number") { - x = errorObj; - x.e = new TypeError("cannot .spread() a non-array: " + - util.classString(value)); - } else { - x = tryCatch(handler).apply(this._boundValue(), value); - } - } else { - x = tryCatch(handler).call(receiver, value); - } - var promiseCreated = promise._popContext(); - bitField = promise._bitField; - if (((bitField & 65536) !== 0)) return; - - if (x === NEXT_FILTER) { - promise._reject(value); - } else if (x === errorObj) { - promise._rejectCallback(x.e, false); - } else { - debug.checkForgottenReturns(x, promiseCreated, "", promise, this); - promise._resolveCallback(x); - } -}; - -Promise.prototype._target = function() { - var ret = this; - while (ret._isFollowing()) ret = ret._followee(); - return ret; -}; - -Promise.prototype._followee = function() { - return this._rejectionHandler0; -}; - -Promise.prototype._setFollowee = function(promise) { - this._rejectionHandler0 = promise; -}; - -Promise.prototype._settlePromise = function(promise, handler, receiver, value) { - var isPromise = promise instanceof Promise; - var bitField = this._bitField; - var asyncGuaranteed = ((bitField & 134217728) !== 0); - if (((bitField & 65536) !== 0)) { - if (isPromise) promise._invokeInternalOnCancel(); - - if (receiver instanceof PassThroughHandlerContext && - receiver.isFinallyHandler()) { - receiver.cancelPromise = promise; - if (tryCatch(handler).call(receiver, value) === errorObj) { - promise._reject(errorObj.e); - } - } else if (handler === reflectHandler) { - promise._fulfill(reflectHandler.call(receiver)); - } else if (receiver instanceof Proxyable) { - receiver._promiseCancelled(promise); - } else if (isPromise || promise instanceof PromiseArray) { - promise._cancel(); - } else { - receiver.cancel(); - } - } else if (typeof handler === "function") { - if (!isPromise) { - handler.call(receiver, value, promise); - } else { - if (asyncGuaranteed) promise._setAsyncGuaranteed(); - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - } else if (receiver instanceof Proxyable) { - if (!receiver._isResolved()) { - if (((bitField & 33554432) !== 0)) { - receiver._promiseFulfilled(value, promise); - } else { - receiver._promiseRejected(value, promise); - } - } - } else if (isPromise) { - if (asyncGuaranteed) promise._setAsyncGuaranteed(); - if (((bitField & 33554432) !== 0)) { - promise._fulfill(value); - } else { - promise._reject(value); - } - } -}; - -Promise.prototype._settlePromiseLateCancellationObserver = function(ctx) { - var handler = ctx.handler; - var promise = ctx.promise; - var receiver = ctx.receiver; - var value = ctx.value; - if (typeof handler === "function") { - if (!(promise instanceof Promise)) { - handler.call(receiver, value, promise); - } else { - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - } else if (promise instanceof Promise) { - promise._reject(value); - } -}; - -Promise.prototype._settlePromiseCtx = function(ctx) { - this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value); -}; - -Promise.prototype._settlePromise0 = function(handler, value, bitField) { - var promise = this._promise0; - var receiver = this._receiverAt(0); - this._promise0 = undefined; - this._receiver0 = undefined; - this._settlePromise(promise, handler, receiver, value); -}; - -Promise.prototype._clearCallbackDataAtIndex = function(index) { - var base = index * 4 - 4; - this[base + 2] = - this[base + 3] = - this[base + 0] = - this[base + 1] = undefined; -}; - -Promise.prototype._fulfill = function (value) { - var bitField = this._bitField; - if (((bitField & 117506048) >>> 16)) return; - if (value === this) { - var err = makeSelfResolutionError(); - this._attachExtraTrace(err); - return this._reject(err); - } - this._setFulfilled(); - this._rejectionHandler0 = value; - - if ((bitField & 65535) > 0) { - if (((bitField & 134217728) !== 0)) { - this._settlePromises(); - } else { - async.settlePromises(this); - } - this._dereferenceTrace(); - } -}; - -Promise.prototype._reject = function (reason) { - var bitField = this._bitField; - if (((bitField & 117506048) >>> 16)) return; - this._setRejected(); - this._fulfillmentHandler0 = reason; - - if (this._isFinal()) { - return async.fatalError(reason, util.isNode); - } - - if ((bitField & 65535) > 0) { - async.settlePromises(this); - } else { - this._ensurePossibleRejectionHandled(); - } -}; - -Promise.prototype._fulfillPromises = function (len, value) { - for (var i = 1; i < len; i++) { - var handler = this._fulfillmentHandlerAt(i); - var promise = this._promiseAt(i); - var receiver = this._receiverAt(i); - this._clearCallbackDataAtIndex(i); - this._settlePromise(promise, handler, receiver, value); - } -}; - -Promise.prototype._rejectPromises = function (len, reason) { - for (var i = 1; i < len; i++) { - var handler = this._rejectionHandlerAt(i); - var promise = this._promiseAt(i); - var receiver = this._receiverAt(i); - this._clearCallbackDataAtIndex(i); - this._settlePromise(promise, handler, receiver, reason); - } -}; - -Promise.prototype._settlePromises = function () { - var bitField = this._bitField; - var len = (bitField & 65535); - - if (len > 0) { - if (((bitField & 16842752) !== 0)) { - var reason = this._fulfillmentHandler0; - this._settlePromise0(this._rejectionHandler0, reason, bitField); - this._rejectPromises(len, reason); - } else { - var value = this._rejectionHandler0; - this._settlePromise0(this._fulfillmentHandler0, value, bitField); - this._fulfillPromises(len, value); - } - this._setLength(0); - } - this._clearCancellationData(); -}; - -Promise.prototype._settledValue = function() { - var bitField = this._bitField; - if (((bitField & 33554432) !== 0)) { - return this._rejectionHandler0; - } else if (((bitField & 16777216) !== 0)) { - return this._fulfillmentHandler0; - } -}; - -if (typeof Symbol !== "undefined" && Symbol.toStringTag) { - es5.defineProperty(Promise.prototype, Symbol.toStringTag, { - get: function () { - return "Object"; - } - }); -} - -function deferResolve(v) {this.promise._resolveCallback(v);} -function deferReject(v) {this.promise._rejectCallback(v, false);} - -Promise.defer = Promise.pending = function() { - debug.deprecated("Promise.defer", "new Promise"); - var promise = new Promise(INTERNAL); - return { - promise: promise, - resolve: deferResolve, - reject: deferReject - }; -}; - -util.notEnumerableProp(Promise, - "_makeSelfResolutionError", - makeSelfResolutionError); - -require("./method")(Promise, INTERNAL, tryConvertToPromise, apiRejection, - debug); -require("./bind")(Promise, INTERNAL, tryConvertToPromise, debug); -require("./cancel")(Promise, PromiseArray, apiRejection, debug); -require("./direct_resolve")(Promise); -require("./synchronous_inspection")(Promise); -require("./join")( - Promise, PromiseArray, tryConvertToPromise, INTERNAL, async); -Promise.Promise = Promise; -Promise.version = "3.7.2"; -require('./call_get.js')(Promise); -require('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug); -require('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug); -require('./nodeify.js')(Promise); -require('./promisify.js')(Promise, INTERNAL); -require('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection); -require('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection); -require('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug); -require('./settle.js')(Promise, PromiseArray, debug); -require('./some.js')(Promise, PromiseArray, apiRejection); -require('./timers.js')(Promise, INTERNAL, debug); -require('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug); -require('./any.js')(Promise); -require('./each.js')(Promise, INTERNAL); -require('./filter.js')(Promise, INTERNAL); - - util.toFastProperties(Promise); - util.toFastProperties(Promise.prototype); - function fillTypes(value) { - var p = new Promise(INTERNAL); - p._fulfillmentHandler0 = value; - p._rejectionHandler0 = value; - p._promise0 = value; - p._receiver0 = value; - } - // Complete slack tracking, opt out of field-type tracking and - // stabilize map - fillTypes({a: 1}); - fillTypes({b: 2}); - fillTypes({c: 3}); - fillTypes(1); - fillTypes(function(){}); - fillTypes(undefined); - fillTypes(false); - fillTypes(new Promise(INTERNAL)); - debug.setBounds(Async.firstLineError, util.lastLineError); - return Promise; - -}; diff --git a/node_modules/bluebird/js/release/promise_array.js b/node_modules/bluebird/js/release/promise_array.js deleted file mode 100644 index 8fc665a..0000000 --- a/node_modules/bluebird/js/release/promise_array.js +++ /dev/null @@ -1,186 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL, tryConvertToPromise, - apiRejection, Proxyable) { -var util = require("./util"); -var isArray = util.isArray; - -function toResolutionValue(val) { - switch(val) { - case -2: return []; - case -3: return {}; - case -6: return new Map(); - } -} - -function PromiseArray(values) { - var promise = this._promise = new Promise(INTERNAL); - if (values instanceof Promise) { - promise._propagateFrom(values, 3); - values.suppressUnhandledRejections(); - } - promise._setOnCancel(this); - this._values = values; - this._length = 0; - this._totalResolved = 0; - this._init(undefined, -2); -} -util.inherits(PromiseArray, Proxyable); - -PromiseArray.prototype.length = function () { - return this._length; -}; - -PromiseArray.prototype.promise = function () { - return this._promise; -}; - -PromiseArray.prototype._init = function init(_, resolveValueIfEmpty) { - var values = tryConvertToPromise(this._values, this._promise); - if (values instanceof Promise) { - values = values._target(); - var bitField = values._bitField; - ; - this._values = values; - - if (((bitField & 50397184) === 0)) { - this._promise._setAsyncGuaranteed(); - return values._then( - init, - this._reject, - undefined, - this, - resolveValueIfEmpty - ); - } else if (((bitField & 33554432) !== 0)) { - values = values._value(); - } else if (((bitField & 16777216) !== 0)) { - return this._reject(values._reason()); - } else { - return this._cancel(); - } - } - values = util.asArray(values); - if (values === null) { - var err = apiRejection( - "expecting an array or an iterable object but got " + util.classString(values)).reason(); - this._promise._rejectCallback(err, false); - return; - } - - if (values.length === 0) { - if (resolveValueIfEmpty === -5) { - this._resolveEmptyArray(); - } - else { - this._resolve(toResolutionValue(resolveValueIfEmpty)); - } - return; - } - this._iterate(values); -}; - -PromiseArray.prototype._iterate = function(values) { - var len = this.getActualLength(values.length); - this._length = len; - this._values = this.shouldCopyValues() ? new Array(len) : this._values; - var result = this._promise; - var isResolved = false; - var bitField = null; - for (var i = 0; i < len; ++i) { - var maybePromise = tryConvertToPromise(values[i], result); - - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - bitField = maybePromise._bitField; - } else { - bitField = null; - } - - if (isResolved) { - if (bitField !== null) { - maybePromise.suppressUnhandledRejections(); - } - } else if (bitField !== null) { - if (((bitField & 50397184) === 0)) { - maybePromise._proxy(this, i); - this._values[i] = maybePromise; - } else if (((bitField & 33554432) !== 0)) { - isResolved = this._promiseFulfilled(maybePromise._value(), i); - } else if (((bitField & 16777216) !== 0)) { - isResolved = this._promiseRejected(maybePromise._reason(), i); - } else { - isResolved = this._promiseCancelled(i); - } - } else { - isResolved = this._promiseFulfilled(maybePromise, i); - } - } - if (!isResolved) result._setAsyncGuaranteed(); -}; - -PromiseArray.prototype._isResolved = function () { - return this._values === null; -}; - -PromiseArray.prototype._resolve = function (value) { - this._values = null; - this._promise._fulfill(value); -}; - -PromiseArray.prototype._cancel = function() { - if (this._isResolved() || !this._promise._isCancellable()) return; - this._values = null; - this._promise._cancel(); -}; - -PromiseArray.prototype._reject = function (reason) { - this._values = null; - this._promise._rejectCallback(reason, false); -}; - -PromiseArray.prototype._promiseFulfilled = function (value, index) { - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - return true; - } - return false; -}; - -PromiseArray.prototype._promiseCancelled = function() { - this._cancel(); - return true; -}; - -PromiseArray.prototype._promiseRejected = function (reason) { - this._totalResolved++; - this._reject(reason); - return true; -}; - -PromiseArray.prototype._resultCancelled = function() { - if (this._isResolved()) return; - var values = this._values; - this._cancel(); - if (values instanceof Promise) { - values.cancel(); - } else { - for (var i = 0; i < values.length; ++i) { - if (values[i] instanceof Promise) { - values[i].cancel(); - } - } - } -}; - -PromiseArray.prototype.shouldCopyValues = function () { - return true; -}; - -PromiseArray.prototype.getActualLength = function (len) { - return len; -}; - -return PromiseArray; -}; diff --git a/node_modules/bluebird/js/release/promisify.js b/node_modules/bluebird/js/release/promisify.js deleted file mode 100644 index aa98e5b..0000000 --- a/node_modules/bluebird/js/release/promisify.js +++ /dev/null @@ -1,314 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var THIS = {}; -var util = require("./util"); -var nodebackForPromise = require("./nodeback"); -var withAppended = util.withAppended; -var maybeWrapAsError = util.maybeWrapAsError; -var canEvaluate = util.canEvaluate; -var TypeError = require("./errors").TypeError; -var defaultSuffix = "Async"; -var defaultPromisified = {__isPromisified__: true}; -var noCopyProps = [ - "arity", "length", - "name", - "arguments", - "caller", - "callee", - "prototype", - "__isPromisified__" -]; -var noCopyPropsPattern = new RegExp("^(?:" + noCopyProps.join("|") + ")$"); - -var defaultFilter = function(name) { - return util.isIdentifier(name) && - name.charAt(0) !== "_" && - name !== "constructor"; -}; - -function propsFilter(key) { - return !noCopyPropsPattern.test(key); -} - -function isPromisified(fn) { - try { - return fn.__isPromisified__ === true; - } - catch (e) { - return false; - } -} - -function hasPromisified(obj, key, suffix) { - var val = util.getDataPropertyOrDefault(obj, key + suffix, - defaultPromisified); - return val ? isPromisified(val) : false; -} -function checkValid(ret, suffix, suffixRegexp) { - for (var i = 0; i < ret.length; i += 2) { - var key = ret[i]; - if (suffixRegexp.test(key)) { - var keyWithoutAsyncSuffix = key.replace(suffixRegexp, ""); - for (var j = 0; j < ret.length; j += 2) { - if (ret[j] === keyWithoutAsyncSuffix) { - throw new TypeError("Cannot promisify an API that has normal methods with '%s'-suffix\u000a\u000a See http://goo.gl/MqrFmX\u000a" - .replace("%s", suffix)); - } - } - } - } -} - -function promisifiableMethods(obj, suffix, suffixRegexp, filter) { - var keys = util.inheritedDataKeys(obj); - var ret = []; - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - var value = obj[key]; - var passesDefaultFilter = filter === defaultFilter - ? true : defaultFilter(key, value, obj); - if (typeof value === "function" && - !isPromisified(value) && - !hasPromisified(obj, key, suffix) && - filter(key, value, obj, passesDefaultFilter)) { - ret.push(key, value); - } - } - checkValid(ret, suffix, suffixRegexp); - return ret; -} - -var escapeIdentRegex = function(str) { - return str.replace(/([$])/, "\\$"); -}; - -var makeNodePromisifiedEval; -if (!false) { -var switchCaseArgumentOrder = function(likelyArgumentCount) { - var ret = [likelyArgumentCount]; - var min = Math.max(0, likelyArgumentCount - 1 - 3); - for(var i = likelyArgumentCount - 1; i >= min; --i) { - ret.push(i); - } - for(var i = likelyArgumentCount + 1; i <= 3; ++i) { - ret.push(i); - } - return ret; -}; - -var argumentSequence = function(argumentCount) { - return util.filledRange(argumentCount, "_arg", ""); -}; - -var parameterDeclaration = function(parameterCount) { - return util.filledRange( - Math.max(parameterCount, 3), "_arg", ""); -}; - -var parameterCount = function(fn) { - if (typeof fn.length === "number") { - return Math.max(Math.min(fn.length, 1023 + 1), 0); - } - return 0; -}; - -makeNodePromisifiedEval = -function(callback, receiver, originalName, fn, _, multiArgs) { - var newParameterCount = Math.max(0, parameterCount(fn) - 1); - var argumentOrder = switchCaseArgumentOrder(newParameterCount); - var shouldProxyThis = typeof callback === "string" || receiver === THIS; - - function generateCallForArgumentCount(count) { - var args = argumentSequence(count).join(", "); - var comma = count > 0 ? ", " : ""; - var ret; - if (shouldProxyThis) { - ret = "ret = callback.call(this, {{args}}, nodeback); break;\n"; - } else { - ret = receiver === undefined - ? "ret = callback({{args}}, nodeback); break;\n" - : "ret = callback.call(receiver, {{args}}, nodeback); break;\n"; - } - return ret.replace("{{args}}", args).replace(", ", comma); - } - - function generateArgumentSwitchCase() { - var ret = ""; - for (var i = 0; i < argumentOrder.length; ++i) { - ret += "case " + argumentOrder[i] +":" + - generateCallForArgumentCount(argumentOrder[i]); - } - - ret += " \n\ - default: \n\ - var args = new Array(len + 1); \n\ - var i = 0; \n\ - for (var i = 0; i < len; ++i) { \n\ - args[i] = arguments[i]; \n\ - } \n\ - args[i] = nodeback; \n\ - [CodeForCall] \n\ - break; \n\ - ".replace("[CodeForCall]", (shouldProxyThis - ? "ret = callback.apply(this, args);\n" - : "ret = callback.apply(receiver, args);\n")); - return ret; - } - - var getFunctionCode = typeof callback === "string" - ? ("this != null ? this['"+callback+"'] : fn") - : "fn"; - var body = "'use strict'; \n\ - var ret = function (Parameters) { \n\ - 'use strict'; \n\ - var len = arguments.length; \n\ - var promise = new Promise(INTERNAL); \n\ - promise._captureStackTrace(); \n\ - var nodeback = nodebackForPromise(promise, " + multiArgs + "); \n\ - var ret; \n\ - var callback = tryCatch([GetFunctionCode]); \n\ - switch(len) { \n\ - [CodeForSwitchCase] \n\ - } \n\ - if (ret === errorObj) { \n\ - promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\n\ - } \n\ - if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \n\ - return promise; \n\ - }; \n\ - notEnumerableProp(ret, '__isPromisified__', true); \n\ - return ret; \n\ - ".replace("[CodeForSwitchCase]", generateArgumentSwitchCase()) - .replace("[GetFunctionCode]", getFunctionCode); - body = body.replace("Parameters", parameterDeclaration(newParameterCount)); - return new Function("Promise", - "fn", - "receiver", - "withAppended", - "maybeWrapAsError", - "nodebackForPromise", - "tryCatch", - "errorObj", - "notEnumerableProp", - "INTERNAL", - body)( - Promise, - fn, - receiver, - withAppended, - maybeWrapAsError, - nodebackForPromise, - util.tryCatch, - util.errorObj, - util.notEnumerableProp, - INTERNAL); -}; -} - -function makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) { - var defaultThis = (function() {return this;})(); - var method = callback; - if (typeof method === "string") { - callback = fn; - } - function promisified() { - var _receiver = receiver; - if (receiver === THIS) _receiver = this; - var promise = new Promise(INTERNAL); - promise._captureStackTrace(); - var cb = typeof method === "string" && this !== defaultThis - ? this[method] : callback; - var fn = nodebackForPromise(promise, multiArgs); - try { - cb.apply(_receiver, withAppended(arguments, fn)); - } catch(e) { - promise._rejectCallback(maybeWrapAsError(e), true, true); - } - if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); - return promise; - } - util.notEnumerableProp(promisified, "__isPromisified__", true); - return promisified; -} - -var makeNodePromisified = canEvaluate - ? makeNodePromisifiedEval - : makeNodePromisifiedClosure; - -function promisifyAll(obj, suffix, filter, promisifier, multiArgs) { - var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + "$"); - var methods = - promisifiableMethods(obj, suffix, suffixRegexp, filter); - - for (var i = 0, len = methods.length; i < len; i+= 2) { - var key = methods[i]; - var fn = methods[i+1]; - var promisifiedKey = key + suffix; - if (promisifier === makeNodePromisified) { - obj[promisifiedKey] = - makeNodePromisified(key, THIS, key, fn, suffix, multiArgs); - } else { - var promisified = promisifier(fn, function() { - return makeNodePromisified(key, THIS, key, - fn, suffix, multiArgs); - }); - util.notEnumerableProp(promisified, "__isPromisified__", true); - obj[promisifiedKey] = promisified; - } - } - util.toFastProperties(obj); - return obj; -} - -function promisify(callback, receiver, multiArgs) { - return makeNodePromisified(callback, receiver, undefined, - callback, null, multiArgs); -} - -Promise.promisify = function (fn, options) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - if (isPromisified(fn)) { - return fn; - } - options = Object(options); - var receiver = options.context === undefined ? THIS : options.context; - var multiArgs = !!options.multiArgs; - var ret = promisify(fn, receiver, multiArgs); - util.copyDescriptors(fn, ret, propsFilter); - return ret; -}; - -Promise.promisifyAll = function (target, options) { - if (typeof target !== "function" && typeof target !== "object") { - throw new TypeError("the target of promisifyAll must be an object or a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - options = Object(options); - var multiArgs = !!options.multiArgs; - var suffix = options.suffix; - if (typeof suffix !== "string") suffix = defaultSuffix; - var filter = options.filter; - if (typeof filter !== "function") filter = defaultFilter; - var promisifier = options.promisifier; - if (typeof promisifier !== "function") promisifier = makeNodePromisified; - - if (!util.isIdentifier(suffix)) { - throw new RangeError("suffix must be a valid identifier\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - - var keys = util.inheritedDataKeys(target); - for (var i = 0; i < keys.length; ++i) { - var value = target[keys[i]]; - if (keys[i] !== "constructor" && - util.isClass(value)) { - promisifyAll(value.prototype, suffix, filter, promisifier, - multiArgs); - promisifyAll(value, suffix, filter, promisifier, multiArgs); - } - } - - return promisifyAll(target, suffix, filter, promisifier, multiArgs); -}; -}; - diff --git a/node_modules/bluebird/js/release/props.js b/node_modules/bluebird/js/release/props.js deleted file mode 100644 index 6a34aaf..0000000 --- a/node_modules/bluebird/js/release/props.js +++ /dev/null @@ -1,118 +0,0 @@ -"use strict"; -module.exports = function( - Promise, PromiseArray, tryConvertToPromise, apiRejection) { -var util = require("./util"); -var isObject = util.isObject; -var es5 = require("./es5"); -var Es6Map; -if (typeof Map === "function") Es6Map = Map; - -var mapToEntries = (function() { - var index = 0; - var size = 0; - - function extractEntry(value, key) { - this[index] = value; - this[index + size] = key; - index++; - } - - return function mapToEntries(map) { - size = map.size; - index = 0; - var ret = new Array(map.size * 2); - map.forEach(extractEntry, ret); - return ret; - }; -})(); - -var entriesToMap = function(entries) { - var ret = new Es6Map(); - var length = entries.length / 2 | 0; - for (var i = 0; i < length; ++i) { - var key = entries[length + i]; - var value = entries[i]; - ret.set(key, value); - } - return ret; -}; - -function PropertiesPromiseArray(obj) { - var isMap = false; - var entries; - if (Es6Map !== undefined && obj instanceof Es6Map) { - entries = mapToEntries(obj); - isMap = true; - } else { - var keys = es5.keys(obj); - var len = keys.length; - entries = new Array(len * 2); - for (var i = 0; i < len; ++i) { - var key = keys[i]; - entries[i] = obj[key]; - entries[i + len] = key; - } - } - this.constructor$(entries); - this._isMap = isMap; - this._init$(undefined, isMap ? -6 : -3); -} -util.inherits(PropertiesPromiseArray, PromiseArray); - -PropertiesPromiseArray.prototype._init = function () {}; - -PropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) { - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - var val; - if (this._isMap) { - val = entriesToMap(this._values); - } else { - val = {}; - var keyOffset = this.length(); - for (var i = 0, len = this.length(); i < len; ++i) { - val[this._values[i + keyOffset]] = this._values[i]; - } - } - this._resolve(val); - return true; - } - return false; -}; - -PropertiesPromiseArray.prototype.shouldCopyValues = function () { - return false; -}; - -PropertiesPromiseArray.prototype.getActualLength = function (len) { - return len >> 1; -}; - -function props(promises) { - var ret; - var castValue = tryConvertToPromise(promises); - - if (!isObject(castValue)) { - return apiRejection("cannot await properties of a non-object\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } else if (castValue instanceof Promise) { - ret = castValue._then( - Promise.props, undefined, undefined, undefined, undefined); - } else { - ret = new PropertiesPromiseArray(castValue).promise(); - } - - if (castValue instanceof Promise) { - ret._propagateFrom(castValue, 2); - } - return ret; -} - -Promise.prototype.props = function () { - return props(this); -}; - -Promise.props = function (promises) { - return props(promises); -}; -}; diff --git a/node_modules/bluebird/js/release/queue.js b/node_modules/bluebird/js/release/queue.js deleted file mode 100644 index ffd36fd..0000000 --- a/node_modules/bluebird/js/release/queue.js +++ /dev/null @@ -1,73 +0,0 @@ -"use strict"; -function arrayMove(src, srcIndex, dst, dstIndex, len) { - for (var j = 0; j < len; ++j) { - dst[j + dstIndex] = src[j + srcIndex]; - src[j + srcIndex] = void 0; - } -} - -function Queue(capacity) { - this._capacity = capacity; - this._length = 0; - this._front = 0; -} - -Queue.prototype._willBeOverCapacity = function (size) { - return this._capacity < size; -}; - -Queue.prototype._pushOne = function (arg) { - var length = this.length(); - this._checkCapacity(length + 1); - var i = (this._front + length) & (this._capacity - 1); - this[i] = arg; - this._length = length + 1; -}; - -Queue.prototype.push = function (fn, receiver, arg) { - var length = this.length() + 3; - if (this._willBeOverCapacity(length)) { - this._pushOne(fn); - this._pushOne(receiver); - this._pushOne(arg); - return; - } - var j = this._front + length - 3; - this._checkCapacity(length); - var wrapMask = this._capacity - 1; - this[(j + 0) & wrapMask] = fn; - this[(j + 1) & wrapMask] = receiver; - this[(j + 2) & wrapMask] = arg; - this._length = length; -}; - -Queue.prototype.shift = function () { - var front = this._front, - ret = this[front]; - - this[front] = undefined; - this._front = (front + 1) & (this._capacity - 1); - this._length--; - return ret; -}; - -Queue.prototype.length = function () { - return this._length; -}; - -Queue.prototype._checkCapacity = function (size) { - if (this._capacity < size) { - this._resizeTo(this._capacity << 1); - } -}; - -Queue.prototype._resizeTo = function (capacity) { - var oldCapacity = this._capacity; - this._capacity = capacity; - var front = this._front; - var length = this._length; - var moveItemsCount = (front + length) & (oldCapacity - 1); - arrayMove(this, 0, this, oldCapacity, moveItemsCount); -}; - -module.exports = Queue; diff --git a/node_modules/bluebird/js/release/race.js b/node_modules/bluebird/js/release/race.js deleted file mode 100644 index b862f46..0000000 --- a/node_modules/bluebird/js/release/race.js +++ /dev/null @@ -1,49 +0,0 @@ -"use strict"; -module.exports = function( - Promise, INTERNAL, tryConvertToPromise, apiRejection) { -var util = require("./util"); - -var raceLater = function (promise) { - return promise.then(function(array) { - return race(array, promise); - }); -}; - -function race(promises, parent) { - var maybePromise = tryConvertToPromise(promises); - - if (maybePromise instanceof Promise) { - return raceLater(maybePromise); - } else { - promises = util.asArray(promises); - if (promises === null) - return apiRejection("expecting an array or an iterable object but got " + util.classString(promises)); - } - - var ret = new Promise(INTERNAL); - if (parent !== undefined) { - ret._propagateFrom(parent, 3); - } - var fulfill = ret._fulfill; - var reject = ret._reject; - for (var i = 0, len = promises.length; i < len; ++i) { - var val = promises[i]; - - if (val === undefined && !(i in promises)) { - continue; - } - - Promise.cast(val)._then(fulfill, reject, undefined, ret, null); - } - return ret; -} - -Promise.race = function (promises) { - return race(promises, undefined); -}; - -Promise.prototype.race = function () { - return race(this, undefined); -}; - -}; diff --git a/node_modules/bluebird/js/release/reduce.js b/node_modules/bluebird/js/release/reduce.js deleted file mode 100644 index 101ac22..0000000 --- a/node_modules/bluebird/js/release/reduce.js +++ /dev/null @@ -1,183 +0,0 @@ -"use strict"; -module.exports = function(Promise, - PromiseArray, - apiRejection, - tryConvertToPromise, - INTERNAL, - debug) { -var util = require("./util"); -var tryCatch = util.tryCatch; - -function ReductionPromiseArray(promises, fn, initialValue, _each) { - this.constructor$(promises); - var context = Promise._getContext(); - this._fn = util.contextBind(context, fn); - if (initialValue !== undefined) { - initialValue = Promise.resolve(initialValue); - initialValue._attachCancellationCallback(this); - } - this._initialValue = initialValue; - this._currentCancellable = null; - if(_each === INTERNAL) { - this._eachValues = Array(this._length); - } else if (_each === 0) { - this._eachValues = null; - } else { - this._eachValues = undefined; - } - this._promise._captureStackTrace(); - this._init$(undefined, -5); -} -util.inherits(ReductionPromiseArray, PromiseArray); - -ReductionPromiseArray.prototype._gotAccum = function(accum) { - if (this._eachValues !== undefined && - this._eachValues !== null && - accum !== INTERNAL) { - this._eachValues.push(accum); - } -}; - -ReductionPromiseArray.prototype._eachComplete = function(value) { - if (this._eachValues !== null) { - this._eachValues.push(value); - } - return this._eachValues; -}; - -ReductionPromiseArray.prototype._init = function() {}; - -ReductionPromiseArray.prototype._resolveEmptyArray = function() { - this._resolve(this._eachValues !== undefined ? this._eachValues - : this._initialValue); -}; - -ReductionPromiseArray.prototype.shouldCopyValues = function () { - return false; -}; - -ReductionPromiseArray.prototype._resolve = function(value) { - this._promise._resolveCallback(value); - this._values = null; -}; - -ReductionPromiseArray.prototype._resultCancelled = function(sender) { - if (sender === this._initialValue) return this._cancel(); - if (this._isResolved()) return; - this._resultCancelled$(); - if (this._currentCancellable instanceof Promise) { - this._currentCancellable.cancel(); - } - if (this._initialValue instanceof Promise) { - this._initialValue.cancel(); - } -}; - -ReductionPromiseArray.prototype._iterate = function (values) { - this._values = values; - var value; - var i; - var length = values.length; - if (this._initialValue !== undefined) { - value = this._initialValue; - i = 0; - } else { - value = Promise.resolve(values[0]); - i = 1; - } - - this._currentCancellable = value; - - for (var j = i; j < length; ++j) { - var maybePromise = values[j]; - if (maybePromise instanceof Promise) { - maybePromise.suppressUnhandledRejections(); - } - } - - if (!value.isRejected()) { - for (; i < length; ++i) { - var ctx = { - accum: null, - value: values[i], - index: i, - length: length, - array: this - }; - - value = value._then(gotAccum, undefined, undefined, ctx, undefined); - - if ((i & 127) === 0) { - value._setNoAsyncGuarantee(); - } - } - } - - if (this._eachValues !== undefined) { - value = value - ._then(this._eachComplete, undefined, undefined, this, undefined); - } - value._then(completed, completed, undefined, value, this); -}; - -Promise.prototype.reduce = function (fn, initialValue) { - return reduce(this, fn, initialValue, null); -}; - -Promise.reduce = function (promises, fn, initialValue, _each) { - return reduce(promises, fn, initialValue, _each); -}; - -function completed(valueOrReason, array) { - if (this.isFulfilled()) { - array._resolve(valueOrReason); - } else { - array._reject(valueOrReason); - } -} - -function reduce(promises, fn, initialValue, _each) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var array = new ReductionPromiseArray(promises, fn, initialValue, _each); - return array.promise(); -} - -function gotAccum(accum) { - this.accum = accum; - this.array._gotAccum(accum); - var value = tryConvertToPromise(this.value, this.array._promise); - if (value instanceof Promise) { - this.array._currentCancellable = value; - return value._then(gotValue, undefined, undefined, this, undefined); - } else { - return gotValue.call(this, value); - } -} - -function gotValue(value) { - var array = this.array; - var promise = array._promise; - var fn = tryCatch(array._fn); - promise._pushContext(); - var ret; - if (array._eachValues !== undefined) { - ret = fn.call(promise._boundValue(), value, this.index, this.length); - } else { - ret = fn.call(promise._boundValue(), - this.accum, value, this.index, this.length); - } - if (ret instanceof Promise) { - array._currentCancellable = ret; - } - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, - promiseCreated, - array._eachValues !== undefined ? "Promise.each" : "Promise.reduce", - promise - ); - return ret; -} -}; diff --git a/node_modules/bluebird/js/release/schedule.js b/node_modules/bluebird/js/release/schedule.js deleted file mode 100644 index 15197d1..0000000 --- a/node_modules/bluebird/js/release/schedule.js +++ /dev/null @@ -1,62 +0,0 @@ -"use strict"; -var util = require("./util"); -var schedule; -var noAsyncScheduler = function() { - throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/MqrFmX\u000a"); -}; -var NativePromise = util.getNativePromise(); -if (util.isNode && typeof MutationObserver === "undefined") { - var GlobalSetImmediate = global.setImmediate; - var ProcessNextTick = process.nextTick; - schedule = util.isRecentNode - ? function(fn) { GlobalSetImmediate.call(global, fn); } - : function(fn) { ProcessNextTick.call(process, fn); }; -} else if (typeof NativePromise === "function" && - typeof NativePromise.resolve === "function") { - var nativePromise = NativePromise.resolve(); - schedule = function(fn) { - nativePromise.then(fn); - }; -} else if ((typeof MutationObserver !== "undefined") && - !(typeof window !== "undefined" && - window.navigator && - (window.navigator.standalone || window.cordova)) && - ("classList" in document.documentElement)) { - schedule = (function() { - var div = document.createElement("div"); - var opts = {attributes: true}; - var toggleScheduled = false; - var div2 = document.createElement("div"); - var o2 = new MutationObserver(function() { - div.classList.toggle("foo"); - toggleScheduled = false; - }); - o2.observe(div2, opts); - - var scheduleToggle = function() { - if (toggleScheduled) return; - toggleScheduled = true; - div2.classList.toggle("foo"); - }; - - return function schedule(fn) { - var o = new MutationObserver(function() { - o.disconnect(); - fn(); - }); - o.observe(div, opts); - scheduleToggle(); - }; - })(); -} else if (typeof setImmediate !== "undefined") { - schedule = function (fn) { - setImmediate(fn); - }; -} else if (typeof setTimeout !== "undefined") { - schedule = function (fn) { - setTimeout(fn, 0); - }; -} else { - schedule = noAsyncScheduler; -} -module.exports = schedule; diff --git a/node_modules/bluebird/js/release/settle.js b/node_modules/bluebird/js/release/settle.js deleted file mode 100644 index e24b204..0000000 --- a/node_modules/bluebird/js/release/settle.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; -module.exports = - function(Promise, PromiseArray, debug) { -var PromiseInspection = Promise.PromiseInspection; -var util = require("./util"); - -function SettledPromiseArray(values) { - this.constructor$(values); -} -util.inherits(SettledPromiseArray, PromiseArray); - -SettledPromiseArray.prototype._promiseResolved = function (index, inspection) { - this._values[index] = inspection; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - return true; - } - return false; -}; - -SettledPromiseArray.prototype._promiseFulfilled = function (value, index) { - var ret = new PromiseInspection(); - ret._bitField = 33554432; - ret._settledValueField = value; - return this._promiseResolved(index, ret); -}; -SettledPromiseArray.prototype._promiseRejected = function (reason, index) { - var ret = new PromiseInspection(); - ret._bitField = 16777216; - ret._settledValueField = reason; - return this._promiseResolved(index, ret); -}; - -Promise.settle = function (promises) { - debug.deprecated(".settle()", ".reflect()"); - return new SettledPromiseArray(promises).promise(); -}; - -Promise.allSettled = function (promises) { - return new SettledPromiseArray(promises).promise(); -}; - -Promise.prototype.settle = function () { - return Promise.settle(this); -}; -}; diff --git a/node_modules/bluebird/js/release/some.js b/node_modules/bluebird/js/release/some.js deleted file mode 100644 index 400d852..0000000 --- a/node_modules/bluebird/js/release/some.js +++ /dev/null @@ -1,148 +0,0 @@ -"use strict"; -module.exports = -function(Promise, PromiseArray, apiRejection) { -var util = require("./util"); -var RangeError = require("./errors").RangeError; -var AggregateError = require("./errors").AggregateError; -var isArray = util.isArray; -var CANCELLATION = {}; - - -function SomePromiseArray(values) { - this.constructor$(values); - this._howMany = 0; - this._unwrap = false; - this._initialized = false; -} -util.inherits(SomePromiseArray, PromiseArray); - -SomePromiseArray.prototype._init = function () { - if (!this._initialized) { - return; - } - if (this._howMany === 0) { - this._resolve([]); - return; - } - this._init$(undefined, -5); - var isArrayResolved = isArray(this._values); - if (!this._isResolved() && - isArrayResolved && - this._howMany > this._canPossiblyFulfill()) { - this._reject(this._getRangeError(this.length())); - } -}; - -SomePromiseArray.prototype.init = function () { - this._initialized = true; - this._init(); -}; - -SomePromiseArray.prototype.setUnwrap = function () { - this._unwrap = true; -}; - -SomePromiseArray.prototype.howMany = function () { - return this._howMany; -}; - -SomePromiseArray.prototype.setHowMany = function (count) { - this._howMany = count; -}; - -SomePromiseArray.prototype._promiseFulfilled = function (value) { - this._addFulfilled(value); - if (this._fulfilled() === this.howMany()) { - this._values.length = this.howMany(); - if (this.howMany() === 1 && this._unwrap) { - this._resolve(this._values[0]); - } else { - this._resolve(this._values); - } - return true; - } - return false; - -}; -SomePromiseArray.prototype._promiseRejected = function (reason) { - this._addRejected(reason); - return this._checkOutcome(); -}; - -SomePromiseArray.prototype._promiseCancelled = function () { - if (this._values instanceof Promise || this._values == null) { - return this._cancel(); - } - this._addRejected(CANCELLATION); - return this._checkOutcome(); -}; - -SomePromiseArray.prototype._checkOutcome = function() { - if (this.howMany() > this._canPossiblyFulfill()) { - var e = new AggregateError(); - for (var i = this.length(); i < this._values.length; ++i) { - if (this._values[i] !== CANCELLATION) { - e.push(this._values[i]); - } - } - if (e.length > 0) { - this._reject(e); - } else { - this._cancel(); - } - return true; - } - return false; -}; - -SomePromiseArray.prototype._fulfilled = function () { - return this._totalResolved; -}; - -SomePromiseArray.prototype._rejected = function () { - return this._values.length - this.length(); -}; - -SomePromiseArray.prototype._addRejected = function (reason) { - this._values.push(reason); -}; - -SomePromiseArray.prototype._addFulfilled = function (value) { - this._values[this._totalResolved++] = value; -}; - -SomePromiseArray.prototype._canPossiblyFulfill = function () { - return this.length() - this._rejected(); -}; - -SomePromiseArray.prototype._getRangeError = function (count) { - var message = "Input array must contain at least " + - this._howMany + " items but contains only " + count + " items"; - return new RangeError(message); -}; - -SomePromiseArray.prototype._resolveEmptyArray = function () { - this._reject(this._getRangeError(0)); -}; - -function some(promises, howMany) { - if ((howMany | 0) !== howMany || howMany < 0) { - return apiRejection("expecting a positive integer\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var ret = new SomePromiseArray(promises); - var promise = ret.promise(); - ret.setHowMany(howMany); - ret.init(); - return promise; -} - -Promise.some = function (promises, howMany) { - return some(promises, howMany); -}; - -Promise.prototype.some = function (howMany) { - return some(this, howMany); -}; - -Promise._SomePromiseArray = SomePromiseArray; -}; diff --git a/node_modules/bluebird/js/release/synchronous_inspection.js b/node_modules/bluebird/js/release/synchronous_inspection.js deleted file mode 100644 index 9c49d2e..0000000 --- a/node_modules/bluebird/js/release/synchronous_inspection.js +++ /dev/null @@ -1,103 +0,0 @@ -"use strict"; -module.exports = function(Promise) { -function PromiseInspection(promise) { - if (promise !== undefined) { - promise = promise._target(); - this._bitField = promise._bitField; - this._settledValueField = promise._isFateSealed() - ? promise._settledValue() : undefined; - } - else { - this._bitField = 0; - this._settledValueField = undefined; - } -} - -PromiseInspection.prototype._settledValue = function() { - return this._settledValueField; -}; - -var value = PromiseInspection.prototype.value = function () { - if (!this.isFulfilled()) { - throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - return this._settledValue(); -}; - -var reason = PromiseInspection.prototype.error = -PromiseInspection.prototype.reason = function () { - if (!this.isRejected()) { - throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - return this._settledValue(); -}; - -var isFulfilled = PromiseInspection.prototype.isFulfilled = function() { - return (this._bitField & 33554432) !== 0; -}; - -var isRejected = PromiseInspection.prototype.isRejected = function () { - return (this._bitField & 16777216) !== 0; -}; - -var isPending = PromiseInspection.prototype.isPending = function () { - return (this._bitField & 50397184) === 0; -}; - -var isResolved = PromiseInspection.prototype.isResolved = function () { - return (this._bitField & 50331648) !== 0; -}; - -PromiseInspection.prototype.isCancelled = function() { - return (this._bitField & 8454144) !== 0; -}; - -Promise.prototype.__isCancelled = function() { - return (this._bitField & 65536) === 65536; -}; - -Promise.prototype._isCancelled = function() { - return this._target().__isCancelled(); -}; - -Promise.prototype.isCancelled = function() { - return (this._target()._bitField & 8454144) !== 0; -}; - -Promise.prototype.isPending = function() { - return isPending.call(this._target()); -}; - -Promise.prototype.isRejected = function() { - return isRejected.call(this._target()); -}; - -Promise.prototype.isFulfilled = function() { - return isFulfilled.call(this._target()); -}; - -Promise.prototype.isResolved = function() { - return isResolved.call(this._target()); -}; - -Promise.prototype.value = function() { - return value.call(this._target()); -}; - -Promise.prototype.reason = function() { - var target = this._target(); - target._unsetRejectionIsUnhandled(); - return reason.call(target); -}; - -Promise.prototype._value = function() { - return this._settledValue(); -}; - -Promise.prototype._reason = function() { - this._unsetRejectionIsUnhandled(); - return this._settledValue(); -}; - -Promise.PromiseInspection = PromiseInspection; -}; diff --git a/node_modules/bluebird/js/release/thenables.js b/node_modules/bluebird/js/release/thenables.js deleted file mode 100644 index d6ab9aa..0000000 --- a/node_modules/bluebird/js/release/thenables.js +++ /dev/null @@ -1,86 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var util = require("./util"); -var errorObj = util.errorObj; -var isObject = util.isObject; - -function tryConvertToPromise(obj, context) { - if (isObject(obj)) { - if (obj instanceof Promise) return obj; - var then = getThen(obj); - if (then === errorObj) { - if (context) context._pushContext(); - var ret = Promise.reject(then.e); - if (context) context._popContext(); - return ret; - } else if (typeof then === "function") { - if (isAnyBluebirdPromise(obj)) { - var ret = new Promise(INTERNAL); - obj._then( - ret._fulfill, - ret._reject, - undefined, - ret, - null - ); - return ret; - } - return doThenable(obj, then, context); - } - } - return obj; -} - -function doGetThen(obj) { - return obj.then; -} - -function getThen(obj) { - try { - return doGetThen(obj); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} - -var hasProp = {}.hasOwnProperty; -function isAnyBluebirdPromise(obj) { - try { - return hasProp.call(obj, "_promise0"); - } catch (e) { - return false; - } -} - -function doThenable(x, then, context) { - var promise = new Promise(INTERNAL); - var ret = promise; - if (context) context._pushContext(); - promise._captureStackTrace(); - if (context) context._popContext(); - var synchronous = true; - var result = util.tryCatch(then).call(x, resolve, reject); - synchronous = false; - - if (promise && result === errorObj) { - promise._rejectCallback(result.e, true, true); - promise = null; - } - - function resolve(value) { - if (!promise) return; - promise._resolveCallback(value); - promise = null; - } - - function reject(reason) { - if (!promise) return; - promise._rejectCallback(reason, synchronous, true); - promise = null; - } - return ret; -} - -return tryConvertToPromise; -}; diff --git a/node_modules/bluebird/js/release/timers.js b/node_modules/bluebird/js/release/timers.js deleted file mode 100644 index cb8f1f4..0000000 --- a/node_modules/bluebird/js/release/timers.js +++ /dev/null @@ -1,93 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL, debug) { -var util = require("./util"); -var TimeoutError = Promise.TimeoutError; - -function HandleWrapper(handle) { - this.handle = handle; -} - -HandleWrapper.prototype._resultCancelled = function() { - clearTimeout(this.handle); -}; - -var afterValue = function(value) { return delay(+this).thenReturn(value); }; -var delay = Promise.delay = function (ms, value) { - var ret; - var handle; - if (value !== undefined) { - ret = Promise.resolve(value) - ._then(afterValue, null, null, ms, undefined); - if (debug.cancellation() && value instanceof Promise) { - ret._setOnCancel(value); - } - } else { - ret = new Promise(INTERNAL); - handle = setTimeout(function() { ret._fulfill(); }, +ms); - if (debug.cancellation()) { - ret._setOnCancel(new HandleWrapper(handle)); - } - ret._captureStackTrace(); - } - ret._setAsyncGuaranteed(); - return ret; -}; - -Promise.prototype.delay = function (ms) { - return delay(ms, this); -}; - -var afterTimeout = function (promise, message, parent) { - var err; - if (typeof message !== "string") { - if (message instanceof Error) { - err = message; - } else { - err = new TimeoutError("operation timed out"); - } - } else { - err = new TimeoutError(message); - } - util.markAsOriginatingFromRejection(err); - promise._attachExtraTrace(err); - promise._reject(err); - - if (parent != null) { - parent.cancel(); - } -}; - -function successClear(value) { - clearTimeout(this.handle); - return value; -} - -function failureClear(reason) { - clearTimeout(this.handle); - throw reason; -} - -Promise.prototype.timeout = function (ms, message) { - ms = +ms; - var ret, parent; - - var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() { - if (ret.isPending()) { - afterTimeout(ret, message, parent); - } - }, ms)); - - if (debug.cancellation()) { - parent = this.then(); - ret = parent._then(successClear, failureClear, - undefined, handleWrapper, undefined); - ret._setOnCancel(handleWrapper); - } else { - ret = this._then(successClear, failureClear, - undefined, handleWrapper, undefined); - } - - return ret; -}; - -}; diff --git a/node_modules/bluebird/js/release/using.js b/node_modules/bluebird/js/release/using.js deleted file mode 100644 index 65de531..0000000 --- a/node_modules/bluebird/js/release/using.js +++ /dev/null @@ -1,226 +0,0 @@ -"use strict"; -module.exports = function (Promise, apiRejection, tryConvertToPromise, - createContext, INTERNAL, debug) { - var util = require("./util"); - var TypeError = require("./errors").TypeError; - var inherits = require("./util").inherits; - var errorObj = util.errorObj; - var tryCatch = util.tryCatch; - var NULL = {}; - - function thrower(e) { - setTimeout(function(){throw e;}, 0); - } - - function castPreservingDisposable(thenable) { - var maybePromise = tryConvertToPromise(thenable); - if (maybePromise !== thenable && - typeof thenable._isDisposable === "function" && - typeof thenable._getDisposer === "function" && - thenable._isDisposable()) { - maybePromise._setDisposable(thenable._getDisposer()); - } - return maybePromise; - } - function dispose(resources, inspection) { - var i = 0; - var len = resources.length; - var ret = new Promise(INTERNAL); - function iterator() { - if (i >= len) return ret._fulfill(); - var maybePromise = castPreservingDisposable(resources[i++]); - if (maybePromise instanceof Promise && - maybePromise._isDisposable()) { - try { - maybePromise = tryConvertToPromise( - maybePromise._getDisposer().tryDispose(inspection), - resources.promise); - } catch (e) { - return thrower(e); - } - if (maybePromise instanceof Promise) { - return maybePromise._then(iterator, thrower, - null, null, null); - } - } - iterator(); - } - iterator(); - return ret; - } - - function Disposer(data, promise, context) { - this._data = data; - this._promise = promise; - this._context = context; - } - - Disposer.prototype.data = function () { - return this._data; - }; - - Disposer.prototype.promise = function () { - return this._promise; - }; - - Disposer.prototype.resource = function () { - if (this.promise().isFulfilled()) { - return this.promise().value(); - } - return NULL; - }; - - Disposer.prototype.tryDispose = function(inspection) { - var resource = this.resource(); - var context = this._context; - if (context !== undefined) context._pushContext(); - var ret = resource !== NULL - ? this.doDispose(resource, inspection) : null; - if (context !== undefined) context._popContext(); - this._promise._unsetDisposable(); - this._data = null; - return ret; - }; - - Disposer.isDisposer = function (d) { - return (d != null && - typeof d.resource === "function" && - typeof d.tryDispose === "function"); - }; - - function FunctionDisposer(fn, promise, context) { - this.constructor$(fn, promise, context); - } - inherits(FunctionDisposer, Disposer); - - FunctionDisposer.prototype.doDispose = function (resource, inspection) { - var fn = this.data(); - return fn.call(resource, resource, inspection); - }; - - function maybeUnwrapDisposer(value) { - if (Disposer.isDisposer(value)) { - this.resources[this.index]._setDisposable(value); - return value.promise(); - } - return value; - } - - function ResourceList(length) { - this.length = length; - this.promise = null; - this[length-1] = null; - } - - ResourceList.prototype._resultCancelled = function() { - var len = this.length; - for (var i = 0; i < len; ++i) { - var item = this[i]; - if (item instanceof Promise) { - item.cancel(); - } - } - }; - - Promise.using = function () { - var len = arguments.length; - if (len < 2) return apiRejection( - "you must pass at least 2 arguments to Promise.using"); - var fn = arguments[len - 1]; - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var input; - var spreadArgs = true; - if (len === 2 && Array.isArray(arguments[0])) { - input = arguments[0]; - len = input.length; - spreadArgs = false; - } else { - input = arguments; - len--; - } - var resources = new ResourceList(len); - for (var i = 0; i < len; ++i) { - var resource = input[i]; - if (Disposer.isDisposer(resource)) { - var disposer = resource; - resource = resource.promise(); - resource._setDisposable(disposer); - } else { - var maybePromise = tryConvertToPromise(resource); - if (maybePromise instanceof Promise) { - resource = - maybePromise._then(maybeUnwrapDisposer, null, null, { - resources: resources, - index: i - }, undefined); - } - } - resources[i] = resource; - } - - var reflectedResources = new Array(resources.length); - for (var i = 0; i < reflectedResources.length; ++i) { - reflectedResources[i] = Promise.resolve(resources[i]).reflect(); - } - - var resultPromise = Promise.all(reflectedResources) - .then(function(inspections) { - for (var i = 0; i < inspections.length; ++i) { - var inspection = inspections[i]; - if (inspection.isRejected()) { - errorObj.e = inspection.error(); - return errorObj; - } else if (!inspection.isFulfilled()) { - resultPromise.cancel(); - return; - } - inspections[i] = inspection.value(); - } - promise._pushContext(); - - fn = tryCatch(fn); - var ret = spreadArgs - ? fn.apply(undefined, inspections) : fn(inspections); - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, promiseCreated, "Promise.using", promise); - return ret; - }); - - var promise = resultPromise.lastly(function() { - var inspection = new Promise.PromiseInspection(resultPromise); - return dispose(resources, inspection); - }); - resources.promise = promise; - promise._setOnCancel(resources); - return promise; - }; - - Promise.prototype._setDisposable = function (disposer) { - this._bitField = this._bitField | 131072; - this._disposer = disposer; - }; - - Promise.prototype._isDisposable = function () { - return (this._bitField & 131072) > 0; - }; - - Promise.prototype._getDisposer = function () { - return this._disposer; - }; - - Promise.prototype._unsetDisposable = function () { - this._bitField = this._bitField & (~131072); - this._disposer = undefined; - }; - - Promise.prototype.disposer = function (fn) { - if (typeof fn === "function") { - return new FunctionDisposer(fn, this, createContext()); - } - throw new TypeError(); - }; - -}; diff --git a/node_modules/bluebird/js/release/util.js b/node_modules/bluebird/js/release/util.js deleted file mode 100644 index 8ca4d91..0000000 --- a/node_modules/bluebird/js/release/util.js +++ /dev/null @@ -1,421 +0,0 @@ -"use strict"; -var es5 = require("./es5"); -var canEvaluate = typeof navigator == "undefined"; - -var errorObj = {e: {}}; -var tryCatchTarget; -var globalObject = typeof self !== "undefined" ? self : - typeof window !== "undefined" ? window : - typeof global !== "undefined" ? global : - this !== undefined ? this : null; - -function tryCatcher() { - try { - var target = tryCatchTarget; - tryCatchTarget = null; - return target.apply(this, arguments); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} -function tryCatch(fn) { - tryCatchTarget = fn; - return tryCatcher; -} - -var inherits = function(Child, Parent) { - var hasProp = {}.hasOwnProperty; - - function T() { - this.constructor = Child; - this.constructor$ = Parent; - for (var propertyName in Parent.prototype) { - if (hasProp.call(Parent.prototype, propertyName) && - propertyName.charAt(propertyName.length-1) !== "$" - ) { - this[propertyName + "$"] = Parent.prototype[propertyName]; - } - } - } - T.prototype = Parent.prototype; - Child.prototype = new T(); - return Child.prototype; -}; - - -function isPrimitive(val) { - return val == null || val === true || val === false || - typeof val === "string" || typeof val === "number"; - -} - -function isObject(value) { - return typeof value === "function" || - typeof value === "object" && value !== null; -} - -function maybeWrapAsError(maybeError) { - if (!isPrimitive(maybeError)) return maybeError; - - return new Error(safeToString(maybeError)); -} - -function withAppended(target, appendee) { - var len = target.length; - var ret = new Array(len + 1); - var i; - for (i = 0; i < len; ++i) { - ret[i] = target[i]; - } - ret[i] = appendee; - return ret; -} - -function getDataPropertyOrDefault(obj, key, defaultValue) { - if (es5.isES5) { - var desc = Object.getOwnPropertyDescriptor(obj, key); - - if (desc != null) { - return desc.get == null && desc.set == null - ? desc.value - : defaultValue; - } - } else { - return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined; - } -} - -function notEnumerableProp(obj, name, value) { - if (isPrimitive(obj)) return obj; - var descriptor = { - value: value, - configurable: true, - enumerable: false, - writable: true - }; - es5.defineProperty(obj, name, descriptor); - return obj; -} - -function thrower(r) { - throw r; -} - -var inheritedDataKeys = (function() { - var excludedPrototypes = [ - Array.prototype, - Object.prototype, - Function.prototype - ]; - - var isExcludedProto = function(val) { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (excludedPrototypes[i] === val) { - return true; - } - } - return false; - }; - - if (es5.isES5) { - var getKeys = Object.getOwnPropertyNames; - return function(obj) { - var ret = []; - var visitedKeys = Object.create(null); - while (obj != null && !isExcludedProto(obj)) { - var keys; - try { - keys = getKeys(obj); - } catch (e) { - return ret; - } - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (visitedKeys[key]) continue; - visitedKeys[key] = true; - var desc = Object.getOwnPropertyDescriptor(obj, key); - if (desc != null && desc.get == null && desc.set == null) { - ret.push(key); - } - } - obj = es5.getPrototypeOf(obj); - } - return ret; - }; - } else { - var hasProp = {}.hasOwnProperty; - return function(obj) { - if (isExcludedProto(obj)) return []; - var ret = []; - - /*jshint forin:false */ - enumeration: for (var key in obj) { - if (hasProp.call(obj, key)) { - ret.push(key); - } else { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (hasProp.call(excludedPrototypes[i], key)) { - continue enumeration; - } - } - ret.push(key); - } - } - return ret; - }; - } - -})(); - -var thisAssignmentPattern = /this\s*\.\s*\S+\s*=/; -function isClass(fn) { - try { - if (typeof fn === "function") { - var keys = es5.names(fn.prototype); - - var hasMethods = es5.isES5 && keys.length > 1; - var hasMethodsOtherThanConstructor = keys.length > 0 && - !(keys.length === 1 && keys[0] === "constructor"); - var hasThisAssignmentAndStaticMethods = - thisAssignmentPattern.test(fn + "") && es5.names(fn).length > 0; - - if (hasMethods || hasMethodsOtherThanConstructor || - hasThisAssignmentAndStaticMethods) { - return true; - } - } - return false; - } catch (e) { - return false; - } -} - -function toFastProperties(obj) { - /*jshint -W027,-W055,-W031*/ - function FakeConstructor() {} - FakeConstructor.prototype = obj; - var receiver = new FakeConstructor(); - function ic() { - return typeof receiver.foo; - } - ic(); - ic(); - return obj; - eval(obj); -} - -var rident = /^[a-z$_][a-z$_0-9]*$/i; -function isIdentifier(str) { - return rident.test(str); -} - -function filledRange(count, prefix, suffix) { - var ret = new Array(count); - for(var i = 0; i < count; ++i) { - ret[i] = prefix + i + suffix; - } - return ret; -} - -function safeToString(obj) { - try { - return obj + ""; - } catch (e) { - return "[no string representation]"; - } -} - -function isError(obj) { - return obj instanceof Error || - (obj !== null && - typeof obj === "object" && - typeof obj.message === "string" && - typeof obj.name === "string"); -} - -function markAsOriginatingFromRejection(e) { - try { - notEnumerableProp(e, "isOperational", true); - } - catch(ignore) {} -} - -function originatesFromRejection(e) { - if (e == null) return false; - return ((e instanceof Error["__BluebirdErrorTypes__"].OperationalError) || - e["isOperational"] === true); -} - -function canAttachTrace(obj) { - return isError(obj) && es5.propertyIsWritable(obj, "stack"); -} - -var ensureErrorObject = (function() { - if (!("stack" in new Error())) { - return function(value) { - if (canAttachTrace(value)) return value; - try {throw new Error(safeToString(value));} - catch(err) {return err;} - }; - } else { - return function(value) { - if (canAttachTrace(value)) return value; - return new Error(safeToString(value)); - }; - } -})(); - -function classString(obj) { - return {}.toString.call(obj); -} - -function copyDescriptors(from, to, filter) { - var keys = es5.names(from); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (filter(key)) { - try { - es5.defineProperty(to, key, es5.getDescriptor(from, key)); - } catch (ignore) {} - } - } -} - -var asArray = function(v) { - if (es5.isArray(v)) { - return v; - } - return null; -}; - -if (typeof Symbol !== "undefined" && Symbol.iterator) { - var ArrayFrom = typeof Array.from === "function" ? function(v) { - return Array.from(v); - } : function(v) { - var ret = []; - var it = v[Symbol.iterator](); - var itResult; - while (!((itResult = it.next()).done)) { - ret.push(itResult.value); - } - return ret; - }; - - asArray = function(v) { - if (es5.isArray(v)) { - return v; - } else if (v != null && typeof v[Symbol.iterator] === "function") { - return ArrayFrom(v); - } - return null; - }; -} - -var isNode = typeof process !== "undefined" && - classString(process).toLowerCase() === "[object process]"; - -var hasEnvVariables = typeof process !== "undefined" && - typeof process.env !== "undefined"; - -function env(key) { - return hasEnvVariables ? process.env[key] : undefined; -} - -function getNativePromise() { - if (typeof Promise === "function") { - try { - var promise = new Promise(function(){}); - if (classString(promise) === "[object Promise]") { - return Promise; - } - } catch (e) {} - } -} - -var reflectHandler; -function contextBind(ctx, cb) { - if (ctx === null || - typeof cb !== "function" || - cb === reflectHandler) { - return cb; - } - - if (ctx.domain !== null) { - cb = ctx.domain.bind(cb); - } - - var async = ctx.async; - if (async !== null) { - var old = cb; - cb = function() { - var $_len = arguments.length + 2;var args = new Array($_len); for(var $_i = 2; $_i < $_len ; ++$_i) {args[$_i] = arguments[$_i - 2];}; - args[0] = old; - args[1] = this; - return async.runInAsyncScope.apply(async, args); - }; - } - return cb; -} - -var ret = { - setReflectHandler: function(fn) { - reflectHandler = fn; - }, - isClass: isClass, - isIdentifier: isIdentifier, - inheritedDataKeys: inheritedDataKeys, - getDataPropertyOrDefault: getDataPropertyOrDefault, - thrower: thrower, - isArray: es5.isArray, - asArray: asArray, - notEnumerableProp: notEnumerableProp, - isPrimitive: isPrimitive, - isObject: isObject, - isError: isError, - canEvaluate: canEvaluate, - errorObj: errorObj, - tryCatch: tryCatch, - inherits: inherits, - withAppended: withAppended, - maybeWrapAsError: maybeWrapAsError, - toFastProperties: toFastProperties, - filledRange: filledRange, - toString: safeToString, - canAttachTrace: canAttachTrace, - ensureErrorObject: ensureErrorObject, - originatesFromRejection: originatesFromRejection, - markAsOriginatingFromRejection: markAsOriginatingFromRejection, - classString: classString, - copyDescriptors: copyDescriptors, - isNode: isNode, - hasEnvVariables: hasEnvVariables, - env: env, - global: globalObject, - getNativePromise: getNativePromise, - contextBind: contextBind -}; -ret.isRecentNode = ret.isNode && (function() { - var version; - if (process.versions && process.versions.node) { - version = process.versions.node.split(".").map(Number); - } else if (process.version) { - version = process.version.split(".").map(Number); - } - return (version[0] === 0 && version[1] > 10) || (version[0] > 0); -})(); -ret.nodeSupportsAsyncResource = ret.isNode && (function() { - var supportsAsync = false; - try { - var res = require("async_hooks").AsyncResource; - supportsAsync = typeof res.prototype.runInAsyncScope === "function"; - } catch (e) { - supportsAsync = false; - } - return supportsAsync; -})(); - -if (ret.isNode) ret.toFastProperties(process); - -try {throw new Error(); } catch (e) {ret.lastLineError = e;} -module.exports = ret; diff --git a/node_modules/bluebird/package.json b/node_modules/bluebird/package.json deleted file mode 100644 index 33f696c..0000000 --- a/node_modules/bluebird/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "name": "bluebird", - "description": "Full featured Promises/A+ implementation with exceptionally good performance", - "version": "3.7.2", - "keywords": [ - "promise", - "performance", - "promises", - "promises-a", - "promises-aplus", - "async", - "await", - "deferred", - "deferreds", - "future", - "flow control", - "dsl", - "fluent interface" - ], - "scripts": { - "lint": "node scripts/jshint.js", - "test": "node --expose-gc tools/test.js", - "istanbul": "istanbul", - "prepublish": "npm run generate-browser-core && npm run generate-browser-full", - "generate-browser-full": "node tools/build.js --no-clean --no-debug --release --browser --minify", - "generate-browser-core": "node tools/build.js --features=core --no-debug --release --zalgo --browser --minify && mv js/browser/bluebird.js js/browser/bluebird.core.js && mv js/browser/bluebird.min.js js/browser/bluebird.core.min.js" - }, - "homepage": "https://github.com/petkaantonov/bluebird", - "repository": { - "type": "git", - "url": "git://github.com/petkaantonov/bluebird.git" - }, - "bugs": { - "url": "http://github.com/petkaantonov/bluebird/issues" - }, - "license": "MIT", - "author": { - "name": "Petka Antonov", - "email": "petka_antonov@hotmail.com", - "url": "http://github.com/petkaantonov/" - }, - "devDependencies": { - "acorn": "^6.0.2", - "acorn-walk": "^6.1.0", - "baconjs": "^0.7.43", - "bluebird": "^2.9.2", - "body-parser": "^1.10.2", - "browserify": "^8.1.1", - "cli-table": "~0.3.1", - "co": "^4.2.0", - "cross-spawn": "^0.2.3", - "glob": "^4.3.2", - "grunt-saucelabs": "~8.4.1", - "highland": "^2.3.0", - "istanbul": "^0.3.5", - "jshint": "^2.6.0", - "jshint-stylish": "~0.2.0", - "kefir": "^2.4.1", - "mkdirp": "~0.5.0", - "mocha": "~2.1", - "open": "~0.0.5", - "optimist": "~0.6.1", - "rimraf": "~2.2.6", - "rx": "^2.3.25", - "serve-static": "^1.7.1", - "sinon": "~1.7.3", - "uglify-js": "~2.4.16" - }, - "readmeFilename": "README.md", - "main": "./js/release/bluebird.js", - "webpack": "./js/release/bluebird.js", - "browser": "./js/browser/bluebird.js", - "files": [ - "js/browser", - "js/release", - "LICENSE" - ] -} diff --git a/node_modules/commander/CHANGELOG.md b/node_modules/commander/CHANGELOG.md deleted file mode 100644 index 9b8359b..0000000 --- a/node_modules/commander/CHANGELOG.md +++ /dev/null @@ -1,361 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). (Format adopted after v3.0.0.) - - - - -## [6.2.1] (2020-12-13) - -### Fixed - -- some tests failed if directory path included a space ([1390]) - -## [6.2.0] (2020-10-25) - -### Added - -- added 'tsx' file extension for stand-alone executable subcommands ([#1368]) -- documented second parameter to `.description()` to describe command arguments ([#1353]) -- documentation of special cases with options taking varying numbers of option-arguments ([#1332]) -- documentation for terminology ([#1361]) - -### Fixed - -- add missing TypeScript definition for `.addHelpCommand()' ([#1375]) -- removed blank line after "Arguments:" in help, to match "Options:" and "Commands:" ([#1360]) - -### Changed - -- update dependencies - -## [6.1.0] (2020-08-28) - -### Added - -- include URL to relevant section of README for error for potential conflict between Command properties and option values ([#1306]) -- `.combineFlagAndOptionalValue(false)` to ease upgrade path from older versions of Commander ([#1326]) -- allow disabling the built-in help option using `.helpOption(false)` ([#1325]) -- allow just some arguments in `argumentDescription` to `.description()` ([#1323]) - -### Changed - -- tidy async test and remove lint override ([#1312]) - -### Fixed - -- executable subcommand launching when script path not known ([#1322]) - -## [6.0.0] (2020-07-21) - -### Added - -- add support for variadic options ([#1250]) -- allow options to be added with just a short flag ([#1256]) - - *Breaking* the option property has same case as flag. e.g. flag `-n` accessed as `opts().n` (previously uppercase) -- *Breaking* throw an error if there might be a clash between option name and a Command property, with advice on how to resolve ([#1275]) - -### Fixed - -- Options which contain -no- in the middle of the option flag should not be treated as negatable. ([#1301]) - -## [6.0.0-0] (2020-06-20) - -(Released in 6.0.0) - -## [5.1.0] (2020-04-25) - -### Added - -- support for multiple command aliases, the first of which is shown in the auto-generated help ([#531], [#1236]) -- configuration support in `addCommand()` for `hidden` and `isDefault` ([#1232]) - -### Fixed - -- omit masked help flags from the displayed help ([#645], [#1247]) -- remove old short help flag when change help flags using `helpOption` ([#1248]) - -### Changed - -- remove use of `arguments` to improve auto-generated help in editors ([#1235]) -- rename `.command()` configuration `noHelp` to `hidden` (but not remove old support) ([#1232]) -- improvements to documentation -- update dependencies -- update tested versions of node -- eliminate lint errors in TypeScript ([#1208]) - -## [5.0.0] (2020-03-14) - -### Added - -* support for nested commands with action-handlers ([#1] [#764] [#1149]) -* `.addCommand()` for adding a separately configured command ([#764] [#1149]) -* allow a non-executable to be set as the default command ([#742] [#1149]) -* implicit help command when there are subcommands (previously only if executables) ([#1149]) -* customise implicit help command with `.addHelpCommand()` ([#1149]) -* display error message for unknown subcommand, by default ([#432] [#1088] [#1149]) -* display help for missing subcommand, by default ([#1088] [#1149]) -* combined short options as single argument may include boolean flags and value flag and value (e.g. `-a -b -p 80` can be written as `-abp80`) ([#1145]) -* `.parseOption()` includes short flag and long flag expansions ([#1145]) -* `.helpInformation()` returns help text as a string, previously a private routine ([#1169]) -* `.parse()` implicitly uses `process.argv` if arguments not specified ([#1172]) -* optionally specify where `.parse()` arguments "from", if not following node conventions ([#512] [#1172]) -* suggest help option along with unknown command error ([#1179]) -* TypeScript definition for `commands` property of `Command` ([#1184]) -* export `program` property ([#1195]) -* `createCommand` factory method to simplify subclassing ([#1191]) - -### Fixed - -* preserve argument order in subcommands ([#508] [#962] [#1138]) -* do not emit `command:*` for executable subcommands ([#809] [#1149]) -* action handler called whether or not there are non-option arguments ([#1062] [#1149]) -* combining option short flag and value in single argument now works for subcommands ([#1145]) -* only add implicit help command when it will not conflict with other uses of argument ([#1153] [#1149]) -* implicit help command works with command aliases ([#948] [#1149]) -* options are validated whether or not there is an action handler ([#1149]) - -### Changed - -* *Breaking* `.args` contains command arguments with just recognised options removed ([#1032] [#1138]) -* *Breaking* display error if required argument for command is missing ([#995] [#1149]) -* tighten TypeScript definition of custom option processing function passed to `.option()` ([#1119]) -* *Breaking* `.allowUnknownOption()` ([#802] [#1138]) - * unknown options included in arguments passed to command action handler - * unknown options included in `.args` -* only recognised option short flags and long flags are expanded (e.g. `-ab` or `--foo=bar`) ([#1145]) -* *Breaking* `.parseOptions()` ([#1138]) - * `args` in returned result renamed `operands` and does not include anything after first unknown option - * `unknown` in returned result has arguments after first unknown option including operands, not just options and values -* *Breaking* `.on('command:*', callback)` and other command events passed (changed) results from `.parseOptions`, i.e. operands and unknown ([#1138]) -* refactor Option from prototype to class ([#1133]) -* refactor Command from prototype to class ([#1159]) -* changes to error handling ([#1165]) - * throw for author error, not just display message - * preflight for variadic error - * add tips to missing subcommand executable -* TypeScript fluent return types changed to be more subclass friendly, return `this` rather than `Command` ([#1180]) -* `.parseAsync` returns `Promise` to be consistent with `.parse()` ([#1180]) -* update dependencies - -### Removed - -* removed EventEmitter from TypeScript definition for Command, eliminating implicit peer dependency on `@types/node` ([#1146]) -* removed private function `normalize` (the functionality has been integrated into `parseOptions`) ([#1145]) -* `parseExpectedArgs` is now private ([#1149]) - -### Migration Tips - -If you use `.on('command:*')` or more complicated tests to detect an unrecognised subcommand, you may be able to delete the code and rely on the default behaviour. - -If you use `program.args` or more complicated tests to detect a missing subcommand, you may be able to delete the code and rely on the default behaviour. - -If you use `.command('*')` to add a default command, you may be be able to switch to `isDefault:true` with a named command. - -If you want to continue combining short options with optional values as though they were boolean flags, set `combineFlagAndOptionalValue(false)` -to expand `-fb` to `-f -b` rather than `-f b`. - -## [5.0.0-4] (2020-03-03) - -(Released in 5.0.0) - -## [5.0.0-3] (2020-02-20) - -(Released in 5.0.0) - -## [5.0.0-2] (2020-02-10) - -(Released in 5.0.0) - -## [5.0.0-1] (2020-02-08) - -(Released in 5.0.0) - -## [5.0.0-0] (2020-02-02) - -(Released in 5.0.0) - -## [4.1.1] (2020-02-02) - -### Fixed - -* TypeScript definition for `.action()` should include Promise for async ([#1157]) - -## [4.1.0] (2020-01-06) - -### Added - -* two routines to change how option values are handled, and eliminate name clashes with command properties ([#933] [#1102]) - * see storeOptionsAsProperties and passCommandToAction in README -* `.parseAsync` to use instead of `.parse` if supply async action handlers ([#806] [#1118]) - -### Fixed - -* Remove trailing blanks from wrapped help text ([#1096]) - -### Changed - -* update dependencies -* extend security coverage for Commander 2.x to 2020-02-03 -* improvements to README -* improvements to TypeScript definition documentation -* move old versions out of main CHANGELOG -* removed explicit use of `ts-node` in tests - -## [4.0.1] (2019-11-12) - -### Fixed - -* display help when requested, even if there are missing required options ([#1091]) - -## [4.0.0] (2019-11-02) - -### Added - -* automatically wrap and indent help descriptions for options and commands ([#1051]) -* `.exitOverride()` allows override of calls to `process.exit` for additional error handling and to keep program running ([#1040]) -* support for declaring required options with `.requiredOptions()` ([#1071]) -* GitHub Actions support ([#1027]) -* translation links in README - -### Changed - -* dev: switch tests from Sinon+Should to Jest with major rewrite of tests ([#1035]) -* call default subcommand even when there are unknown options ([#1047]) -* *Breaking* Commander is only officially supported on Node 8 and above, and requires Node 6 ([#1053]) - -### Fixed - -* *Breaking* keep command object out of program.args when action handler called ([#1048]) - * also, action handler now passed array of unknown arguments -* complain about unknown options when program argument supplied and action handler ([#1049]) - * this changes parameters to `command:*` event to include unknown arguments -* removed deprecated `customFds` option from call to `child_process.spawn` ([#1052]) -* rework TypeScript declarations to bring all types into imported namespace ([#1081]) - -### Migration Tips - -#### Testing for no arguments - -If you were previously using code like: - -```js -if (!program.args.length) ... -``` - -a partial replacement is: - -```js -if (program.rawArgs.length < 3) ... -``` - -## [4.0.0-1] Prerelease (2019-10-08) - -(Released in 4.0.0) - -## [4.0.0-0] Prerelease (2019-10-01) - -(Released in 4.0.0) - -## Older versions - -* [3.x](./changelogs/CHANGELOG-3.md) -* [2.x](./changelogs/CHANGELOG-2.md) -* [1.x](./changelogs/CHANGELOG-1.md) -* [0.x](./changelogs/CHANGELOG-0.md) - -[#1]: https://github.com/tj/commander.js/issues/1 -[#432]: https://github.com/tj/commander.js/issues/432 -[#508]: https://github.com/tj/commander.js/issues/508 -[#512]: https://github.com/tj/commander.js/issues/512 -[#531]: https://github.com/tj/commander.js/issues/531 -[#645]: https://github.com/tj/commander.js/issues/645 -[#742]: https://github.com/tj/commander.js/issues/742 -[#764]: https://github.com/tj/commander.js/issues/764 -[#802]: https://github.com/tj/commander.js/issues/802 -[#806]: https://github.com/tj/commander.js/issues/806 -[#809]: https://github.com/tj/commander.js/issues/809 -[#948]: https://github.com/tj/commander.js/issues/948 -[#962]: https://github.com/tj/commander.js/issues/962 -[#995]: https://github.com/tj/commander.js/issues/995 -[#1027]: https://github.com/tj/commander.js/pull/1027 -[#1032]: https://github.com/tj/commander.js/issues/1032 -[#1035]: https://github.com/tj/commander.js/pull/1035 -[#1040]: https://github.com/tj/commander.js/pull/1040 -[#1047]: https://github.com/tj/commander.js/pull/1047 -[#1048]: https://github.com/tj/commander.js/pull/1048 -[#1049]: https://github.com/tj/commander.js/pull/1049 -[#1051]: https://github.com/tj/commander.js/pull/1051 -[#1052]: https://github.com/tj/commander.js/pull/1052 -[#1053]: https://github.com/tj/commander.js/pull/1053 -[#1062]: https://github.com/tj/commander.js/pull/1062 -[#1071]: https://github.com/tj/commander.js/pull/1071 -[#1081]: https://github.com/tj/commander.js/pull/1081 -[#1088]: https://github.com/tj/commander.js/issues/1088 -[#1091]: https://github.com/tj/commander.js/pull/1091 -[#1096]: https://github.com/tj/commander.js/pull/1096 -[#1102]: https://github.com/tj/commander.js/pull/1102 -[#1118]: https://github.com/tj/commander.js/pull/1118 -[#1119]: https://github.com/tj/commander.js/pull/1119 -[#1133]: https://github.com/tj/commander.js/pull/1133 -[#1138]: https://github.com/tj/commander.js/pull/1138 -[#1145]: https://github.com/tj/commander.js/pull/1145 -[#1146]: https://github.com/tj/commander.js/pull/1146 -[#1149]: https://github.com/tj/commander.js/pull/1149 -[#1153]: https://github.com/tj/commander.js/issues/1153 -[#1157]: https://github.com/tj/commander.js/pull/1157 -[#1159]: https://github.com/tj/commander.js/pull/1159 -[#1165]: https://github.com/tj/commander.js/pull/1165 -[#1169]: https://github.com/tj/commander.js/pull/1169 -[#1172]: https://github.com/tj/commander.js/pull/1172 -[#1179]: https://github.com/tj/commander.js/pull/1179 -[#1180]: https://github.com/tj/commander.js/pull/1180 -[#1184]: https://github.com/tj/commander.js/pull/1184 -[#1191]: https://github.com/tj/commander.js/pull/1191 -[#1195]: https://github.com/tj/commander.js/pull/1195 -[#1208]: https://github.com/tj/commander.js/pull/1208 -[#1232]: https://github.com/tj/commander.js/pull/1232 -[#1235]: https://github.com/tj/commander.js/pull/1235 -[#1236]: https://github.com/tj/commander.js/pull/1236 -[#1247]: https://github.com/tj/commander.js/pull/1247 -[#1248]: https://github.com/tj/commander.js/pull/1248 -[#1250]: https://github.com/tj/commander.js/pull/1250 -[#1256]: https://github.com/tj/commander.js/pull/1256 -[#1275]: https://github.com/tj/commander.js/pull/1275 -[#1301]: https://github.com/tj/commander.js/issues/1301 -[#1306]: https://github.com/tj/commander.js/pull/1306 -[#1312]: https://github.com/tj/commander.js/pull/1312 -[#1322]: https://github.com/tj/commander.js/pull/1322 -[#1323]: https://github.com/tj/commander.js/pull/1323 -[#1325]: https://github.com/tj/commander.js/pull/1325 -[#1326]: https://github.com/tj/commander.js/pull/1326 -[#1332]: https://github.com/tj/commander.js/pull/1332 -[#1353]: https://github.com/tj/commander.js/pull/1353 -[#1360]: https://github.com/tj/commander.js/pull/1360 -[#1361]: https://github.com/tj/commander.js/pull/1361 -[#1368]: https://github.com/tj/commander.js/pull/1368 -[#1375]: https://github.com/tj/commander.js/pull/1375 -[#1390]: https://github.com/tj/commander.js/pull/1390 - -[Unreleased]: https://github.com/tj/commander.js/compare/master...develop -[6.2.1]: https://github.com/tj/commander.js/compare/v6.2.0..v6.2.1 -[6.2.0]: https://github.com/tj/commander.js/compare/v6.1.0..v6.2.0 -[6.1.0]: https://github.com/tj/commander.js/compare/v6.0.0..v6.1.0 -[6.0.0]: https://github.com/tj/commander.js/compare/v5.1.0..v6.0.0 -[6.0.0-0]: https://github.com/tj/commander.js/compare/v5.1.0..v6.0.0-0 -[5.1.0]: https://github.com/tj/commander.js/compare/v5.0.0..v5.1.0 -[5.0.0]: https://github.com/tj/commander.js/compare/v4.1.1..v5.0.0 -[5.0.0-4]: https://github.com/tj/commander.js/compare/v5.0.0-3..v5.0.0-4 -[5.0.0-3]: https://github.com/tj/commander.js/compare/v5.0.0-2..v5.0.0-3 -[5.0.0-2]: https://github.com/tj/commander.js/compare/v5.0.0-1..v5.0.0-2 -[5.0.0-1]: https://github.com/tj/commander.js/compare/v5.0.0-0..v5.0.0-1 -[5.0.0-0]: https://github.com/tj/commander.js/compare/v4.1.1..v5.0.0-0 -[4.1.1]: https://github.com/tj/commander.js/compare/v4.1.0..v4.1.1 -[4.1.0]: https://github.com/tj/commander.js/compare/v4.0.1..v4.1.0 -[4.0.1]: https://github.com/tj/commander.js/compare/v4.0.0..v4.0.1 -[4.0.0]: https://github.com/tj/commander.js/compare/v3.0.2..v4.0.0 -[4.0.0-1]: https://github.com/tj/commander.js/compare/v4.0.0-0..v4.0.0-1 -[4.0.0-0]: https://github.com/tj/commander.js/compare/v3.0.2...v4.0.0-0 diff --git a/node_modules/commander/LICENSE b/node_modules/commander/LICENSE deleted file mode 100644 index 10f997a..0000000 --- a/node_modules/commander/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2011 TJ Holowaychuk - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/commander/Readme.md b/node_modules/commander/Readme.md deleted file mode 100644 index 45cd755..0000000 --- a/node_modules/commander/Readme.md +++ /dev/null @@ -1,791 +0,0 @@ -# Commander.js - -[![Build Status](https://api.travis-ci.org/tj/commander.js.svg?branch=master)](http://travis-ci.org/tj/commander.js) -[![NPM Version](http://img.shields.io/npm/v/commander.svg?style=flat)](https://www.npmjs.org/package/commander) -[![NPM Downloads](https://img.shields.io/npm/dm/commander.svg?style=flat)](https://npmcharts.com/compare/commander?minimal=true) -[![Install Size](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) - -The complete solution for [node.js](http://nodejs.org) command-line interfaces. - -Read this in other languages: English | [简体中文](./Readme_zh-CN.md) - -- [Commander.js](#commanderjs) - - [Installation](#installation) - - [Declaring _program_ variable](#declaring-program-variable) - - [Options](#options) - - [Common option types, boolean and value](#common-option-types-boolean-and-value) - - [Default option value](#default-option-value) - - [Other option types, negatable boolean and boolean|value](#other-option-types-negatable-boolean-and-booleanvalue) - - [Custom option processing](#custom-option-processing) - - [Required option](#required-option) - - [Variadic option](#variadic-option) - - [Version option](#version-option) - - [Commands](#commands) - - [Specify the argument syntax](#specify-the-argument-syntax) - - [Action handler (sub)commands](#action-handler-subcommands) - - [Stand-alone executable (sub)commands](#stand-alone-executable-subcommands) - - [Automated help](#automated-help) - - [Custom help](#custom-help) - - [.usage and .name](#usage-and-name) - - [.help(cb)](#helpcb) - - [.outputHelp(cb)](#outputhelpcb) - - [.helpInformation()](#helpinformation) - - [.helpOption(flags, description)](#helpoptionflags-description) - - [.addHelpCommand()](#addhelpcommand) - - [Custom event listeners](#custom-event-listeners) - - [Bits and pieces](#bits-and-pieces) - - [.parse() and .parseAsync()](#parse-and-parseasync) - - [Avoiding option name clashes](#avoiding-option-name-clashes) - - [TypeScript](#typescript) - - [createCommand()](#createcommand) - - [Import into ECMAScript Module](#import-into-ecmascript-module) - - [Node options such as `--harmony`](#node-options-such-as---harmony) - - [Debugging stand-alone executable subcommands](#debugging-stand-alone-executable-subcommands) - - [Override exit handling](#override-exit-handling) - - [Examples](#examples) - - [Support](#support) - - [Commander for enterprise](#commander-for-enterprise) - -For information about terms used in this document see: [terminology](./docs/terminology.md) - -## Installation - -```bash -npm install commander -``` - -## Declaring _program_ variable - -Commander exports a global object which is convenient for quick programs. -This is used in the examples in this README for brevity. - -```js -const { program } = require('commander'); -program.version('0.0.1'); -``` - -For larger programs which may use commander in multiple ways, including unit testing, it is better to create a local Command object to use. - -```js -const { Command } = require('commander'); -const program = new Command(); -program.version('0.0.1'); -``` - -## Options - -Options are defined with the `.option()` method, also serving as documentation for the options. Each option can have a short flag (single character) and a long name, separated by a comma or space or vertical bar ('|'). - -The options can be accessed as properties on the Command object. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. See also optional new behaviour to [avoid name clashes](#avoiding-option-name-clashes). - -Multiple short flags may optionally be combined in a single argument following the dash: boolean flags, followed by a single option taking a value (possibly followed by the value). -For example `-a -b -p 80` may be written as `-ab -p80` or even `-abp80`. - -You can use `--` to indicate the end of the options, and any remaining arguments will be used without being interpreted. - -Options on the command line are not positional, and can be specified before or after other arguments. - -### Common option types, boolean and value - -The two most used option types are a boolean option, and an option which takes its value -from the following argument (declared with angle brackets like `--expect `). Both are `undefined` unless specified on command line. - -Example file: [options-common.js](./examples/options-common.js) - -```js -program - .option('-d, --debug', 'output extra debugging') - .option('-s, --small', 'small pizza size') - .option('-p, --pizza-type ', 'flavour of pizza'); - -program.parse(process.argv); - -if (program.debug) console.log(program.opts()); -console.log('pizza details:'); -if (program.small) console.log('- small pizza size'); -if (program.pizzaType) console.log(`- ${program.pizzaType}`); -``` - -```bash -$ pizza-options -d -{ debug: true, small: undefined, pizzaType: undefined } -pizza details: -$ pizza-options -p -error: option '-p, --pizza-type ' argument missing -$ pizza-options -ds -p vegetarian -{ debug: true, small: true, pizzaType: 'vegetarian' } -pizza details: -- small pizza size -- vegetarian -$ pizza-options --pizza-type=cheese -pizza details: -- cheese -``` - -`program.parse(arguments)` processes the arguments, leaving any args not consumed by the program options in the `program.args` array. - -### Default option value - -You can specify a default value for an option which takes a value. - -Example file: [options-defaults.js](./examples/options-defaults.js) - -```js -program - .option('-c, --cheese ', 'add the specified type of cheese', 'blue'); - -program.parse(process.argv); - -console.log(`cheese: ${program.cheese}`); -``` - -```bash -$ pizza-options -cheese: blue -$ pizza-options --cheese stilton -cheese: stilton -``` - -### Other option types, negatable boolean and boolean|value - -You can define a boolean option long name with a leading `no-` to set the option value to false when used. -Defined alone this also makes the option true by default. - -If you define `--foo` first, adding `--no-foo` does not change the default value from what it would -otherwise be. You can specify a default boolean value for a boolean option and it can be overridden on command line. - -Example file: [options-negatable.js](./examples/options-negatable.js) - -```js -program - .option('--no-sauce', 'Remove sauce') - .option('--cheese ', 'cheese flavour', 'mozzarella') - .option('--no-cheese', 'plain with no cheese') - .parse(process.argv); - -const sauceStr = program.sauce ? 'sauce' : 'no sauce'; -const cheeseStr = (program.cheese === false) ? 'no cheese' : `${program.cheese} cheese`; -console.log(`You ordered a pizza with ${sauceStr} and ${cheeseStr}`); -``` - -```bash -$ pizza-options -You ordered a pizza with sauce and mozzarella cheese -$ pizza-options --sauce -error: unknown option '--sauce' -$ pizza-options --cheese=blue -You ordered a pizza with sauce and blue cheese -$ pizza-options --no-sauce --no-cheese -You ordered a pizza with no sauce and no cheese -``` - -You can specify an option which may be used as a boolean option but may optionally take an option-argument -(declared with square brackets like `--optional [value]`). - -Example file: [options-boolean-or-value.js](./examples/options-boolean-or-value.js) - -```js -program - .option('-c, --cheese [type]', 'Add cheese with optional type'); - -program.parse(process.argv); - -if (program.cheese === undefined) console.log('no cheese'); -else if (program.cheese === true) console.log('add cheese'); -else console.log(`add cheese type ${program.cheese}`); -``` - -```bash -$ pizza-options -no cheese -$ pizza-options --cheese -add cheese -$ pizza-options --cheese mozzarella -add cheese type mozzarella -``` - -For information about possible ambiguous cases, see [options taking varying arguments](./docs/options-taking-varying-arguments.md). - -### Custom option processing - -You may specify a function to do custom processing of option-arguments. The callback function receives two parameters, -the user specified option-argument and the previous value for the option. It returns the new value for the option. - -This allows you to coerce the option-argument to the desired type, or accumulate values, or do entirely custom processing. - -You can optionally specify the default/starting value for the option after the function parameter. - -Example file: [options-custom-processing.js](./examples/options-custom-processing.js) - -```js -function myParseInt(value, dummyPrevious) { - // parseInt takes a string and an optional radix - return parseInt(value); -} - -function increaseVerbosity(dummyValue, previous) { - return previous + 1; -} - -function collect(value, previous) { - return previous.concat([value]); -} - -function commaSeparatedList(value, dummyPrevious) { - return value.split(','); -} - -program - .option('-f, --float ', 'float argument', parseFloat) - .option('-i, --integer ', 'integer argument', myParseInt) - .option('-v, --verbose', 'verbosity that can be increased', increaseVerbosity, 0) - .option('-c, --collect ', 'repeatable value', collect, []) - .option('-l, --list ', 'comma separated list', commaSeparatedList) -; - -program.parse(process.argv); - -if (program.float !== undefined) console.log(`float: ${program.float}`); -if (program.integer !== undefined) console.log(`integer: ${program.integer}`); -if (program.verbose > 0) console.log(`verbosity: ${program.verbose}`); -if (program.collect.length > 0) console.log(program.collect); -if (program.list !== undefined) console.log(program.list); -``` - -```bash -$ custom -f 1e2 -float: 100 -$ custom --integer 2 -integer: 2 -$ custom -v -v -v -verbose: 3 -$ custom -c a -c b -c c -[ 'a', 'b', 'c' ] -$ custom --list x,y,z -[ 'x', 'y', 'z' ] -``` - -### Required option - -You may specify a required (mandatory) option using `.requiredOption`. The option must have a value after parsing, usually specified on the command line, or perhaps from a default value (say from environment). The method is otherwise the same as `.option` in format, taking flags and description, and optional default value or custom processing. - -Example file: [options-required.js](./examples/options-required.js) - -```js -program - .requiredOption('-c, --cheese ', 'pizza must have cheese'); - -program.parse(process.argv); -``` - -```bash -$ pizza -error: required option '-c, --cheese ' not specified -``` - -### Variadic option - -You may make an option variadic by appending `...` to the value placeholder when declaring the option. On the command line you -can then specify multiple option-arguments, and the parsed option value will be an array. The extra arguments -are read until the first argument starting with a dash. The special argument `--` stops option processing entirely. If a value -is specified in the same argument as the option then no further values are read. - -Example file: [options-variadic.js](./examples/options-variadic.js) - -```js -program - .option('-n, --number ', 'specify numbers') - .option('-l, --letter [letters...]', 'specify letters'); - -program.parse(); - -console.log('Options: ', program.opts()); -console.log('Remaining arguments: ', program.args); -``` - -```bash -$ collect -n 1 2 3 --letter a b c -Options: { number: [ '1', '2', '3' ], letter: [ 'a', 'b', 'c' ] } -Remaining arguments: [] -$ collect --letter=A -n80 operand -Options: { number: [ '80' ], letter: [ 'A' ] } -Remaining arguments: [ 'operand' ] -$ collect --letter -n 1 -n 2 3 -- operand -Options: { number: [ '1', '2', '3' ], letter: true } -Remaining arguments: [ 'operand' ] -``` - -For information about possible ambiguous cases, see [options taking varying arguments](./docs/options-taking-varying-arguments.md). - -### Version option - -The optional `version` method adds handling for displaying the command version. The default option flags are `-V` and `--version`, and when present the command prints the version number and exits. - -```js -program.version('0.0.1'); -``` - -```bash -$ ./examples/pizza -V -0.0.1 -``` - -You may change the flags and description by passing additional parameters to the `version` method, using -the same syntax for flags as the `option` method. - -```js -program.version('0.0.1', '-v, --vers', 'output the current version'); -``` - -## Commands - -You can specify (sub)commands using `.command()` or `.addCommand()`. There are two ways these can be implemented: using an action handler attached to the command, or as a stand-alone executable file (described in more detail later). The subcommands may be nested ([example](./examples/nestedCommands.js)). - -In the first parameter to `.command()` you specify the command name and any command-arguments. The arguments may be `` or `[optional]`, and the last argument may also be `variadic...`. - -You can use `.addCommand()` to add an already configured subcommand to the program. - -For example: - -```js -// Command implemented using action handler (description is supplied separately to `.command`) -// Returns new command for configuring. -program - .command('clone [destination]') - .description('clone a repository into a newly created directory') - .action((source, destination) => { - console.log('clone command called'); - }); - -// Command implemented using stand-alone executable file (description is second parameter to `.command`) -// Returns `this` for adding more commands. -program - .command('start ', 'start named service') - .command('stop [service]', 'stop named service, or all if no name supplied'); - -// Command prepared separately. -// Returns `this` for adding more commands. -program - .addCommand(build.makeBuildCommand()); -``` - -Configuration options can be passed with the call to `.command()` and `.addCommand()`. Specifying `hidden: true` will -remove the command from the generated help output. Specifying `isDefault: true` will run the subcommand if no other -subcommand is specified ([example](./examples/defaultCommand.js)). - -### Specify the argument syntax - -You use `.arguments` to specify the expected command-arguments for the top-level command, and for subcommands they are usually -included in the `.command` call. Angled brackets (e.g. ``) indicate required command-arguments. -Square brackets (e.g. `[optional]`) indicate optional command-arguments. -You can optionally describe the arguments in the help by supplying a hash as second parameter to `.description()`. - -Example file: [env](./examples/env) - -```js -program - .version('0.1.0') - .arguments(' [env]') - .description('test command', { - cmd: 'command to run', - env: 'environment to run test in' - }) - .action(function (cmd, env) { - console.log('command:', cmd); - console.log('environment:', env || 'no environment given'); - }); - -program.parse(process.argv); -``` - - The last argument of a command can be variadic, and only the last argument. To make an argument variadic you - append `...` to the argument name. For example: - -```js -const { program } = require('commander'); - -program - .version('0.1.0') - .command('rmdir [otherDirs...]') - .action(function (dir, otherDirs) { - console.log('rmdir %s', dir); - if (otherDirs) { - otherDirs.forEach(function (oDir) { - console.log('rmdir %s', oDir); - }); - } - }); - -program.parse(process.argv); -``` - -The variadic argument is passed to the action handler as an array. - -### Action handler (sub)commands - -You can add options to a command that uses an action handler. -The action handler gets passed a parameter for each argument you declared, and one additional argument which is the -command object itself. This command argument has the values for the command-specific options added as properties. - -```js -const { program } = require('commander'); - -program - .command('rm ') - .option('-r, --recursive', 'Remove recursively') - .action(function (dir, cmdObj) { - console.log('remove ' + dir + (cmdObj.recursive ? ' recursively' : '')) - }) - -program.parse(process.argv) -``` - -You may supply an `async` action handler, in which case you call `.parseAsync` rather than `.parse`. - -```js -async function run() { /* code goes here */ } - -async function main() { - program - .command('run') - .action(run); - await program.parseAsync(process.argv); -} -``` - -A command's options on the command line are validated when the command is used. Any unknown options will be reported as an error. - -### Stand-alone executable (sub)commands - -When `.command()` is invoked with a description argument, this tells Commander that you're going to use stand-alone executables for subcommands. -Commander will search the executables in the directory of the entry script (like `./examples/pm`) with the name `program-subcommand`, like `pm-install`, `pm-search`. -You can specify a custom name with the `executableFile` configuration option. - -You handle the options for an executable (sub)command in the executable, and don't declare them at the top-level. - -Example file: [pm](./examples/pm) - -```js -program - .version('0.1.0') - .command('install [name]', 'install one or more packages') - .command('search [query]', 'search with optional query') - .command('update', 'update installed packages', { executableFile: 'myUpdateSubCommand' }) - .command('list', 'list packages installed', { isDefault: true }); - -program.parse(process.argv); -``` - -If the program is designed to be installed globally, make sure the executables have proper modes, like `755`. - -## Automated help - -The help information is auto-generated based on the information commander already knows about your program. The default -help option is `-h,--help`. - -Example file: [pizza](./examples/pizza) - -```bash -$ node ./examples/pizza --help -Usage: pizza [options] - -An application for pizzas ordering - -Options: - -V, --version output the version number - -p, --peppers Add peppers - -c, --cheese Add the specified type of cheese (default: "marble") - -C, --no-cheese You do not want any cheese - -h, --help display help for command -``` - -A `help` command is added by default if your command has subcommands. It can be used alone, or with a subcommand name to show -further help for the subcommand. These are effectively the same if the `shell` program has implicit help: - -```bash -shell help -shell --help - -shell help spawn -shell spawn --help -``` - -### Custom help - -You can display extra information by listening for "--help". - -Example file: [custom-help](./examples/custom-help) - -```js -program - .option('-f, --foo', 'enable some foo'); - -// must be before .parse() -program.on('--help', () => { - console.log(''); - console.log('Example call:'); - console.log(' $ custom-help --help'); -}); -``` - -Yields the following help output: - -```Text -Usage: custom-help [options] - -Options: - -f, --foo enable some foo - -h, --help display help for command - -Example call: - $ custom-help --help -``` - -### .usage and .name - -These allow you to customise the usage description in the first line of the help. The name is otherwise -deduced from the (full) program arguments. Given: - -```js -program - .name("my-command") - .usage("[global options] command") -``` - -The help will start with: - -```Text -Usage: my-command [global options] command -``` - -### .help(cb) - -Output help information and exit immediately. Optional callback cb allows post-processing of help text before it is displayed. - -### .outputHelp(cb) - -Output help information without exiting. -Optional callback cb allows post-processing of help text before it is displayed. - -### .helpInformation() - -Get the command help information as a string for processing or displaying yourself. (The text does not include the custom help -from `--help` listeners.) - -### .helpOption(flags, description) - -Override the default help flags and description. Pass false to disable the built-in help option. - -```js -program - .helpOption('-e, --HELP', 'read more information'); -``` - -### .addHelpCommand() - -You can explicitly turn on or off the implicit help command with `.addHelpCommand()` and `.addHelpCommand(false)`. - -You can both turn on and customise the help command by supplying the name and description: - -```js -program.addHelpCommand('assist [command]', 'show assistance'); -``` - -## Custom event listeners - -You can execute custom actions by listening to command and option events. - -```js -program.on('option:verbose', function () { - process.env.VERBOSE = this.verbose; -}); - -program.on('command:*', function (operands) { - console.error(`error: unknown command '${operands[0]}'`); - const availableCommands = program.commands.map(cmd => cmd.name()); - mySuggestBestMatch(operands[0], availableCommands); - process.exitCode = 1; -}); -``` - -## Bits and pieces - -### .parse() and .parseAsync() - -The first argument to `.parse` is the array of strings to parse. You may omit the parameter to implicitly use `process.argv`. - -If the arguments follow different conventions than node you can pass a `from` option in the second parameter: - -- 'node': default, `argv[0]` is the application and `argv[1]` is the script being run, with user parameters after that -- 'electron': `argv[1]` varies depending on whether the electron application is packaged -- 'user': all of the arguments from the user - -For example: - -```js -program.parse(process.argv); // Explicit, node conventions -program.parse(); // Implicit, and auto-detect electron -program.parse(['-f', 'filename'], { from: 'user' }); -``` - -### Avoiding option name clashes - -The original and default behaviour is that the option values are stored -as properties on the program, and the action handler is passed a -command object with the options values stored as properties. -This is very convenient to code, but the downside is possible clashes with -existing properties of Command. - -There are two new routines to change the behaviour, and the default behaviour may change in the future: - -- `storeOptionsAsProperties`: whether to store option values as properties on command object, or store separately (specify false) and access using `.opts()` -- `passCommandToAction`: whether to pass command to action handler, -or just the options (specify false) - -Example file: [storeOptionsAsProperties-action.js](./examples/storeOptionsAsProperties-action.js) - -```js -program - .storeOptionsAsProperties(false) - .passCommandToAction(false); - -program - .name('my-program-name') - .option('-n,--name '); - -program - .command('show') - .option('-a,--action ') - .action((options) => { - console.log(options.action); - }); - -program.parse(process.argv); - -const programOptions = program.opts(); -console.log(programOptions.name); -``` - -### TypeScript - -The Commander package includes its TypeScript Definition file. - -If you use `ts-node` and stand-alone executable subcommands written as `.ts` files, you need to call your program through node to get the subcommands called correctly. e.g. - -```bash -node -r ts-node/register pm.ts -``` - -### createCommand() - -This factory function creates a new command. It is exported and may be used instead of using `new`, like: - -```js -const { createCommand } = require('commander'); -const program = createCommand(); -``` - -`createCommand` is also a method of the Command object, and creates a new command rather than a subcommand. This gets used internally -when creating subcommands using `.command()`, and you may override it to -customise the new subcommand (examples using [subclass](./examples/custom-command-class.js) and [function](./examples/custom-command-function.js)). - -### Import into ECMAScript Module - -Commander is currently a CommonJS package, and the default export can be imported into an ES Module: - -```js -// index.mjs -import commander from 'commander'; -const program = commander.program; -const newCommand = new commander.Command(); -``` - -### Node options such as `--harmony` - -You can enable `--harmony` option in two ways: - -- Use `#! /usr/bin/env node --harmony` in the subcommands scripts. (Note Windows does not support this pattern.) -- Use the `--harmony` option when call the command, like `node --harmony examples/pm publish`. The `--harmony` option will be preserved when spawning subcommand process. - -### Debugging stand-alone executable subcommands - -An executable subcommand is launched as a separate child process. - -If you are using the node inspector for [debugging](https://nodejs.org/en/docs/guides/debugging-getting-started/) executable subcommands using `node --inspect` et al, -the inspector port is incremented by 1 for the spawned subcommand. - -If you are using VSCode to debug executable subcommands you need to set the `"autoAttachChildProcesses": true` flag in your launch.json configuration. - -### Override exit handling - -By default Commander calls `process.exit` when it detects errors, or after displaying the help or version. You can override -this behaviour and optionally supply a callback. The default override throws a `CommanderError`. - -The override callback is passed a `CommanderError` with properties `exitCode` number, `code` string, and `message`. The default override behaviour is to throw the error, except for async handling of executable subcommand completion which carries on. The normal display of error messages or version or help -is not affected by the override which is called after the display. - -```js -program.exitOverride(); - -try { - program.parse(process.argv); -} catch (err) { - // custom processing... -} -``` - -## Examples - -Example file: [deploy](./examples/deploy) - -```js -const { program } = require('commander'); - -program - .version('0.1.0') - .option('-C, --chdir ', 'change the working directory') - .option('-c, --config ', 'set config path. defaults to ./deploy.conf') - .option('-T, --no-tests', 'ignore test hook'); - -program - .command('setup [env]') - .description('run setup commands for all envs') - .option("-s, --setup_mode [mode]", "Which setup mode to use") - .action(function(env, options){ - const mode = options.setup_mode || "normal"; - env = env || 'all'; - console.log('setup for %s env(s) with %s mode', env, mode); - }); - -program - .command('exec ') - .alias('ex') - .description('execute the given remote cmd') - .option("-e, --exec_mode ", "Which exec mode to use") - .action(function(cmd, options){ - console.log('exec "%s" using %s mode', cmd, options.exec_mode); - }).on('--help', function() { - console.log(''); - console.log('Examples:'); - console.log(''); - console.log(' $ deploy exec sequential'); - console.log(' $ deploy exec async'); - }); - -program.parse(process.argv); -``` - -More Demos can be found in the [examples](https://github.com/tj/commander.js/tree/master/examples) directory. - -## Support - -The current version of Commander is fully supported on Long Term Support versions of Node, and is likely to work with Node 6 but not tested. -(For versions of Node below Node 6, use Commander 3.x or 2.x.) - -The main forum for free and community support is the project [Issues](https://github.com/tj/commander.js/issues) on GitHub. - -### Commander for enterprise - -Available as part of the Tidelift Subscription - -The maintainers of Commander and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-commander?utm_source=npm-commander&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/node_modules/commander/index.js b/node_modules/commander/index.js deleted file mode 100644 index c85f725..0000000 --- a/node_modules/commander/index.js +++ /dev/null @@ -1,1881 +0,0 @@ -/** - * Module dependencies. - */ - -const EventEmitter = require('events').EventEmitter; -const spawn = require('child_process').spawn; -const path = require('path'); -const fs = require('fs'); - -// @ts-check - -class Option { - /** - * Initialize a new `Option` with the given `flags` and `description`. - * - * @param {string} flags - * @param {string} description - * @api public - */ - - constructor(flags, description) { - this.flags = flags; - this.required = flags.includes('<'); // A value must be supplied when the option is specified. - this.optional = flags.includes('['); // A value is optional when the option is specified. - // variadic test ignores et al which might be used to describe custom splitting of single argument - this.variadic = /\w\.\.\.[>\]]$/.test(flags); // The option can take multiple values. - this.mandatory = false; // The option must have a value after parsing, which usually means it must be specified on command line. - const optionFlags = _parseOptionFlags(flags); - this.short = optionFlags.shortFlag; - this.long = optionFlags.longFlag; - this.negate = false; - if (this.long) { - this.negate = this.long.startsWith('--no-'); - } - this.description = description || ''; - this.defaultValue = undefined; - } - - /** - * Return option name. - * - * @return {string} - * @api private - */ - - name() { - if (this.long) { - return this.long.replace(/^--/, ''); - } - return this.short.replace(/^-/, ''); - }; - - /** - * Return option name, in a camelcase format that can be used - * as a object attribute key. - * - * @return {string} - * @api private - */ - - attributeName() { - return camelcase(this.name().replace(/^no-/, '')); - }; - - /** - * Check if `arg` matches the short or long flag. - * - * @param {string} arg - * @return {boolean} - * @api private - */ - - is(arg) { - return this.short === arg || this.long === arg; - }; -} - -/** - * CommanderError class - * @class - */ -class CommanderError extends Error { - /** - * Constructs the CommanderError class - * @param {number} exitCode suggested exit code which could be used with process.exit - * @param {string} code an id string representing the error - * @param {string} message human-readable description of the error - * @constructor - */ - constructor(exitCode, code, message) { - super(message); - // properly capture stack trace in Node.js - Error.captureStackTrace(this, this.constructor); - this.name = this.constructor.name; - this.code = code; - this.exitCode = exitCode; - this.nestedError = undefined; - } -} - -class Command extends EventEmitter { - /** - * Initialize a new `Command`. - * - * @param {string} [name] - * @api public - */ - - constructor(name) { - super(); - this.commands = []; - this.options = []; - this.parent = null; - this._allowUnknownOption = false; - this._args = []; - this.rawArgs = null; - this._scriptPath = null; - this._name = name || ''; - this._optionValues = {}; - this._storeOptionsAsProperties = true; // backwards compatible by default - this._storeOptionsAsPropertiesCalled = false; - this._passCommandToAction = true; // backwards compatible by default - this._actionResults = []; - this._actionHandler = null; - this._executableHandler = false; - this._executableFile = null; // custom name for executable - this._defaultCommandName = null; - this._exitCallback = null; - this._aliases = []; - this._combineFlagAndOptionalValue = true; - - this._hidden = false; - this._hasHelpOption = true; - this._helpFlags = '-h, --help'; - this._helpDescription = 'display help for command'; - this._helpShortFlag = '-h'; - this._helpLongFlag = '--help'; - this._hasImplicitHelpCommand = undefined; // Deliberately undefined, not decided whether true or false - this._helpCommandName = 'help'; - this._helpCommandnameAndArgs = 'help [command]'; - this._helpCommandDescription = 'display help for command'; - } - - /** - * Define a command. - * - * There are two styles of command: pay attention to where to put the description. - * - * Examples: - * - * // Command implemented using action handler (description is supplied separately to `.command`) - * program - * .command('clone [destination]') - * .description('clone a repository into a newly created directory') - * .action((source, destination) => { - * console.log('clone command called'); - * }); - * - * // Command implemented using separate executable file (description is second parameter to `.command`) - * program - * .command('start ', 'start named service') - * .command('stop [service]', 'stop named service, or all if no name supplied'); - * - * @param {string} nameAndArgs - command name and arguments, args are `` or `[optional]` and last may also be `variadic...` - * @param {Object|string} [actionOptsOrExecDesc] - configuration options (for action), or description (for executable) - * @param {Object} [execOpts] - configuration options (for executable) - * @return {Command} returns new command for action handler, or `this` for executable command - * @api public - */ - - command(nameAndArgs, actionOptsOrExecDesc, execOpts) { - let desc = actionOptsOrExecDesc; - let opts = execOpts; - if (typeof desc === 'object' && desc !== null) { - opts = desc; - desc = null; - } - opts = opts || {}; - const args = nameAndArgs.split(/ +/); - const cmd = this.createCommand(args.shift()); - - if (desc) { - cmd.description(desc); - cmd._executableHandler = true; - } - if (opts.isDefault) this._defaultCommandName = cmd._name; - - cmd._hidden = !!(opts.noHelp || opts.hidden); - cmd._hasHelpOption = this._hasHelpOption; - cmd._helpFlags = this._helpFlags; - cmd._helpDescription = this._helpDescription; - cmd._helpShortFlag = this._helpShortFlag; - cmd._helpLongFlag = this._helpLongFlag; - cmd._helpCommandName = this._helpCommandName; - cmd._helpCommandnameAndArgs = this._helpCommandnameAndArgs; - cmd._helpCommandDescription = this._helpCommandDescription; - cmd._exitCallback = this._exitCallback; - cmd._storeOptionsAsProperties = this._storeOptionsAsProperties; - cmd._passCommandToAction = this._passCommandToAction; - cmd._combineFlagAndOptionalValue = this._combineFlagAndOptionalValue; - - cmd._executableFile = opts.executableFile || null; // Custom name for executable file, set missing to null to match constructor - this.commands.push(cmd); - cmd._parseExpectedArgs(args); - cmd.parent = this; - - if (desc) return this; - return cmd; - }; - - /** - * Factory routine to create a new unattached command. - * - * See .command() for creating an attached subcommand, which uses this routine to - * create the command. You can override createCommand to customise subcommands. - * - * @param {string} [name] - * @return {Command} new command - * @api public - */ - - createCommand(name) { - return new Command(name); - }; - - /** - * Add a prepared subcommand. - * - * See .command() for creating an attached subcommand which inherits settings from its parent. - * - * @param {Command} cmd - new subcommand - * @param {Object} [opts] - configuration options - * @return {Command} `this` command for chaining - * @api public - */ - - addCommand(cmd, opts) { - if (!cmd._name) throw new Error('Command passed to .addCommand() must have a name'); - - // To keep things simple, block automatic name generation for deeply nested executables. - // Fail fast and detect when adding rather than later when parsing. - function checkExplicitNames(commandArray) { - commandArray.forEach((cmd) => { - if (cmd._executableHandler && !cmd._executableFile) { - throw new Error(`Must specify executableFile for deeply nested executable: ${cmd.name()}`); - } - checkExplicitNames(cmd.commands); - }); - } - checkExplicitNames(cmd.commands); - - opts = opts || {}; - if (opts.isDefault) this._defaultCommandName = cmd._name; - if (opts.noHelp || opts.hidden) cmd._hidden = true; // modifying passed command due to existing implementation - - this.commands.push(cmd); - cmd.parent = this; - return this; - }; - - /** - * Define argument syntax for the command. - * - * @api public - */ - - arguments(desc) { - return this._parseExpectedArgs(desc.split(/ +/)); - }; - - /** - * Override default decision whether to add implicit help command. - * - * addHelpCommand() // force on - * addHelpCommand(false); // force off - * addHelpCommand('help [cmd]', 'display help for [cmd]'); // force on with custom details - * - * @return {Command} `this` command for chaining - * @api public - */ - - addHelpCommand(enableOrNameAndArgs, description) { - if (enableOrNameAndArgs === false) { - this._hasImplicitHelpCommand = false; - } else { - this._hasImplicitHelpCommand = true; - if (typeof enableOrNameAndArgs === 'string') { - this._helpCommandName = enableOrNameAndArgs.split(' ')[0]; - this._helpCommandnameAndArgs = enableOrNameAndArgs; - } - this._helpCommandDescription = description || this._helpCommandDescription; - } - return this; - }; - - /** - * @return {boolean} - * @api private - */ - - _lazyHasImplicitHelpCommand() { - if (this._hasImplicitHelpCommand === undefined) { - this._hasImplicitHelpCommand = this.commands.length && !this._actionHandler && !this._findCommand('help'); - } - return this._hasImplicitHelpCommand; - }; - - /** - * Parse expected `args`. - * - * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. - * - * @param {Array} args - * @return {Command} `this` command for chaining - * @api private - */ - - _parseExpectedArgs(args) { - if (!args.length) return; - args.forEach((arg) => { - const argDetails = { - required: false, - name: '', - variadic: false - }; - - switch (arg[0]) { - case '<': - argDetails.required = true; - argDetails.name = arg.slice(1, -1); - break; - case '[': - argDetails.name = arg.slice(1, -1); - break; - } - - if (argDetails.name.length > 3 && argDetails.name.slice(-3) === '...') { - argDetails.variadic = true; - argDetails.name = argDetails.name.slice(0, -3); - } - if (argDetails.name) { - this._args.push(argDetails); - } - }); - this._args.forEach((arg, i) => { - if (arg.variadic && i < this._args.length - 1) { - throw new Error(`only the last argument can be variadic '${arg.name}'`); - } - }); - return this; - }; - - /** - * Register callback to use as replacement for calling process.exit. - * - * @param {Function} [fn] optional callback which will be passed a CommanderError, defaults to throwing - * @return {Command} `this` command for chaining - * @api public - */ - - exitOverride(fn) { - if (fn) { - this._exitCallback = fn; - } else { - this._exitCallback = (err) => { - if (err.code !== 'commander.executeSubCommandAsync') { - throw err; - } else { - // Async callback from spawn events, not useful to throw. - } - }; - } - return this; - }; - - /** - * Call process.exit, and _exitCallback if defined. - * - * @param {number} exitCode exit code for using with process.exit - * @param {string} code an id string representing the error - * @param {string} message human-readable description of the error - * @return never - * @api private - */ - - _exit(exitCode, code, message) { - if (this._exitCallback) { - this._exitCallback(new CommanderError(exitCode, code, message)); - // Expecting this line is not reached. - } - process.exit(exitCode); - }; - - /** - * Register callback `fn` for the command. - * - * Examples: - * - * program - * .command('help') - * .description('display verbose help') - * .action(function() { - * // output help here - * }); - * - * @param {Function} fn - * @return {Command} `this` command for chaining - * @api public - */ - - action(fn) { - const listener = (args) => { - // The .action callback takes an extra parameter which is the command or options. - const expectedArgsCount = this._args.length; - const actionArgs = args.slice(0, expectedArgsCount); - if (this._passCommandToAction) { - actionArgs[expectedArgsCount] = this; - } else { - actionArgs[expectedArgsCount] = this.opts(); - } - // Add the extra arguments so available too. - if (args.length > expectedArgsCount) { - actionArgs.push(args.slice(expectedArgsCount)); - } - - const actionResult = fn.apply(this, actionArgs); - // Remember result in case it is async. Assume parseAsync getting called on root. - let rootCommand = this; - while (rootCommand.parent) { - rootCommand = rootCommand.parent; - } - rootCommand._actionResults.push(actionResult); - }; - this._actionHandler = listener; - return this; - }; - - /** - * Internal routine to check whether there is a clash storing option value with a Command property. - * - * @param {Option} option - * @api private - */ - - _checkForOptionNameClash(option) { - if (!this._storeOptionsAsProperties || this._storeOptionsAsPropertiesCalled) { - // Storing options safely, or user has been explicit and up to them. - return; - } - // User may override help, and hard to tell if worth warning. - if (option.name() === 'help') { - return; - } - - const commandProperty = this._getOptionValue(option.attributeName()); - if (commandProperty === undefined) { - // no clash - return; - } - - let foundClash = true; - if (option.negate) { - // It is ok if define foo before --no-foo. - const positiveLongFlag = option.long.replace(/^--no-/, '--'); - foundClash = !this._findOption(positiveLongFlag); - } else if (option.long) { - const negativeLongFlag = option.long.replace(/^--/, '--no-'); - foundClash = !this._findOption(negativeLongFlag); - } - - if (foundClash) { - throw new Error(`option '${option.name()}' clashes with existing property '${option.attributeName()}' on Command -- call storeOptionsAsProperties(false) to store option values safely, -- or call storeOptionsAsProperties(true) to suppress this check, -- or change option name - -Read more on https://git.io/JJc0W`); - } - }; - - /** - * Internal implementation shared by .option() and .requiredOption() - * - * @param {Object} config - * @param {string} flags - * @param {string} description - * @param {Function|*} [fn] - custom option processing function or default value - * @param {*} [defaultValue] - * @return {Command} `this` command for chaining - * @api private - */ - - _optionEx(config, flags, description, fn, defaultValue) { - const option = new Option(flags, description); - const oname = option.name(); - const name = option.attributeName(); - option.mandatory = !!config.mandatory; - - this._checkForOptionNameClash(option); - - // default as 3rd arg - if (typeof fn !== 'function') { - if (fn instanceof RegExp) { - // This is a bit simplistic (especially no error messages), and probably better handled by caller using custom option processing. - // No longer documented in README, but still present for backwards compatibility. - const regex = fn; - fn = (val, def) => { - const m = regex.exec(val); - return m ? m[0] : def; - }; - } else { - defaultValue = fn; - fn = null; - } - } - - // preassign default value for --no-*, [optional], , or plain flag if boolean value - if (option.negate || option.optional || option.required || typeof defaultValue === 'boolean') { - // when --no-foo we make sure default is true, unless a --foo option is already defined - if (option.negate) { - const positiveLongFlag = option.long.replace(/^--no-/, '--'); - defaultValue = this._findOption(positiveLongFlag) ? this._getOptionValue(name) : true; - } - // preassign only if we have a default - if (defaultValue !== undefined) { - this._setOptionValue(name, defaultValue); - option.defaultValue = defaultValue; - } - } - - // register the option - this.options.push(option); - - // when it's passed assign the value - // and conditionally invoke the callback - this.on('option:' + oname, (val) => { - const oldValue = this._getOptionValue(name); - - // custom processing - if (val !== null && fn) { - val = fn(val, oldValue === undefined ? defaultValue : oldValue); - } else if (val !== null && option.variadic) { - if (oldValue === defaultValue || !Array.isArray(oldValue)) { - val = [val]; - } else { - val = oldValue.concat(val); - } - } - - // unassigned or boolean value - if (typeof oldValue === 'boolean' || typeof oldValue === 'undefined') { - // if no value, negate false, and we have a default, then use it! - if (val == null) { - this._setOptionValue(name, option.negate - ? false - : defaultValue || true); - } else { - this._setOptionValue(name, val); - } - } else if (val !== null) { - // reassign - this._setOptionValue(name, option.negate ? false : val); - } - }); - - return this; - }; - - /** - * Define option with `flags`, `description` and optional - * coercion `fn`. - * - * The `flags` string should contain both the short and long flags, - * separated by comma, a pipe or space. The following are all valid - * all will output this way when `--help` is used. - * - * "-p, --pepper" - * "-p|--pepper" - * "-p --pepper" - * - * Examples: - * - * // simple boolean defaulting to undefined - * program.option('-p, --pepper', 'add pepper'); - * - * program.pepper - * // => undefined - * - * --pepper - * program.pepper - * // => true - * - * // simple boolean defaulting to true (unless non-negated option is also defined) - * program.option('-C, --no-cheese', 'remove cheese'); - * - * program.cheese - * // => true - * - * --no-cheese - * program.cheese - * // => false - * - * // required argument - * program.option('-C, --chdir ', 'change the working directory'); - * - * --chdir /tmp - * program.chdir - * // => "/tmp" - * - * // optional argument - * program.option('-c, --cheese [type]', 'add cheese [marble]'); - * - * @param {string} flags - * @param {string} description - * @param {Function|*} [fn] - custom option processing function or default value - * @param {*} [defaultValue] - * @return {Command} `this` command for chaining - * @api public - */ - - option(flags, description, fn, defaultValue) { - return this._optionEx({}, flags, description, fn, defaultValue); - }; - - /** - * Add a required option which must have a value after parsing. This usually means - * the option must be specified on the command line. (Otherwise the same as .option().) - * - * The `flags` string should contain both the short and long flags, separated by comma, a pipe or space. - * - * @param {string} flags - * @param {string} description - * @param {Function|*} [fn] - custom option processing function or default value - * @param {*} [defaultValue] - * @return {Command} `this` command for chaining - * @api public - */ - - requiredOption(flags, description, fn, defaultValue) { - return this._optionEx({ mandatory: true }, flags, description, fn, defaultValue); - }; - - /** - * Alter parsing of short flags with optional values. - * - * Examples: - * - * // for `.option('-f,--flag [value]'): - * .combineFlagAndOptionalValue(true) // `-f80` is treated like `--flag=80`, this is the default behaviour - * .combineFlagAndOptionalValue(false) // `-fb` is treated like `-f -b` - * - * @param {Boolean} [arg] - if `true` or omitted, an optional value can be specified directly after the flag. - * @api public - */ - combineFlagAndOptionalValue(arg) { - this._combineFlagAndOptionalValue = (arg === undefined) || arg; - return this; - }; - - /** - * Allow unknown options on the command line. - * - * @param {Boolean} [arg] - if `true` or omitted, no error will be thrown - * for unknown options. - * @api public - */ - allowUnknownOption(arg) { - this._allowUnknownOption = (arg === undefined) || arg; - return this; - }; - - /** - * Whether to store option values as properties on command object, - * or store separately (specify false). In both cases the option values can be accessed using .opts(). - * - * @param {boolean} value - * @return {Command} `this` command for chaining - * @api public - */ - - storeOptionsAsProperties(value) { - this._storeOptionsAsPropertiesCalled = true; - this._storeOptionsAsProperties = (value === undefined) || value; - if (this.options.length) { - throw new Error('call .storeOptionsAsProperties() before adding options'); - } - return this; - }; - - /** - * Whether to pass command to action handler, - * or just the options (specify false). - * - * @param {boolean} value - * @return {Command} `this` command for chaining - * @api public - */ - - passCommandToAction(value) { - this._passCommandToAction = (value === undefined) || value; - return this; - }; - - /** - * Store option value - * - * @param {string} key - * @param {Object} value - * @api private - */ - - _setOptionValue(key, value) { - if (this._storeOptionsAsProperties) { - this[key] = value; - } else { - this._optionValues[key] = value; - } - }; - - /** - * Retrieve option value - * - * @param {string} key - * @return {Object} value - * @api private - */ - - _getOptionValue(key) { - if (this._storeOptionsAsProperties) { - return this[key]; - } - return this._optionValues[key]; - }; - - /** - * Parse `argv`, setting options and invoking commands when defined. - * - * The default expectation is that the arguments are from node and have the application as argv[0] - * and the script being run in argv[1], with user parameters after that. - * - * Examples: - * - * program.parse(process.argv); - * program.parse(); // implicitly use process.argv and auto-detect node vs electron conventions - * program.parse(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0] - * - * @param {string[]} [argv] - optional, defaults to process.argv - * @param {Object} [parseOptions] - optionally specify style of options with from: node/user/electron - * @param {string} [parseOptions.from] - where the args are from: 'node', 'user', 'electron' - * @return {Command} `this` command for chaining - * @api public - */ - - parse(argv, parseOptions) { - if (argv !== undefined && !Array.isArray(argv)) { - throw new Error('first parameter to parse must be array or undefined'); - } - parseOptions = parseOptions || {}; - - // Default to using process.argv - if (argv === undefined) { - argv = process.argv; - // @ts-ignore - if (process.versions && process.versions.electron) { - parseOptions.from = 'electron'; - } - } - this.rawArgs = argv.slice(); - - // make it a little easier for callers by supporting various argv conventions - let userArgs; - switch (parseOptions.from) { - case undefined: - case 'node': - this._scriptPath = argv[1]; - userArgs = argv.slice(2); - break; - case 'electron': - // @ts-ignore - if (process.defaultApp) { - this._scriptPath = argv[1]; - userArgs = argv.slice(2); - } else { - userArgs = argv.slice(1); - } - break; - case 'user': - userArgs = argv.slice(0); - break; - default: - throw new Error(`unexpected parse option { from: '${parseOptions.from}' }`); - } - if (!this._scriptPath && process.mainModule) { - this._scriptPath = process.mainModule.filename; - } - - // Guess name, used in usage in help. - this._name = this._name || (this._scriptPath && path.basename(this._scriptPath, path.extname(this._scriptPath))); - - // Let's go! - this._parseCommand([], userArgs); - - return this; - }; - - /** - * Parse `argv`, setting options and invoking commands when defined. - * - * Use parseAsync instead of parse if any of your action handlers are async. Returns a Promise. - * - * The default expectation is that the arguments are from node and have the application as argv[0] - * and the script being run in argv[1], with user parameters after that. - * - * Examples: - * - * program.parseAsync(process.argv); - * program.parseAsync(); // implicitly use process.argv and auto-detect node vs electron conventions - * program.parseAsync(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0] - * - * @param {string[]} [argv] - * @param {Object} [parseOptions] - * @param {string} parseOptions.from - where the args are from: 'node', 'user', 'electron' - * @return {Promise} - * @api public - */ - - parseAsync(argv, parseOptions) { - this.parse(argv, parseOptions); - return Promise.all(this._actionResults).then(() => this); - }; - - /** - * Execute a sub-command executable. - * - * @api private - */ - - _executeSubCommand(subcommand, args) { - args = args.slice(); - let launchWithNode = false; // Use node for source targets so do not need to get permissions correct, and on Windows. - const sourceExt = ['.js', '.ts', '.tsx', '.mjs']; - - // Not checking for help first. Unlikely to have mandatory and executable, and can't robustly test for help flags in external command. - this._checkForMissingMandatoryOptions(); - - // Want the entry script as the reference for command name and directory for searching for other files. - let scriptPath = this._scriptPath; - // Fallback in case not set, due to how Command created or called. - if (!scriptPath && process.mainModule) { - scriptPath = process.mainModule.filename; - } - - let baseDir; - try { - const resolvedLink = fs.realpathSync(scriptPath); - baseDir = path.dirname(resolvedLink); - } catch (e) { - baseDir = '.'; // dummy, probably not going to find executable! - } - - // name of the subcommand, like `pm-install` - let bin = path.basename(scriptPath, path.extname(scriptPath)) + '-' + subcommand._name; - if (subcommand._executableFile) { - bin = subcommand._executableFile; - } - - const localBin = path.join(baseDir, bin); - if (fs.existsSync(localBin)) { - // prefer local `./` to bin in the $PATH - bin = localBin; - } else { - // Look for source files. - sourceExt.forEach((ext) => { - if (fs.existsSync(`${localBin}${ext}`)) { - bin = `${localBin}${ext}`; - } - }); - } - launchWithNode = sourceExt.includes(path.extname(bin)); - - let proc; - if (process.platform !== 'win32') { - if (launchWithNode) { - args.unshift(bin); - // add executable arguments to spawn - args = incrementNodeInspectorPort(process.execArgv).concat(args); - - proc = spawn(process.argv[0], args, { stdio: 'inherit' }); - } else { - proc = spawn(bin, args, { stdio: 'inherit' }); - } - } else { - args.unshift(bin); - // add executable arguments to spawn - args = incrementNodeInspectorPort(process.execArgv).concat(args); - proc = spawn(process.execPath, args, { stdio: 'inherit' }); - } - - const signals = ['SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGINT', 'SIGHUP']; - signals.forEach((signal) => { - // @ts-ignore - process.on(signal, () => { - if (proc.killed === false && proc.exitCode === null) { - proc.kill(signal); - } - }); - }); - - // By default terminate process when spawned process terminates. - // Suppressing the exit if exitCallback defined is a bit messy and of limited use, but does allow process to stay running! - const exitCallback = this._exitCallback; - if (!exitCallback) { - proc.on('close', process.exit.bind(process)); - } else { - proc.on('close', () => { - exitCallback(new CommanderError(process.exitCode || 0, 'commander.executeSubCommandAsync', '(close)')); - }); - } - proc.on('error', (err) => { - // @ts-ignore - if (err.code === 'ENOENT') { - const executableMissing = `'${bin}' does not exist - - if '${subcommand._name}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead - - if the default executable name is not suitable, use the executableFile option to supply a custom name`; - throw new Error(executableMissing); - // @ts-ignore - } else if (err.code === 'EACCES') { - throw new Error(`'${bin}' not executable`); - } - if (!exitCallback) { - process.exit(1); - } else { - const wrappedError = new CommanderError(1, 'commander.executeSubCommandAsync', '(error)'); - wrappedError.nestedError = err; - exitCallback(wrappedError); - } - }); - - // Store the reference to the child process - this.runningCommand = proc; - }; - - /** - * @api private - */ - _dispatchSubcommand(commandName, operands, unknown) { - const subCommand = this._findCommand(commandName); - if (!subCommand) this._helpAndError(); - - if (subCommand._executableHandler) { - this._executeSubCommand(subCommand, operands.concat(unknown)); - } else { - subCommand._parseCommand(operands, unknown); - } - }; - - /** - * Process arguments in context of this command. - * - * @api private - */ - - _parseCommand(operands, unknown) { - const parsed = this.parseOptions(unknown); - operands = operands.concat(parsed.operands); - unknown = parsed.unknown; - this.args = operands.concat(unknown); - - if (operands && this._findCommand(operands[0])) { - this._dispatchSubcommand(operands[0], operands.slice(1), unknown); - } else if (this._lazyHasImplicitHelpCommand() && operands[0] === this._helpCommandName) { - if (operands.length === 1) { - this.help(); - } else { - this._dispatchSubcommand(operands[1], [], [this._helpLongFlag]); - } - } else if (this._defaultCommandName) { - outputHelpIfRequested(this, unknown); // Run the help for default command from parent rather than passing to default command - this._dispatchSubcommand(this._defaultCommandName, operands, unknown); - } else { - if (this.commands.length && this.args.length === 0 && !this._actionHandler && !this._defaultCommandName) { - // probably missing subcommand and no handler, user needs help - this._helpAndError(); - } - - outputHelpIfRequested(this, parsed.unknown); - this._checkForMissingMandatoryOptions(); - if (parsed.unknown.length > 0) { - this.unknownOption(parsed.unknown[0]); - } - - if (this._actionHandler) { - const args = this.args.slice(); - this._args.forEach((arg, i) => { - if (arg.required && args[i] == null) { - this.missingArgument(arg.name); - } else if (arg.variadic) { - args[i] = args.splice(i); - } - }); - - this._actionHandler(args); - this.emit('command:' + this.name(), operands, unknown); - } else if (operands.length) { - if (this._findCommand('*')) { - this._dispatchSubcommand('*', operands, unknown); - } else if (this.listenerCount('command:*')) { - this.emit('command:*', operands, unknown); - } else if (this.commands.length) { - this.unknownCommand(); - } - } else if (this.commands.length) { - // This command has subcommands and nothing hooked up at this level, so display help. - this._helpAndError(); - } else { - // fall through for caller to handle after calling .parse() - } - } - }; - - /** - * Find matching command. - * - * @api private - */ - _findCommand(name) { - if (!name) return undefined; - return this.commands.find(cmd => cmd._name === name || cmd._aliases.includes(name)); - }; - - /** - * Return an option matching `arg` if any. - * - * @param {string} arg - * @return {Option} - * @api private - */ - - _findOption(arg) { - return this.options.find(option => option.is(arg)); - }; - - /** - * Display an error message if a mandatory option does not have a value. - * Lazy calling after checking for help flags from leaf subcommand. - * - * @api private - */ - - _checkForMissingMandatoryOptions() { - // Walk up hierarchy so can call in subcommand after checking for displaying help. - for (let cmd = this; cmd; cmd = cmd.parent) { - cmd.options.forEach((anOption) => { - if (anOption.mandatory && (cmd._getOptionValue(anOption.attributeName()) === undefined)) { - cmd.missingMandatoryOptionValue(anOption); - } - }); - } - }; - - /** - * Parse options from `argv` removing known options, - * and return argv split into operands and unknown arguments. - * - * Examples: - * - * argv => operands, unknown - * --known kkk op => [op], [] - * op --known kkk => [op], [] - * sub --unknown uuu op => [sub], [--unknown uuu op] - * sub -- --unknown uuu op => [sub --unknown uuu op], [] - * - * @param {String[]} argv - * @return {{operands: String[], unknown: String[]}} - * @api public - */ - - parseOptions(argv) { - const operands = []; // operands, not options or values - const unknown = []; // first unknown option and remaining unknown args - let dest = operands; - const args = argv.slice(); - - function maybeOption(arg) { - return arg.length > 1 && arg[0] === '-'; - } - - // parse options - let activeVariadicOption = null; - while (args.length) { - const arg = args.shift(); - - // literal - if (arg === '--') { - if (dest === unknown) dest.push(arg); - dest.push(...args); - break; - } - - if (activeVariadicOption && !maybeOption(arg)) { - this.emit(`option:${activeVariadicOption.name()}`, arg); - continue; - } - activeVariadicOption = null; - - if (maybeOption(arg)) { - const option = this._findOption(arg); - // recognised option, call listener to assign value with possible custom processing - if (option) { - if (option.required) { - const value = args.shift(); - if (value === undefined) this.optionMissingArgument(option); - this.emit(`option:${option.name()}`, value); - } else if (option.optional) { - let value = null; - // historical behaviour is optional value is following arg unless an option - if (args.length > 0 && !maybeOption(args[0])) { - value = args.shift(); - } - this.emit(`option:${option.name()}`, value); - } else { // boolean flag - this.emit(`option:${option.name()}`); - } - activeVariadicOption = option.variadic ? option : null; - continue; - } - } - - // Look for combo options following single dash, eat first one if known. - if (arg.length > 2 && arg[0] === '-' && arg[1] !== '-') { - const option = this._findOption(`-${arg[1]}`); - if (option) { - if (option.required || (option.optional && this._combineFlagAndOptionalValue)) { - // option with value following in same argument - this.emit(`option:${option.name()}`, arg.slice(2)); - } else { - // boolean option, emit and put back remainder of arg for further processing - this.emit(`option:${option.name()}`); - args.unshift(`-${arg.slice(2)}`); - } - continue; - } - } - - // Look for known long flag with value, like --foo=bar - if (/^--[^=]+=/.test(arg)) { - const index = arg.indexOf('='); - const option = this._findOption(arg.slice(0, index)); - if (option && (option.required || option.optional)) { - this.emit(`option:${option.name()}`, arg.slice(index + 1)); - continue; - } - } - - // looks like an option but unknown, unknowns from here - if (arg.length > 1 && arg[0] === '-') { - dest = unknown; - } - - // add arg - dest.push(arg); - } - - return { operands, unknown }; - }; - - /** - * Return an object containing options as key-value pairs - * - * @return {Object} - * @api public - */ - opts() { - if (this._storeOptionsAsProperties) { - // Preserve original behaviour so backwards compatible when still using properties - const result = {}; - const len = this.options.length; - - for (let i = 0; i < len; i++) { - const key = this.options[i].attributeName(); - result[key] = key === this._versionOptionName ? this._version : this[key]; - } - return result; - } - - return this._optionValues; - }; - - /** - * Argument `name` is missing. - * - * @param {string} name - * @api private - */ - - missingArgument(name) { - const message = `error: missing required argument '${name}'`; - console.error(message); - this._exit(1, 'commander.missingArgument', message); - }; - - /** - * `Option` is missing an argument, but received `flag` or nothing. - * - * @param {Option} option - * @param {string} [flag] - * @api private - */ - - optionMissingArgument(option, flag) { - let message; - if (flag) { - message = `error: option '${option.flags}' argument missing, got '${flag}'`; - } else { - message = `error: option '${option.flags}' argument missing`; - } - console.error(message); - this._exit(1, 'commander.optionMissingArgument', message); - }; - - /** - * `Option` does not have a value, and is a mandatory option. - * - * @param {Option} option - * @api private - */ - - missingMandatoryOptionValue(option) { - const message = `error: required option '${option.flags}' not specified`; - console.error(message); - this._exit(1, 'commander.missingMandatoryOptionValue', message); - }; - - /** - * Unknown option `flag`. - * - * @param {string} flag - * @api private - */ - - unknownOption(flag) { - if (this._allowUnknownOption) return; - const message = `error: unknown option '${flag}'`; - console.error(message); - this._exit(1, 'commander.unknownOption', message); - }; - - /** - * Unknown command. - * - * @api private - */ - - unknownCommand() { - const partCommands = [this.name()]; - for (let parentCmd = this.parent; parentCmd; parentCmd = parentCmd.parent) { - partCommands.unshift(parentCmd.name()); - } - const fullCommand = partCommands.join(' '); - const message = `error: unknown command '${this.args[0]}'.` + - (this._hasHelpOption ? ` See '${fullCommand} ${this._helpLongFlag}'.` : ''); - console.error(message); - this._exit(1, 'commander.unknownCommand', message); - }; - - /** - * Set the program version to `str`. - * - * This method auto-registers the "-V, --version" flag - * which will print the version number when passed. - * - * You can optionally supply the flags and description to override the defaults. - * - * @param {string} str - * @param {string} [flags] - * @param {string} [description] - * @return {this | string} `this` command for chaining, or version string if no arguments - * @api public - */ - - version(str, flags, description) { - if (str === undefined) return this._version; - this._version = str; - flags = flags || '-V, --version'; - description = description || 'output the version number'; - const versionOption = new Option(flags, description); - this._versionOptionName = versionOption.attributeName(); - this.options.push(versionOption); - this.on('option:' + versionOption.name(), () => { - process.stdout.write(str + '\n'); - this._exit(0, 'commander.version', str); - }); - return this; - }; - - /** - * Set the description to `str`. - * - * @param {string} str - * @param {Object} [argsDescription] - * @return {string|Command} - * @api public - */ - - description(str, argsDescription) { - if (str === undefined && argsDescription === undefined) return this._description; - this._description = str; - this._argsDescription = argsDescription; - return this; - }; - - /** - * Set an alias for the command. - * - * You may call more than once to add multiple aliases. Only the first alias is shown in the auto-generated help. - * - * @param {string} [alias] - * @return {string|Command} - * @api public - */ - - alias(alias) { - if (alias === undefined) return this._aliases[0]; // just return first, for backwards compatibility - - let command = this; - if (this.commands.length !== 0 && this.commands[this.commands.length - 1]._executableHandler) { - // assume adding alias for last added executable subcommand, rather than this - command = this.commands[this.commands.length - 1]; - } - - if (alias === command._name) throw new Error('Command alias can\'t be the same as its name'); - - command._aliases.push(alias); - return this; - }; - - /** - * Set aliases for the command. - * - * Only the first alias is shown in the auto-generated help. - * - * @param {string[]} [aliases] - * @return {string[]|Command} - * @api public - */ - - aliases(aliases) { - // Getter for the array of aliases is the main reason for having aliases() in addition to alias(). - if (aliases === undefined) return this._aliases; - - aliases.forEach((alias) => this.alias(alias)); - return this; - }; - - /** - * Set / get the command usage `str`. - * - * @param {string} [str] - * @return {String|Command} - * @api public - */ - - usage(str) { - if (str === undefined) { - if (this._usage) return this._usage; - - const args = this._args.map((arg) => { - return humanReadableArgName(arg); - }); - return [].concat( - (this.options.length || this._hasHelpOption ? '[options]' : []), - (this.commands.length ? '[command]' : []), - (this._args.length ? args : []) - ).join(' '); - } - - this._usage = str; - return this; - }; - - /** - * Get or set the name of the command - * - * @param {string} [str] - * @return {String|Command} - * @api public - */ - - name(str) { - if (str === undefined) return this._name; - this._name = str; - return this; - }; - - /** - * Return prepared commands. - * - * @return {Array} - * @api private - */ - - prepareCommands() { - const commandDetails = this.commands.filter((cmd) => { - return !cmd._hidden; - }).map((cmd) => { - const args = cmd._args.map((arg) => { - return humanReadableArgName(arg); - }).join(' '); - - return [ - cmd._name + - (cmd._aliases[0] ? '|' + cmd._aliases[0] : '') + - (cmd.options.length ? ' [options]' : '') + - (args ? ' ' + args : ''), - cmd._description - ]; - }); - - if (this._lazyHasImplicitHelpCommand()) { - commandDetails.push([this._helpCommandnameAndArgs, this._helpCommandDescription]); - } - return commandDetails; - }; - - /** - * Return the largest command length. - * - * @return {number} - * @api private - */ - - largestCommandLength() { - const commands = this.prepareCommands(); - return commands.reduce((max, command) => { - return Math.max(max, command[0].length); - }, 0); - }; - - /** - * Return the largest option length. - * - * @return {number} - * @api private - */ - - largestOptionLength() { - const options = [].slice.call(this.options); - options.push({ - flags: this._helpFlags - }); - - return options.reduce((max, option) => { - return Math.max(max, option.flags.length); - }, 0); - }; - - /** - * Return the largest arg length. - * - * @return {number} - * @api private - */ - - largestArgLength() { - return this._args.reduce((max, arg) => { - return Math.max(max, arg.name.length); - }, 0); - }; - - /** - * Return the pad width. - * - * @return {number} - * @api private - */ - - padWidth() { - let width = this.largestOptionLength(); - if (this._argsDescription && this._args.length) { - if (this.largestArgLength() > width) { - width = this.largestArgLength(); - } - } - - if (this.commands && this.commands.length) { - if (this.largestCommandLength() > width) { - width = this.largestCommandLength(); - } - } - - return width; - }; - - /** - * Return help for options. - * - * @return {string} - * @api private - */ - - optionHelp() { - const width = this.padWidth(); - const columns = process.stdout.columns || 80; - const descriptionWidth = columns - width - 4; - function padOptionDetails(flags, description) { - return pad(flags, width) + ' ' + optionalWrap(description, descriptionWidth, width + 2); - }; - - // Explicit options (including version) - const help = this.options.map((option) => { - const fullDesc = option.description + - ((!option.negate && option.defaultValue !== undefined) ? ' (default: ' + JSON.stringify(option.defaultValue) + ')' : ''); - return padOptionDetails(option.flags, fullDesc); - }); - - // Implicit help - const showShortHelpFlag = this._hasHelpOption && this._helpShortFlag && !this._findOption(this._helpShortFlag); - const showLongHelpFlag = this._hasHelpOption && !this._findOption(this._helpLongFlag); - if (showShortHelpFlag || showLongHelpFlag) { - let helpFlags = this._helpFlags; - if (!showShortHelpFlag) { - helpFlags = this._helpLongFlag; - } else if (!showLongHelpFlag) { - helpFlags = this._helpShortFlag; - } - help.push(padOptionDetails(helpFlags, this._helpDescription)); - } - - return help.join('\n'); - }; - - /** - * Return command help documentation. - * - * @return {string} - * @api private - */ - - commandHelp() { - if (!this.commands.length && !this._lazyHasImplicitHelpCommand()) return ''; - - const commands = this.prepareCommands(); - const width = this.padWidth(); - - const columns = process.stdout.columns || 80; - const descriptionWidth = columns - width - 4; - - return [ - 'Commands:', - commands.map((cmd) => { - const desc = cmd[1] ? ' ' + cmd[1] : ''; - return (desc ? pad(cmd[0], width) : cmd[0]) + optionalWrap(desc, descriptionWidth, width + 2); - }).join('\n').replace(/^/gm, ' '), - '' - ].join('\n'); - }; - - /** - * Return program help documentation. - * - * @return {string} - * @api public - */ - - helpInformation() { - let desc = []; - if (this._description) { - desc = [ - this._description, - '' - ]; - - const argsDescription = this._argsDescription; - if (argsDescription && this._args.length) { - const width = this.padWidth(); - const columns = process.stdout.columns || 80; - const descriptionWidth = columns - width - 5; - desc.push('Arguments:'); - this._args.forEach((arg) => { - desc.push(' ' + pad(arg.name, width) + ' ' + wrap(argsDescription[arg.name] || '', descriptionWidth, width + 4)); - }); - desc.push(''); - } - } - - let cmdName = this._name; - if (this._aliases[0]) { - cmdName = cmdName + '|' + this._aliases[0]; - } - let parentCmdNames = ''; - for (let parentCmd = this.parent; parentCmd; parentCmd = parentCmd.parent) { - parentCmdNames = parentCmd.name() + ' ' + parentCmdNames; - } - const usage = [ - 'Usage: ' + parentCmdNames + cmdName + ' ' + this.usage(), - '' - ]; - - let cmds = []; - const commandHelp = this.commandHelp(); - if (commandHelp) cmds = [commandHelp]; - - let options = []; - if (this._hasHelpOption || this.options.length > 0) { - options = [ - 'Options:', - '' + this.optionHelp().replace(/^/gm, ' '), - '' - ]; - } - - return usage - .concat(desc) - .concat(options) - .concat(cmds) - .join('\n'); - }; - - /** - * Output help information for this command. - * - * When listener(s) are available for the helpLongFlag - * those callbacks are invoked. - * - * @api public - */ - - outputHelp(cb) { - if (!cb) { - cb = (passthru) => { - return passthru; - }; - } - const cbOutput = cb(this.helpInformation()); - if (typeof cbOutput !== 'string' && !Buffer.isBuffer(cbOutput)) { - throw new Error('outputHelp callback must return a string or a Buffer'); - } - process.stdout.write(cbOutput); - this.emit(this._helpLongFlag); - }; - - /** - * You can pass in flags and a description to override the help - * flags and help description for your command. Pass in false to - * disable the built-in help option. - * - * @param {string | boolean} [flags] - * @param {string} [description] - * @return {Command} `this` command for chaining - * @api public - */ - - helpOption(flags, description) { - if (typeof flags === 'boolean') { - this._hasHelpOption = flags; - return this; - } - this._helpFlags = flags || this._helpFlags; - this._helpDescription = description || this._helpDescription; - - const helpFlags = _parseOptionFlags(this._helpFlags); - this._helpShortFlag = helpFlags.shortFlag; - this._helpLongFlag = helpFlags.longFlag; - - return this; - }; - - /** - * Output help information and exit. - * - * @param {Function} [cb] - * @api public - */ - - help(cb) { - this.outputHelp(cb); - // exitCode: preserving original behaviour which was calling process.exit() - // message: do not have all displayed text available so only passing placeholder. - this._exit(process.exitCode || 0, 'commander.help', '(outputHelp)'); - }; - - /** - * Output help information and exit. Display for error situations. - * - * @api private - */ - - _helpAndError() { - this.outputHelp(); - // message: do not have all displayed text available so only passing placeholder. - this._exit(1, 'commander.help', '(outputHelp)'); - }; -}; - -/** - * Expose the root command. - */ - -exports = module.exports = new Command(); -exports.program = exports; // More explicit access to global command. - -/** - * Expose classes - */ - -exports.Command = Command; -exports.Option = Option; -exports.CommanderError = CommanderError; - -/** - * Camel-case the given `flag` - * - * @param {string} flag - * @return {string} - * @api private - */ - -function camelcase(flag) { - return flag.split('-').reduce((str, word) => { - return str + word[0].toUpperCase() + word.slice(1); - }); -} - -/** - * Pad `str` to `width`. - * - * @param {string} str - * @param {number} width - * @return {string} - * @api private - */ - -function pad(str, width) { - const len = Math.max(0, width - str.length); - return str + Array(len + 1).join(' '); -} - -/** - * Wraps the given string with line breaks at the specified width while breaking - * words and indenting every but the first line on the left. - * - * @param {string} str - * @param {number} width - * @param {number} indent - * @return {string} - * @api private - */ -function wrap(str, width, indent) { - const regex = new RegExp('.{1,' + (width - 1) + '}([\\s\u200B]|$)|[^\\s\u200B]+?([\\s\u200B]|$)', 'g'); - const lines = str.match(regex) || []; - return lines.map((line, i) => { - if (line.slice(-1) === '\n') { - line = line.slice(0, line.length - 1); - } - return ((i > 0 && indent) ? Array(indent + 1).join(' ') : '') + line.trimRight(); - }).join('\n'); -} - -/** - * Optionally wrap the given str to a max width of width characters per line - * while indenting with indent spaces. Do not wrap if insufficient width or - * string is manually formatted. - * - * @param {string} str - * @param {number} width - * @param {number} indent - * @return {string} - * @api private - */ -function optionalWrap(str, width, indent) { - // Detect manually wrapped and indented strings by searching for line breaks - // followed by multiple spaces/tabs. - if (str.match(/[\n]\s+/)) return str; - // Do not wrap to narrow columns (or can end up with a word per line). - const minWidth = 40; - if (width < minWidth) return str; - - return wrap(str, width, indent); -} - -/** - * Output help information if help flags specified - * - * @param {Command} cmd - command to output help for - * @param {Array} args - array of options to search for help flags - * @api private - */ - -function outputHelpIfRequested(cmd, args) { - const helpOption = cmd._hasHelpOption && args.find(arg => arg === cmd._helpLongFlag || arg === cmd._helpShortFlag); - if (helpOption) { - cmd.outputHelp(); - // (Do not have all displayed text available so only passing placeholder.) - cmd._exit(0, 'commander.helpDisplayed', '(outputHelp)'); - } -} - -/** - * Takes an argument and returns its human readable equivalent for help usage. - * - * @param {Object} arg - * @return {string} - * @api private - */ - -function humanReadableArgName(arg) { - const nameOutput = arg.name + (arg.variadic === true ? '...' : ''); - - return arg.required - ? '<' + nameOutput + '>' - : '[' + nameOutput + ']'; -} - -/** - * Parse the short and long flag out of something like '-m,--mixed ' - * - * @api private - */ - -function _parseOptionFlags(flags) { - let shortFlag; - let longFlag; - // Use original very loose parsing to maintain backwards compatibility for now, - // which allowed for example unintended `-sw, --short-word` [sic]. - const flagParts = flags.split(/[ |,]+/); - if (flagParts.length > 1 && !/^[[<]/.test(flagParts[1])) shortFlag = flagParts.shift(); - longFlag = flagParts.shift(); - // Add support for lone short flag without significantly changing parsing! - if (!shortFlag && /^-[^-]$/.test(longFlag)) { - shortFlag = longFlag; - longFlag = undefined; - } - return { shortFlag, longFlag }; -} - -/** - * Scan arguments and increment port number for inspect calls (to avoid conflicts when spawning new command). - * - * @param {string[]} args - array of arguments from node.execArgv - * @returns {string[]} - * @api private - */ - -function incrementNodeInspectorPort(args) { - // Testing for these options: - // --inspect[=[host:]port] - // --inspect-brk[=[host:]port] - // --inspect-port=[host:]port - return args.map((arg) => { - if (!arg.startsWith('--inspect')) { - return arg; - } - let debugOption; - let debugHost = '127.0.0.1'; - let debugPort = '9229'; - let match; - if ((match = arg.match(/^(--inspect(-brk)?)$/)) !== null) { - // e.g. --inspect - debugOption = match[1]; - } else if ((match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/)) !== null) { - debugOption = match[1]; - if (/^\d+$/.test(match[3])) { - // e.g. --inspect=1234 - debugPort = match[3]; - } else { - // e.g. --inspect=localhost - debugHost = match[3]; - } - } else if ((match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/)) !== null) { - // e.g. --inspect=localhost:1234 - debugOption = match[1]; - debugHost = match[3]; - debugPort = match[4]; - } - - if (debugOption && debugPort !== '0') { - return `${debugOption}=${debugHost}:${parseInt(debugPort) + 1}`; - } - return arg; - }); -} diff --git a/node_modules/commander/package.json b/node_modules/commander/package.json deleted file mode 100644 index 69a67b9..0000000 --- a/node_modules/commander/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "commander", - "version": "6.2.1", - "description": "the complete solution for node.js command-line programs", - "keywords": [ - "commander", - "command", - "option", - "parser", - "cli", - "argument", - "args", - "argv" - ], - "author": "TJ Holowaychuk ", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/tj/commander.js.git" - }, - "scripts": { - "lint": "eslint index.js \"tests/**/*.js\"", - "typescript-lint": "eslint typings/*.ts", - "test": "jest && npm run test-typings", - "test-typings": "tsc -p tsconfig.json" - }, - "main": "index", - "files": [ - "index.js", - "typings/index.d.ts" - ], - "dependencies": {}, - "devDependencies": { - "@types/jest": "^26.0.15", - "@types/node": "^14.14.2", - "@typescript-eslint/eslint-plugin": "^4.5.0", - "eslint": "^7.11.0", - "eslint-config-standard-with-typescript": "^19.0.1", - "eslint-plugin-jest": "^24.1.0", - "jest": "^26.6.0", - "standard": "^15.0.0", - "typescript": "^4.0.3" - }, - "typings": "typings/index.d.ts", - "jest": { - "collectCoverage": true - }, - "engines": { - "node": ">= 6" - } -} diff --git a/node_modules/commander/typings/index.d.ts b/node_modules/commander/typings/index.d.ts deleted file mode 100644 index 479446d..0000000 --- a/node_modules/commander/typings/index.d.ts +++ /dev/null @@ -1,410 +0,0 @@ -// Type definitions for commander -// Original definitions by: Alan Agius , Marcelo Dezem , vvakame , Jules Randolph - -declare namespace commander { - - interface CommanderError extends Error { - code: string; - exitCode: number; - message: string; - nestedError?: string; - } - type CommanderErrorConstructor = new (exitCode: number, code: string, message: string) => CommanderError; - - interface Option { - flags: string; - required: boolean; // A value must be supplied when the option is specified. - optional: boolean; // A value is optional when the option is specified. - mandatory: boolean; // The option must have a value after parsing, which usually means it must be specified on command line. - bool: boolean; - short?: string; - long: string; - description: string; - } - type OptionConstructor = new (flags: string, description?: string) => Option; - - interface ParseOptions { - from: 'node' | 'electron' | 'user'; - } - - interface Command { - [key: string]: any; // options as properties - - args: string[]; - - commands: Command[]; - - /** - * Set the program version to `str`. - * - * This method auto-registers the "-V, --version" flag - * which will print the version number when passed. - * - * You can optionally supply the flags and description to override the defaults. - */ - version(str: string, flags?: string, description?: string): this; - - /** - * Define a command, implemented using an action handler. - * - * @remarks - * The command description is supplied using `.description`, not as a parameter to `.command`. - * - * @example - * ```ts - * program - * .command('clone [destination]') - * .description('clone a repository into a newly created directory') - * .action((source, destination) => { - * console.log('clone command called'); - * }); - * ``` - * - * @param nameAndArgs - command name and arguments, args are `` or `[optional]` and last may also be `variadic...` - * @param opts - configuration options - * @returns new command - */ - command(nameAndArgs: string, opts?: CommandOptions): ReturnType; - /** - * Define a command, implemented in a separate executable file. - * - * @remarks - * The command description is supplied as the second parameter to `.command`. - * - * @example - * ```ts - * program - * .command('start ', 'start named service') - * .command('stop [service]', 'stop named service, or all if no name supplied'); - * ``` - * - * @param nameAndArgs - command name and arguments, args are `` or `[optional]` and last may also be `variadic...` - * @param description - description of executable command - * @param opts - configuration options - * @returns `this` command for chaining - */ - command(nameAndArgs: string, description: string, opts?: commander.ExecutableCommandOptions): this; - - /** - * Factory routine to create a new unattached command. - * - * See .command() for creating an attached subcommand, which uses this routine to - * create the command. You can override createCommand to customise subcommands. - */ - createCommand(name?: string): Command; - - /** - * Add a prepared subcommand. - * - * See .command() for creating an attached subcommand which inherits settings from its parent. - * - * @returns `this` command for chaining - */ - addCommand(cmd: Command, opts?: CommandOptions): this; - - /** - * Define argument syntax for command. - * - * @returns `this` command for chaining - */ - arguments(desc: string): this; - - /** - * Override default decision whether to add implicit help command. - * - * addHelpCommand() // force on - * addHelpCommand(false); // force off - * addHelpCommand('help [cmd]', 'display help for [cmd]'); // force on with custom details - * - * @returns `this` command for chaining - */ - addHelpCommand(enableOrNameAndArgs?: string | boolean, description?: string): this; - - /** - * Register callback to use as replacement for calling process.exit. - */ - exitOverride(callback?: (err: CommanderError) => never|void): this; - - /** - * Register callback `fn` for the command. - * - * @example - * program - * .command('help') - * .description('display verbose help') - * .action(function() { - * // output help here - * }); - * - * @returns `this` command for chaining - */ - action(fn: (...args: any[]) => void | Promise): this; - - /** - * Define option with `flags`, `description` and optional - * coercion `fn`. - * - * The `flags` string should contain both the short and long flags, - * separated by comma, a pipe or space. The following are all valid - * all will output this way when `--help` is used. - * - * "-p, --pepper" - * "-p|--pepper" - * "-p --pepper" - * - * @example - * // simple boolean defaulting to false - * program.option('-p, --pepper', 'add pepper'); - * - * --pepper - * program.pepper - * // => Boolean - * - * // simple boolean defaulting to true - * program.option('-C, --no-cheese', 'remove cheese'); - * - * program.cheese - * // => true - * - * --no-cheese - * program.cheese - * // => false - * - * // required argument - * program.option('-C, --chdir ', 'change the working directory'); - * - * --chdir /tmp - * program.chdir - * // => "/tmp" - * - * // optional argument - * program.option('-c, --cheese [type]', 'add cheese [marble]'); - * - * @returns `this` command for chaining - */ - option(flags: string, description?: string, defaultValue?: string | boolean): this; - option(flags: string, description: string, regexp: RegExp, defaultValue?: string | boolean): this; - option(flags: string, description: string, fn: (value: string, previous: T) => T, defaultValue?: T): this; - - /** - * Define a required option, which must have a value after parsing. This usually means - * the option must be specified on the command line. (Otherwise the same as .option().) - * - * The `flags` string should contain both the short and long flags, separated by comma, a pipe or space. - */ - requiredOption(flags: string, description?: string, defaultValue?: string | boolean): this; - requiredOption(flags: string, description: string, regexp: RegExp, defaultValue?: string | boolean): this; - requiredOption(flags: string, description: string, fn: (value: string, previous: T) => T, defaultValue?: T): this; - - /** - * Whether to store option values as properties on command object, - * or store separately (specify false). In both cases the option values can be accessed using .opts(). - * - * @returns `this` command for chaining - */ - storeOptionsAsProperties(value?: boolean): this; - - /** - * Whether to pass command to action handler, - * or just the options (specify false). - * - * @returns `this` command for chaining - */ - passCommandToAction(value?: boolean): this; - - /** - * Alter parsing of short flags with optional values. - * - * @example - * // for `.option('-f,--flag [value]'): - * .combineFlagAndOptionalValue(true) // `-f80` is treated like `--flag=80`, this is the default behaviour - * .combineFlagAndOptionalValue(false) // `-fb` is treated like `-f -b` - * - * @returns `this` command for chaining - */ - combineFlagAndOptionalValue(arg?: boolean): this; - - /** - * Allow unknown options on the command line. - * - * @param [arg] if `true` or omitted, no error will be thrown for unknown options. - * @returns `this` command for chaining - */ - allowUnknownOption(arg?: boolean): this; - - /** - * Parse `argv`, setting options and invoking commands when defined. - * - * The default expectation is that the arguments are from node and have the application as argv[0] - * and the script being run in argv[1], with user parameters after that. - * - * Examples: - * - * program.parse(process.argv); - * program.parse(); // implicitly use process.argv and auto-detect node vs electron conventions - * program.parse(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0] - * - * @returns `this` command for chaining - */ - parse(argv?: string[], options?: ParseOptions): this; - - /** - * Parse `argv`, setting options and invoking commands when defined. - * - * Use parseAsync instead of parse if any of your action handlers are async. Returns a Promise. - * - * The default expectation is that the arguments are from node and have the application as argv[0] - * and the script being run in argv[1], with user parameters after that. - * - * Examples: - * - * program.parseAsync(process.argv); - * program.parseAsync(); // implicitly use process.argv and auto-detect node vs electron conventions - * program.parseAsync(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0] - * - * @returns Promise - */ - parseAsync(argv?: string[], options?: ParseOptions): Promise; - - /** - * Parse options from `argv` removing known options, - * and return argv split into operands and unknown arguments. - * - * @example - * argv => operands, unknown - * --known kkk op => [op], [] - * op --known kkk => [op], [] - * sub --unknown uuu op => [sub], [--unknown uuu op] - * sub -- --unknown uuu op => [sub --unknown uuu op], [] - */ - parseOptions(argv: string[]): commander.ParseOptionsResult; - - /** - * Return an object containing options as key-value pairs - */ - opts(): { [key: string]: any }; - - /** - * Set the description. - * - * @returns `this` command for chaining - */ - description(str: string, argsDescription?: {[argName: string]: string}): this; - /** - * Get the description. - */ - description(): string; - - /** - * Set an alias for the command. - * - * You may call more than once to add multiple aliases. Only the first alias is shown in the auto-generated help. - * - * @returns `this` command for chaining - */ - alias(alias: string): this; - /** - * Get alias for the command. - */ - alias(): string; - - /** - * Set aliases for the command. - * - * Only the first alias is shown in the auto-generated help. - * - * @returns `this` command for chaining - */ - aliases(aliases: string[]): this; - /** - * Get aliases for the command. - */ - aliases(): string[]; - - /** - * Set the command usage. - * - * @returns `this` command for chaining - */ - usage(str: string): this; - /** - * Get the command usage. - */ - usage(): string; - - /** - * Set the name of the command. - * - * @returns `this` command for chaining - */ - name(str: string): this; - /** - * Get the name of the command. - */ - name(): string; - - /** - * Output help information for this command. - * - * When listener(s) are available for the helpLongFlag - * those callbacks are invoked. - */ - outputHelp(cb?: (str: string) => string): void; - - /** - * Return command help documentation. - */ - helpInformation(): string; - - /** - * You can pass in flags and a description to override the help - * flags and help description for your command. Pass in false - * to disable the built-in help option. - */ - helpOption(flags?: string | boolean, description?: string): this; - - /** - * Output help information and exit. - */ - help(cb?: (str: string) => string): never; - - /** - * Add a listener (callback) for when events occur. (Implemented using EventEmitter.) - * - * @example - * program - * .on('--help', () -> { - * console.log('See web site for more information.'); - * }); - */ - on(event: string | symbol, listener: (...args: any[]) => void): this; - } - type CommandConstructor = new (name?: string) => Command; - - interface CommandOptions { - noHelp?: boolean; // old name for hidden - hidden?: boolean; - isDefault?: boolean; - } - interface ExecutableCommandOptions extends CommandOptions { - executableFile?: string; - } - - interface ParseOptionsResult { - operands: string[]; - unknown: string[]; - } - - interface CommanderStatic extends Command { - program: Command; - Command: CommandConstructor; - Option: OptionConstructor; - CommanderError: CommanderErrorConstructor; - } - -} - -// Declaring namespace AND global -// eslint-disable-next-line @typescript-eslint/no-redeclare -declare const commander: commander.CommanderStatic; -export = commander; diff --git a/node_modules/csvtojson/.coveralls.yml b/node_modules/csvtojson/.coveralls.yml deleted file mode 100644 index 56377a6..0000000 --- a/node_modules/csvtojson/.coveralls.yml +++ /dev/null @@ -1 +0,0 @@ -repo_token: heQI90WrL7uiBgb87gsUokB6YqdnSfs6O \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/081f64d5edb0cbe31f73fbc9234d8e0e.json b/node_modules/csvtojson/.nyc_output/081f64d5edb0cbe31f73fbc9234d8e0e.json deleted file mode 100644 index a304cc4..0000000 --- a/node_modules/csvtojson/.nyc_output/081f64d5edb0cbe31f73fbc9234d8e0e.json +++ /dev/null @@ -1 +0,0 @@ -{"/Users/kxiang/work/projects/csv2json/src/CSVError.test.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/CSVError.test.ts","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":6,"column":2}},"1":{"start":{"line":4,"column":2},"end":{"line":5,"column":4}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":20},"end":{"line":3,"column":21}},"loc":{"start":{"line":3,"column":24},"end":{"line":6,"column":1}},"line":3},"1":{"name":"(anonymous_1)","decl":{"start":{"line":4,"column":26},"end":{"line":4,"column":27}},"loc":{"start":{"line":4,"column":30},"end":{"line":5,"column":3}},"line":4}},"branchMap":{},"s":{"0":0,"1":0},"f":{"0":0,"1":0},"b":{}},"/Users/kxiang/work/projects/csv2json/src/dataClean.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/dataClean.ts","statementMap":{"0":{"start":{"line":10,"column":20},"end":{"line":10,"column":51}},"1":{"start":{"line":11,"column":2},"end":{"line":11,"column":36}},"2":{"start":{"line":12,"column":25},"end":{"line":12,"column":76}},"3":{"start":{"line":13,"column":2},"end":{"line":17,"column":3}},"4":{"start":{"line":14,"column":4},"end":{"line":14,"column":36}},"5":{"start":{"line":16,"column":4},"end":{"line":16,"column":26}},"6":{"start":{"line":23,"column":2},"end":{"line":27,"column":3}},"7":{"start":{"line":24,"column":4},"end":{"line":24,"column":57}},"8":{"start":{"line":26,"column":4},"end":{"line":26,"column":17}},"9":{"start":{"line":33,"column":12},"end":{"line":33,"column":28}},"10":{"start":{"line":41,"column":2},"end":{"line":46,"column":3}},"11":{"start":{"line":42,"column":4},"end":{"line":44,"column":5}},"12":{"start":{"line":43,"column":6},"end":{"line":43,"column":12}},"13":{"start":{"line":45,"column":4},"end":{"line":45,"column":10}},"14":{"start":{"line":47,"column":2},"end":{"line":62,"column":3}},"15":{"start":{"line":48,"column":4},"end":{"line":48,"column":49}},"16":{"start":{"line":49,"column":4},"end":{"line":49,"column":34}},"17":{"start":{"line":61,"column":4},"end":{"line":61,"column":17}}},"fnMap":{"0":{"name":"prepareData","decl":{"start":{"line":9,"column":16},"end":{"line":9,"column":27}},"loc":{"start":{"line":9,"column":74},"end":{"line":18,"column":1}},"line":9},"1":{"name":"concatLeftChunk","decl":{"start":{"line":22,"column":9},"end":{"line":22,"column":24}},"loc":{"start":{"line":22,"column":71},"end":{"line":28,"column":1}},"line":22},"2":{"name":"cleanUtf8Split","decl":{"start":{"line":32,"column":9},"end":{"line":32,"column":23}},"loc":{"start":{"line":32,"column":70},"end":{"line":63,"column":1}},"line":32}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":2},"end":{"line":17,"column":3}},"type":"if","locations":[{"start":{"line":13,"column":2},"end":{"line":17,"column":3}},{"start":{"line":13,"column":2},"end":{"line":17,"column":3}}],"line":13},"1":{"loc":{"start":{"line":23,"column":2},"end":{"line":27,"column":3}},"type":"if","locations":[{"start":{"line":23,"column":2},"end":{"line":27,"column":3}},{"start":{"line":23,"column":2},"end":{"line":27,"column":3}}],"line":23},"2":{"loc":{"start":{"line":23,"column":6},"end":{"line":23,"column":63}},"type":"binary-expr","locations":[{"start":{"line":23,"column":6},"end":{"line":23,"column":27}},{"start":{"line":23,"column":31},"end":{"line":23,"column":63}}],"line":23},"3":{"loc":{"start":{"line":41,"column":2},"end":{"line":46,"column":3}},"type":"if","locations":[{"start":{"line":41,"column":2},"end":{"line":46,"column":3}},{"start":{"line":41,"column":2},"end":{"line":46,"column":3}}],"line":41},"4":{"loc":{"start":{"line":47,"column":2},"end":{"line":62,"column":3}},"type":"if","locations":[{"start":{"line":47,"column":2},"end":{"line":62,"column":3}},{"start":{"line":47,"column":2},"end":{"line":62,"column":3}}],"line":47}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0},"f":{"0":0,"1":0,"2":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0]}},"/Users/kxiang/work/projects/csv2json/src/fileline.test.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/fileline.test.ts","statementMap":{"0":{"start":{"line":4,"column":13},"end":{"line":4,"column":30}},"1":{"start":{"line":5,"column":0},"end":{"line":14,"column":3}},"2":{"start":{"line":6,"column":2},"end":{"line":13,"column":5}},"3":{"start":{"line":7,"column":15},"end":{"line":7,"column":30}},"4":{"start":{"line":8,"column":15},"end":{"line":8,"column":28}},"5":{"start":{"line":9,"column":17},"end":{"line":9,"column":55}},"6":{"start":{"line":10,"column":4},"end":{"line":10,"column":41}},"7":{"start":{"line":11,"column":4},"end":{"line":11,"column":41}},"8":{"start":{"line":12,"column":4},"end":{"line":12,"column":43}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":30},"end":{"line":5,"column":31}},"loc":{"start":{"line":5,"column":41},"end":{"line":14,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":48},"end":{"line":6,"column":49}},"loc":{"start":{"line":6,"column":59},"end":{"line":13,"column":3}},"line":6}},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0},"f":{"0":0,"1":0},"b":{}},"/Users/kxiang/work/projects/csv2json/src/fileline.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/fileline.ts","statementMap":{"0":{"start":{"line":11,"column":14},"end":{"line":11,"column":33}},"1":{"start":{"line":12,"column":16},"end":{"line":12,"column":31}},"2":{"start":{"line":13,"column":18},"end":{"line":13,"column":35}},"3":{"start":{"line":14,"column":2},"end":{"line":14,"column":44}}},"fnMap":{"0":{"name":"stringToLines","decl":{"start":{"line":10,"column":16},"end":{"line":10,"column":29}},"loc":{"start":{"line":10,"column":86},"end":{"line":15,"column":1}},"line":10}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":18},"end":{"line":13,"column":35}},"type":"binary-expr","locations":[{"start":{"line":13,"column":18},"end":{"line":13,"column":29}},{"start":{"line":13,"column":33},"end":{"line":13,"column":35}}],"line":13}},"s":{"0":0,"1":0,"2":0,"3":0},"f":{"0":0},"b":{"0":[0,0]}},"/Users/kxiang/work/projects/csv2json/src/getEol.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/getEol.ts","statementMap":{"0":{"start":{"line":4,"column":2},"end":{"line":19,"column":3}},"1":{"start":{"line":5,"column":4},"end":{"line":18,"column":5}},"2":{"start":{"line":6,"column":6},"end":{"line":17,"column":7}},"3":{"start":{"line":7,"column":8},"end":{"line":13,"column":9}},"4":{"start":{"line":8,"column":10},"end":{"line":8,"column":29}},"5":{"start":{"line":9,"column":10},"end":{"line":9,"column":16}},"6":{"start":{"line":10,"column":15},"end":{"line":13,"column":9}},"7":{"start":{"line":11,"column":10},"end":{"line":11,"column":27}},"8":{"start":{"line":12,"column":10},"end":{"line":12,"column":16}},"9":{"start":{"line":14,"column":13},"end":{"line":17,"column":7}},"10":{"start":{"line":15,"column":8},"end":{"line":15,"column":25}},"11":{"start":{"line":16,"column":8},"end":{"line":16,"column":14}},"12":{"start":{"line":20,"column":2},"end":{"line":20,"column":27}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":16}},"loc":{"start":{"line":3,"column":68},"end":{"line":21,"column":1}},"line":3}},"branchMap":{"0":{"loc":{"start":{"line":4,"column":2},"end":{"line":19,"column":3}},"type":"if","locations":[{"start":{"line":4,"column":2},"end":{"line":19,"column":3}},{"start":{"line":4,"column":2},"end":{"line":19,"column":3}}],"line":4},"1":{"loc":{"start":{"line":4,"column":6},"end":{"line":4,"column":24}},"type":"binary-expr","locations":[{"start":{"line":4,"column":6},"end":{"line":4,"column":16}},{"start":{"line":4,"column":20},"end":{"line":4,"column":24}}],"line":4},"2":{"loc":{"start":{"line":6,"column":6},"end":{"line":17,"column":7}},"type":"if","locations":[{"start":{"line":6,"column":6},"end":{"line":17,"column":7}},{"start":{"line":6,"column":6},"end":{"line":17,"column":7}}],"line":6},"3":{"loc":{"start":{"line":7,"column":8},"end":{"line":13,"column":9}},"type":"if","locations":[{"start":{"line":7,"column":8},"end":{"line":13,"column":9}},{"start":{"line":7,"column":8},"end":{"line":13,"column":9}}],"line":7},"4":{"loc":{"start":{"line":10,"column":15},"end":{"line":13,"column":9}},"type":"if","locations":[{"start":{"line":10,"column":15},"end":{"line":13,"column":9}},{"start":{"line":10,"column":15},"end":{"line":13,"column":9}}],"line":10},"5":{"loc":{"start":{"line":14,"column":13},"end":{"line":17,"column":7}},"type":"if","locations":[{"start":{"line":14,"column":13},"end":{"line":17,"column":7}},{"start":{"line":14,"column":13},"end":{"line":17,"column":7}}],"line":14},"6":{"loc":{"start":{"line":20,"column":9},"end":{"line":20,"column":26}},"type":"binary-expr","locations":[{"start":{"line":20,"column":9},"end":{"line":20,"column":18}},{"start":{"line":20,"column":22},"end":{"line":20,"column":26}}],"line":20}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0},"f":{"0":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0]}},"/Users/kxiang/work/projects/csv2json/src/Parameters.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/Parameters.ts","statementMap":{"0":{"start":{"line":83,"column":38},"end":{"line":102,"column":3}},"1":{"start":{"line":103,"column":2},"end":{"line":105,"column":3}},"2":{"start":{"line":104,"column":4},"end":{"line":104,"column":16}},"3":{"start":{"line":106,"column":2},"end":{"line":114,"column":3}},"4":{"start":{"line":107,"column":4},"end":{"line":113,"column":5}},"5":{"start":{"line":108,"column":6},"end":{"line":112,"column":7}},"6":{"start":{"line":109,"column":8},"end":{"line":109,"column":51}},"7":{"start":{"line":111,"column":8},"end":{"line":111,"column":40}},"8":{"start":{"line":115,"column":2},"end":{"line":115,"column":22}}},"fnMap":{"0":{"name":"mergeParams","decl":{"start":{"line":82,"column":16},"end":{"line":82,"column":27}},"loc":{"start":{"line":82,"column":76},"end":{"line":116,"column":1}},"line":82}},"branchMap":{"0":{"loc":{"start":{"line":103,"column":2},"end":{"line":105,"column":3}},"type":"if","locations":[{"start":{"line":103,"column":2},"end":{"line":105,"column":3}},{"start":{"line":103,"column":2},"end":{"line":105,"column":3}}],"line":103},"1":{"loc":{"start":{"line":107,"column":4},"end":{"line":113,"column":5}},"type":"if","locations":[{"start":{"line":107,"column":4},"end":{"line":113,"column":5}},{"start":{"line":107,"column":4},"end":{"line":113,"column":5}}],"line":107},"2":{"loc":{"start":{"line":108,"column":6},"end":{"line":112,"column":7}},"type":"if","locations":[{"start":{"line":108,"column":6},"end":{"line":112,"column":7}},{"start":{"line":108,"column":6},"end":{"line":112,"column":7}}],"line":108}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0},"f":{"0":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0]}},"/Users/kxiang/work/projects/csv2json/src/ParseRuntime.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/ParseRuntime.ts","statementMap":{"0":{"start":{"line":64,"column":17},"end":{"line":64,"column":37}},"1":{"start":{"line":65,"column":28},"end":{"line":82,"column":3}},"2":{"start":{"line":83,"column":2},"end":{"line":85,"column":3}},"3":{"start":{"line":84,"column":4},"end":{"line":84,"column":39}},"4":{"start":{"line":86,"column":2},"end":{"line":88,"column":3}},"5":{"start":{"line":87,"column":4},"end":{"line":87,"column":40}},"6":{"start":{"line":89,"column":2},"end":{"line":89,"column":13}}},"fnMap":{"0":{"name":"initParseRuntime","decl":{"start":{"line":63,"column":16},"end":{"line":63,"column":32}},"loc":{"start":{"line":63,"column":69},"end":{"line":90,"column":1}},"line":63}},"branchMap":{"0":{"loc":{"start":{"line":83,"column":2},"end":{"line":85,"column":3}},"type":"if","locations":[{"start":{"line":83,"column":2},"end":{"line":85,"column":3}},{"start":{"line":83,"column":2},"end":{"line":85,"column":3}}],"line":83},"1":{"loc":{"start":{"line":86,"column":2},"end":{"line":88,"column":3}},"type":"if","locations":[{"start":{"line":86,"column":2},"end":{"line":88,"column":3}},{"start":{"line":86,"column":2},"end":{"line":88,"column":3}}],"line":86}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"f":{"0":0},"b":{"0":[0,0],"1":[0,0]}},"/Users/kxiang/work/projects/csv2json/src/rowSplit.test.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/rowSplit.test.ts","statementMap":{"0":{"start":{"line":3,"column":15},"end":{"line":3,"column":32}},"1":{"start":{"line":5,"column":0},"end":{"line":40,"column":3}},"2":{"start":{"line":6,"column":23},"end":{"line":14,"column":3}},"3":{"start":{"line":7,"column":4},"end":{"line":13,"column":12}},"4":{"start":{"line":16,"column":2},"end":{"line":21,"column":5}},"5":{"start":{"line":17,"column":20},"end":{"line":17,"column":23}},"6":{"start":{"line":18,"column":17},"end":{"line":18,"column":24}},"7":{"start":{"line":19,"column":28},"end":{"line":19,"column":68}},"8":{"start":{"line":20,"column":4},"end":{"line":20,"column":47}},"9":{"start":{"line":23,"column":2},"end":{"line":27,"column":5}},"10":{"start":{"line":24,"column":17},"end":{"line":24,"column":24}},"11":{"start":{"line":25,"column":28},"end":{"line":25,"column":71}},"12":{"start":{"line":26,"column":4},"end":{"line":26,"column":38}},"13":{"start":{"line":29,"column":2},"end":{"line":33,"column":5}},"14":{"start":{"line":30,"column":17},"end":{"line":30,"column":22}},"15":{"start":{"line":31,"column":28},"end":{"line":31,"column":71}},"16":{"start":{"line":32,"column":4},"end":{"line":32,"column":38}},"17":{"start":{"line":35,"column":2},"end":{"line":39,"column":5}},"18":{"start":{"line":36,"column":17},"end":{"line":36,"column":24}},"19":{"start":{"line":37,"column":28},"end":{"line":37,"column":80}},"20":{"start":{"line":38,"column":4},"end":{"line":38,"column":38}},"21":{"start":{"line":42,"column":0},"end":{"line":83,"column":3}},"22":{"start":{"line":43,"column":19},"end":{"line":43,"column":48}},"23":{"start":{"line":44,"column":15},"end":{"line":46,"column":3}},"24":{"start":{"line":45,"column":4},"end":{"line":45,"column":43}},"25":{"start":{"line":47,"column":2},"end":{"line":56,"column":5}},"26":{"start":{"line":48,"column":16},"end":{"line":52,"column":5}},"27":{"start":{"line":53,"column":14},"end":{"line":53,"column":25}},"28":{"start":{"line":54,"column":4},"end":{"line":54,"column":42}},"29":{"start":{"line":55,"column":4},"end":{"line":55,"column":34}},"30":{"start":{"line":58,"column":2},"end":{"line":71,"column":5}},"31":{"start":{"line":59,"column":16},"end":{"line":64,"column":5}},"32":{"start":{"line":65,"column":14},"end":{"line":65,"column":25}},"33":{"start":{"line":66,"column":4},"end":{"line":66,"column":42}},"34":{"start":{"line":67,"column":4},"end":{"line":67,"column":46}},"35":{"start":{"line":68,"column":4},"end":{"line":68,"column":49}},"36":{"start":{"line":69,"column":4},"end":{"line":69,"column":46}},"37":{"start":{"line":70,"column":4},"end":{"line":70,"column":34}},"38":{"start":{"line":73,"column":2},"end":{"line":82,"column":5}},"39":{"start":{"line":74,"column":16},"end":{"line":78,"column":5}},"40":{"start":{"line":79,"column":14},"end":{"line":79,"column":25}},"41":{"start":{"line":80,"column":4},"end":{"line":80,"column":42}},"42":{"start":{"line":81,"column":4},"end":{"line":81,"column":58}},"43":{"start":{"line":85,"column":0},"end":{"line":110,"column":3}},"44":{"start":{"line":86,"column":19},"end":{"line":86,"column":48}},"45":{"start":{"line":87,"column":15},"end":{"line":89,"column":3}},"46":{"start":{"line":88,"column":4},"end":{"line":88,"column":31}},"47":{"start":{"line":90,"column":2},"end":{"line":95,"column":5}},"48":{"start":{"line":91,"column":14},"end":{"line":91,"column":45}},"49":{"start":{"line":92,"column":14},"end":{"line":92,"column":23}},"50":{"start":{"line":93,"column":4},"end":{"line":93,"column":38}},"51":{"start":{"line":94,"column":4},"end":{"line":94,"column":35}},"52":{"start":{"line":97,"column":2},"end":{"line":101,"column":5}},"53":{"start":{"line":98,"column":14},"end":{"line":98,"column":47}},"54":{"start":{"line":99,"column":14},"end":{"line":99,"column":23}},"55":{"start":{"line":100,"column":4},"end":{"line":100,"column":36}},"56":{"start":{"line":103,"column":2},"end":{"line":108,"column":5}},"57":{"start":{"line":104,"column":14},"end":{"line":104,"column":59}},"58":{"start":{"line":105,"column":14},"end":{"line":105,"column":23}},"59":{"start":{"line":106,"column":4},"end":{"line":106,"column":35}},"60":{"start":{"line":107,"column":4},"end":{"line":107,"column":55}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":28},"end":{"line":5,"column":29}},"loc":{"start":{"line":5,"column":40},"end":{"line":40,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":23},"end":{"line":6,"column":24}},"loc":{"start":{"line":6,"column":79},"end":{"line":14,"column":3}},"line":6},"2":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":57},"end":{"line":16,"column":58}},"loc":{"start":{"line":16,"column":69},"end":{"line":21,"column":3}},"line":16},"3":{"name":"(anonymous_3)","decl":{"start":{"line":23,"column":69},"end":{"line":23,"column":70}},"loc":{"start":{"line":23,"column":81},"end":{"line":27,"column":3}},"line":23},"4":{"name":"(anonymous_4)","decl":{"start":{"line":29,"column":92},"end":{"line":29,"column":93}},"loc":{"start":{"line":29,"column":104},"end":{"line":33,"column":3}},"line":29},"5":{"name":"(anonymous_5)","decl":{"start":{"line":35,"column":57},"end":{"line":35,"column":58}},"loc":{"start":{"line":35,"column":69},"end":{"line":39,"column":3}},"line":35},"6":{"name":"(anonymous_6)","decl":{"start":{"line":42,"column":36},"end":{"line":42,"column":37}},"loc":{"start":{"line":42,"column":48},"end":{"line":83,"column":1}},"line":42},"7":{"name":"(anonymous_7)","decl":{"start":{"line":44,"column":15},"end":{"line":44,"column":16}},"loc":{"start":{"line":44,"column":55},"end":{"line":46,"column":3}},"line":44},"8":{"name":"(anonymous_8)","decl":{"start":{"line":47,"column":42},"end":{"line":47,"column":43}},"loc":{"start":{"line":47,"column":54},"end":{"line":56,"column":3}},"line":47},"9":{"name":"(anonymous_9)","decl":{"start":{"line":58,"column":35},"end":{"line":58,"column":36}},"loc":{"start":{"line":58,"column":47},"end":{"line":71,"column":3}},"line":58},"10":{"name":"(anonymous_10)","decl":{"start":{"line":73,"column":49},"end":{"line":73,"column":50}},"loc":{"start":{"line":73,"column":61},"end":{"line":82,"column":3}},"line":73},"11":{"name":"(anonymous_11)","decl":{"start":{"line":85,"column":36},"end":{"line":85,"column":37}},"loc":{"start":{"line":85,"column":48},"end":{"line":110,"column":1}},"line":85},"12":{"name":"(anonymous_12)","decl":{"start":{"line":87,"column":15},"end":{"line":87,"column":16}},"loc":{"start":{"line":87,"column":40},"end":{"line":89,"column":3}},"line":87},"13":{"name":"(anonymous_13)","decl":{"start":{"line":90,"column":39},"end":{"line":90,"column":40}},"loc":{"start":{"line":90,"column":51},"end":{"line":95,"column":3}},"line":90},"14":{"name":"(anonymous_14)","decl":{"start":{"line":97,"column":41},"end":{"line":97,"column":42}},"loc":{"start":{"line":97,"column":53},"end":{"line":101,"column":3}},"line":97},"15":{"name":"(anonymous_15)","decl":{"start":{"line":103,"column":35},"end":{"line":103,"column":36}},"loc":{"start":{"line":103,"column":47},"end":{"line":108,"column":3}},"line":103}},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0},"b":{}},"/Users/kxiang/work/projects/csv2json/src/util.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/util.ts","statementMap":{"0":{"start":{"line":2,"column":17},"end":{"line":2,"column":39}},"1":{"start":{"line":3,"column":17},"end":{"line":5,"column":24}},"2":{"start":{"line":6,"column":2},"end":{"line":6,"column":20}},"3":{"start":{"line":7,"column":2},"end":{"line":7,"column":16}},"4":{"start":{"line":11,"column":17},"end":{"line":13,"column":19}},"5":{"start":{"line":14,"column":2},"end":{"line":14,"column":16}},"6":{"start":{"line":18,"column":21},"end":{"line":18,"column":23}},"7":{"start":{"line":19,"column":2},"end":{"line":23,"column":3}},"8":{"start":{"line":20,"column":4},"end":{"line":22,"column":5}},"9":{"start":{"line":21,"column":6},"end":{"line":21,"column":23}},"10":{"start":{"line":24,"column":2},"end":{"line":24,"column":13}}},"fnMap":{"0":{"name":"bufFromString","decl":{"start":{"line":1,"column":16},"end":{"line":1,"column":29}},"loc":{"start":{"line":1,"column":51},"end":{"line":8,"column":1}},"line":1},"1":{"name":"emptyBuffer","decl":{"start":{"line":10,"column":16},"end":{"line":10,"column":27}},"loc":{"start":{"line":10,"column":37},"end":{"line":15,"column":1}},"line":10},"2":{"name":"filterArray","decl":{"start":{"line":17,"column":16},"end":{"line":17,"column":27}},"loc":{"start":{"line":17,"column":65},"end":{"line":25,"column":1}},"line":17}},"branchMap":{"0":{"loc":{"start":{"line":3,"column":17},"end":{"line":5,"column":24}},"type":"cond-expr","locations":[{"start":{"line":4,"column":6},"end":{"line":4,"column":32}},{"start":{"line":5,"column":6},"end":{"line":5,"column":24}}],"line":3},"1":{"loc":{"start":{"line":11,"column":17},"end":{"line":13,"column":19}},"type":"cond-expr","locations":[{"start":{"line":12,"column":6},"end":{"line":12,"column":27}},{"start":{"line":13,"column":6},"end":{"line":13,"column":19}}],"line":11},"2":{"loc":{"start":{"line":20,"column":4},"end":{"line":22,"column":5}},"type":"if","locations":[{"start":{"line":20,"column":4},"end":{"line":22,"column":5}},{"start":{"line":20,"column":4},"end":{"line":22,"column":5}}],"line":20}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"f":{"0":0,"1":0,"2":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0]}}} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/0b5b534d8fdda9c9e8b53fce635f391b.json b/node_modules/csvtojson/.nyc_output/0b5b534d8fdda9c9e8b53fce635f391b.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/0b5b534d8fdda9c9e8b53fce635f391b.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/0b82538911259cd760273af57e1b568e.json b/node_modules/csvtojson/.nyc_output/0b82538911259cd760273af57e1b568e.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/0b82538911259cd760273af57e1b568e.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/1fca5d8f4e8d0d7070af41ac05926b53.json b/node_modules/csvtojson/.nyc_output/1fca5d8f4e8d0d7070af41ac05926b53.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/1fca5d8f4e8d0d7070af41ac05926b53.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/28300bac0b62bba7556e850269888b3a.json b/node_modules/csvtojson/.nyc_output/28300bac0b62bba7556e850269888b3a.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/28300bac0b62bba7556e850269888b3a.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/290a14ffd14b612104d733748fcb00ea.json b/node_modules/csvtojson/.nyc_output/290a14ffd14b612104d733748fcb00ea.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/290a14ffd14b612104d733748fcb00ea.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/2d0a0489ff0595b8e4e6adccf81060c8.json b/node_modules/csvtojson/.nyc_output/2d0a0489ff0595b8e4e6adccf81060c8.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/2d0a0489ff0595b8e4e6adccf81060c8.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/3285cdcafb8fcaecfa2fd1db8f6d35c1.json b/node_modules/csvtojson/.nyc_output/3285cdcafb8fcaecfa2fd1db8f6d35c1.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/3285cdcafb8fcaecfa2fd1db8f6d35c1.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/353a08632aa428048df9d67f46b2a943.json b/node_modules/csvtojson/.nyc_output/353a08632aa428048df9d67f46b2a943.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/353a08632aa428048df9d67f46b2a943.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/372af79153a72baeaaee8fac2c00326e.json b/node_modules/csvtojson/.nyc_output/372af79153a72baeaaee8fac2c00326e.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/372af79153a72baeaaee8fac2c00326e.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/3c338e25b082cae5697e985e98a01fe0.json b/node_modules/csvtojson/.nyc_output/3c338e25b082cae5697e985e98a01fe0.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/3c338e25b082cae5697e985e98a01fe0.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/3f4b44285d46037be38e2a3fb692ca90.json b/node_modules/csvtojson/.nyc_output/3f4b44285d46037be38e2a3fb692ca90.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/3f4b44285d46037be38e2a3fb692ca90.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/408532dd749511a552d2171e6dd846f9.json b/node_modules/csvtojson/.nyc_output/408532dd749511a552d2171e6dd846f9.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/408532dd749511a552d2171e6dd846f9.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/427f91d355efe544f3c08bef54b0cba4.json b/node_modules/csvtojson/.nyc_output/427f91d355efe544f3c08bef54b0cba4.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/427f91d355efe544f3c08bef54b0cba4.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/5295987c062fb22dfb962addac01e463.json b/node_modules/csvtojson/.nyc_output/5295987c062fb22dfb962addac01e463.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/5295987c062fb22dfb962addac01e463.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/548df513a8d4bb28c35f0142c19e88da.json b/node_modules/csvtojson/.nyc_output/548df513a8d4bb28c35f0142c19e88da.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/548df513a8d4bb28c35f0142c19e88da.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/5aa3d5a9e40c7b393bcc5741ab892901.json b/node_modules/csvtojson/.nyc_output/5aa3d5a9e40c7b393bcc5741ab892901.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/5aa3d5a9e40c7b393bcc5741ab892901.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/5be35f8b3b5266ff2eae0d4a535f9472.json b/node_modules/csvtojson/.nyc_output/5be35f8b3b5266ff2eae0d4a535f9472.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/5be35f8b3b5266ff2eae0d4a535f9472.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/5e4760ecbfae5fa02da0dfc78b080df1.json b/node_modules/csvtojson/.nyc_output/5e4760ecbfae5fa02da0dfc78b080df1.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/5e4760ecbfae5fa02da0dfc78b080df1.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/5ecfa6bb23b282fe433bacd19be3c301.json b/node_modules/csvtojson/.nyc_output/5ecfa6bb23b282fe433bacd19be3c301.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/5ecfa6bb23b282fe433bacd19be3c301.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/619b06b7be8e214e8fb326e4f336a7be.json b/node_modules/csvtojson/.nyc_output/619b06b7be8e214e8fb326e4f336a7be.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/619b06b7be8e214e8fb326e4f336a7be.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/6ebc3edd99eabbc335501c2ab5302ffd.json b/node_modules/csvtojson/.nyc_output/6ebc3edd99eabbc335501c2ab5302ffd.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/6ebc3edd99eabbc335501c2ab5302ffd.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/74d45bc2be4d60ae2bc0793cbb6bffcd.json b/node_modules/csvtojson/.nyc_output/74d45bc2be4d60ae2bc0793cbb6bffcd.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/74d45bc2be4d60ae2bc0793cbb6bffcd.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/763b2880a165693362fce56b1ac899e3.json b/node_modules/csvtojson/.nyc_output/763b2880a165693362fce56b1ac899e3.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/763b2880a165693362fce56b1ac899e3.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/764c64567872f5beaff5721b469b15c8.json b/node_modules/csvtojson/.nyc_output/764c64567872f5beaff5721b469b15c8.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/764c64567872f5beaff5721b469b15c8.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/8324a746e7efbf67009c3427165fe910.json b/node_modules/csvtojson/.nyc_output/8324a746e7efbf67009c3427165fe910.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/8324a746e7efbf67009c3427165fe910.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/8f11bb580569edc78e9ac43a4e77ebf7.json b/node_modules/csvtojson/.nyc_output/8f11bb580569edc78e9ac43a4e77ebf7.json deleted file mode 100644 index 81555bf..0000000 --- a/node_modules/csvtojson/.nyc_output/8f11bb580569edc78e9ac43a4e77ebf7.json +++ /dev/null @@ -1 +0,0 @@ -{"/Users/kxiang/work/projects/csv2json/src/CSVError.test.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/CSVError.test.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":6,"column":3}},"2":{"start":{"line":4,"column":4},"end":{"line":5,"column":7}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":21},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":33},"end":{"line":6,"column":1}},"line":3},"1":{"name":"(anonymous_1)","decl":{"start":{"line":4,"column":28},"end":{"line":4,"column":29}},"loc":{"start":{"line":4,"column":40},"end":{"line":5,"column":5}},"line":4}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1,"1":1},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"bb3b8fae4e8410dbffef9cf1b6b5a26687ce9cb2","contentHash":"bfbd59de5208213ad5fa21b05b5bacda_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/fileline.test.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/fileline.test.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":17},"end":{"line":3,"column":38}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":40}},"3":{"start":{"line":5,"column":13},"end":{"line":5,"column":30}},"4":{"start":{"line":6,"column":0},"end":{"line":15,"column":3}},"5":{"start":{"line":7,"column":4},"end":{"line":14,"column":7}},"6":{"start":{"line":8,"column":19},"end":{"line":8,"column":46}},"7":{"start":{"line":9,"column":19},"end":{"line":9,"column":32}},"8":{"start":{"line":10,"column":21},"end":{"line":10,"column":70}},"9":{"start":{"line":11,"column":8},"end":{"line":11,"column":45}},"10":{"start":{"line":12,"column":8},"end":{"line":12,"column":45}},"11":{"start":{"line":13,"column":8},"end":{"line":13,"column":47}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":30},"end":{"line":6,"column":31}},"loc":{"start":{"line":6,"column":42},"end":{"line":15,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":49},"end":{"line":7,"column":50}},"loc":{"start":{"line":7,"column":61},"end":{"line":14,"column":5}},"line":7}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"f":{"0":1,"1":1},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"c5a090241934cb33b93748e3b968e992fab6c197","contentHash":"75ab221453465e220537ec7e95c0a663_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/fileline.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/fileline.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":15},"end":{"line":6,"column":51}},"4":{"start":{"line":15,"column":14},"end":{"line":15,"column":43}},"5":{"start":{"line":16,"column":16},"end":{"line":16,"column":31}},"6":{"start":{"line":17,"column":18},"end":{"line":17,"column":35}},"7":{"start":{"line":18,"column":4},"end":{"line":18,"column":46}},"8":{"start":{"line":20,"column":0},"end":{"line":20,"column":38}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"stringToLines","decl":{"start":{"line":14,"column":9},"end":{"line":14,"column":22}},"loc":{"start":{"line":14,"column":36},"end":{"line":19,"column":1}},"line":14}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":17,"column":18},"end":{"line":17,"column":35}},"type":"binary-expr","locations":[{"start":{"line":17,"column":18},"end":{"line":17,"column":29}},{"start":{"line":17,"column":33},"end":{"line":17,"column":35}}],"line":17}},"s":{"0":1,"1":1,"2":1,"3":1,"4":171,"5":171,"6":171,"7":171,"8":1},"f":{"0":1,"1":171},"b":{"0":[1,1,1],"1":[1,0],"2":[1,1],"3":[171,50]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"d0e8d877dda3cb0f0ad6b8dcac0e2337f6a97705","contentHash":"4bec653a7a79ee450c41ea622d6edb1c_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/getEol.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/getEol.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":5,"column":4},"end":{"line":22,"column":5}},"2":{"start":{"line":6,"column":8},"end":{"line":21,"column":9}},"3":{"start":{"line":7,"column":12},"end":{"line":20,"column":13}},"4":{"start":{"line":8,"column":16},"end":{"line":15,"column":17}},"5":{"start":{"line":9,"column":20},"end":{"line":9,"column":39}},"6":{"start":{"line":10,"column":20},"end":{"line":10,"column":26}},"7":{"start":{"line":12,"column":21},"end":{"line":15,"column":17}},"8":{"start":{"line":13,"column":20},"end":{"line":13,"column":37}},"9":{"start":{"line":14,"column":20},"end":{"line":14,"column":26}},"10":{"start":{"line":17,"column":17},"end":{"line":20,"column":13}},"11":{"start":{"line":18,"column":16},"end":{"line":18,"column":33}},"12":{"start":{"line":19,"column":16},"end":{"line":19,"column":22}},"13":{"start":{"line":23,"column":4},"end":{"line":23,"column":29}},"14":{"start":{"line":25,"column":0},"end":{"line":25,"column":28}}},"fnMap":{"0":{"name":"default_1","decl":{"start":{"line":4,"column":9},"end":{"line":4,"column":18}},"loc":{"start":{"line":4,"column":32},"end":{"line":24,"column":1}},"line":4}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":4},"end":{"line":22,"column":5}},"type":"if","locations":[{"start":{"line":5,"column":4},"end":{"line":22,"column":5}},{"start":{"line":5,"column":4},"end":{"line":22,"column":5}}],"line":5},"1":{"loc":{"start":{"line":5,"column":8},"end":{"line":5,"column":26}},"type":"binary-expr","locations":[{"start":{"line":5,"column":8},"end":{"line":5,"column":18}},{"start":{"line":5,"column":22},"end":{"line":5,"column":26}}],"line":5},"2":{"loc":{"start":{"line":7,"column":12},"end":{"line":20,"column":13}},"type":"if","locations":[{"start":{"line":7,"column":12},"end":{"line":20,"column":13}},{"start":{"line":7,"column":12},"end":{"line":20,"column":13}}],"line":7},"3":{"loc":{"start":{"line":8,"column":16},"end":{"line":15,"column":17}},"type":"if","locations":[{"start":{"line":8,"column":16},"end":{"line":15,"column":17}},{"start":{"line":8,"column":16},"end":{"line":15,"column":17}}],"line":8},"4":{"loc":{"start":{"line":12,"column":21},"end":{"line":15,"column":17}},"type":"if","locations":[{"start":{"line":12,"column":21},"end":{"line":15,"column":17}},{"start":{"line":12,"column":21},"end":{"line":15,"column":17}}],"line":12},"5":{"loc":{"start":{"line":17,"column":17},"end":{"line":20,"column":13}},"type":"if","locations":[{"start":{"line":17,"column":17},"end":{"line":20,"column":13}},{"start":{"line":17,"column":17},"end":{"line":20,"column":13}}],"line":17},"6":{"loc":{"start":{"line":23,"column":11},"end":{"line":23,"column":28}},"type":"binary-expr","locations":[{"start":{"line":23,"column":11},"end":{"line":23,"column":20}},{"start":{"line":23,"column":24},"end":{"line":23,"column":28}}],"line":23}},"s":{"0":1,"1":314,"2":158,"3":114571,"4":8,"5":3,"6":3,"7":5,"8":1,"9":1,"10":114563,"11":71,"12":71,"13":314,"14":1},"f":{"0":314},"b":{"0":[158,156],"1":[314,158],"2":[8,114563],"3":[3,5],"4":[1,4],"5":[71,114492],"6":[314,83]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"64dd704409a826511d4b887fc0ecb0f1d6dfd1bd","contentHash":"48a01acd76eb02c250e69d2e1af6d76e_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/Converter.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/Converter.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":11,"column":4}},"1":{"start":{"line":3,"column":24},"end":{"line":5,"column":82}},"2":{"start":{"line":4,"column":65},"end":{"line":4,"column":81}},"3":{"start":{"line":5,"column":26},"end":{"line":5,"column":80}},"4":{"start":{"line":5,"column":43},"end":{"line":5,"column":80}},"5":{"start":{"line":5,"column":68},"end":{"line":5,"column":80}},"6":{"start":{"line":6,"column":4},"end":{"line":10,"column":6}},"7":{"start":{"line":7,"column":8},"end":{"line":7,"column":28}},"8":{"start":{"line":8,"column":24},"end":{"line":8,"column":45}},"9":{"start":{"line":9,"column":8},"end":{"line":9,"column":93}},"10":{"start":{"line":12,"column":22},"end":{"line":14,"column":1}},"11":{"start":{"line":13,"column":4},"end":{"line":13,"column":62}},"12":{"start":{"line":15,"column":0},"end":{"line":15,"column":62}},"13":{"start":{"line":16,"column":15},"end":{"line":16,"column":32}},"14":{"start":{"line":17,"column":19},"end":{"line":17,"column":42}},"15":{"start":{"line":18,"column":21},"end":{"line":18,"column":46}},"16":{"start":{"line":19,"column":17},"end":{"line":19,"column":53}},"17":{"start":{"line":20,"column":20},"end":{"line":20,"column":44}},"18":{"start":{"line":21,"column":23},"end":{"line":21,"column":50}},"19":{"start":{"line":22,"column":15},"end":{"line":22,"column":34}},"20":{"start":{"line":23,"column":31},"end":{"line":190,"column":21}},"21":{"start":{"line":24,"column":4},"end":{"line":24,"column":33}},"22":{"start":{"line":26,"column":8},"end":{"line":26,"column":49}},"23":{"start":{"line":26,"column":34},"end":{"line":26,"column":47}},"24":{"start":{"line":27,"column":20},"end":{"line":27,"column":54}},"25":{"start":{"line":28,"column":8},"end":{"line":28,"column":32}},"26":{"start":{"line":29,"column":8},"end":{"line":29,"column":55}},"27":{"start":{"line":30,"column":8},"end":{"line":30,"column":63}},"28":{"start":{"line":31,"column":8},"end":{"line":31,"column":50}},"29":{"start":{"line":32,"column":8},"end":{"line":37,"column":9}},"30":{"start":{"line":33,"column":12},"end":{"line":33,"column":69}},"31":{"start":{"line":36,"column":12},"end":{"line":36,"column":73}},"32":{"start":{"line":38,"column":8},"end":{"line":44,"column":11}},"33":{"start":{"line":40,"column":12},"end":{"line":43,"column":18}},"34":{"start":{"line":41,"column":16},"end":{"line":41,"column":47}},"35":{"start":{"line":42,"column":16},"end":{"line":42,"column":40}},"36":{"start":{"line":45,"column":8},"end":{"line":47,"column":11}},"37":{"start":{"line":46,"column":12},"end":{"line":46,"column":38}},"38":{"start":{"line":48,"column":8},"end":{"line":48,"column":21}},"39":{"start":{"line":50,"column":4},"end":{"line":53,"column":6}},"40":{"start":{"line":51,"column":8},"end":{"line":51,"column":48}},"41":{"start":{"line":52,"column":8},"end":{"line":52,"column":20}},"42":{"start":{"line":54,"column":4},"end":{"line":57,"column":6}},"43":{"start":{"line":55,"column":8},"end":{"line":55,"column":50}},"44":{"start":{"line":56,"column":8},"end":{"line":56,"column":20}},"45":{"start":{"line":58,"column":4},"end":{"line":65,"column":6}},"46":{"start":{"line":59,"column":8},"end":{"line":63,"column":10}},"47":{"start":{"line":64,"column":8},"end":{"line":64,"column":20}},"48":{"start":{"line":66,"column":4},"end":{"line":85,"column":6}},"49":{"start":{"line":67,"column":20},"end":{"line":67,"column":24}},"50":{"start":{"line":68,"column":17},"end":{"line":68,"column":30}},"51":{"start":{"line":75,"column":8},"end":{"line":83,"column":11}},"52":{"start":{"line":76,"column":12},"end":{"line":82,"column":13}},"53":{"start":{"line":77,"column":25},"end":{"line":77,"column":63}},"54":{"start":{"line":78,"column":16},"end":{"line":78,"column":31}},"55":{"start":{"line":81,"column":16},"end":{"line":81,"column":128}},"56":{"start":{"line":84,"column":8},"end":{"line":84,"column":20}},"57":{"start":{"line":86,"column":4},"end":{"line":89,"column":6}},"58":{"start":{"line":87,"column":8},"end":{"line":87,"column":30}},"59":{"start":{"line":88,"column":8},"end":{"line":88,"column":20}},"60":{"start":{"line":90,"column":4},"end":{"line":105,"column":6}},"61":{"start":{"line":91,"column":18},"end":{"line":91,"column":38}},"62":{"start":{"line":92,"column":19},"end":{"line":92,"column":42}},"63":{"start":{"line":93,"column":18},"end":{"line":93,"column":19}},"64":{"start":{"line":94,"column":8},"end":{"line":103,"column":10}},"65":{"start":{"line":95,"column":12},"end":{"line":102,"column":13}},"66":{"start":{"line":96,"column":16},"end":{"line":96,"column":32}},"67":{"start":{"line":99,"column":26},"end":{"line":99,"column":53}},"68":{"start":{"line":100,"column":16},"end":{"line":100,"column":31}},"69":{"start":{"line":101,"column":16},"end":{"line":101,"column":28}},"70":{"start":{"line":104,"column":8},"end":{"line":104,"column":37}},"71":{"start":{"line":106,"column":4},"end":{"line":128,"column":6}},"72":{"start":{"line":107,"column":20},"end":{"line":107,"column":24}},"73":{"start":{"line":108,"column":8},"end":{"line":127,"column":11}},"74":{"start":{"line":109,"column":12},"end":{"line":126,"column":14}},"75":{"start":{"line":111,"column":20},"end":{"line":116,"column":21}},"76":{"start":{"line":112,"column":24},"end":{"line":112,"column":52}},"77":{"start":{"line":115,"column":24},"end":{"line":115,"column":39}},"78":{"start":{"line":119,"column":20},"end":{"line":124,"column":21}},"79":{"start":{"line":120,"column":24},"end":{"line":120,"column":49}},"80":{"start":{"line":123,"column":24},"end":{"line":123,"column":36}},"81":{"start":{"line":129,"column":4},"end":{"line":135,"column":7}},"82":{"start":{"line":131,"column":12},"end":{"line":131,"column":31}},"83":{"start":{"line":136,"column":4},"end":{"line":142,"column":7}},"84":{"start":{"line":138,"column":12},"end":{"line":138,"column":32}},"85":{"start":{"line":143,"column":4},"end":{"line":161,"column":6}},"86":{"start":{"line":144,"column":20},"end":{"line":144,"column":24}},"87":{"start":{"line":145,"column":8},"end":{"line":160,"column":11}},"88":{"start":{"line":147,"column":12},"end":{"line":150,"column":13}},"89":{"start":{"line":148,"column":16},"end":{"line":148,"column":45}},"90":{"start":{"line":149,"column":16},"end":{"line":149,"column":58}},"91":{"start":{"line":153,"column":12},"end":{"line":153,"column":34}},"92":{"start":{"line":154,"column":12},"end":{"line":154,"column":17}},"93":{"start":{"line":156,"column":12},"end":{"line":156,"column":42}},"94":{"start":{"line":157,"column":12},"end":{"line":157,"column":40}},"95":{"start":{"line":158,"column":12},"end":{"line":158,"column":39}},"96":{"start":{"line":159,"column":12},"end":{"line":159,"column":17}},"97":{"start":{"line":162,"column":4},"end":{"line":176,"column":6}},"98":{"start":{"line":163,"column":20},"end":{"line":163,"column":24}},"99":{"start":{"line":164,"column":8},"end":{"line":175,"column":11}},"100":{"start":{"line":166,"column":12},"end":{"line":168,"column":13}},"101":{"start":{"line":167,"column":16},"end":{"line":167,"column":56}},"102":{"start":{"line":171,"column":12},"end":{"line":171,"column":33}},"103":{"start":{"line":173,"column":12},"end":{"line":173,"column":37}},"104":{"start":{"line":174,"column":12},"end":{"line":174,"column":17}},"105":{"start":{"line":177,"column":4},"end":{"line":181,"column":6}},"106":{"start":{"line":178,"column":8},"end":{"line":178,"column":33}},"107":{"start":{"line":179,"column":8},"end":{"line":179,"column":26}},"108":{"start":{"line":180,"column":8},"end":{"line":180,"column":13}},"109":{"start":{"line":182,"column":4},"end":{"line":188,"column":7}},"110":{"start":{"line":184,"column":12},"end":{"line":184,"column":49}},"111":{"start":{"line":189,"column":4},"end":{"line":189,"column":21}},"112":{"start":{"line":191,"column":0},"end":{"line":191,"column":30}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":45},"end":{"line":2,"column":46}},"loc":{"start":{"line":2,"column":57},"end":{"line":11,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":4,"column":47},"end":{"line":4,"column":48}},"loc":{"start":{"line":4,"column":63},"end":{"line":4,"column":83}},"line":4},"2":{"name":"(anonymous_2)","decl":{"start":{"line":5,"column":8},"end":{"line":5,"column":9}},"loc":{"start":{"line":5,"column":24},"end":{"line":5,"column":82}},"line":5},"3":{"name":"(anonymous_3)","decl":{"start":{"line":6,"column":11},"end":{"line":6,"column":12}},"loc":{"start":{"line":6,"column":27},"end":{"line":10,"column":5}},"line":6},"4":{"name":"__","decl":{"start":{"line":8,"column":17},"end":{"line":8,"column":19}},"loc":{"start":{"line":8,"column":22},"end":{"line":8,"column":47}},"line":8},"5":{"name":"(anonymous_5)","decl":{"start":{"line":12,"column":56},"end":{"line":12,"column":57}},"loc":{"start":{"line":12,"column":71},"end":{"line":14,"column":1}},"line":12},"6":{"name":"(anonymous_6)","decl":{"start":{"line":23,"column":31},"end":{"line":23,"column":32}},"loc":{"start":{"line":23,"column":49},"end":{"line":190,"column":1}},"line":23},"7":{"name":"Converter","decl":{"start":{"line":25,"column":13},"end":{"line":25,"column":22}},"loc":{"start":{"line":25,"column":39},"end":{"line":49,"column":5}},"line":25},"8":{"name":"(anonymous_8)","decl":{"start":{"line":38,"column":28},"end":{"line":38,"column":29}},"loc":{"start":{"line":38,"column":43},"end":{"line":44,"column":9}},"line":38},"9":{"name":"(anonymous_9)","decl":{"start":{"line":40,"column":23},"end":{"line":40,"column":24}},"loc":{"start":{"line":40,"column":35},"end":{"line":43,"column":13}},"line":40},"10":{"name":"(anonymous_10)","decl":{"start":{"line":45,"column":27},"end":{"line":45,"column":28}},"loc":{"start":{"line":45,"column":39},"end":{"line":47,"column":9}},"line":45},"11":{"name":"(anonymous_11)","decl":{"start":{"line":50,"column":37},"end":{"line":50,"column":38}},"loc":{"start":{"line":50,"column":58},"end":{"line":53,"column":5}},"line":50},"12":{"name":"(anonymous_12)","decl":{"start":{"line":54,"column":38},"end":{"line":54,"column":39}},"loc":{"start":{"line":54,"column":60},"end":{"line":57,"column":5}},"line":54},"13":{"name":"(anonymous_13)","decl":{"start":{"line":58,"column":36},"end":{"line":58,"column":37}},"loc":{"start":{"line":58,"column":76},"end":{"line":65,"column":5}},"line":58},"14":{"name":"(anonymous_14)","decl":{"start":{"line":66,"column":35},"end":{"line":66,"column":36}},"loc":{"start":{"line":66,"column":64},"end":{"line":85,"column":5}},"line":66},"15":{"name":"(anonymous_15)","decl":{"start":{"line":75,"column":28},"end":{"line":75,"column":29}},"loc":{"start":{"line":75,"column":45},"end":{"line":83,"column":9}},"line":75},"16":{"name":"(anonymous_16)","decl":{"start":{"line":86,"column":37},"end":{"line":86,"column":38}},"loc":{"start":{"line":86,"column":59},"end":{"line":89,"column":5}},"line":86},"17":{"name":"(anonymous_17)","decl":{"start":{"line":90,"column":37},"end":{"line":90,"column":38}},"loc":{"start":{"line":90,"column":58},"end":{"line":105,"column":5}},"line":90},"18":{"name":"(anonymous_18)","decl":{"start":{"line":94,"column":21},"end":{"line":94,"column":22}},"loc":{"start":{"line":94,"column":37},"end":{"line":103,"column":9}},"line":94},"19":{"name":"(anonymous_19)","decl":{"start":{"line":106,"column":31},"end":{"line":106,"column":32}},"loc":{"start":{"line":106,"column":66},"end":{"line":128,"column":5}},"line":106},"20":{"name":"(anonymous_20)","decl":{"start":{"line":108,"column":38},"end":{"line":108,"column":39}},"loc":{"start":{"line":108,"column":65},"end":{"line":127,"column":9}},"line":108},"21":{"name":"(anonymous_21)","decl":{"start":{"line":110,"column":29},"end":{"line":110,"column":30}},"loc":{"start":{"line":110,"column":46},"end":{"line":117,"column":17}},"line":110},"22":{"name":"(anonymous_22)","decl":{"start":{"line":118,"column":28},"end":{"line":118,"column":29}},"loc":{"start":{"line":118,"column":43},"end":{"line":125,"column":17}},"line":118},"23":{"name":"(anonymous_23)","decl":{"start":{"line":130,"column":13},"end":{"line":130,"column":14}},"loc":{"start":{"line":130,"column":25},"end":{"line":132,"column":9}},"line":130},"24":{"name":"(anonymous_24)","decl":{"start":{"line":137,"column":13},"end":{"line":137,"column":14}},"loc":{"start":{"line":137,"column":25},"end":{"line":139,"column":9}},"line":137},"25":{"name":"(anonymous_25)","decl":{"start":{"line":143,"column":37},"end":{"line":143,"column":38}},"loc":{"start":{"line":143,"column":68},"end":{"line":161,"column":5}},"line":143},"26":{"name":"(anonymous_26)","decl":{"start":{"line":146,"column":18},"end":{"line":146,"column":19}},"loc":{"start":{"line":146,"column":36},"end":{"line":151,"column":9}},"line":146},"27":{"name":"(anonymous_27)","decl":{"start":{"line":152,"column":18},"end":{"line":152,"column":19}},"loc":{"start":{"line":152,"column":30},"end":{"line":155,"column":9}},"line":152},"28":{"name":"(anonymous_28)","decl":{"start":{"line":155,"column":11},"end":{"line":155,"column":12}},"loc":{"start":{"line":155,"column":28},"end":{"line":160,"column":9}},"line":155},"29":{"name":"(anonymous_29)","decl":{"start":{"line":162,"column":33},"end":{"line":162,"column":34}},"loc":{"start":{"line":162,"column":47},"end":{"line":176,"column":5}},"line":162},"30":{"name":"(anonymous_30)","decl":{"start":{"line":165,"column":18},"end":{"line":165,"column":19}},"loc":{"start":{"line":165,"column":34},"end":{"line":169,"column":9}},"line":165},"31":{"name":"(anonymous_31)","decl":{"start":{"line":170,"column":18},"end":{"line":170,"column":19}},"loc":{"start":{"line":170,"column":30},"end":{"line":172,"column":9}},"line":170},"32":{"name":"(anonymous_32)","decl":{"start":{"line":172,"column":11},"end":{"line":172,"column":12}},"loc":{"start":{"line":172,"column":26},"end":{"line":175,"column":9}},"line":172},"33":{"name":"(anonymous_33)","decl":{"start":{"line":177,"column":37},"end":{"line":177,"column":38}},"loc":{"start":{"line":177,"column":51},"end":{"line":181,"column":5}},"line":177},"34":{"name":"(anonymous_34)","decl":{"start":{"line":183,"column":13},"end":{"line":183,"column":14}},"loc":{"start":{"line":183,"column":25},"end":{"line":185,"column":9}},"line":183}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":11,"column":4}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":11,"column":4}}],"line":2},"1":{"loc":{"start":{"line":3,"column":24},"end":{"line":5,"column":82}},"type":"binary-expr","locations":[{"start":{"line":3,"column":24},"end":{"line":3,"column":45}},{"start":{"line":4,"column":9},"end":{"line":4,"column":43}},{"start":{"line":4,"column":47},"end":{"line":4,"column":83}},{"start":{"line":5,"column":8},"end":{"line":5,"column":82}}],"line":3},"2":{"loc":{"start":{"line":5,"column":43},"end":{"line":5,"column":80}},"type":"if","locations":[{"start":{"line":5,"column":43},"end":{"line":5,"column":80}},{"start":{"line":5,"column":43},"end":{"line":5,"column":80}}],"line":5},"3":{"loc":{"start":{"line":9,"column":22},"end":{"line":9,"column":92}},"type":"cond-expr","locations":[{"start":{"line":9,"column":35},"end":{"line":9,"column":51}},{"start":{"line":9,"column":55},"end":{"line":9,"column":91}}],"line":9},"4":{"loc":{"start":{"line":12,"column":22},"end":{"line":14,"column":1}},"type":"binary-expr","locations":[{"start":{"line":12,"column":23},"end":{"line":12,"column":27}},{"start":{"line":12,"column":31},"end":{"line":12,"column":51}},{"start":{"line":12,"column":56},"end":{"line":14,"column":1}}],"line":12},"5":{"loc":{"start":{"line":13,"column":11},"end":{"line":13,"column":61}},"type":"cond-expr","locations":[{"start":{"line":13,"column":37},"end":{"line":13,"column":40}},{"start":{"line":13,"column":43},"end":{"line":13,"column":61}}],"line":13},"6":{"loc":{"start":{"line":13,"column":12},"end":{"line":13,"column":33}},"type":"binary-expr","locations":[{"start":{"line":13,"column":12},"end":{"line":13,"column":15}},{"start":{"line":13,"column":19},"end":{"line":13,"column":33}}],"line":13},"7":{"loc":{"start":{"line":26,"column":8},"end":{"line":26,"column":49}},"type":"if","locations":[{"start":{"line":26,"column":8},"end":{"line":26,"column":49}},{"start":{"line":26,"column":8},"end":{"line":26,"column":49}}],"line":26},"8":{"loc":{"start":{"line":27,"column":20},"end":{"line":27,"column":54}},"type":"binary-expr","locations":[{"start":{"line":27,"column":20},"end":{"line":27,"column":46}},{"start":{"line":27,"column":50},"end":{"line":27,"column":54}}],"line":27},"9":{"loc":{"start":{"line":32,"column":8},"end":{"line":37,"column":9}},"type":"if","locations":[{"start":{"line":32,"column":8},"end":{"line":37,"column":9}},{"start":{"line":32,"column":8},"end":{"line":37,"column":9}}],"line":32},"10":{"loc":{"start":{"line":76,"column":12},"end":{"line":82,"column":13}},"type":"if","locations":[{"start":{"line":76,"column":12},"end":{"line":82,"column":13}},{"start":{"line":76,"column":12},"end":{"line":82,"column":13}}],"line":76},"11":{"loc":{"start":{"line":95,"column":12},"end":{"line":102,"column":13}},"type":"if","locations":[{"start":{"line":95,"column":12},"end":{"line":102,"column":13}},{"start":{"line":95,"column":12},"end":{"line":102,"column":13}}],"line":95},"12":{"loc":{"start":{"line":111,"column":20},"end":{"line":116,"column":21}},"type":"if","locations":[{"start":{"line":111,"column":20},"end":{"line":116,"column":21}},{"start":{"line":111,"column":20},"end":{"line":116,"column":21}}],"line":111},"13":{"loc":{"start":{"line":119,"column":20},"end":{"line":124,"column":21}},"type":"if","locations":[{"start":{"line":119,"column":20},"end":{"line":124,"column":21}},{"start":{"line":119,"column":20},"end":{"line":124,"column":21}}],"line":119},"14":{"loc":{"start":{"line":147,"column":12},"end":{"line":150,"column":13}},"type":"if","locations":[{"start":{"line":147,"column":12},"end":{"line":150,"column":13}},{"start":{"line":147,"column":12},"end":{"line":150,"column":13}}],"line":147},"15":{"loc":{"start":{"line":166,"column":12},"end":{"line":168,"column":13}},"type":"if","locations":[{"start":{"line":166,"column":12},"end":{"line":168,"column":13}},{"start":{"line":166,"column":12},"end":{"line":168,"column":13}}],"line":166}},"s":{"0":1,"1":1,"2":0,"3":0,"4":0,"5":0,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":120,"23":116,"24":120,"25":120,"26":120,"27":120,"28":120,"29":120,"30":37,"31":83,"32":120,"33":9,"34":9,"35":9,"36":120,"37":113,"38":120,"39":1,"40":3,"41":3,"42":1,"43":2,"44":2,"45":1,"46":34,"47":34,"48":1,"49":8,"50":8,"51":8,"52":8,"53":7,"54":7,"55":1,"56":8,"57":1,"58":46,"59":46,"60":1,"61":30,"62":30,"63":30,"64":30,"65":65,"66":30,"67":35,"68":35,"69":35,"70":30,"71":1,"72":86,"73":86,"74":86,"75":79,"76":78,"77":1,"78":5,"79":4,"80":1,"81":1,"82":166228,"83":1,"84":442655,"85":1,"86":217,"87":217,"88":215,"89":81,"90":81,"91":215,"92":215,"93":2,"94":2,"95":2,"96":2,"97":1,"98":110,"99":110,"100":104,"101":66,"102":104,"103":5,"104":5,"105":1,"106":104,"107":104,"108":104,"109":1,"110":1,"111":1,"112":1},"f":{"0":1,"1":0,"2":0,"3":1,"4":1,"5":1,"6":1,"7":120,"8":9,"9":9,"10":113,"11":3,"12":2,"13":34,"14":8,"15":8,"16":46,"17":30,"18":65,"19":86,"20":86,"21":79,"22":5,"23":166228,"24":442655,"25":217,"26":215,"27":215,"28":2,"29":110,"30":104,"31":104,"32":5,"33":104,"34":1},"b":{"0":[1,1,1],"1":[1,0,0,0],"2":[0,0],"3":[0,1],"4":[1,1,1],"5":[0,1],"6":[1,1],"7":[116,4],"8":[120,120],"9":[37,83],"10":[7,1],"11":[30,35],"12":[78,1],"13":[4,1],"14":[81,134],"15":[66,38]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"d4e26f706e7d084ee09223d5044cdc2cb0321038","contentHash":"244015e920c1a2dd2e79dee0eb1aa367_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/Parameters.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/Parameters.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":4,"column":23},"end":{"line":23,"column":5}},"2":{"start":{"line":24,"column":4},"end":{"line":26,"column":5}},"3":{"start":{"line":25,"column":8},"end":{"line":25,"column":20}},"4":{"start":{"line":27,"column":4},"end":{"line":36,"column":5}},"5":{"start":{"line":28,"column":8},"end":{"line":35,"column":9}},"6":{"start":{"line":29,"column":12},"end":{"line":34,"column":13}},"7":{"start":{"line":30,"column":16},"end":{"line":30,"column":59}},"8":{"start":{"line":33,"column":16},"end":{"line":33,"column":48}},"9":{"start":{"line":37,"column":4},"end":{"line":37,"column":24}},"10":{"start":{"line":39,"column":0},"end":{"line":39,"column":34}}},"fnMap":{"0":{"name":"mergeParams","decl":{"start":{"line":3,"column":9},"end":{"line":3,"column":20}},"loc":{"start":{"line":3,"column":29},"end":{"line":38,"column":1}},"line":3}},"branchMap":{"0":{"loc":{"start":{"line":24,"column":4},"end":{"line":26,"column":5}},"type":"if","locations":[{"start":{"line":24,"column":4},"end":{"line":26,"column":5}},{"start":{"line":24,"column":4},"end":{"line":26,"column":5}}],"line":24},"1":{"loc":{"start":{"line":28,"column":8},"end":{"line":35,"column":9}},"type":"if","locations":[{"start":{"line":28,"column":8},"end":{"line":35,"column":9}},{"start":{"line":28,"column":8},"end":{"line":35,"column":9}}],"line":28},"2":{"loc":{"start":{"line":29,"column":12},"end":{"line":34,"column":13}},"type":"if","locations":[{"start":{"line":29,"column":12},"end":{"line":34,"column":13}},{"start":{"line":29,"column":12},"end":{"line":34,"column":13}}],"line":29}},"s":{"0":1,"1":157,"2":157,"3":30,"4":157,"5":791,"6":791,"7":14,"8":777,"9":157,"10":1},"f":{"0":157},"b":{"0":[30,127],"1":[791,0],"2":[14,777]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"9b421e973580e43cd2e1924e824c22ad111dd0b3","contentHash":"b5a8b5f857e5c89a5823cff27f0d3fa6_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/ParseRuntime.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/ParseRuntime.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":4,"column":17},"end":{"line":4,"column":37}},"2":{"start":{"line":5,"column":14},"end":{"line":22,"column":5}},"3":{"start":{"line":23,"column":4},"end":{"line":25,"column":5}},"4":{"start":{"line":24,"column":8},"end":{"line":24,"column":43}},"5":{"start":{"line":26,"column":4},"end":{"line":28,"column":5}},"6":{"start":{"line":27,"column":8},"end":{"line":27,"column":44}},"7":{"start":{"line":29,"column":4},"end":{"line":29,"column":15}},"8":{"start":{"line":31,"column":0},"end":{"line":31,"column":44}}},"fnMap":{"0":{"name":"initParseRuntime","decl":{"start":{"line":3,"column":9},"end":{"line":3,"column":25}},"loc":{"start":{"line":3,"column":37},"end":{"line":30,"column":1}},"line":3}},"branchMap":{"0":{"loc":{"start":{"line":23,"column":4},"end":{"line":25,"column":5}},"type":"if","locations":[{"start":{"line":23,"column":4},"end":{"line":25,"column":5}},{"start":{"line":23,"column":4},"end":{"line":25,"column":5}}],"line":23},"1":{"loc":{"start":{"line":26,"column":4},"end":{"line":28,"column":5}},"type":"if","locations":[{"start":{"line":26,"column":4},"end":{"line":28,"column":5}},{"start":{"line":26,"column":4},"end":{"line":28,"column":5}}],"line":26}},"s":{"0":1,"1":120,"2":120,"3":120,"4":3,"5":120,"6":7,"7":120,"8":1},"f":{"0":120},"b":{"0":[3,117],"1":[7,113]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"fbfac2d35f03bb15cb25aa5533a3f1596a08ccea","contentHash":"fe2bb2edf007944d040fb584d28e84a3_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/ProcessFork.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/ProcessFork.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":11,"column":4}},"1":{"start":{"line":3,"column":24},"end":{"line":5,"column":82}},"2":{"start":{"line":4,"column":65},"end":{"line":4,"column":81}},"3":{"start":{"line":5,"column":26},"end":{"line":5,"column":80}},"4":{"start":{"line":5,"column":43},"end":{"line":5,"column":80}},"5":{"start":{"line":5,"column":68},"end":{"line":5,"column":80}},"6":{"start":{"line":6,"column":4},"end":{"line":10,"column":6}},"7":{"start":{"line":7,"column":8},"end":{"line":7,"column":28}},"8":{"start":{"line":8,"column":24},"end":{"line":8,"column":45}},"9":{"start":{"line":9,"column":8},"end":{"line":9,"column":93}},"10":{"start":{"line":12,"column":22},"end":{"line":14,"column":1}},"11":{"start":{"line":13,"column":4},"end":{"line":13,"column":62}},"12":{"start":{"line":15,"column":0},"end":{"line":15,"column":62}},"13":{"start":{"line":16,"column":18},"end":{"line":16,"column":40}},"14":{"start":{"line":17,"column":17},"end":{"line":17,"column":53}},"15":{"start":{"line":18,"column":19},"end":{"line":18,"column":42}},"16":{"start":{"line":19,"column":17},"end":{"line":19,"column":55}},"17":{"start":{"line":20,"column":35},"end":{"line":141,"column":24}},"18":{"start":{"line":21,"column":4},"end":{"line":21,"column":37}},"19":{"start":{"line":23,"column":20},"end":{"line":23,"column":56}},"20":{"start":{"line":24,"column":8},"end":{"line":24,"column":36}},"21":{"start":{"line":25,"column":8},"end":{"line":25,"column":29}},"22":{"start":{"line":26,"column":8},"end":{"line":26,"column":29}},"23":{"start":{"line":27,"column":8},"end":{"line":27,"column":29}},"24":{"start":{"line":28,"column":8},"end":{"line":28,"column":33}},"25":{"start":{"line":29,"column":8},"end":{"line":31,"column":11}},"26":{"start":{"line":32,"column":8},"end":{"line":32,"column":27}},"27":{"start":{"line":33,"column":8},"end":{"line":33,"column":21}},"28":{"start":{"line":35,"column":4},"end":{"line":43,"column":6}},"29":{"start":{"line":36,"column":20},"end":{"line":36,"column":24}},"30":{"start":{"line":37,"column":8},"end":{"line":42,"column":11}},"31":{"start":{"line":39,"column":12},"end":{"line":39,"column":36}},"32":{"start":{"line":40,"column":12},"end":{"line":40,"column":33}},"33":{"start":{"line":41,"column":12},"end":{"line":41,"column":43}},"34":{"start":{"line":44,"column":4},"end":{"line":47,"column":6}},"35":{"start":{"line":45,"column":8},"end":{"line":45,"column":33}},"36":{"start":{"line":46,"column":8},"end":{"line":46,"column":44}},"37":{"start":{"line":48,"column":4},"end":{"line":63,"column":6}},"38":{"start":{"line":49,"column":20},"end":{"line":49,"column":51}},"39":{"start":{"line":50,"column":8},"end":{"line":55,"column":9}},"40":{"start":{"line":51,"column":12},"end":{"line":54,"column":14}},"41":{"start":{"line":56,"column":8},"end":{"line":61,"column":9}},"42":{"start":{"line":57,"column":12},"end":{"line":60,"column":14}},"43":{"start":{"line":62,"column":8},"end":{"line":62,"column":21}},"44":{"start":{"line":64,"column":4},"end":{"line":97,"column":6}},"45":{"start":{"line":65,"column":20},"end":{"line":65,"column":24}},"46":{"start":{"line":66,"column":8},"end":{"line":69,"column":11}},"47":{"start":{"line":70,"column":8},"end":{"line":87,"column":11}},"48":{"start":{"line":71,"column":12},"end":{"line":86,"column":13}},"49":{"start":{"line":72,"column":16},"end":{"line":72,"column":36}},"50":{"start":{"line":74,"column":17},"end":{"line":86,"column":13}},"51":{"start":{"line":75,"column":16},"end":{"line":77,"column":17}},"52":{"start":{"line":76,"column":20},"end":{"line":76,"column":59}},"53":{"start":{"line":79,"column":17},"end":{"line":86,"column":13}},"54":{"start":{"line":80,"column":16},"end":{"line":82,"column":17}},"55":{"start":{"line":81,"column":20},"end":{"line":81,"column":62}},"56":{"start":{"line":84,"column":17},"end":{"line":86,"column":13}},"57":{"start":{"line":85,"column":16},"end":{"line":85,"column":36}},"58":{"start":{"line":88,"column":8},"end":{"line":92,"column":11}},"59":{"start":{"line":90,"column":22},"end":{"line":90,"column":37}},"60":{"start":{"line":91,"column":12},"end":{"line":91,"column":33}},"61":{"start":{"line":93,"column":8},"end":{"line":96,"column":11}},"62":{"start":{"line":95,"column":12},"end":{"line":95,"column":100}},"63":{"start":{"line":98,"column":4},"end":{"line":104,"column":6}},"64":{"start":{"line":100,"column":8},"end":{"line":102,"column":9}},"65":{"start":{"line":101,"column":12},"end":{"line":101,"column":38}},"66":{"start":{"line":103,"column":8},"end":{"line":103,"column":28}},"67":{"start":{"line":105,"column":4},"end":{"line":127,"column":6}},"68":{"start":{"line":106,"column":18},"end":{"line":106,"column":39}},"69":{"start":{"line":107,"column":19},"end":{"line":107,"column":34}},"70":{"start":{"line":108,"column":22},"end":{"line":108,"column":23}},"71":{"start":{"line":109,"column":22},"end":{"line":109,"column":43}},"72":{"start":{"line":110,"column":8},"end":{"line":115,"column":9}},"73":{"start":{"line":111,"column":12},"end":{"line":111,"column":46}},"74":{"start":{"line":114,"column":12},"end":{"line":114,"column":32}},"75":{"start":{"line":116,"column":8},"end":{"line":126,"column":9}},"76":{"start":{"line":117,"column":23},"end":{"line":117,"column":41}},"77":{"start":{"line":118,"column":12},"end":{"line":120,"column":13}},"78":{"start":{"line":119,"column":16},"end":{"line":119,"column":25}},"79":{"start":{"line":121,"column":12},"end":{"line":123,"column":13}},"80":{"start":{"line":122,"column":16},"end":{"line":122,"column":40}},"81":{"start":{"line":124,"column":12},"end":{"line":124,"column":38}},"82":{"start":{"line":125,"column":12},"end":{"line":125,"column":22}},"83":{"start":{"line":128,"column":4},"end":{"line":139,"column":6}},"84":{"start":{"line":129,"column":20},"end":{"line":129,"column":24}},"85":{"start":{"line":130,"column":8},"end":{"line":138,"column":11}},"86":{"start":{"line":132,"column":12},"end":{"line":132,"column":33}},"87":{"start":{"line":134,"column":12},"end":{"line":137,"column":15}},"88":{"start":{"line":136,"column":16},"end":{"line":136,"column":36}},"89":{"start":{"line":140,"column":4},"end":{"line":140,"column":25}},"90":{"start":{"line":142,"column":0},"end":{"line":142,"column":38}},"91":{"start":{"line":143,"column":0},"end":{"line":143,"column":21}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":45},"end":{"line":2,"column":46}},"loc":{"start":{"line":2,"column":57},"end":{"line":11,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":4,"column":47},"end":{"line":4,"column":48}},"loc":{"start":{"line":4,"column":63},"end":{"line":4,"column":83}},"line":4},"2":{"name":"(anonymous_2)","decl":{"start":{"line":5,"column":8},"end":{"line":5,"column":9}},"loc":{"start":{"line":5,"column":24},"end":{"line":5,"column":82}},"line":5},"3":{"name":"(anonymous_3)","decl":{"start":{"line":6,"column":11},"end":{"line":6,"column":12}},"loc":{"start":{"line":6,"column":27},"end":{"line":10,"column":5}},"line":6},"4":{"name":"__","decl":{"start":{"line":8,"column":17},"end":{"line":8,"column":19}},"loc":{"start":{"line":8,"column":22},"end":{"line":8,"column":47}},"line":8},"5":{"name":"(anonymous_5)","decl":{"start":{"line":12,"column":56},"end":{"line":12,"column":57}},"loc":{"start":{"line":12,"column":71},"end":{"line":14,"column":1}},"line":12},"6":{"name":"(anonymous_6)","decl":{"start":{"line":20,"column":35},"end":{"line":20,"column":36}},"loc":{"start":{"line":20,"column":53},"end":{"line":141,"column":1}},"line":20},"7":{"name":"ProcessorFork","decl":{"start":{"line":22,"column":13},"end":{"line":22,"column":26}},"loc":{"start":{"line":22,"column":38},"end":{"line":34,"column":5}},"line":22},"8":{"name":"(anonymous_8)","decl":{"start":{"line":35,"column":36},"end":{"line":35,"column":37}},"loc":{"start":{"line":35,"column":48},"end":{"line":43,"column":5}},"line":35},"9":{"name":"(anonymous_9)","decl":{"start":{"line":37,"column":38},"end":{"line":37,"column":39}},"loc":{"start":{"line":37,"column":65},"end":{"line":42,"column":9}},"line":37},"10":{"name":"(anonymous_10)","decl":{"start":{"line":44,"column":38},"end":{"line":44,"column":39}},"loc":{"start":{"line":44,"column":50},"end":{"line":47,"column":5}},"line":44},"11":{"name":"(anonymous_11)","decl":{"start":{"line":48,"column":43},"end":{"line":48,"column":44}},"loc":{"start":{"line":48,"column":60},"end":{"line":63,"column":5}},"line":48},"12":{"name":"(anonymous_12)","decl":{"start":{"line":64,"column":41},"end":{"line":64,"column":42}},"loc":{"start":{"line":64,"column":53},"end":{"line":97,"column":5}},"line":64},"13":{"name":"(anonymous_13)","decl":{"start":{"line":70,"column":40},"end":{"line":70,"column":41}},"loc":{"start":{"line":70,"column":55},"end":{"line":87,"column":9}},"line":70},"14":{"name":"(anonymous_14)","decl":{"start":{"line":88,"column":44},"end":{"line":88,"column":45}},"loc":{"start":{"line":88,"column":60},"end":{"line":92,"column":9}},"line":88},"15":{"name":"(anonymous_15)","decl":{"start":{"line":93,"column":44},"end":{"line":93,"column":45}},"loc":{"start":{"line":93,"column":60},"end":{"line":96,"column":9}},"line":93},"16":{"name":"(anonymous_16)","decl":{"start":{"line":98,"column":42},"end":{"line":98,"column":43}},"loc":{"start":{"line":98,"column":54},"end":{"line":104,"column":5}},"line":98},"17":{"name":"(anonymous_17)","decl":{"start":{"line":105,"column":40},"end":{"line":105,"column":41}},"loc":{"start":{"line":105,"column":56},"end":{"line":127,"column":5}},"line":105},"18":{"name":"(anonymous_18)","decl":{"start":{"line":128,"column":38},"end":{"line":128,"column":39}},"loc":{"start":{"line":128,"column":55},"end":{"line":139,"column":5}},"line":128},"19":{"name":"(anonymous_19)","decl":{"start":{"line":130,"column":38},"end":{"line":130,"column":39}},"loc":{"start":{"line":130,"column":65},"end":{"line":138,"column":9}},"line":130},"20":{"name":"(anonymous_20)","decl":{"start":{"line":134,"column":50},"end":{"line":134,"column":51}},"loc":{"start":{"line":134,"column":62},"end":{"line":137,"column":13}},"line":134}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":11,"column":4}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":11,"column":4}}],"line":2},"1":{"loc":{"start":{"line":3,"column":24},"end":{"line":5,"column":82}},"type":"binary-expr","locations":[{"start":{"line":3,"column":24},"end":{"line":3,"column":45}},{"start":{"line":4,"column":9},"end":{"line":4,"column":43}},{"start":{"line":4,"column":47},"end":{"line":4,"column":83}},{"start":{"line":5,"column":8},"end":{"line":5,"column":82}}],"line":3},"2":{"loc":{"start":{"line":5,"column":43},"end":{"line":5,"column":80}},"type":"if","locations":[{"start":{"line":5,"column":43},"end":{"line":5,"column":80}},{"start":{"line":5,"column":43},"end":{"line":5,"column":80}}],"line":5},"3":{"loc":{"start":{"line":9,"column":22},"end":{"line":9,"column":92}},"type":"cond-expr","locations":[{"start":{"line":9,"column":35},"end":{"line":9,"column":51}},{"start":{"line":9,"column":55},"end":{"line":9,"column":91}}],"line":9},"4":{"loc":{"start":{"line":12,"column":22},"end":{"line":14,"column":1}},"type":"binary-expr","locations":[{"start":{"line":12,"column":23},"end":{"line":12,"column":27}},{"start":{"line":12,"column":31},"end":{"line":12,"column":51}},{"start":{"line":12,"column":56},"end":{"line":14,"column":1}}],"line":12},"5":{"loc":{"start":{"line":13,"column":11},"end":{"line":13,"column":61}},"type":"cond-expr","locations":[{"start":{"line":13,"column":37},"end":{"line":13,"column":40}},{"start":{"line":13,"column":43},"end":{"line":13,"column":61}}],"line":13},"6":{"loc":{"start":{"line":13,"column":12},"end":{"line":13,"column":33}},"type":"binary-expr","locations":[{"start":{"line":13,"column":12},"end":{"line":13,"column":15}},{"start":{"line":13,"column":19},"end":{"line":13,"column":33}}],"line":13},"7":{"loc":{"start":{"line":23,"column":20},"end":{"line":23,"column":56}},"type":"binary-expr","locations":[{"start":{"line":23,"column":20},"end":{"line":23,"column":48}},{"start":{"line":23,"column":52},"end":{"line":23,"column":56}}],"line":23},"8":{"loc":{"start":{"line":50,"column":8},"end":{"line":55,"column":9}},"type":"if","locations":[{"start":{"line":50,"column":8},"end":{"line":55,"column":9}},{"start":{"line":50,"column":8},"end":{"line":55,"column":9}}],"line":50},"9":{"loc":{"start":{"line":56,"column":8},"end":{"line":61,"column":9}},"type":"if","locations":[{"start":{"line":56,"column":8},"end":{"line":61,"column":9}},{"start":{"line":56,"column":8},"end":{"line":61,"column":9}}],"line":56},"10":{"loc":{"start":{"line":71,"column":12},"end":{"line":86,"column":13}},"type":"if","locations":[{"start":{"line":71,"column":12},"end":{"line":86,"column":13}},{"start":{"line":71,"column":12},"end":{"line":86,"column":13}}],"line":71},"11":{"loc":{"start":{"line":74,"column":17},"end":{"line":86,"column":13}},"type":"if","locations":[{"start":{"line":74,"column":17},"end":{"line":86,"column":13}},{"start":{"line":74,"column":17},"end":{"line":86,"column":13}}],"line":74},"12":{"loc":{"start":{"line":75,"column":16},"end":{"line":77,"column":17}},"type":"if","locations":[{"start":{"line":75,"column":16},"end":{"line":77,"column":17}},{"start":{"line":75,"column":16},"end":{"line":77,"column":17}}],"line":75},"13":{"loc":{"start":{"line":79,"column":17},"end":{"line":86,"column":13}},"type":"if","locations":[{"start":{"line":79,"column":17},"end":{"line":86,"column":13}},{"start":{"line":79,"column":17},"end":{"line":86,"column":13}}],"line":79},"14":{"loc":{"start":{"line":80,"column":16},"end":{"line":82,"column":17}},"type":"if","locations":[{"start":{"line":80,"column":16},"end":{"line":82,"column":17}},{"start":{"line":80,"column":16},"end":{"line":82,"column":17}}],"line":80},"15":{"loc":{"start":{"line":84,"column":17},"end":{"line":86,"column":13}},"type":"if","locations":[{"start":{"line":84,"column":17},"end":{"line":86,"column":13}},{"start":{"line":84,"column":17},"end":{"line":86,"column":13}}],"line":84},"16":{"loc":{"start":{"line":100,"column":8},"end":{"line":102,"column":9}},"type":"if","locations":[{"start":{"line":100,"column":8},"end":{"line":102,"column":9}},{"start":{"line":100,"column":8},"end":{"line":102,"column":9}}],"line":100},"17":{"loc":{"start":{"line":110,"column":8},"end":{"line":115,"column":9}},"type":"if","locations":[{"start":{"line":110,"column":8},"end":{"line":115,"column":9}},{"start":{"line":110,"column":8},"end":{"line":115,"column":9}}],"line":110},"18":{"loc":{"start":{"line":111,"column":29},"end":{"line":111,"column":45}},"type":"binary-expr","locations":[{"start":{"line":111,"column":29},"end":{"line":111,"column":39}},{"start":{"line":111,"column":43},"end":{"line":111,"column":45}}],"line":111},"19":{"loc":{"start":{"line":117,"column":23},"end":{"line":117,"column":41}},"type":"binary-expr","locations":[{"start":{"line":117,"column":23},"end":{"line":117,"column":35}},{"start":{"line":117,"column":39},"end":{"line":117,"column":41}}],"line":117},"20":{"loc":{"start":{"line":118,"column":12},"end":{"line":120,"column":13}},"type":"if","locations":[{"start":{"line":118,"column":12},"end":{"line":120,"column":13}},{"start":{"line":118,"column":12},"end":{"line":120,"column":13}}],"line":118},"21":{"loc":{"start":{"line":121,"column":12},"end":{"line":123,"column":13}},"type":"if","locations":[{"start":{"line":121,"column":12},"end":{"line":123,"column":13}},{"start":{"line":121,"column":12},"end":{"line":123,"column":13}}],"line":121}},"s":{"0":1,"1":1,"2":0,"3":0,"4":0,"5":0,"6":1,"7":1,"8":1,"9":1,"10":1,"11":2,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":37,"20":37,"21":37,"22":37,"23":37,"24":37,"25":37,"26":37,"27":37,"28":1,"29":37,"30":37,"31":37,"32":37,"33":37,"34":1,"35":37,"36":37,"37":1,"38":37,"39":37,"40":1,"41":37,"42":3,"43":37,"44":1,"45":37,"46":37,"47":37,"48":145,"49":37,"50":108,"51":36,"52":2,"53":72,"54":36,"55":4,"56":36,"57":36,"58":37,"59":2886,"60":2886,"61":37,"62":1,"63":1,"64":121,"65":121,"66":121,"67":1,"68":2886,"69":2886,"70":2886,"71":2886,"72":2886,"73":3,"74":2883,"75":2886,"76":13554,"77":13554,"78":2883,"79":10671,"80":10671,"81":10671,"82":10671,"83":1,"84":85,"85":85,"86":85,"87":85,"88":85,"89":1,"90":1,"91":1},"f":{"0":1,"1":0,"2":0,"3":1,"4":1,"5":2,"6":1,"7":37,"8":37,"9":37,"10":37,"11":37,"12":37,"13":145,"14":2886,"15":1,"16":121,"17":2886,"18":85,"19":85,"20":85},"b":{"0":[1,1,1],"1":[1,0,0,0],"2":[0,0],"3":[0,1],"4":[1,1,1],"5":[1,1],"6":[2,2],"7":[37,37],"8":[1,36],"9":[3,34],"10":[37,108],"11":[36,72],"12":[2,34],"13":[36,36],"14":[4,32],"15":[36,0],"16":[121,0],"17":[3,2883],"18":[3,0],"19":[13554,2883],"20":[2883,10671],"21":[10671,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"eca31a7f39047392da82b6a0bea47a5523425e77","contentHash":"d334fec5a41b720c26a601da212a0ae7_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/Processor.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/Processor.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":31},"end":{"line":10,"column":3}},"2":{"start":{"line":5,"column":8},"end":{"line":5,"column":35}},"3":{"start":{"line":6,"column":8},"end":{"line":6,"column":43}},"4":{"start":{"line":7,"column":8},"end":{"line":7,"column":46}},"5":{"start":{"line":9,"column":4},"end":{"line":9,"column":21}},"6":{"start":{"line":11,"column":0},"end":{"line":11,"column":30}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":31},"end":{"line":3,"column":32}},"loc":{"start":{"line":3,"column":43},"end":{"line":10,"column":1}},"line":3},"1":{"name":"Processor","decl":{"start":{"line":4,"column":13},"end":{"line":4,"column":22}},"loc":{"start":{"line":4,"column":34},"end":{"line":8,"column":5}},"line":4}},"branchMap":{},"s":{"0":1,"1":1,"2":123,"3":123,"4":123,"5":1,"6":1},"f":{"0":1,"1":123},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"0099918b94b284b131c37ff00af9c98bbfc41856","contentHash":"62fdab4fce9e0cd2383b86b3fb486c1c_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/CSVError.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/CSVError.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":11,"column":4}},"1":{"start":{"line":3,"column":24},"end":{"line":5,"column":82}},"2":{"start":{"line":4,"column":65},"end":{"line":4,"column":81}},"3":{"start":{"line":5,"column":26},"end":{"line":5,"column":80}},"4":{"start":{"line":5,"column":43},"end":{"line":5,"column":80}},"5":{"start":{"line":5,"column":68},"end":{"line":5,"column":80}},"6":{"start":{"line":6,"column":4},"end":{"line":10,"column":6}},"7":{"start":{"line":7,"column":8},"end":{"line":7,"column":28}},"8":{"start":{"line":8,"column":24},"end":{"line":8,"column":45}},"9":{"start":{"line":9,"column":8},"end":{"line":9,"column":93}},"10":{"start":{"line":12,"column":0},"end":{"line":12,"column":62}},"11":{"start":{"line":13,"column":11},"end":{"line":13,"column":26}},"12":{"start":{"line":14,"column":30},"end":{"line":41,"column":8}},"13":{"start":{"line":15,"column":4},"end":{"line":15,"column":32}},"14":{"start":{"line":17,"column":20},"end":{"line":17,"column":129}},"15":{"start":{"line":18,"column":8},"end":{"line":18,"column":24}},"16":{"start":{"line":19,"column":8},"end":{"line":19,"column":26}},"17":{"start":{"line":20,"column":8},"end":{"line":20,"column":28}},"18":{"start":{"line":21,"column":8},"end":{"line":21,"column":39}},"19":{"start":{"line":22,"column":8},"end":{"line":22,"column":21}},"20":{"start":{"line":24,"column":4},"end":{"line":26,"column":6}},"21":{"start":{"line":25,"column":8},"end":{"line":25,"column":63}},"22":{"start":{"line":27,"column":4},"end":{"line":29,"column":6}},"23":{"start":{"line":28,"column":8},"end":{"line":28,"column":60}},"24":{"start":{"line":30,"column":4},"end":{"line":32,"column":6}},"25":{"start":{"line":31,"column":8},"end":{"line":31,"column":58}},"26":{"start":{"line":33,"column":4},"end":{"line":39,"column":6}},"27":{"start":{"line":34,"column":8},"end":{"line":38,"column":10}},"28":{"start":{"line":40,"column":4},"end":{"line":40,"column":20}},"29":{"start":{"line":42,"column":0},"end":{"line":42,"column":27}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":45},"end":{"line":2,"column":46}},"loc":{"start":{"line":2,"column":57},"end":{"line":11,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":4,"column":47},"end":{"line":4,"column":48}},"loc":{"start":{"line":4,"column":63},"end":{"line":4,"column":83}},"line":4},"2":{"name":"(anonymous_2)","decl":{"start":{"line":5,"column":8},"end":{"line":5,"column":9}},"loc":{"start":{"line":5,"column":24},"end":{"line":5,"column":82}},"line":5},"3":{"name":"(anonymous_3)","decl":{"start":{"line":6,"column":11},"end":{"line":6,"column":12}},"loc":{"start":{"line":6,"column":27},"end":{"line":10,"column":5}},"line":6},"4":{"name":"__","decl":{"start":{"line":8,"column":17},"end":{"line":8,"column":19}},"loc":{"start":{"line":8,"column":22},"end":{"line":8,"column":47}},"line":8},"5":{"name":"(anonymous_5)","decl":{"start":{"line":14,"column":30},"end":{"line":14,"column":31}},"loc":{"start":{"line":14,"column":48},"end":{"line":41,"column":1}},"line":14},"6":{"name":"CSVError","decl":{"start":{"line":16,"column":13},"end":{"line":16,"column":21}},"loc":{"start":{"line":16,"column":40},"end":{"line":23,"column":5}},"line":16},"7":{"name":"(anonymous_7)","decl":{"start":{"line":24,"column":33},"end":{"line":24,"column":34}},"loc":{"start":{"line":24,"column":57},"end":{"line":26,"column":5}},"line":24},"8":{"name":"(anonymous_8)","decl":{"start":{"line":27,"column":30},"end":{"line":27,"column":31}},"loc":{"start":{"line":27,"column":54},"end":{"line":29,"column":5}},"line":27},"9":{"name":"(anonymous_9)","decl":{"start":{"line":30,"column":24},"end":{"line":30,"column":25}},"loc":{"start":{"line":30,"column":39},"end":{"line":32,"column":5}},"line":30},"10":{"name":"(anonymous_10)","decl":{"start":{"line":33,"column":32},"end":{"line":33,"column":33}},"loc":{"start":{"line":33,"column":44},"end":{"line":39,"column":5}},"line":33}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":11,"column":4}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":11,"column":4}}],"line":2},"1":{"loc":{"start":{"line":3,"column":24},"end":{"line":5,"column":82}},"type":"binary-expr","locations":[{"start":{"line":3,"column":24},"end":{"line":3,"column":45}},{"start":{"line":4,"column":9},"end":{"line":4,"column":43}},{"start":{"line":4,"column":47},"end":{"line":4,"column":83}},{"start":{"line":5,"column":8},"end":{"line":5,"column":82}}],"line":3},"2":{"loc":{"start":{"line":5,"column":43},"end":{"line":5,"column":80}},"type":"if","locations":[{"start":{"line":5,"column":43},"end":{"line":5,"column":80}},{"start":{"line":5,"column":43},"end":{"line":5,"column":80}}],"line":5},"3":{"loc":{"start":{"line":9,"column":22},"end":{"line":9,"column":92}},"type":"cond-expr","locations":[{"start":{"line":9,"column":35},"end":{"line":9,"column":51}},{"start":{"line":9,"column":55},"end":{"line":9,"column":91}}],"line":9},"4":{"loc":{"start":{"line":17,"column":20},"end":{"line":17,"column":129}},"type":"binary-expr","locations":[{"start":{"line":17,"column":20},"end":{"line":17,"column":121}},{"start":{"line":17,"column":125},"end":{"line":17,"column":129}}],"line":17},"5":{"loc":{"start":{"line":17,"column":89},"end":{"line":17,"column":119}},"type":"cond-expr","locations":[{"start":{"line":17,"column":97},"end":{"line":17,"column":114}},{"start":{"line":17,"column":117},"end":{"line":17,"column":119}}],"line":17}},"s":{"0":1,"1":1,"2":0,"3":0,"4":0,"5":0,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":8,"15":8,"16":8,"17":8,"18":8,"19":8,"20":1,"21":2,"22":1,"23":5,"24":1,"25":1,"26":1,"27":0,"28":1,"29":1},"f":{"0":1,"1":0,"2":0,"3":1,"4":1,"5":1,"6":8,"7":2,"8":5,"9":1,"10":0},"b":{"0":[1,1,1],"1":[1,0,0,0],"2":[0,0],"3":[0,1],"4":[8,0],"5":[6,2]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"b01710b079aec5405ddd368b89e30e1c078e761c","contentHash":"fdabd56f284bbcdce7a38d4cf68b00c3_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/ProcessorLocal.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/ProcessorLocal.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":11,"column":4}},"1":{"start":{"line":3,"column":24},"end":{"line":5,"column":82}},"2":{"start":{"line":4,"column":65},"end":{"line":4,"column":81}},"3":{"start":{"line":5,"column":26},"end":{"line":5,"column":80}},"4":{"start":{"line":5,"column":43},"end":{"line":5,"column":80}},"5":{"start":{"line":5,"column":68},"end":{"line":5,"column":80}},"6":{"start":{"line":6,"column":4},"end":{"line":10,"column":6}},"7":{"start":{"line":7,"column":8},"end":{"line":7,"column":28}},"8":{"start":{"line":8,"column":24},"end":{"line":8,"column":45}},"9":{"start":{"line":9,"column":8},"end":{"line":9,"column":93}},"10":{"start":{"line":12,"column":22},"end":{"line":14,"column":1}},"11":{"start":{"line":13,"column":4},"end":{"line":13,"column":62}},"12":{"start":{"line":15,"column":0},"end":{"line":15,"column":62}},"13":{"start":{"line":16,"column":18},"end":{"line":16,"column":40}},"14":{"start":{"line":17,"column":17},"end":{"line":17,"column":53}},"15":{"start":{"line":18,"column":18},"end":{"line":18,"column":40}},"16":{"start":{"line":19,"column":15},"end":{"line":19,"column":51}},"17":{"start":{"line":20,"column":17},"end":{"line":20,"column":38}},"18":{"start":{"line":21,"column":13},"end":{"line":21,"column":30}},"19":{"start":{"line":22,"column":17},"end":{"line":22,"column":38}},"20":{"start":{"line":23,"column":19},"end":{"line":23,"column":59}},"21":{"start":{"line":24,"column":17},"end":{"line":24,"column":55}},"22":{"start":{"line":25,"column":36},"end":{"line":279,"column":24}},"23":{"start":{"line":26,"column":4},"end":{"line":26,"column":38}},"24":{"start":{"line":28,"column":20},"end":{"line":28,"column":76}},"25":{"start":{"line":29,"column":8},"end":{"line":29,"column":66}},"26":{"start":{"line":30,"column":8},"end":{"line":30,"column":33}},"27":{"start":{"line":31,"column":8},"end":{"line":31,"column":39}},"28":{"start":{"line":32,"column":8},"end":{"line":32,"column":34}},"29":{"start":{"line":33,"column":8},"end":{"line":33,"column":40}},"30":{"start":{"line":34,"column":8},"end":{"line":34,"column":21}},"31":{"start":{"line":36,"column":4},"end":{"line":54,"column":6}},"32":{"start":{"line":37,"column":20},"end":{"line":37,"column":24}},"33":{"start":{"line":38,"column":8},"end":{"line":53,"column":9}},"34":{"start":{"line":39,"column":22},"end":{"line":39,"column":48}},"35":{"start":{"line":40,"column":12},"end":{"line":40,"column":51}},"36":{"start":{"line":41,"column":12},"end":{"line":49,"column":15}},"37":{"start":{"line":43,"column":16},"end":{"line":48,"column":17}},"38":{"start":{"line":44,"column":20},"end":{"line":44,"column":160}},"39":{"start":{"line":47,"column":20},"end":{"line":47,"column":59}},"40":{"start":{"line":52,"column":12},"end":{"line":52,"column":50}},"41":{"start":{"line":55,"column":4},"end":{"line":57,"column":6}},"42":{"start":{"line":56,"column":8},"end":{"line":56,"column":44}},"43":{"start":{"line":58,"column":4},"end":{"line":67,"column":7}},"44":{"start":{"line":60,"column":12},"end":{"line":62,"column":13}},"45":{"start":{"line":61,"column":16},"end":{"line":61,"column":79}},"46":{"start":{"line":63,"column":12},"end":{"line":63,"column":37}},"47":{"start":{"line":68,"column":4},"end":{"line":77,"column":7}},"48":{"start":{"line":70,"column":12},"end":{"line":72,"column":13}},"49":{"start":{"line":71,"column":16},"end":{"line":71,"column":83}},"50":{"start":{"line":73,"column":12},"end":{"line":73,"column":38}},"51":{"start":{"line":78,"column":4},"end":{"line":105,"column":6}},"52":{"start":{"line":79,"column":20},"end":{"line":79,"column":24}},"53":{"start":{"line":80,"column":8},"end":{"line":80,"column":58}},"54":{"start":{"line":80,"column":37},"end":{"line":80,"column":56}},"55":{"start":{"line":82,"column":8},"end":{"line":87,"column":9}},"56":{"start":{"line":83,"column":12},"end":{"line":83,"column":41}},"57":{"start":{"line":86,"column":12},"end":{"line":86,"column":84}},"58":{"start":{"line":88,"column":8},"end":{"line":104,"column":11}},"59":{"start":{"line":90,"column":12},"end":{"line":95,"column":13}},"60":{"start":{"line":91,"column":16},"end":{"line":91,"column":63}},"61":{"start":{"line":94,"column":16},"end":{"line":94,"column":33}},"62":{"start":{"line":98,"column":12},"end":{"line":103,"column":13}},"63":{"start":{"line":99,"column":16},"end":{"line":99,"column":57}},"64":{"start":{"line":102,"column":16},"end":{"line":102,"column":54}},"65":{"start":{"line":106,"column":4},"end":{"line":150,"column":6}},"66":{"start":{"line":107,"column":20},"end":{"line":107,"column":24}},"67":{"start":{"line":108,"column":21},"end":{"line":108,"column":32}},"68":{"start":{"line":109,"column":22},"end":{"line":109,"column":34}},"69":{"start":{"line":110,"column":8},"end":{"line":112,"column":9}},"70":{"start":{"line":111,"column":12},"end":{"line":111,"column":43}},"71":{"start":{"line":113,"column":8},"end":{"line":116,"column":9}},"72":{"start":{"line":114,"column":12},"end":{"line":114,"column":52}},"73":{"start":{"line":115,"column":12},"end":{"line":115,"column":35}},"74":{"start":{"line":118,"column":8},"end":{"line":120,"column":9}},"75":{"start":{"line":119,"column":12},"end":{"line":119,"column":33}},"76":{"start":{"line":121,"column":33},"end":{"line":121,"column":71}},"77":{"start":{"line":122,"column":8},"end":{"line":128,"column":9}},"78":{"start":{"line":123,"column":12},"end":{"line":123,"column":82}},"79":{"start":{"line":126,"column":12},"end":{"line":126,"column":70}},"80":{"start":{"line":127,"column":12},"end":{"line":127,"column":44}},"81":{"start":{"line":129,"column":8},"end":{"line":149,"column":9}},"82":{"start":{"line":130,"column":23},"end":{"line":130,"column":29}},"83":{"start":{"line":131,"column":12},"end":{"line":136,"column":13}},"84":{"start":{"line":132,"column":16},"end":{"line":132,"column":69}},"85":{"start":{"line":135,"column":16},"end":{"line":135,"column":76}},"86":{"start":{"line":137,"column":12},"end":{"line":145,"column":15}},"87":{"start":{"line":138,"column":16},"end":{"line":144,"column":17}},"88":{"start":{"line":140,"column":20},"end":{"line":140,"column":60}},"89":{"start":{"line":143,"column":20},"end":{"line":143,"column":55}},"90":{"start":{"line":148,"column":12},"end":{"line":148,"column":50}},"91":{"start":{"line":151,"column":4},"end":{"line":194,"column":6}},"92":{"start":{"line":152,"column":8},"end":{"line":185,"column":9}},"93":{"start":{"line":153,"column":12},"end":{"line":158,"column":13}},"94":{"start":{"line":154,"column":16},"end":{"line":154,"column":59}},"95":{"start":{"line":157,"column":16},"end":{"line":157,"column":42}},"96":{"start":{"line":161,"column":23},"end":{"line":161,"column":25}},"97":{"start":{"line":162,"column":28},"end":{"line":162,"column":30}},"98":{"start":{"line":163,"column":12},"end":{"line":174,"column":13}},"99":{"start":{"line":164,"column":27},"end":{"line":164,"column":47}},"100":{"start":{"line":165,"column":26},"end":{"line":165,"column":51}},"101":{"start":{"line":166,"column":16},"end":{"line":173,"column":17}},"102":{"start":{"line":167,"column":20},"end":{"line":167,"column":42}},"103":{"start":{"line":168,"column":20},"end":{"line":168,"column":30}},"104":{"start":{"line":169,"column":20},"end":{"line":169,"column":26}},"105":{"start":{"line":172,"column":20},"end":{"line":172,"column":71}},"106":{"start":{"line":175,"column":12},"end":{"line":175,"column":60}},"107":{"start":{"line":176,"column":12},"end":{"line":178,"column":13}},"108":{"start":{"line":177,"column":16},"end":{"line":177,"column":26}},"109":{"start":{"line":179,"column":12},"end":{"line":184,"column":13}},"110":{"start":{"line":180,"column":16},"end":{"line":180,"column":59}},"111":{"start":{"line":183,"column":16},"end":{"line":183,"column":49}},"112":{"start":{"line":186,"column":8},"end":{"line":188,"column":9}},"113":{"start":{"line":187,"column":12},"end":{"line":187,"column":32}},"114":{"start":{"line":189,"column":8},"end":{"line":192,"column":9}},"115":{"start":{"line":190,"column":12},"end":{"line":190,"column":64}},"116":{"start":{"line":191,"column":12},"end":{"line":191,"column":36}},"117":{"start":{"line":193,"column":8},"end":{"line":193,"column":42}},"118":{"start":{"line":195,"column":4},"end":{"line":235,"column":6}},"119":{"start":{"line":196,"column":8},"end":{"line":196,"column":42}},"120":{"start":{"line":197,"column":8},"end":{"line":234,"column":9}},"121":{"start":{"line":198,"column":26},"end":{"line":198,"column":46}},"122":{"start":{"line":199,"column":12},"end":{"line":232,"column":13}},"123":{"start":{"line":200,"column":16},"end":{"line":220,"column":17}},"124":{"start":{"line":201,"column":20},"end":{"line":211,"column":21}},"125":{"start":{"line":202,"column":24},"end":{"line":207,"column":25}},"126":{"start":{"line":203,"column":28},"end":{"line":203,"column":65}},"127":{"start":{"line":206,"column":28},"end":{"line":206,"column":37}},"128":{"start":{"line":210,"column":24},"end":{"line":210,"column":61}},"129":{"start":{"line":213,"column":21},"end":{"line":220,"column":17}},"130":{"start":{"line":214,"column":20},"end":{"line":216,"column":21}},"131":{"start":{"line":215,"column":24},"end":{"line":215,"column":61}},"132":{"start":{"line":219,"column":20},"end":{"line":219,"column":57}},"133":{"start":{"line":233,"column":12},"end":{"line":233,"column":106}},"134":{"start":{"line":236,"column":4},"end":{"line":254,"column":6}},"135":{"start":{"line":237,"column":8},"end":{"line":249,"column":9}},"136":{"start":{"line":238,"column":12},"end":{"line":238,"column":25}},"137":{"start":{"line":241,"column":25},"end":{"line":241,"column":61}},"138":{"start":{"line":242,"column":12},"end":{"line":242,"column":70}},"139":{"start":{"line":243,"column":12},"end":{"line":248,"column":13}},"140":{"start":{"line":244,"column":16},"end":{"line":244,"column":40}},"141":{"start":{"line":247,"column":16},"end":{"line":247,"column":78}},"142":{"start":{"line":255,"column":4},"end":{"line":264,"column":6}},"143":{"start":{"line":256,"column":8},"end":{"line":263,"column":9}},"144":{"start":{"line":257,"column":12},"end":{"line":262,"column":13}},"145":{"start":{"line":258,"column":16},"end":{"line":258,"column":94}},"146":{"start":{"line":261,"column":16},"end":{"line":261,"column":49}},"147":{"start":{"line":265,"column":4},"end":{"line":277,"column":6}},"148":{"start":{"line":266,"column":20},"end":{"line":266,"column":24}},"149":{"start":{"line":267,"column":8},"end":{"line":276,"column":11}},"150":{"start":{"line":268,"column":12},"end":{"line":275,"column":15}},"151":{"start":{"line":269,"column":16},"end":{"line":274,"column":17}},"152":{"start":{"line":270,"column":20},"end":{"line":270,"column":32}},"153":{"start":{"line":273,"column":20},"end":{"line":273,"column":35}},"154":{"start":{"line":278,"column":4},"end":{"line":278,"column":26}},"155":{"start":{"line":280,"column":0},"end":{"line":280,"column":40}},"156":{"start":{"line":282,"column":4},"end":{"line":308,"column":5}},"157":{"start":{"line":283,"column":8},"end":{"line":283,"column":13}},"158":{"start":{"line":286,"column":8},"end":{"line":307,"column":9}},"159":{"start":{"line":287,"column":23},"end":{"line":287,"column":36}},"160":{"start":{"line":288,"column":22},"end":{"line":288,"column":86}},"161":{"start":{"line":289,"column":12},"end":{"line":289,"column":21}},"162":{"start":{"line":290,"column":12},"end":{"line":303,"column":13}},"163":{"start":{"line":291,"column":16},"end":{"line":294,"column":19}},"164":{"start":{"line":292,"column":20},"end":{"line":292,"column":46}},"165":{"start":{"line":293,"column":20},"end":{"line":293,"column":64}},"166":{"start":{"line":297,"column":16},"end":{"line":297,"column":40}},"167":{"start":{"line":298,"column":16},"end":{"line":301,"column":17}},"168":{"start":{"line":299,"column":20},"end":{"line":299,"column":110}},"169":{"start":{"line":300,"column":20},"end":{"line":300,"column":29}},"170":{"start":{"line":302,"column":16},"end":{"line":302,"column":21}},"171":{"start":{"line":306,"column":12},"end":{"line":306,"column":17}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":45},"end":{"line":2,"column":46}},"loc":{"start":{"line":2,"column":57},"end":{"line":11,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":4,"column":47},"end":{"line":4,"column":48}},"loc":{"start":{"line":4,"column":63},"end":{"line":4,"column":83}},"line":4},"2":{"name":"(anonymous_2)","decl":{"start":{"line":5,"column":8},"end":{"line":5,"column":9}},"loc":{"start":{"line":5,"column":24},"end":{"line":5,"column":82}},"line":5},"3":{"name":"(anonymous_3)","decl":{"start":{"line":6,"column":11},"end":{"line":6,"column":12}},"loc":{"start":{"line":6,"column":27},"end":{"line":10,"column":5}},"line":6},"4":{"name":"__","decl":{"start":{"line":8,"column":17},"end":{"line":8,"column":19}},"loc":{"start":{"line":8,"column":22},"end":{"line":8,"column":47}},"line":8},"5":{"name":"(anonymous_5)","decl":{"start":{"line":12,"column":56},"end":{"line":12,"column":57}},"loc":{"start":{"line":12,"column":71},"end":{"line":14,"column":1}},"line":12},"6":{"name":"(anonymous_6)","decl":{"start":{"line":25,"column":36},"end":{"line":25,"column":37}},"loc":{"start":{"line":25,"column":54},"end":{"line":279,"column":1}},"line":25},"7":{"name":"ProcessorLocal","decl":{"start":{"line":27,"column":13},"end":{"line":27,"column":27}},"loc":{"start":{"line":27,"column":30},"end":{"line":35,"column":5}},"line":27},"8":{"name":"(anonymous_8)","decl":{"start":{"line":36,"column":37},"end":{"line":36,"column":38}},"loc":{"start":{"line":36,"column":49},"end":{"line":54,"column":5}},"line":36},"9":{"name":"(anonymous_9)","decl":{"start":{"line":42,"column":22},"end":{"line":42,"column":23}},"loc":{"start":{"line":42,"column":37},"end":{"line":49,"column":13}},"line":42},"10":{"name":"(anonymous_10)","decl":{"start":{"line":55,"column":39},"end":{"line":55,"column":40}},"loc":{"start":{"line":55,"column":51},"end":{"line":57,"column":5}},"line":55},"11":{"name":"(anonymous_11)","decl":{"start":{"line":59,"column":13},"end":{"line":59,"column":14}},"loc":{"start":{"line":59,"column":25},"end":{"line":64,"column":9}},"line":59},"12":{"name":"(anonymous_12)","decl":{"start":{"line":69,"column":13},"end":{"line":69,"column":14}},"loc":{"start":{"line":69,"column":25},"end":{"line":74,"column":9}},"line":69},"13":{"name":"(anonymous_13)","decl":{"start":{"line":78,"column":39},"end":{"line":78,"column":40}},"loc":{"start":{"line":78,"column":68},"end":{"line":105,"column":5}},"line":78},"14":{"name":"(anonymous_14)","decl":{"start":{"line":89,"column":18},"end":{"line":89,"column":19}},"loc":{"start":{"line":89,"column":30},"end":{"line":96,"column":9}},"line":89},"15":{"name":"(anonymous_15)","decl":{"start":{"line":97,"column":18},"end":{"line":97,"column":19}},"loc":{"start":{"line":97,"column":33},"end":{"line":104,"column":9}},"line":97},"16":{"name":"(anonymous_16)","decl":{"start":{"line":106,"column":42},"end":{"line":106,"column":43}},"loc":{"start":{"line":106,"column":69},"end":{"line":150,"column":5}},"line":106},"17":{"name":"(anonymous_17)","decl":{"start":{"line":137,"column":29},"end":{"line":137,"column":30}},"loc":{"start":{"line":137,"column":46},"end":{"line":145,"column":13}},"line":137},"18":{"name":"(anonymous_18)","decl":{"start":{"line":151,"column":51},"end":{"line":151,"column":52}},"loc":{"start":{"line":151,"column":68},"end":{"line":194,"column":5}},"line":151},"19":{"name":"(anonymous_19)","decl":{"start":{"line":195,"column":44},"end":{"line":195,"column":45}},"loc":{"start":{"line":195,"column":56},"end":{"line":235,"column":5}},"line":195},"20":{"name":"(anonymous_20)","decl":{"start":{"line":236,"column":46},"end":{"line":236,"column":47}},"loc":{"start":{"line":236,"column":63},"end":{"line":254,"column":5}},"line":236},"21":{"name":"(anonymous_21)","decl":{"start":{"line":255,"column":46},"end":{"line":255,"column":47}},"loc":{"start":{"line":255,"column":61},"end":{"line":264,"column":5}},"line":255},"22":{"name":"(anonymous_22)","decl":{"start":{"line":265,"column":46},"end":{"line":265,"column":47}},"loc":{"start":{"line":265,"column":63},"end":{"line":277,"column":5}},"line":265},"23":{"name":"(anonymous_23)","decl":{"start":{"line":267,"column":38},"end":{"line":267,"column":39}},"loc":{"start":{"line":267,"column":65},"end":{"line":276,"column":9}},"line":267},"24":{"name":"(anonymous_24)","decl":{"start":{"line":268,"column":53},"end":{"line":268,"column":54}},"loc":{"start":{"line":268,"column":68},"end":{"line":275,"column":13}},"line":268},"25":{"name":"processLineHook","decl":{"start":{"line":281,"column":9},"end":{"line":281,"column":24}},"loc":{"start":{"line":281,"column":53},"end":{"line":309,"column":1}},"line":281},"26":{"name":"(anonymous_26)","decl":{"start":{"line":291,"column":25},"end":{"line":291,"column":26}},"loc":{"start":{"line":291,"column":42},"end":{"line":294,"column":17}},"line":291}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":11,"column":4}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":11,"column":4}}],"line":2},"1":{"loc":{"start":{"line":3,"column":24},"end":{"line":5,"column":82}},"type":"binary-expr","locations":[{"start":{"line":3,"column":24},"end":{"line":3,"column":45}},{"start":{"line":4,"column":9},"end":{"line":4,"column":43}},{"start":{"line":4,"column":47},"end":{"line":4,"column":83}},{"start":{"line":5,"column":8},"end":{"line":5,"column":82}}],"line":3},"2":{"loc":{"start":{"line":5,"column":43},"end":{"line":5,"column":80}},"type":"if","locations":[{"start":{"line":5,"column":43},"end":{"line":5,"column":80}},{"start":{"line":5,"column":43},"end":{"line":5,"column":80}}],"line":5},"3":{"loc":{"start":{"line":9,"column":22},"end":{"line":9,"column":92}},"type":"cond-expr","locations":[{"start":{"line":9,"column":35},"end":{"line":9,"column":51}},{"start":{"line":9,"column":55},"end":{"line":9,"column":91}}],"line":9},"4":{"loc":{"start":{"line":12,"column":22},"end":{"line":14,"column":1}},"type":"binary-expr","locations":[{"start":{"line":12,"column":23},"end":{"line":12,"column":27}},{"start":{"line":12,"column":31},"end":{"line":12,"column":51}},{"start":{"line":12,"column":56},"end":{"line":14,"column":1}}],"line":12},"5":{"loc":{"start":{"line":13,"column":11},"end":{"line":13,"column":61}},"type":"cond-expr","locations":[{"start":{"line":13,"column":37},"end":{"line":13,"column":40}},{"start":{"line":13,"column":43},"end":{"line":13,"column":61}}],"line":13},"6":{"loc":{"start":{"line":13,"column":12},"end":{"line":13,"column":33}},"type":"binary-expr","locations":[{"start":{"line":13,"column":12},"end":{"line":13,"column":15}},{"start":{"line":13,"column":19},"end":{"line":13,"column":33}}],"line":13},"7":{"loc":{"start":{"line":28,"column":20},"end":{"line":28,"column":76}},"type":"binary-expr","locations":[{"start":{"line":28,"column":20},"end":{"line":28,"column":35}},{"start":{"line":28,"column":39},"end":{"line":28,"column":68}},{"start":{"line":28,"column":72},"end":{"line":28,"column":76}}],"line":28},"8":{"loc":{"start":{"line":38,"column":8},"end":{"line":53,"column":9}},"type":"if","locations":[{"start":{"line":38,"column":8},"end":{"line":53,"column":9}},{"start":{"line":38,"column":8},"end":{"line":53,"column":9}}],"line":38},"9":{"loc":{"start":{"line":38,"column":12},"end":{"line":38,"column":79}},"type":"binary-expr","locations":[{"start":{"line":38,"column":12},"end":{"line":38,"column":38}},{"start":{"line":38,"column":42},"end":{"line":38,"column":79}}],"line":38},"10":{"loc":{"start":{"line":43,"column":16},"end":{"line":48,"column":17}},"type":"if","locations":[{"start":{"line":43,"column":16},"end":{"line":48,"column":17}},{"start":{"line":43,"column":16},"end":{"line":48,"column":17}}],"line":43},"11":{"loc":{"start":{"line":43,"column":20},"end":{"line":43,"column":89}},"type":"binary-expr","locations":[{"start":{"line":43,"column":20},"end":{"line":43,"column":47}},{"start":{"line":43,"column":51},"end":{"line":43,"column":89}}],"line":43},"12":{"loc":{"start":{"line":60,"column":12},"end":{"line":62,"column":13}},"type":"if","locations":[{"start":{"line":60,"column":12},"end":{"line":62,"column":13}},{"start":{"line":60,"column":12},"end":{"line":62,"column":13}}],"line":60},"13":{"loc":{"start":{"line":70,"column":12},"end":{"line":72,"column":13}},"type":"if","locations":[{"start":{"line":70,"column":12},"end":{"line":72,"column":13}},{"start":{"line":70,"column":12},"end":{"line":72,"column":13}}],"line":70},"14":{"loc":{"start":{"line":80,"column":8},"end":{"line":80,"column":58}},"type":"if","locations":[{"start":{"line":80,"column":8},"end":{"line":80,"column":58}},{"start":{"line":80,"column":8},"end":{"line":80,"column":58}}],"line":80},"15":{"loc":{"start":{"line":82,"column":8},"end":{"line":87,"column":9}},"type":"if","locations":[{"start":{"line":82,"column":8},"end":{"line":87,"column":9}},{"start":{"line":82,"column":8},"end":{"line":87,"column":9}}],"line":82},"16":{"loc":{"start":{"line":90,"column":12},"end":{"line":95,"column":13}},"type":"if","locations":[{"start":{"line":90,"column":12},"end":{"line":95,"column":13}},{"start":{"line":90,"column":12},"end":{"line":95,"column":13}}],"line":90},"17":{"loc":{"start":{"line":98,"column":12},"end":{"line":103,"column":13}},"type":"if","locations":[{"start":{"line":98,"column":12},"end":{"line":103,"column":13}},{"start":{"line":98,"column":12},"end":{"line":103,"column":13}}],"line":98},"18":{"loc":{"start":{"line":98,"column":16},"end":{"line":98,"column":37}},"type":"binary-expr","locations":[{"start":{"line":98,"column":16},"end":{"line":98,"column":19}},{"start":{"line":98,"column":23},"end":{"line":98,"column":37}}],"line":98},"19":{"loc":{"start":{"line":110,"column":8},"end":{"line":112,"column":9}},"type":"if","locations":[{"start":{"line":110,"column":8},"end":{"line":112,"column":9}},{"start":{"line":110,"column":8},"end":{"line":112,"column":9}}],"line":110},"20":{"loc":{"start":{"line":113,"column":8},"end":{"line":116,"column":9}},"type":"if","locations":[{"start":{"line":113,"column":8},"end":{"line":116,"column":9}},{"start":{"line":113,"column":8},"end":{"line":116,"column":9}}],"line":113},"21":{"loc":{"start":{"line":113,"column":12},"end":{"line":113,"column":63}},"type":"binary-expr","locations":[{"start":{"line":113,"column":12},"end":{"line":113,"column":28}},{"start":{"line":113,"column":32},"end":{"line":113,"column":48}},{"start":{"line":113,"column":52},"end":{"line":113,"column":63}}],"line":113},"22":{"loc":{"start":{"line":118,"column":8},"end":{"line":120,"column":9}},"type":"if","locations":[{"start":{"line":118,"column":8},"end":{"line":120,"column":9}},{"start":{"line":118,"column":8},"end":{"line":120,"column":9}}],"line":118},"23":{"loc":{"start":{"line":118,"column":12},"end":{"line":118,"column":50}},"type":"binary-expr","locations":[{"start":{"line":118,"column":12},"end":{"line":118,"column":30}},{"start":{"line":118,"column":34},"end":{"line":118,"column":50}}],"line":118},"24":{"loc":{"start":{"line":122,"column":8},"end":{"line":128,"column":9}},"type":"if","locations":[{"start":{"line":122,"column":8},"end":{"line":128,"column":9}},{"start":{"line":122,"column":8},"end":{"line":128,"column":9}}],"line":122},"25":{"loc":{"start":{"line":129,"column":8},"end":{"line":149,"column":9}},"type":"if","locations":[{"start":{"line":129,"column":8},"end":{"line":149,"column":9}},{"start":{"line":129,"column":8},"end":{"line":149,"column":9}}],"line":129},"26":{"loc":{"start":{"line":131,"column":12},"end":{"line":136,"column":13}},"type":"if","locations":[{"start":{"line":131,"column":12},"end":{"line":136,"column":13}},{"start":{"line":131,"column":12},"end":{"line":136,"column":13}}],"line":131},"27":{"loc":{"start":{"line":138,"column":16},"end":{"line":144,"column":17}},"type":"if","locations":[{"start":{"line":138,"column":16},"end":{"line":144,"column":17}},{"start":{"line":138,"column":16},"end":{"line":144,"column":17}}],"line":138},"28":{"loc":{"start":{"line":138,"column":20},"end":{"line":139,"column":45}},"type":"binary-expr","locations":[{"start":{"line":138,"column":20},"end":{"line":138,"column":36}},{"start":{"line":139,"column":23},"end":{"line":139,"column":45}}],"line":138},"29":{"loc":{"start":{"line":152,"column":8},"end":{"line":185,"column":9}},"type":"if","locations":[{"start":{"line":152,"column":8},"end":{"line":185,"column":9}},{"start":{"line":152,"column":8},"end":{"line":185,"column":9}}],"line":152},"30":{"loc":{"start":{"line":153,"column":12},"end":{"line":158,"column":13}},"type":"if","locations":[{"start":{"line":153,"column":12},"end":{"line":158,"column":13}},{"start":{"line":153,"column":12},"end":{"line":158,"column":13}}],"line":153},"31":{"loc":{"start":{"line":166,"column":16},"end":{"line":173,"column":17}},"type":"if","locations":[{"start":{"line":166,"column":16},"end":{"line":173,"column":17}},{"start":{"line":166,"column":16},"end":{"line":173,"column":17}}],"line":166},"32":{"loc":{"start":{"line":176,"column":12},"end":{"line":178,"column":13}},"type":"if","locations":[{"start":{"line":176,"column":12},"end":{"line":178,"column":13}},{"start":{"line":176,"column":12},"end":{"line":178,"column":13}}],"line":176},"33":{"loc":{"start":{"line":179,"column":12},"end":{"line":184,"column":13}},"type":"if","locations":[{"start":{"line":179,"column":12},"end":{"line":184,"column":13}},{"start":{"line":179,"column":12},"end":{"line":184,"column":13}}],"line":179},"34":{"loc":{"start":{"line":186,"column":8},"end":{"line":188,"column":9}},"type":"if","locations":[{"start":{"line":186,"column":8},"end":{"line":188,"column":9}},{"start":{"line":186,"column":8},"end":{"line":188,"column":9}}],"line":186},"35":{"loc":{"start":{"line":186,"column":12},"end":{"line":186,"column":89}},"type":"binary-expr","locations":[{"start":{"line":186,"column":12},"end":{"line":186,"column":48}},{"start":{"line":186,"column":52},"end":{"line":186,"column":89}}],"line":186},"36":{"loc":{"start":{"line":189,"column":8},"end":{"line":192,"column":9}},"type":"if","locations":[{"start":{"line":189,"column":8},"end":{"line":192,"column":9}},{"start":{"line":189,"column":8},"end":{"line":192,"column":9}}],"line":189},"37":{"loc":{"start":{"line":189,"column":12},"end":{"line":189,"column":50}},"type":"binary-expr","locations":[{"start":{"line":189,"column":12},"end":{"line":189,"column":29}},{"start":{"line":189,"column":33},"end":{"line":189,"column":50}}],"line":189},"38":{"loc":{"start":{"line":197,"column":8},"end":{"line":234,"column":9}},"type":"if","locations":[{"start":{"line":197,"column":8},"end":{"line":234,"column":9}},{"start":{"line":197,"column":8},"end":{"line":234,"column":9}}],"line":197},"39":{"loc":{"start":{"line":200,"column":16},"end":{"line":220,"column":17}},"type":"if","locations":[{"start":{"line":200,"column":16},"end":{"line":220,"column":17}},{"start":{"line":200,"column":16},"end":{"line":220,"column":17}}],"line":200},"40":{"loc":{"start":{"line":201,"column":20},"end":{"line":211,"column":21}},"type":"if","locations":[{"start":{"line":201,"column":20},"end":{"line":211,"column":21}},{"start":{"line":201,"column":20},"end":{"line":211,"column":21}}],"line":201},"41":{"loc":{"start":{"line":202,"column":24},"end":{"line":207,"column":25}},"type":"if","locations":[{"start":{"line":202,"column":24},"end":{"line":207,"column":25}},{"start":{"line":202,"column":24},"end":{"line":207,"column":25}}],"line":202},"42":{"loc":{"start":{"line":202,"column":28},"end":{"line":202,"column":101}},"type":"binary-expr","locations":[{"start":{"line":202,"column":28},"end":{"line":202,"column":54}},{"start":{"line":202,"column":58},"end":{"line":202,"column":101}}],"line":202},"43":{"loc":{"start":{"line":213,"column":21},"end":{"line":220,"column":17}},"type":"if","locations":[{"start":{"line":213,"column":21},"end":{"line":220,"column":17}},{"start":{"line":213,"column":21},"end":{"line":220,"column":17}}],"line":213},"44":{"loc":{"start":{"line":214,"column":20},"end":{"line":216,"column":21}},"type":"if","locations":[{"start":{"line":214,"column":20},"end":{"line":216,"column":21}},{"start":{"line":214,"column":20},"end":{"line":216,"column":21}}],"line":214},"45":{"loc":{"start":{"line":237,"column":8},"end":{"line":249,"column":9}},"type":"if","locations":[{"start":{"line":237,"column":8},"end":{"line":249,"column":9}},{"start":{"line":237,"column":8},"end":{"line":249,"column":9}}],"line":237},"46":{"loc":{"start":{"line":243,"column":12},"end":{"line":248,"column":13}},"type":"if","locations":[{"start":{"line":243,"column":12},"end":{"line":248,"column":13}},{"start":{"line":243,"column":12},"end":{"line":248,"column":13}}],"line":243},"47":{"loc":{"start":{"line":256,"column":8},"end":{"line":263,"column":9}},"type":"if","locations":[{"start":{"line":256,"column":8},"end":{"line":263,"column":9}},{"start":{"line":256,"column":8},"end":{"line":263,"column":9}}],"line":256},"48":{"loc":{"start":{"line":257,"column":12},"end":{"line":262,"column":13}},"type":"if","locations":[{"start":{"line":257,"column":12},"end":{"line":262,"column":13}},{"start":{"line":257,"column":12},"end":{"line":262,"column":13}}],"line":257},"49":{"loc":{"start":{"line":269,"column":16},"end":{"line":274,"column":17}},"type":"if","locations":[{"start":{"line":269,"column":16},"end":{"line":274,"column":17}},{"start":{"line":269,"column":16},"end":{"line":274,"column":17}}],"line":269},"50":{"loc":{"start":{"line":282,"column":4},"end":{"line":308,"column":5}},"type":"if","locations":[{"start":{"line":282,"column":4},"end":{"line":308,"column":5}},{"start":{"line":282,"column":4},"end":{"line":308,"column":5}}],"line":282},"51":{"loc":{"start":{"line":286,"column":8},"end":{"line":307,"column":9}},"type":"if","locations":[{"start":{"line":286,"column":8},"end":{"line":307,"column":9}},{"start":{"line":286,"column":8},"end":{"line":307,"column":9}}],"line":286},"52":{"loc":{"start":{"line":290,"column":12},"end":{"line":303,"column":13}},"type":"if","locations":[{"start":{"line":290,"column":12},"end":{"line":303,"column":13}},{"start":{"line":290,"column":12},"end":{"line":303,"column":13}}],"line":290},"53":{"loc":{"start":{"line":290,"column":16},"end":{"line":290,"column":31}},"type":"binary-expr","locations":[{"start":{"line":290,"column":16},"end":{"line":290,"column":19}},{"start":{"line":290,"column":23},"end":{"line":290,"column":31}}],"line":290}},"s":{"0":1,"1":1,"2":0,"3":0,"4":0,"5":0,"6":1,"7":1,"8":1,"9":1,"10":1,"11":4,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":86,"25":86,"26":86,"27":86,"28":86,"29":86,"30":86,"31":1,"32":73,"33":73,"34":36,"35":36,"36":36,"37":36,"38":5,"39":31,"40":37,"41":1,"42":76,"43":1,"44":170,"45":76,"46":170,"47":1,"48":75,"49":75,"50":75,"51":1,"52":171,"53":171,"54":135,"55":171,"56":36,"57":135,"58":171,"59":171,"60":5,"61":166,"62":171,"63":170,"64":1,"65":1,"66":170,"67":170,"68":170,"69":170,"70":113,"71":170,"72":2,"73":2,"74":170,"75":1,"76":170,"77":170,"78":134,"79":36,"80":36,"81":170,"82":122,"83":122,"84":3,"85":119,"86":122,"87":122,"88":76,"89":46,"90":48,"91":1,"92":76,"93":8,"94":4,"95":4,"96":68,"97":68,"98":68,"99":68,"100":68,"101":68,"102":67,"103":67,"104":67,"105":1,"106":68,"107":68,"108":1,"109":67,"110":2,"111":65,"112":75,"113":5,"114":75,"115":4,"116":4,"117":75,"118":1,"119":5,"120":5,"121":5,"122":5,"123":25,"124":8,"125":3,"126":1,"127":2,"128":5,"129":17,"130":17,"131":6,"132":0,"133":5,"134":1,"135":121,"136":1,"137":120,"138":120,"139":120,"140":2,"141":118,"142":1,"143":322,"144":322,"145":154,"146":168,"147":1,"148":3,"149":3,"150":3,"151":3,"152":0,"153":3,"154":1,"155":1,"156":5,"157":2,"158":3,"159":3,"160":3,"161":3,"162":3,"163":2,"164":2,"165":2,"166":1,"167":1,"168":1,"169":1,"170":1,"171":0},"f":{"0":1,"1":0,"2":0,"3":1,"4":1,"5":4,"6":1,"7":86,"8":73,"9":36,"10":76,"11":170,"12":75,"13":171,"14":171,"15":171,"16":170,"17":122,"18":76,"19":5,"20":121,"21":322,"22":3,"23":3,"24":3,"25":5,"26":2},"b":{"0":[1,1,1],"1":[1,0,0,0],"2":[0,0],"3":[0,1],"4":[1,1,1],"5":[3,1],"6":[4,4],"7":[86,86,86],"8":[36,37],"9":[73,72],"10":[5,31],"11":[36,36],"12":[76,94],"13":[75,0],"14":[135,36],"15":[36,135],"16":[5,166],"17":[170,1],"18":[171,170],"19":[113,57],"20":[2,168],"21":[170,4,2],"22":[1,169],"23":[170,1],"24":[134,36],"25":[122,48],"26":[3,119],"27":[76,46],"28":[122,81],"29":[8,68],"30":[4,4],"31":[67,1],"32":[1,67],"33":[2,65],"34":[5,70],"35":[75,73],"36":[4,71],"37":[75,4],"38":[5,0],"39":[8,17],"40":[3,5],"41":[1,2],"42":[3,2],"43":[17,0],"44":[6,11],"45":[1,120],"46":[2,118],"47":[322,0],"48":[154,168],"49":[0,3],"50":[2,3],"51":[3,0],"52":[2,1],"53":[3,3]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"f4a9eb6e941986f534bc14577f52c636e5324317","contentHash":"95da72e46ceb081c3cdd7a0ec14c4fd9_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/dataClean.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/dataClean.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":18},"end":{"line":6,"column":55}},"4":{"start":{"line":14,"column":20},"end":{"line":14,"column":51}},"5":{"start":{"line":15,"column":4},"end":{"line":15,"column":38}},"6":{"start":{"line":16,"column":25},"end":{"line":16,"column":76}},"7":{"start":{"line":17,"column":4},"end":{"line":22,"column":5}},"8":{"start":{"line":18,"column":8},"end":{"line":18,"column":51}},"9":{"start":{"line":21,"column":8},"end":{"line":21,"column":30}},"10":{"start":{"line":24,"column":0},"end":{"line":24,"column":34}},"11":{"start":{"line":29,"column":4},"end":{"line":34,"column":5}},"12":{"start":{"line":30,"column":8},"end":{"line":30,"column":61}},"13":{"start":{"line":33,"column":8},"end":{"line":33,"column":21}},"14":{"start":{"line":40,"column":14},"end":{"line":40,"column":30}},"15":{"start":{"line":48,"column":4},"end":{"line":53,"column":5}},"16":{"start":{"line":49,"column":8},"end":{"line":51,"column":9}},"17":{"start":{"line":50,"column":12},"end":{"line":50,"column":18}},"18":{"start":{"line":52,"column":8},"end":{"line":52,"column":14}},"19":{"start":{"line":54,"column":4},"end":{"line":70,"column":5}},"20":{"start":{"line":55,"column":8},"end":{"line":55,"column":53}},"21":{"start":{"line":56,"column":8},"end":{"line":56,"column":39}},"22":{"start":{"line":69,"column":8},"end":{"line":69,"column":21}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"prepareData","decl":{"start":{"line":13,"column":9},"end":{"line":13,"column":20}},"loc":{"start":{"line":13,"column":37},"end":{"line":23,"column":1}},"line":13},"2":{"name":"concatLeftChunk","decl":{"start":{"line":28,"column":9},"end":{"line":28,"column":24}},"loc":{"start":{"line":28,"column":41},"end":{"line":35,"column":1}},"line":28},"3":{"name":"cleanUtf8Split","decl":{"start":{"line":39,"column":9},"end":{"line":39,"column":23}},"loc":{"start":{"line":39,"column":40},"end":{"line":71,"column":1}},"line":39}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":17,"column":4},"end":{"line":22,"column":5}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":22,"column":5}},{"start":{"line":17,"column":4},"end":{"line":22,"column":5}}],"line":17},"4":{"loc":{"start":{"line":29,"column":4},"end":{"line":34,"column":5}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":34,"column":5}},{"start":{"line":29,"column":4},"end":{"line":34,"column":5}}],"line":29},"5":{"loc":{"start":{"line":29,"column":8},"end":{"line":29,"column":65}},"type":"binary-expr","locations":[{"start":{"line":29,"column":8},"end":{"line":29,"column":29}},{"start":{"line":29,"column":33},"end":{"line":29,"column":65}}],"line":29},"6":{"loc":{"start":{"line":48,"column":4},"end":{"line":53,"column":5}},"type":"if","locations":[{"start":{"line":48,"column":4},"end":{"line":53,"column":5}},{"start":{"line":48,"column":4},"end":{"line":53,"column":5}}],"line":48},"7":{"loc":{"start":{"line":54,"column":4},"end":{"line":70,"column":5}},"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":70,"column":5}},{"start":{"line":54,"column":4},"end":{"line":70,"column":5}}],"line":54}},"s":{"0":1,"1":1,"2":1,"3":1,"4":135,"5":135,"6":135,"7":135,"8":121,"9":14,"10":1,"11":135,"12":56,"13":79,"14":135,"15":135,"16":2,"17":0,"18":2,"19":135,"20":2,"21":2,"22":133},"f":{"0":1,"1":135,"2":135,"3":135},"b":{"0":[1,1,1],"1":[0,1],"2":[1,1],"3":[121,14],"4":[56,79],"5":[135,58],"6":[2,133],"7":[2,133]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"bf4dfc19c2766510feed388a8341352360e1abd4","contentHash":"ae405e63b3df5a84c083dd00fdc7a598_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/util.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/util.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":4,"column":17},"end":{"line":4,"column":39}},"2":{"start":{"line":5,"column":17},"end":{"line":7,"column":28}},"3":{"start":{"line":8,"column":4},"end":{"line":8,"column":22}},"4":{"start":{"line":9,"column":4},"end":{"line":9,"column":18}},"5":{"start":{"line":11,"column":0},"end":{"line":11,"column":38}},"6":{"start":{"line":13,"column":17},"end":{"line":15,"column":23}},"7":{"start":{"line":16,"column":4},"end":{"line":16,"column":18}},"8":{"start":{"line":18,"column":0},"end":{"line":18,"column":34}},"9":{"start":{"line":20,"column":14},"end":{"line":20,"column":16}},"10":{"start":{"line":21,"column":4},"end":{"line":25,"column":5}},"11":{"start":{"line":22,"column":8},"end":{"line":24,"column":9}},"12":{"start":{"line":23,"column":12},"end":{"line":23,"column":29}},"13":{"start":{"line":26,"column":4},"end":{"line":26,"column":15}},"14":{"start":{"line":28,"column":0},"end":{"line":28,"column":34}}},"fnMap":{"0":{"name":"bufFromString","decl":{"start":{"line":3,"column":9},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":28},"end":{"line":10,"column":1}},"line":3},"1":{"name":"emptyBuffer","decl":{"start":{"line":12,"column":9},"end":{"line":12,"column":20}},"loc":{"start":{"line":12,"column":23},"end":{"line":17,"column":1}},"line":12},"2":{"name":"filterArray","decl":{"start":{"line":19,"column":9},"end":{"line":19,"column":20}},"loc":{"start":{"line":19,"column":34},"end":{"line":27,"column":1}},"line":19}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":17},"end":{"line":7,"column":28}},"type":"cond-expr","locations":[{"start":{"line":6,"column":10},"end":{"line":6,"column":36}},{"start":{"line":7,"column":10},"end":{"line":7,"column":28}}],"line":5},"1":{"loc":{"start":{"line":13,"column":17},"end":{"line":15,"column":23}},"type":"cond-expr","locations":[{"start":{"line":14,"column":10},"end":{"line":14,"column":31}},{"start":{"line":15,"column":10},"end":{"line":15,"column":23}}],"line":13},"2":{"loc":{"start":{"line":22,"column":8},"end":{"line":24,"column":9}},"type":"if","locations":[{"start":{"line":22,"column":8},"end":{"line":24,"column":9}},{"start":{"line":22,"column":8},"end":{"line":24,"column":9}}],"line":22}},"s":{"0":1,"1":322,"2":322,"3":322,"4":322,"5":1,"6":0,"7":0,"8":1,"9":25,"10":25,"11":127,"12":56,"13":25,"14":1},"f":{"0":322,"1":0,"2":25},"b":{"0":[322,0],"1":[0,0],"2":[56,71]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"593af791006f845d99bb21577e96db025807af2e","contentHash":"fe3e34ce3269ea09d2db1b85caa34510_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/rowSplit.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/rowSplit.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":15},"end":{"line":6,"column":51}},"4":{"start":{"line":7,"column":13},"end":{"line":7,"column":30}},"5":{"start":{"line":8,"column":23},"end":{"line":8,"column":49}},"6":{"start":{"line":9,"column":30},"end":{"line":193,"column":3}},"7":{"start":{"line":11,"column":8},"end":{"line":11,"column":25}},"8":{"start":{"line":12,"column":8},"end":{"line":12,"column":31}},"9":{"start":{"line":13,"column":8},"end":{"line":13,"column":38}},"10":{"start":{"line":14,"column":8},"end":{"line":14,"column":44}},"11":{"start":{"line":15,"column":8},"end":{"line":15,"column":43}},"12":{"start":{"line":16,"column":8},"end":{"line":16,"column":41}},"13":{"start":{"line":17,"column":8},"end":{"line":17,"column":45}},"14":{"start":{"line":19,"column":4},"end":{"line":28,"column":7}},"15":{"start":{"line":21,"column":12},"end":{"line":23,"column":13}},"16":{"start":{"line":22,"column":16},"end":{"line":22,"column":86}},"17":{"start":{"line":24,"column":12},"end":{"line":24,"column":43}},"18":{"start":{"line":29,"column":4},"end":{"line":56,"column":6}},"19":{"start":{"line":30,"column":8},"end":{"line":32,"column":9}},"20":{"start":{"line":31,"column":12},"end":{"line":31,"column":47}},"21":{"start":{"line":33,"column":20},"end":{"line":33,"column":30}},"22":{"start":{"line":34,"column":19},"end":{"line":34,"column":28}},"23":{"start":{"line":35,"column":21},"end":{"line":35,"column":32}},"24":{"start":{"line":36,"column":8},"end":{"line":38,"column":9}},"25":{"start":{"line":37,"column":12},"end":{"line":37,"column":75}},"26":{"start":{"line":39,"column":8},"end":{"line":42,"column":9}},"27":{"start":{"line":40,"column":12},"end":{"line":40,"column":74}},"28":{"start":{"line":41,"column":12},"end":{"line":41,"column":41}},"29":{"start":{"line":43,"column":24},"end":{"line":43,"column":56}},"30":{"start":{"line":44,"column":21},"end":{"line":44,"column":46}},"31":{"start":{"line":45,"column":8},"end":{"line":55,"column":9}},"32":{"start":{"line":46,"column":12},"end":{"line":50,"column":13}},"33":{"start":{"line":47,"column":16},"end":{"line":49,"column":17}},"34":{"start":{"line":48,"column":20},"end":{"line":48,"column":49}},"35":{"start":{"line":51,"column":12},"end":{"line":51,"column":51}},"36":{"start":{"line":54,"column":12},"end":{"line":54,"column":65}},"37":{"start":{"line":57,"column":4},"end":{"line":111,"column":6}},"38":{"start":{"line":58,"column":18},"end":{"line":58,"column":20}},"39":{"start":{"line":59,"column":22},"end":{"line":59,"column":27}},"40":{"start":{"line":60,"column":24},"end":{"line":60,"column":26}},"41":{"start":{"line":61,"column":8},"end":{"line":106,"column":9}},"42":{"start":{"line":62,"column":20},"end":{"line":62,"column":29}},"43":{"start":{"line":63,"column":12},"end":{"line":65,"column":13}},"44":{"start":{"line":64,"column":16},"end":{"line":64,"column":33}},"45":{"start":{"line":66,"column":22},"end":{"line":66,"column":30}},"46":{"start":{"line":67,"column":12},"end":{"line":105,"column":13}},"47":{"start":{"line":68,"column":16},"end":{"line":88,"column":17}},"48":{"start":{"line":69,"column":20},"end":{"line":69,"column":36}},"49":{"start":{"line":70,"column":20},"end":{"line":80,"column":21}},"50":{"start":{"line":71,"column":24},"end":{"line":71,"column":65}},"51":{"start":{"line":72,"column":24},"end":{"line":72,"column":48}},"52":{"start":{"line":73,"column":24},"end":{"line":73,"column":36}},"53":{"start":{"line":74,"column":24},"end":{"line":74,"column":33}},"54":{"start":{"line":77,"column":24},"end":{"line":77,"column":39}},"55":{"start":{"line":78,"column":24},"end":{"line":78,"column":39}},"56":{"start":{"line":79,"column":24},"end":{"line":79,"column":33}},"57":{"start":{"line":83,"column":20},"end":{"line":85,"column":21}},"58":{"start":{"line":84,"column":24},"end":{"line":84,"column":42}},"59":{"start":{"line":86,"column":20},"end":{"line":86,"column":32}},"60":{"start":{"line":87,"column":20},"end":{"line":87,"column":29}},"61":{"start":{"line":91,"column":16},"end":{"line":104,"column":17}},"62":{"start":{"line":92,"column":20},"end":{"line":92,"column":36}},"63":{"start":{"line":93,"column":20},"end":{"line":93,"column":45}},"64":{"start":{"line":94,"column":20},"end":{"line":94,"column":47}},"65":{"start":{"line":95,"column":20},"end":{"line":95,"column":60}},"66":{"start":{"line":96,"column":20},"end":{"line":98,"column":21}},"67":{"start":{"line":97,"column":24},"end":{"line":97,"column":58}},"68":{"start":{"line":99,"column":20},"end":{"line":99,"column":40}},"69":{"start":{"line":100,"column":20},"end":{"line":100,"column":35}},"70":{"start":{"line":103,"column":20},"end":{"line":103,"column":47}},"71":{"start":{"line":110,"column":8},"end":{"line":110,"column":48}},"72":{"start":{"line":112,"column":4},"end":{"line":133,"column":6}},"73":{"start":{"line":114,"column":8},"end":{"line":122,"column":9}},"74":{"start":{"line":115,"column":12},"end":{"line":115,"column":39}},"75":{"start":{"line":117,"column":13},"end":{"line":122,"column":9}},"76":{"start":{"line":118,"column":12},"end":{"line":118,"column":53}},"77":{"start":{"line":121,"column":12},"end":{"line":121,"column":50}},"78":{"start":{"line":123,"column":20},"end":{"line":123,"column":21}},"79":{"start":{"line":124,"column":18},"end":{"line":124,"column":21}},"80":{"start":{"line":125,"column":8},"end":{"line":131,"column":11}},"81":{"start":{"line":126,"column":29},"end":{"line":126,"column":57}},"82":{"start":{"line":127,"column":12},"end":{"line":130,"column":13}},"83":{"start":{"line":128,"column":16},"end":{"line":128,"column":28}},"84":{"start":{"line":129,"column":16},"end":{"line":129,"column":35}},"85":{"start":{"line":132,"column":8},"end":{"line":132,"column":19}},"86":{"start":{"line":134,"column":4},"end":{"line":139,"column":6}},"87":{"start":{"line":135,"column":20},"end":{"line":135,"column":30}},"88":{"start":{"line":136,"column":21},"end":{"line":136,"column":32}},"89":{"start":{"line":137,"column":8},"end":{"line":138,"column":73}},"90":{"start":{"line":140,"column":4},"end":{"line":153,"column":6}},"91":{"start":{"line":141,"column":20},"end":{"line":141,"column":30}},"92":{"start":{"line":142,"column":21},"end":{"line":142,"column":32}},"93":{"start":{"line":143,"column":8},"end":{"line":145,"column":9}},"94":{"start":{"line":144,"column":12},"end":{"line":144,"column":34}},"95":{"start":{"line":146,"column":20},"end":{"line":146,"column":21}},"96":{"start":{"line":147,"column":18},"end":{"line":147,"column":32}},"97":{"start":{"line":148,"column":8},"end":{"line":151,"column":9}},"98":{"start":{"line":149,"column":12},"end":{"line":149,"column":18}},"99":{"start":{"line":150,"column":12},"end":{"line":150,"column":20}},"100":{"start":{"line":152,"column":8},"end":{"line":152,"column":31}},"101":{"start":{"line":162,"column":4},"end":{"line":170,"column":6}},"102":{"start":{"line":163,"column":18},"end":{"line":163,"column":56}},"103":{"start":{"line":164,"column":8},"end":{"line":166,"column":9}},"104":{"start":{"line":165,"column":12},"end":{"line":165,"column":93}},"105":{"start":{"line":167,"column":21},"end":{"line":167,"column":43}},"106":{"start":{"line":169,"column":8},"end":{"line":169,"column":51}},"107":{"start":{"line":171,"column":4},"end":{"line":191,"column":6}},"108":{"start":{"line":172,"column":23},"end":{"line":172,"column":25}},"109":{"start":{"line":173,"column":19},"end":{"line":173,"column":21}},"110":{"start":{"line":174,"column":8},"end":{"line":189,"column":9}},"111":{"start":{"line":175,"column":23},"end":{"line":175,"column":43}},"112":{"start":{"line":176,"column":22},"end":{"line":176,"column":38}},"113":{"start":{"line":177,"column":12},"end":{"line":188,"column":13}},"114":{"start":{"line":178,"column":16},"end":{"line":183,"column":17}},"115":{"start":{"line":179,"column":20},"end":{"line":179,"column":105}},"116":{"start":{"line":182,"column":20},"end":{"line":182,"column":45}},"117":{"start":{"line":184,"column":16},"end":{"line":184,"column":26}},"118":{"start":{"line":187,"column":16},"end":{"line":187,"column":87}},"119":{"start":{"line":190,"column":8},"end":{"line":190,"column":54}},"120":{"start":{"line":192,"column":4},"end":{"line":192,"column":20}},"121":{"start":{"line":194,"column":0},"end":{"line":194,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":30},"end":{"line":9,"column":31}},"loc":{"start":{"line":9,"column":42},"end":{"line":193,"column":1}},"line":9},"2":{"name":"RowSplit","decl":{"start":{"line":10,"column":13},"end":{"line":10,"column":21}},"loc":{"start":{"line":10,"column":28},"end":{"line":18,"column":5}},"line":10},"3":{"name":"(anonymous_3)","decl":{"start":{"line":20,"column":13},"end":{"line":20,"column":14}},"loc":{"start":{"line":20,"column":25},"end":{"line":25,"column":9}},"line":20},"4":{"name":"(anonymous_4)","decl":{"start":{"line":29,"column":31},"end":{"line":29,"column":32}},"loc":{"start":{"line":29,"column":51},"end":{"line":56,"column":5}},"line":29},"5":{"name":"(anonymous_5)","decl":{"start":{"line":57,"column":34},"end":{"line":57,"column":35}},"loc":{"start":{"line":57,"column":76},"end":{"line":111,"column":5}},"line":57},"6":{"name":"(anonymous_6)","decl":{"start":{"line":112,"column":38},"end":{"line":112,"column":39}},"loc":{"start":{"line":112,"column":58},"end":{"line":133,"column":5}},"line":112},"7":{"name":"(anonymous_7)","decl":{"start":{"line":125,"column":24},"end":{"line":125,"column":25}},"loc":{"start":{"line":125,"column":41},"end":{"line":131,"column":9}},"line":125},"8":{"name":"(anonymous_8)","decl":{"start":{"line":134,"column":37},"end":{"line":134,"column":38}},"loc":{"start":{"line":134,"column":52},"end":{"line":139,"column":5}},"line":134},"9":{"name":"(anonymous_9)","decl":{"start":{"line":140,"column":38},"end":{"line":140,"column":39}},"loc":{"start":{"line":140,"column":53},"end":{"line":153,"column":5}},"line":140},"10":{"name":"(anonymous_10)","decl":{"start":{"line":162,"column":37},"end":{"line":162,"column":38}},"loc":{"start":{"line":162,"column":56},"end":{"line":170,"column":5}},"line":162},"11":{"name":"(anonymous_11)","decl":{"start":{"line":171,"column":41},"end":{"line":171,"column":42}},"loc":{"start":{"line":171,"column":58},"end":{"line":191,"column":5}},"line":171}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":21,"column":12},"end":{"line":23,"column":13}},"type":"if","locations":[{"start":{"line":21,"column":12},"end":{"line":23,"column":13}},{"start":{"line":21,"column":12},"end":{"line":23,"column":13}}],"line":21},"4":{"loc":{"start":{"line":30,"column":8},"end":{"line":32,"column":9}},"type":"if","locations":[{"start":{"line":30,"column":8},"end":{"line":32,"column":9}},{"start":{"line":30,"column":8},"end":{"line":32,"column":9}}],"line":30},"5":{"loc":{"start":{"line":36,"column":8},"end":{"line":38,"column":9}},"type":"if","locations":[{"start":{"line":36,"column":8},"end":{"line":38,"column":9}},{"start":{"line":36,"column":8},"end":{"line":38,"column":9}}],"line":36},"6":{"loc":{"start":{"line":36,"column":12},"end":{"line":36,"column":122}},"type":"binary-expr","locations":[{"start":{"line":36,"column":12},"end":{"line":36,"column":61}},{"start":{"line":36,"column":65},"end":{"line":36,"column":122}}],"line":36},"7":{"loc":{"start":{"line":39,"column":8},"end":{"line":42,"column":9}},"type":"if","locations":[{"start":{"line":39,"column":8},"end":{"line":42,"column":9}},{"start":{"line":39,"column":8},"end":{"line":42,"column":9}}],"line":39},"8":{"loc":{"start":{"line":39,"column":12},"end":{"line":39,"column":60}},"type":"binary-expr","locations":[{"start":{"line":39,"column":12},"end":{"line":39,"column":34}},{"start":{"line":39,"column":38},"end":{"line":39,"column":60}}],"line":39},"9":{"loc":{"start":{"line":45,"column":8},"end":{"line":55,"column":9}},"type":"if","locations":[{"start":{"line":45,"column":8},"end":{"line":55,"column":9}},{"start":{"line":45,"column":8},"end":{"line":55,"column":9}}],"line":45},"10":{"loc":{"start":{"line":46,"column":12},"end":{"line":50,"column":13}},"type":"if","locations":[{"start":{"line":46,"column":12},"end":{"line":50,"column":13}},{"start":{"line":46,"column":12},"end":{"line":50,"column":13}}],"line":46},"11":{"loc":{"start":{"line":63,"column":12},"end":{"line":65,"column":13}},"type":"if","locations":[{"start":{"line":63,"column":12},"end":{"line":65,"column":13}},{"start":{"line":63,"column":12},"end":{"line":65,"column":13}}],"line":63},"12":{"loc":{"start":{"line":63,"column":16},"end":{"line":63,"column":32}},"type":"binary-expr","locations":[{"start":{"line":63,"column":16},"end":{"line":63,"column":24}},{"start":{"line":63,"column":28},"end":{"line":63,"column":32}}],"line":63},"13":{"loc":{"start":{"line":67,"column":12},"end":{"line":105,"column":13}},"type":"if","locations":[{"start":{"line":67,"column":12},"end":{"line":105,"column":13}},{"start":{"line":67,"column":12},"end":{"line":105,"column":13}}],"line":67},"14":{"loc":{"start":{"line":68,"column":16},"end":{"line":88,"column":17}},"type":"if","locations":[{"start":{"line":68,"column":16},"end":{"line":88,"column":17}},{"start":{"line":68,"column":16},"end":{"line":88,"column":17}}],"line":68},"15":{"loc":{"start":{"line":70,"column":20},"end":{"line":80,"column":21}},"type":"if","locations":[{"start":{"line":70,"column":20},"end":{"line":80,"column":21}},{"start":{"line":70,"column":20},"end":{"line":80,"column":21}}],"line":70},"16":{"loc":{"start":{"line":83,"column":20},"end":{"line":85,"column":21}},"type":"if","locations":[{"start":{"line":83,"column":20},"end":{"line":85,"column":21}},{"start":{"line":83,"column":20},"end":{"line":85,"column":21}}],"line":83},"17":{"loc":{"start":{"line":91,"column":16},"end":{"line":104,"column":17}},"type":"if","locations":[{"start":{"line":91,"column":16},"end":{"line":104,"column":17}},{"start":{"line":91,"column":16},"end":{"line":104,"column":17}}],"line":91},"18":{"loc":{"start":{"line":96,"column":20},"end":{"line":98,"column":21}},"type":"if","locations":[{"start":{"line":96,"column":20},"end":{"line":98,"column":21}},{"start":{"line":96,"column":20},"end":{"line":98,"column":21}}],"line":96},"19":{"loc":{"start":{"line":114,"column":8},"end":{"line":122,"column":9}},"type":"if","locations":[{"start":{"line":114,"column":8},"end":{"line":122,"column":9}},{"start":{"line":114,"column":8},"end":{"line":122,"column":9}}],"line":114},"20":{"loc":{"start":{"line":117,"column":13},"end":{"line":122,"column":9}},"type":"if","locations":[{"start":{"line":117,"column":13},"end":{"line":122,"column":9}},{"start":{"line":117,"column":13},"end":{"line":122,"column":9}}],"line":117},"21":{"loc":{"start":{"line":127,"column":12},"end":{"line":130,"column":13}},"type":"if","locations":[{"start":{"line":127,"column":12},"end":{"line":130,"column":13}},{"start":{"line":127,"column":12},"end":{"line":130,"column":13}}],"line":127},"22":{"loc":{"start":{"line":137,"column":15},"end":{"line":138,"column":72}},"type":"binary-expr","locations":[{"start":{"line":137,"column":15},"end":{"line":137,"column":31}},{"start":{"line":137,"column":36},"end":{"line":137,"column":52}},{"start":{"line":138,"column":12},"end":{"line":138,"column":29}},{"start":{"line":138,"column":34},"end":{"line":138,"column":50}},{"start":{"line":138,"column":54},"end":{"line":138,"column":70}}],"line":137},"23":{"loc":{"start":{"line":143,"column":8},"end":{"line":145,"column":9}},"type":"if","locations":[{"start":{"line":143,"column":8},"end":{"line":145,"column":9}},{"start":{"line":143,"column":8},"end":{"line":145,"column":9}}],"line":143},"24":{"loc":{"start":{"line":148,"column":15},"end":{"line":148,"column":56}},"type":"binary-expr","locations":[{"start":{"line":148,"column":15},"end":{"line":148,"column":33}},{"start":{"line":148,"column":37},"end":{"line":148,"column":56}}],"line":148},"25":{"loc":{"start":{"line":164,"column":8},"end":{"line":166,"column":9}},"type":"if","locations":[{"start":{"line":164,"column":8},"end":{"line":166,"column":9}},{"start":{"line":164,"column":8},"end":{"line":166,"column":9}}],"line":164},"26":{"loc":{"start":{"line":177,"column":12},"end":{"line":188,"column":13}},"type":"if","locations":[{"start":{"line":177,"column":12},"end":{"line":188,"column":13}},{"start":{"line":177,"column":12},"end":{"line":188,"column":13}}],"line":177},"27":{"loc":{"start":{"line":177,"column":16},"end":{"line":177,"column":67}},"type":"binary-expr","locations":[{"start":{"line":177,"column":16},"end":{"line":177,"column":26}},{"start":{"line":177,"column":30},"end":{"line":177,"column":67}}],"line":177},"28":{"loc":{"start":{"line":178,"column":16},"end":{"line":183,"column":17}},"type":"if","locations":[{"start":{"line":178,"column":16},"end":{"line":183,"column":17}},{"start":{"line":178,"column":16},"end":{"line":183,"column":17}}],"line":178},"29":{"loc":{"start":{"line":187,"column":31},"end":{"line":187,"column":85}},"type":"binary-expr","locations":[{"start":{"line":187,"column":31},"end":{"line":187,"column":77}},{"start":{"line":187,"column":81},"end":{"line":187,"column":85}}],"line":187}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":88,"8":88,"9":88,"10":88,"11":88,"12":88,"13":88,"14":1,"15":32226,"16":78,"17":32226,"18":1,"19":32234,"20":8,"21":32226,"22":32226,"23":32226,"24":32226,"25":4,"26":32226,"27":2,"28":2,"29":32226,"30":32226,"31":32226,"32":3,"33":3,"34":9,"35":3,"36":32223,"37":1,"38":32223,"39":32223,"40":32223,"41":32223,"42":66882,"43":66882,"44":66715,"45":66882,"46":66882,"47":66733,"48":173,"49":173,"50":113,"51":113,"52":113,"53":113,"54":60,"55":60,"56":60,"57":66560,"58":66548,"59":66560,"60":66560,"61":149,"62":26,"63":26,"64":26,"65":26,"66":26,"67":26,"68":26,"69":26,"70":123,"71":32223,"72":1,"73":8,"74":6,"75":2,"76":1,"77":1,"78":7,"79":7,"80":7,"81":33,"82":33,"83":13,"84":13,"85":7,"86":1,"87":66733,"88":66733,"89":66733,"90":1,"91":322,"92":322,"93":322,"94":316,"95":322,"96":322,"97":322,"98":223,"99":223,"100":322,"101":1,"102":139,"103":139,"104":26,"105":139,"106":139,"107":1,"108":123,"109":123,"110":123,"111":32163,"112":32163,"113":32163,"114":32134,"115":20,"116":32114,"117":32134,"118":29,"119":123,"120":1,"121":1},"f":{"0":1,"1":1,"2":88,"3":32226,"4":32234,"5":32223,"6":8,"7":33,"8":66733,"9":322,"10":139,"11":123},"b":{"0":[1,1,1],"1":[1,0],"2":[1,1],"3":[78,32148],"4":[8,32226],"5":[4,32222],"6":[32226,32226],"7":[2,32224],"8":[32226,10],"9":[3,32223],"10":[3,0],"11":[66715,167],"12":[66882,66733],"13":[66733,149],"14":[173,66560],"15":[113,60],"16":[66548,12],"17":[26,123],"18":[26,0],"19":[6,2],"20":[1,1],"21":[13,20],"22":[66733,182,13,13,11],"23":[316,6],"24":[545,323],"25":[26,113],"26":[32134,29],"27":[32163,32],"28":[20,32114],"29":[29,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"512fbda8738dffbde48b6299fc2d6b1bc024ec42","contentHash":"d281261fc0fb3df34db8450f9a805f85_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/lineToJson.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/lineToJson.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":17},"end":{"line":6,"column":55}},"4":{"start":{"line":7,"column":12},"end":{"line":7,"column":50}},"5":{"start":{"line":8,"column":13},"end":{"line":8,"column":55}},"6":{"start":{"line":10,"column":14},"end":{"line":10,"column":16}},"7":{"start":{"line":11,"column":4},"end":{"line":16,"column":5}},"8":{"start":{"line":12,"column":16},"end":{"line":12,"column":47}},"9":{"start":{"line":13,"column":8},"end":{"line":15,"column":9}},"10":{"start":{"line":14,"column":12},"end":{"line":14,"column":24}},"11":{"start":{"line":17,"column":4},"end":{"line":17,"column":15}},"12":{"start":{"line":19,"column":0},"end":{"line":19,"column":28}},"13":{"start":{"line":22,"column":4},"end":{"line":24,"column":5}},"14":{"start":{"line":23,"column":8},"end":{"line":23,"column":97}},"15":{"start":{"line":25,"column":18},"end":{"line":25,"column":49}},"16":{"start":{"line":26,"column":20},"end":{"line":26,"column":56}},"17":{"start":{"line":27,"column":4},"end":{"line":32,"column":5}},"18":{"start":{"line":28,"column":8},"end":{"line":28,"column":25}},"19":{"start":{"line":31,"column":8},"end":{"line":31,"column":20}},"20":{"start":{"line":35,"column":19},"end":{"line":35,"column":24}},"21":{"start":{"line":36,"column":20},"end":{"line":36,"column":22}},"22":{"start":{"line":37,"column":4},"end":{"line":67,"column":5}},"23":{"start":{"line":38,"column":19},"end":{"line":38,"column":25}},"24":{"start":{"line":39,"column":8},"end":{"line":41,"column":9}},"25":{"start":{"line":40,"column":12},"end":{"line":40,"column":21}},"26":{"start":{"line":42,"column":8},"end":{"line":42,"column":24}},"27":{"start":{"line":43,"column":19},"end":{"line":43,"column":29}},"28":{"start":{"line":44,"column":8},"end":{"line":46,"column":9}},"29":{"start":{"line":45,"column":12},"end":{"line":45,"column":50}},"30":{"start":{"line":47,"column":23},"end":{"line":47,"column":49}},"31":{"start":{"line":48,"column":8},"end":{"line":66,"column":9}},"32":{"start":{"line":49,"column":26},"end":{"line":49,"column":65}},"33":{"start":{"line":50,"column":12},"end":{"line":52,"column":13}},"34":{"start":{"line":51,"column":16},"end":{"line":51,"column":59}},"35":{"start":{"line":59,"column":12},"end":{"line":62,"column":13}},"36":{"start":{"line":60,"column":34},"end":{"line":60,"column":64}},"37":{"start":{"line":61,"column":16},"end":{"line":61,"column":41}},"38":{"start":{"line":63,"column":12},"end":{"line":65,"column":13}},"39":{"start":{"line":64,"column":16},"end":{"line":64,"column":56}},"40":{"start":{"line":68,"column":4},"end":{"line":73,"column":5}},"41":{"start":{"line":69,"column":8},"end":{"line":69,"column":25}},"42":{"start":{"line":72,"column":8},"end":{"line":72,"column":20}},"43":{"start":{"line":75,"column":18},"end":{"line":79,"column":1}},"44":{"start":{"line":81,"column":4},"end":{"line":108,"column":5}},"45":{"start":{"line":82,"column":8},"end":{"line":82,"column":47}},"46":{"start":{"line":85,"column":19},"end":{"line":85,"column":50}},"47":{"start":{"line":86,"column":8},"end":{"line":88,"column":9}},"48":{"start":{"line":87,"column":12},"end":{"line":87,"column":58}},"49":{"start":{"line":89,"column":8},"end":{"line":91,"column":9}},"50":{"start":{"line":90,"column":12},"end":{"line":90,"column":47}},"51":{"start":{"line":92,"column":8},"end":{"line":107,"column":9}},"52":{"start":{"line":93,"column":12},"end":{"line":93,"column":45}},"53":{"start":{"line":94,"column":30},"end":{"line":94,"column":47}},"54":{"start":{"line":95,"column":12},"end":{"line":100,"column":13}},"55":{"start":{"line":96,"column":16},"end":{"line":96,"column":69}},"56":{"start":{"line":99,"column":16},"end":{"line":99,"column":62}},"57":{"start":{"line":102,"column":13},"end":{"line":107,"column":9}},"58":{"start":{"line":103,"column":12},"end":{"line":103,"column":58}},"59":{"start":{"line":106,"column":12},"end":{"line":106,"column":58}},"60":{"start":{"line":111,"column":4},"end":{"line":128,"column":5}},"61":{"start":{"line":112,"column":8},"end":{"line":127,"column":9}},"62":{"start":{"line":113,"column":12},"end":{"line":113,"column":70}},"63":{"start":{"line":116,"column":12},"end":{"line":126,"column":13}},"64":{"start":{"line":117,"column":16},"end":{"line":122,"column":17}},"65":{"start":{"line":118,"column":20},"end":{"line":118,"column":78}},"66":{"start":{"line":121,"column":20},"end":{"line":121,"column":78}},"67":{"start":{"line":125,"column":16},"end":{"line":125,"column":74}},"68":{"start":{"line":129,"column":4},"end":{"line":129,"column":74}},"69":{"start":{"line":133,"column":4},"end":{"line":133,"column":29}},"70":{"start":{"line":136,"column":4},"end":{"line":136,"column":43}},"71":{"start":{"line":139,"column":4},"end":{"line":153,"column":5}},"72":{"start":{"line":140,"column":8},"end":{"line":140,"column":53}},"73":{"start":{"line":142,"column":9},"end":{"line":153,"column":5}},"74":{"start":{"line":143,"column":8},"end":{"line":143,"column":66}},"75":{"start":{"line":145,"column":9},"end":{"line":153,"column":5}},"76":{"start":{"line":146,"column":8},"end":{"line":146,"column":66}},"77":{"start":{"line":148,"column":9},"end":{"line":153,"column":5}},"78":{"start":{"line":149,"column":8},"end":{"line":149,"column":67}},"79":{"start":{"line":152,"column":8},"end":{"line":152,"column":66}},"80":{"start":{"line":156,"column":14},"end":{"line":156,"column":30}},"81":{"start":{"line":157,"column":4},"end":{"line":159,"column":5}},"82":{"start":{"line":158,"column":8},"end":{"line":158,"column":20}},"83":{"start":{"line":160,"column":4},"end":{"line":160,"column":15}},"84":{"start":{"line":163,"column":4},"end":{"line":163,"column":27}},"85":{"start":{"line":166,"column":17},"end":{"line":166,"column":28}},"86":{"start":{"line":167,"column":4},"end":{"line":169,"column":5}},"87":{"start":{"line":168,"column":8},"end":{"line":168,"column":32}},"88":{"start":{"line":170,"column":4},"end":{"line":181,"column":5}},"89":{"start":{"line":171,"column":8},"end":{"line":171,"column":32}},"90":{"start":{"line":173,"column":9},"end":{"line":181,"column":5}},"91":{"start":{"line":174,"column":8},"end":{"line":174,"column":33}},"92":{"start":{"line":176,"column":9},"end":{"line":181,"column":5}},"93":{"start":{"line":177,"column":8},"end":{"line":177,"column":30}},"94":{"start":{"line":180,"column":8},"end":{"line":180,"column":32}},"95":{"start":{"line":184,"column":17},"end":{"line":184,"column":28}},"96":{"start":{"line":185,"column":4},"end":{"line":190,"column":5}},"97":{"start":{"line":186,"column":8},"end":{"line":186,"column":21}},"98":{"start":{"line":189,"column":8},"end":{"line":189,"column":20}},"99":{"start":{"line":193,"column":4},"end":{"line":198,"column":5}},"100":{"start":{"line":194,"column":8},"end":{"line":194,"column":32}},"101":{"start":{"line":197,"column":8},"end":{"line":197,"column":20}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"default_1","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":18}},"loc":{"start":{"line":9,"column":34},"end":{"line":18,"column":1}},"line":9},"2":{"name":"processRow","decl":{"start":{"line":21,"column":9},"end":{"line":21,"column":19}},"loc":{"start":{"line":21,"column":38},"end":{"line":33,"column":1}},"line":21},"3":{"name":"convertRowToJson","decl":{"start":{"line":34,"column":9},"end":{"line":34,"column":25}},"loc":{"start":{"line":34,"column":46},"end":{"line":74,"column":1}},"line":34},"4":{"name":"(anonymous_4)","decl":{"start":{"line":78,"column":12},"end":{"line":78,"column":13}},"loc":{"start":{"line":78,"column":24},"end":{"line":78,"column":27}},"line":78},"5":{"name":"getConvFunc","decl":{"start":{"line":80,"column":9},"end":{"line":80,"column":20}},"loc":{"start":{"line":80,"column":36},"end":{"line":109,"column":1}},"line":80},"6":{"name":"setPath","decl":{"start":{"line":110,"column":9},"end":{"line":110,"column":16}},"loc":{"start":{"line":110,"column":57},"end":{"line":131,"column":1}},"line":110},"7":{"name":"flatSetter","decl":{"start":{"line":132,"column":9},"end":{"line":132,"column":19}},"loc":{"start":{"line":132,"column":45},"end":{"line":134,"column":1}},"line":132},"8":{"name":"jsonSetter","decl":{"start":{"line":135,"column":9},"end":{"line":135,"column":19}},"loc":{"start":{"line":135,"column":45},"end":{"line":137,"column":1}},"line":135},"9":{"name":"checkType","decl":{"start":{"line":138,"column":9},"end":{"line":138,"column":18}},"loc":{"start":{"line":138,"column":46},"end":{"line":154,"column":1}},"line":138},"10":{"name":"numberType","decl":{"start":{"line":155,"column":9},"end":{"line":155,"column":19}},"loc":{"start":{"line":155,"column":26},"end":{"line":161,"column":1}},"line":155},"11":{"name":"stringType","decl":{"start":{"line":162,"column":9},"end":{"line":162,"column":19}},"loc":{"start":{"line":162,"column":26},"end":{"line":164,"column":1}},"line":162},"12":{"name":"dynamicType","decl":{"start":{"line":165,"column":9},"end":{"line":165,"column":20}},"loc":{"start":{"line":165,"column":27},"end":{"line":182,"column":1}},"line":165},"13":{"name":"booleanType","decl":{"start":{"line":183,"column":9},"end":{"line":183,"column":20}},"loc":{"start":{"line":183,"column":27},"end":{"line":191,"column":1}},"line":183},"14":{"name":"jsonType","decl":{"start":{"line":192,"column":9},"end":{"line":192,"column":17}},"loc":{"start":{"line":192,"column":24},"end":{"line":199,"column":1}},"line":192}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":13,"column":8},"end":{"line":15,"column":9}},"type":"if","locations":[{"start":{"line":13,"column":8},"end":{"line":15,"column":9}},{"start":{"line":13,"column":8},"end":{"line":15,"column":9}}],"line":13},"4":{"loc":{"start":{"line":22,"column":4},"end":{"line":24,"column":5}},"type":"if","locations":[{"start":{"line":22,"column":4},"end":{"line":24,"column":5}},{"start":{"line":22,"column":4},"end":{"line":24,"column":5}}],"line":22},"5":{"loc":{"start":{"line":22,"column":8},"end":{"line":22,"column":115}},"type":"binary-expr","locations":[{"start":{"line":22,"column":8},"end":{"line":22,"column":35}},{"start":{"line":22,"column":39},"end":{"line":22,"column":64}},{"start":{"line":22,"column":68},"end":{"line":22,"column":115}}],"line":22},"6":{"loc":{"start":{"line":25,"column":18},"end":{"line":25,"column":49}},"type":"binary-expr","locations":[{"start":{"line":25,"column":18},"end":{"line":25,"column":43}},{"start":{"line":25,"column":47},"end":{"line":25,"column":49}}],"line":25},"7":{"loc":{"start":{"line":27,"column":4},"end":{"line":32,"column":5}},"type":"if","locations":[{"start":{"line":27,"column":4},"end":{"line":32,"column":5}},{"start":{"line":27,"column":4},"end":{"line":32,"column":5}}],"line":27},"8":{"loc":{"start":{"line":39,"column":8},"end":{"line":41,"column":9}},"type":"if","locations":[{"start":{"line":39,"column":8},"end":{"line":41,"column":9}},{"start":{"line":39,"column":8},"end":{"line":41,"column":9}}],"line":39},"9":{"loc":{"start":{"line":39,"column":12},"end":{"line":39,"column":54}},"type":"binary-expr","locations":[{"start":{"line":39,"column":12},"end":{"line":39,"column":39}},{"start":{"line":39,"column":43},"end":{"line":39,"column":54}}],"line":39},"10":{"loc":{"start":{"line":44,"column":8},"end":{"line":46,"column":9}},"type":"if","locations":[{"start":{"line":44,"column":8},"end":{"line":46,"column":9}},{"start":{"line":44,"column":8},"end":{"line":46,"column":9}}],"line":44},"11":{"loc":{"start":{"line":44,"column":12},"end":{"line":44,"column":32}},"type":"binary-expr","locations":[{"start":{"line":44,"column":12},"end":{"line":44,"column":17}},{"start":{"line":44,"column":21},"end":{"line":44,"column":32}}],"line":44},"12":{"loc":{"start":{"line":48,"column":8},"end":{"line":66,"column":9}},"type":"if","locations":[{"start":{"line":48,"column":8},"end":{"line":66,"column":9}},{"start":{"line":48,"column":8},"end":{"line":66,"column":9}}],"line":48},"13":{"loc":{"start":{"line":50,"column":12},"end":{"line":52,"column":13}},"type":"if","locations":[{"start":{"line":50,"column":12},"end":{"line":52,"column":13}},{"start":{"line":50,"column":12},"end":{"line":52,"column":13}}],"line":50},"14":{"loc":{"start":{"line":59,"column":12},"end":{"line":62,"column":13}},"type":"if","locations":[{"start":{"line":59,"column":12},"end":{"line":62,"column":13}},{"start":{"line":59,"column":12},"end":{"line":62,"column":13}}],"line":59},"15":{"loc":{"start":{"line":63,"column":12},"end":{"line":65,"column":13}},"type":"if","locations":[{"start":{"line":63,"column":12},"end":{"line":65,"column":13}},{"start":{"line":63,"column":12},"end":{"line":65,"column":13}}],"line":63},"16":{"loc":{"start":{"line":68,"column":4},"end":{"line":73,"column":5}},"type":"if","locations":[{"start":{"line":68,"column":4},"end":{"line":73,"column":5}},{"start":{"line":68,"column":4},"end":{"line":73,"column":5}}],"line":68},"17":{"loc":{"start":{"line":81,"column":4},"end":{"line":108,"column":5}},"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":108,"column":5}},{"start":{"line":81,"column":4},"end":{"line":108,"column":5}}],"line":81},"18":{"loc":{"start":{"line":86,"column":8},"end":{"line":88,"column":9}},"type":"if","locations":[{"start":{"line":86,"column":8},"end":{"line":88,"column":9}},{"start":{"line":86,"column":8},"end":{"line":88,"column":9}}],"line":86},"19":{"loc":{"start":{"line":89,"column":8},"end":{"line":91,"column":9}},"type":"if","locations":[{"start":{"line":89,"column":8},"end":{"line":91,"column":9}},{"start":{"line":89,"column":8},"end":{"line":91,"column":9}}],"line":89},"20":{"loc":{"start":{"line":90,"column":19},"end":{"line":90,"column":46}},"type":"binary-expr","locations":[{"start":{"line":90,"column":19},"end":{"line":90,"column":34}},{"start":{"line":90,"column":38},"end":{"line":90,"column":46}}],"line":90},"21":{"loc":{"start":{"line":92,"column":8},"end":{"line":107,"column":9}},"type":"if","locations":[{"start":{"line":92,"column":8},"end":{"line":107,"column":9}},{"start":{"line":92,"column":8},"end":{"line":107,"column":9}}],"line":92},"22":{"loc":{"start":{"line":95,"column":12},"end":{"line":100,"column":13}},"type":"if","locations":[{"start":{"line":95,"column":12},"end":{"line":100,"column":13}},{"start":{"line":95,"column":12},"end":{"line":100,"column":13}}],"line":95},"23":{"loc":{"start":{"line":102,"column":13},"end":{"line":107,"column":9}},"type":"if","locations":[{"start":{"line":102,"column":13},"end":{"line":107,"column":9}},{"start":{"line":102,"column":13},"end":{"line":107,"column":9}}],"line":102},"24":{"loc":{"start":{"line":111,"column":4},"end":{"line":128,"column":5}},"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":128,"column":5}},{"start":{"line":111,"column":4},"end":{"line":128,"column":5}}],"line":111},"25":{"loc":{"start":{"line":112,"column":8},"end":{"line":127,"column":9}},"type":"if","locations":[{"start":{"line":112,"column":8},"end":{"line":127,"column":9}},{"start":{"line":112,"column":8},"end":{"line":127,"column":9}}],"line":112},"26":{"loc":{"start":{"line":116,"column":12},"end":{"line":126,"column":13}},"type":"if","locations":[{"start":{"line":116,"column":12},"end":{"line":126,"column":13}},{"start":{"line":116,"column":12},"end":{"line":126,"column":13}}],"line":116},"27":{"loc":{"start":{"line":117,"column":16},"end":{"line":122,"column":17}},"type":"if","locations":[{"start":{"line":117,"column":16},"end":{"line":122,"column":17}},{"start":{"line":117,"column":16},"end":{"line":122,"column":17}}],"line":117},"28":{"loc":{"start":{"line":117,"column":20},"end":{"line":117,"column":91}},"type":"binary-expr","locations":[{"start":{"line":117,"column":20},"end":{"line":117,"column":51}},{"start":{"line":117,"column":55},"end":{"line":117,"column":91}}],"line":117},"29":{"loc":{"start":{"line":139,"column":4},"end":{"line":153,"column":5}},"type":"if","locations":[{"start":{"line":139,"column":4},"end":{"line":153,"column":5}},{"start":{"line":139,"column":4},"end":{"line":153,"column":5}}],"line":139},"30":{"loc":{"start":{"line":142,"column":9},"end":{"line":153,"column":5}},"type":"if","locations":[{"start":{"line":142,"column":9},"end":{"line":153,"column":5}},{"start":{"line":142,"column":9},"end":{"line":153,"column":5}}],"line":142},"31":{"loc":{"start":{"line":145,"column":9},"end":{"line":153,"column":5}},"type":"if","locations":[{"start":{"line":145,"column":9},"end":{"line":153,"column":5}},{"start":{"line":145,"column":9},"end":{"line":153,"column":5}}],"line":145},"32":{"loc":{"start":{"line":148,"column":9},"end":{"line":153,"column":5}},"type":"if","locations":[{"start":{"line":148,"column":9},"end":{"line":153,"column":5}},{"start":{"line":148,"column":9},"end":{"line":153,"column":5}}],"line":148},"33":{"loc":{"start":{"line":157,"column":4},"end":{"line":159,"column":5}},"type":"if","locations":[{"start":{"line":157,"column":4},"end":{"line":159,"column":5}},{"start":{"line":157,"column":4},"end":{"line":159,"column":5}}],"line":157},"34":{"loc":{"start":{"line":167,"column":4},"end":{"line":169,"column":5}},"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":169,"column":5}},{"start":{"line":167,"column":4},"end":{"line":169,"column":5}}],"line":167},"35":{"loc":{"start":{"line":170,"column":4},"end":{"line":181,"column":5}},"type":"if","locations":[{"start":{"line":170,"column":4},"end":{"line":181,"column":5}},{"start":{"line":170,"column":4},"end":{"line":181,"column":5}}],"line":170},"36":{"loc":{"start":{"line":173,"column":9},"end":{"line":181,"column":5}},"type":"if","locations":[{"start":{"line":173,"column":9},"end":{"line":181,"column":5}},{"start":{"line":173,"column":9},"end":{"line":181,"column":5}}],"line":173},"37":{"loc":{"start":{"line":173,"column":13},"end":{"line":173,"column":126}},"type":"binary-expr","locations":[{"start":{"line":173,"column":13},"end":{"line":173,"column":32}},{"start":{"line":173,"column":36},"end":{"line":173,"column":68}},{"start":{"line":173,"column":72},"end":{"line":173,"column":91}},{"start":{"line":173,"column":95},"end":{"line":173,"column":126}}],"line":173},"38":{"loc":{"start":{"line":176,"column":9},"end":{"line":181,"column":5}},"type":"if","locations":[{"start":{"line":176,"column":9},"end":{"line":181,"column":5}},{"start":{"line":176,"column":9},"end":{"line":181,"column":5}}],"line":176},"39":{"loc":{"start":{"line":176,"column":13},"end":{"line":176,"column":125}},"type":"binary-expr","locations":[{"start":{"line":176,"column":13},"end":{"line":176,"column":30}},{"start":{"line":176,"column":34},"end":{"line":176,"column":67}},{"start":{"line":176,"column":71},"end":{"line":176,"column":88}},{"start":{"line":176,"column":92},"end":{"line":176,"column":125}}],"line":176},"40":{"loc":{"start":{"line":185,"column":4},"end":{"line":190,"column":5}},"type":"if","locations":[{"start":{"line":185,"column":4},"end":{"line":190,"column":5}},{"start":{"line":185,"column":4},"end":{"line":190,"column":5}}],"line":185},"41":{"loc":{"start":{"line":185,"column":8},"end":{"line":185,"column":63}},"type":"binary-expr","locations":[{"start":{"line":185,"column":8},"end":{"line":185,"column":27}},{"start":{"line":185,"column":31},"end":{"line":185,"column":63}}],"line":185}},"s":{"0":1,"1":2,"2":1,"3":1,"4":1,"5":1,"6":118,"7":118,"8":32118,"9":32116,"10":32107,"11":116,"12":1,"13":32118,"14":2,"15":32116,"16":32116,"17":32116,"18":32107,"19":9,"20":32116,"21":32116,"22":32116,"23":65845,"24":65845,"25":7,"26":65838,"27":65838,"28":65838,"29":51,"30":65838,"31":65838,"32":10,"33":10,"34":8,"35":65828,"36":75,"37":75,"38":65828,"39":65828,"40":32116,"41":32107,"42":9,"43":1,"44":65838,"45":65275,"46":563,"47":563,"48":556,"49":7,"50":1,"51":7,"52":6,"53":6,"54":6,"55":6,"56":0,"57":1,"58":1,"59":0,"60":65836,"61":562,"62":3,"63":559,"64":103,"65":1,"66":102,"67":456,"68":65836,"69":65047,"70":789,"71":75,"72":9,"73":66,"74":0,"75":66,"76":0,"77":66,"78":66,"79":0,"80":15,"81":15,"82":1,"83":14,"84":58,"85":75,"86":75,"87":13,"88":62,"89":13,"90":49,"91":4,"92":45,"93":5,"94":40,"95":4,"96":4,"97":2,"98":2,"99":5,"100":5,"101":0},"f":{"0":2,"1":118,"2":32118,"3":32116,"4":2,"5":65838,"6":65836,"7":65047,"8":789,"9":75,"10":15,"11":58,"12":75,"13":4,"14":5},"b":{"0":[1,1,1],"1":[1,1],"2":[2,2],"3":[32107,9],"4":[2,32116],"5":[32118,5,5],"6":[32116,0],"7":[32107,9],"8":[7,65838],"9":[65845,18],"10":[51,65787],"11":[65838,65787],"12":[10,65828],"13":[8,2],"14":[75,65753],"15":[65828,0],"16":[32107,9],"17":[65275,563],"18":[556,7],"19":[1,6],"20":[1,1],"21":[6,1],"22":[6,0],"23":[1,0],"24":[562,65274],"25":[3,559],"26":[103,456],"27":[1,102],"28":[103,1],"29":[9,66],"30":[0,66],"31":[0,66],"32":[66,0],"33":[1,14],"34":[13,62],"35":[13,49],"36":[4,45],"37":[49,8,47,7],"38":[5,40],"39":[45,3,42,2],"40":[2,2],"41":[4,2]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"1b2047d3f118d3c03718e37ead2609bb87d923e0","contentHash":"8f3455fcd70f9377c2168fb62ac76e47_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/Result.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/Result.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":17},"end":{"line":6,"column":53}},"4":{"start":{"line":7,"column":28},"end":{"line":83,"column":3}},"5":{"start":{"line":9,"column":8},"end":{"line":9,"column":35}},"6":{"start":{"line":10,"column":8},"end":{"line":10,"column":30}},"7":{"start":{"line":12,"column":4},"end":{"line":18,"column":7}},"8":{"start":{"line":14,"column":12},"end":{"line":14,"column":136}},"9":{"start":{"line":19,"column":4},"end":{"line":28,"column":7}},"10":{"start":{"line":21,"column":12},"end":{"line":23,"column":13}},"11":{"start":{"line":22,"column":16},"end":{"line":22,"column":138}},"12":{"start":{"line":24,"column":12},"end":{"line":24,"column":44}},"13":{"start":{"line":29,"column":4},"end":{"line":35,"column":7}},"14":{"start":{"line":31,"column":12},"end":{"line":31,"column":54}},"15":{"start":{"line":36,"column":4},"end":{"line":57,"column":6}},"16":{"start":{"line":37,"column":20},"end":{"line":37,"column":24}},"17":{"start":{"line":38,"column":23},"end":{"line":38,"column":67}},"18":{"start":{"line":40,"column":8},"end":{"line":56,"column":11}},"19":{"start":{"line":41,"column":12},"end":{"line":55,"column":13}},"20":{"start":{"line":42,"column":16},"end":{"line":50,"column":19}},"21":{"start":{"line":43,"column":20},"end":{"line":49,"column":21}},"22":{"start":{"line":44,"column":24},"end":{"line":44,"column":36}},"23":{"start":{"line":47,"column":24},"end":{"line":47,"column":61}},"24":{"start":{"line":48,"column":24},"end":{"line":48,"column":34}},"25":{"start":{"line":53,"column":16},"end":{"line":53,"column":53}},"26":{"start":{"line":54,"column":16},"end":{"line":54,"column":26}},"27":{"start":{"line":58,"column":4},"end":{"line":63,"column":6}},"28":{"start":{"line":59,"column":8},"end":{"line":61,"column":9}},"29":{"start":{"line":60,"column":12},"end":{"line":60,"column":62}},"30":{"start":{"line":62,"column":8},"end":{"line":62,"column":69}},"31":{"start":{"line":64,"column":4},"end":{"line":71,"column":6}},"32":{"start":{"line":65,"column":8},"end":{"line":67,"column":9}},"33":{"start":{"line":66,"column":12},"end":{"line":66,"column":63}},"34":{"start":{"line":68,"column":8},"end":{"line":70,"column":9}},"35":{"start":{"line":69,"column":12},"end":{"line":69,"column":61}},"36":{"start":{"line":72,"column":4},"end":{"line":81,"column":6}},"37":{"start":{"line":73,"column":8},"end":{"line":77,"column":9}},"38":{"start":{"line":74,"column":12},"end":{"line":76,"column":13}},"39":{"start":{"line":75,"column":16},"end":{"line":75,"column":79}},"40":{"start":{"line":78,"column":8},"end":{"line":80,"column":9}},"41":{"start":{"line":79,"column":12},"end":{"line":79,"column":64}},"42":{"start":{"line":82,"column":4},"end":{"line":82,"column":18}},"43":{"start":{"line":84,"column":0},"end":{"line":84,"column":24}},"44":{"start":{"line":86,"column":4},"end":{"line":133,"column":5}},"45":{"start":{"line":87,"column":8},"end":{"line":87,"column":13}},"46":{"start":{"line":90,"column":8},"end":{"line":132,"column":9}},"47":{"start":{"line":91,"column":25},"end":{"line":91,"column":59}},"48":{"start":{"line":92,"column":29},"end":{"line":92,"column":42}},"49":{"start":{"line":93,"column":22},"end":{"line":93,"column":85}},"50":{"start":{"line":94,"column":12},"end":{"line":94,"column":21}},"51":{"start":{"line":96,"column":12},"end":{"line":115,"column":13}},"52":{"start":{"line":97,"column":16},"end":{"line":99,"column":23}},"53":{"start":{"line":98,"column":20},"end":{"line":98,"column":102}},"54":{"start":{"line":103,"column":16},"end":{"line":105,"column":17}},"55":{"start":{"line":104,"column":20},"end":{"line":104,"column":53}},"56":{"start":{"line":106,"column":16},"end":{"line":113,"column":17}},"57":{"start":{"line":107,"column":31},"end":{"line":107,"column":44}},"58":{"start":{"line":108,"column":20},"end":{"line":108,"column":78}},"59":{"start":{"line":109,"column":20},"end":{"line":109,"column":29}},"60":{"start":{"line":110,"column":20},"end":{"line":112,"column":21}},"61":{"start":{"line":111,"column":24},"end":{"line":111,"column":51}},"62":{"start":{"line":114,"column":16},"end":{"line":114,"column":21}},"63":{"start":{"line":125,"column":12},"end":{"line":130,"column":13}},"64":{"start":{"line":126,"column":16},"end":{"line":129,"column":17}},"65":{"start":{"line":127,"column":31},"end":{"line":127,"column":46}},"66":{"start":{"line":128,"column":20},"end":{"line":128,"column":47}},"67":{"start":{"line":131,"column":12},"end":{"line":131,"column":17}},"68":{"start":{"line":136,"column":4},"end":{"line":138,"column":5}},"69":{"start":{"line":137,"column":8},"end":{"line":137,"column":34}},"70":{"start":{"line":139,"column":4},"end":{"line":139,"column":67}},"71":{"start":{"line":142,"column":4},"end":{"line":147,"column":5}},"72":{"start":{"line":143,"column":8},"end":{"line":143,"column":54}},"73":{"start":{"line":146,"column":8},"end":{"line":146,"column":23}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":28},"end":{"line":7,"column":29}},"loc":{"start":{"line":7,"column":40},"end":{"line":83,"column":1}},"line":7},"2":{"name":"Result","decl":{"start":{"line":8,"column":13},"end":{"line":8,"column":19}},"loc":{"start":{"line":8,"column":31},"end":{"line":11,"column":5}},"line":8},"3":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":13},"end":{"line":13,"column":14}},"loc":{"start":{"line":13,"column":25},"end":{"line":15,"column":9}},"line":13},"4":{"name":"(anonymous_4)","decl":{"start":{"line":20,"column":13},"end":{"line":20,"column":14}},"loc":{"start":{"line":20,"column":25},"end":{"line":25,"column":9}},"line":20},"5":{"name":"(anonymous_5)","decl":{"start":{"line":30,"column":13},"end":{"line":30,"column":14}},"loc":{"start":{"line":30,"column":25},"end":{"line":32,"column":9}},"line":30},"6":{"name":"(anonymous_6)","decl":{"start":{"line":36,"column":37},"end":{"line":36,"column":38}},"loc":{"start":{"line":36,"column":60},"end":{"line":57,"column":5}},"line":36},"7":{"name":"(anonymous_7)","decl":{"start":{"line":40,"column":38},"end":{"line":40,"column":39}},"loc":{"start":{"line":40,"column":65},"end":{"line":56,"column":9}},"line":40},"8":{"name":"(anonymous_8)","decl":{"start":{"line":42,"column":93},"end":{"line":42,"column":94}},"loc":{"start":{"line":42,"column":108},"end":{"line":50,"column":17}},"line":42},"9":{"name":"(anonymous_9)","decl":{"start":{"line":58,"column":41},"end":{"line":58,"column":42}},"loc":{"start":{"line":58,"column":58},"end":{"line":63,"column":5}},"line":58},"10":{"name":"(anonymous_10)","decl":{"start":{"line":64,"column":36},"end":{"line":64,"column":37}},"loc":{"start":{"line":64,"column":51},"end":{"line":71,"column":5}},"line":64},"11":{"name":"(anonymous_11)","decl":{"start":{"line":72,"column":34},"end":{"line":72,"column":35}},"loc":{"start":{"line":72,"column":46},"end":{"line":81,"column":5}},"line":72},"12":{"name":"processLineByLine","decl":{"start":{"line":85,"column":9},"end":{"line":85,"column":26}},"loc":{"start":{"line":85,"column":72},"end":{"line":134,"column":1}},"line":85},"13":{"name":"(anonymous_13)","decl":{"start":{"line":97,"column":25},"end":{"line":97,"column":26}},"loc":{"start":{"line":97,"column":37},"end":{"line":99,"column":17}},"line":97},"14":{"name":"processRecursive","decl":{"start":{"line":135,"column":9},"end":{"line":135,"column":25}},"loc":{"start":{"line":135,"column":82},"end":{"line":140,"column":1}},"line":135},"15":{"name":"pushDownstream","decl":{"start":{"line":141,"column":9},"end":{"line":141,"column":23}},"loc":{"start":{"line":141,"column":35},"end":{"line":148,"column":1}},"line":141}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":14,"column":19},"end":{"line":14,"column":135}},"type":"binary-expr","locations":[{"start":{"line":14,"column":19},"end":{"line":14,"column":58}},{"start":{"line":14,"column":62},"end":{"line":14,"column":108}},{"start":{"line":14,"column":112},"end":{"line":14,"column":135}}],"line":14},"4":{"loc":{"start":{"line":21,"column":12},"end":{"line":23,"column":13}},"type":"if","locations":[{"start":{"line":21,"column":12},"end":{"line":23,"column":13}},{"start":{"line":21,"column":12},"end":{"line":23,"column":13}}],"line":21},"5":{"loc":{"start":{"line":22,"column":43},"end":{"line":22,"column":137}},"type":"binary-expr","locations":[{"start":{"line":22,"column":43},"end":{"line":22,"column":86}},{"start":{"line":22,"column":90},"end":{"line":22,"column":137}}],"line":22},"6":{"loc":{"start":{"line":41,"column":12},"end":{"line":55,"column":13}},"type":"if","locations":[{"start":{"line":41,"column":12},"end":{"line":55,"column":13}},{"start":{"line":41,"column":12},"end":{"line":55,"column":13}}],"line":41},"7":{"loc":{"start":{"line":43,"column":20},"end":{"line":49,"column":21}},"type":"if","locations":[{"start":{"line":43,"column":20},"end":{"line":49,"column":21}},{"start":{"line":43,"column":20},"end":{"line":49,"column":21}}],"line":43},"8":{"loc":{"start":{"line":59,"column":8},"end":{"line":61,"column":9}},"type":"if","locations":[{"start":{"line":59,"column":8},"end":{"line":61,"column":9}},{"start":{"line":59,"column":8},"end":{"line":61,"column":9}}],"line":59},"9":{"loc":{"start":{"line":65,"column":8},"end":{"line":67,"column":9}},"type":"if","locations":[{"start":{"line":65,"column":8},"end":{"line":67,"column":9}},{"start":{"line":65,"column":8},"end":{"line":67,"column":9}}],"line":65},"10":{"loc":{"start":{"line":65,"column":12},"end":{"line":65,"column":98}},"type":"binary-expr","locations":[{"start":{"line":65,"column":12},"end":{"line":65,"column":49}},{"start":{"line":65,"column":53},"end":{"line":65,"column":98}}],"line":65},"11":{"loc":{"start":{"line":68,"column":8},"end":{"line":70,"column":9}},"type":"if","locations":[{"start":{"line":68,"column":8},"end":{"line":70,"column":9}},{"start":{"line":68,"column":8},"end":{"line":70,"column":9}}],"line":68},"12":{"loc":{"start":{"line":68,"column":12},"end":{"line":68,"column":91}},"type":"binary-expr","locations":[{"start":{"line":68,"column":12},"end":{"line":68,"column":44}},{"start":{"line":68,"column":48},"end":{"line":68,"column":91}}],"line":68},"13":{"loc":{"start":{"line":73,"column":8},"end":{"line":77,"column":9}},"type":"if","locations":[{"start":{"line":73,"column":8},"end":{"line":77,"column":9}},{"start":{"line":73,"column":8},"end":{"line":77,"column":9}}],"line":73},"14":{"loc":{"start":{"line":74,"column":12},"end":{"line":76,"column":13}},"type":"if","locations":[{"start":{"line":74,"column":12},"end":{"line":76,"column":13}},{"start":{"line":74,"column":12},"end":{"line":76,"column":13}}],"line":74},"15":{"loc":{"start":{"line":74,"column":16},"end":{"line":74,"column":96}},"type":"binary-expr","locations":[{"start":{"line":74,"column":16},"end":{"line":74,"column":48}},{"start":{"line":74,"column":52},"end":{"line":74,"column":96}}],"line":74},"16":{"loc":{"start":{"line":78,"column":8},"end":{"line":80,"column":9}},"type":"if","locations":[{"start":{"line":78,"column":8},"end":{"line":80,"column":9}},{"start":{"line":78,"column":8},"end":{"line":80,"column":9}}],"line":78},"17":{"loc":{"start":{"line":78,"column":12},"end":{"line":78,"column":102}},"type":"binary-expr","locations":[{"start":{"line":78,"column":12},"end":{"line":78,"column":49}},{"start":{"line":78,"column":53},"end":{"line":78,"column":102}}],"line":78},"18":{"loc":{"start":{"line":86,"column":4},"end":{"line":133,"column":5}},"type":"if","locations":[{"start":{"line":86,"column":4},"end":{"line":133,"column":5}},{"start":{"line":86,"column":4},"end":{"line":133,"column":5}}],"line":86},"19":{"loc":{"start":{"line":90,"column":8},"end":{"line":132,"column":9}},"type":"if","locations":[{"start":{"line":90,"column":8},"end":{"line":132,"column":9}},{"start":{"line":90,"column":8},"end":{"line":132,"column":9}}],"line":90},"20":{"loc":{"start":{"line":90,"column":12},"end":{"line":90,"column":77}},"type":"binary-expr","locations":[{"start":{"line":90,"column":12},"end":{"line":90,"column":39}},{"start":{"line":90,"column":43},"end":{"line":90,"column":77}}],"line":90},"21":{"loc":{"start":{"line":96,"column":12},"end":{"line":115,"column":13}},"type":"if","locations":[{"start":{"line":96,"column":12},"end":{"line":115,"column":13}},{"start":{"line":96,"column":12},"end":{"line":115,"column":13}}],"line":96},"22":{"loc":{"start":{"line":96,"column":16},"end":{"line":96,"column":31}},"type":"binary-expr","locations":[{"start":{"line":96,"column":16},"end":{"line":96,"column":19}},{"start":{"line":96,"column":23},"end":{"line":96,"column":31}}],"line":96},"23":{"loc":{"start":{"line":103,"column":16},"end":{"line":105,"column":17}},"type":"if","locations":[{"start":{"line":103,"column":16},"end":{"line":105,"column":17}},{"start":{"line":103,"column":16},"end":{"line":105,"column":17}}],"line":103},"24":{"loc":{"start":{"line":110,"column":20},"end":{"line":112,"column":21}},"type":"if","locations":[{"start":{"line":110,"column":20},"end":{"line":112,"column":21}},{"start":{"line":110,"column":20},"end":{"line":112,"column":21}}],"line":110},"25":{"loc":{"start":{"line":125,"column":12},"end":{"line":130,"column":13}},"type":"if","locations":[{"start":{"line":125,"column":12},"end":{"line":130,"column":13}},{"start":{"line":125,"column":12},"end":{"line":130,"column":13}}],"line":125},"26":{"loc":{"start":{"line":136,"column":4},"end":{"line":138,"column":5}},"type":"if","locations":[{"start":{"line":136,"column":4},"end":{"line":138,"column":5}},{"start":{"line":136,"column":4},"end":{"line":138,"column":5}}],"line":136},"27":{"loc":{"start":{"line":142,"column":4},"end":{"line":147,"column":5}},"type":"if","locations":[{"start":{"line":142,"column":4},"end":{"line":147,"column":5}},{"start":{"line":142,"column":4},"end":{"line":147,"column":5}}],"line":142},"28":{"loc":{"start":{"line":142,"column":8},"end":{"line":142,"column":59}},"type":"binary-expr","locations":[{"start":{"line":142,"column":8},"end":{"line":142,"column":31}},{"start":{"line":142,"column":35},"end":{"line":142,"column":59}}],"line":142}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":120,"6":120,"7":1,"8":147,"9":1,"10":158,"11":106,"12":158,"13":1,"14":251,"15":1,"16":147,"17":147,"18":147,"19":147,"20":54,"21":54,"22":0,"23":54,"24":54,"25":93,"26":93,"27":1,"28":147,"29":114,"30":147,"31":1,"32":9,"33":0,"34":9,"35":5,"36":1,"37":104,"38":79,"39":79,"40":104,"41":0,"42":1,"43":1,"44":58,"45":3,"46":55,"47":44,"48":44,"49":44,"50":44,"51":44,"52":4,"53":4,"54":40,"55":1,"56":40,"57":15896,"58":15896,"59":15896,"60":15896,"61":1,"62":40,"63":11,"64":11,"65":15874,"66":15874,"67":11,"68":4,"69":0,"70":4,"71":15876,"72":10584,"73":5292},"f":{"0":1,"1":1,"2":120,"3":147,"4":158,"5":251,"6":147,"7":147,"8":54,"9":147,"10":9,"11":104,"12":58,"13":4,"14":4,"15":15876},"b":{"0":[1,1,1],"1":[0,1],"2":[1,1],"3":[147,43,104],"4":[106,52],"5":[106,100],"6":[54,93],"7":[0,54],"8":[114,33],"9":[0,9],"10":[9,1],"11":[5,4],"12":[9,5],"13":[79,25],"14":[79,0],"15":[79,79],"16":[0,104],"17":[104,33],"18":[3,55],"19":[44,11],"20":[55,44],"21":[4,40],"22":[44,4],"23":[1,39],"24":[1,15895],"25":[11,0],"26":[0,4],"27":[10584,5292],"28":[15876,15876]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"f4b933d67dbdf80a14c29f466e77a461a6333f3a","contentHash":"0ab4086099b159c1b531eab9996d8296_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/ProcessorLocal.test.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/ProcessorLocal.test.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":8,"column":7}},"2":{"start":{"line":4,"column":36},"end":{"line":4,"column":97}},"3":{"start":{"line":4,"column":42},"end":{"line":4,"column":70}},"4":{"start":{"line":4,"column":85},"end":{"line":4,"column":95}},"5":{"start":{"line":5,"column":35},"end":{"line":5,"column":100}},"6":{"start":{"line":5,"column":41},"end":{"line":5,"column":73}},"7":{"start":{"line":5,"column":88},"end":{"line":5,"column":98}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":149}},"9":{"start":{"line":6,"column":97},"end":{"line":6,"column":119}},"10":{"start":{"line":7,"column":8},"end":{"line":7,"column":78}},"11":{"start":{"line":10,"column":18},"end":{"line":36,"column":1}},"12":{"start":{"line":11,"column":12},"end":{"line":11,"column":104}},"13":{"start":{"line":11,"column":43},"end":{"line":11,"column":68}},"14":{"start":{"line":11,"column":57},"end":{"line":11,"column":68}},"15":{"start":{"line":11,"column":69},"end":{"line":11,"column":81}},"16":{"start":{"line":12,"column":4},"end":{"line":12,"column":157}},"17":{"start":{"line":12,"column":138},"end":{"line":12,"column":150}},"18":{"start":{"line":13,"column":23},"end":{"line":13,"column":68}},"19":{"start":{"line":13,"column":45},"end":{"line":13,"column":65}},"20":{"start":{"line":15,"column":8},"end":{"line":15,"column":70}},"21":{"start":{"line":15,"column":15},"end":{"line":15,"column":70}},"22":{"start":{"line":16,"column":8},"end":{"line":33,"column":66}},"23":{"start":{"line":16,"column":18},"end":{"line":33,"column":66}},"24":{"start":{"line":17,"column":12},"end":{"line":17,"column":127}},"25":{"start":{"line":17,"column":118},"end":{"line":17,"column":127}},"26":{"start":{"line":18,"column":12},"end":{"line":18,"column":44}},"27":{"start":{"line":18,"column":26},"end":{"line":18,"column":44}},"28":{"start":{"line":19,"column":12},"end":{"line":31,"column":13}},"29":{"start":{"line":20,"column":32},"end":{"line":20,"column":39}},"30":{"start":{"line":20,"column":40},"end":{"line":20,"column":46}},"31":{"start":{"line":21,"column":24},"end":{"line":21,"column":34}},"32":{"start":{"line":21,"column":35},"end":{"line":21,"column":72}},"33":{"start":{"line":22,"column":24},"end":{"line":22,"column":34}},"34":{"start":{"line":22,"column":35},"end":{"line":22,"column":45}},"35":{"start":{"line":22,"column":46},"end":{"line":22,"column":55}},"36":{"start":{"line":22,"column":56},"end":{"line":22,"column":65}},"37":{"start":{"line":23,"column":24},"end":{"line":23,"column":41}},"38":{"start":{"line":23,"column":42},"end":{"line":23,"column":55}},"39":{"start":{"line":23,"column":56},"end":{"line":23,"column":65}},"40":{"start":{"line":25,"column":20},"end":{"line":25,"column":128}},"41":{"start":{"line":25,"column":110},"end":{"line":25,"column":116}},"42":{"start":{"line":25,"column":117},"end":{"line":25,"column":126}},"43":{"start":{"line":26,"column":20},"end":{"line":26,"column":106}},"44":{"start":{"line":26,"column":81},"end":{"line":26,"column":97}},"45":{"start":{"line":26,"column":98},"end":{"line":26,"column":104}},"46":{"start":{"line":27,"column":20},"end":{"line":27,"column":89}},"47":{"start":{"line":27,"column":57},"end":{"line":27,"column":72}},"48":{"start":{"line":27,"column":73},"end":{"line":27,"column":80}},"49":{"start":{"line":27,"column":81},"end":{"line":27,"column":87}},"50":{"start":{"line":28,"column":20},"end":{"line":28,"column":87}},"51":{"start":{"line":28,"column":47},"end":{"line":28,"column":62}},"52":{"start":{"line":28,"column":63},"end":{"line":28,"column":78}},"53":{"start":{"line":28,"column":79},"end":{"line":28,"column":85}},"54":{"start":{"line":29,"column":20},"end":{"line":29,"column":42}},"55":{"start":{"line":29,"column":30},"end":{"line":29,"column":42}},"56":{"start":{"line":30,"column":20},"end":{"line":30,"column":33}},"57":{"start":{"line":30,"column":34},"end":{"line":30,"column":43}},"58":{"start":{"line":32,"column":12},"end":{"line":32,"column":39}},"59":{"start":{"line":33,"column":22},"end":{"line":33,"column":34}},"60":{"start":{"line":33,"column":35},"end":{"line":33,"column":41}},"61":{"start":{"line":33,"column":54},"end":{"line":33,"column":64}},"62":{"start":{"line":34,"column":8},"end":{"line":34,"column":35}},"63":{"start":{"line":34,"column":23},"end":{"line":34,"column":35}},"64":{"start":{"line":34,"column":36},"end":{"line":34,"column":89}},"65":{"start":{"line":37,"column":22},"end":{"line":39,"column":1}},"66":{"start":{"line":38,"column":4},"end":{"line":38,"column":62}},"67":{"start":{"line":40,"column":0},"end":{"line":40,"column":62}},"68":{"start":{"line":41,"column":23},"end":{"line":41,"column":50}},"69":{"start":{"line":42,"column":18},"end":{"line":42,"column":40}},"70":{"start":{"line":43,"column":11},"end":{"line":43,"column":24}},"71":{"start":{"line":44,"column":13},"end":{"line":44,"column":45}},"72":{"start":{"line":45,"column":15},"end":{"line":45,"column":49}},"73":{"start":{"line":46,"column":14},"end":{"line":46,"column":61}},"74":{"start":{"line":47,"column":0},"end":{"line":98,"column":3}},"75":{"start":{"line":48,"column":4},"end":{"line":68,"column":7}},"76":{"start":{"line":49,"column":8},"end":{"line":67,"column":11}},"77":{"start":{"line":51,"column":12},"end":{"line":66,"column":15}},"78":{"start":{"line":52,"column":16},"end":{"line":65,"column":17}},"79":{"start":{"line":54,"column":24},"end":{"line":54,"column":101}},"80":{"start":{"line":55,"column":24},"end":{"line":55,"column":78}},"81":{"start":{"line":56,"column":24},"end":{"line":56,"column":70}},"82":{"start":{"line":58,"column":24},"end":{"line":58,"column":42}},"83":{"start":{"line":59,"column":24},"end":{"line":59,"column":61}},"84":{"start":{"line":60,"column":24},"end":{"line":60,"column":41}},"85":{"start":{"line":61,"column":24},"end":{"line":61,"column":83}},"86":{"start":{"line":62,"column":24},"end":{"line":62,"column":80}},"87":{"start":{"line":63,"column":24},"end":{"line":63,"column":97}},"88":{"start":{"line":64,"column":24},"end":{"line":64,"column":46}},"89":{"start":{"line":69,"column":4},"end":{"line":85,"column":7}},"90":{"start":{"line":70,"column":8},"end":{"line":84,"column":11}},"91":{"start":{"line":72,"column":12},"end":{"line":83,"column":15}},"92":{"start":{"line":73,"column":16},"end":{"line":82,"column":17}},"93":{"start":{"line":75,"column":24},"end":{"line":75,"column":119}},"94":{"start":{"line":76,"column":24},"end":{"line":76,"column":78}},"95":{"start":{"line":77,"column":24},"end":{"line":77,"column":70}},"96":{"start":{"line":79,"column":24},"end":{"line":79,"column":42}},"97":{"start":{"line":80,"column":24},"end":{"line":80,"column":61}},"98":{"start":{"line":81,"column":24},"end":{"line":81,"column":46}},"99":{"start":{"line":86,"column":4},"end":{"line":97,"column":7}},"100":{"start":{"line":87,"column":19},"end":{"line":87,"column":46}},"101":{"start":{"line":88,"column":8},"end":{"line":90,"column":11}},"102":{"start":{"line":89,"column":12},"end":{"line":89,"column":22}},"103":{"start":{"line":91,"column":24},"end":{"line":91,"column":65}},"104":{"start":{"line":92,"column":19},"end":{"line":92,"column":65}},"105":{"start":{"line":93,"column":8},"end":{"line":96,"column":11}},"106":{"start":{"line":95,"column":12},"end":{"line":95,"column":51}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":44},"end":{"line":2,"column":45}},"loc":{"start":{"line":2,"column":89},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":36},"end":{"line":3,"column":37}},"loc":{"start":{"line":3,"column":63},"end":{"line":8,"column":5}},"line":3},"2":{"name":"fulfilled","decl":{"start":{"line":4,"column":17},"end":{"line":4,"column":26}},"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":99}},"line":4},"3":{"name":"rejected","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":33},"end":{"line":5,"column":102}},"line":5},"4":{"name":"step","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":30},"end":{"line":6,"column":151}},"line":6},"5":{"name":"(anonymous_5)","decl":{"start":{"line":6,"column":76},"end":{"line":6,"column":77}},"loc":{"start":{"line":6,"column":95},"end":{"line":6,"column":121}},"line":6},"6":{"name":"(anonymous_6)","decl":{"start":{"line":10,"column":48},"end":{"line":10,"column":49}},"loc":{"start":{"line":10,"column":73},"end":{"line":36,"column":1}},"line":10},"7":{"name":"(anonymous_7)","decl":{"start":{"line":11,"column":30},"end":{"line":11,"column":31}},"loc":{"start":{"line":11,"column":41},"end":{"line":11,"column":83}},"line":11},"8":{"name":"(anonymous_8)","decl":{"start":{"line":12,"column":125},"end":{"line":12,"column":126}},"loc":{"start":{"line":12,"column":136},"end":{"line":12,"column":152}},"line":12},"9":{"name":"verb","decl":{"start":{"line":13,"column":13},"end":{"line":13,"column":17}},"loc":{"start":{"line":13,"column":21},"end":{"line":13,"column":70}},"line":13},"10":{"name":"(anonymous_10)","decl":{"start":{"line":13,"column":30},"end":{"line":13,"column":31}},"loc":{"start":{"line":13,"column":43},"end":{"line":13,"column":67}},"line":13},"11":{"name":"step","decl":{"start":{"line":14,"column":13},"end":{"line":14,"column":17}},"loc":{"start":{"line":14,"column":22},"end":{"line":35,"column":5}},"line":14},"12":{"name":"(anonymous_12)","decl":{"start":{"line":37,"column":56},"end":{"line":37,"column":57}},"loc":{"start":{"line":37,"column":71},"end":{"line":39,"column":1}},"line":37},"13":{"name":"(anonymous_13)","decl":{"start":{"line":47,"column":25},"end":{"line":47,"column":26}},"loc":{"start":{"line":47,"column":37},"end":{"line":98,"column":1}},"line":47},"14":{"name":"(anonymous_14)","decl":{"start":{"line":48,"column":52},"end":{"line":48,"column":53}},"loc":{"start":{"line":48,"column":64},"end":{"line":68,"column":5}},"line":48},"15":{"name":"(anonymous_15)","decl":{"start":{"line":49,"column":47},"end":{"line":49,"column":48}},"loc":{"start":{"line":49,"column":59},"end":{"line":67,"column":9}},"line":49},"16":{"name":"(anonymous_16)","decl":{"start":{"line":51,"column":37},"end":{"line":51,"column":38}},"loc":{"start":{"line":51,"column":51},"end":{"line":66,"column":13}},"line":51},"17":{"name":"(anonymous_17)","decl":{"start":{"line":69,"column":56},"end":{"line":69,"column":57}},"loc":{"start":{"line":69,"column":68},"end":{"line":85,"column":5}},"line":69},"18":{"name":"(anonymous_18)","decl":{"start":{"line":70,"column":47},"end":{"line":70,"column":48}},"loc":{"start":{"line":70,"column":59},"end":{"line":84,"column":9}},"line":70},"19":{"name":"(anonymous_19)","decl":{"start":{"line":72,"column":37},"end":{"line":72,"column":38}},"loc":{"start":{"line":72,"column":51},"end":{"line":83,"column":13}},"line":72},"20":{"name":"(anonymous_20)","decl":{"start":{"line":86,"column":67},"end":{"line":86,"column":68}},"loc":{"start":{"line":86,"column":79},"end":{"line":97,"column":5}},"line":86},"21":{"name":"(anonymous_21)","decl":{"start":{"line":88,"column":24},"end":{"line":88,"column":25}},"loc":{"start":{"line":88,"column":39},"end":{"line":90,"column":9}},"line":88},"22":{"name":"(anonymous_22)","decl":{"start":{"line":94,"column":18},"end":{"line":94,"column":19}},"loc":{"start":{"line":94,"column":34},"end":{"line":96,"column":9}},"line":94}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":9,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"type":"binary-expr","locations":[{"start":{"line":3,"column":16},"end":{"line":3,"column":17}},{"start":{"line":3,"column":22},"end":{"line":3,"column":33}}],"line":3},"2":{"loc":{"start":{"line":6,"column":32},"end":{"line":6,"column":148}},"type":"cond-expr","locations":[{"start":{"line":6,"column":46},"end":{"line":6,"column":67}},{"start":{"line":6,"column":70},"end":{"line":6,"column":148}}],"line":6},"3":{"loc":{"start":{"line":7,"column":51},"end":{"line":7,"column":67}},"type":"binary-expr","locations":[{"start":{"line":7,"column":51},"end":{"line":7,"column":61}},{"start":{"line":7,"column":65},"end":{"line":7,"column":67}}],"line":7},"4":{"loc":{"start":{"line":10,"column":18},"end":{"line":36,"column":1}},"type":"binary-expr","locations":[{"start":{"line":10,"column":19},"end":{"line":10,"column":23}},{"start":{"line":10,"column":27},"end":{"line":10,"column":43}},{"start":{"line":10,"column":48},"end":{"line":36,"column":1}}],"line":10},"5":{"loc":{"start":{"line":11,"column":43},"end":{"line":11,"column":68}},"type":"if","locations":[{"start":{"line":11,"column":43},"end":{"line":11,"column":68}},{"start":{"line":11,"column":43},"end":{"line":11,"column":68}}],"line":11},"6":{"loc":{"start":{"line":12,"column":71},"end":{"line":12,"column":153}},"type":"binary-expr","locations":[{"start":{"line":12,"column":71},"end":{"line":12,"column":99}},{"start":{"line":12,"column":104},"end":{"line":12,"column":152}}],"line":12},"7":{"loc":{"start":{"line":15,"column":8},"end":{"line":15,"column":70}},"type":"if","locations":[{"start":{"line":15,"column":8},"end":{"line":15,"column":70}},{"start":{"line":15,"column":8},"end":{"line":15,"column":70}}],"line":15},"8":{"loc":{"start":{"line":17,"column":12},"end":{"line":17,"column":127}},"type":"if","locations":[{"start":{"line":17,"column":12},"end":{"line":17,"column":127}},{"start":{"line":17,"column":12},"end":{"line":17,"column":127}}],"line":17},"9":{"loc":{"start":{"line":17,"column":23},"end":{"line":17,"column":116}},"type":"binary-expr","locations":[{"start":{"line":17,"column":23},"end":{"line":17,"column":24}},{"start":{"line":17,"column":29},"end":{"line":17,"column":83}},{"start":{"line":17,"column":88},"end":{"line":17,"column":116}}],"line":17},"10":{"loc":{"start":{"line":17,"column":35},"end":{"line":17,"column":82}},"type":"cond-expr","locations":[{"start":{"line":17,"column":47},"end":{"line":17,"column":55}},{"start":{"line":17,"column":58},"end":{"line":17,"column":82}}],"line":17},"11":{"loc":{"start":{"line":17,"column":58},"end":{"line":17,"column":82}},"type":"cond-expr","locations":[{"start":{"line":17,"column":66},"end":{"line":17,"column":73}},{"start":{"line":17,"column":76},"end":{"line":17,"column":82}}],"line":17},"12":{"loc":{"start":{"line":18,"column":12},"end":{"line":18,"column":44}},"type":"if","locations":[{"start":{"line":18,"column":12},"end":{"line":18,"column":44}},{"start":{"line":18,"column":12},"end":{"line":18,"column":44}}],"line":18},"13":{"loc":{"start":{"line":19,"column":12},"end":{"line":31,"column":13}},"type":"switch","locations":[{"start":{"line":20,"column":16},"end":{"line":20,"column":23}},{"start":{"line":20,"column":24},"end":{"line":20,"column":46}},{"start":{"line":21,"column":16},"end":{"line":21,"column":72}},{"start":{"line":22,"column":16},"end":{"line":22,"column":65}},{"start":{"line":23,"column":16},"end":{"line":23,"column":65}},{"start":{"line":24,"column":16},"end":{"line":30,"column":43}}],"line":19},"14":{"loc":{"start":{"line":25,"column":20},"end":{"line":25,"column":128}},"type":"if","locations":[{"start":{"line":25,"column":20},"end":{"line":25,"column":128}},{"start":{"line":25,"column":20},"end":{"line":25,"column":128}}],"line":25},"15":{"loc":{"start":{"line":25,"column":24},"end":{"line":25,"column":106}},"type":"binary-expr","locations":[{"start":{"line":25,"column":24},"end":{"line":25,"column":74}},{"start":{"line":25,"column":79},"end":{"line":25,"column":90}},{"start":{"line":25,"column":94},"end":{"line":25,"column":105}}],"line":25},"16":{"loc":{"start":{"line":25,"column":42},"end":{"line":25,"column":73}},"type":"binary-expr","locations":[{"start":{"line":25,"column":42},"end":{"line":25,"column":54}},{"start":{"line":25,"column":58},"end":{"line":25,"column":73}}],"line":25},"17":{"loc":{"start":{"line":26,"column":20},"end":{"line":26,"column":106}},"type":"if","locations":[{"start":{"line":26,"column":20},"end":{"line":26,"column":106}},{"start":{"line":26,"column":20},"end":{"line":26,"column":106}}],"line":26},"18":{"loc":{"start":{"line":26,"column":24},"end":{"line":26,"column":77}},"type":"binary-expr","locations":[{"start":{"line":26,"column":24},"end":{"line":26,"column":35}},{"start":{"line":26,"column":40},"end":{"line":26,"column":42}},{"start":{"line":26,"column":47},"end":{"line":26,"column":59}},{"start":{"line":26,"column":63},"end":{"line":26,"column":75}}],"line":26},"19":{"loc":{"start":{"line":27,"column":20},"end":{"line":27,"column":89}},"type":"if","locations":[{"start":{"line":27,"column":20},"end":{"line":27,"column":89}},{"start":{"line":27,"column":20},"end":{"line":27,"column":89}}],"line":27},"20":{"loc":{"start":{"line":27,"column":24},"end":{"line":27,"column":53}},"type":"binary-expr","locations":[{"start":{"line":27,"column":24},"end":{"line":27,"column":35}},{"start":{"line":27,"column":39},"end":{"line":27,"column":53}}],"line":27},"21":{"loc":{"start":{"line":28,"column":20},"end":{"line":28,"column":87}},"type":"if","locations":[{"start":{"line":28,"column":20},"end":{"line":28,"column":87}},{"start":{"line":28,"column":20},"end":{"line":28,"column":87}}],"line":28},"22":{"loc":{"start":{"line":28,"column":24},"end":{"line":28,"column":43}},"type":"binary-expr","locations":[{"start":{"line":28,"column":24},"end":{"line":28,"column":25}},{"start":{"line":28,"column":29},"end":{"line":28,"column":43}}],"line":28},"23":{"loc":{"start":{"line":29,"column":20},"end":{"line":29,"column":42}},"type":"if","locations":[{"start":{"line":29,"column":20},"end":{"line":29,"column":42}},{"start":{"line":29,"column":20},"end":{"line":29,"column":42}}],"line":29},"24":{"loc":{"start":{"line":34,"column":8},"end":{"line":34,"column":35}},"type":"if","locations":[{"start":{"line":34,"column":8},"end":{"line":34,"column":35}},{"start":{"line":34,"column":8},"end":{"line":34,"column":35}}],"line":34},"25":{"loc":{"start":{"line":34,"column":52},"end":{"line":34,"column":74}},"type":"cond-expr","locations":[{"start":{"line":34,"column":60},"end":{"line":34,"column":65}},{"start":{"line":34,"column":68},"end":{"line":34,"column":74}}],"line":34},"26":{"loc":{"start":{"line":37,"column":22},"end":{"line":39,"column":1}},"type":"binary-expr","locations":[{"start":{"line":37,"column":23},"end":{"line":37,"column":27}},{"start":{"line":37,"column":31},"end":{"line":37,"column":51}},{"start":{"line":37,"column":56},"end":{"line":39,"column":1}}],"line":37},"27":{"loc":{"start":{"line":38,"column":11},"end":{"line":38,"column":61}},"type":"cond-expr","locations":[{"start":{"line":38,"column":37},"end":{"line":38,"column":40}},{"start":{"line":38,"column":43},"end":{"line":38,"column":61}}],"line":38},"28":{"loc":{"start":{"line":38,"column":12},"end":{"line":38,"column":33}},"type":"binary-expr","locations":[{"start":{"line":38,"column":12},"end":{"line":38,"column":15}},{"start":{"line":38,"column":19},"end":{"line":38,"column":33}}],"line":38},"29":{"loc":{"start":{"line":52,"column":16},"end":{"line":65,"column":17}},"type":"switch","locations":[{"start":{"line":53,"column":20},"end":{"line":56,"column":70}},{"start":{"line":57,"column":20},"end":{"line":64,"column":46}}],"line":52},"30":{"loc":{"start":{"line":73,"column":16},"end":{"line":82,"column":17}},"type":"switch","locations":[{"start":{"line":74,"column":20},"end":{"line":77,"column":70}},{"start":{"line":78,"column":20},"end":{"line":81,"column":46}}],"line":73}},"s":{"0":1,"1":2,"2":2,"3":2,"4":0,"5":0,"6":0,"7":0,"8":4,"9":2,"10":2,"11":1,"12":2,"13":2,"14":0,"15":2,"16":2,"17":0,"18":6,"19":4,"20":4,"21":0,"22":4,"23":8,"24":8,"25":0,"26":8,"27":0,"28":8,"29":4,"30":4,"31":2,"32":2,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":2,"41":2,"42":2,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":4,"59":0,"60":0,"61":8,"62":2,"63":0,"64":2,"65":1,"66":2,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":2,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":2,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1},"f":{"0":2,"1":2,"2":2,"3":0,"4":4,"5":2,"6":2,"7":2,"8":0,"9":6,"10":4,"11":4,"12":2,"13":1,"14":1,"15":1,"16":2,"17":1,"18":1,"19":2,"20":1,"21":1,"22":1},"b":{"0":[1,1,1],"1":[2,2],"2":[2,2],"3":[2,2],"4":[1,1,1],"5":[0,2],"6":[2,2],"7":[0,4],"8":[0,8],"9":[8,0,0],"10":[0,0],"11":[0,0],"12":[0,8],"13":[4,4,2,0,0,2],"14":[2,0],"15":[2,2,2],"16":[2,0],"17":[0,0],"18":[0,0,0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,2],"25":[2,0],"26":[1,1,1],"27":[0,2],"28":[2,2],"29":[1,1],"30":[1,1]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"fc6427432e48e2c4fd91a7990ebfc938b33bc3a5","contentHash":"f7991a78a098fb234277eb92b5019d45_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/rowSplit.test.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/rowSplit.test.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":17},"end":{"line":3,"column":38}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":40}},"3":{"start":{"line":5,"column":13},"end":{"line":5,"column":30}},"4":{"start":{"line":6,"column":0},"end":{"line":37,"column":3}},"5":{"start":{"line":7,"column":23},"end":{"line":15,"column":5}},"6":{"start":{"line":8,"column":8},"end":{"line":14,"column":16}},"7":{"start":{"line":16,"column":4},"end":{"line":21,"column":7}},"8":{"start":{"line":17,"column":24},"end":{"line":17,"column":27}},"9":{"start":{"line":18,"column":21},"end":{"line":18,"column":28}},"10":{"start":{"line":19,"column":32},"end":{"line":19,"column":72}},"11":{"start":{"line":20,"column":8},"end":{"line":20,"column":51}},"12":{"start":{"line":22,"column":4},"end":{"line":26,"column":7}},"13":{"start":{"line":23,"column":21},"end":{"line":23,"column":28}},"14":{"start":{"line":24,"column":32},"end":{"line":24,"column":75}},"15":{"start":{"line":25,"column":8},"end":{"line":25,"column":42}},"16":{"start":{"line":27,"column":4},"end":{"line":31,"column":7}},"17":{"start":{"line":28,"column":21},"end":{"line":28,"column":26}},"18":{"start":{"line":29,"column":32},"end":{"line":29,"column":75}},"19":{"start":{"line":30,"column":8},"end":{"line":30,"column":42}},"20":{"start":{"line":32,"column":4},"end":{"line":36,"column":7}},"21":{"start":{"line":33,"column":21},"end":{"line":33,"column":28}},"22":{"start":{"line":34,"column":32},"end":{"line":34,"column":84}},"23":{"start":{"line":35,"column":8},"end":{"line":35,"column":42}},"24":{"start":{"line":38,"column":0},"end":{"line":77,"column":3}},"25":{"start":{"line":39,"column":19},"end":{"line":39,"column":71}},"26":{"start":{"line":40,"column":15},"end":{"line":42,"column":5}},"27":{"start":{"line":41,"column":8},"end":{"line":41,"column":47}},"28":{"start":{"line":43,"column":4},"end":{"line":52,"column":7}},"29":{"start":{"line":44,"column":20},"end":{"line":48,"column":9}},"30":{"start":{"line":49,"column":18},"end":{"line":49,"column":29}},"31":{"start":{"line":50,"column":8},"end":{"line":50,"column":46}},"32":{"start":{"line":51,"column":8},"end":{"line":51,"column":38}},"33":{"start":{"line":53,"column":4},"end":{"line":66,"column":7}},"34":{"start":{"line":54,"column":20},"end":{"line":59,"column":9}},"35":{"start":{"line":60,"column":18},"end":{"line":60,"column":29}},"36":{"start":{"line":61,"column":8},"end":{"line":61,"column":46}},"37":{"start":{"line":62,"column":8},"end":{"line":62,"column":50}},"38":{"start":{"line":63,"column":8},"end":{"line":63,"column":53}},"39":{"start":{"line":64,"column":8},"end":{"line":64,"column":50}},"40":{"start":{"line":65,"column":8},"end":{"line":65,"column":38}},"41":{"start":{"line":67,"column":4},"end":{"line":76,"column":7}},"42":{"start":{"line":68,"column":20},"end":{"line":72,"column":9}},"43":{"start":{"line":73,"column":18},"end":{"line":73,"column":29}},"44":{"start":{"line":74,"column":8},"end":{"line":74,"column":46}},"45":{"start":{"line":75,"column":8},"end":{"line":75,"column":62}},"46":{"start":{"line":78,"column":0},"end":{"line":100,"column":3}},"47":{"start":{"line":79,"column":19},"end":{"line":79,"column":71}},"48":{"start":{"line":80,"column":15},"end":{"line":82,"column":5}},"49":{"start":{"line":81,"column":8},"end":{"line":81,"column":35}},"50":{"start":{"line":83,"column":4},"end":{"line":88,"column":7}},"51":{"start":{"line":84,"column":18},"end":{"line":84,"column":49}},"52":{"start":{"line":85,"column":18},"end":{"line":85,"column":27}},"53":{"start":{"line":86,"column":8},"end":{"line":86,"column":42}},"54":{"start":{"line":87,"column":8},"end":{"line":87,"column":39}},"55":{"start":{"line":89,"column":4},"end":{"line":93,"column":7}},"56":{"start":{"line":90,"column":18},"end":{"line":90,"column":51}},"57":{"start":{"line":91,"column":18},"end":{"line":91,"column":27}},"58":{"start":{"line":92,"column":8},"end":{"line":92,"column":40}},"59":{"start":{"line":94,"column":4},"end":{"line":99,"column":7}},"60":{"start":{"line":95,"column":18},"end":{"line":95,"column":63}},"61":{"start":{"line":96,"column":18},"end":{"line":96,"column":27}},"62":{"start":{"line":97,"column":8},"end":{"line":97,"column":39}},"63":{"start":{"line":98,"column":8},"end":{"line":98,"column":59}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":28},"end":{"line":6,"column":29}},"loc":{"start":{"line":6,"column":40},"end":{"line":37,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":23},"end":{"line":7,"column":24}},"loc":{"start":{"line":7,"column":43},"end":{"line":15,"column":5}},"line":7},"2":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":59},"end":{"line":16,"column":60}},"loc":{"start":{"line":16,"column":71},"end":{"line":21,"column":5}},"line":16},"3":{"name":"(anonymous_3)","decl":{"start":{"line":22,"column":71},"end":{"line":22,"column":72}},"loc":{"start":{"line":22,"column":83},"end":{"line":26,"column":5}},"line":22},"4":{"name":"(anonymous_4)","decl":{"start":{"line":27,"column":94},"end":{"line":27,"column":95}},"loc":{"start":{"line":27,"column":106},"end":{"line":31,"column":5}},"line":27},"5":{"name":"(anonymous_5)","decl":{"start":{"line":32,"column":59},"end":{"line":32,"column":60}},"loc":{"start":{"line":32,"column":71},"end":{"line":36,"column":5}},"line":32},"6":{"name":"(anonymous_6)","decl":{"start":{"line":38,"column":36},"end":{"line":38,"column":37}},"loc":{"start":{"line":38,"column":48},"end":{"line":77,"column":1}},"line":38},"7":{"name":"(anonymous_7)","decl":{"start":{"line":40,"column":15},"end":{"line":40,"column":16}},"loc":{"start":{"line":40,"column":32},"end":{"line":42,"column":5}},"line":40},"8":{"name":"(anonymous_8)","decl":{"start":{"line":43,"column":44},"end":{"line":43,"column":45}},"loc":{"start":{"line":43,"column":56},"end":{"line":52,"column":5}},"line":43},"9":{"name":"(anonymous_9)","decl":{"start":{"line":53,"column":37},"end":{"line":53,"column":38}},"loc":{"start":{"line":53,"column":49},"end":{"line":66,"column":5}},"line":53},"10":{"name":"(anonymous_10)","decl":{"start":{"line":67,"column":51},"end":{"line":67,"column":52}},"loc":{"start":{"line":67,"column":63},"end":{"line":76,"column":5}},"line":67},"11":{"name":"(anonymous_11)","decl":{"start":{"line":78,"column":36},"end":{"line":78,"column":37}},"loc":{"start":{"line":78,"column":48},"end":{"line":100,"column":1}},"line":78},"12":{"name":"(anonymous_12)","decl":{"start":{"line":80,"column":15},"end":{"line":80,"column":16}},"loc":{"start":{"line":80,"column":30},"end":{"line":82,"column":5}},"line":80},"13":{"name":"(anonymous_13)","decl":{"start":{"line":83,"column":41},"end":{"line":83,"column":42}},"loc":{"start":{"line":83,"column":53},"end":{"line":88,"column":5}},"line":83},"14":{"name":"(anonymous_14)","decl":{"start":{"line":89,"column":43},"end":{"line":89,"column":44}},"loc":{"start":{"line":89,"column":55},"end":{"line":93,"column":5}},"line":89},"15":{"name":"(anonymous_15)","decl":{"start":{"line":94,"column":37},"end":{"line":94,"column":38}},"loc":{"start":{"line":94,"column":49},"end":{"line":99,"column":5}},"line":94}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":4,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":3,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":3,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1},"f":{"0":1,"1":4,"2":1,"3":1,"4":1,"5":1,"6":1,"7":3,"8":1,"9":1,"10":1,"11":1,"12":3,"13":1,"14":1,"15":1},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"3180e967375c01b6e15076e5f192dd193444daf6","contentHash":"c506e6fbe082dee4fb8556ebf1dc7b75_11.7.3"},"/Users/kxiang/work/projects/csv2json/src/index.ts":{"path":"/Users/kxiang/work/projects/csv2json/src/index.ts","statementMap":{"0":{"start":{"line":2,"column":18},"end":{"line":2,"column":40}},"1":{"start":{"line":3,"column":13},"end":{"line":5,"column":1}},"2":{"start":{"line":4,"column":4},"end":{"line":4,"column":53}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":44}},"4":{"start":{"line":7,"column":0},"end":{"line":7,"column":24}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":13},"end":{"line":3,"column":14}},"loc":{"start":{"line":3,"column":39},"end":{"line":5,"column":1}},"line":3}},"branchMap":{},"s":{"0":1,"1":1,"2":35,"3":1,"4":1},"f":{"0":35},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"6d4d22d9140746f9fba1f430287dda46307a5382","contentHash":"aa7fbac5ea924bbd365e861084d8442a_11.7.3"}} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/934df09d48f9ab6d63432230cb8317bb.json b/node_modules/csvtojson/.nyc_output/934df09d48f9ab6d63432230cb8317bb.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/934df09d48f9ab6d63432230cb8317bb.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/95f40fd8e3124bf5095029ef2d7b2992.json b/node_modules/csvtojson/.nyc_output/95f40fd8e3124bf5095029ef2d7b2992.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/95f40fd8e3124bf5095029ef2d7b2992.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/a314d83b6e7be2c677c93ea6fbcdbdbc.json b/node_modules/csvtojson/.nyc_output/a314d83b6e7be2c677c93ea6fbcdbdbc.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/a314d83b6e7be2c677c93ea6fbcdbdbc.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/ac79bb4f8b5a2c44b47ba0e0ff1981b8.json b/node_modules/csvtojson/.nyc_output/ac79bb4f8b5a2c44b47ba0e0ff1981b8.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/ac79bb4f8b5a2c44b47ba0e0ff1981b8.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/b5b5ac11f64a1197639ab87ddf790f3f.json b/node_modules/csvtojson/.nyc_output/b5b5ac11f64a1197639ab87ddf790f3f.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/b5b5ac11f64a1197639ab87ddf790f3f.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/c444d3abd00b76b655d8c52d1d6d9a18.json b/node_modules/csvtojson/.nyc_output/c444d3abd00b76b655d8c52d1d6d9a18.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/c444d3abd00b76b655d8c52d1d6d9a18.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/d69c8a3cb089743a1c6fe6af1b55dcaf.json b/node_modules/csvtojson/.nyc_output/d69c8a3cb089743a1c6fe6af1b55dcaf.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/d69c8a3cb089743a1c6fe6af1b55dcaf.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/d9ab5ea23a578236eda29d6fb5d81a89.json b/node_modules/csvtojson/.nyc_output/d9ab5ea23a578236eda29d6fb5d81a89.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/d9ab5ea23a578236eda29d6fb5d81a89.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/ddbb6c792d436c4896dca99a6889d310.json b/node_modules/csvtojson/.nyc_output/ddbb6c792d436c4896dca99a6889d310.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/ddbb6c792d436c4896dca99a6889d310.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/e30b290de441d813f69836edb7b6bf69.json b/node_modules/csvtojson/.nyc_output/e30b290de441d813f69836edb7b6bf69.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/e30b290de441d813f69836edb7b6bf69.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/e6b880f5dcf4799d52e940c12d2c0fc8.json b/node_modules/csvtojson/.nyc_output/e6b880f5dcf4799d52e940c12d2c0fc8.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/e6b880f5dcf4799d52e940c12d2c0fc8.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/f5bf0478c1625678749178bdb2e5098d.json b/node_modules/csvtojson/.nyc_output/f5bf0478c1625678749178bdb2e5098d.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/f5bf0478c1625678749178bdb2e5098d.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.nyc_output/f6e47582bba1716e24a1e52d01da6e9c.json b/node_modules/csvtojson/.nyc_output/f6e47582bba1716e24a1e52d01da6e9c.json deleted file mode 100644 index 9e26dfe..0000000 --- a/node_modules/csvtojson/.nyc_output/f6e47582bba1716e24a1e52d01da6e9c.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/node_modules/csvtojson/.travis.yml b/node_modules/csvtojson/.travis.yml deleted file mode 100644 index 35bed36..0000000 --- a/node_modules/csvtojson/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: node_js -node_js: - - "10" - - "8" - - "6" -after_success: 'npm run coveralls' -script: "npm run travis" \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/09978396b133849a0d0f83c9c100b167a1060208a0fdf57d39dc695ae209e0c9.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/09978396b133849a0d0f83c9c100b167a1060208a0fdf57d39dc695ae209e0c9.js deleted file mode 100644 index fd2e531..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/09978396b133849a0d0f83c9c100b167a1060208a0fdf57d39dc695ae209e0c9.js +++ /dev/null @@ -1,212 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var CSVError_1 = __importDefault(require("./CSVError")); -var set_1 = __importDefault(require("lodash/set")); -var numReg = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/; -function default_1(csvRows, conv) { - var res = []; - for (var i = 0, len = csvRows.length; i < len; i++) { - var r = processRow(csvRows[i], conv, i); - if (r) { - res.push(r); - } - } - return res; -} -exports.default = default_1; -; -function processRow(row, conv, index) { - if (conv.parseParam.checkColumn && conv.parseRuntime.headers && row.length !== conv.parseRuntime.headers.length) { - throw (CSVError_1.default.column_mismatched(conv.parseRuntime.parsedLineNumber + index)); - } - var headRow = conv.parseRuntime.headers || []; - var resultRow = convertRowToJson(row, headRow, conv); - if (resultRow) { - return resultRow; - } - else { - return null; - } -} -function convertRowToJson(row, headRow, conv) { - var hasValue = false; - var resultRow = {}; - for (var i = 0, len = row.length; i < len; i++) { - var item = row[i]; - if (conv.parseParam.ignoreEmpty && item === '') { - continue; - } - hasValue = true; - var head = headRow[i]; - if (!head || head === "") { - head = headRow[i] = "field" + (i + 1); - } - var convFunc = getConvFunc(head, i, conv); - if (convFunc) { - var convRes = convFunc(item, head, resultRow, row, i); - if (convRes !== undefined) { - setPath(resultRow, head, convRes, conv, i); - } - } - else { - // var flag = getFlag(head, i, param); - // if (flag === 'omit') { - // continue; - // } - if (conv.parseParam.checkType) { - var convertFunc = checkType(item, head, i, conv); - item = convertFunc(item); - } - if (item !== undefined) { - setPath(resultRow, head, item, conv, i); - } - } - } - if (hasValue) { - return resultRow; - } - else { - return null; - } -} -var builtInConv = { - "string": stringType, - "number": numberType, - "omit": function () { } -}; -function getConvFunc(head, i, conv) { - if (conv.parseRuntime.columnConv[i] !== undefined) { - return conv.parseRuntime.columnConv[i]; - } - else { - var flag = conv.parseParam.colParser[head]; - if (flag === undefined) { - return conv.parseRuntime.columnConv[i] = null; - } - if (typeof flag === "object") { - flag = flag.cellParser || "string"; - } - if (typeof flag === "string") { - flag = flag.trim().toLowerCase(); - var builtInFunc = builtInConv[flag]; - if (builtInFunc) { - return conv.parseRuntime.columnConv[i] = builtInFunc; - } - else { - return conv.parseRuntime.columnConv[i] = null; - } - } - else if (typeof flag === "function") { - return conv.parseRuntime.columnConv[i] = flag; - } - else { - return conv.parseRuntime.columnConv[i] = null; - } - } -} -function setPath(resultJson, head, value, conv, headIdx) { - if (!conv.parseRuntime.columnValueSetter[headIdx]) { - if (conv.parseParam.flatKeys) { - conv.parseRuntime.columnValueSetter[headIdx] = flatSetter; - } - else { - if (head.indexOf(".") > -1) { - var headArr = head.split("."); - var jsonHead = true; - while (headArr.length > 0) { - var headCom = headArr.shift(); - if (headCom.length === 0) { - jsonHead = false; - break; - } - } - if (!jsonHead || conv.parseParam.colParser[head] && conv.parseParam.colParser[head].flat) { - conv.parseRuntime.columnValueSetter[headIdx] = flatSetter; - } - else { - conv.parseRuntime.columnValueSetter[headIdx] = jsonSetter; - } - } - else { - conv.parseRuntime.columnValueSetter[headIdx] = flatSetter; - } - } - } - if (conv.parseParam.nullObject === true && value === "null") { - value = null; - } - conv.parseRuntime.columnValueSetter[headIdx](resultJson, head, value); - // flatSetter(resultJson, head, value); -} -function flatSetter(resultJson, head, value) { - resultJson[head] = value; -} -function jsonSetter(resultJson, head, value) { - set_1.default(resultJson, head, value); -} -function checkType(item, head, headIdx, conv) { - if (conv.parseRuntime.headerType[headIdx]) { - return conv.parseRuntime.headerType[headIdx]; - } - else if (head.indexOf('number#!') > -1) { - return conv.parseRuntime.headerType[headIdx] = numberType; - } - else if (head.indexOf('string#!') > -1) { - return conv.parseRuntime.headerType[headIdx] = stringType; - } - else if (conv.parseParam.checkType) { - return conv.parseRuntime.headerType[headIdx] = dynamicType; - } - else { - return conv.parseRuntime.headerType[headIdx] = stringType; - } -} -function numberType(item) { - var rtn = parseFloat(item); - if (isNaN(rtn)) { - return item; - } - return rtn; -} -function stringType(item) { - return item.toString(); -} -function dynamicType(item) { - var trimed = item.trim(); - if (trimed === "") { - return stringType(item); - } - if (numReg.test(trimed)) { - return numberType(item); - } - else if (trimed.length === 5 && trimed.toLowerCase() === "false" || trimed.length === 4 && trimed.toLowerCase() === "true") { - return booleanType(item); - } - else if (trimed[0] === "{" && trimed[trimed.length - 1] === "}" || trimed[0] === "[" && trimed[trimed.length - 1] === "]") { - return jsonType(item); - } - else { - return stringType(item); - } -} -function booleanType(item) { - var trimed = item.trim(); - if (trimed.length === 5 && trimed.toLowerCase() === "false") { - return false; - } - else { - return true; - } -} -function jsonType(item) { - try { - return JSON.parse(item); - } - catch (e) { - return item; - } -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9saW5lVG9Kc29uLnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL2xpbmVUb0pzb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSx3REFBa0M7QUFFbEMsbURBQTZCO0FBRzdCLElBQUksTUFBTSxHQUFHLDBDQUEwQyxDQUFDO0FBRXhELG1CQUF5QixPQUFtQixFQUFFLElBQWU7SUFDM0QsSUFBTSxHQUFHLEdBQWlCLEVBQUUsQ0FBQztJQUM3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2xELElBQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxFQUFFO1lBQ0wsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNiO0tBQ0Y7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFURCw0QkFTQztBQUFBLENBQUM7QUFLRixvQkFBb0IsR0FBYSxFQUFFLElBQWUsRUFBRSxLQUFLO0lBRXZELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDL0csTUFBTSxDQUFDLGtCQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFBO0tBQy9FO0lBRUQsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ2hELElBQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkQsSUFBSSxTQUFTLEVBQUU7UUFDYixPQUFPLFNBQVMsQ0FBQztLQUNsQjtTQUFNO1FBQ0wsT0FBTyxJQUFJLENBQUM7S0FDYjtBQUNILENBQUM7QUFFRCwwQkFBMEIsR0FBYSxFQUFFLE9BQWlCLEVBQUUsSUFBZTtJQUN6RSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDckIsSUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBRXJCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDOUMsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTtZQUM5QyxTQUFTO1NBQ1Y7UUFDRCxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRWhCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUU7WUFDeEIsSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDdkM7UUFDRCxJQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1QyxJQUFJLFFBQVEsRUFBRTtZQUNaLElBQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDeEQsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO2dCQUN6QixPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzNDO1NBQ0Y7YUFBTTtZQUNMLHNDQUFzQztZQUN0Qyx5QkFBeUI7WUFDekIsY0FBYztZQUNkLElBQUk7WUFDSixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFO2dCQUM3QixJQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDMUI7WUFDRCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7Z0JBQ3RCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7YUFDeEM7U0FDRjtLQUNGO0lBQ0QsSUFBSSxRQUFRLEVBQUU7UUFDWixPQUFPLFNBQVMsQ0FBQztLQUNsQjtTQUFNO1FBQ0wsT0FBTyxJQUFJLENBQUM7S0FDYjtBQUNILENBQUM7QUFFRCxJQUFNLFdBQVcsR0FBa0M7SUFDakQsUUFBUSxFQUFFLFVBQVU7SUFDcEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsTUFBTSxFQUFFLGNBQWMsQ0FBQztDQUN4QixDQUFBO0FBQ0QscUJBQXFCLElBQVksRUFBRSxDQUFTLEVBQUUsSUFBZTtJQUMzRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRTtRQUNqRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3hDO1NBQU07UUFDTCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDdEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDL0M7UUFDRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUM1QixJQUFJLEdBQUksSUFBb0IsQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDO1NBQ3JEO1FBQ0QsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDNUIsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQyxJQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEMsSUFBSSxXQUFXLEVBQUU7Z0JBQ2YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUM7YUFDdEQ7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7YUFDL0M7U0FDRjthQUFNLElBQUksT0FBTyxJQUFJLEtBQUssVUFBVSxFQUFFO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQy9DO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUMvQztLQUNGO0FBQ0gsQ0FBQztBQUNELGlCQUFpQixVQUFlLEVBQUUsSUFBWSxFQUFFLEtBQVUsRUFBRSxJQUFlLEVBQUMsT0FBYztJQUN4RixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNqRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEdBQUcsVUFBVSxDQUFDO1NBQzNEO2FBQU07WUFFTCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQzFCLElBQU0sT0FBTyxHQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLElBQUksUUFBUSxHQUFDLElBQUksQ0FBQztnQkFDbEIsT0FBTSxPQUFPLENBQUMsTUFBTSxHQUFDLENBQUMsRUFBQztvQkFDckIsSUFBTSxPQUFPLEdBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUM5QixJQUFJLE9BQVEsQ0FBQyxNQUFNLEtBQUcsQ0FBQyxFQUFDO3dCQUN0QixRQUFRLEdBQUMsS0FBSyxDQUFDO3dCQUNmLE1BQU07cUJBQ1A7aUJBQ0Y7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQWlCLENBQUMsSUFBSSxFQUFFO29CQUN6RyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxHQUFHLFVBQVUsQ0FBQztpQkFDM0Q7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxVQUFVLENBQUM7aUJBQzNEO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxVQUFVLENBQUM7YUFDM0Q7U0FDRjtLQUNGO0lBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsS0FBSSxJQUFJLElBQUksS0FBSyxLQUFJLE1BQU0sRUFBQztRQUN4RCxLQUFLLEdBQUMsSUFBSSxDQUFDO0tBQ1o7SUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEUsdUNBQXVDO0FBRXpDLENBQUM7QUFDRCxvQkFBb0IsVUFBZSxFQUFFLElBQVksRUFBRSxLQUFVO0lBQzNELFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDM0IsQ0FBQztBQUNELG9CQUFvQixVQUFlLEVBQUUsSUFBWSxFQUFFLEtBQVU7SUFDM0QsYUFBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUdELG1CQUFtQixJQUFZLEVBQUUsSUFBWSxFQUFFLE9BQWUsRUFBRSxJQUFlO0lBQzdFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDekMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUM5QztTQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtRQUN4QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFVBQVUsQ0FBQztLQUMzRDtTQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtRQUN4QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFVBQVUsQ0FBQztLQUMzRDtTQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUU7UUFDcEMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxXQUFXLENBQUM7S0FDNUQ7U0FBTTtRQUNMLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsVUFBVSxDQUFDO0tBQzNEO0FBQ0gsQ0FBQztBQUVELG9CQUFvQixJQUFJO0lBQ3RCLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNkLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxvQkFBb0IsSUFBWTtJQUM5QixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUN6QixDQUFDO0FBRUQscUJBQXFCLElBQUk7SUFDdkIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLElBQUksTUFBTSxLQUFLLEVBQUUsRUFBRTtRQUNqQixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN6QjtJQUNELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN2QixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN6QjtTQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxFQUFFO1FBQzVILE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzFCO1NBQU0sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtRQUMzSCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN2QjtTQUFNO1FBQ0wsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7QUFDSCxDQUFDO0FBRUQscUJBQXFCLElBQUk7SUFDdkIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sRUFBRTtRQUMzRCxPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU07UUFDTCxPQUFPLElBQUksQ0FBQztLQUNiO0FBQ0gsQ0FBQztBQUVELGtCQUFrQixJQUFJO0lBQ3BCLElBQUk7UUFDRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sSUFBSSxDQUFDO0tBQ2I7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udmVydGVyIH0gZnJvbSBcIi4vQ29udmVydGVyXCI7XG5pbXBvcnQgQ1NWRXJyb3IgZnJvbSBcIi4vQ1NWRXJyb3JcIjtcbmltcG9ydCB7IENlbGxQYXJzZXIsIENvbHVtblBhcmFtIH0gZnJvbSBcIi4vUGFyYW1ldGVyc1wiO1xuaW1wb3J0IHNldCBmcm9tIFwibG9kYXNoL3NldFwiO1xuaW1wb3J0IHsgUGFyc2VSdW50aW1lIH0gZnJvbSBcIi4vUGFyc2VSdW50aW1lXCI7XG5cbnZhciBudW1SZWcgPSAvXlstK10/WzAtOV0qXFwuP1swLTldKyhbZUVdWy0rXT9bMC05XSspPyQvO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoY3N2Um93czogc3RyaW5nW11bXSwgY29udjogQ29udmVydGVyKTogSlNPTlJlc3VsdFtdIHtcbiAgY29uc3QgcmVzOiBKU09OUmVzdWx0W10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGNzdlJvd3MubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjb25zdCByID0gcHJvY2Vzc1Jvdyhjc3ZSb3dzW2ldLCBjb252LCBpKTtcbiAgICBpZiAocikge1xuICAgICAgcmVzLnB1c2gocik7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59O1xuZXhwb3J0IHR5cGUgSlNPTlJlc3VsdCA9IHtcbiAgW2tleTogc3RyaW5nXTogYW55XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NSb3cocm93OiBzdHJpbmdbXSwgY29udjogQ29udmVydGVyLCBpbmRleCk6IEpTT05SZXN1bHQgfCBudWxsIHtcblxuICBpZiAoY29udi5wYXJzZVBhcmFtLmNoZWNrQ29sdW1uICYmIGNvbnYucGFyc2VSdW50aW1lLmhlYWRlcnMgJiYgcm93Lmxlbmd0aCAhPT0gY29udi5wYXJzZVJ1bnRpbWUuaGVhZGVycy5sZW5ndGgpIHtcbiAgICB0aHJvdyAoQ1NWRXJyb3IuY29sdW1uX21pc21hdGNoZWQoY29udi5wYXJzZVJ1bnRpbWUucGFyc2VkTGluZU51bWJlciArIGluZGV4KSlcbiAgfVxuXG4gIGNvbnN0IGhlYWRSb3cgPSBjb252LnBhcnNlUnVudGltZS5oZWFkZXJzIHx8IFtdO1xuICBjb25zdCByZXN1bHRSb3cgPSBjb252ZXJ0Um93VG9Kc29uKHJvdywgaGVhZFJvdywgY29udik7XG4gIGlmIChyZXN1bHRSb3cpIHtcbiAgICByZXR1cm4gcmVzdWx0Um93O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRSb3dUb0pzb24ocm93OiBzdHJpbmdbXSwgaGVhZFJvdzogc3RyaW5nW10sIGNvbnY6IENvbnZlcnRlcik6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsIHtcbiAgbGV0IGhhc1ZhbHVlID0gZmFsc2U7XG4gIGNvbnN0IHJlc3VsdFJvdyA9IHt9O1xuICBcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHJvdy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGxldCBpdGVtID0gcm93W2ldO1xuXG4gICAgaWYgKGNvbnYucGFyc2VQYXJhbS5pZ25vcmVFbXB0eSAmJiBpdGVtID09PSAnJykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGhhc1ZhbHVlID0gdHJ1ZTtcblxuICAgIGxldCBoZWFkID0gaGVhZFJvd1tpXTtcbiAgICBpZiAoIWhlYWQgfHwgaGVhZCA9PT0gXCJcIikge1xuICAgICAgaGVhZCA9IGhlYWRSb3dbaV0gPSBcImZpZWxkXCIgKyAoaSArIDEpO1xuICAgIH1cbiAgICBjb25zdCBjb252RnVuYyA9IGdldENvbnZGdW5jKGhlYWQsIGksIGNvbnYpO1xuICAgIGlmIChjb252RnVuYykge1xuICAgICAgY29uc3QgY29udlJlcyA9IGNvbnZGdW5jKGl0ZW0sIGhlYWQsIHJlc3VsdFJvdywgcm93LCBpKTtcbiAgICAgIGlmIChjb252UmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2V0UGF0aChyZXN1bHRSb3csIGhlYWQsIGNvbnZSZXMsIGNvbnYsaSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHZhciBmbGFnID0gZ2V0RmxhZyhoZWFkLCBpLCBwYXJhbSk7XG4gICAgICAvLyBpZiAoZmxhZyA9PT0gJ29taXQnKSB7XG4gICAgICAvLyAgIGNvbnRpbnVlO1xuICAgICAgLy8gfVxuICAgICAgaWYgKGNvbnYucGFyc2VQYXJhbS5jaGVja1R5cGUpIHtcbiAgICAgICAgY29uc3QgY29udmVydEZ1bmMgPSBjaGVja1R5cGUoaXRlbSwgaGVhZCwgaSwgY29udik7XG4gICAgICAgIGl0ZW0gPSBjb252ZXJ0RnVuYyhpdGVtKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2V0UGF0aChyZXN1bHRSb3csIGhlYWQsIGl0ZW0sIGNvbnYsaSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChoYXNWYWx1ZSkge1xuICAgIHJldHVybiByZXN1bHRSb3c7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuY29uc3QgYnVpbHRJbkNvbnY6IHsgW2tleTogc3RyaW5nXTogQ2VsbFBhcnNlciB9ID0ge1xuICBcInN0cmluZ1wiOiBzdHJpbmdUeXBlLFxuICBcIm51bWJlclwiOiBudW1iZXJUeXBlLFxuICBcIm9taXRcIjogZnVuY3Rpb24gKCkgeyB9XG59XG5mdW5jdGlvbiBnZXRDb252RnVuYyhoZWFkOiBzdHJpbmcsIGk6IG51bWJlciwgY29udjogQ29udmVydGVyKTogQ2VsbFBhcnNlciB8IG51bGwge1xuICBpZiAoY29udi5wYXJzZVJ1bnRpbWUuY29sdW1uQ29udltpXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGNvbnYucGFyc2VSdW50aW1lLmNvbHVtbkNvbnZbaV07XG4gIH0gZWxzZSB7XG4gICAgbGV0IGZsYWcgPSBjb252LnBhcnNlUGFyYW0uY29sUGFyc2VyW2hlYWRdO1xuICAgIGlmIChmbGFnID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjb252LnBhcnNlUnVudGltZS5jb2x1bW5Db252W2ldID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBmbGFnID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBmbGFnID0gKGZsYWcgYXMgQ29sdW1uUGFyYW0pLmNlbGxQYXJzZXIgfHwgXCJzdHJpbmdcIjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBmbGFnID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBmbGFnID0gZmxhZy50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IGJ1aWx0SW5GdW5jID0gYnVpbHRJbkNvbnZbZmxhZ107XG4gICAgICBpZiAoYnVpbHRJbkZ1bmMpIHtcbiAgICAgICAgcmV0dXJuIGNvbnYucGFyc2VSdW50aW1lLmNvbHVtbkNvbnZbaV0gPSBidWlsdEluRnVuYztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjb252LnBhcnNlUnVudGltZS5jb2x1bW5Db252W2ldID0gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBmbGFnID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBjb252LnBhcnNlUnVudGltZS5jb2x1bW5Db252W2ldID0gZmxhZztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnYucGFyc2VSdW50aW1lLmNvbHVtbkNvbnZbaV0gPSBudWxsO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gc2V0UGF0aChyZXN1bHRKc29uOiBhbnksIGhlYWQ6IHN0cmluZywgdmFsdWU6IGFueSwgY29udjogQ29udmVydGVyLGhlYWRJZHg6bnVtYmVyKSB7XG4gIGlmICghY29udi5wYXJzZVJ1bnRpbWUuY29sdW1uVmFsdWVTZXR0ZXJbaGVhZElkeF0pIHtcbiAgICBpZiAoY29udi5wYXJzZVBhcmFtLmZsYXRLZXlzKSB7XG4gICAgICBjb252LnBhcnNlUnVudGltZS5jb2x1bW5WYWx1ZVNldHRlcltoZWFkSWR4XSA9IGZsYXRTZXR0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIFxuICAgICAgaWYgKGhlYWQuaW5kZXhPZihcIi5cIikgPiAtMSkge1xuICAgICAgICBjb25zdCBoZWFkQXJyPWhlYWQuc3BsaXQoXCIuXCIpO1xuICAgICAgICBsZXQganNvbkhlYWQ9dHJ1ZTtcbiAgICAgICAgd2hpbGUoaGVhZEFyci5sZW5ndGg+MCl7XG4gICAgICAgICAgY29uc3QgaGVhZENvbT1oZWFkQXJyLnNoaWZ0KCk7XG4gICAgICAgICAgaWYgKGhlYWRDb20hLmxlbmd0aD09PTApe1xuICAgICAgICAgICAganNvbkhlYWQ9ZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFqc29uSGVhZCB8fCBjb252LnBhcnNlUGFyYW0uY29sUGFyc2VyW2hlYWRdICYmIChjb252LnBhcnNlUGFyYW0uY29sUGFyc2VyW2hlYWRdIGFzIENvbHVtblBhcmFtKS5mbGF0KSB7XG4gICAgICAgICAgY29udi5wYXJzZVJ1bnRpbWUuY29sdW1uVmFsdWVTZXR0ZXJbaGVhZElkeF0gPSBmbGF0U2V0dGVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnYucGFyc2VSdW50aW1lLmNvbHVtblZhbHVlU2V0dGVyW2hlYWRJZHhdID0ganNvblNldHRlcjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udi5wYXJzZVJ1bnRpbWUuY29sdW1uVmFsdWVTZXR0ZXJbaGVhZElkeF0gPSBmbGF0U2V0dGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoY29udi5wYXJzZVBhcmFtLm51bGxPYmplY3QgPT09dHJ1ZSAmJiB2YWx1ZSA9PT1cIm51bGxcIil7XG4gICAgdmFsdWU9bnVsbDtcbiAgfVxuICBjb252LnBhcnNlUnVudGltZS5jb2x1bW5WYWx1ZVNldHRlcltoZWFkSWR4XShyZXN1bHRKc29uLCBoZWFkLCB2YWx1ZSk7XG4gIC8vIGZsYXRTZXR0ZXIocmVzdWx0SnNvbiwgaGVhZCwgdmFsdWUpO1xuXG59XG5mdW5jdGlvbiBmbGF0U2V0dGVyKHJlc3VsdEpzb246IGFueSwgaGVhZDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gIHJlc3VsdEpzb25baGVhZF0gPSB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGpzb25TZXR0ZXIocmVzdWx0SnNvbjogYW55LCBoZWFkOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgc2V0KHJlc3VsdEpzb24sIGhlYWQsIHZhbHVlKTtcbn1cblxuXG5mdW5jdGlvbiBjaGVja1R5cGUoaXRlbTogc3RyaW5nLCBoZWFkOiBzdHJpbmcsIGhlYWRJZHg6IG51bWJlciwgY29udjogQ29udmVydGVyKTogRnVuY3Rpb24ge1xuICBpZiAoY29udi5wYXJzZVJ1bnRpbWUuaGVhZGVyVHlwZVtoZWFkSWR4XSkge1xuICAgIHJldHVybiBjb252LnBhcnNlUnVudGltZS5oZWFkZXJUeXBlW2hlYWRJZHhdO1xuICB9IGVsc2UgaWYgKGhlYWQuaW5kZXhPZignbnVtYmVyIyEnKSA+IC0xKSB7XG4gICAgcmV0dXJuIGNvbnYucGFyc2VSdW50aW1lLmhlYWRlclR5cGVbaGVhZElkeF0gPSBudW1iZXJUeXBlO1xuICB9IGVsc2UgaWYgKGhlYWQuaW5kZXhPZignc3RyaW5nIyEnKSA+IC0xKSB7XG4gICAgcmV0dXJuIGNvbnYucGFyc2VSdW50aW1lLmhlYWRlclR5cGVbaGVhZElkeF0gPSBzdHJpbmdUeXBlO1xuICB9IGVsc2UgaWYgKGNvbnYucGFyc2VQYXJhbS5jaGVja1R5cGUpIHtcbiAgICByZXR1cm4gY29udi5wYXJzZVJ1bnRpbWUuaGVhZGVyVHlwZVtoZWFkSWR4XSA9IGR5bmFtaWNUeXBlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjb252LnBhcnNlUnVudGltZS5oZWFkZXJUeXBlW2hlYWRJZHhdID0gc3RyaW5nVHlwZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBudW1iZXJUeXBlKGl0ZW0pIHtcbiAgdmFyIHJ0biA9IHBhcnNlRmxvYXQoaXRlbSk7XG4gIGlmIChpc05hTihydG4pKSB7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cbiAgcmV0dXJuIHJ0bjtcbn1cblxuZnVuY3Rpb24gc3RyaW5nVHlwZShpdGVtOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gaXRlbS50b1N0cmluZygpO1xufVxuXG5mdW5jdGlvbiBkeW5hbWljVHlwZShpdGVtKSB7XG4gIHZhciB0cmltZWQgPSBpdGVtLnRyaW0oKTtcbiAgaWYgKHRyaW1lZCA9PT0gXCJcIikge1xuICAgIHJldHVybiBzdHJpbmdUeXBlKGl0ZW0pO1xuICB9XG4gIGlmIChudW1SZWcudGVzdCh0cmltZWQpKSB7XG4gICAgcmV0dXJuIG51bWJlclR5cGUoaXRlbSk7XG4gIH0gZWxzZSBpZiAodHJpbWVkLmxlbmd0aCA9PT0gNSAmJiB0cmltZWQudG9Mb3dlckNhc2UoKSA9PT0gXCJmYWxzZVwiIHx8IHRyaW1lZC5sZW5ndGggPT09IDQgJiYgdHJpbWVkLnRvTG93ZXJDYXNlKCkgPT09IFwidHJ1ZVwiKSB7XG4gICAgcmV0dXJuIGJvb2xlYW5UeXBlKGl0ZW0pO1xuICB9IGVsc2UgaWYgKHRyaW1lZFswXSA9PT0gXCJ7XCIgJiYgdHJpbWVkW3RyaW1lZC5sZW5ndGggLSAxXSA9PT0gXCJ9XCIgfHwgdHJpbWVkWzBdID09PSBcIltcIiAmJiB0cmltZWRbdHJpbWVkLmxlbmd0aCAtIDFdID09PSBcIl1cIikge1xuICAgIHJldHVybiBqc29uVHlwZShpdGVtKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RyaW5nVHlwZShpdGVtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBib29sZWFuVHlwZShpdGVtKSB7XG4gIHZhciB0cmltZWQgPSBpdGVtLnRyaW0oKTtcbiAgaWYgKHRyaW1lZC5sZW5ndGggPT09IDUgJiYgdHJpbWVkLnRvTG93ZXJDYXNlKCkgPT09IFwiZmFsc2VcIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBqc29uVHlwZShpdGVtKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoaXRlbSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gaXRlbTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/146467813f9eee2e9487539f1b661828a2caaa54a764fc152183ad640d1d66be.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/146467813f9eee2e9487539f1b661828a2caaa54a764fc152183ad640d1d66be.js deleted file mode 100644 index f83f888..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/146467813f9eee2e9487539f1b661828a2caaa54a764fc152183ad640d1d66be.js +++ /dev/null @@ -1,32 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -function initParseRuntime(converter) { - var params = converter.parseParam; - var rtn = { - needProcessIgnoreColumn: false, - needProcessIncludeColumn: false, - selectedColumns: undefined, - ended: false, - hasError: false, - error: undefined, - delimiter: converter.parseParam.delimiter, - eol: converter.parseParam.eol, - columnConv: [], - headerType: [], - headerTitle: [], - headerFlag: [], - headers: undefined, - started: false, - parsedLineNumber: 0, - columnValueSetter: [], - }; - if (params.ignoreColumns) { - rtn.needProcessIgnoreColumn = true; - } - if (params.includeColumns) { - rtn.needProcessIncludeColumn = true; - } - return rtn; -} -exports.initParseRuntime = initParseRuntime; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9QYXJzZVJ1bnRpbWUudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvUGFyc2VSdW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBOERBLDBCQUFpQyxTQUFvQjtJQUNuRCxJQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO0lBQ3BDLElBQU0sR0FBRyxHQUFpQjtRQUN4Qix1QkFBdUIsRUFBRSxLQUFLO1FBQzlCLHdCQUF3QixFQUFFLEtBQUs7UUFDL0IsZUFBZSxFQUFFLFNBQVM7UUFDMUIsS0FBSyxFQUFFLEtBQUs7UUFDWixRQUFRLEVBQUUsS0FBSztRQUNmLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFNBQVMsRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVM7UUFDekMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRztRQUM3QixVQUFVLEVBQUUsRUFBRTtRQUNkLFVBQVUsRUFBRSxFQUFFO1FBQ2QsV0FBVyxFQUFFLEVBQUU7UUFDZixVQUFVLEVBQUUsRUFBRTtRQUNkLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQixpQkFBaUIsRUFBRSxFQUFFO0tBQ3RCLENBQUE7SUFDRCxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUU7UUFDeEIsR0FBRyxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztLQUNwQztJQUNELElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtRQUN6QixHQUFHLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO0tBQ3JDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBM0JELDRDQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENTVlBhcnNlUGFyYW0sIENlbGxQYXJzZXIgfSBmcm9tIFwiLi9QYXJhbWV0ZXJzXCI7XG5pbXBvcnQgeyBDb252ZXJ0ZXIsIFByZVJhd0RhdGFDYWxsYmFjaywgUHJlRmlsZUxpbmVDYWxsYmFjayB9IGZyb20gXCIuL0NvbnZlcnRlclwiO1xuaW1wb3J0IHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCBDU1ZFcnJvciBmcm9tIFwiLi9DU1ZFcnJvclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlUnVudGltZSB7XG4gIC8qKlxuICAgKiBJZiBuZWVkIGNvbnZlcnQgaWdub3JlQ29sdW1uIGZyb20gY29sdW1uIG5hbWUoc3RyaW5nKSB0byBjb2x1bW4gaW5kZXggKG51bWJlcikuIFBhcnNlciBuZWVkcyBjb2x1bW4gaW5kZXguXG4gICAqL1xuICBuZWVkUHJvY2Vzc0lnbm9yZUNvbHVtbjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIElmIG5lZWQgY29udmVydCBpbmNsdWRlQ29sdW1uIGZyb20gY29sdW1uIG5hbWUoc3RyaW5nKSB0byBjb2x1bW4gaW5kZXggKG51bWJlcikuIFBhcnNlciBuZWVkcyBjb2x1bW4gaW5kZXguXG4gICAqL1xuICBuZWVkUHJvY2Vzc0luY2x1ZGVDb2x1bW46IGJvb2xlYW47XG4gIC8qKlxuICAgKiB0aGUgaW5kZXhlcyBvZiBjb2x1bW5zIHRvIHJlc2VydmUsIHVuZGVmaW5lZCBtZWFucyByZXNlcnZlIGFsbCwgW10gbWVhbnMgaGlkZSBhbGxcbiAgICovXG4gIHNlbGVjdGVkQ29sdW1ucz86IG51bWJlcltdO1xuICBlbmRlZDogYm9vbGVhbjtcbiAgaGFzRXJyb3I6IGJvb2xlYW47XG4gIGVycm9yPzogRXJyb3I7XG4gIC8qKlxuICAgKiBJbmZlcnJlZCBkZWxpbWl0ZXJcbiAgICovXG4gIGRlbGltaXRlcjogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8qKlxuICAgKiBJbmZlcnJlZCBlb2xcbiAgICovXG4gIGVvbD86IHN0cmluZztcbiAgLyoqXG4gICAqIENvbnZlcnRlciBmdW5jdGlvbiBmb3IgYSBjb2x1bW4uIFBvcHVsYXRlZCBhdCBydW50aW1lLlxuICAgKi9cbiAgY29sdW1uQ29udjogKENlbGxQYXJzZXIgfCBudWxsKVtdLFxuICBoZWFkZXJUeXBlOiBhbnlbXSxcbiAgaGVhZGVyVGl0bGU6IHN0cmluZ1tdLFxuICBoZWFkZXJGbGFnOiBhbnlbXSxcbiAgLyoqXG4gICAqIEluZmVycmVkIGhlYWRlcnNcbiAgICovXG4gIGhlYWRlcnM/OiBhbnlbXSxcbiAgY3N2TGluZUJ1ZmZlcj86IEJ1ZmZlcixcbiAgXG4gIC8qKlxuICAgKiBhZnRlciBmaXJzdCBjaHVuayBvZiBkYXRhIGJlaW5nIHByb2Nlc3NlZCBhbmQgZW1pdHRlZCwgc3RhcnRlZCB3aWxsIGJlY29tZSB0cnVlLlxuICAgKi9cbiAgc3RhcnRlZDogYm9vbGVhbixcbiAgcHJlUmF3RGF0YUhvb2s/OiBQcmVSYXdEYXRhQ2FsbGJhY2ssXG4gIHByZUZpbGVMaW5lSG9vaz86IFByZUZpbGVMaW5lQ2FsbGJhY2ssXG4gIHBhcnNlZExpbmVOdW1iZXI6IG51bWJlcixcblxuICBjb2x1bW5WYWx1ZVNldHRlcjogRnVuY3Rpb25bXTtcbiAgc3Vic2NyaWJlPzoge1xuICAgIG9uTmV4dD86IChkYXRhOiBhbnksIGxpbmVOdW1iZXI6bnVtYmVyKSA9PiB2b2lkIHwgUHJvbWlzZUxpa2U8dm9pZD47XG4gICAgb25FcnJvcj86IChlcnI6IENTVkVycm9yKSA9PiB2b2lkO1xuICAgIG9uQ29tcGxldGVkPzogKCkgPT4gdm9pZDtcbiAgfTtcbiAgdGhlbj86IHtcbiAgICBvbmZ1bGZpbGxlZDogKHZhbHVlOiBhbnlbXSkgPT4gYW55O1xuICAgIG9ucmVqZWN0ZWQ6IChlcnI6IEVycm9yKSA9PiBhbnk7XG4gIH1cblxufVxuZXhwb3J0IGZ1bmN0aW9uIGluaXRQYXJzZVJ1bnRpbWUoY29udmVydGVyOiBDb252ZXJ0ZXIpOiBQYXJzZVJ1bnRpbWUge1xuICBjb25zdCBwYXJhbXMgPSBjb252ZXJ0ZXIucGFyc2VQYXJhbTtcbiAgY29uc3QgcnRuOiBQYXJzZVJ1bnRpbWUgPSB7XG4gICAgbmVlZFByb2Nlc3NJZ25vcmVDb2x1bW46IGZhbHNlLFxuICAgIG5lZWRQcm9jZXNzSW5jbHVkZUNvbHVtbjogZmFsc2UsXG4gICAgc2VsZWN0ZWRDb2x1bW5zOiB1bmRlZmluZWQsXG4gICAgZW5kZWQ6IGZhbHNlLFxuICAgIGhhc0Vycm9yOiBmYWxzZSxcbiAgICBlcnJvcjogdW5kZWZpbmVkLFxuICAgIGRlbGltaXRlcjogY29udmVydGVyLnBhcnNlUGFyYW0uZGVsaW1pdGVyLFxuICAgIGVvbDogY29udmVydGVyLnBhcnNlUGFyYW0uZW9sLFxuICAgIGNvbHVtbkNvbnY6IFtdLFxuICAgIGhlYWRlclR5cGU6IFtdLFxuICAgIGhlYWRlclRpdGxlOiBbXSxcbiAgICBoZWFkZXJGbGFnOiBbXSxcbiAgICBoZWFkZXJzOiB1bmRlZmluZWQsXG4gICAgc3RhcnRlZDogZmFsc2UsXG4gICAgcGFyc2VkTGluZU51bWJlcjogMCxcbiAgICBjb2x1bW5WYWx1ZVNldHRlcjogW10sXG4gIH1cbiAgaWYgKHBhcmFtcy5pZ25vcmVDb2x1bW5zKSB7XG4gICAgcnRuLm5lZWRQcm9jZXNzSWdub3JlQ29sdW1uID0gdHJ1ZTtcbiAgfVxuICBpZiAocGFyYW1zLmluY2x1ZGVDb2x1bW5zKSB7XG4gICAgcnRuLm5lZWRQcm9jZXNzSW5jbHVkZUNvbHVtbiA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIHJ0bjtcbn0iXX0= \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/204d44a3b08589411788351f533b2a96e89ab84d86142a1bc9b7767bb5601d6d.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/204d44a3b08589411788351f533b2a96e89ab84d86142a1bc9b7767bb5601d6d.js deleted file mode 100644 index bc41cab..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/204d44a3b08589411788351f533b2a96e89ab84d86142a1bc9b7767bb5601d6d.js +++ /dev/null @@ -1,522 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Converter_1 = require("../src/Converter"); -var src_1 = __importDefault(require("../src")); -var assert = require("assert"); -var fs = require("fs"); -var sandbox = require('sinon').sandbox.create(); -describe("testCSVConverter2", function () { - afterEach(function () { - sandbox.restore(); - }); - it("should convert from large csv string", function (done) { - var csvStr = fs.readFileSync(__dirname + "/data/large-csv-sample.csv", "utf8"); - var conv = new Converter_1.Converter({}); - conv.fromString(csvStr).then(function (res) { - assert(res.length === 5290); - done(); - }); - }); - it("should set eol", function (done) { - var rs = fs.createReadStream(__dirname + "/data/large-csv-sample.csv"); - var conv = new Converter_1.Converter({ - eol: "\n" - }); - var count = 0; - conv.subscribe(function (resultJson, index) { - count++; - assert(resultJson); - // assert(row.length === 2); - assert(index >= 0); - }); - conv.on("error", function () { - console.log(arguments); - }); - conv.then(function (result) { - assert(result); - assert(count === 5290); - done(); - }); - rs.pipe(conv); - }); - it("should convert tsv String", function (done) { - var tsv = __dirname + "/data/dataTsv"; - var csvStr = fs.readFileSync(tsv, "utf8"); - var conv = new Converter_1.Converter({ - delimiter: "\t", - "checkType": false - }); - conv.fromString(csvStr).then(function (res) { - assert(res); - assert.equal(res.length, 200); - done(); - }); - }); - it("should allow customised header with nohead csv string.", function (done) { - var testData = __dirname + "/data/noheadercsv"; - var rs = fs.readFileSync(testData, "utf8"); - var conv = new Converter_1.Converter({ - noheader: true, - headers: ["a", "b", "c", "e", "f", "g"] - }); - conv.fromString(rs).then(function (json) { - assert.equal(json[0].field7, 40); - assert.equal(json[0].a, "CC102-PDMI-001"); - done(); - }); - }); - it("should parse fromFile", function (done) { - var csvFile = __dirname + "/data/large-csv-sample.csv"; - var conv = new Converter_1.Converter({}); - conv.fromFile(csvFile).then(function (res) { - assert.equal(res.length, 5290); - done(); - }); - }); - it("should fromFile should emit error", function (done) { - var csvFile = __dirname + "/data/dataWithUnclosedQuotes"; - var conv = new Converter_1.Converter({}); - conv.fromFile(csvFile).then(function (res) { - done(); - }, function (err) { - assert(err); - done(); - }); - }); - it("should parse no header with dynamic column number", function (done) { - var testData = __dirname + "/data/noheaderWithVaryColumnNum"; - var rs = fs.readFileSync(testData, "utf8"); - var conv = new Converter_1.Converter({ - noheader: true - }); - conv.fromString(rs).then(function (json) { - assert.equal(json.length, 2); - assert.equal(json[1].field4, 7); - done(); - }); - }); - it("should parse tabsv data with dynamic columns", function (done) { - var testData = __dirname + "/data/tabsv"; - var rs = fs.readFileSync(testData, "utf8"); - var conv = new Converter_1.Converter({ - delimiter: "\t" - }); - conv.fromString(rs).then(function (json) { - assert.equal(json[0].Idevise, ""); - done(); - }); - }); - it("should use first line break as eol", function (done) { - var testData = __dirname + "/data/testEol"; - var conv = new Converter_1.Converter({ - noheader: true - }); - conv.fromFile(testData).then(function (json) { - assert(json); - done(); - }); - }); - it("should detect delimiter", function (done) { - var testData = __dirname + "/data/dataWithAutoDelimiter"; - var rs = fs.createReadStream(testData); - var conv = new Converter_1.Converter({ delimiter: "auto" }); - conv.then(function (res) { - assert.equal(res[0].col1, "Mini. Sectt:hisar S.O"); - assert.equal(res[1].col1, "#Mini. Sectt"); - done(); - }); - rs.pipe(conv); - }); - it("should emit delimiter event", function (done) { - var testData = __dirname + "/data/dataWithAutoDelimiter"; - var rs = fs.createReadStream(testData); - var conv = new Converter_1.Converter({ delimiter: "auto" }); - var delimiterCallback = sandbox.spy(function (delimiter) { - assert.equal(delimiter, ":"); - }); - conv.on("delimiter", delimiterCallback); - conv.then(function () { - assert.equal(delimiterCallback.callCount, 1); - done(); - }); - rs.pipe(conv); - }); - it("should emit delimiter event when no header", function (done) { - var testData = __dirname + "/data/dataWithAutoDelimiter"; - var rs = fs.createReadStream(testData); - var conv = new Converter_1.Converter({ delimiter: "auto", noheader: true }); - var delimiterCallback = sandbox.spy(function (delimiter) { - assert.equal(delimiter, ":"); - }); - conv.on("delimiter", delimiterCallback); - conv.then(function () { - assert.equal(delimiterCallback.callCount, 1); - done(); - }); - rs.pipe(conv); - }); - // it("should not emit delimiter event when delimiter is specified", function (done) { - // var testData = __dirname + "/data/columnArray"; - // var rs = fs.createReadStream(testData); - // var conv = new Converter(); - // conv.on("delimiter", function (delimiter) { - // assert.fail("delimiter event should not have been emitted"); - // }); - // conv.then(function () { - // done(); - // }); - // rs.pipe(conv); - // }); - it("should stripe out whitespaces if trim is true", function (done) { - var testData = __dirname + "/data/dataWithWhiteSpace"; - var rs = fs.createReadStream(testData); - var conv = new Converter_1.Converter({ trim: true }); - conv.then(function (res) { - assert.equal(res[0]["Column 1"], "Column1Row1"); - assert.equal(res[0]["Column 2"], "Column2Row1"); - done(); - }); - rs.pipe(conv); - }); - it("should convert triple quotes correctly", function (done) { - var testData = __dirname + "/data/dataWithTripleQoutes"; - var rs = fs.createReadStream(testData); - var conv = new Converter_1.Converter({ trim: true }); - conv.then(function (res) { - assert.equal(res[0].Description, "ac, abs, moon"); - assert.equal(res[1].Model, "Venture \"Extended Edition\""); - assert.equal(res[2].Model, "Venture \"Extended Edition, Very Large\""); - done(); - }); - rs.pipe(conv); - }); - it("should pre process raw data in the line", function (done) { - var testData = __dirname + "/data/quoteTolerant"; - var rs = fs.createReadStream(testData); - var conv = new Converter_1.Converter(); - conv.preRawData(function (d) { - return d.replace('THICK', 'THIN'); - }); - conv.then(function (res) { - assert(res[0].Description.indexOf('THIN') > -1); - done(); - }); - rs.pipe(conv); - }); - it("should pre process by line in the line", function (done) { - var testData = __dirname + "/data/quoteTolerant"; - var rs = fs.createReadStream(testData); - var conv = new Converter_1.Converter(); - conv.preFileLine(function (line, lineNumber) { - if (lineNumber === 1) { - line = line.replace('THICK', 'THIN'); - } - return line; - }); - conv.then(function (res) { - assert(res[0].Description.indexOf('THIN') > -1); - done(); - }); - rs.pipe(conv); - }); - it("should support object mode", function (done) { - var testData = __dirname + "/data/complexJSONCSV"; - var rs = fs.createReadStream(testData); - var conv = new Converter_1.Converter({}, { - objectMode: true - }); - conv.on("data", function (d) { - assert(typeof d === "object"); - }); - conv.then(function (res) { - assert(res); - assert(res.length > 0); - done(); - }); - rs.pipe(conv); - }); - it("should get delimiter automatically if there is no header", function (done) { - var test_converter = new Converter_1.Converter({ - delimiter: 'auto', - headers: ['col1', 'col2'], - noheader: true, - checkColumn: true - }); - var my_data = 'first_val\tsecond_val'; - test_converter.fromString(my_data).then(function (result) { - assert.equal(result.length, 1); - assert.equal(result[0].col1, "first_val"); - assert.equal(result[0].col2, "second_val"); - done(); - }); - }); - it("should process escape chars", function (done) { - var test_converter = new Converter_1.Converter({ - escape: "\\", - checkType: true - }); - var testData = __dirname + "/data/dataWithSlashEscape"; - var rs = fs.createReadStream(testData); - test_converter.then(function (res) { - assert.equal(res[0].raw.hello, "world"); - assert.equal(res[0].raw.test, true); - done(); - }); - rs.pipe(test_converter); - }); - it("should output ndjson format", function (done) { - var conv = new Converter_1.Converter(); - conv.fromString("a,b,c\n1,2,3\n4,5,6") - .on("data", function (d) { - d = d.toString(); - assert.equal(d[d.length - 1], "\n"); - }) - .on("done", done); - }); - it("should parse from stream", function (done) { - var testData = __dirname + "/data/complexJSONCSV"; - var rs = fs.createReadStream(testData); - src_1.default() - .fromStream(rs) - .then(function (res) { - assert(res); - done(); - }); - }); - it("should set output as csv", function (done) { - var testData = __dirname + "/data/complexJSONCSV"; - var rs = fs.createReadStream(testData); - var numOfRow = 0; - src_1.default({ output: "csv" }) - .fromStream(rs) - .subscribe(function (row, idx) { - numOfRow++; - assert(row); - assert(idx >= 0); - }) - .on("done", function (error) { - assert(!error); - assert.equal(2, numOfRow); - assert(numOfRow !== 0); - done(); - }); - }); - it("should transform with subscribe function", function (done) { - var testData = __dirname + "/data/complexJSONCSV"; - var rs = fs.createReadStream(testData); - var numOfRow = 0; - var numOfJson = 0; - src_1.default() - .fromStream(rs) - .subscribe(function (json, idx) { - json.a = "test"; - assert(idx >= 0); - }) - .on("data", function (d) { - var j = JSON.parse(d.toString()); - assert.equal(j.a, "test"); - }) - .on("end", function () { - done(); - }); - }); - it("should parse a complex JSON", function (done) { - var converter = new Converter_1.Converter({ checkType: true }); - var r = fs.createReadStream(__dirname + "/data/complexJSONCSV"); - converter.then(function (res) { - assert(res); - assert(res.length === 2); - assert(res[0].fieldA.title === "Food Factory"); - assert(res[0].fieldA.children.length === 2); - assert(res[0].fieldA.children[0].name === "Oscar"); - assert(res[0].fieldA.children[0].id === 23); - assert(res[0].fieldA.children[1].name === "Tikka"); - assert.equal(res[0].fieldA.children[1].employee.length, 2); - assert(res[0].fieldA.children[1].employee[0].name === "Tim", JSON.stringify(res[0].fieldA.children[1].employee[0])); - assert(res[0].fieldA.address.length === 2); - assert(res[0].fieldA.address[0] === "3 Lame Road"); - assert(res[0].fieldA.address[1] === "Grantstown"); - assert(res[0].description === "A fresh new food factory", res[0].description); - done(); - }); - r.pipe(converter); - }); - it("should allow flatKey to change parse behaviour", function (done) { - var conv = new Converter_1.Converter({ - flatKeys: true - }); - conv.fromString("a.b,b.d,c.a\n1,2,3\n4,5,6").subscribe(function (d) { - assert(d["a.b"]); - assert(d["b.d"]); - assert(d["c.a"]); - }) - .on("done", done); - }); - it("should allow flat mods to change parse behaviour", function (done) { - var conv = new Converter_1.Converter({ - colParser: { - "a.b": { - flat: true - } - } - }); - conv.fromString("a.b,b.d,c.a\n1,2,3\n4,5,6").subscribe(function (d) { - assert(d["a.b"]); - }) - .on("done", done); - }); - it("should process long header", function (done) { - var testData = __dirname + "/data/longHeader"; - var rs = fs.createReadStream(testData, { highWaterMark: 100 }); - var numOfRow = 0; - var numOfJson = 0; - src_1.default({}, { highWaterMark: 100 }) - .fromStream(rs) - .subscribe(function (res, idx) { - numOfJson++; - assert.equal(res.Date, '8/26/16'); - assert(idx >= 0); - }) - .on("done", function () { - assert(numOfJson === 1); - done(); - }); - }); - it("should parse #139", function (done) { - var rs = fs.createReadStream(__dirname + "/data/data#139"); - src_1.default() - .fromStream(rs) - .then(function (res) { - assert.equal(res[1].field3, "9001009395 9001009990"); - done(); - }); - }); - it("should ignore column", function (done) { - var rs = fs.createReadStream(__dirname + "/data/dataWithQoutes"); - var headerEmitted = false; - src_1.default({ - ignoreColumns: /TIMESTAMP/ - }) - .fromStream(rs) - .on("header", function (header) { - assert.equal(header.indexOf("TIMESTAMP"), -1); - assert.equal(header.indexOf("UPDATE"), 0); - if (headerEmitted) { - throw ("header event should only happen once"); - } - headerEmitted = true; - }) - // .on("csv", function (row, idx) { - // if (!headerEmitted) { - // throw ("header should be emitted before any data events"); - // } - // assert(idx >= 0); - // if (idx === 1) { - // assert.equal(row[0], "n"); - // } - // }) - .subscribe(function (j, idx) { - assert(!j.TIMESTAMP); - assert(idx >= 0); - }) - .on("done", function () { - assert(headerEmitted); - done(); - }); - }); - it("should keep space around comma in csv", function () { - var str = "\"Name\",\"Number\"\n \"John , space\", 1234\n \"Mr. , space\", 4321\n "; - return src_1.default().fromString(str) - .then(function (data) { - assert.equal(data[0].Name, "John , space"); - assert.equal(data[1].Name, "Mr. , space"); - }); - }); - it("should include column", function (done) { - var rs = fs.createReadStream(__dirname + "/data/dataWithQoutes"); - src_1.default({ - includeColumns: /TIMESTAMP/ - }) - .fromStream(rs) - .on("header", function (header) { - assert.equal(header.indexOf("TIMESTAMP"), 0); - assert.equal(header.indexOf("UPDATE"), -1); - assert.equal(header.length, 1); - }) - .subscribe(function (j, idx) { - assert(idx >= 0); - if (idx === 1) { - assert.equal(j.TIMESTAMP, "abc, def, ccc"); - } - assert(!j.UID); - assert(!j['BYTES SENT']); - }) - .on("done", function () { - done(); - }); - }); - it("should allow headers and include columns to be given as reference to the same var", function (done) { - var rs = fs.createReadStream(__dirname + "/data/complexJSONCSV"); - var headers = [ - 'first', - 'second', - 'third', - ]; - var expected = headers; - src_1.default({ - headers: headers, - includeColumns: /(first|second|third)/, - }) - .fromStream(rs) - .on("header", function (header) { - expected.forEach(function (value, index) { - assert.equal(header.indexOf(value), index); - }); - }) - .subscribe(function (j, idx) { - assert(idx >= 0); - assert.equal(expected.length, Object.keys(j).length); - expected.forEach(function (attribute) { - assert(j.hasOwnProperty(attribute)); - }); - }) - .on("done", function () { - done(); - }); - }); - it("should leave provided params objects unmutated", function () { - var rs = fs.createReadStream(__dirname + "/data/complexJSONCSV"); - var includeColumns = [ - 'fieldA.title', - 'description', - ]; - return src_1.default({ - includeColumns: /(fieldA\.title|description)/, - }) - .fromStream(rs) - .on("json", function (j, idx) { - assert(idx >= 0); - }) - .on("header", function (header) { - includeColumns.forEach(function (value, index) { - assert.equal(index, header.indexOf(value)); - }); - }); - }); - it("should only call done once", function (done) { - var counter = 0; - src_1.default() - .fromString('"a","b", "c""') - .on('done', function () { - counter++; - }); - setTimeout(function () { - assert.equal(counter, 1); - done(); - }, 100); - }); -}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3Rlc3QvdGVzdENTVkNvbnZlcnRlcjIudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi90ZXN0L3Rlc3RDU1ZDb252ZXJ0ZXIyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOENBQTZDO0FBQzdDLCtDQUF5QjtBQUN6QixJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0IsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDaEQsUUFBUSxDQUFDLG1CQUFtQixFQUFFO0lBQzVCLFNBQVMsQ0FBQztRQUNSLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRSxVQUFVLElBQUk7UUFDdkQsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsNEJBQTRCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0UsSUFBSSxJQUFJLEdBQUcsSUFBSSxxQkFBUyxDQUFDLEVBQ3hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUN4QyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQztZQUM1QixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsVUFBVSxJQUFJO1FBQ2pDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEdBQUcsNEJBQTRCLENBQUMsQ0FBQztRQUN2RSxJQUFJLElBQUksR0FBRyxJQUFJLHFCQUFTLENBQUM7WUFDdkIsR0FBRyxFQUFFLElBQUk7U0FDVixDQUFDLENBQUM7UUFDSCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsVUFBVSxFQUFFLEtBQUs7WUFDeEMsS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkIsNEJBQTRCO1lBQzVCLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRTtZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsTUFBTTtZQUN4QixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDZixNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDJCQUEyQixFQUFFLFVBQVUsSUFBSTtRQUM1QyxJQUFJLEdBQUcsR0FBRyxTQUFTLEdBQUcsZUFBZSxDQUFDO1FBQ3RDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLElBQUksSUFBSSxHQUFHLElBQUkscUJBQVMsQ0FBQztZQUN2QixTQUFTLEVBQUUsSUFBSTtZQUNmLFdBQVcsRUFBRSxLQUFLO1NBQ25CLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUN4QyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDWixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUIsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHdEQUF3RCxFQUFFLFVBQVUsSUFBSTtRQUN6RSxJQUFJLFFBQVEsR0FBRyxTQUFTLEdBQUcsbUJBQW1CLENBQUM7UUFDL0MsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0MsSUFBSSxJQUFJLEdBQUcsSUFBSSxxQkFBUyxDQUFDO1lBQ3ZCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7U0FDeEMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJO1lBQ3JDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUMxQyxJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdUJBQXVCLEVBQUUsVUFBVSxJQUFJO1FBQ3hDLElBQUksT0FBTyxHQUFHLFNBQVMsR0FBRyw0QkFBNEIsQ0FBQztRQUN2RCxJQUFJLElBQUksR0FBRyxJQUFJLHFCQUFTLENBQUMsRUFDeEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ3ZDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMvQixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsbUNBQW1DLEVBQUUsVUFBVSxJQUFJO1FBQ3BELElBQUksT0FBTyxHQUFHLFNBQVMsR0FBRyw4QkFBOEIsQ0FBQztRQUN6RCxJQUFJLElBQUksR0FBRyxJQUFJLHFCQUFTLENBQUMsRUFDeEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHO1lBRXZDLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxFQUFFLFVBQVUsR0FBRztZQUNkLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNaLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxtREFBbUQsRUFBRSxVQUFVLElBQUk7UUFDcEUsSUFBSSxRQUFRLEdBQUcsU0FBUyxHQUFHLGlDQUFpQyxDQUFDO1FBQzdELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLElBQUksSUFBSSxHQUFHLElBQUkscUJBQVMsQ0FBQztZQUN2QixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSTtZQUNyQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxVQUFVLElBQUk7UUFDL0QsSUFBSSxRQUFRLEdBQUcsU0FBUyxHQUFHLGFBQWEsQ0FBQztRQUN6QyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzQyxJQUFJLElBQUksR0FBRyxJQUFJLHFCQUFTLENBQUM7WUFDdkIsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJO1lBQ3JDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNsQyxJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsb0NBQW9DLEVBQUUsVUFBVSxJQUFJO1FBQ3JELElBQUksUUFBUSxHQUFHLFNBQVMsR0FBRyxlQUFlLENBQUM7UUFDM0MsSUFBSSxJQUFJLEdBQUcsSUFBSSxxQkFBUyxDQUFDO1lBQ3ZCLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJO1lBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNiLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUdILEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSxVQUFVLElBQUk7UUFDMUMsSUFBSSxRQUFRLEdBQUcsU0FBUyxHQUFHLDZCQUE2QixDQUFDO1FBQ3pELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxJQUFJLElBQUksR0FBRyxJQUFJLHFCQUFTLENBQUMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNyQixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztZQUNuRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDMUMsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkJBQTZCLEVBQUUsVUFBVSxJQUFJO1FBQzlDLElBQUksUUFBUSxHQUFHLFNBQVMsR0FBRyw2QkFBNkIsQ0FBQztRQUN6RCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxJQUFJLEdBQUcsSUFBSSxxQkFBUyxDQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDaEQsSUFBSSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsU0FBUztZQUNyRCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNSLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdDLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDRDQUE0QyxFQUFFLFVBQVUsSUFBSTtRQUM3RCxJQUFJLFFBQVEsR0FBRyxTQUFTLEdBQUcsNkJBQTZCLENBQUM7UUFDekQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksSUFBSSxHQUFHLElBQUkscUJBQVMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsU0FBUztZQUNyRCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNSLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdDLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBRUgsc0ZBQXNGO0lBQ3RGLG9EQUFvRDtJQUNwRCw0Q0FBNEM7SUFDNUMsZ0NBQWdDO0lBQ2hDLGdEQUFnRDtJQUNoRCxtRUFBbUU7SUFDbkUsUUFBUTtJQUNSLDRCQUE0QjtJQUM1QixjQUFjO0lBQ2QsUUFBUTtJQUVSLG1CQUFtQjtJQUNuQixNQUFNO0lBRU4sRUFBRSxDQUFDLCtDQUErQyxFQUFFLFVBQVUsSUFBSTtRQUNoRSxJQUFJLFFBQVEsR0FBRyxTQUFTLEdBQUcsMEJBQTBCLENBQUM7UUFDdEQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksSUFBSSxHQUFHLElBQUkscUJBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ3JCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ2hELE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ2hELElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHdDQUF3QyxFQUFFLFVBQVUsSUFBSTtRQUN6RCxJQUFJLFFBQVEsR0FBRyxTQUFTLEdBQUcsNEJBQTRCLENBQUM7UUFDeEQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksSUFBSSxHQUFHLElBQUkscUJBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ3JCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUNsRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsOEJBQThCLENBQUMsQ0FBQztZQUMzRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsMENBQTBDLENBQUMsQ0FBQztZQUN2RSxJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztJQUlILEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxVQUFVLElBQUk7UUFDMUQsSUFBSSxRQUFRLEdBQUcsU0FBUyxHQUFHLHFCQUFxQixDQUFDO1FBQ2pELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxJQUFJLElBQUksR0FBRyxJQUFJLHFCQUFTLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUN6QixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUc7WUFDckIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEQsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsd0NBQXdDLEVBQUUsVUFBVSxJQUFJO1FBQ3pELElBQUksUUFBUSxHQUFHLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQztRQUNqRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxJQUFJLEdBQUcsSUFBSSxxQkFBUyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLElBQUksRUFBRSxVQUFVO1lBQ3pDLElBQUksVUFBVSxLQUFLLENBQUMsRUFBRTtnQkFDcEIsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQ3RDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ3JCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hELElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDRCQUE0QixFQUFFLFVBQVUsSUFBSTtRQUM3QyxJQUFJLFFBQVEsR0FBRyxTQUFTLEdBQUcsc0JBQXNCLENBQUM7UUFDbEQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksSUFBSSxHQUFHLElBQUkscUJBQVMsQ0FBQyxFQUFFLEVBQUU7WUFDM0IsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ3JCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNaLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDBEQUEwRCxFQUFFLFVBQVUsSUFBSTtRQUMzRSxJQUFJLGNBQWMsR0FBRyxJQUFJLHFCQUFTLENBQUM7WUFDakMsU0FBUyxFQUFFLE1BQU07WUFDakIsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztZQUN6QixRQUFRLEVBQUUsSUFBSTtZQUNkLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUMsQ0FBQztRQUVILElBQUksT0FBTyxHQUFHLHVCQUF1QixDQUFDO1FBQ3RDLGNBQWMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsTUFBTTtZQUN0RCxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDL0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztZQUMzQyxJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkJBQTZCLEVBQUUsVUFBVSxJQUFJO1FBQzlDLElBQUksY0FBYyxHQUFHLElBQUkscUJBQVMsQ0FBQztZQUNqQyxNQUFNLEVBQUUsSUFBSTtZQUNaLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUVILElBQUksUUFBUSxHQUFHLFNBQVMsR0FBRywyQkFBMkIsQ0FBQztRQUN2RCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUc7WUFDL0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN4QyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BDLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDZCQUE2QixFQUFFLFVBQVUsSUFBSTtRQUM5QyxJQUFJLElBQUksR0FBRyxJQUFJLHFCQUFTLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDO2FBQ25DLEVBQUUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDO1lBQ3JCLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUM7YUFDRCxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDBCQUEwQixFQUFFLFVBQVUsSUFBSTtRQUMzQyxJQUFJLFFBQVEsR0FBRyxTQUFTLEdBQUcsc0JBQXNCLENBQUM7UUFDbEQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLGFBQUcsRUFBRTthQUNGLFVBQVUsQ0FBQyxFQUFFLENBQUM7YUFDZCxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2pCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNaLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxVQUFVLElBQUk7UUFDM0MsSUFBSSxRQUFRLEdBQUcsU0FBUyxHQUFHLHNCQUFzQixDQUFDO1FBQ2xELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDakIsYUFBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ25CLFVBQVUsQ0FBQyxFQUFFLENBQUM7YUFDZCxTQUFTLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRztZQUMzQixRQUFRLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNaLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbkIsQ0FBQyxDQUFDO2FBRUQsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLEtBQUs7WUFDekIsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDZixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMxQixNQUFNLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywwQ0FBMEMsRUFBRSxVQUFVLElBQUk7UUFDM0QsSUFBSSxRQUFRLEdBQUcsU0FBUyxHQUFHLHNCQUFzQixDQUFDO1FBQ2xELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDakIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLGFBQUcsRUFBRTthQUNGLFVBQVUsQ0FBQyxFQUFFLENBQUM7YUFDZCxTQUFTLENBQUMsVUFBVSxJQUFJLEVBQUUsR0FBRztZQUM1QixJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztZQUNoQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQzthQUNELEVBQUUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDO1lBQ3JCLElBQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDbkMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQzthQUNELEVBQUUsQ0FBQyxLQUFLLEVBQUU7WUFDVCxJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkJBQTZCLEVBQUUsVUFBVSxJQUFJO1FBQzlDLElBQUksU0FBUyxHQUFHLElBQUkscUJBQVMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEdBQUcsc0JBQXNCLENBQUMsQ0FBQztRQUNoRSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUMxQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDWixNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN6QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssY0FBYyxDQUFDLENBQUM7WUFDL0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDO1lBQ25ELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQztZQUNuRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwSCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxhQUFhLENBQUMsQ0FBQztZQUNuRCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxDQUFDLENBQUM7WUFDbEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEtBQUssMEJBQTBCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzlFLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGdEQUFnRCxFQUFFLFVBQVUsSUFBSTtRQUNqRSxJQUFJLElBQUksR0FBRyxJQUFJLHFCQUFTLENBQUM7WUFDdkIsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLDJCQUEyQixDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUNoRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUM7YUFDQyxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsRUFBRSxDQUFDLGtEQUFrRCxFQUFFLFVBQVUsSUFBSTtRQUNuRSxJQUFJLElBQUksR0FBRyxJQUFJLHFCQUFTLENBQUM7WUFDdkIsU0FBUyxFQUFFO2dCQUNULEtBQUssRUFBRTtvQkFDTCxJQUFJLEVBQUUsSUFBSTtpQkFDWDthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7WUFDaEUsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQzthQUNDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNEJBQTRCLEVBQUUsVUFBVSxJQUFJO1FBQzdDLElBQUksUUFBUSxHQUFHLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQztRQUM5QyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDL0QsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNsQixhQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQzVCLFVBQVUsQ0FBQyxFQUFFLENBQUM7YUFDZCxTQUFTLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRztZQUMzQixTQUFTLEVBQUUsQ0FBQztZQUNaLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNsQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQzthQUNELEVBQUUsQ0FBQyxNQUFNLEVBQUU7WUFDVixNQUFNLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLElBQUk7UUFDcEMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNELGFBQUcsRUFBRTthQUNGLFVBQVUsQ0FBQyxFQUFFLENBQUM7YUFDZCxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3JELElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxVQUFVLElBQUk7UUFDdkMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2pFLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMxQixhQUFHLENBQUM7WUFDRixhQUFhLEVBQUUsV0FBVztTQUMzQixDQUFDO2FBQ0MsVUFBVSxDQUFDLEVBQUUsQ0FBQzthQUNkLEVBQUUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxNQUFNO1lBQzVCLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLGFBQWEsRUFBRTtnQkFDakIsTUFBTSxDQUFDLHNDQUFzQyxDQUFDLENBQUE7YUFDL0M7WUFDRCxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQztZQUNGLG1DQUFtQztZQUNuQywwQkFBMEI7WUFDMUIsaUVBQWlFO1lBQ2pFLE1BQU07WUFDTixzQkFBc0I7WUFDdEIscUJBQXFCO1lBQ3JCLGlDQUFpQztZQUNqQyxNQUFNO1lBQ04sS0FBSzthQUNKLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHO1lBQ3pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNyQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQzthQUNELEVBQUUsQ0FBQyxNQUFNLEVBQUU7WUFDVixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdEIsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0gsRUFBRSxDQUFDLHVDQUF1QyxFQUFFO1FBQzFDLElBQU0sR0FBRyxHQUFHLGtGQUdYLENBQUM7UUFDRixPQUFPLGFBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7YUFDekIsSUFBSSxDQUFDLFVBQUMsSUFBSTtZQUNULE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztZQUMzQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxVQUFVLElBQUk7UUFDeEMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2pFLGFBQUcsQ0FBQztZQUNGLGNBQWMsRUFBRSxXQUFXO1NBQzVCLENBQUM7YUFDQyxVQUFVLENBQUMsRUFBRSxDQUFDO2FBQ2QsRUFBRSxDQUFDLFFBQVEsRUFBRSxVQUFVLE1BQU07WUFDNUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUM7YUFDRCxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRztZQUN6QixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDYixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUM7YUFDNUM7WUFDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDZCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQTtRQUMxQixDQUFDLENBQUM7YUFDRCxFQUFFLENBQUMsTUFBTSxFQUFFO1lBQ1YsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG1GQUFtRixFQUFFLFVBQVUsSUFBSTtRQUNwRyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLHNCQUFzQixDQUFDLENBQUM7UUFDakUsSUFBSSxPQUFPLEdBQUc7WUFDWixPQUFPO1lBQ1AsUUFBUTtZQUNSLE9BQU87U0FDUixDQUFDO1FBRUYsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBRXZCLGFBQUcsQ0FBQztZQUNGLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLGNBQWMsRUFBRSxzQkFBc0I7U0FDdkMsQ0FBQzthQUNDLFVBQVUsQ0FBQyxFQUFFLENBQUM7YUFDZCxFQUFFLENBQUMsUUFBUSxFQUFFLFVBQVUsTUFBTTtZQUM1QixRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM3QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQzthQUNELFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHO1lBQ3pCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLFNBQVM7Z0JBQ2xDLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7YUFDRCxFQUFFLENBQUMsTUFBTSxFQUFFO1lBQ1YsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGdEQUFnRCxFQUFFO1FBQ25ELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEdBQUcsc0JBQXNCLENBQUMsQ0FBQztRQUNqRSxJQUFJLGNBQWMsR0FBRztZQUNuQixjQUFjO1lBQ2QsYUFBYTtTQUNkLENBQUM7UUFHRixPQUFPLGFBQUcsQ0FBQztZQUNULGNBQWMsRUFBRSw2QkFBNkI7U0FDOUMsQ0FBQzthQUNDLFVBQVUsQ0FBQyxFQUFFLENBQUM7YUFDZCxFQUFFLENBQUMsTUFBTSxFQUFFLFVBQVMsQ0FBQyxFQUFFLEdBQUc7WUFDekIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUM7YUFDRCxFQUFFLENBQUMsUUFBUSxFQUFFLFVBQVMsTUFBTTtZQUMzQixjQUFjLENBQUMsT0FBTyxDQUFDLFVBQVUsS0FBSyxFQUFFLEtBQUs7Z0JBQzNDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM3QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNEJBQTRCLEVBQUUsVUFBVSxJQUFJO1FBQzdDLElBQUksT0FBTyxHQUFDLENBQUMsQ0FBQztRQUNkLGFBQUcsRUFBRTthQUNKLFVBQVUsQ0FBQyxlQUFlLENBQUM7YUFDM0IsRUFBRSxDQUFDLE1BQU0sRUFBQztZQUNULE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7UUFDSCxVQUFVLENBQUM7WUFDVCxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsQ0FBQztZQUN4QixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsRUFBQyxHQUFHLENBQUMsQ0FBQztJQUNULENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb252ZXJ0ZXIgfSBmcm9tIFwiLi4vc3JjL0NvbnZlcnRlclwiO1xuaW1wb3J0IGNzdiBmcm9tIFwiLi4vc3JjXCI7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZShcImFzc2VydFwiKTtcbnZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbnZhciBzYW5kYm94ID0gcmVxdWlyZSgnc2lub24nKS5zYW5kYm94LmNyZWF0ZSgpO1xuZGVzY3JpYmUoXCJ0ZXN0Q1NWQ29udmVydGVyMlwiLCBmdW5jdGlvbiAoKSB7XG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2FuZGJveC5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGNvbnZlcnQgZnJvbSBsYXJnZSBjc3Ygc3RyaW5nXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIGNzdlN0ciA9IGZzLnJlYWRGaWxlU3luYyhfX2Rpcm5hbWUgKyBcIi9kYXRhL2xhcmdlLWNzdi1zYW1wbGUuY3N2XCIsIFwidXRmOFwiKTtcbiAgICB2YXIgY29udiA9IG5ldyBDb252ZXJ0ZXIoe1xuICAgIH0pO1xuICAgIGNvbnYuZnJvbVN0cmluZyhjc3ZTdHIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgYXNzZXJ0KHJlcy5sZW5ndGggPT09IDUyOTApO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdChcInNob3VsZCBzZXQgZW9sXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbShfX2Rpcm5hbWUgKyBcIi9kYXRhL2xhcmdlLWNzdi1zYW1wbGUuY3N2XCIpO1xuICAgIHZhciBjb252ID0gbmV3IENvbnZlcnRlcih7XG4gICAgICBlb2w6IFwiXFxuXCJcbiAgICB9KTtcbiAgICB2YXIgY291bnQgPSAwO1xuICAgIGNvbnYuc3Vic2NyaWJlKGZ1bmN0aW9uIChyZXN1bHRKc29uLCBpbmRleCkge1xuICAgICAgY291bnQrKztcbiAgICAgIGFzc2VydChyZXN1bHRKc29uKTtcbiAgICAgIC8vIGFzc2VydChyb3cubGVuZ3RoID09PSAyKTtcbiAgICAgIGFzc2VydChpbmRleCA+PSAwKTtcbiAgICB9KTtcbiAgICBjb252Lm9uKFwiZXJyb3JcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc29sZS5sb2coYXJndW1lbnRzKTtcbiAgICB9KTtcbiAgICBjb252LnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgYXNzZXJ0KHJlc3VsdCk7XG4gICAgICBhc3NlcnQoY291bnQgPT09IDUyOTApO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHJzLnBpcGUoY29udik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGNvbnZlcnQgdHN2IFN0cmluZ1wiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0c3YgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFUc3ZcIjtcbiAgICB2YXIgY3N2U3RyID0gZnMucmVhZEZpbGVTeW5jKHRzdiwgXCJ1dGY4XCIpO1xuICAgIHZhciBjb252ID0gbmV3IENvbnZlcnRlcih7XG4gICAgICBkZWxpbWl0ZXI6IFwiXFx0XCIsXG4gICAgICBcImNoZWNrVHlwZVwiOiBmYWxzZVxuICAgIH0pO1xuICAgIGNvbnYuZnJvbVN0cmluZyhjc3ZTdHIpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgYXNzZXJ0KHJlcyk7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzLmxlbmd0aCwgMjAwKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgYWxsb3cgY3VzdG9taXNlZCBoZWFkZXIgd2l0aCBub2hlYWQgY3N2IHN0cmluZy5cIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL25vaGVhZGVyY3N2XCI7XG4gICAgdmFyIHJzID0gZnMucmVhZEZpbGVTeW5jKHRlc3REYXRhLCBcInV0ZjhcIik7XG4gICAgdmFyIGNvbnYgPSBuZXcgQ29udmVydGVyKHtcbiAgICAgIG5vaGVhZGVyOiB0cnVlLFxuICAgICAgaGVhZGVyczogW1wiYVwiLCBcImJcIiwgXCJjXCIsIFwiZVwiLCBcImZcIiwgXCJnXCJdXG4gICAgfSk7XG4gICAgY29udi5mcm9tU3RyaW5nKHJzKS50aGVuKGZ1bmN0aW9uIChqc29uKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoanNvblswXS5maWVsZDcsIDQwKTtcbiAgICAgIGFzc2VydC5lcXVhbChqc29uWzBdLmEsIFwiQ0MxMDItUERNSS0wMDFcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHBhcnNlIGZyb21GaWxlXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIGNzdkZpbGUgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2xhcmdlLWNzdi1zYW1wbGUuY3N2XCI7XG4gICAgdmFyIGNvbnYgPSBuZXcgQ29udmVydGVyKHtcbiAgICB9KTtcbiAgICBjb252LmZyb21GaWxlKGNzdkZpbGUpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlcy5sZW5ndGgsIDUyOTApO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdChcInNob3VsZCBmcm9tRmlsZSBzaG91bGQgZW1pdCBlcnJvclwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciBjc3ZGaWxlID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFVuY2xvc2VkUXVvdGVzXCI7XG4gICAgdmFyIGNvbnYgPSBuZXcgQ29udmVydGVyKHtcbiAgICB9KTtcbiAgICBjb252LmZyb21GaWxlKGNzdkZpbGUpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuXG4gICAgICBkb25lKCk7XG4gICAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgYXNzZXJ0KGVycik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHBhcnNlIG5vIGhlYWRlciB3aXRoIGR5bmFtaWMgY29sdW1uIG51bWJlclwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvbm9oZWFkZXJXaXRoVmFyeUNvbHVtbk51bVwiO1xuICAgIHZhciBycyA9IGZzLnJlYWRGaWxlU3luYyh0ZXN0RGF0YSwgXCJ1dGY4XCIpO1xuICAgIHZhciBjb252ID0gbmV3IENvbnZlcnRlcih7XG4gICAgICBub2hlYWRlcjogdHJ1ZVxuICAgIH0pO1xuICAgIGNvbnYuZnJvbVN0cmluZyhycykudGhlbihmdW5jdGlvbiAoanNvbikge1xuICAgICAgYXNzZXJ0LmVxdWFsKGpzb24ubGVuZ3RoLCAyKTtcbiAgICAgIGFzc2VydC5lcXVhbChqc29uWzFdLmZpZWxkNCwgNyk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHBhcnNlIHRhYnN2IGRhdGEgd2l0aCBkeW5hbWljIGNvbHVtbnNcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL3RhYnN2XCI7XG4gICAgdmFyIHJzID0gZnMucmVhZEZpbGVTeW5jKHRlc3REYXRhLCBcInV0ZjhcIik7XG4gICAgdmFyIGNvbnYgPSBuZXcgQ29udmVydGVyKHtcbiAgICAgIGRlbGltaXRlcjogXCJcXHRcIlxuICAgIH0pO1xuICAgIGNvbnYuZnJvbVN0cmluZyhycykudGhlbihmdW5jdGlvbiAoanNvbikge1xuICAgICAgYXNzZXJ0LmVxdWFsKGpzb25bMF0uSWRldmlzZSwgXCJcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHVzZSBmaXJzdCBsaW5lIGJyZWFrIGFzIGVvbFwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdGVzdEVvbFwiO1xuICAgIHZhciBjb252ID0gbmV3IENvbnZlcnRlcih7XG4gICAgICBub2hlYWRlcjogdHJ1ZVxuICAgIH0pO1xuICAgIGNvbnYuZnJvbUZpbGUodGVzdERhdGEpLnRoZW4oZnVuY3Rpb24gKGpzb24pIHtcbiAgICAgIGFzc2VydChqc29uKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cblxuICBpdChcInNob3VsZCBkZXRlY3QgZGVsaW1pdGVyXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aEF1dG9EZWxpbWl0ZXJcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbiAgICB2YXIgY29udiA9IG5ldyBDb252ZXJ0ZXIoeyBkZWxpbWl0ZXI6IFwiYXV0b1wiIH0pO1xuICAgIGNvbnYudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzWzBdLmNvbDEsIFwiTWluaS4gU2VjdHQ6aGlzYXIgUy5PXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc1sxXS5jb2wxLCBcIiNNaW5pLiBTZWN0dFwiKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBycy5waXBlKGNvbnYpO1xuICB9KTtcblxuICBpdChcInNob3VsZCBlbWl0IGRlbGltaXRlciBldmVudFwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YVdpdGhBdXRvRGVsaW1pdGVyXCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIGNvbnYgPSBuZXcgQ29udmVydGVyKHsgZGVsaW1pdGVyOiBcImF1dG9cIiB9KTtcbiAgICB2YXIgZGVsaW1pdGVyQ2FsbGJhY2sgPSBzYW5kYm94LnNweShmdW5jdGlvbiAoZGVsaW1pdGVyKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoZGVsaW1pdGVyLCBcIjpcIik7XG4gICAgfSk7XG4gICAgY29udi5vbihcImRlbGltaXRlclwiLCBkZWxpbWl0ZXJDYWxsYmFjayk7XG4gICAgY29udi50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5lcXVhbChkZWxpbWl0ZXJDYWxsYmFjay5jYWxsQ291bnQsIDEpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHJzLnBpcGUoY29udik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGVtaXQgZGVsaW1pdGVyIGV2ZW50IHdoZW4gbm8gaGVhZGVyXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aEF1dG9EZWxpbWl0ZXJcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbiAgICB2YXIgY29udiA9IG5ldyBDb252ZXJ0ZXIoeyBkZWxpbWl0ZXI6IFwiYXV0b1wiLCBub2hlYWRlcjogdHJ1ZSB9KTtcbiAgICB2YXIgZGVsaW1pdGVyQ2FsbGJhY2sgPSBzYW5kYm94LnNweShmdW5jdGlvbiAoZGVsaW1pdGVyKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoZGVsaW1pdGVyLCBcIjpcIik7XG4gICAgfSk7XG4gICAgY29udi5vbihcImRlbGltaXRlclwiLCBkZWxpbWl0ZXJDYWxsYmFjayk7XG4gICAgY29udi50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5lcXVhbChkZWxpbWl0ZXJDYWxsYmFjay5jYWxsQ291bnQsIDEpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHJzLnBpcGUoY29udik7XG4gIH0pO1xuXG4gIC8vIGl0KFwic2hvdWxkIG5vdCBlbWl0IGRlbGltaXRlciBldmVudCB3aGVuIGRlbGltaXRlciBpcyBzcGVjaWZpZWRcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgLy8gICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2NvbHVtbkFycmF5XCI7XG4gIC8vICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gIC8vICAgdmFyIGNvbnYgPSBuZXcgQ29udmVydGVyKCk7XG4gIC8vICAgY29udi5vbihcImRlbGltaXRlclwiLCBmdW5jdGlvbiAoZGVsaW1pdGVyKSB7XG4gIC8vICAgICBhc3NlcnQuZmFpbChcImRlbGltaXRlciBldmVudCBzaG91bGQgbm90IGhhdmUgYmVlbiBlbWl0dGVkXCIpO1xuICAvLyAgIH0pO1xuICAvLyAgIGNvbnYudGhlbihmdW5jdGlvbiAoKSB7XG4gIC8vICAgICBkb25lKCk7XG4gIC8vICAgfSk7XG5cbiAgLy8gICBycy5waXBlKGNvbnYpO1xuICAvLyB9KTtcblxuICBpdChcInNob3VsZCBzdHJpcGUgb3V0IHdoaXRlc3BhY2VzIGlmIHRyaW0gaXMgdHJ1ZVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YVdpdGhXaGl0ZVNwYWNlXCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIGNvbnYgPSBuZXcgQ29udmVydGVyKHsgdHJpbTogdHJ1ZSB9KTtcbiAgICBjb252LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc1swXVtcIkNvbHVtbiAxXCJdLCBcIkNvbHVtbjFSb3cxXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc1swXVtcIkNvbHVtbiAyXCJdLCBcIkNvbHVtbjJSb3cxXCIpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHJzLnBpcGUoY29udik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGNvbnZlcnQgdHJpcGxlIHF1b3RlcyBjb3JyZWN0bHlcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoVHJpcGxlUW91dGVzXCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIGNvbnYgPSBuZXcgQ29udmVydGVyKHsgdHJpbTogdHJ1ZSB9KTtcbiAgICBjb252LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc1swXS5EZXNjcmlwdGlvbiwgXCJhYywgYWJzLCBtb29uXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc1sxXS5Nb2RlbCwgXCJWZW50dXJlIFxcXCJFeHRlbmRlZCBFZGl0aW9uXFxcIlwiKTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXNbMl0uTW9kZWwsIFwiVmVudHVyZSBcXFwiRXh0ZW5kZWQgRWRpdGlvbiwgVmVyeSBMYXJnZVxcXCJcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gICAgcnMucGlwZShjb252KTtcbiAgfSk7XG5cblxuXG4gIGl0KFwic2hvdWxkIHByZSBwcm9jZXNzIHJhdyBkYXRhIGluIHRoZSBsaW5lXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9xdW90ZVRvbGVyYW50XCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIGNvbnYgPSBuZXcgQ29udmVydGVyKCk7XG4gICAgY29udi5wcmVSYXdEYXRhKGZ1bmN0aW9uIChkKSB7XG4gICAgICByZXR1cm4gZC5yZXBsYWNlKCdUSElDSycsICdUSElOJyk7XG4gICAgfSk7XG4gICAgY29udi50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIGFzc2VydChyZXNbMF0uRGVzY3JpcHRpb24uaW5kZXhPZignVEhJTicpID4gLTEpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHJzLnBpcGUoY29udik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHByZSBwcm9jZXNzIGJ5IGxpbmUgaW4gdGhlIGxpbmVcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL3F1b3RlVG9sZXJhbnRcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbiAgICB2YXIgY29udiA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICBjb252LnByZUZpbGVMaW5lKGZ1bmN0aW9uIChsaW5lLCBsaW5lTnVtYmVyKSB7XG4gICAgICBpZiAobGluZU51bWJlciA9PT0gMSkge1xuICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCdUSElDSycsICdUSElOJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGluZTtcbiAgICB9KTtcblxuICAgIGNvbnYudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICBhc3NlcnQocmVzWzBdLkRlc2NyaXB0aW9uLmluZGV4T2YoJ1RISU4nKSA+IC0xKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBycy5waXBlKGNvbnYpO1xuICB9KTtcblxuICBpdChcInNob3VsZCBzdXBwb3J0IG9iamVjdCBtb2RlXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9jb21wbGV4SlNPTkNTVlwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHZhciBjb252ID0gbmV3IENvbnZlcnRlcih7fSwge1xuICAgICAgb2JqZWN0TW9kZTogdHJ1ZVxuICAgIH0pO1xuICAgIGNvbnYub24oXCJkYXRhXCIsIGZ1bmN0aW9uIChkKSB7XG4gICAgICBhc3NlcnQodHlwZW9mIGQgPT09IFwib2JqZWN0XCIpO1xuICAgIH0pO1xuICAgIGNvbnYudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICBhc3NlcnQocmVzKTtcbiAgICAgIGFzc2VydChyZXMubGVuZ3RoID4gMCk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gICAgcnMucGlwZShjb252KTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgZ2V0IGRlbGltaXRlciBhdXRvbWF0aWNhbGx5IGlmIHRoZXJlIGlzIG5vIGhlYWRlclwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0X2NvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe1xuICAgICAgZGVsaW1pdGVyOiAnYXV0bycsXG4gICAgICBoZWFkZXJzOiBbJ2NvbDEnLCAnY29sMiddLFxuICAgICAgbm9oZWFkZXI6IHRydWUsXG4gICAgICBjaGVja0NvbHVtbjogdHJ1ZVxuICAgIH0pO1xuXG4gICAgdmFyIG15X2RhdGEgPSAnZmlyc3RfdmFsXFx0c2Vjb25kX3ZhbCc7XG4gICAgdGVzdF9jb252ZXJ0ZXIuZnJvbVN0cmluZyhteV9kYXRhKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgIGFzc2VydC5lcXVhbChyZXN1bHQubGVuZ3RoLCAxKTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbMF0uY29sMSwgXCJmaXJzdF92YWxcIik7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzdWx0WzBdLmNvbDIsIFwic2Vjb25kX3ZhbFwiKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgcHJvY2VzcyBlc2NhcGUgY2hhcnNcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdF9jb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKHtcbiAgICAgIGVzY2FwZTogXCJcXFxcXCIsXG4gICAgICBjaGVja1R5cGU6IHRydWVcbiAgICB9KTtcblxuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YVdpdGhTbGFzaEVzY2FwZVwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHRlc3RfY29udmVydGVyLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc1swXS5yYXcuaGVsbG8sIFwid29ybGRcIik7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzWzBdLnJhdy50ZXN0LCB0cnVlKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBycy5waXBlKHRlc3RfY29udmVydGVyKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgb3V0cHV0IG5kanNvbiBmb3JtYXRcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgY29udiA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICBjb252LmZyb21TdHJpbmcoXCJhLGIsY1xcbjEsMiwzXFxuNCw1LDZcIilcbiAgICAgIC5vbihcImRhdGFcIiwgZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgZCA9IGQudG9TdHJpbmcoKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGRbZC5sZW5ndGggLSAxXSwgXCJcXG5cIik7XG4gICAgICB9KVxuICAgICAgLm9uKFwiZG9uZVwiLCBkb25lKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgcGFyc2UgZnJvbSBzdHJlYW1cIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2NvbXBsZXhKU09OQ1NWXCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgY3N2KClcbiAgICAgIC5mcm9tU3RyZWFtKHJzKVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICBhc3NlcnQocmVzKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHNldCBvdXRwdXQgYXMgY3N2XCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9jb21wbGV4SlNPTkNTVlwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHZhciBudW1PZlJvdyA9IDA7XG4gICAgY3N2KHsgb3V0cHV0OiBcImNzdlwiIH0pXG4gICAgICAuZnJvbVN0cmVhbShycylcbiAgICAgIC5zdWJzY3JpYmUoZnVuY3Rpb24gKHJvdywgaWR4KSB7XG4gICAgICAgIG51bU9mUm93Kys7XG4gICAgICAgIGFzc2VydChyb3cpO1xuICAgICAgICBhc3NlcnQoaWR4ID49IDApO1xuICAgICAgfSlcblxuICAgICAgLm9uKFwiZG9uZVwiLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgYXNzZXJ0KCFlcnJvcik7XG4gICAgICAgIGFzc2VydC5lcXVhbCgyLCBudW1PZlJvdyk7XG4gICAgICAgIGFzc2VydChudW1PZlJvdyAhPT0gMCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICB9KTtcblxuICBpdChcInNob3VsZCB0cmFuc2Zvcm0gd2l0aCBzdWJzY3JpYmUgZnVuY3Rpb25cIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2NvbXBsZXhKU09OQ1NWXCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIG51bU9mUm93ID0gMDtcbiAgICB2YXIgbnVtT2ZKc29uID0gMDtcbiAgICBjc3YoKVxuICAgICAgLmZyb21TdHJlYW0ocnMpXG4gICAgICAuc3Vic2NyaWJlKGZ1bmN0aW9uIChqc29uLCBpZHgpIHtcbiAgICAgICAganNvbi5hID0gXCJ0ZXN0XCI7XG4gICAgICAgIGFzc2VydChpZHggPj0gMCk7XG4gICAgICB9KVxuICAgICAgLm9uKFwiZGF0YVwiLCBmdW5jdGlvbiAoZCkge1xuICAgICAgICBjb25zdCBqID0gSlNPTi5wYXJzZShkLnRvU3RyaW5nKCkpO1xuICAgICAgICBhc3NlcnQuZXF1YWwoai5hLCBcInRlc3RcIik7XG4gICAgICB9KVxuICAgICAgLm9uKFwiZW5kXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHBhcnNlIGEgY29tcGxleCBKU09OXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIGNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoeyBjaGVja1R5cGU6IHRydWUgfSk7XG4gICAgdmFyIHIgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKF9fZGlybmFtZSArIFwiL2RhdGEvY29tcGxleEpTT05DU1ZcIik7XG4gICAgY29udmVydGVyLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgYXNzZXJ0KHJlcyk7XG4gICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gMik7XG4gICAgICBhc3NlcnQocmVzWzBdLmZpZWxkQS50aXRsZSA9PT0gXCJGb29kIEZhY3RvcnlcIik7XG4gICAgICBhc3NlcnQocmVzWzBdLmZpZWxkQS5jaGlsZHJlbi5sZW5ndGggPT09IDIpO1xuICAgICAgYXNzZXJ0KHJlc1swXS5maWVsZEEuY2hpbGRyZW5bMF0ubmFtZSA9PT0gXCJPc2NhclwiKTtcbiAgICAgIGFzc2VydChyZXNbMF0uZmllbGRBLmNoaWxkcmVuWzBdLmlkID09PSAyMyk7XG4gICAgICBhc3NlcnQocmVzWzBdLmZpZWxkQS5jaGlsZHJlblsxXS5uYW1lID09PSBcIlRpa2thXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc1swXS5maWVsZEEuY2hpbGRyZW5bMV0uZW1wbG95ZWUubGVuZ3RoLCAyKTtcbiAgICAgIGFzc2VydChyZXNbMF0uZmllbGRBLmNoaWxkcmVuWzFdLmVtcGxveWVlWzBdLm5hbWUgPT09IFwiVGltXCIsIEpTT04uc3RyaW5naWZ5KHJlc1swXS5maWVsZEEuY2hpbGRyZW5bMV0uZW1wbG95ZWVbMF0pKTtcbiAgICAgIGFzc2VydChyZXNbMF0uZmllbGRBLmFkZHJlc3MubGVuZ3RoID09PSAyKTtcbiAgICAgIGFzc2VydChyZXNbMF0uZmllbGRBLmFkZHJlc3NbMF0gPT09IFwiMyBMYW1lIFJvYWRcIik7XG4gICAgICBhc3NlcnQocmVzWzBdLmZpZWxkQS5hZGRyZXNzWzFdID09PSBcIkdyYW50c3Rvd25cIik7XG4gICAgICBhc3NlcnQocmVzWzBdLmRlc2NyaXB0aW9uID09PSBcIkEgZnJlc2ggbmV3IGZvb2QgZmFjdG9yeVwiLCByZXNbMF0uZGVzY3JpcHRpb24pO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHIucGlwZShjb252ZXJ0ZXIpO1xuICB9KTtcblxuICBpdChcInNob3VsZCBhbGxvdyBmbGF0S2V5IHRvIGNoYW5nZSBwYXJzZSBiZWhhdmlvdXJcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgY29udiA9IG5ldyBDb252ZXJ0ZXIoe1xuICAgICAgZmxhdEtleXM6IHRydWVcbiAgICB9KTtcbiAgICBjb252LmZyb21TdHJpbmcoXCJhLmIsYi5kLGMuYVxcbjEsMiwzXFxuNCw1LDZcIikuc3Vic2NyaWJlKGZ1bmN0aW9uIChkKSB7XG4gICAgICBhc3NlcnQoZFtcImEuYlwiXSk7XG4gICAgICBhc3NlcnQoZFtcImIuZFwiXSk7XG4gICAgICBhc3NlcnQoZFtcImMuYVwiXSk7XG4gICAgfSlcbiAgICAgIC5vbihcImRvbmVcIiwgZG9uZSk7XG4gIH0pO1xuICBpdChcInNob3VsZCBhbGxvdyBmbGF0IG1vZHMgdG8gY2hhbmdlIHBhcnNlIGJlaGF2aW91clwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciBjb252ID0gbmV3IENvbnZlcnRlcih7XG4gICAgICBjb2xQYXJzZXI6IHtcbiAgICAgICAgXCJhLmJcIjoge1xuICAgICAgICAgIGZsYXQ6IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnYuZnJvbVN0cmluZyhcImEuYixiLmQsYy5hXFxuMSwyLDNcXG40LDUsNlwiKS5zdWJzY3JpYmUoZnVuY3Rpb24gKGQpIHtcbiAgICAgIGFzc2VydChkW1wiYS5iXCJdKTtcbiAgICB9KVxuICAgICAgLm9uKFwiZG9uZVwiLCBkb25lKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgcHJvY2VzcyBsb25nIGhlYWRlclwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvbG9uZ0hlYWRlclwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEsIHsgaGlnaFdhdGVyTWFyazogMTAwIH0pO1xuICAgIHZhciBudW1PZlJvdyA9IDA7XG4gICAgdmFyIG51bU9mSnNvbiA9IDA7XG4gICAgY3N2KHt9LCB7IGhpZ2hXYXRlck1hcms6IDEwMCB9KVxuICAgICAgLmZyb21TdHJlYW0ocnMpXG4gICAgICAuc3Vic2NyaWJlKGZ1bmN0aW9uIChyZXMsIGlkeCkge1xuICAgICAgICBudW1PZkpzb24rKztcbiAgICAgICAgYXNzZXJ0LmVxdWFsKHJlcy5EYXRlLCAnOC8yNi8xNicpO1xuICAgICAgICBhc3NlcnQoaWR4ID49IDApO1xuICAgICAgfSlcbiAgICAgIC5vbihcImRvbmVcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICBhc3NlcnQobnVtT2ZKc29uID09PSAxKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHBhcnNlICMxMzlcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YSMxMzlcIik7XG4gICAgY3N2KClcbiAgICAgIC5mcm9tU3RyZWFtKHJzKVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICBhc3NlcnQuZXF1YWwocmVzWzFdLmZpZWxkMywgXCI5MDAxMDA5Mzk1IDkwMDEwMDk5OTBcIik7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICB9KTtcblxuICBpdChcInNob3VsZCBpZ25vcmUgY29sdW1uXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbShfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoUW91dGVzXCIpO1xuICAgIHZhciBoZWFkZXJFbWl0dGVkID0gZmFsc2U7XG4gICAgY3N2KHtcbiAgICAgIGlnbm9yZUNvbHVtbnM6IC9USU1FU1RBTVAvXG4gICAgfSlcbiAgICAgIC5mcm9tU3RyZWFtKHJzKVxuICAgICAgLm9uKFwiaGVhZGVyXCIsIGZ1bmN0aW9uIChoZWFkZXIpIHtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGhlYWRlci5pbmRleE9mKFwiVElNRVNUQU1QXCIpLCAtMSk7XG4gICAgICAgIGFzc2VydC5lcXVhbChoZWFkZXIuaW5kZXhPZihcIlVQREFURVwiKSwgMCk7XG4gICAgICAgIGlmIChoZWFkZXJFbWl0dGVkKSB7XG4gICAgICAgICAgdGhyb3cgKFwiaGVhZGVyIGV2ZW50IHNob3VsZCBvbmx5IGhhcHBlbiBvbmNlXCIpXG4gICAgICAgIH1cbiAgICAgICAgaGVhZGVyRW1pdHRlZCA9IHRydWU7XG4gICAgICB9KVxuICAgICAgLy8gLm9uKFwiY3N2XCIsIGZ1bmN0aW9uIChyb3csIGlkeCkge1xuICAgICAgLy8gICBpZiAoIWhlYWRlckVtaXR0ZWQpIHtcbiAgICAgIC8vICAgICB0aHJvdyAoXCJoZWFkZXIgc2hvdWxkIGJlIGVtaXR0ZWQgYmVmb3JlIGFueSBkYXRhIGV2ZW50c1wiKTtcbiAgICAgIC8vICAgfVxuICAgICAgLy8gICBhc3NlcnQoaWR4ID49IDApO1xuICAgICAgLy8gICBpZiAoaWR4ID09PSAxKSB7XG4gICAgICAvLyAgICAgYXNzZXJ0LmVxdWFsKHJvd1swXSwgXCJuXCIpO1xuICAgICAgLy8gICB9XG4gICAgICAvLyB9KVxuICAgICAgLnN1YnNjcmliZShmdW5jdGlvbiAoaiwgaWR4KSB7XG4gICAgICAgIGFzc2VydCghai5USU1FU1RBTVApO1xuICAgICAgICBhc3NlcnQoaWR4ID49IDApO1xuICAgICAgfSlcbiAgICAgIC5vbihcImRvbmVcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICBhc3NlcnQoaGVhZGVyRW1pdHRlZCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICB9KTtcbiAgaXQoXCJzaG91bGQga2VlcCBzcGFjZSBhcm91bmQgY29tbWEgaW4gY3N2XCIsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBzdHIgPSBgXCJOYW1lXCIsXCJOdW1iZXJcIlxuICAgIFwiSm9obiAsIHNwYWNlXCIsIDEyMzRcbiAgICBcIk1yLiAsIHNwYWNlXCIsIDQzMjFcbiAgICBgO1xuICAgIHJldHVybiBjc3YoKS5mcm9tU3RyaW5nKHN0cilcbiAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIGFzc2VydC5lcXVhbChkYXRhWzBdLk5hbWUsIFwiSm9obiAsIHNwYWNlXCIpO1xuICAgICAgICBhc3NlcnQuZXF1YWwoZGF0YVsxXS5OYW1lLCBcIk1yLiAsIHNwYWNlXCIpO1xuICAgICAgfSlcbiAgfSlcblxuICBpdChcInNob3VsZCBpbmNsdWRlIGNvbHVtblwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFFvdXRlc1wiKTtcbiAgICBjc3Yoe1xuICAgICAgaW5jbHVkZUNvbHVtbnM6IC9USU1FU1RBTVAvXG4gICAgfSlcbiAgICAgIC5mcm9tU3RyZWFtKHJzKVxuICAgICAgLm9uKFwiaGVhZGVyXCIsIGZ1bmN0aW9uIChoZWFkZXIpIHtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGhlYWRlci5pbmRleE9mKFwiVElNRVNUQU1QXCIpLCAwKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGhlYWRlci5pbmRleE9mKFwiVVBEQVRFXCIpLCAtMSk7XG4gICAgICAgIGFzc2VydC5lcXVhbChoZWFkZXIubGVuZ3RoLCAxKTtcbiAgICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKGZ1bmN0aW9uIChqLCBpZHgpIHtcbiAgICAgICAgYXNzZXJ0KGlkeCA+PSAwKTtcbiAgICAgICAgaWYgKGlkeCA9PT0gMSkge1xuICAgICAgICAgIGFzc2VydC5lcXVhbChqLlRJTUVTVEFNUCwgXCJhYmMsIGRlZiwgY2NjXCIpO1xuICAgICAgICB9XG4gICAgICAgIGFzc2VydCghai5VSUQpXG4gICAgICAgIGFzc2VydCghalsnQllURVMgU0VOVCddKVxuICAgICAgfSlcbiAgICAgIC5vbihcImRvbmVcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgYWxsb3cgaGVhZGVycyBhbmQgaW5jbHVkZSBjb2x1bW5zIHRvIGJlIGdpdmVuIGFzIHJlZmVyZW5jZSB0byB0aGUgc2FtZSB2YXJcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKF9fZGlybmFtZSArIFwiL2RhdGEvY29tcGxleEpTT05DU1ZcIik7XG4gICAgdmFyIGhlYWRlcnMgPSBbXG4gICAgICAnZmlyc3QnLFxuICAgICAgJ3NlY29uZCcsXG4gICAgICAndGhpcmQnLFxuICAgIF07XG5cbiAgICB2YXIgZXhwZWN0ZWQgPSBoZWFkZXJzO1xuXG4gICAgY3N2KHtcbiAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICBpbmNsdWRlQ29sdW1uczogLyhmaXJzdHxzZWNvbmR8dGhpcmQpLyxcbiAgICB9KVxuICAgICAgLmZyb21TdHJlYW0ocnMpXG4gICAgICAub24oXCJoZWFkZXJcIiwgZnVuY3Rpb24gKGhlYWRlcikge1xuICAgICAgICBleHBlY3RlZC5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgpIHtcbiAgICAgICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyLmluZGV4T2YodmFsdWUpLCBpbmRleCk7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUoZnVuY3Rpb24gKGosIGlkeCkge1xuICAgICAgICBhc3NlcnQoaWR4ID49IDApO1xuICAgICAgICBhc3NlcnQuZXF1YWwoZXhwZWN0ZWQubGVuZ3RoLCBPYmplY3Qua2V5cyhqKS5sZW5ndGgpO1xuICAgICAgICBleHBlY3RlZC5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgICBhc3NlcnQoai5oYXNPd25Qcm9wZXJ0eShhdHRyaWJ1dGUpKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLm9uKFwiZG9uZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICB9KTtcblxuICBpdChcInNob3VsZCBsZWF2ZSBwcm92aWRlZCBwYXJhbXMgb2JqZWN0cyB1bm11dGF0ZWRcIiwgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbShfX2Rpcm5hbWUgKyBcIi9kYXRhL2NvbXBsZXhKU09OQ1NWXCIpO1xuICAgIHZhciBpbmNsdWRlQ29sdW1ucyA9IFtcbiAgICAgICdmaWVsZEEudGl0bGUnLFxuICAgICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICBdO1xuXG5cbiAgICByZXR1cm4gY3N2KHtcbiAgICAgIGluY2x1ZGVDb2x1bW5zOiAvKGZpZWxkQVxcLnRpdGxlfGRlc2NyaXB0aW9uKS8sXG4gICAgfSlcbiAgICAgIC5mcm9tU3RyZWFtKHJzKVxuICAgICAgLm9uKFwianNvblwiLCBmdW5jdGlvbihqLCBpZHgpIHtcbiAgICAgICAgYXNzZXJ0KGlkeCA+PSAwKTtcbiAgICAgIH0pXG4gICAgICAub24oXCJoZWFkZXJcIiwgZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICAgIGluY2x1ZGVDb2x1bW5zLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkge1xuICAgICAgICAgIGFzc2VydC5lcXVhbChpbmRleCwgaGVhZGVyLmluZGV4T2YodmFsdWUpKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICB9KTtcblxuICBpdChcInNob3VsZCBvbmx5IGNhbGwgZG9uZSBvbmNlXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIGNvdW50ZXI9MDtcbiAgICBjc3YoKVxuICAgIC5mcm9tU3RyaW5nKCdcImFcIixcImJcIiwgXCJjXCJcIicpXG4gICAgLm9uKCdkb25lJyxmdW5jdGlvbigpe1xuICAgICAgY291bnRlcisrO1xuICAgIH0pO1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcbiAgICAgIGFzc2VydC5lcXVhbChjb3VudGVyLDEpO1xuICAgICAgZG9uZSgpO1xuICAgIH0sMTAwKTtcbiAgfSlcbn0pO1xuIl19 \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/2137721389d49414201ec34dd66bac032beb92732a7fc3a93a7da308df59074b.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/2137721389d49414201ec34dd66bac032beb92732a7fc3a93a7da308df59074b.js deleted file mode 100644 index 93dd036..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/2137721389d49414201ec34dd66bac032beb92732a7fc3a93a7da308df59074b.js +++ /dev/null @@ -1,310 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Processor_1 = require("./Processor"); -var bluebird_1 = __importDefault(require("bluebird")); -var dataClean_1 = require("./dataClean"); -var getEol_1 = __importDefault(require("./getEol")); -var fileline_1 = require("./fileline"); -var util_1 = require("./util"); -var rowSplit_1 = require("./rowSplit"); -var lineToJson_1 = __importDefault(require("./lineToJson")); -var CSVError_1 = __importDefault(require("./CSVError")); -var ProcessorLocal = /** @class */ (function (_super) { - __extends(ProcessorLocal, _super); - function ProcessorLocal() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.rowSplit = new rowSplit_1.RowSplit(_this.converter); - _this.eolEmitted = false; - _this._needEmitEol = undefined; - _this.headEmitted = false; - _this._needEmitHead = undefined; - return _this; - } - ProcessorLocal.prototype.flush = function () { - var _this = this; - if (this.runtime.csvLineBuffer && this.runtime.csvLineBuffer.length > 0) { - var buf = this.runtime.csvLineBuffer; - this.runtime.csvLineBuffer = undefined; - return this.process(buf, true) - .then(function (res) { - if (_this.runtime.csvLineBuffer && _this.runtime.csvLineBuffer.length > 0) { - return bluebird_1.default.reject(CSVError_1.default.unclosed_quote(_this.runtime.parsedLineNumber, _this.runtime.csvLineBuffer.toString())); - } - else { - return bluebird_1.default.resolve(res); - } - }); - } - else { - return bluebird_1.default.resolve([]); - } - }; - ProcessorLocal.prototype.destroy = function () { - return bluebird_1.default.resolve(); - }; - Object.defineProperty(ProcessorLocal.prototype, "needEmitEol", { - get: function () { - if (this._needEmitEol === undefined) { - this._needEmitEol = this.converter.listeners("eol").length > 0; - } - return this._needEmitEol; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ProcessorLocal.prototype, "needEmitHead", { - get: function () { - if (this._needEmitHead === undefined) { - this._needEmitHead = this.converter.listeners("header").length > 0; - } - return this._needEmitHead; - }, - enumerable: true, - configurable: true - }); - ProcessorLocal.prototype.process = function (chunk, finalChunk) { - var _this = this; - if (finalChunk === void 0) { finalChunk = false; } - var csvString; - if (finalChunk) { - csvString = chunk.toString(); - } - else { - csvString = dataClean_1.prepareData(chunk, this.converter.parseRuntime); - } - return bluebird_1.default.resolve() - .then(function () { - if (_this.runtime.preRawDataHook) { - return _this.runtime.preRawDataHook(csvString); - } - else { - return csvString; - } - }) - .then(function (csv) { - if (csv && csv.length > 0) { - return _this.processCSV(csv, finalChunk); - } - else { - return bluebird_1.default.resolve([]); - } - }); - }; - ProcessorLocal.prototype.processCSV = function (csv, finalChunk) { - var _this = this; - var params = this.params; - var runtime = this.runtime; - if (!runtime.eol) { - getEol_1.default(csv, runtime); - } - if (this.needEmitEol && !this.eolEmitted && runtime.eol) { - this.converter.emit("eol", runtime.eol); - this.eolEmitted = true; - } - // trim csv file has initial blank lines. - if (params.ignoreEmpty && !runtime.started) { - csv = util_1.trimLeft(csv); - } - var stringToLineResult = fileline_1.stringToLines(csv, runtime); - if (!finalChunk) { - this.prependLeftBuf(util_1.bufFromString(stringToLineResult.partial)); - } - else { - stringToLineResult.lines.push(stringToLineResult.partial); - stringToLineResult.partial = ""; - } - if (stringToLineResult.lines.length > 0) { - var prom = void 0; - if (runtime.preFileLineHook) { - prom = this.runPreLineHook(stringToLineResult.lines); - } - else { - prom = bluebird_1.default.resolve(stringToLineResult.lines); - } - return prom.then(function (lines) { - if (!runtime.started - && !_this.runtime.headers) { - return _this.processDataWithHead(lines); - } - else { - return _this.processCSVBody(lines); - } - }); - } - else { - return bluebird_1.default.resolve([]); - } - }; - ProcessorLocal.prototype.processDataWithHead = function (lines) { - if (this.params.noheader) { - if (this.params.headers) { - this.runtime.headers = this.params.headers; - } - else { - this.runtime.headers = []; - } - } - else { - var left = ""; - var headerRow = []; - while (lines.length) { - var line = left + lines.shift(); - var row = this.rowSplit.parse(line); - if (row.closed) { - headerRow = row.cells; - left = ""; - break; - } - else { - left = line + getEol_1.default(line, this.runtime); - } - } - this.prependLeftBuf(util_1.bufFromString(left)); - if (headerRow.length === 0) { - return []; - } - if (this.params.headers) { - this.runtime.headers = this.params.headers; - } - else { - this.runtime.headers = headerRow; - } - } - if (this.runtime.needProcessIgnoreColumn || this.runtime.needProcessIncludeColumn) { - this.filterHeader(); - } - if (this.needEmitHead && !this.headEmitted) { - this.converter.emit("header", this.runtime.headers); - this.headEmitted = true; - } - return this.processCSVBody(lines); - }; - ProcessorLocal.prototype.filterHeader = function () { - this.runtime.selectedColumns = []; - if (this.runtime.headers) { - var headers = this.runtime.headers; - for (var i = 0; i < headers.length; i++) { - if (this.params.ignoreColumns) { - if (this.params.ignoreColumns.test(headers[i])) { - if (this.params.includeColumns && this.params.includeColumns.test(headers[i])) { - this.runtime.selectedColumns.push(i); - } - else { - continue; - } - } - else { - this.runtime.selectedColumns.push(i); - } - } - else if (this.params.includeColumns) { - if (this.params.includeColumns.test(headers[i])) { - this.runtime.selectedColumns.push(i); - } - } - else { - this.runtime.selectedColumns.push(i); - } - // if (this.params.includeColumns && this.params.includeColumns.test(headers[i])){ - // this.runtime.selectedColumns.push(i); - // }else{ - // if (this.params.ignoreColumns && this.params.ignoreColumns.test(headers[i])){ - // continue; - // }else{ - // if (this.params.ignoreColumns && !this.params.includeColumns){ - // this.runtime.selectedColumns.push(i); - // } - // } - // } - } - this.runtime.headers = util_1.filterArray(this.runtime.headers, this.runtime.selectedColumns); - } - }; - ProcessorLocal.prototype.processCSVBody = function (lines) { - if (this.params.output === "line") { - return lines; - } - else { - var result = this.rowSplit.parseMultiLines(lines); - this.prependLeftBuf(util_1.bufFromString(result.partial)); - if (this.params.output === "csv") { - return result.rowsCells; - } - else { - return lineToJson_1.default(result.rowsCells, this.converter); - } - } - // var jsonArr = linesToJson(lines.lines, params, this.recordNum); - // this.processResult(jsonArr); - // this.lastIndex += jsonArr.length; - // this.recordNum += jsonArr.length; - }; - ProcessorLocal.prototype.prependLeftBuf = function (buf) { - if (buf) { - if (this.runtime.csvLineBuffer) { - this.runtime.csvLineBuffer = Buffer.concat([buf, this.runtime.csvLineBuffer]); - } - else { - this.runtime.csvLineBuffer = buf; - } - } - }; - ProcessorLocal.prototype.runPreLineHook = function (lines) { - var _this = this; - return new bluebird_1.default(function (resolve, reject) { - processLineHook(lines, _this.runtime, 0, function (err) { - if (err) { - reject(err); - } - else { - resolve(lines); - } - }); - }); - }; - return ProcessorLocal; -}(Processor_1.Processor)); -exports.ProcessorLocal = ProcessorLocal; -function processLineHook(lines, runtime, offset, cb) { - if (offset >= lines.length) { - cb(); - } - else { - if (runtime.preFileLineHook) { - var line = lines[offset]; - var res = runtime.preFileLineHook(line, runtime.parsedLineNumber + offset); - offset++; - if (res && res.then) { - res.then(function (value) { - lines[offset - 1] = value; - processLineHook(lines, runtime, offset, cb); - }); - } - else { - lines[offset - 1] = res; - while (offset < lines.length) { - lines[offset] = runtime.preFileLineHook(lines[offset], runtime.parsedLineNumber + offset); - offset++; - } - cb(); - } - } - else { - cb(); - } - } -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9Qcm9jZXNzb3JMb2NhbC50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9Qcm9jZXNzb3JMb2NhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5Q0FBMkQ7QUFDM0Qsc0RBQXlCO0FBQ3pCLHlDQUEwQztBQUMxQyxvREFBOEI7QUFDOUIsdUNBQTJDO0FBQzNDLCtCQUE2RDtBQUM3RCx1Q0FBc0M7QUFDdEMsNERBQXNDO0FBRXRDLHdEQUFrQztBQUlsQztJQUFvQyxrQ0FBUztJQUE3QztRQUFBLHFFQW1PQztRQS9NUyxjQUFRLEdBQWEsSUFBSSxtQkFBUSxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRCxnQkFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixrQkFBWSxHQUFhLFNBQVMsQ0FBQztRQU9uQyxpQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixtQkFBYSxHQUFhLFNBQVMsQ0FBQzs7SUFxTTlDLENBQUM7SUFsT0MsOEJBQUssR0FBTDtRQUFBLGlCQWVDO1FBZEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZFLElBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztZQUN2QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQztpQkFDM0IsSUFBSSxDQUFDLFVBQUMsR0FBRztnQkFDUixJQUFJLEtBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxJQUFJLEtBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ3ZFLE9BQU8sa0JBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUE7aUJBQy9HO3FCQUFNO29CQUNMLE9BQU8sa0JBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3ZCO1lBQ0gsQ0FBQyxDQUFDLENBQUE7U0FDTDthQUFNO1lBQ0wsT0FBTyxrQkFBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFDRCxnQ0FBTyxHQUFQO1FBQ0UsT0FBTyxrQkFBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFJRCxzQkFBWSx1Q0FBVzthQUF2QjtZQUNFLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzthQUNoRTtZQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMzQixDQUFDOzs7T0FBQTtJQUdELHNCQUFZLHdDQUFZO2FBQXhCO1lBQ0UsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2FBQ3BFO1lBQ0QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRTVCLENBQUM7OztPQUFBO0lBQ0QsZ0NBQU8sR0FBUCxVQUFRLEtBQWEsRUFBRSxVQUFrQjtRQUF6QyxpQkF1QkM7UUF2QnNCLDJCQUFBLEVBQUEsa0JBQWtCO1FBQ3ZDLElBQUksU0FBaUIsQ0FBQztRQUN0QixJQUFJLFVBQVUsRUFBRTtZQUNkLFNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDOUI7YUFBTTtZQUNMLFNBQVMsR0FBRyx1QkFBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBRTdEO1FBQ0QsT0FBTyxrQkFBQyxDQUFDLE9BQU8sRUFBRTthQUNmLElBQUksQ0FBQztZQUNKLElBQUksS0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUU7Z0JBQy9CLE9BQU8sS0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDL0M7aUJBQU07Z0JBQ0wsT0FBTyxTQUFTLENBQUM7YUFDbEI7UUFDSCxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsVUFBQyxHQUFHO1lBQ1IsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3pCLE9BQU8sS0FBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDekM7aUJBQU07Z0JBQ0wsT0FBTyxrQkFBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN0QjtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUNPLG1DQUFVLEdBQWxCLFVBQW1CLEdBQVcsRUFBRSxVQUFtQjtRQUFuRCxpQkE0Q0M7UUEzQ0MsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ2hCLGdCQUFNLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7U0FDeEI7UUFDRCx5Q0FBeUM7UUFDekMsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUMxQyxHQUFHLEdBQUcsZUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3JCO1FBQ0QsSUFBTSxrQkFBa0IsR0FBRyx3QkFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBYSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDaEU7YUFBTTtZQUNMLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUQsa0JBQWtCLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztTQUNqQztRQUNELElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkMsSUFBSSxJQUFJLFNBQWEsQ0FBQztZQUN0QixJQUFJLE9BQU8sQ0FBQyxlQUFlLEVBQUU7Z0JBQzNCLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3REO2lCQUFNO2dCQUNMLElBQUksR0FBRyxrQkFBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM1QztZQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFDLEtBQUs7Z0JBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTzt1QkFDZixDQUFDLEtBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUN4QjtvQkFDQSxPQUFPLEtBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDeEM7cUJBQU07b0JBQ0wsT0FBTyxLQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNuQztZQUVILENBQUMsQ0FBQyxDQUFBO1NBRUg7YUFBTTtZQUVMLE9BQU8sa0JBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDdEI7SUFFSCxDQUFDO0lBQ08sNENBQW1CLEdBQTNCLFVBQTRCLEtBQWU7UUFDekMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQzthQUM1QztpQkFBTTtnQkFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7YUFDM0I7U0FDRjthQUFNO1lBQ0wsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ2QsSUFBSSxTQUFTLEdBQWEsRUFBRSxDQUFDO1lBQzdCLE9BQU8sS0FBSyxDQUFDLE1BQU0sRUFBRTtnQkFDbkIsSUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbEMsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RDLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRTtvQkFDZCxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztvQkFDdEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDVixNQUFNO2lCQUNQO3FCQUFNO29CQUNMLElBQUksR0FBRyxJQUFJLEdBQUcsZ0JBQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUMxQzthQUNGO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFekMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDMUIsT0FBTyxFQUFFLENBQUM7YUFDWDtZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO2FBQzVDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQzthQUNsQztTQUNGO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUU7WUFDakYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUN6QjtRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ08scUNBQVksR0FBcEI7UUFDRSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUN4QixJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNyQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdkMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRTtvQkFDN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQzlDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFOzRCQUM3RSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQ3RDOzZCQUFNOzRCQUNMLFNBQVM7eUJBQ1Y7cUJBQ0Y7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN0QztpQkFDRjtxQkFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFO29CQUNyQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN0QztpQkFDRjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3RDO2dCQUNELGtGQUFrRjtnQkFDbEYsMENBQTBDO2dCQUMxQyxTQUFTO2dCQUNULGtGQUFrRjtnQkFDbEYsZ0JBQWdCO2dCQUNoQixXQUFXO2dCQUNYLHFFQUFxRTtnQkFDckUsOENBQThDO2dCQUM5QyxRQUFRO2dCQUVSLE1BQU07Z0JBQ04sSUFBSTthQUNMO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsa0JBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ3hGO0lBRUgsQ0FBQztJQUNPLHVDQUFjLEdBQXRCLFVBQXVCLEtBQWU7UUFDcEMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUU7WUFDakMsT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNO1lBQ0wsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ25ELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFO2dCQUNoQyxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUM7YUFDekI7aUJBQU07Z0JBQ0wsT0FBTyxvQkFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3JEO1NBQ0Y7UUFFRCxrRUFBa0U7UUFDbEUsK0JBQStCO1FBQy9CLG9DQUFvQztRQUNwQyxvQ0FBb0M7SUFDdEMsQ0FBQztJQUVPLHVDQUFjLEdBQXRCLFVBQXVCLEdBQVc7UUFDaEMsSUFBSSxHQUFHLEVBQUU7WUFDUCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO2dCQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQzthQUMvRTtpQkFBTTtnQkFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUM7YUFDbEM7U0FDRjtJQUVILENBQUM7SUFDTyx1Q0FBYyxHQUF0QixVQUF1QixLQUFlO1FBQXRDLGlCQVVDO1FBVEMsT0FBTyxJQUFJLGtCQUFDLENBQUMsVUFBQyxPQUFPLEVBQUUsTUFBTTtZQUMzQixlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQUMsR0FBRztnQkFDMUMsSUFBSSxHQUFHLEVBQUU7b0JBQ1AsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNiO3FCQUFNO29CQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDaEI7WUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNILHFCQUFDO0FBQUQsQ0FBQyxBQW5PRCxDQUFvQyxxQkFBUyxHQW1PNUM7QUFuT1ksd0NBQWM7QUFxTzNCLHlCQUF5QixLQUFlLEVBQUUsT0FBcUIsRUFBRSxNQUFjLEVBQzdFLEVBQWtCO0lBRWxCLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7UUFDMUIsRUFBRSxFQUFFLENBQUM7S0FDTjtTQUFNO1FBQ0wsSUFBSSxPQUFPLENBQUMsZUFBZSxFQUFFO1lBQzNCLElBQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzQixJQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLENBQUM7WUFDN0UsTUFBTSxFQUFFLENBQUM7WUFDVCxJQUFJLEdBQUcsSUFBSyxHQUEyQixDQUFDLElBQUksRUFBRTtnQkFDM0MsR0FBMkIsQ0FBQyxJQUFJLENBQUMsVUFBQyxLQUFLO29CQUN0QyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztvQkFDMUIsZUFBZSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDLENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBYSxDQUFDO2dCQUNsQyxPQUFPLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFO29CQUM1QixLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBVyxDQUFDO29CQUNwRyxNQUFNLEVBQUUsQ0FBQztpQkFDVjtnQkFDRCxFQUFFLEVBQUUsQ0FBQzthQUNOO1NBQ0Y7YUFBTTtZQUNMLEVBQUUsRUFBRSxDQUFDO1NBQ047S0FDRjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9jZXNzb3IsIFByb2Nlc3NMaW5lUmVzdWx0IH0gZnJvbSBcIi4vUHJvY2Vzc29yXCI7XG5pbXBvcnQgUCBmcm9tIFwiYmx1ZWJpcmRcIjtcbmltcG9ydCB7IHByZXBhcmVEYXRhIH0gZnJvbSBcIi4vZGF0YUNsZWFuXCI7XG5pbXBvcnQgZ2V0RW9sIGZyb20gXCIuL2dldEVvbFwiO1xuaW1wb3J0IHsgc3RyaW5nVG9MaW5lcyB9IGZyb20gXCIuL2ZpbGVsaW5lXCI7XG5pbXBvcnQgeyBidWZGcm9tU3RyaW5nLCBmaWx0ZXJBcnJheSx0cmltTGVmdCB9IGZyb20gXCIuL3V0aWxcIjtcbmltcG9ydCB7IFJvd1NwbGl0IH0gZnJvbSBcIi4vcm93U3BsaXRcIjtcbmltcG9ydCBsaW5lVG9Kc29uIGZyb20gXCIuL2xpbmVUb0pzb25cIjtcbmltcG9ydCB7IFBhcnNlUnVudGltZSB9IGZyb20gXCIuL1BhcnNlUnVudGltZVwiO1xuaW1wb3J0IENTVkVycm9yIGZyb20gXCIuL0NTVkVycm9yXCI7XG5cblxuXG5leHBvcnQgY2xhc3MgUHJvY2Vzc29yTG9jYWwgZXh0ZW5kcyBQcm9jZXNzb3Ige1xuICBmbHVzaCgpOiBQPFByb2Nlc3NMaW5lUmVzdWx0W10+IHtcbiAgICBpZiAodGhpcy5ydW50aW1lLmNzdkxpbmVCdWZmZXIgJiYgdGhpcy5ydW50aW1lLmNzdkxpbmVCdWZmZXIubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYnVmID0gdGhpcy5ydW50aW1lLmNzdkxpbmVCdWZmZXI7XG4gICAgICB0aGlzLnJ1bnRpbWUuY3N2TGluZUJ1ZmZlciA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB0aGlzLnByb2Nlc3MoYnVmLCB0cnVlKVxuICAgICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMucnVudGltZS5jc3ZMaW5lQnVmZmVyICYmIHRoaXMucnVudGltZS5jc3ZMaW5lQnVmZmVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBQLnJlamVjdChDU1ZFcnJvci51bmNsb3NlZF9xdW90ZSh0aGlzLnJ1bnRpbWUucGFyc2VkTGluZU51bWJlciwgdGhpcy5ydW50aW1lLmNzdkxpbmVCdWZmZXIudG9TdHJpbmcoKSkpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQLnJlc29sdmUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBQLnJlc29sdmUoW10pO1xuICAgIH1cbiAgfVxuICBkZXN0cm95KCk6IFA8dm9pZD4ge1xuICAgIHJldHVybiBQLnJlc29sdmUoKTtcbiAgfVxuICBwcml2YXRlIHJvd1NwbGl0OiBSb3dTcGxpdCA9IG5ldyBSb3dTcGxpdCh0aGlzLmNvbnZlcnRlcik7XG4gIHByaXZhdGUgZW9sRW1pdHRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9uZWVkRW1pdEVvbD86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgZ2V0IG5lZWRFbWl0RW9sKCkge1xuICAgIGlmICh0aGlzLl9uZWVkRW1pdEVvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9uZWVkRW1pdEVvbCA9IHRoaXMuY29udmVydGVyLmxpc3RlbmVycyhcImVvbFwiKS5sZW5ndGggPiAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbmVlZEVtaXRFb2w7XG4gIH1cbiAgcHJpdmF0ZSBoZWFkRW1pdHRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9uZWVkRW1pdEhlYWQ/OiBib29sZWFuID0gdW5kZWZpbmVkO1xuICBwcml2YXRlIGdldCBuZWVkRW1pdEhlYWQoKSB7XG4gICAgaWYgKHRoaXMuX25lZWRFbWl0SGVhZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9uZWVkRW1pdEhlYWQgPSB0aGlzLmNvbnZlcnRlci5saXN0ZW5lcnMoXCJoZWFkZXJcIikubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25lZWRFbWl0SGVhZDtcblxuICB9XG4gIHByb2Nlc3MoY2h1bms6IEJ1ZmZlciwgZmluYWxDaHVuayA9IGZhbHNlKTogUDxQcm9jZXNzTGluZVJlc3VsdFtdPiB7XG4gICAgbGV0IGNzdlN0cmluZzogc3RyaW5nO1xuICAgIGlmIChmaW5hbENodW5rKSB7XG4gICAgICBjc3ZTdHJpbmcgPSBjaHVuay50b1N0cmluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjc3ZTdHJpbmcgPSBwcmVwYXJlRGF0YShjaHVuaywgdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lKTtcblxuICAgIH1cbiAgICByZXR1cm4gUC5yZXNvbHZlKClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucnVudGltZS5wcmVSYXdEYXRhSG9vaykge1xuICAgICAgICAgIHJldHVybiB0aGlzLnJ1bnRpbWUucHJlUmF3RGF0YUhvb2soY3N2U3RyaW5nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gY3N2U3RyaW5nO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnRoZW4oKGNzdikgPT4ge1xuICAgICAgICBpZiAoY3N2ICYmIGNzdi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0NTVihjc3YsIGZpbmFsQ2h1bmspO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBQLnJlc29sdmUoW10pO1xuICAgICAgICB9XG4gICAgICB9KVxuICB9XG4gIHByaXZhdGUgcHJvY2Vzc0NTVihjc3Y6IHN0cmluZywgZmluYWxDaHVuazogYm9vbGVhbik6IFA8UHJvY2Vzc0xpbmVSZXN1bHRbXT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucGFyYW1zO1xuICAgIGNvbnN0IHJ1bnRpbWUgPSB0aGlzLnJ1bnRpbWU7XG4gICAgaWYgKCFydW50aW1lLmVvbCkge1xuICAgICAgZ2V0RW9sKGNzdiwgcnVudGltZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm5lZWRFbWl0RW9sICYmICF0aGlzLmVvbEVtaXR0ZWQgJiYgcnVudGltZS5lb2wpIHtcbiAgICAgIHRoaXMuY29udmVydGVyLmVtaXQoXCJlb2xcIiwgcnVudGltZS5lb2wpO1xuICAgICAgdGhpcy5lb2xFbWl0dGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgLy8gdHJpbSBjc3YgZmlsZSBoYXMgaW5pdGlhbCBibGFuayBsaW5lcy5cbiAgICBpZiAocGFyYW1zLmlnbm9yZUVtcHR5ICYmICFydW50aW1lLnN0YXJ0ZWQpIHtcbiAgICAgIGNzdiA9IHRyaW1MZWZ0KGNzdik7XG4gICAgfVxuICAgIGNvbnN0IHN0cmluZ1RvTGluZVJlc3VsdCA9IHN0cmluZ1RvTGluZXMoY3N2LCBydW50aW1lKTtcbiAgICBpZiAoIWZpbmFsQ2h1bmspIHtcbiAgICAgIHRoaXMucHJlcGVuZExlZnRCdWYoYnVmRnJvbVN0cmluZyhzdHJpbmdUb0xpbmVSZXN1bHQucGFydGlhbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJpbmdUb0xpbmVSZXN1bHQubGluZXMucHVzaChzdHJpbmdUb0xpbmVSZXN1bHQucGFydGlhbCk7XG4gICAgICBzdHJpbmdUb0xpbmVSZXN1bHQucGFydGlhbCA9IFwiXCI7XG4gICAgfVxuICAgIGlmIChzdHJpbmdUb0xpbmVSZXN1bHQubGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IHByb206IFA8c3RyaW5nW10+O1xuICAgICAgaWYgKHJ1bnRpbWUucHJlRmlsZUxpbmVIb29rKSB7XG4gICAgICAgIHByb20gPSB0aGlzLnJ1blByZUxpbmVIb29rKHN0cmluZ1RvTGluZVJlc3VsdC5saW5lcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9tID0gUC5yZXNvbHZlKHN0cmluZ1RvTGluZVJlc3VsdC5saW5lcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvbS50aGVuKChsaW5lcykgPT4ge1xuICAgICAgICBpZiAoIXJ1bnRpbWUuc3RhcnRlZFxuICAgICAgICAgICYmICF0aGlzLnJ1bnRpbWUuaGVhZGVyc1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzRGF0YVdpdGhIZWFkKGxpbmVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzQ1NWQm9keShsaW5lcyk7XG4gICAgICAgIH1cblxuICAgICAgfSlcblxuICAgIH0gZWxzZSB7XG5cbiAgICAgIHJldHVybiBQLnJlc29sdmUoW10pO1xuICAgIH1cblxuICB9XG4gIHByaXZhdGUgcHJvY2Vzc0RhdGFXaXRoSGVhZChsaW5lczogc3RyaW5nW10pOiBQcm9jZXNzTGluZVJlc3VsdFtdIHtcbiAgICBpZiAodGhpcy5wYXJhbXMubm9oZWFkZXIpIHtcbiAgICAgIGlmICh0aGlzLnBhcmFtcy5oZWFkZXJzKSB7XG4gICAgICAgIHRoaXMucnVudGltZS5oZWFkZXJzID0gdGhpcy5wYXJhbXMuaGVhZGVycztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucnVudGltZS5oZWFkZXJzID0gW107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBsZWZ0ID0gXCJcIjtcbiAgICAgIGxldCBoZWFkZXJSb3c6IHN0cmluZ1tdID0gW107XG4gICAgICB3aGlsZSAobGluZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBsZWZ0ICsgbGluZXMuc2hpZnQoKTtcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5yb3dTcGxpdC5wYXJzZShsaW5lKTtcbiAgICAgICAgaWYgKHJvdy5jbG9zZWQpIHtcbiAgICAgICAgICBoZWFkZXJSb3cgPSByb3cuY2VsbHM7XG4gICAgICAgICAgbGVmdCA9IFwiXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGVmdCA9IGxpbmUgKyBnZXRFb2wobGluZSwgdGhpcy5ydW50aW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5wcmVwZW5kTGVmdEJ1ZihidWZGcm9tU3RyaW5nKGxlZnQpKTtcblxuICAgICAgaWYgKGhlYWRlclJvdy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucGFyYW1zLmhlYWRlcnMpIHtcbiAgICAgICAgdGhpcy5ydW50aW1lLmhlYWRlcnMgPSB0aGlzLnBhcmFtcy5oZWFkZXJzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ydW50aW1lLmhlYWRlcnMgPSBoZWFkZXJSb3c7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLnJ1bnRpbWUubmVlZFByb2Nlc3NJZ25vcmVDb2x1bW4gfHwgdGhpcy5ydW50aW1lLm5lZWRQcm9jZXNzSW5jbHVkZUNvbHVtbikge1xuICAgICAgdGhpcy5maWx0ZXJIZWFkZXIoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVlZEVtaXRIZWFkICYmICF0aGlzLmhlYWRFbWl0dGVkKSB7XG4gICAgICB0aGlzLmNvbnZlcnRlci5lbWl0KFwiaGVhZGVyXCIsIHRoaXMucnVudGltZS5oZWFkZXJzKTtcbiAgICAgIHRoaXMuaGVhZEVtaXR0ZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzQ1NWQm9keShsaW5lcyk7XG4gIH1cbiAgcHJpdmF0ZSBmaWx0ZXJIZWFkZXIoKSB7XG4gICAgdGhpcy5ydW50aW1lLnNlbGVjdGVkQ29sdW1ucyA9IFtdO1xuICAgIGlmICh0aGlzLnJ1bnRpbWUuaGVhZGVycykge1xuICAgICAgY29uc3QgaGVhZGVycyA9IHRoaXMucnVudGltZS5oZWFkZXJzO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcmFtcy5pZ25vcmVDb2x1bW5zKSB7XG4gICAgICAgICAgaWYgKHRoaXMucGFyYW1zLmlnbm9yZUNvbHVtbnMudGVzdChoZWFkZXJzW2ldKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucGFyYW1zLmluY2x1ZGVDb2x1bW5zICYmIHRoaXMucGFyYW1zLmluY2x1ZGVDb2x1bW5zLnRlc3QoaGVhZGVyc1tpXSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5ydW50aW1lLnNlbGVjdGVkQ29sdW1ucy5wdXNoKGkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucnVudGltZS5zZWxlY3RlZENvbHVtbnMucHVzaChpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wYXJhbXMuaW5jbHVkZUNvbHVtbnMpIHtcbiAgICAgICAgICBpZiAodGhpcy5wYXJhbXMuaW5jbHVkZUNvbHVtbnMudGVzdChoZWFkZXJzW2ldKSkge1xuICAgICAgICAgICAgdGhpcy5ydW50aW1lLnNlbGVjdGVkQ29sdW1ucy5wdXNoKGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJ1bnRpbWUuc2VsZWN0ZWRDb2x1bW5zLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgKHRoaXMucGFyYW1zLmluY2x1ZGVDb2x1bW5zICYmIHRoaXMucGFyYW1zLmluY2x1ZGVDb2x1bW5zLnRlc3QoaGVhZGVyc1tpXSkpe1xuICAgICAgICAvLyAgIHRoaXMucnVudGltZS5zZWxlY3RlZENvbHVtbnMucHVzaChpKTtcbiAgICAgICAgLy8gfWVsc2V7XG4gICAgICAgIC8vICAgaWYgKHRoaXMucGFyYW1zLmlnbm9yZUNvbHVtbnMgJiYgdGhpcy5wYXJhbXMuaWdub3JlQ29sdW1ucy50ZXN0KGhlYWRlcnNbaV0pKXtcbiAgICAgICAgLy8gICAgIGNvbnRpbnVlO1xuICAgICAgICAvLyAgIH1lbHNle1xuICAgICAgICAvLyAgICAgaWYgKHRoaXMucGFyYW1zLmlnbm9yZUNvbHVtbnMgJiYgIXRoaXMucGFyYW1zLmluY2x1ZGVDb2x1bW5zKXtcbiAgICAgICAgLy8gICAgICAgdGhpcy5ydW50aW1lLnNlbGVjdGVkQ29sdW1ucy5wdXNoKGkpO1xuICAgICAgICAvLyAgICAgfVxuXG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9XG4gICAgICB9XG4gICAgICB0aGlzLnJ1bnRpbWUuaGVhZGVycyA9IGZpbHRlckFycmF5KHRoaXMucnVudGltZS5oZWFkZXJzLCB0aGlzLnJ1bnRpbWUuc2VsZWN0ZWRDb2x1bW5zKTtcbiAgICB9XG5cbiAgfVxuICBwcml2YXRlIHByb2Nlc3NDU1ZCb2R5KGxpbmVzOiBzdHJpbmdbXSk6IFByb2Nlc3NMaW5lUmVzdWx0W10ge1xuICAgIGlmICh0aGlzLnBhcmFtcy5vdXRwdXQgPT09IFwibGluZVwiKSB7XG4gICAgICByZXR1cm4gbGluZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucm93U3BsaXQucGFyc2VNdWx0aUxpbmVzKGxpbmVzKTtcbiAgICAgIHRoaXMucHJlcGVuZExlZnRCdWYoYnVmRnJvbVN0cmluZyhyZXN1bHQucGFydGlhbCkpO1xuICAgICAgaWYgKHRoaXMucGFyYW1zLm91dHB1dCA9PT0gXCJjc3ZcIikge1xuICAgICAgICByZXR1cm4gcmVzdWx0LnJvd3NDZWxscztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBsaW5lVG9Kc29uKHJlc3VsdC5yb3dzQ2VsbHMsIHRoaXMuY29udmVydGVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB2YXIganNvbkFyciA9IGxpbmVzVG9Kc29uKGxpbmVzLmxpbmVzLCBwYXJhbXMsIHRoaXMucmVjb3JkTnVtKTtcbiAgICAvLyB0aGlzLnByb2Nlc3NSZXN1bHQoanNvbkFycik7XG4gICAgLy8gdGhpcy5sYXN0SW5kZXggKz0ganNvbkFyci5sZW5ndGg7XG4gICAgLy8gdGhpcy5yZWNvcmROdW0gKz0ganNvbkFyci5sZW5ndGg7XG4gIH1cblxuICBwcml2YXRlIHByZXBlbmRMZWZ0QnVmKGJ1ZjogQnVmZmVyKSB7XG4gICAgaWYgKGJ1Zikge1xuICAgICAgaWYgKHRoaXMucnVudGltZS5jc3ZMaW5lQnVmZmVyKSB7XG4gICAgICAgIHRoaXMucnVudGltZS5jc3ZMaW5lQnVmZmVyID0gQnVmZmVyLmNvbmNhdChbYnVmLCB0aGlzLnJ1bnRpbWUuY3N2TGluZUJ1ZmZlcl0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ydW50aW1lLmNzdkxpbmVCdWZmZXIgPSBidWY7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cbiAgcHJpdmF0ZSBydW5QcmVMaW5lSG9vayhsaW5lczogc3RyaW5nW10pOiBQPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIG5ldyBQKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHByb2Nlc3NMaW5lSG9vayhsaW5lcywgdGhpcy5ydW50aW1lLCAwLCAoZXJyKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKGxpbmVzKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzTGluZUhvb2sobGluZXM6IHN0cmluZ1tdLCBydW50aW1lOiBQYXJzZVJ1bnRpbWUsIG9mZnNldDogbnVtYmVyLFxuICBjYjogKGVycj8pID0+IHZvaWRcbikge1xuICBpZiAob2Zmc2V0ID49IGxpbmVzLmxlbmd0aCkge1xuICAgIGNiKCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHJ1bnRpbWUucHJlRmlsZUxpbmVIb29rKSB7XG4gICAgICBjb25zdCBsaW5lID0gbGluZXNbb2Zmc2V0XTtcbiAgICAgIGNvbnN0IHJlcyA9IHJ1bnRpbWUucHJlRmlsZUxpbmVIb29rKGxpbmUsIHJ1bnRpbWUucGFyc2VkTGluZU51bWJlciArIG9mZnNldCk7XG4gICAgICBvZmZzZXQrKztcbiAgICAgIGlmIChyZXMgJiYgKHJlcyBhcyBQcm9taXNlTGlrZTxzdHJpbmc+KS50aGVuKSB7XG4gICAgICAgIChyZXMgYXMgUHJvbWlzZUxpa2U8c3RyaW5nPikudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICBsaW5lc1tvZmZzZXQgLSAxXSA9IHZhbHVlO1xuICAgICAgICAgIHByb2Nlc3NMaW5lSG9vayhsaW5lcywgcnVudGltZSwgb2Zmc2V0LCBjYik7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGluZXNbb2Zmc2V0IC0gMV0gPSByZXMgYXMgc3RyaW5nO1xuICAgICAgICB3aGlsZSAob2Zmc2V0IDwgbGluZXMubGVuZ3RoKSB7XG4gICAgICAgICAgbGluZXNbb2Zmc2V0XSA9IHJ1bnRpbWUucHJlRmlsZUxpbmVIb29rKGxpbmVzW29mZnNldF0sIHJ1bnRpbWUucGFyc2VkTGluZU51bWJlciArIG9mZnNldCkgYXMgc3RyaW5nO1xuICAgICAgICAgIG9mZnNldCsrO1xuICAgICAgICB9XG4gICAgICAgIGNiKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNiKCk7XG4gICAgfVxuICB9XG59Il19 \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/220d4ea980d1b3641219c9c350ef34f7c2da2287e3d58928ceb5b83feb3b528b.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/220d4ea980d1b3641219c9c350ef34f7c2da2287e3d58928ceb5b83feb3b528b.js deleted file mode 100644 index 15fd63f..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/220d4ea980d1b3641219c9c350ef34f7c2da2287e3d58928ceb5b83feb3b528b.js +++ /dev/null @@ -1,43 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -function mergeParams(params) { - var defaultParam = { - delimiter: ',', - ignoreColumns: undefined, - includeColumns: undefined, - quote: '"', - trim: true, - checkType: false, - ignoreEmpty: false, - // fork: false, - noheader: false, - headers: undefined, - flatKeys: false, - maxRowLength: 0, - checkColumn: false, - escape: '"', - colParser: {}, - eol: undefined, - alwaysSplitAtEOL: false, - output: "json", - nullObject: false, - downstreamFormat: "line", - needEmitAll: true - }; - if (!params) { - params = {}; - } - for (var key in params) { - if (params.hasOwnProperty(key)) { - if (Array.isArray(params[key])) { - defaultParam[key] = [].concat(params[key]); - } - else { - defaultParam[key] = params[key]; - } - } - } - return defaultParam; -} -exports.mergeParams = mergeParams; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9QYXJhbWV0ZXJzLnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL1BhcmFtZXRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpR0EscUJBQTRCLE1BQStCO0lBQ3pELElBQU0sWUFBWSxHQUFrQjtRQUNsQyxTQUFTLEVBQUUsR0FBRztRQUNkLGFBQWEsRUFBRSxTQUFTO1FBQ3hCLGNBQWMsRUFBRSxTQUFTO1FBQ3pCLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLElBQUk7UUFDVixTQUFTLEVBQUUsS0FBSztRQUNoQixXQUFXLEVBQUUsS0FBSztRQUNsQixlQUFlO1FBQ2YsUUFBUSxFQUFFLEtBQUs7UUFDZixPQUFPLEVBQUUsU0FBUztRQUNsQixRQUFRLEVBQUUsS0FBSztRQUNmLFlBQVksRUFBRSxDQUFDO1FBQ2YsV0FBVyxFQUFFLEtBQUs7UUFDbEIsTUFBTSxFQUFFLEdBQUc7UUFDWCxTQUFTLEVBQUUsRUFBRTtRQUNiLEdBQUcsRUFBRSxTQUFTO1FBQ2QsZ0JBQWdCLEVBQUUsS0FBSztRQUN2QixNQUFNLEVBQUUsTUFBTTtRQUNkLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLGdCQUFnQixFQUFDLE1BQU07UUFDdkIsV0FBVyxFQUFDLElBQUk7S0FDakIsQ0FBQTtJQUNELElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDWCxNQUFNLEdBQUcsRUFBRSxDQUFDO0tBQ2I7SUFDRCxLQUFLLElBQUksR0FBRyxJQUFJLE1BQU0sRUFBRTtRQUN0QixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUM5QixZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM1QztpQkFBTTtnQkFDTCxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7S0FDRjtJQUNELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFyQ0Qsa0NBcUNDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDU1ZQYXJzZVBhcmFtIHtcbiAgLyoqXG4gICAqICAgZGVsaW1pdGVyIHVzZWQgZm9yIHNlcGVyYXRpbmcgY29sdW1ucy4gVXNlIFwiYXV0b1wiIGlmIGRlbGltaXRlciBpcyB1bmtub3duIGluIGFkdmFuY2UsIGluIHRoaXMgY2FzZSwgZGVsaW1pdGVyIHdpbGwgYmUgYXV0by1kZXRlY3RlZCAoYnkgYmVzdCBhdHRlbXB0KS4gVXNlIGFuIGFycmF5IHRvIGdpdmUgYSBsaXN0IG9mIHBvdGVudGlhbCBkZWxpbWl0ZXJzIGUuZy4gW1wiLFwiLFwifFwiLFwiJFwiXS4gZGVmYXVsdDogXCIsXCJcbiAgICovXG4gIGRlbGltaXRlcjogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8qKlxuICAgKiAgVGhpcyBwYXJhbWV0ZXIgaW5zdHJ1Y3RzIHRoZSBwYXJzZXIgdG8gaWdub3JlIGNvbHVtbnMgYXMgc3BlY2lmaWVkIGJ5IHRoZSByZWd1bGFyIGV4cHJlc3Npb24uIEV4YW1wbGU6IC8obmFtZXxhZ2UpLyB3aWxsIGlnbm9yZSBjb2x1bW5zIHdob3NlIGhlYWRlciBjb250YWlucyBcIm5hbWVcIiBvciBcImFnZVwiXG4gICAqL1xuICBpZ25vcmVDb2x1bW5zPzogUmVnRXhwO1xuICAvKipcbiAgICogIFRoaXMgcGFyYW1ldGVyIGluc3RydWN0cyB0aGUgcGFyc2VyIHRvIGluY2x1ZGUgb25seSB0aG9zZSBjb2x1bW5zIGFzIHNwZWNpZmllZCBieSB0aGUgcmVndWxhciBleHByZXNzaW9uLiBFeGFtcGxlOiAvKG5hbWV8YWdlKS8gd2lsbCBwYXJzZSBhbmQgaW5jbHVkZSBjb2x1bW5zIHdob3NlIGhlYWRlciBjb250YWlucyBcIm5hbWVcIiBvciBcImFnZVwiXG4gICAqL1xuICBpbmNsdWRlQ29sdW1ucz86IFJlZ0V4cDtcbiAgLyoqXG4gICAqICBJZiBhIGNvbHVtbiBjb250YWlucyBkZWxpbWl0ZXIsIGl0IGlzIGFibGUgdG8gdXNlIHF1b3RlIGNoYXJhY3RlciB0byBzdXJyb3VuZCB0aGUgY29sdW1uIGNvbnRlbnQuIGUuZy4gXCJoZWxsbywgd29ybGRcIiB3b250IGJlIHNwbGl0IGludG8gdHdvIGNvbHVtbnMgd2hpbGUgcGFyc2luZy4gU2V0IHRvIFwib2ZmXCIgd2lsbCBpZ25vcmUgYWxsIHF1b3Rlcy4gZGVmYXVsdDogXCIgKGRvdWJsZSBxdW90ZSlcbiAgICovXG4gIHF1b3RlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiAgSW5kaWNhdGUgaWYgcGFyc2VyIHRyaW0gb2ZmIHNwYWNlcyBzdXJyb3VuZGluZyBjb2x1bW4gY29udGVudC4gZS5nLiBcIiBjb250ZW50IFwiIHdpbGwgYmUgdHJpbW1lZCB0byBcImNvbnRlbnRcIi4gRGVmYXVsdDogdHJ1ZVxuICAgKi9cbiAgdHJpbTogYm9vbGVhbjtcbiAgLyoqXG4gICAqICBUaGlzIHBhcmFtZXRlciB0dXJucyBvbiBhbmQgb2ZmIHdoZXRoZXIgY2hlY2sgZmllbGQgdHlwZS4gRGVmYXVsdCBpcyBmYWxzZS4gXG4gICAqL1xuICBjaGVja1R5cGU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiAgSWdub3JlIHRoZSBlbXB0eSB2YWx1ZSBpbiBDU1YgY29sdW1ucy4gSWYgYSBjb2x1bW4gdmFsdWUgaXMgbm90IGdpdmVuLCBzZXQgdGhpcyB0byB0cnVlIHRvIHNraXAgdGhlbS4gRGVmYXVsdDogZmFsc2UuXG4gICAqL1xuICBpZ25vcmVFbXB0eTogYm9vbGVhbjtcbiAgLyoqXG4gICAqICBEZWxlZ2F0ZSBwYXJzaW5nIHdvcmsgdG8gYW5vdGhlciBwcm9jZXNzLlxuICAgKi9cbiAgLy8gZm9yazogYm9vbGVhbjtcbiAgLyoqXG4gICAqICBJbmRpY2F0aW5nIGNzdiBkYXRhIGhhcyBubyBoZWFkZXIgcm93IGFuZCBmaXJzdCByb3cgaXMgZGF0YSByb3cuIERlZmF1bHQgaXMgZmFsc2UuXG4gICAqL1xuICBub2hlYWRlcjogYm9vbGVhbjtcbiAgLyoqXG4gICAqICBBbiBhcnJheSB0byBzcGVjaWZ5IHRoZSBoZWFkZXJzIG9mIENTViBkYXRhLiBJZiAtLW5vaGVhZGVyIGlzIGZhbHNlLCB0aGlzIHZhbHVlIHdpbGwgb3ZlcnJpZGUgQ1NWIGhlYWRlciByb3cuIERlZmF1bHQ6IG51bGwuIEV4YW1wbGU6IFtcIm15IGZpZWxkXCIsXCJuYW1lXCJdLlxuICAgKi9cbiAgaGVhZGVycz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogIERvbid0IGludGVycHJldCBkb3RzICguKSBhbmQgc3F1YXJlIGJyYWNrZXRzIGluIGhlYWRlciBmaWVsZHMgYXMgbmVzdGVkIG9iamVjdCBvciBhcnJheSBpZGVudGlmaWVycyBhdCBhbGwgKHRyZWF0IHRoZW0gbGlrZSByZWd1bGFyIGNoYXJhY3RlcnMgZm9yIEpTT04gZmllbGQgaWRlbnRpZmllcnMpLiBEZWZhdWx0OiBmYWxzZS5cbiAgICovXG4gIGZsYXRLZXlzOiBib29sZWFuO1xuICAvKipcbiAgICogIHRoZSBtYXggY2hhcmFjdGVyIGEgY3N2IHJvdyBjb3VsZCBoYXZlLiAwIG1lYW5zIGluZmluaXRlLiBJZiBtYXggbnVtYmVyIGV4Y2VlZGVkLCBwYXJzZXIgd2lsbCBlbWl0IFwiZXJyb3JcIiBvZiBcInJvd19leGNlZWRcIi4gaWYgYSBwb3NzaWJseSBjb3JydXB0ZWQgY3N2IGRhdGEgcHJvdmlkZWQsIGdpdmUgaXQgYSBudW1iZXIgbGlrZSA2NTUzNSBzbyB0aGUgcGFyc2VyIHdvbnQgY29uc3VtZSBtZW1vcnkuIGRlZmF1bHQ6IDBcbiAgICovXG4gIG1heFJvd0xlbmd0aDogbnVtYmVyO1xuICAvKipcbiAgICogIHdoZXRoZXIgY2hlY2sgY29sdW1uIG51bWJlciBvZiBhIHJvdyBpcyB0aGUgc2FtZSBhcyBoZWFkZXJzLiBJZiBjb2x1bW4gbnVtYmVyIG1pc21hdGNoZWQgaGVhZGVycyBudW1iZXIsIGFuIGVycm9yIG9mIFwibWlzbWF0Y2hlZF9jb2x1bW5cIiB3aWxsIGJlIGVtaXR0ZWQuLiBkZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgY2hlY2tDb2x1bW46IGJvb2xlYW47XG4gIC8qKlxuICAgKiAgZXNjYXBlIGNoYXJhY3RlciB1c2VkIGluIHF1b3RlZCBjb2x1bW4uIERlZmF1bHQgaXMgZG91YmxlIHF1b3RlIChcIikgYWNjb3JkaW5nIHRvIFJGQzQxMDguIENoYW5nZSB0byBiYWNrIHNsYXNoIChcXCkgb3Igb3RoZXIgY2hhcnMgZm9yIHlvdXIgb3duIGNhc2UuXG4gICAqL1xuICBlc2NhcGU6IHN0cmluZztcbiAgLyoqXG4gICAqICAgQWxsb3dzIG92ZXJyaWRlIHBhcnNpbmcgbG9naWMgZm9yIGEgc3BlY2lmaWMgY29sdW1uLiBJdCBhY2NlcHRzIGEgSlNPTiBvYmplY3Qgd2l0aCBmaWVsZHMgbGlrZTogaGVhZE5hbWU6IDxTdHJpbmcgfCBGdW5jdGlvbj4gLiBlLmcuIHtmaWVsZDE6J251bWJlcid9IHdpbGwgdXNlIGJ1aWx0LWluIG51bWJlciBwYXJzZXIgdG8gY29udmVydCB2YWx1ZSBvZiB0aGUgZmllbGQxIGNvbHVtbiB0byBudW1iZXIuIEFub3RoZXIgZXhhbXBsZSB7XCJuYW1lXCI6bmFtZVByb2Nlc3NGdW5jfSB3aWxsIHVzZSBzcGVjaWZpZWQgZnVuY3Rpb24gdG8gcGFyc2UgdGhlIHZhbHVlLlxuICAgKi9cbiAgY29sUGFyc2VyOiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgQ2VsbFBhcnNlciB8IENvbHVtblBhcmFtXG4gIH07XG4gIC8qKlxuICAgKiAgRW5kIG9mIGxpbmUgY2hhcmFjdGVyLiBJZiBvbWl0dGVkLCBwYXJzZXIgd2lsbCBhdHRlbXB0IHRvIHJldHJpZXZlIGl0IGZyb20gdGhlIGZpcnN0IGNodW5rcyBvZiBDU1YgZGF0YVxuICAgKi9cbiAgZW9sPzogc3RyaW5nO1xuICAvKipcbiAgICogIEFsd2F5cyBpbnRlcnByZXQgZWFjaCBsaW5lIChhcyBkZWZpbmVkIGJ5IGVvbCkgYXMgYSByb3cuIFRoaXMgd2lsbCBwcmV2ZW50IGVvbCBjaGFyYWN0ZXJzIGZyb20gYmVpbmcgdXNlZCB3aXRoaW4gYSByb3cgKGV2ZW4gaW5zaWRlIGEgcXVvdGVkIGZpZWxkKS4gRGVmYXVsdCBpcyBmYWxzZS4gQ2hhbmdlIHRvIHRydWUgaWYgeW91IGFyZSBjb25maWRlbnQgbm8gaW5saW5lIGxpbmUgYnJlYWtzIChsaWtlIGxpbmUgYnJlYWsgaW4gYSBjZWxsIHdoaWNoIGhhcyBtdWx0aSBsaW5lIHRleHQpXG4gICAqL1xuICBhbHdheXNTcGxpdEF0RU9MOiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIGZvcm1hdCB0byBiZSBjb252ZXJ0ZWQgdG8uIFwianNvblwiIChkZWZhdWx0KSAtLSBjb252ZXJ0IGNzdiB0byBqc29uLiBcImNzdlwiIC0tIGNvbnZlcnQgY3N2IHRvIGNzdiByb3cgYXJyYXkuIFwibGluZVwiIC0tIGNvbnZlcnQgY3N2IHRvIGNzdiBsaW5lIHN0cmluZyBcbiAgICovXG4gIG91dHB1dDogXCJqc29uXCIgfCBcImNzdlwiIHwgXCJsaW5lXCI7XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgc3RyaW5nIFwibnVsbFwiIHRvIG51bGwgb2JqZWN0IGluIEpTT04gb3V0cHV0cy4gRGVmYXVsdCBpcyBmYWxzZS5cbiAgICovXG4gIG51bGxPYmplY3Q6Ym9vbGVhbjtcbiAgLyoqXG4gICAqIERlZmluZSB0aGUgZm9ybWF0IHJlcXVpcmVkIGJ5IGRvd25zdHJlYW0gKHRoaXMgcGFyYW1ldGVyIGRvZXMgbm90IHdvcmsgaWYgb2JqZWN0TW9kZSBpcyBvbikuIGBsaW5lYCAtLSBqc29uIGlzIGVtaXR0ZWQgaW4gYSBzaW5nbGUgbGluZSBzZXBhcmF0ZWQgYnkgYSBsaW5lIGJyZWFrZSBsaWtlIFwianNvbjFcXG5qc29uMlwiIC4gYGFycmF5YCAtLSBkb3duc3RyZWFtIHJlcXVpcmVzIGFycmF5IGZvcm1hdCBsaWtlIFwiW2pzb24xLGpzb24yXVwiLiBEZWZhdWx0IGlzIGxpbmUuXG4gICAqL1xuICBkb3duc3RyZWFtRm9ybWF0OiBcImxpbmVcIiB8IFwiYXJyYXlcIjtcbiAgLyoqXG4gICAqIERlZmluZSB3aGV0aGVyIC50aGVuKGNhbGxiYWNrKSByZXR1cm5zIGFsbCBKU09OIGRhdGEgaW4gaXRzIGNhbGxiYWNrLiBEZWZhdWx0IGlzIHRydWUuIENoYW5nZSB0byBmYWxzZSB0byBzYXZlIG1lbW9yeSBpZiBzdWJzY3JpYmluZyBqc29uIGxpbmVzLlxuICAgKi9cbiAgbmVlZEVtaXRBbGw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIENlbGxQYXJzZXIgPSAoaXRlbTogc3RyaW5nLCBoZWFkOiBzdHJpbmcsIHJlc3VsdFJvdzogYW55LCByb3c6IHN0cmluZ1tdLCBjb2x1bW5JbmRleDogbnVtYmVyKSA9PiBhbnk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uUGFyYW0ge1xuICBmbGF0PzogYm9vbGVhbjtcbiAgY2VsbFBhcnNlcj86IHN0cmluZyB8IENlbGxQYXJzZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVBhcmFtcyhwYXJhbXM/OiBQYXJ0aWFsPENTVlBhcnNlUGFyYW0+KTogQ1NWUGFyc2VQYXJhbSB7XG4gIGNvbnN0IGRlZmF1bHRQYXJhbTogQ1NWUGFyc2VQYXJhbSA9IHtcbiAgICBkZWxpbWl0ZXI6ICcsJyxcbiAgICBpZ25vcmVDb2x1bW5zOiB1bmRlZmluZWQsXG4gICAgaW5jbHVkZUNvbHVtbnM6IHVuZGVmaW5lZCxcbiAgICBxdW90ZTogJ1wiJyxcbiAgICB0cmltOiB0cnVlLFxuICAgIGNoZWNrVHlwZTogZmFsc2UsXG4gICAgaWdub3JlRW1wdHk6IGZhbHNlLFxuICAgIC8vIGZvcms6IGZhbHNlLFxuICAgIG5vaGVhZGVyOiBmYWxzZSxcbiAgICBoZWFkZXJzOiB1bmRlZmluZWQsXG4gICAgZmxhdEtleXM6IGZhbHNlLFxuICAgIG1heFJvd0xlbmd0aDogMCxcbiAgICBjaGVja0NvbHVtbjogZmFsc2UsXG4gICAgZXNjYXBlOiAnXCInLFxuICAgIGNvbFBhcnNlcjoge30sXG4gICAgZW9sOiB1bmRlZmluZWQsXG4gICAgYWx3YXlzU3BsaXRBdEVPTDogZmFsc2UsXG4gICAgb3V0cHV0OiBcImpzb25cIixcbiAgICBudWxsT2JqZWN0OiBmYWxzZSxcbiAgICBkb3duc3RyZWFtRm9ybWF0OlwibGluZVwiLFxuICAgIG5lZWRFbWl0QWxsOnRydWVcbiAgfVxuICBpZiAoIXBhcmFtcykge1xuICAgIHBhcmFtcyA9IHt9O1xuICB9XG4gIGZvciAobGV0IGtleSBpbiBwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHBhcmFtc1trZXldKSkge1xuICAgICAgICBkZWZhdWx0UGFyYW1ba2V5XSA9IFtdLmNvbmNhdChwYXJhbXNba2V5XSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZhdWx0UGFyYW1ba2V5XSA9IHBhcmFtc1trZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGVmYXVsdFBhcmFtO1xufVxuXG4iXX0= \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/2a9bafe9fbe95ecf89f636e4ef23cb6f79647e7f5e59dce04654581288e7e3e7.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/2a9bafe9fbe95ecf89f636e4ef23cb6f79647e7f5e59dce04654581288e7e3e7.js deleted file mode 100644 index 23abfab..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/2a9bafe9fbe95ecf89f636e4ef23cb6f79647e7f5e59dce04654581288e7e3e7.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var Processor = /** @class */ (function () { - function Processor(converter) { - this.converter = converter; - this.params = converter.parseParam; - this.runtime = converter.parseRuntime; - } - return Processor; -}()); -exports.Processor = Processor; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9Qcm9jZXNzb3IudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvUHJvY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUE7SUFHRSxtQkFBc0IsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDO0lBQ3hDLENBQUM7SUFJSCxnQkFBQztBQUFELENBQUMsQUFWRCxJQVVDO0FBVnFCLDhCQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udmVydGVyIH0gZnJvbSBcIi4vQ29udmVydGVyXCI7XG5pbXBvcnQgUCBmcm9tIFwiYmx1ZWJpcmRcIjtcbmltcG9ydCB7IEpTT05SZXN1bHQgfSBmcm9tIFwiLi9saW5lVG9Kc29uXCI7XG5pbXBvcnQgeyBDU1ZQYXJzZVBhcmFtIH0gZnJvbSBcIi4vUGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgUGFyc2VSdW50aW1lIH0gZnJvbSBcIi4vUGFyc2VSdW50aW1lXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQcm9jZXNzb3Ige1xuICBwcm90ZWN0ZWQgcGFyYW1zOiBDU1ZQYXJzZVBhcmFtO1xuICBwcm90ZWN0ZWQgcnVudGltZTogUGFyc2VSdW50aW1lO1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY29udmVydGVyOiBDb252ZXJ0ZXIpIHtcbiAgICB0aGlzLnBhcmFtcyA9IGNvbnZlcnRlci5wYXJzZVBhcmFtO1xuICAgIHRoaXMucnVudGltZSA9IGNvbnZlcnRlci5wYXJzZVJ1bnRpbWU7XG4gIH1cbiAgYWJzdHJhY3QgcHJvY2VzcyhjaHVuazogQnVmZmVyLGZpbmFsQ2h1bms/OmJvb2xlYW4pOiBQPFByb2Nlc3NMaW5lUmVzdWx0W10+XG4gIGFic3RyYWN0IGRlc3Ryb3koKTpQPHZvaWQ+O1xuICBhYnN0cmFjdCBmbHVzaCgpOiBQPFByb2Nlc3NMaW5lUmVzdWx0W10+O1xufVxuZXhwb3J0IHR5cGUgUHJvY2Vzc0xpbmVSZXN1bHQgPSBzdHJpbmcgfCBzdHJpbmdbXSB8IEpTT05SZXN1bHQ7XG4iXX0= \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/35eb90faf3bc35f59e53824803623baabb47d90efcb26810c79a570fed5ad880.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/35eb90faf3bc35f59e53824803623baabb47d90efcb26810c79a570fed5ad880.js deleted file mode 100644 index aec3603..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/35eb90faf3bc35f59e53824803623baabb47d90efcb26810c79a570fed5ad880.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//return first eol found from a data chunk. -function default_1(data, param) { - if (!param.eol && data) { - for (var i = 0, len = data.length; i < len; i++) { - if (data[i] === "\r") { - if (data[i + 1] === "\n") { - param.eol = "\r\n"; - break; - } - else if (data[i + 1]) { - param.eol = "\r"; - break; - } - } - else if (data[i] === "\n") { - param.eol = "\n"; - break; - } - } - } - return param.eol || "\n"; -} -exports.default = default_1; -; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9nZXRFb2wudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvZ2V0RW9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsMkNBQTJDO0FBQzNDLG1CQUF5QixJQUFZLEVBQUUsS0FBbUI7SUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFO1FBQ3RCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDL0MsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUNwQixJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO29CQUN4QixLQUFLLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQztvQkFDbkIsTUFBTTtpQkFDUDtxQkFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQ3RCLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO29CQUNqQixNQUFNO2lCQUNQO2FBQ0Y7aUJBQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUMzQixLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztnQkFDakIsTUFBTTthQUNQO1NBQ0Y7S0FDRjtJQUNELE9BQU8sS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUM7QUFDM0IsQ0FBQztBQWxCRCw0QkFrQkM7QUFBQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFyc2VSdW50aW1lIH0gZnJvbSBcIi4vUGFyc2VSdW50aW1lXCI7XG4vL3JldHVybiBmaXJzdCBlb2wgZm91bmQgZnJvbSBhIGRhdGEgY2h1bmsuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoZGF0YTogc3RyaW5nLCBwYXJhbTogUGFyc2VSdW50aW1lKTogc3RyaW5nIHtcbiAgaWYgKCFwYXJhbS5lb2wgJiYgZGF0YSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBkYXRhLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBpZiAoZGF0YVtpXSA9PT0gXCJcXHJcIikge1xuICAgICAgICBpZiAoZGF0YVtpICsgMV0gPT09IFwiXFxuXCIpIHtcbiAgICAgICAgICBwYXJhbS5lb2wgPSBcIlxcclxcblwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGFbaSArIDFdKSB7XG4gICAgICAgICAgcGFyYW0uZW9sID0gXCJcXHJcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBcbiAgICAgIH0gZWxzZSBpZiAoZGF0YVtpXSA9PT0gXCJcXG5cIikge1xuICAgICAgICBwYXJhbS5lb2wgPSBcIlxcblwiO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhcmFtLmVvbCB8fCBcIlxcblwiO1xufTtcbiJdfQ== \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/5b7b6cc115cc8559849a34561c82531410ecb53ccdbe486e410336329db2fdb4.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/5b7b6cc115cc8559849a34561c82531410ecb53ccdbe486e410336329db2fdb4.js deleted file mode 100644 index 7315aa7..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/5b7b6cc115cc8559849a34561c82531410ecb53ccdbe486e410336329db2fdb4.js +++ /dev/null @@ -1,131 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var rowSplit_1 = require("./rowSplit"); -var Converter_1 = require("./Converter"); -var assert = require("assert"); -describe("Test delimiters", function () { - var getDelimiter = function (str, opt) { - return rowSplit_1.RowSplit.prototype["getDelimiter"].call({ - conv: { - parseParam: { - delimiter: opt.delimiter - } - } - }, str); - }; - it("should return the explicitly specified delimiter", function () { - var delimiter = ";"; - var rowStr = "a;b;c"; - var returnedDelimiter = getDelimiter(rowStr, { delimiter: ";" }); - assert.equal(returnedDelimiter, delimiter); - }); - it("should return the autodetected delimiter if 'auto' specified", function () { - var rowStr = "a;b;c"; - var returnedDelimiter = getDelimiter(rowStr, { delimiter: "auto" }); - assert(returnedDelimiter === ";"); - }); - it("should return the ',' delimiter if delimiter cannot be specified, in case of 'auto'", function () { - var rowStr = "abc"; - var returnedDelimiter = getDelimiter(rowStr, { delimiter: "auto" }); - assert(returnedDelimiter === ","); - }); - it("should accetp an array with potential delimiters", function () { - var rowStr = "a$b$c"; - var returnedDelimiter = getDelimiter(rowStr, { delimiter: [",", ";", "$"] }); - assert(returnedDelimiter === '$'); - }); -}); -describe("ParseMultiLine function", function () { - var rowSplit = new rowSplit_1.RowSplit(new Converter_1.Converter()); - var func = function (lines) { - return rowSplit.parseMultiLines(lines); - }; - it("should convert lines to csv lines", function () { - var lines = [ - "a,b,c,d", - "hello,world,csvtojson,abc", - "1,2,3,4" - ]; - var res = func(lines); - assert.equal(res.rowsCells.length, 3); - assert.equal(res.partial, ""); - }); - it("should process line breaks", function () { - var lines = [ - "a,b,c", - '15",hello,"ab', - "cde\"", - "\"b\"\"b\",cc,dd" - ]; - var res = func(lines); - assert.equal(res.rowsCells.length, 3); - assert.equal(res.rowsCells[1][0], "15\""); - assert.equal(res.rowsCells[1][2], "ab\ncde"); - assert.equal(res.rowsCells[2][0], "b\"b"); - assert.equal(res.partial, ""); - }); - it("should return partial if line not closed", function () { - var lines = [ - "a,b,c", - '15",hello,"ab', - "d,e,f" - ]; - var res = func(lines); - assert.equal(res.rowsCells.length, 1); - assert.equal(res.partial, "15\",hello,\"ab\nd,e,f\n"); - }); -}); -describe("RowSplit.parse function", function () { - var rowSplit = new rowSplit_1.RowSplit(new Converter_1.Converter()); - var func = function (str) { - return rowSplit.parse(str); - }; - it("should split complete csv line", function () { - var str = "hello,world,csvtojson,awesome"; - var res = func(str); - assert.equal(res.cells.length, 4); - assert.equal(res.closed, true); - }); - it("should split incomplete csv line", function () { - var str = "hello,world,\"csvtojson,awesome"; - var res = func(str); - assert.equal(res.closed, false); - }); - it("should allow multiple line", function () { - var str = "\"he\"llo\",world,\"csvtojson,a\"\nwesome\""; - var res = func(str); - assert.equal(res.closed, true); - assert.equal(res.cells[2], 'csvtojson,a"\nwesome'); - }); - it("should allow blank quotes", function () { - var data = "a|^^|^b^"; - var rowSplit = new rowSplit_1.RowSplit(new Converter_1.Converter({ - delimiter: '|', - quote: '^', - noheader: true - })); - var res = rowSplit.parse(data); - assert.equal(res.cells[1], ""); - }); - it("should allow blank quotes in quotes", function () { - var data = 'a,"hello,this,"", test"'; - var rowSplit = new rowSplit_1.RowSplit(new Converter_1.Converter({ - noheader: true - })); - var res = rowSplit.parse(data); - assert.equal(res.cells[1], 'hello,this,", test'); - }); - it("should smart detect if an initial quote is only part of value ", function () { - var data = '"Weight" (kg),Error code,"Height" (m)'; - var rowSplit = new rowSplit_1.RowSplit(new Converter_1.Converter({ - noheader: true - })); - var res = rowSplit.parse(data); - assert.equal(res.cells.length, 3); - assert(res.closed); - assert.equal(res.cells[0], '"Weight" (kg)'); - assert.equal(res.cells[1], 'Error code'); - assert.equal(res.cells[2], '"Height" (m)'); - }); -}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9yb3dTcGxpdC50ZXN0LnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL3Jvd1NwbGl0LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1Q0FBeUU7QUFDekUseUNBQXdDO0FBQ3hDLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVqQyxRQUFRLENBQUMsaUJBQWlCLEVBQUU7SUFDMUIsSUFBTSxZQUFZLEdBQUcsVUFBQyxHQUFHLEVBQUUsR0FBcUM7UUFDOUQsT0FBTyxtQkFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDN0MsSUFBSSxFQUFFO2dCQUNKLFVBQVUsRUFBRTtvQkFDVixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7aUJBQ3pCO2FBQ0Y7U0FDRixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQyxDQUFBO0lBRUQsRUFBRSxDQUFDLGtEQUFrRCxFQUFFO1FBQ3JELElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNwQixJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDckIsSUFBSSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDakUsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw4REFBOEQsRUFBRTtRQUNqRSxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDckIsSUFBSSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEUsTUFBTSxDQUFDLGlCQUFpQixLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHFGQUFxRixFQUFFO1FBQ3hGLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNwRSxNQUFNLENBQUMsaUJBQWlCLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsa0RBQWtELEVBQUU7UUFDckQsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDO1FBQ3JCLElBQUksaUJBQWlCLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sQ0FBQyxpQkFBaUIsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLHlCQUF5QixFQUFFO0lBQ2xDLElBQU0sUUFBUSxHQUFHLElBQUksbUJBQVEsQ0FBQyxJQUFJLHFCQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLElBQU0sSUFBSSxHQUFHLFVBQUMsS0FBZTtRQUMzQixPQUFPLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUFBO0lBQ0QsRUFBRSxDQUFDLG1DQUFtQyxFQUFFO1FBQ3RDLElBQUksS0FBSyxHQUFHO1lBQ1YsU0FBUztZQUNULDJCQUEyQjtZQUMzQixTQUFTO1NBQ1YsQ0FBQztRQUNGLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0QkFBNEIsRUFBRTtRQUMvQixJQUFJLEtBQUssR0FBRztZQUNWLE9BQU87WUFDUCxlQUFlO1lBQ2YsT0FBTztZQUNQLGtCQUFrQjtTQUNuQixDQUFDO1FBQ0YsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM3QyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDBDQUEwQyxFQUFFO1FBQzdDLElBQUksS0FBSyxHQUFHO1lBQ1YsT0FBTztZQUNQLGVBQWU7WUFDZixPQUFPO1NBQ1IsQ0FBQztRQUNGLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0lBQ3hELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFRLENBQUMseUJBQXlCLEVBQUU7SUFDbEMsSUFBTSxRQUFRLEdBQUcsSUFBSSxtQkFBUSxDQUFDLElBQUkscUJBQVMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBTSxJQUFJLEdBQUcsVUFBQyxHQUFHO1FBQ2YsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUMsQ0FBQTtJQUNELEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBRTtRQUNuQyxJQUFJLEdBQUcsR0FBRywrQkFBK0IsQ0FBQztRQUMxQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsa0NBQWtDLEVBQUU7UUFDckMsSUFBSSxHQUFHLEdBQUcsaUNBQWlDLENBQUM7UUFDNUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0QkFBNEIsRUFBRTtRQUMvQixJQUFJLEdBQUcsR0FBRyw2Q0FBNkMsQ0FBQztRQUN4RCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBQ0gsRUFBRSxDQUFDLDJCQUEyQixFQUFFO1FBQzlCLElBQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQztRQUV4QixJQUFNLFFBQVEsR0FBRyxJQUFJLG1CQUFRLENBQUMsSUFBSSxxQkFBUyxDQUFDO1lBQzFDLFNBQVMsRUFBRSxHQUFHO1lBQ2QsS0FBSyxFQUFFLEdBQUc7WUFDVixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUE7SUFDRixFQUFFLENBQUMscUNBQXFDLEVBQUU7UUFDeEMsSUFBTSxJQUFJLEdBQUcseUJBQXlCLENBQUM7UUFFdkMsSUFBTSxRQUFRLEdBQUcsSUFBSSxtQkFBUSxDQUFDLElBQUkscUJBQVMsQ0FBQztZQUMxQyxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQyxnRUFBZ0UsRUFBRTtRQUNuRSxJQUFNLElBQUksR0FBRyx1Q0FBdUMsQ0FBQztRQUNyRCxJQUFNLFFBQVEsR0FBRyxJQUFJLG1CQUFRLENBQUMsSUFBSSxxQkFBUyxDQUFDO1lBQzFDLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDLENBQUM7UUFDSixJQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxjQUFjLENBQUMsQ0FBQztJQUU1QyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm93U3BsaXQsIE11bHRpcGxlUm93UmVzdWx0LCBSb3dTcGxpdFJlc3VsdCB9IGZyb20gXCIuL3Jvd1NwbGl0XCI7XG5pbXBvcnQgeyBDb252ZXJ0ZXIgfSBmcm9tIFwiLi9Db252ZXJ0ZXJcIjtcbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoXCJhc3NlcnRcIik7XG5cbmRlc2NyaWJlKFwiVGVzdCBkZWxpbWl0ZXJzXCIsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZ2V0RGVsaW1pdGVyID0gKHN0ciwgb3B0OiB7IGRlbGltaXRlcjogc3RyaW5nIHwgc3RyaW5nW10gfSk6IHN0cmluZyA9PiB7XG4gICAgcmV0dXJuIFJvd1NwbGl0LnByb3RvdHlwZVtcImdldERlbGltaXRlclwiXS5jYWxsKHtcbiAgICAgIGNvbnY6IHtcbiAgICAgICAgcGFyc2VQYXJhbToge1xuICAgICAgICAgIGRlbGltaXRlcjogb3B0LmRlbGltaXRlclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgc3RyKTtcbiAgfVxuXG4gIGl0KFwic2hvdWxkIHJldHVybiB0aGUgZXhwbGljaXRseSBzcGVjaWZpZWQgZGVsaW1pdGVyXCIsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZGVsaW1pdGVyID0gXCI7XCI7XG4gICAgdmFyIHJvd1N0ciA9IFwiYTtiO2NcIjtcbiAgICB2YXIgcmV0dXJuZWREZWxpbWl0ZXIgPSBnZXREZWxpbWl0ZXIocm93U3RyLCB7IGRlbGltaXRlcjogXCI7XCIgfSk7XG4gICAgYXNzZXJ0LmVxdWFsKHJldHVybmVkRGVsaW1pdGVyLCBkZWxpbWl0ZXIpO1xuICB9KTtcblxuICBpdChcInNob3VsZCByZXR1cm4gdGhlIGF1dG9kZXRlY3RlZCBkZWxpbWl0ZXIgaWYgJ2F1dG8nIHNwZWNpZmllZFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJvd1N0ciA9IFwiYTtiO2NcIjtcbiAgICB2YXIgcmV0dXJuZWREZWxpbWl0ZXIgPSBnZXREZWxpbWl0ZXIocm93U3RyLCB7IGRlbGltaXRlcjogXCJhdXRvXCIgfSk7XG4gICAgYXNzZXJ0KHJldHVybmVkRGVsaW1pdGVyID09PSBcIjtcIik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHJldHVybiB0aGUgJywnIGRlbGltaXRlciBpZiBkZWxpbWl0ZXIgY2Fubm90IGJlIHNwZWNpZmllZCwgaW4gY2FzZSBvZiAnYXV0bydcIiwgZnVuY3Rpb24gKCkge1xuICAgIHZhciByb3dTdHIgPSBcImFiY1wiO1xuICAgIHZhciByZXR1cm5lZERlbGltaXRlciA9IGdldERlbGltaXRlcihyb3dTdHIsIHsgZGVsaW1pdGVyOiBcImF1dG9cIiB9KTtcbiAgICBhc3NlcnQocmV0dXJuZWREZWxpbWl0ZXIgPT09IFwiLFwiKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgYWNjZXRwIGFuIGFycmF5IHdpdGggcG90ZW50aWFsIGRlbGltaXRlcnNcIiwgZnVuY3Rpb24gKCkge1xuICAgIHZhciByb3dTdHIgPSBcImEkYiRjXCI7XG4gICAgdmFyIHJldHVybmVkRGVsaW1pdGVyID0gZ2V0RGVsaW1pdGVyKHJvd1N0ciwgeyBkZWxpbWl0ZXI6IFtcIixcIiwgXCI7XCIsIFwiJFwiXSB9KTtcbiAgICBhc3NlcnQocmV0dXJuZWREZWxpbWl0ZXIgPT09ICckJyk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiUGFyc2VNdWx0aUxpbmUgZnVuY3Rpb25cIiwgZnVuY3Rpb24gKCkge1xuICBjb25zdCByb3dTcGxpdCA9IG5ldyBSb3dTcGxpdChuZXcgQ29udmVydGVyKCkpO1xuICBjb25zdCBmdW5jID0gKGxpbmVzOiBzdHJpbmdbXSk6IE11bHRpcGxlUm93UmVzdWx0ID0+IHtcbiAgICByZXR1cm4gcm93U3BsaXQucGFyc2VNdWx0aUxpbmVzKGxpbmVzKTtcbiAgfVxuICBpdChcInNob3VsZCBjb252ZXJ0IGxpbmVzIHRvIGNzdiBsaW5lc1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxpbmVzID0gW1xuICAgICAgXCJhLGIsYyxkXCIsXG4gICAgICBcImhlbGxvLHdvcmxkLGNzdnRvanNvbixhYmNcIixcbiAgICAgIFwiMSwyLDMsNFwiXG4gICAgXTtcbiAgICB2YXIgcmVzID0gZnVuYyhsaW5lcyk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5yb3dzQ2VsbHMubGVuZ3RoLCAzKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLnBhcnRpYWwsIFwiXCIpO1xuICB9KTtcblxuICBpdChcInNob3VsZCBwcm9jZXNzIGxpbmUgYnJlYWtzXCIsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGluZXMgPSBbXG4gICAgICBcImEsYixjXCIsXG4gICAgICAnMTVcIixoZWxsbyxcImFiJyxcbiAgICAgIFwiY2RlXFxcIlwiLFxuICAgICAgXCJcXFwiYlxcXCJcXFwiYlxcXCIsY2MsZGRcIlxuICAgIF07XG4gICAgdmFyIHJlcyA9IGZ1bmMobGluZXMpO1xuICAgIGFzc2VydC5lcXVhbChyZXMucm93c0NlbGxzLmxlbmd0aCwgMyk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5yb3dzQ2VsbHNbMV1bMF0sIFwiMTVcXFwiXCIpO1xuICAgIGFzc2VydC5lcXVhbChyZXMucm93c0NlbGxzWzFdWzJdLCBcImFiXFxuY2RlXCIpO1xuICAgIGFzc2VydC5lcXVhbChyZXMucm93c0NlbGxzWzJdWzBdLCBcImJcXFwiYlwiKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLnBhcnRpYWwsIFwiXCIpO1xuICB9KTtcblxuICBpdChcInNob3VsZCByZXR1cm4gcGFydGlhbCBpZiBsaW5lIG5vdCBjbG9zZWRcIiwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBsaW5lcyA9IFtcbiAgICAgIFwiYSxiLGNcIixcbiAgICAgICcxNVwiLGhlbGxvLFwiYWInLFxuICAgICAgXCJkLGUsZlwiXG4gICAgXTtcbiAgICB2YXIgcmVzID0gZnVuYyhsaW5lcyk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5yb3dzQ2VsbHMubGVuZ3RoLCAxKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLnBhcnRpYWwsIFwiMTVcXFwiLGhlbGxvLFxcXCJhYlxcbmQsZSxmXFxuXCIpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIlJvd1NwbGl0LnBhcnNlIGZ1bmN0aW9uXCIsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgcm93U3BsaXQgPSBuZXcgUm93U3BsaXQobmV3IENvbnZlcnRlcigpKTtcbiAgY29uc3QgZnVuYyA9IChzdHIpOiBSb3dTcGxpdFJlc3VsdCA9PiB7XG4gICAgcmV0dXJuIHJvd1NwbGl0LnBhcnNlKHN0cik7XG4gIH1cbiAgaXQoXCJzaG91bGQgc3BsaXQgY29tcGxldGUgY3N2IGxpbmVcIiwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdHIgPSBcImhlbGxvLHdvcmxkLGNzdnRvanNvbixhd2Vzb21lXCI7XG4gICAgdmFyIHJlcyA9IGZ1bmMoc3RyKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLmNlbGxzLmxlbmd0aCwgNCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5jbG9zZWQsIHRydWUpO1xuICB9KTtcblxuICBpdChcInNob3VsZCBzcGxpdCBpbmNvbXBsZXRlIGNzdiBsaW5lXCIsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc3RyID0gXCJoZWxsbyx3b3JsZCxcXFwiY3N2dG9qc29uLGF3ZXNvbWVcIjtcbiAgICB2YXIgcmVzID0gZnVuYyhzdHIpO1xuICAgIGFzc2VydC5lcXVhbChyZXMuY2xvc2VkLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGFsbG93IG11bHRpcGxlIGxpbmVcIiwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdHIgPSBcIlxcXCJoZVxcXCJsbG9cXFwiLHdvcmxkLFxcXCJjc3Z0b2pzb24sYVxcXCJcXG53ZXNvbWVcXFwiXCI7XG4gICAgdmFyIHJlcyA9IGZ1bmMoc3RyKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLmNsb3NlZCwgdHJ1ZSk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5jZWxsc1syXSwgJ2NzdnRvanNvbixhXCJcXG53ZXNvbWUnKTtcbiAgfSk7XG4gIGl0KFwic2hvdWxkIGFsbG93IGJsYW5rIHF1b3Rlc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IFwiYXxeXnxeYl5cIjtcblxuICAgIGNvbnN0IHJvd1NwbGl0ID0gbmV3IFJvd1NwbGl0KG5ldyBDb252ZXJ0ZXIoe1xuICAgICAgZGVsaW1pdGVyOiAnfCcsXG4gICAgICBxdW90ZTogJ14nLFxuICAgICAgbm9oZWFkZXI6IHRydWVcbiAgICB9KSk7XG4gICAgY29uc3QgcmVzID0gcm93U3BsaXQucGFyc2UoZGF0YSk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5jZWxsc1sxXSwgXCJcIik7XG4gIH0pXG4gIGl0KFwic2hvdWxkIGFsbG93IGJsYW5rIHF1b3RlcyBpbiBxdW90ZXNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSAnYSxcImhlbGxvLHRoaXMsXCJcIiwgdGVzdFwiJztcblxuICAgIGNvbnN0IHJvd1NwbGl0ID0gbmV3IFJvd1NwbGl0KG5ldyBDb252ZXJ0ZXIoe1xuICAgICAgbm9oZWFkZXI6IHRydWVcbiAgICB9KSk7XG4gICAgY29uc3QgcmVzID0gcm93U3BsaXQucGFyc2UoZGF0YSk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcy5jZWxsc1sxXSwgJ2hlbGxvLHRoaXMsXCIsIHRlc3QnKTtcbiAgfSlcbiAgaXQoXCJzaG91bGQgc21hcnQgZGV0ZWN0IGlmIGFuIGluaXRpYWwgcXVvdGUgaXMgb25seSBwYXJ0IG9mIHZhbHVlIFwiLCAoKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9ICdcIldlaWdodFwiIChrZyksRXJyb3IgY29kZSxcIkhlaWdodFwiIChtKSc7XG4gICAgY29uc3Qgcm93U3BsaXQgPSBuZXcgUm93U3BsaXQobmV3IENvbnZlcnRlcih7XG4gICAgICBub2hlYWRlcjogdHJ1ZVxuICAgIH0pKTtcbiAgICBjb25zdCByZXMgPSByb3dTcGxpdC5wYXJzZShkYXRhKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLmNlbGxzLmxlbmd0aCwgMyk7XG4gICAgYXNzZXJ0KHJlcy5jbG9zZWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXMuY2VsbHNbMF0sJ1wiV2VpZ2h0XCIgKGtnKScpO1xuICAgIGFzc2VydC5lcXVhbChyZXMuY2VsbHNbMV0sJ0Vycm9yIGNvZGUnKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzLmNlbGxzWzJdLCdcIkhlaWdodFwiIChtKScpO1xuICAgIFxuICB9KVxufSk7XG4iXX0= \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/6c7a4bd504b58ba513336814c6fb1a1baa361e29c2df52092099a5376d037cb9.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/6c7a4bd504b58ba513336814c6fb1a1baa361e29c2df52092099a5376d037cb9.js deleted file mode 100644 index 0890a34..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/6c7a4bd504b58ba513336814c6fb1a1baa361e29c2df52092099a5376d037cb9.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var getEol_1 = __importDefault(require("./getEol")); -// const getEol = require("./getEol"); -/** - * convert data chunk to file lines array - * @param {string} data data chunk as utf8 string - * @param {object} param Converter param object - * @return {Object} {lines:[line1,line2...],partial:String} - */ -function stringToLines(data, param) { - var eol = getEol_1.default(data, param); - var lines = data.split(eol); - var partial = lines.pop() || ""; - return { lines: lines, partial: partial }; -} -exports.stringToLines = stringToLines; -; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9maWxlbGluZS50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9maWxlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLG9EQUE4QjtBQUM5QixzQ0FBc0M7QUFDdEM7Ozs7O0dBS0c7QUFDSCx1QkFBOEIsSUFBWSxFQUFFLEtBQW1CO0lBQzdELElBQU0sR0FBRyxHQUFHLGdCQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsSUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDNUMsQ0FBQztBQUxELHNDQUtDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnNlUnVudGltZSB9IGZyb20gXCIuL1BhcnNlUnVudGltZVwiO1xuaW1wb3J0IGdldEVvbCBmcm9tIFwiLi9nZXRFb2xcIjtcbi8vIGNvbnN0IGdldEVvbCA9IHJlcXVpcmUoXCIuL2dldEVvbFwiKTtcbi8qKlxuICogY29udmVydCBkYXRhIGNodW5rIHRvIGZpbGUgbGluZXMgYXJyYXlcbiAqIEBwYXJhbSAge3N0cmluZ30gZGF0YSAgZGF0YSBjaHVuayBhcyB1dGY4IHN0cmluZ1xuICogQHBhcmFtICB7b2JqZWN0fSBwYXJhbSBDb252ZXJ0ZXIgcGFyYW0gb2JqZWN0XG4gKiBAcmV0dXJuIHtPYmplY3R9ICAge2xpbmVzOltsaW5lMSxsaW5lMi4uLl0scGFydGlhbDpTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdUb0xpbmVzKGRhdGE6IHN0cmluZywgcGFyYW06IFBhcnNlUnVudGltZSk6IFN0cmluZ1RvTGluZXNSZXN1bHQge1xuICBjb25zdCBlb2wgPSBnZXRFb2woZGF0YSwgcGFyYW0pO1xuICBjb25zdCBsaW5lcyA9IGRhdGEuc3BsaXQoZW9sKTtcbiAgY29uc3QgcGFydGlhbCA9IGxpbmVzLnBvcCgpIHx8IFwiXCI7XG4gIHJldHVybiB7IGxpbmVzOiBsaW5lcywgcGFydGlhbDogcGFydGlhbCB9O1xufTtcblxuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ1RvTGluZXNSZXN1bHQge1xuICBsaW5lczogRmlsZWxpbmVbXSxcbiAgLyoqXG4gICAqIGxhc3QgbGluZSB3aGljaCBjb3VsZCBiZSBpbmNvbXBsZXRlIGxpbmUuXG4gICAqL1xuICBwYXJ0aWFsOiBzdHJpbmdcbn1cbmV4cG9ydCB0eXBlIEZpbGVsaW5lID0gc3RyaW5nOyJdfQ== \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/83fb32366eeebd3a934318efe8f5c515dd472fccb2f189b66ce7a266fce983f9.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/83fb32366eeebd3a934318efe8f5c515dd472fccb2f189b66ce7a266fce983f9.js deleted file mode 100644 index 0cb0f24..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/83fb32366eeebd3a934318efe8f5c515dd472fccb2f189b66ce7a266fce983f9.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; -var Converter_1 = require("./Converter"); -var helper = function (param, options) { - return new Converter_1.Converter(param, options); -}; -helper["csv"] = helper; -helper["Converter"] = Converter_1.Converter; -module.exports = helper; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9pbmRleC50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEseUNBQXdDO0FBRXhDLElBQU0sTUFBTSxHQUFHLFVBQVUsS0FBOEIsRUFBRSxPQUEwQjtJQUNqRixPQUFPLElBQUkscUJBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN2QixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcscUJBQVMsQ0FBQztBQUNoQyxpQkFBUSxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2Zvcm1PcHRpb25zIH0gZnJvbSBcInN0cmVhbVwiO1xuaW1wb3J0IHsgQ1NWUGFyc2VQYXJhbSB9IGZyb20gXCIuL1BhcmFtZXRlcnNcIjtcbmltcG9ydCB7IENvbnZlcnRlciB9IGZyb20gXCIuL0NvbnZlcnRlclwiO1xuXG5jb25zdCBoZWxwZXIgPSBmdW5jdGlvbiAocGFyYW0/OiBQYXJ0aWFsPENTVlBhcnNlUGFyYW0+LCBvcHRpb25zPzogVHJhbnNmb3JtT3B0aW9ucyk6IENvbnZlcnRlciB7XG4gIHJldHVybiBuZXcgQ29udmVydGVyKHBhcmFtLCBvcHRpb25zKTtcbn1cbmhlbHBlcltcImNzdlwiXSA9IGhlbHBlcjtcbmhlbHBlcltcIkNvbnZlcnRlclwiXSA9IENvbnZlcnRlcjtcbmV4cG9ydCA9aGVscGVyO1xuIl19 \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/84e674946fa3a10db018321f519e27e33da138d89fb7c3054fa3b5f0085263e2.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/84e674946fa3a10db018321f519e27e33da138d89fb7c3054fa3b5f0085263e2.js deleted file mode 100644 index e6c7418..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/84e674946fa3a10db018321f519e27e33da138d89fb7c3054fa3b5f0085263e2.js +++ /dev/null @@ -1,193 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var stream_1 = require("stream"); -var Parameters_1 = require("./Parameters"); -var ParseRuntime_1 = require("./ParseRuntime"); -var bluebird_1 = __importDefault(require("bluebird")); -// import { ProcessorFork } from "./ProcessFork"; -var ProcessorLocal_1 = require("./ProcessorLocal"); -var Result_1 = require("./Result"); -var Converter = /** @class */ (function (_super) { - __extends(Converter, _super); - function Converter(param, options) { - if (options === void 0) { options = {}; } - var _this = _super.call(this, options) || this; - _this.options = options; - _this.params = Parameters_1.mergeParams(param); - _this.runtime = ParseRuntime_1.initParseRuntime(_this); - _this.result = new Result_1.Result(_this); - // if (this.params.fork) { - // this.processor = new ProcessorFork(this); - // } else { - _this.processor = new ProcessorLocal_1.ProcessorLocal(_this); - // } - _this.once("error", function (err) { - // console.log("BBB"); - //wait for next cycle to emit the errors. - setImmediate(function () { - _this.result.processError(err); - _this.emit("done", err); - }); - }); - _this.once("done", function () { - _this.processor.destroy(); - }); - return _this; - } - Converter.prototype.preRawData = function (onRawData) { - this.runtime.preRawDataHook = onRawData; - return this; - }; - Converter.prototype.preFileLine = function (onFileLine) { - this.runtime.preFileLineHook = onFileLine; - return this; - }; - Converter.prototype.subscribe = function (onNext, onError, onCompleted) { - this.parseRuntime.subscribe = { - onNext: onNext, - onError: onError, - onCompleted: onCompleted - }; - return this; - }; - Converter.prototype.fromFile = function (filePath, options) { - var _this = this; - var fs = require("fs"); - // var rs = null; - // this.wrapCallback(cb, function () { - // if (rs && rs.destroy) { - // rs.destroy(); - // } - // }); - fs.exists(filePath, function (exist) { - if (exist) { - var rs = fs.createReadStream(filePath, options); - rs.pipe(_this); - } - else { - _this.emit('error', new Error("File does not exist. Check to make sure the file path to your csv is correct.")); - } - }); - return this; - }; - Converter.prototype.fromStream = function (readStream) { - readStream.pipe(this); - return this; - }; - Converter.prototype.fromString = function (csvString) { - var csv = csvString.toString(); - var read = new stream_1.Readable(); - var idx = 0; - read._read = function (size) { - if (idx >= csvString.length) { - this.push(null); - } - else { - var str = csvString.substr(idx, size); - this.push(str); - idx += size; - } - }; - return this.fromStream(read); - }; - Converter.prototype.then = function (onfulfilled, onrejected) { - var _this = this; - return new bluebird_1.default(function (resolve, reject) { - _this.parseRuntime.then = { - onfulfilled: function (value) { - if (onfulfilled) { - resolve(onfulfilled(value)); - } - else { - resolve(value); - } - }, - onrejected: function (err) { - if (onrejected) { - resolve(onrejected(err)); - } - else { - reject(err); - } - } - }; - }); - }; - Object.defineProperty(Converter.prototype, "parseParam", { - get: function () { - return this.params; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Converter.prototype, "parseRuntime", { - get: function () { - return this.runtime; - }, - enumerable: true, - configurable: true - }); - Converter.prototype._transform = function (chunk, encoding, cb) { - var _this = this; - this.processor.process(chunk) - .then(function (result) { - // console.log(result); - if (result.length > 0) { - _this.runtime.started = true; - return _this.result.processResult(result); - } - }) - .then(function () { - _this.emit("drained"); - cb(); - }, function (error) { - _this.runtime.hasError = true; - _this.runtime.error = error; - _this.emit("error", error); - cb(); - }); - }; - Converter.prototype._flush = function (cb) { - var _this = this; - this.processor.flush() - .then(function (data) { - if (data.length > 0) { - return _this.result.processResult(data); - } - }) - .then(function () { - _this.processEnd(cb); - }, function (err) { - _this.emit("error", err); - cb(); - }); - }; - Converter.prototype.processEnd = function (cb) { - this.result.endProcess(); - this.emit("done"); - cb(); - }; - Object.defineProperty(Converter.prototype, "parsedLineNumber", { - get: function () { - return this.runtime.parsedLineNumber; - }, - enumerable: true, - configurable: true - }); - return Converter; -}(stream_1.Transform)); -exports.Converter = Converter; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9Db252ZXJ0ZXIudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvQ29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlDQUErRDtBQUMvRCwyQ0FBMEQ7QUFDMUQsK0NBQWdFO0FBQ2hFLHNEQUF5QjtBQU96QixpREFBaUQ7QUFDakQsbURBQWtEO0FBQ2xELG1DQUFrQztBQU1sQztJQUErQiw2QkFBUztJQXVGdEMsbUJBQVksS0FBOEIsRUFBUyxPQUE4QjtRQUE5Qix3QkFBQSxFQUFBLFlBQThCO1FBQWpGLFlBQ0Usa0JBQU0sT0FBTyxDQUFDLFNBdUJmO1FBeEJrRCxhQUFPLEdBQVAsT0FBTyxDQUF1QjtRQUUvRSxLQUFJLENBQUMsTUFBTSxHQUFHLHdCQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsS0FBSSxDQUFDLE9BQU8sR0FBRywrQkFBZ0IsQ0FBQyxLQUFJLENBQUMsQ0FBQztRQUN0QyxLQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBTSxDQUFDLEtBQUksQ0FBQyxDQUFDO1FBQy9CLDBCQUEwQjtRQUMxQiw4Q0FBOEM7UUFDOUMsV0FBVztRQUNYLEtBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSwrQkFBYyxDQUFDLEtBQUksQ0FBQyxDQUFDO1FBQzFDLElBQUk7UUFDSixLQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFDLEdBQVE7WUFDMUIsc0JBQXNCO1lBQ3RCLHlDQUF5QztZQUN6QyxZQUFZLENBQUM7Z0JBQ1gsS0FBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLEtBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBRUwsQ0FBQyxDQUFDLENBQUM7UUFDSCxLQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoQixLQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFBO1FBRUYsT0FBTyxLQUFJLENBQUM7SUFDZCxDQUFDO0lBOUdELDhCQUFVLEdBQVYsVUFBVyxTQUE2QjtRQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsK0JBQVcsR0FBWCxVQUFZLFVBQStCO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCw2QkFBUyxHQUFULFVBQ0UsTUFBb0UsRUFDcEUsT0FBaUMsRUFDakMsV0FBd0I7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUc7WUFDNUIsTUFBTSxRQUFBO1lBQ04sT0FBTyxTQUFBO1lBQ1AsV0FBVyxhQUFBO1NBQ1osQ0FBQTtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELDRCQUFRLEdBQVIsVUFBUyxRQUFnQixFQUFFLE9BQXFEO1FBQWhGLGlCQWlCQztRQWhCQyxJQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsaUJBQWlCO1FBQ2pCLHNDQUFzQztRQUN0Qyw0QkFBNEI7UUFDNUIsb0JBQW9CO1FBQ3BCLE1BQU07UUFDTixNQUFNO1FBQ04sRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBQyxLQUFLO1lBQ3hCLElBQUksS0FBSyxFQUFFO2dCQUNULElBQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ2xELEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLENBQUM7YUFDZjtpQkFBTTtnQkFDTCxLQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEtBQUssQ0FBQywrRUFBK0UsQ0FBQyxDQUFDLENBQUM7YUFDaEg7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELDhCQUFVLEdBQVYsVUFBVyxVQUFvQjtRQUM3QixVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELDhCQUFVLEdBQVYsVUFBVyxTQUFpQjtRQUMxQixJQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsSUFBTSxJQUFJLEdBQUcsSUFBSSxpQkFBUSxFQUFFLENBQUM7UUFDNUIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLElBQUk7WUFDekIsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNqQjtpQkFBTTtnQkFDTCxJQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDZixHQUFHLElBQUksSUFBSSxDQUFDO2FBQ2I7UUFDSCxDQUFDLENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNELHdCQUFJLEdBQUosVUFBeUMsV0FBZ0UsRUFBRSxVQUE4RDtRQUF6SyxpQkFtQkM7UUFsQkMsT0FBTyxJQUFJLGtCQUFDLENBQUMsVUFBQyxPQUFPLEVBQUUsTUFBTTtZQUMzQixLQUFJLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRztnQkFDdkIsV0FBVyxFQUFFLFVBQUMsS0FBWTtvQkFDeEIsSUFBSSxXQUFXLEVBQUU7d0JBQ2YsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO3FCQUM3Qjt5QkFBTTt3QkFDTCxPQUFPLENBQUMsS0FBWSxDQUFDLENBQUM7cUJBQ3ZCO2dCQUNILENBQUM7Z0JBQ0QsVUFBVSxFQUFFLFVBQUMsR0FBVTtvQkFDckIsSUFBSSxVQUFVLEVBQUU7d0JBQ2QsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3FCQUMxQjt5QkFBTTt3QkFDTCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ2I7Z0JBQ0gsQ0FBQzthQUNGLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxzQkFBVyxpQ0FBVTthQUFyQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQixDQUFDOzs7T0FBQTtJQUNELHNCQUFXLG1DQUFZO2FBQXZCO1lBQ0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3RCLENBQUM7OztPQUFBO0lBOEJELDhCQUFVLEdBQVYsVUFBVyxLQUFVLEVBQUUsUUFBZ0IsRUFBRSxFQUFZO1FBQXJELGlCQW1CQztRQWxCQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7YUFDMUIsSUFBSSxDQUFDLFVBQUMsTUFBTTtZQUNYLHVCQUF1QjtZQUN2QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNyQixLQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBRTVCLE9BQU8sS0FBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDMUM7UUFDSCxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUM7WUFDSixLQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JCLEVBQUUsRUFBRSxDQUFDO1FBQ1AsQ0FBQyxFQUFFLFVBQUMsS0FBSztZQUNQLEtBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUM3QixLQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDM0IsS0FBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUIsRUFBRSxFQUFFLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCwwQkFBTSxHQUFOLFVBQU8sRUFBWTtRQUFuQixpQkFjQztRQWJDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFO2FBQ25CLElBQUksQ0FBQyxVQUFDLElBQUk7WUFDVCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUVuQixPQUFPLEtBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3hDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDO1lBQ0osS0FBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixDQUFDLEVBQUUsVUFBQyxHQUFHO1lBQ0wsS0FBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDeEIsRUFBRSxFQUFFLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFDTyw4QkFBVSxHQUFsQixVQUFtQixFQUFFO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQixFQUFFLEVBQUUsQ0FBQztJQUNQLENBQUM7SUFDRCxzQkFBSSx1Q0FBZ0I7YUFBcEI7WUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDdkMsQ0FBQzs7O09BQUE7SUFDSCxnQkFBQztBQUFELENBQUMsQUEzSkQsQ0FBK0Isa0JBQVMsR0EySnZDO0FBM0pZLDhCQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNmb3JtLCBUcmFuc2Zvcm1PcHRpb25zLCBSZWFkYWJsZSB9IGZyb20gXCJzdHJlYW1cIjtcbmltcG9ydCB7IENTVlBhcnNlUGFyYW0sIG1lcmdlUGFyYW1zIH0gZnJvbSBcIi4vUGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgUGFyc2VSdW50aW1lLCBpbml0UGFyc2VSdW50aW1lIH0gZnJvbSBcIi4vUGFyc2VSdW50aW1lXCI7XG5pbXBvcnQgUCBmcm9tIFwiYmx1ZWJpcmRcIjtcbmltcG9ydCB7IHN0cmluZ1RvTGluZXMgfSBmcm9tIFwiLi9maWxlbGluZVwiO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSBcImxvZGFzaC9tYXBcIjtcbmltcG9ydCB7IFJvd1NwbGl0LCBSb3dTcGxpdFJlc3VsdCB9IGZyb20gXCIuL3Jvd1NwbGl0XCI7XG5pbXBvcnQgZ2V0RW9sIGZyb20gXCIuL2dldEVvbFwiO1xuaW1wb3J0IGxpbmVUb0pzb24sIHsgSlNPTlJlc3VsdCB9IGZyb20gXCIuL2xpbmVUb0pzb25cIjtcbmltcG9ydCB7IFByb2Nlc3NvciwgUHJvY2Vzc0xpbmVSZXN1bHQgfSBmcm9tIFwiLi9Qcm9jZXNzb3JcIjtcbi8vIGltcG9ydCB7IFByb2Nlc3NvckZvcmsgfSBmcm9tIFwiLi9Qcm9jZXNzRm9ya1wiO1xuaW1wb3J0IHsgUHJvY2Vzc29yTG9jYWwgfSBmcm9tIFwiLi9Qcm9jZXNzb3JMb2NhbFwiO1xuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSBcIi4vUmVzdWx0XCI7XG5pbXBvcnQgQ1NWRXJyb3IgZnJvbSBcIi4vQ1NWRXJyb3JcIjtcbmltcG9ydCB7IGJ1ZkZyb21TdHJpbmcgfSBmcm9tIFwiLi91dGlsXCI7XG5cblxuXG5leHBvcnQgY2xhc3MgQ29udmVydGVyIGV4dGVuZHMgVHJhbnNmb3JtIGltcGxlbWVudHMgUHJvbWlzZUxpa2U8YW55W10+IHtcbiAgcHJlUmF3RGF0YShvblJhd0RhdGE6IFByZVJhd0RhdGFDYWxsYmFjayk6IENvbnZlcnRlciB7XG4gICAgdGhpcy5ydW50aW1lLnByZVJhd0RhdGFIb29rID0gb25SYXdEYXRhO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHByZUZpbGVMaW5lKG9uRmlsZUxpbmU6IFByZUZpbGVMaW5lQ2FsbGJhY2spOiBDb252ZXJ0ZXIge1xuICAgIHRoaXMucnVudGltZS5wcmVGaWxlTGluZUhvb2sgPSBvbkZpbGVMaW5lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHN1YnNjcmliZShcbiAgICBvbk5leHQ/OiAoZGF0YTogYW55LCBsaW5lTnVtYmVyOiBudW1iZXIpID0+IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPixcbiAgICBvbkVycm9yPzogKGVycjogQ1NWRXJyb3IpID0+IHZvaWQsXG4gICAgb25Db21wbGV0ZWQ/OiAoKSA9PiB2b2lkKTogQ29udmVydGVyIHtcbiAgICB0aGlzLnBhcnNlUnVudGltZS5zdWJzY3JpYmUgPSB7XG4gICAgICBvbk5leHQsXG4gICAgICBvbkVycm9yLFxuICAgICAgb25Db21wbGV0ZWRcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgZnJvbUZpbGUoZmlsZVBhdGg6IHN0cmluZywgb3B0aW9ucz86IHN0cmluZyB8IENyZWF0ZVJlYWRTdHJlYW1PcHRpb24gfCB1bmRlZmluZWQpOiBDb252ZXJ0ZXIge1xuICAgIGNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xuICAgIC8vIHZhciBycyA9IG51bGw7XG4gICAgLy8gdGhpcy53cmFwQ2FsbGJhY2soY2IsIGZ1bmN0aW9uICgpIHtcbiAgICAvLyAgIGlmIChycyAmJiBycy5kZXN0cm95KSB7XG4gICAgLy8gICAgIHJzLmRlc3Ryb3koKTtcbiAgICAvLyAgIH1cbiAgICAvLyB9KTtcbiAgICBmcy5leGlzdHMoZmlsZVBhdGgsIChleGlzdCkgPT4ge1xuICAgICAgaWYgKGV4aXN0KSB7XG4gICAgICAgIGNvbnN0IHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlUGF0aCwgb3B0aW9ucyk7XG4gICAgICAgIHJzLnBpcGUodGhpcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKFwiRmlsZSBkb2VzIG5vdCBleGlzdC4gQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBmaWxlIHBhdGggdG8geW91ciBjc3YgaXMgY29ycmVjdC5cIikpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGZyb21TdHJlYW0ocmVhZFN0cmVhbTogUmVhZGFibGUpOiBDb252ZXJ0ZXIge1xuICAgIHJlYWRTdHJlYW0ucGlwZSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBmcm9tU3RyaW5nKGNzdlN0cmluZzogc3RyaW5nKTogQ29udmVydGVyIHtcbiAgICBjb25zdCBjc3YgPSBjc3ZTdHJpbmcudG9TdHJpbmcoKTtcbiAgICBjb25zdCByZWFkID0gbmV3IFJlYWRhYmxlKCk7XG4gICAgbGV0IGlkeCA9IDA7XG4gICAgcmVhZC5fcmVhZCA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICBpZiAoaWR4ID49IGNzdlN0cmluZy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5wdXNoKG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RyID0gY3N2U3RyaW5nLnN1YnN0cihpZHgsIHNpemUpO1xuICAgICAgICB0aGlzLnB1c2goc3RyKTtcbiAgICAgICAgaWR4ICs9IHNpemU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZyb21TdHJlYW0ocmVhZCk7XG4gIH1cbiAgdGhlbjxUUmVzdWx0MSA9IGFueVtdLCBUUmVzdWx0MiA9IG5ldmVyPihvbmZ1bGZpbGxlZD86ICh2YWx1ZTogYW55W10pID0+IFRSZXN1bHQxIHwgUHJvbWlzZUxpa2U8VFJlc3VsdDE+LCBvbnJlamVjdGVkPzogKHJlYXNvbjogYW55KSA9PiBUUmVzdWx0MiB8IFByb21pc2VMaWtlPFRSZXN1bHQyPik6IFByb21pc2VMaWtlPFRSZXN1bHQxIHwgVFJlc3VsdDI+IHtcbiAgICByZXR1cm4gbmV3IFAoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5wYXJzZVJ1bnRpbWUudGhlbiA9IHtcbiAgICAgICAgb25mdWxmaWxsZWQ6ICh2YWx1ZTogYW55W10pID0+IHtcbiAgICAgICAgICBpZiAob25mdWxmaWxsZWQpIHtcbiAgICAgICAgICAgIHJlc29sdmUob25mdWxmaWxsZWQodmFsdWUpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZSh2YWx1ZSBhcyBhbnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25yZWplY3RlZDogKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgICBpZiAob25yZWplY3RlZCkge1xuICAgICAgICAgICAgcmVzb2x2ZShvbnJlamVjdGVkKGVycikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBwdWJsaWMgZ2V0IHBhcnNlUGFyYW0oKTogQ1NWUGFyc2VQYXJhbSB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zO1xuICB9XG4gIHB1YmxpYyBnZXQgcGFyc2VSdW50aW1lKCk6IFBhcnNlUnVudGltZSB7XG4gICAgcmV0dXJuIHRoaXMucnVudGltZTtcbiAgfVxuICBwcml2YXRlIHBhcmFtczogQ1NWUGFyc2VQYXJhbTtcbiAgcHJpdmF0ZSBydW50aW1lOiBQYXJzZVJ1bnRpbWU7XG4gIHByaXZhdGUgcHJvY2Vzc29yOiBQcm9jZXNzb3I7XG4gIHByaXZhdGUgcmVzdWx0OiBSZXN1bHQ7XG4gIGNvbnN0cnVjdG9yKHBhcmFtPzogUGFydGlhbDxDU1ZQYXJzZVBhcmFtPiwgcHVibGljIG9wdGlvbnM6IFRyYW5zZm9ybU9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIHRoaXMucGFyYW1zID0gbWVyZ2VQYXJhbXMocGFyYW0pO1xuICAgIHRoaXMucnVudGltZSA9IGluaXRQYXJzZVJ1bnRpbWUodGhpcyk7XG4gICAgdGhpcy5yZXN1bHQgPSBuZXcgUmVzdWx0KHRoaXMpO1xuICAgIC8vIGlmICh0aGlzLnBhcmFtcy5mb3JrKSB7XG4gICAgLy8gICB0aGlzLnByb2Nlc3NvciA9IG5ldyBQcm9jZXNzb3JGb3JrKHRoaXMpO1xuICAgIC8vIH0gZWxzZSB7XG4gICAgdGhpcy5wcm9jZXNzb3IgPSBuZXcgUHJvY2Vzc29yTG9jYWwodGhpcyk7XG4gICAgLy8gfVxuICAgIHRoaXMub25jZShcImVycm9yXCIsIChlcnI6IGFueSkgPT4ge1xuICAgICAgLy8gY29uc29sZS5sb2coXCJCQkJcIik7XG4gICAgICAvL3dhaXQgZm9yIG5leHQgY3ljbGUgdG8gZW1pdCB0aGUgZXJyb3JzLlxuICAgICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcbiAgICAgICAgdGhpcy5yZXN1bHQucHJvY2Vzc0Vycm9yKGVycik7XG4gICAgICAgIHRoaXMuZW1pdChcImRvbmVcIiwgZXJyKTtcbiAgICAgIH0pO1xuXG4gICAgfSk7XG4gICAgdGhpcy5vbmNlKFwiZG9uZVwiLCAoKSA9PiB7XG4gICAgICB0aGlzLnByb2Nlc3Nvci5kZXN0cm95KCk7XG4gICAgfSlcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIF90cmFuc2Zvcm0oY2h1bms6IGFueSwgZW5jb2Rpbmc6IHN0cmluZywgY2I6IEZ1bmN0aW9uKSB7XG4gICAgdGhpcy5wcm9jZXNzb3IucHJvY2VzcyhjaHVuaylcbiAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5ydW50aW1lLnN0YXJ0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0LnByb2Nlc3NSZXN1bHQocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5lbWl0KFwiZHJhaW5lZFwiKTtcbiAgICAgICAgY2IoKTtcbiAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLnJ1bnRpbWUuaGFzRXJyb3IgPSB0cnVlO1xuICAgICAgICB0aGlzLnJ1bnRpbWUuZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgdGhpcy5lbWl0KFwiZXJyb3JcIiwgZXJyb3IpO1xuICAgICAgICBjYigpO1xuICAgICAgfSk7XG4gIH1cbiAgX2ZsdXNoKGNiOiBGdW5jdGlvbikge1xuICAgIHRoaXMucHJvY2Vzc29yLmZsdXNoKClcbiAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcblxuICAgICAgICAgIHJldHVybiB0aGlzLnJlc3VsdC5wcm9jZXNzUmVzdWx0KGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnByb2Nlc3NFbmQoY2IpO1xuICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICB0aGlzLmVtaXQoXCJlcnJvclwiLCBlcnIpO1xuICAgICAgICBjYigpO1xuICAgICAgfSlcbiAgfVxuICBwcml2YXRlIHByb2Nlc3NFbmQoY2IpIHtcbiAgICB0aGlzLnJlc3VsdC5lbmRQcm9jZXNzKCk7XG4gICAgdGhpcy5lbWl0KFwiZG9uZVwiKTtcbiAgICBjYigpO1xuICB9XG4gIGdldCBwYXJzZWRMaW5lTnVtYmVyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucnVudGltZS5wYXJzZWRMaW5lTnVtYmVyO1xuICB9XG59XG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVJlYWRTdHJlYW1PcHRpb24ge1xuICBmbGFncz86IHN0cmluZztcbiAgZW5jb2Rpbmc/OiBzdHJpbmc7XG4gIGZkPzogbnVtYmVyO1xuICBtb2RlPzogbnVtYmVyO1xuICBhdXRvQ2xvc2U/OiBib29sZWFuO1xuICBzdGFydD86IG51bWJlcjtcbiAgZW5kPzogbnVtYmVyO1xuICBoaWdoV2F0ZXJNYXJrPzogbnVtYmVyO1xufVxuZXhwb3J0IHR5cGUgQ2FsbEJhY2sgPSAoZXJyOiBFcnJvciwgZGF0YTogQXJyYXk8YW55PikgPT4gdm9pZDtcblxuXG5leHBvcnQgdHlwZSBQcmVGaWxlTGluZUNhbGxiYWNrID0gKGxpbmU6IHN0cmluZywgbGluZU51bWJlcjogbnVtYmVyKSA9PiBzdHJpbmcgfCBQcm9taXNlTGlrZTxzdHJpbmc+O1xuZXhwb3J0IHR5cGUgUHJlUmF3RGF0YUNhbGxiYWNrID0gKGNzdlN0cmluZzogc3RyaW5nKSA9PiBzdHJpbmcgfCBQcm9taXNlTGlrZTxzdHJpbmc+O1xuIl19 \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/86a61f32a623616f1cdec9f22fc46a34e2f38a490b8b82485bbbf319282a9c64.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/86a61f32a623616f1cdec9f22fc46a34e2f38a490b8b82485bbbf319282a9c64.js deleted file mode 100644 index fe1e925..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/86a61f32a623616f1cdec9f22fc46a34e2f38a490b8b82485bbbf319282a9c64.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Result_1 = require("./Result"); -var Converter_1 = require("./Converter"); -var path_1 = __importDefault(require("path")); -var assert_1 = __importDefault(require("assert")); -var dataDir = path_1.default.join(__dirname, "../test/data/"); -describe("Result", function () { - it("should return need push downstream based on needEmitAll parameter", function () { - var conv = new Converter_1.Converter(); - var res = new Result_1.Result(conv); - assert_1.default.equal(res["needEmitAll"], false); - conv.then(); - assert_1.default.equal(res["needEmitAll"], true); - conv.parseParam.needEmitAll = false; - assert_1.default.equal(res["needEmitAll"], false); - }); -}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9SZXN1bHQudGVzdC50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9SZXN1bHQudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFnQztBQUNoQyx5Q0FBd0M7QUFHeEMsOENBQXdCO0FBQ3hCLGtEQUE0QjtBQUU1QixJQUFNLE9BQU8sR0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxlQUFlLENBQUMsQ0FBQztBQUVuRCxRQUFRLENBQUMsUUFBUSxFQUFDO0lBQ2hCLEVBQUUsQ0FBRSxtRUFBbUUsRUFBQztRQUNwRSxJQUFNLElBQUksR0FBQyxJQUFJLHFCQUFTLEVBQUUsQ0FBQztRQUMzQixJQUFNLEdBQUcsR0FBQyxJQUFJLGVBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixnQkFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osZ0JBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFDLEtBQUssQ0FBQztRQUNsQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQyxDQUFDLENBQUM7QUFFTCxDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVzdWx0fSBmcm9tIFwiLi9SZXN1bHRcIjtcbmltcG9ydCB7IENvbnZlcnRlciB9IGZyb20gXCIuL0NvbnZlcnRlclwiO1xuaW1wb3J0IFAgZnJvbSBcImJsdWViaXJkXCI7XG5pbXBvcnQge3JlYWRGaWxlU3luY30gZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgeyBKU09OUmVzdWx0IH0gZnJvbSBcIi4vbGluZVRvSnNvblwiO1xuY29uc3QgZGF0YURpcj1wYXRoLmpvaW4oX19kaXJuYW1lLFwiLi4vdGVzdC9kYXRhL1wiKTtcblxuZGVzY3JpYmUoXCJSZXN1bHRcIiwoKT0+e1xuICBpdCAoXCJzaG91bGQgcmV0dXJuIG5lZWQgcHVzaCBkb3duc3RyZWFtIGJhc2VkIG9uIG5lZWRFbWl0QWxsIHBhcmFtZXRlclwiLGZ1bmN0aW9uICgpe1xuICAgICAgY29uc3QgY29udj1uZXcgQ29udmVydGVyKCk7XG4gICAgICBjb25zdCByZXM9bmV3IFJlc3VsdChjb252KTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXNbXCJuZWVkRW1pdEFsbFwiXSxmYWxzZSk7XG4gICAgICBjb252LnRoZW4oKTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXNbXCJuZWVkRW1pdEFsbFwiXSx0cnVlKTtcbiAgICAgIGNvbnYucGFyc2VQYXJhbS5uZWVkRW1pdEFsbD1mYWxzZTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXNbXCJuZWVkRW1pdEFsbFwiXSxmYWxzZSk7XG4gIH0pO1xuXG59KVxuXG4iXX0= \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/8d3edcece85e84b439b2d726acd2739b703649046edb8805d043fd9d43e23581.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/8d3edcece85e84b439b2d726acd2739b703649046edb8805d043fd9d43e23581.js deleted file mode 100644 index 754deb4..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/8d3edcece85e84b439b2d726acd2739b703649046edb8805d043fd9d43e23581.js +++ /dev/null @@ -1,638 +0,0 @@ -"use strict"; -// import {Converter} from "../src/Converter"; -// import csv from "../src"; -// var assert = require("assert"); -// var fs = require("fs"); -// var sandbox = require("sinon").sandbox.create(); -// var file = __dirname + "/data/testData"; -// var trailCommaData = __dirname + "/data/trailingComma"; -// describe("CSV Convert in Background Process", function () { -// afterEach(function () { -// sandbox.restore(); -// }); -// it("should read from a stream", function (done) { -// var obj = new Converter({ -// fork: true -// }); -// var stream = fs.createReadStream(file); -// obj.then(function (obj) { -// assert.equal(obj.length, 2); -// done(); -// },(err)=>{ -// console.log(err.toString()); -// }); -// stream.pipe(obj); -// }); -// it("should call onNext once a row is parsed.", function (done) { -// var obj = new Converter({fork:true}); -// var stream = fs.createReadStream(file); -// var called = false; -// obj.subscribe(function (resultRow) { -// assert(resultRow); -// called = true; -// }); -// obj.on("done", function () { -// assert(called); -// done(); -// }); -// stream.pipe(obj); -// }); -// it("should emit end_parsed message once it is finished.", function (done) { -// var obj = new Converter({fork:true}); -// obj.then(function (result) { -// assert(result); -// assert(result.length === 2); -// assert(result[0].date); -// assert(result[0].employee); -// assert(result[0].employee.name); -// assert(result[0].employee.age); -// assert(result[0].employee.number); -// assert(result[0].employee.key.length === 2); -// assert(result[0].address.length === 2); -// done(); -// }); -// fs.createReadStream(file).pipe(obj); -// }); -// it("should handle traling comma gracefully", function (done) { -// var stream = fs.createReadStream(trailCommaData); -// var obj = new Converter({fork:true}); -// obj.then(function (result) { -// assert(result); -// assert(result.length > 0); -// done(); -// }); -// stream.pipe(obj); -// }); -// it("should handle comma in column which is surrounded by qoutes", function (done) { -// var testData = __dirname + "/data/dataWithComma"; -// var rs = fs.createReadStream(testData); -// var obj = new Converter({ -// "quote": "#", -// "fork":true -// }); -// obj.then(function (result) { -// assert(result[0].col1 === "\"Mini. Sectt"); -// assert.equal(result[3].col2, "125001,fenvkdsf"); -// // console.log(result); -// done(); -// }); -// rs.pipe(obj); -// }); -// it("should be able to convert a csv to column array data", function (done) { -// var columArrData = __dirname + "/data/columnArray"; -// var rs = fs.createReadStream(columArrData); -// var result:any = {}; -// var csvConverter = new Converter({fork:true}); -// //end_parsed will be emitted once parsing finished -// csvConverter.then(function () { -// assert(result.TIMESTAMP.length === 5); -// done(); -// }); -// //record_parsed will be emitted each time a row has been parsed. -// csvConverter.subscribe(function (resultRow, rowIndex) { -// for (var key in resultRow) { -// if (resultRow.hasOwnProperty(key)) { -// if (!result[key] || !(result[key] instanceof Array)) { -// result[key] = []; -// } -// result[key][rowIndex] = resultRow[key]; -// } -// } -// }); -// rs.pipe(csvConverter); -// }); -// it("should be able to convert csv string directly", function (done) { -// var testData = __dirname + "/data/testData"; -// var data = fs.readFileSync(testData).toString(); -// var csvConverter = new Converter({fork:true}); -// //end_parsed will be emitted once parsing finished -// csvConverter.then(function (jsonObj) { -// assert.equal(jsonObj.length, 2); -// }); -// csvConverter.fromString(data).then(function (jsonObj) { -// assert(jsonObj.length === 2); -// done(); -// }); -// }); -// it("should be able to convert csv string with error", function (done) { -// var testData = __dirname + "/data/dataWithUnclosedQuotes"; -// var data = fs.readFileSync(testData).toString(); -// var csvConverter = new Converter({fork:true}); -// csvConverter.fromString(data).then(undefined, function (err) { -// // console.log(err); -// assert(err); -// assert.equal(err.err, "unclosed_quote"); -// done(); -// }); -// }); -// it("should be able to convert csv string without callback provided", function (done) { -// var testData = __dirname + "/data/testData"; -// var data = fs.readFileSync(testData).toString(); -// var csvConverter = new Converter({fork:true}); -// //end_parsed will be emitted once parsing finished -// csvConverter.then(function (jsonObj) { -// assert(jsonObj.length === 2); -// done(); -// }); -// csvConverter.fromString(data); -// }); -// it("should be able to handle columns with double quotes", function (done) { -// var testData = __dirname + "/data/dataWithQoutes"; -// var data = fs.readFileSync(testData).toString(); -// var csvConverter = new Converter({fork:true}); -// csvConverter.fromString(data).then(function (jsonObj) { -// assert(jsonObj[0].TIMESTAMP === '13954264"22', JSON.stringify(jsonObj[0].TIMESTAMP)); -// assert(jsonObj[1].TIMESTAMP === 'abc, def, ccc', JSON.stringify(jsonObj[1].TIMESTAMP)); -// done(); -// }); -// }); -// it("should be able to handle columns with two double quotes", function (done) { -// var testData = __dirname + "/data/twodoublequotes"; -// var data = fs.readFileSync(testData).toString(); -// var csvConverter = new Converter({fork:true}); -// csvConverter.fromString(data).then(function (jsonObj) { -// assert.equal(jsonObj[0].title, "\""); -// assert.equal(jsonObj[0].data, "xyabcde"); -// assert.equal(jsonObj[0].uuid, "fejal\"eifa"); -// assert.equal(jsonObj[0].fieldA, "bnej\"\"falkfe"); -// assert.equal(jsonObj[0].fieldB, "\"eisjfes\""); -// done(); -// }); -// }); -// it("should handle empty csv file", function (done) { -// var testData = __dirname + "/data/emptyFile"; -// var rs = fs.createReadStream(testData); -// var csvConverter = new Converter({fork:true}); -// csvConverter.then(function (jsonObj) { -// assert(jsonObj.length === 0); -// done(); -// }); -// rs.pipe(csvConverter); -// }); -// it("should parse large csv file", function (done) { -// var testData = __dirname + "/data/large-csv-sample.csv"; -// var rs = fs.createReadStream(testData); -// var csvConverter = new Converter({fork:true}); -// var count = 0; -// csvConverter.subscribe(function () { -// // console.log(arguments); -// count++; -// }); -// csvConverter.then(function () { -// assert.equal(count, 5290); -// done(); -// }); -// rs.pipe(csvConverter); -// }); -// it("should parse data and covert to specific types", function (done) { -// var testData = __dirname + "/data/dataWithType"; -// var rs = fs.createReadStream(testData); -// var csvConverter = new Converter({ -// fork:true, -// checkType: true, -// colParser: { -// "column6": "string", -// "column7": "string" -// } -// }); -// csvConverter.subscribe(function (d) { -// assert(typeof d.column1 === "number"); -// assert(typeof d.column2 === "string"); -// assert.equal(d["colume4"], "someinvaliddate"); -// assert(d.column5.hello === "world"); -// assert(d.column6 === '{"hello":"world"}'); -// assert(d.column7 === "1234"); -// assert(d.column8 === "abcd"); -// assert(d.column9 === true); -// assert(d.column10[0] === 23); -// assert(d.column10[1] === 31); -// assert(d.column11[0].hello === "world"); -// assert(d["name#!"] === false); -// }); -// csvConverter.on("done", function () { -// done(); -// }); -// rs.pipe(csvConverter); -// }); -// it("should turn off field type check", function (done) { -// var testData = __dirname + "/data/dataWithType"; -// var rs = fs.createReadStream(testData); -// var csvConverter = new Converter({ -// fork:true, -// checkType: false -// }); -// csvConverter.subscribe(function (d) { -// assert(typeof d.column1 === "string"); -// assert(typeof d.column2 === "string"); -// assert(d["column3"] === "2012-01-01"); -// assert(d["colume4"] === "someinvaliddate"); -// assert(d.column5 === '{"hello":"world"}'); -// assert.equal(d["column6"], '{"hello":"world"}'); -// assert(d["column7"] === "1234"); -// assert(d["column8"] === "abcd"); -// assert(d.column9 === "true"); -// assert(d.column10[0] === "23"); -// assert(d.column10[1] === "31"); -// assert(d["name#!"] === 'false'); -// }); -// csvConverter.then(function () { -// done(); -// }); -// rs.pipe(csvConverter); -// }); -// it("should emit data event correctly", function (done) { -// var testData = __dirname + "/data/large-csv-sample.csv"; -// var csvConverter = new Converter({ -// fork:true -// },{objectMode:true}); -// var count = 0; -// csvConverter.on("data", function (d) { -// count++; -// }); -// csvConverter.on("done", function () { -// assert.equal(csvConverter.parsedLineNumber, 5290); -// done(); -// }); -// var rs = fs.createReadStream(testData); -// rs.pipe(csvConverter); -// }); -// it("should process column with linebreaks", function (done) { -// var testData = __dirname + "/data/lineBreak"; -// var rs = fs.createReadStream(testData); -// var csvConverter = new Converter({ -// fork:true, -// checkType: true -// }); -// csvConverter.subscribe(function (d) { -// assert(d.Period === 13); -// assert(d["Apparent age"] === "Unknown"); -// done(); -// }); -// rs.pipe(csvConverter); -// }); -// it("be able to ignore empty columns", function (done) { -// var testData = __dirname + "/data/dataIgnoreEmpty"; -// var rs = fs.createReadStream(testData); -// var st = rs.pipe(csv({ -// ignoreEmpty: true , -// fork:true -// })); -// st.then(function (res) { -// var j = res[0]; -// assert(res.length === 3); -// assert(j.col2.length === 2); -// assert(j.col2[1] === "d3"); -// assert(j.col4.col3 === undefined); -// assert(j.col4.col5 === "world"); -// assert(res[1].col1 === "d2"); -// assert(res[2].col1 === "d4"); -// done(); -// }); -// }); -// it("should allow no header", function (done) { -// var testData = __dirname + "/data/noheadercsv"; -// var rs = fs.createReadStream(testData); -// var st = rs.pipe(new Converter({ -// noheader: true, -// fork:true -// })); -// st.then(function (res) { -// var j = res[0]; -// assert(res.length === 5); -// assert(j.field1 === "CC102-PDMI-001"); -// assert(j.field2 === "eClass_5.1.3"); -// done(); -// }); -// }); -// it("should allow customised header", function (done) { -// var testData = __dirname + "/data/noheadercsv"; -// var rs = fs.createReadStream(testData); -// var st = rs.pipe(new Converter({ -// noheader: true, -// headers: ["a", "b"], -// fork:true -// })); -// st.then(function (res) { -// var j = res[0]; -// assert(res.length === 5); -// assert(j.a === "CC102-PDMI-001"); -// assert(j.b === "eClass_5.1.3"); -// assert(j.field3 === "10/3/2014"); -// done(); -// }); -// }); -// it("should allow customised header to override existing header", function (done) { -// var testData = __dirname + "/data/complexJSONCSV"; -// var rs = fs.createReadStream(testData); -// var st = rs.pipe(new Converter({ -// headers: [], -// fork:true -// })); -// st.then(function (res) { -// var j = res[0]; -// assert(res.length === 2); -// assert(j.field1 === "Food Factory"); -// assert(j.field2 === "Oscar"); -// done(); -// }); -// }); -// it("should handle when there is an empty string", function (done) { -// var testData = __dirname + "/data/dataWithEmptyString"; -// var rs = fs.createReadStream(testData); -// var st = rs.pipe(new Converter({ -// noheader: true, -// headers: ["a", "b", "c"], -// checkType: true, -// fork:true -// })); -// st.then(function (res) { -// var j = res[0]; -// // assert(res.length===2); -// assert(j.a === "green"); -// assert(j.b === 40); -// assert.equal(j.c, ""); -// done(); -// }); -// }); -// it("should detect eol correctly when first chunk is smaller than header row length", function (done) { -// var testData = __dirname + "/data/dataNoTrimCRLF"; -// var rs = fs.createReadStream(testData, { highWaterMark: 3 }); -// var st = rs.pipe(new Converter({ -// trim: false, -// fork:true -// })); -// st.then(function (res) { -// var j = res[0]; -// assert(res.length === 2); -// assert(j.name === "joe"); -// assert(j.age === "20"); -// assert.equal(res[1].name, "sam"); -// assert.equal(res[1].age, "30"); -// done(); -// }); -// }); -// it("should detect eol correctly when first chunk ends in middle of CRLF line break", function (done) { -// var testData = __dirname + "/data/dataNoTrimCRLF"; -// var rs = fs.createReadStream(testData, { highWaterMark: 9 }); -// var st = rs.pipe(new Converter({ -// trim: false, -// fork:true -// })); -// st.then(function (res) { -// var j = res[0]; -// assert(res.length === 2); -// assert(j.name === "joe"); -// assert(j.age === "20"); -// assert.equal(res[1].name, "sam"); -// assert.equal(res[1].age, "30"); -// done(); -// }); -// }); -// it("should emit eol event when line ending is detected as CRLF", function (done) { -// var testData = __dirname + "/data/dataNoTrimCRLF"; -// var rs = fs.createReadStream(testData); -// var st = rs.pipe(new Converter({ -// fork:true -// })); -// var eolCallback = sandbox.spy(function (eol) { -// assert.equal(eol, "\r\n"); -// }); -// st.on("eol", eolCallback); -// st.then(function () { -// assert.equal(eolCallback.callCount, 1, 'should emit eol event once'); -// done(); -// }) -// }); -// it("should emit eol event when line ending is detected as LF", function (done) { -// var testData = __dirname + "/data/columnArray"; -// var rs = fs.createReadStream(testData); -// var st = rs.pipe(new Converter({ -// fork:true -// })); -// var eolCallback = sandbox.spy(function (eol) { -// assert.equal(eol, "\n"); -// }); -// st.on("eol", eolCallback); -// st.then(function () { -// assert.equal(eolCallback.callCount, 1, 'should emit eol event once'); -// done(); -// }) -// }); -// it("should remove the Byte Order Mark (BOM) from input", function (done) { -// var testData = __dirname + "/data/dataNoTrimBOM"; -// var rs = fs.createReadStream(testData); -// var st = rs.pipe(new Converter({ -// trim: false, -// fork:true -// })); -// st.then( function (res) { -// var j = res[0]; -// assert(res.length===2); -// assert(j.name === "joe"); -// assert(j.age === "20"); -// done(); -// }); -// }); -// it("should set output as csv", function (done) { -// var testData = __dirname + "/data/complexJSONCSV"; -// var rs = fs.createReadStream(testData); -// var numOfRow = 0; -// csv({ output: "csv",fork:true }) -// .fromStream(rs) -// .subscribe(function (row, idx) { -// numOfRow++; -// assert(row); -// assert(idx >= 0); -// }) -// .on("done", function (error) { -// assert(!error); -// assert.equal(2, numOfRow); -// assert(numOfRow !== 0); -// done(); -// }); -// }); -// it("should process long header", function (done) { -// var testData = __dirname + "/data/longHeader"; -// var rs = fs.createReadStream(testData, { highWaterMark: 100 }); -// var numOfRow = 0; -// var numOfJson = 0; -// csv({fork:true}, { highWaterMark: 100 }) -// .fromStream(rs) -// .subscribe(function (res, idx) { -// numOfJson++; -// assert.equal(res.Date, '8/26/16'); -// assert(idx >= 0); -// }) -// .on("done", function () { -// assert(numOfJson === 1); -// done(); -// }); -// }); -// it("should parse #139", function (done) { -// var rs = fs.createReadStream(__dirname + "/data/data#139"); -// csv({fork:true}) -// .fromStream(rs) -// .then(function (res) { -// assert.equal(res[1].field3, "9001009395 9001009990"); -// done(); -// }); -// }); -// it("should ignore column", function (done) { -// var rs = fs.createReadStream(__dirname + "/data/dataWithQoutes"); -// var headerEmitted = false; -// csv({ -// ignoreColumns: /TIMESTAMP/, -// fork:true -// }) -// .fromStream(rs) -// .on("header", function (header) { -// assert.equal(header.indexOf("TIMESTAMP"), -1); -// assert.equal(header.indexOf("UPDATE"), 0); -// if (headerEmitted) { -// throw ("header event should only happen once") -// } -// headerEmitted = true; -// }) -// // .on("csv", function (row, idx) { -// // if (!headerEmitted) { -// // throw ("header should be emitted before any data events"); -// // } -// // assert(idx >= 0); -// // if (idx === 1) { -// // assert.equal(row[0], "n"); -// // } -// // }) -// .subscribe(function (j, idx) { -// // console.log(j); -// assert(!j.TIMESTAMP); -// assert(idx >= 0); -// }) -// .on("done", function (err) { -// assert(!err); -// assert(headerEmitted); -// done(); -// }); -// }); -// it("should include column", function (done) { -// var rs = fs.createReadStream(__dirname + "/data/dataWithQoutes"); -// csv({ -// includeColumns: /TIMESTAMP/, -// fork:true -// }) -// .fromStream(rs) -// .on("header", function (header) { -// assert.equal(header.indexOf("TIMESTAMP"), 0); -// assert.equal(header.indexOf("UPDATE"), -1); -// assert.equal(header.length, 1); -// }) -// .subscribe(function (j, idx) { -// assert(idx >= 0); -// if (idx === 1) { -// assert.equal(j.TIMESTAMP, "abc, def, ccc"); -// } -// assert(!j.UID) -// assert(!j['BYTES SENT']) -// }) -// .on("done", function () { -// done(); -// }); -// }); -// it("should allow headers and include columns to be given as reference to the same var", function (done) { -// var rs = fs.createReadStream(__dirname + "/data/complexJSONCSV"); -// var headers = [ -// 'first', -// 'second', -// 'third', -// ]; -// var expected = headers; -// csv({ -// headers: headers, -// includeColumns: /(first|second|third)/, -// fork:true -// }) -// .fromStream(rs) -// .on("header", function (header) { -// expected.forEach(function (value, index) { -// assert.equal(header.indexOf(value), index); -// }); -// }) -// .subscribe(function (j, idx) { -// assert(idx >= 0); -// assert.equal(expected.length, Object.keys(j).length); -// expected.forEach(function (attribute) { -// assert(j.hasOwnProperty(attribute)); -// }); -// }) -// .on("done", function () { -// done(); -// }); -// }); -// it("should leave provided params objects unmutated", function() { -// var rs = fs.createReadStream(__dirname + "/data/complexJSONCSV"); -// var includeColumns = [ -// 'fieldA.title', -// 'description', -// ]; -// return csv({ -// includeColumns: /(fieldA\.title|description)/, -// fork:true -// }) -// .fromStream(rs) -// .on("json", function(j, idx) { -// assert(idx >= 0); -// }) -// .on("header", function(header) { -// includeColumns.forEach(function (value, index) { -// assert.equal(index, header.indexOf(value)); -// }); -// }) -// }); -// it("should accept pipe as quote", function (done) { -// csv({ -// quote: "|", -// output: "csv", -// "fork":true -// }) -// .fromFile(__dirname + "/data/pipeAsQuote") -// .subscribe(function (csv) { -// assert.equal(csv[2], "blahhh, blah"); -// }) -// .on('done', function () { -// done() -// }); -// }) -// it("should allow async subscribe function", () => { -// return csv({ trim: true,fork:true }) -// .fromString(`a,b,c -// 1,2,3 -// 4,5,6`) -// .subscribe((d) => { -// return new Promise((resolve, reject) => { -// setTimeout(() => { -// d.a = 10; -// resolve(); -// }, 20); -// }) -// }) -// .then((d) => { -// assert.equal(d[0].a, 10); -// assert.equal(d[1].a, 10); -// }) -// }) -// it("should omit a column", () => { -// return csv({ -// colParser: { -// "a": "omit" -// }, -// fork:true -// }) -// .fromString(`a,b,c -// 1,2,3 -// fefe,5,6`) -// .then((d) => { -// assert.strictEqual(d[0].a, undefined); -// assert.equal(d[1].a, undefined); -// }) -// }) -// }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3Rlc3QvdGVzdENTVkNvbnZlcnRlci5mb3JrLnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vdGVzdC90ZXN0Q1NWQ29udmVydGVyLmZvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDhDQUE4QztBQUM5Qyw0QkFBNEI7QUFDNUIsa0NBQWtDO0FBQ2xDLDBCQUEwQjtBQUMxQixtREFBbUQ7QUFDbkQsMkNBQTJDO0FBQzNDLDBEQUEwRDtBQUMxRCw4REFBOEQ7QUFDOUQsNEJBQTRCO0FBQzVCLHlCQUF5QjtBQUN6QixRQUFRO0FBR1Isc0RBQXNEO0FBQ3RELGdDQUFnQztBQUNoQyxtQkFBbUI7QUFDbkIsVUFBVTtBQUNWLDhDQUE4QztBQUM5QyxnQ0FBZ0M7QUFDaEMscUNBQXFDO0FBQ3JDLGdCQUFnQjtBQUNoQixpQkFBaUI7QUFDakIscUNBQXFDO0FBQ3JDLFVBQVU7QUFDVix3QkFBd0I7QUFDeEIsUUFBUTtBQUVSLHFFQUFxRTtBQUNyRSw0Q0FBNEM7QUFDNUMsOENBQThDO0FBQzlDLDBCQUEwQjtBQUMxQiwyQ0FBMkM7QUFDM0MsMkJBQTJCO0FBQzNCLHVCQUF1QjtBQUN2QixVQUFVO0FBQ1YsbUNBQW1DO0FBQ25DLHdCQUF3QjtBQUN4QixnQkFBZ0I7QUFDaEIsVUFBVTtBQUNWLHdCQUF3QjtBQUN4QixRQUFRO0FBRVIsZ0ZBQWdGO0FBQ2hGLDRDQUE0QztBQUM1QyxtQ0FBbUM7QUFDbkMsd0JBQXdCO0FBQ3hCLHFDQUFxQztBQUNyQyxnQ0FBZ0M7QUFDaEMsb0NBQW9DO0FBQ3BDLHlDQUF5QztBQUN6Qyx3Q0FBd0M7QUFDeEMsMkNBQTJDO0FBQzNDLHFEQUFxRDtBQUNyRCxnREFBZ0Q7QUFDaEQsZ0JBQWdCO0FBQ2hCLFVBQVU7QUFDViwyQ0FBMkM7QUFDM0MsUUFBUTtBQUVSLG1FQUFtRTtBQUNuRSx3REFBd0Q7QUFDeEQsNENBQTRDO0FBQzVDLG1DQUFtQztBQUNuQyx3QkFBd0I7QUFDeEIsbUNBQW1DO0FBQ25DLGdCQUFnQjtBQUNoQixVQUFVO0FBQ1Ysd0JBQXdCO0FBQ3hCLFFBQVE7QUFFUix3RkFBd0Y7QUFDeEYsd0RBQXdEO0FBQ3hELDhDQUE4QztBQUM5QyxnQ0FBZ0M7QUFDaEMsc0JBQXNCO0FBQ3RCLG9CQUFvQjtBQUNwQixVQUFVO0FBQ1YsbUNBQW1DO0FBQ25DLG9EQUFvRDtBQUNwRCx5REFBeUQ7QUFDekQsZ0NBQWdDO0FBQ2hDLGdCQUFnQjtBQUNoQixVQUFVO0FBQ1Ysb0JBQW9CO0FBQ3BCLFFBQVE7QUFFUixpRkFBaUY7QUFDakYsMERBQTBEO0FBQzFELGtEQUFrRDtBQUNsRCwyQkFBMkI7QUFDM0IscURBQXFEO0FBQ3JELHlEQUF5RDtBQUN6RCxzQ0FBc0M7QUFDdEMsK0NBQStDO0FBQy9DLGdCQUFnQjtBQUNoQixVQUFVO0FBRVYsdUVBQXVFO0FBQ3ZFLDhEQUE4RDtBQUM5RCxxQ0FBcUM7QUFDckMsK0NBQStDO0FBQy9DLG1FQUFtRTtBQUNuRSxnQ0FBZ0M7QUFDaEMsY0FBYztBQUNkLG9EQUFvRDtBQUNwRCxZQUFZO0FBQ1osVUFBVTtBQUNWLFVBQVU7QUFDViw2QkFBNkI7QUFDN0IsUUFBUTtBQUVSLDBFQUEwRTtBQUMxRSxtREFBbUQ7QUFDbkQsdURBQXVEO0FBQ3ZELHFEQUFxRDtBQUNyRCx5REFBeUQ7QUFDekQsNkNBQTZDO0FBQzdDLHlDQUF5QztBQUN6QyxVQUFVO0FBQ1YsOERBQThEO0FBQzlELHNDQUFzQztBQUN0QyxnQkFBZ0I7QUFDaEIsVUFBVTtBQUNWLFFBQVE7QUFFUiw0RUFBNEU7QUFDNUUsaUVBQWlFO0FBQ2pFLHVEQUF1RDtBQUN2RCxxREFBcUQ7QUFDckQscUVBQXFFO0FBQ3JFLDZCQUE2QjtBQUM3QixxQkFBcUI7QUFDckIsaURBQWlEO0FBQ2pELGdCQUFnQjtBQUNoQixVQUFVO0FBQ1YsUUFBUTtBQUVSLDJGQUEyRjtBQUMzRixtREFBbUQ7QUFDbkQsdURBQXVEO0FBQ3ZELHFEQUFxRDtBQUNyRCx5REFBeUQ7QUFDekQsNkNBQTZDO0FBQzdDLHNDQUFzQztBQUN0QyxnQkFBZ0I7QUFDaEIsVUFBVTtBQUNWLHFDQUFxQztBQUNyQyxRQUFRO0FBRVIsZ0ZBQWdGO0FBQ2hGLHlEQUF5RDtBQUN6RCx1REFBdUQ7QUFDdkQscURBQXFEO0FBQ3JELDhEQUE4RDtBQUM5RCw4RkFBOEY7QUFFOUYsZ0dBQWdHO0FBQ2hHLGdCQUFnQjtBQUNoQixVQUFVO0FBQ1YsUUFBUTtBQUVSLG9GQUFvRjtBQUNwRiwwREFBMEQ7QUFDMUQsdURBQXVEO0FBQ3ZELHFEQUFxRDtBQUNyRCw4REFBOEQ7QUFDOUQsOENBQThDO0FBQzlDLGtEQUFrRDtBQUNsRCxzREFBc0Q7QUFDdEQsMkRBQTJEO0FBQzNELHdEQUF3RDtBQUN4RCxnQkFBZ0I7QUFDaEIsVUFBVTtBQUNWLFFBQVE7QUFFUix5REFBeUQ7QUFDekQsb0RBQW9EO0FBQ3BELDhDQUE4QztBQUM5QyxxREFBcUQ7QUFDckQsNkNBQTZDO0FBQzdDLHNDQUFzQztBQUN0QyxnQkFBZ0I7QUFDaEIsVUFBVTtBQUNWLDZCQUE2QjtBQUM3QixRQUFRO0FBRVIsd0RBQXdEO0FBQ3hELCtEQUErRDtBQUMvRCw4Q0FBOEM7QUFDOUMscURBQXFEO0FBQ3JELHFCQUFxQjtBQUNyQiwyQ0FBMkM7QUFDM0MsbUNBQW1DO0FBQ25DLGlCQUFpQjtBQUNqQixVQUFVO0FBQ1Ysc0NBQXNDO0FBQ3RDLG1DQUFtQztBQUNuQyxnQkFBZ0I7QUFDaEIsVUFBVTtBQUNWLDZCQUE2QjtBQUM3QixRQUFRO0FBRVIsMkVBQTJFO0FBQzNFLHVEQUF1RDtBQUN2RCw4Q0FBOEM7QUFDOUMseUNBQXlDO0FBQ3pDLG1CQUFtQjtBQUNuQix5QkFBeUI7QUFDekIscUJBQXFCO0FBQ3JCLCtCQUErQjtBQUMvQiw4QkFBOEI7QUFDOUIsVUFBVTtBQUNWLFVBQVU7QUFDViw0Q0FBNEM7QUFDNUMsK0NBQStDO0FBQy9DLCtDQUErQztBQUMvQyx1REFBdUQ7QUFDdkQsNkNBQTZDO0FBQzdDLG1EQUFtRDtBQUNuRCxzQ0FBc0M7QUFDdEMsc0NBQXNDO0FBQ3RDLG9DQUFvQztBQUNwQyxzQ0FBc0M7QUFDdEMsc0NBQXNDO0FBQ3RDLGlEQUFpRDtBQUNqRCx1Q0FBdUM7QUFDdkMsVUFBVTtBQUNWLDRDQUE0QztBQUM1QyxnQkFBZ0I7QUFDaEIsVUFBVTtBQUNWLDZCQUE2QjtBQUM3QixRQUFRO0FBRVIsNkRBQTZEO0FBQzdELHVEQUF1RDtBQUN2RCw4Q0FBOEM7QUFDOUMseUNBQXlDO0FBQ3pDLG1CQUFtQjtBQUNuQix5QkFBeUI7QUFDekIsVUFBVTtBQUNWLDRDQUE0QztBQUM1QywrQ0FBK0M7QUFDL0MsK0NBQStDO0FBQy9DLCtDQUErQztBQUMvQyxvREFBb0Q7QUFDcEQsbURBQW1EO0FBQ25ELHlEQUF5RDtBQUN6RCx5Q0FBeUM7QUFDekMseUNBQXlDO0FBQ3pDLHNDQUFzQztBQUN0Qyx3Q0FBd0M7QUFDeEMsd0NBQXdDO0FBQ3hDLHlDQUF5QztBQUN6QyxVQUFVO0FBQ1Ysc0NBQXNDO0FBQ3RDLGdCQUFnQjtBQUNoQixVQUFVO0FBQ1YsNkJBQTZCO0FBQzdCLFFBQVE7QUFFUiw2REFBNkQ7QUFDN0QsK0RBQStEO0FBRS9ELHlDQUF5QztBQUN6QyxrQkFBa0I7QUFDbEIsNEJBQTRCO0FBQzVCLHFCQUFxQjtBQUNyQiw2Q0FBNkM7QUFDN0MsaUJBQWlCO0FBQ2pCLFVBQVU7QUFDViw0Q0FBNEM7QUFDNUMsMkRBQTJEO0FBQzNELGdCQUFnQjtBQUNoQixVQUFVO0FBQ1YsOENBQThDO0FBQzlDLDZCQUE2QjtBQUM3QixRQUFRO0FBRVIsa0VBQWtFO0FBQ2xFLG9EQUFvRDtBQUNwRCw4Q0FBOEM7QUFDOUMseUNBQXlDO0FBQ3pDLG1CQUFtQjtBQUNuQix3QkFBd0I7QUFDeEIsVUFBVTtBQUNWLDRDQUE0QztBQUM1QyxpQ0FBaUM7QUFDakMsaURBQWlEO0FBQ2pELGdCQUFnQjtBQUNoQixVQUFVO0FBQ1YsNkJBQTZCO0FBQzdCLFFBQVE7QUFFUiw0REFBNEQ7QUFDNUQsMERBQTBEO0FBQzFELDhDQUE4QztBQUM5Qyw4QkFBOEI7QUFDOUIsNEJBQTRCO0FBQzVCLGtCQUFrQjtBQUNsQixXQUFXO0FBQ1gsK0JBQStCO0FBQy9CLHdCQUF3QjtBQUN4QixrQ0FBa0M7QUFDbEMscUNBQXFDO0FBQ3JDLG9DQUFvQztBQUNwQywyQ0FBMkM7QUFDM0MseUNBQXlDO0FBQ3pDLHNDQUFzQztBQUN0QyxzQ0FBc0M7QUFDdEMsZ0JBQWdCO0FBQ2hCLFVBQVU7QUFDVixRQUFRO0FBRVIsbURBQW1EO0FBQ25ELHNEQUFzRDtBQUN0RCw4Q0FBOEM7QUFDOUMsd0NBQXdDO0FBQ3hDLHdCQUF3QjtBQUN4QixrQkFBa0I7QUFDbEIsV0FBVztBQUNYLCtCQUErQjtBQUMvQix3QkFBd0I7QUFDeEIsa0NBQWtDO0FBQ2xDLCtDQUErQztBQUMvQyw2Q0FBNkM7QUFDN0MsZ0JBQWdCO0FBQ2hCLFVBQVU7QUFDVixRQUFRO0FBRVIsMkRBQTJEO0FBQzNELHNEQUFzRDtBQUN0RCw4Q0FBOEM7QUFDOUMsdUNBQXVDO0FBQ3ZDLHdCQUF3QjtBQUN4Qiw2QkFBNkI7QUFDN0Isa0JBQWtCO0FBQ2xCLFdBQVc7QUFDWCwrQkFBK0I7QUFDL0Isd0JBQXdCO0FBQ3hCLGtDQUFrQztBQUNsQywwQ0FBMEM7QUFDMUMsd0NBQXdDO0FBQ3hDLDBDQUEwQztBQUMxQyxnQkFBZ0I7QUFDaEIsVUFBVTtBQUNWLFFBQVE7QUFFUix1RkFBdUY7QUFDdkYseURBQXlEO0FBQ3pELDhDQUE4QztBQUM5Qyx1Q0FBdUM7QUFDdkMscUJBQXFCO0FBQ3JCLGtCQUFrQjtBQUNsQixXQUFXO0FBQ1gsK0JBQStCO0FBQy9CLHdCQUF3QjtBQUN4QixrQ0FBa0M7QUFDbEMsNkNBQTZDO0FBQzdDLHNDQUFzQztBQUN0QyxnQkFBZ0I7QUFDaEIsVUFBVTtBQUNWLFFBQVE7QUFFUix3RUFBd0U7QUFDeEUsOERBQThEO0FBQzlELDhDQUE4QztBQUM5Qyx1Q0FBdUM7QUFDdkMsd0JBQXdCO0FBQ3hCLGtDQUFrQztBQUNsQyx5QkFBeUI7QUFDekIsa0JBQWtCO0FBQ2xCLFdBQVc7QUFDWCwrQkFBK0I7QUFDL0Isd0JBQXdCO0FBRXhCLG1DQUFtQztBQUNuQyxpQ0FBaUM7QUFDakMsNEJBQTRCO0FBQzVCLCtCQUErQjtBQUMvQixnQkFBZ0I7QUFDaEIsVUFBVTtBQUNWLFFBQVE7QUFFUiwyR0FBMkc7QUFDM0cseURBQXlEO0FBQ3pELG9FQUFvRTtBQUVwRSx1Q0FBdUM7QUFDdkMscUJBQXFCO0FBQ3JCLGtCQUFrQjtBQUNsQixXQUFXO0FBQ1gsK0JBQStCO0FBQy9CLHdCQUF3QjtBQUN4QixrQ0FBa0M7QUFDbEMsa0NBQWtDO0FBQ2xDLGdDQUFnQztBQUNoQywwQ0FBMEM7QUFDMUMsd0NBQXdDO0FBQ3hDLGdCQUFnQjtBQUNoQixVQUFVO0FBQ1YsUUFBUTtBQUVSLDJHQUEyRztBQUMzRyx5REFBeUQ7QUFDekQsb0VBQW9FO0FBRXBFLHVDQUF1QztBQUN2QyxxQkFBcUI7QUFDckIsa0JBQWtCO0FBQ2xCLFdBQVc7QUFDWCwrQkFBK0I7QUFDL0Isd0JBQXdCO0FBQ3hCLGtDQUFrQztBQUNsQyxrQ0FBa0M7QUFDbEMsZ0NBQWdDO0FBQ2hDLDBDQUEwQztBQUMxQyx3Q0FBd0M7QUFDeEMsZ0JBQWdCO0FBQ2hCLFVBQVU7QUFDVixRQUFRO0FBRVIsdUZBQXVGO0FBQ3ZGLHlEQUF5RDtBQUN6RCw4Q0FBOEM7QUFFOUMsdUNBQXVDO0FBQ3ZDLGtCQUFrQjtBQUNsQixXQUFXO0FBQ1gscURBQXFEO0FBQ3JELG1DQUFtQztBQUNuQyxVQUFVO0FBQ1YsaUNBQWlDO0FBQ2pDLDRCQUE0QjtBQUM1Qiw4RUFBOEU7QUFDOUUsZ0JBQWdCO0FBQ2hCLFNBQVM7QUFDVCxRQUFRO0FBRVIscUZBQXFGO0FBQ3JGLHNEQUFzRDtBQUN0RCw4Q0FBOEM7QUFFOUMsdUNBQXVDO0FBQ3ZDLGtCQUFrQjtBQUNsQixXQUFXO0FBQ1gscURBQXFEO0FBQ3JELGlDQUFpQztBQUNqQyxVQUFVO0FBQ1YsaUNBQWlDO0FBQ2pDLDRCQUE0QjtBQUM1Qiw4RUFBOEU7QUFDOUUsZ0JBQWdCO0FBQ2hCLFNBQVM7QUFDVCxRQUFRO0FBRVIsK0VBQStFO0FBQy9FLHdEQUF3RDtBQUN4RCw4Q0FBOEM7QUFDOUMsdUNBQXVDO0FBQ3ZDLHFCQUFxQjtBQUNyQixrQkFBa0I7QUFDbEIsV0FBVztBQUNYLGdDQUFnQztBQUNoQyx3QkFBd0I7QUFFeEIsZ0NBQWdDO0FBQ2hDLGtDQUFrQztBQUNsQyxnQ0FBZ0M7QUFDaEMsZ0JBQWdCO0FBQ2hCLFVBQVU7QUFDVixRQUFRO0FBRVIscURBQXFEO0FBQ3JELHlEQUF5RDtBQUN6RCw4Q0FBOEM7QUFDOUMsd0JBQXdCO0FBQ3hCLHVDQUF1QztBQUN2Qyx3QkFBd0I7QUFDeEIseUNBQXlDO0FBQ3pDLHNCQUFzQjtBQUN0Qix1QkFBdUI7QUFDdkIsNEJBQTRCO0FBQzVCLFdBQVc7QUFFWCx1Q0FBdUM7QUFDdkMsMEJBQTBCO0FBQzFCLHFDQUFxQztBQUNyQyxrQ0FBa0M7QUFDbEMsa0JBQWtCO0FBQ2xCLFlBQVk7QUFDWixRQUFRO0FBQ1IsdURBQXVEO0FBQ3ZELHFEQUFxRDtBQUNyRCxzRUFBc0U7QUFDdEUsd0JBQXdCO0FBQ3hCLHlCQUF5QjtBQUN6QiwrQ0FBK0M7QUFDL0Msd0JBQXdCO0FBQ3hCLHlDQUF5QztBQUN6Qyx1QkFBdUI7QUFDdkIsNkNBQTZDO0FBQzdDLDRCQUE0QjtBQUM1QixXQUFXO0FBQ1gsa0NBQWtDO0FBQ2xDLG1DQUFtQztBQUNuQyxrQkFBa0I7QUFDbEIsWUFBWTtBQUNaLFFBQVE7QUFDUiw4Q0FBOEM7QUFDOUMsa0VBQWtFO0FBQ2xFLHVCQUF1QjtBQUN2Qix3QkFBd0I7QUFDeEIsK0JBQStCO0FBQy9CLGdFQUFnRTtBQUNoRSxrQkFBa0I7QUFDbEIsWUFBWTtBQUNaLFFBQVE7QUFFUixpREFBaUQ7QUFDakQsd0VBQXdFO0FBQ3hFLGlDQUFpQztBQUNqQyxZQUFZO0FBQ1osb0NBQW9DO0FBQ3BDLGtCQUFrQjtBQUNsQixTQUFTO0FBQ1Qsd0JBQXdCO0FBQ3hCLDBDQUEwQztBQUMxQyx5REFBeUQ7QUFDekQscURBQXFEO0FBQ3JELCtCQUErQjtBQUMvQiwyREFBMkQ7QUFDM0QsWUFBWTtBQUNaLGdDQUFnQztBQUNoQyxXQUFXO0FBQ1gsNENBQTRDO0FBQzVDLG1DQUFtQztBQUNuQywwRUFBMEU7QUFDMUUsZUFBZTtBQUNmLCtCQUErQjtBQUMvQiw4QkFBOEI7QUFDOUIsMENBQTBDO0FBQzFDLGVBQWU7QUFDZixjQUFjO0FBQ2QsdUNBQXVDO0FBQ3ZDLDZCQUE2QjtBQUM3QixnQ0FBZ0M7QUFDaEMsNEJBQTRCO0FBQzVCLFdBQVc7QUFDWCxxQ0FBcUM7QUFDckMsd0JBQXdCO0FBQ3hCLGlDQUFpQztBQUNqQyxrQkFBa0I7QUFDbEIsWUFBWTtBQUNaLFFBQVE7QUFDUixrREFBa0Q7QUFDbEQsd0VBQXdFO0FBQ3hFLFlBQVk7QUFDWixxQ0FBcUM7QUFDckMsa0JBQWtCO0FBQ2xCLFNBQVM7QUFDVCx3QkFBd0I7QUFDeEIsMENBQTBDO0FBQzFDLHdEQUF3RDtBQUN4RCxzREFBc0Q7QUFDdEQsMENBQTBDO0FBQzFDLFdBQVc7QUFDWCx1Q0FBdUM7QUFDdkMsNEJBQTRCO0FBQzVCLDJCQUEyQjtBQUMzQix3REFBd0Q7QUFDeEQsWUFBWTtBQUNaLHlCQUF5QjtBQUN6QixtQ0FBbUM7QUFDbkMsV0FBVztBQUNYLGtDQUFrQztBQUNsQyxrQkFBa0I7QUFDbEIsWUFBWTtBQUNaLFFBQVE7QUFDUiw4R0FBOEc7QUFDOUcsd0VBQXdFO0FBQ3hFLHNCQUFzQjtBQUN0QixpQkFBaUI7QUFDakIsa0JBQWtCO0FBQ2xCLGlCQUFpQjtBQUNqQixTQUFTO0FBRVQsOEJBQThCO0FBRTlCLFlBQVk7QUFDWiwwQkFBMEI7QUFDMUIsZ0RBQWdEO0FBQ2hELGtCQUFrQjtBQUNsQixTQUFTO0FBQ1Qsd0JBQXdCO0FBQ3hCLDBDQUEwQztBQUMxQyxxREFBcUQ7QUFDckQsd0RBQXdEO0FBQ3hELGNBQWM7QUFDZCxXQUFXO0FBQ1gsdUNBQXVDO0FBQ3ZDLDRCQUE0QjtBQUM1QixnRUFBZ0U7QUFDaEUsa0RBQWtEO0FBQ2xELGlEQUFpRDtBQUNqRCxjQUFjO0FBQ2QsV0FBVztBQUNYLGtDQUFrQztBQUNsQyxrQkFBa0I7QUFDbEIsWUFBWTtBQUNaLFFBQVE7QUFFUixzRUFBc0U7QUFDdEUsd0VBQXdFO0FBQ3hFLDZCQUE2QjtBQUM3Qix3QkFBd0I7QUFDeEIsdUJBQXVCO0FBQ3ZCLFNBQVM7QUFHVCxtQkFBbUI7QUFDbkIsdURBQXVEO0FBQ3ZELGtCQUFrQjtBQUNsQixTQUFTO0FBQ1Qsd0JBQXdCO0FBQ3hCLHVDQUF1QztBQUN2Qyw0QkFBNEI7QUFDNUIsV0FBVztBQUNYLHlDQUF5QztBQUN6QywyREFBMkQ7QUFDM0Qsd0RBQXdEO0FBQ3hELGNBQWM7QUFDZCxXQUFXO0FBQ1gsUUFBUTtBQUNSLHdEQUF3RDtBQUN4RCxZQUFZO0FBQ1osb0JBQW9CO0FBQ3BCLHVCQUF1QjtBQUN2QixvQkFBb0I7QUFDcEIsU0FBUztBQUNULG1EQUFtRDtBQUNuRCxvQ0FBb0M7QUFDcEMsZ0RBQWdEO0FBQ2hELFdBQVc7QUFDWCxrQ0FBa0M7QUFDbEMsaUJBQWlCO0FBQ2pCLFlBQVk7QUFDWixPQUFPO0FBQ1Asd0RBQXdEO0FBQ3hELDJDQUEyQztBQUMzQywyQkFBMkI7QUFDM0IsWUFBWTtBQUNaLGNBQWM7QUFDZCw0QkFBNEI7QUFDNUIsb0RBQW9EO0FBQ3BELCtCQUErQjtBQUMvQix3QkFBd0I7QUFDeEIseUJBQXlCO0FBQ3pCLG9CQUFvQjtBQUNwQixhQUFhO0FBQ2IsV0FBVztBQUNYLHVCQUF1QjtBQUN2QixvQ0FBb0M7QUFDcEMsb0NBQW9DO0FBQ3BDLFdBQVc7QUFDWCxPQUFPO0FBQ1AsdUNBQXVDO0FBQ3ZDLG1CQUFtQjtBQUNuQixxQkFBcUI7QUFDckIsc0JBQXNCO0FBQ3RCLFdBQVc7QUFDWCxrQkFBa0I7QUFDbEIsU0FBUztBQUNULDJCQUEyQjtBQUMzQixVQUFVO0FBQ1YsZUFBZTtBQUNmLHVCQUF1QjtBQUN2QixpREFBaUQ7QUFDakQsMkNBQTJDO0FBQzNDLFdBQVc7QUFDWCxPQUFPO0FBRVAsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCB7Q29udmVydGVyfSBmcm9tIFwiLi4vc3JjL0NvbnZlcnRlclwiO1xuLy8gaW1wb3J0IGNzdiBmcm9tIFwiLi4vc3JjXCI7XG4vLyB2YXIgYXNzZXJ0ID0gcmVxdWlyZShcImFzc2VydFwiKTtcbi8vIHZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbi8vIHZhciBzYW5kYm94ID0gcmVxdWlyZShcInNpbm9uXCIpLnNhbmRib3guY3JlYXRlKCk7XG4vLyB2YXIgZmlsZSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdGVzdERhdGFcIjtcbi8vIHZhciB0cmFpbENvbW1hRGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdHJhaWxpbmdDb21tYVwiO1xuLy8gZGVzY3JpYmUoXCJDU1YgQ29udmVydCBpbiBCYWNrZ3JvdW5kIFByb2Nlc3NcIiwgZnVuY3Rpb24gKCkge1xuLy8gICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuLy8gICAgIHNhbmRib3gucmVzdG9yZSgpO1xuLy8gICB9KTtcblxuXG4vLyAgIGl0KFwic2hvdWxkIHJlYWQgZnJvbSBhIHN0cmVhbVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciBvYmogPSBuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGZvcms6IHRydWVcbi8vICAgICB9KTtcbi8vICAgICB2YXIgc3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlKTtcbi8vICAgICBvYmoudGhlbihmdW5jdGlvbiAob2JqKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwob2JqLmxlbmd0aCwgMik7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSwoZXJyKT0+e1xuLy8gICAgICAgY29uc29sZS5sb2coZXJyLnRvU3RyaW5nKCkpO1xuLy8gICAgIH0pO1xuLy8gICAgIHN0cmVhbS5waXBlKG9iaik7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIGNhbGwgb25OZXh0IG9uY2UgYSByb3cgaXMgcGFyc2VkLlwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciBvYmogPSBuZXcgQ29udmVydGVyKHtmb3JrOnRydWV9KTtcbi8vICAgICB2YXIgc3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlKTtcbi8vICAgICB2YXIgY2FsbGVkID0gZmFsc2U7XG4vLyAgICAgb2JqLnN1YnNjcmliZShmdW5jdGlvbiAocmVzdWx0Um93KSB7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0Um93KTtcbi8vICAgICAgIGNhbGxlZCA9IHRydWU7XG4vLyAgICAgfSk7XG4vLyAgICAgb2JqLm9uKFwiZG9uZVwiLCBmdW5jdGlvbiAoKSB7XG4vLyAgICAgICBhc3NlcnQoY2FsbGVkKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgICBzdHJlYW0ucGlwZShvYmopO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBlbWl0IGVuZF9wYXJzZWQgbWVzc2FnZSBvbmNlIGl0IGlzIGZpbmlzaGVkLlwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciBvYmogPSBuZXcgQ29udmVydGVyKHtmb3JrOnRydWV9KTtcbi8vICAgICBvYmoudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0KTtcbi8vICAgICAgIGFzc2VydChyZXN1bHQubGVuZ3RoID09PSAyKTtcbi8vICAgICAgIGFzc2VydChyZXN1bHRbMF0uZGF0ZSk7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0WzBdLmVtcGxveWVlKTtcbi8vICAgICAgIGFzc2VydChyZXN1bHRbMF0uZW1wbG95ZWUubmFtZSk7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0WzBdLmVtcGxveWVlLmFnZSk7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0WzBdLmVtcGxveWVlLm51bWJlcik7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0WzBdLmVtcGxveWVlLmtleS5sZW5ndGggPT09IDIpO1xuLy8gICAgICAgYXNzZXJ0KHJlc3VsdFswXS5hZGRyZXNzLmxlbmd0aCA9PT0gMik7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgICAgZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlKS5waXBlKG9iaik7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIGhhbmRsZSB0cmFsaW5nIGNvbW1hIGdyYWNlZnVsbHlcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgc3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0cmFpbENvbW1hRGF0YSk7XG4vLyAgICAgdmFyIG9iaiA9IG5ldyBDb252ZXJ0ZXIoe2Zvcms6dHJ1ZX0pO1xuLy8gICAgIG9iai50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbi8vICAgICAgIGFzc2VydChyZXN1bHQpO1xuLy8gICAgICAgYXNzZXJ0KHJlc3VsdC5sZW5ndGggPiAwKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgICBzdHJlYW0ucGlwZShvYmopO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBoYW5kbGUgY29tbWEgaW4gY29sdW1uIHdoaWNoIGlzIHN1cnJvdW5kZWQgYnkgcW91dGVzXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aENvbW1hXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIG9iaiA9IG5ldyBDb252ZXJ0ZXIoe1xuLy8gICAgICAgXCJxdW90ZVwiOiBcIiNcIixcbi8vICAgICAgIFwiZm9ya1wiOnRydWVcbi8vICAgICB9KTtcbi8vICAgICBvYmoudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4vLyAgICAgICBhc3NlcnQocmVzdWx0WzBdLmNvbDEgPT09IFwiXFxcIk1pbmkuIFNlY3R0XCIpO1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKHJlc3VsdFszXS5jb2wyLCBcIjEyNTAwMSxmZW52a2RzZlwiKTtcbi8vICAgICAgIC8vIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgICAgcnMucGlwZShvYmopO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBiZSBhYmxlIHRvIGNvbnZlcnQgYSBjc3YgdG8gY29sdW1uIGFycmF5IGRhdGFcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgY29sdW1BcnJEYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9jb2x1bW5BcnJheVwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oY29sdW1BcnJEYXRhKTtcbi8vICAgICB2YXIgcmVzdWx0OmFueSA9IHt9O1xuLy8gICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKHtmb3JrOnRydWV9KTtcbi8vICAgICAvL2VuZF9wYXJzZWQgd2lsbCBiZSBlbWl0dGVkIG9uY2UgcGFyc2luZyBmaW5pc2hlZFxuLy8gICAgIGNzdkNvbnZlcnRlci50aGVuKGZ1bmN0aW9uICgpIHtcbi8vICAgICAgIGFzc2VydChyZXN1bHQuVElNRVNUQU1QLmxlbmd0aCA9PT0gNSk7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG5cbi8vICAgICAvL3JlY29yZF9wYXJzZWQgd2lsbCBiZSBlbWl0dGVkIGVhY2ggdGltZSBhIHJvdyBoYXMgYmVlbiBwYXJzZWQuXG4vLyAgICAgY3N2Q29udmVydGVyLnN1YnNjcmliZShmdW5jdGlvbiAocmVzdWx0Um93LCByb3dJbmRleCkge1xuLy8gICAgICAgZm9yICh2YXIga2V5IGluIHJlc3VsdFJvdykge1xuLy8gICAgICAgICBpZiAocmVzdWx0Um93Lmhhc093blByb3BlcnR5KGtleSkpIHtcbi8vICAgICAgICAgICBpZiAoIXJlc3VsdFtrZXldIHx8ICEocmVzdWx0W2tleV0gaW5zdGFuY2VvZiBBcnJheSkpIHtcbi8vICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gW107XG4vLyAgICAgICAgICAgfVxuLy8gICAgICAgICAgIHJlc3VsdFtrZXldW3Jvd0luZGV4XSA9IHJlc3VsdFJvd1trZXldO1xuLy8gICAgICAgICB9XG4vLyAgICAgICB9XG4vLyAgICAgfSk7XG4vLyAgICAgcnMucGlwZShjc3ZDb252ZXJ0ZXIpO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBiZSBhYmxlIHRvIGNvbnZlcnQgY3N2IHN0cmluZyBkaXJlY3RseVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdGVzdERhdGFcIjtcbi8vICAgICB2YXIgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyh0ZXN0RGF0YSkudG9TdHJpbmcoKTtcbi8vICAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcih7Zm9yazp0cnVlfSk7XG4vLyAgICAgLy9lbmRfcGFyc2VkIHdpbGwgYmUgZW1pdHRlZCBvbmNlIHBhcnNpbmcgZmluaXNoZWRcbi8vICAgICBjc3ZDb252ZXJ0ZXIudGhlbihmdW5jdGlvbiAoanNvbk9iaikge1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmoubGVuZ3RoLCAyKTtcbi8vICAgICB9KTtcbi8vICAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKS50aGVuKGZ1bmN0aW9uIChqc29uT2JqKSB7XG4vLyAgICAgICBhc3NlcnQoanNvbk9iai5sZW5ndGggPT09IDIpO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBiZSBhYmxlIHRvIGNvbnZlcnQgY3N2IHN0cmluZyB3aXRoIGVycm9yXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFVuY2xvc2VkUXVvdGVzXCI7XG4vLyAgICAgdmFyIGRhdGEgPSBmcy5yZWFkRmlsZVN5bmModGVzdERhdGEpLnRvU3RyaW5nKCk7XG4vLyAgICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe2Zvcms6dHJ1ZX0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci5mcm9tU3RyaW5nKGRhdGEpLnRoZW4odW5kZWZpbmVkLCBmdW5jdGlvbiAoZXJyKSB7XG4vLyAgICAgICAvLyBjb25zb2xlLmxvZyhlcnIpO1xuLy8gICAgICAgYXNzZXJ0KGVycik7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoZXJyLmVyciwgXCJ1bmNsb3NlZF9xdW90ZVwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgYmUgYWJsZSB0byBjb252ZXJ0IGNzdiBzdHJpbmcgd2l0aG91dCBjYWxsYmFjayBwcm92aWRlZFwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdGVzdERhdGFcIjtcbi8vICAgICB2YXIgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyh0ZXN0RGF0YSkudG9TdHJpbmcoKTtcbi8vICAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcih7Zm9yazp0cnVlfSk7XG4vLyAgICAgLy9lbmRfcGFyc2VkIHdpbGwgYmUgZW1pdHRlZCBvbmNlIHBhcnNpbmcgZmluaXNoZWRcbi8vICAgICBjc3ZDb252ZXJ0ZXIudGhlbihmdW5jdGlvbiAoanNvbk9iaikge1xuLy8gICAgICAgYXNzZXJ0KGpzb25PYmoubGVuZ3RoID09PSAyKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgY29sdW1ucyB3aXRoIGRvdWJsZSBxdW90ZXNcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoUW91dGVzXCI7XG4vLyAgICAgdmFyIGRhdGEgPSBmcy5yZWFkRmlsZVN5bmModGVzdERhdGEpLnRvU3RyaW5nKCk7XG4vLyAgICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe2Zvcms6dHJ1ZX0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci5mcm9tU3RyaW5nKGRhdGEpLnRoZW4oZnVuY3Rpb24gKGpzb25PYmopIHtcbi8vICAgICAgIGFzc2VydChqc29uT2JqWzBdLlRJTUVTVEFNUCA9PT0gJzEzOTU0MjY0XCIyMicsIEpTT04uc3RyaW5naWZ5KGpzb25PYmpbMF0uVElNRVNUQU1QKSk7XG5cbi8vICAgICAgIGFzc2VydChqc29uT2JqWzFdLlRJTUVTVEFNUCA9PT0gJ2FiYywgZGVmLCBjY2MnLCBKU09OLnN0cmluZ2lmeShqc29uT2JqWzFdLlRJTUVTVEFNUCkpO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSBjb2x1bW5zIHdpdGggdHdvIGRvdWJsZSBxdW90ZXNcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL3R3b2RvdWJsZXF1b3Rlc1wiO1xuLy8gICAgIHZhciBkYXRhID0gZnMucmVhZEZpbGVTeW5jKHRlc3REYXRhKS50b1N0cmluZygpO1xuLy8gICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKHtmb3JrOnRydWV9KTtcbi8vICAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKS50aGVuKGZ1bmN0aW9uIChqc29uT2JqKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoanNvbk9ialswXS50aXRsZSwgXCJcXFwiXCIpO1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0uZGF0YSwgXCJ4eWFiY2RlXCIpO1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0udXVpZCwgXCJmZWphbFxcXCJlaWZhXCIpO1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0uZmllbGRBLCBcImJuZWpcXFwiXFxcImZhbGtmZVwiKTtcbi8vICAgICAgIGFzc2VydC5lcXVhbChqc29uT2JqWzBdLmZpZWxkQiwgXCJcXFwiZWlzamZlc1xcXCJcIik7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIGhhbmRsZSBlbXB0eSBjc3YgZmlsZVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZW1wdHlGaWxlXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe2Zvcms6dHJ1ZX0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci50aGVuKGZ1bmN0aW9uIChqc29uT2JqKSB7XG4vLyAgICAgICBhc3NlcnQoanNvbk9iai5sZW5ndGggPT09IDApO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICAgIHJzLnBpcGUoY3N2Q29udmVydGVyKTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgcGFyc2UgbGFyZ2UgY3N2IGZpbGVcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2xhcmdlLWNzdi1zYW1wbGUuY3N2XCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe2Zvcms6dHJ1ZX0pO1xuLy8gICAgIHZhciBjb3VudCA9IDA7XG4vLyAgICAgY3N2Q29udmVydGVyLnN1YnNjcmliZShmdW5jdGlvbiAoKSB7XG4vLyAgICAgICAvLyBjb25zb2xlLmxvZyhhcmd1bWVudHMpO1xuLy8gICAgICAgY291bnQrKztcbi8vICAgICB9KTtcbi8vICAgICBjc3ZDb252ZXJ0ZXIudGhlbihmdW5jdGlvbiAoKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoY291bnQsIDUyOTApO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICAgIHJzLnBpcGUoY3N2Q29udmVydGVyKTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgcGFyc2UgZGF0YSBhbmQgY292ZXJ0IHRvIHNwZWNpZmljIHR5cGVzXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFR5cGVcIjtcbi8vICAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbi8vICAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcih7XG4vLyAgICAgICBmb3JrOnRydWUsXG4vLyAgICAgICBjaGVja1R5cGU6IHRydWUsXG4vLyAgICAgICBjb2xQYXJzZXI6IHtcbi8vICAgICAgICAgXCJjb2x1bW42XCI6IFwic3RyaW5nXCIsXG4vLyAgICAgICAgIFwiY29sdW1uN1wiOiBcInN0cmluZ1wiXG4vLyAgICAgICB9XG4vLyAgICAgfSk7XG4vLyAgICAgY3N2Q29udmVydGVyLnN1YnNjcmliZShmdW5jdGlvbiAoZCkge1xuLy8gICAgICAgYXNzZXJ0KHR5cGVvZiBkLmNvbHVtbjEgPT09IFwibnVtYmVyXCIpO1xuLy8gICAgICAgYXNzZXJ0KHR5cGVvZiBkLmNvbHVtbjIgPT09IFwic3RyaW5nXCIpO1xuLy8gICAgICAgYXNzZXJ0LmVxdWFsKGRbXCJjb2x1bWU0XCJdLCBcInNvbWVpbnZhbGlkZGF0ZVwiKTtcbi8vICAgICAgIGFzc2VydChkLmNvbHVtbjUuaGVsbG8gPT09IFwid29ybGRcIik7XG4vLyAgICAgICBhc3NlcnQoZC5jb2x1bW42ID09PSAne1wiaGVsbG9cIjpcIndvcmxkXCJ9Jyk7XG4vLyAgICAgICBhc3NlcnQoZC5jb2x1bW43ID09PSBcIjEyMzRcIik7XG4vLyAgICAgICBhc3NlcnQoZC5jb2x1bW44ID09PSBcImFiY2RcIik7XG4vLyAgICAgICBhc3NlcnQoZC5jb2x1bW45ID09PSB0cnVlKTtcbi8vICAgICAgIGFzc2VydChkLmNvbHVtbjEwWzBdID09PSAyMyk7XG4vLyAgICAgICBhc3NlcnQoZC5jb2x1bW4xMFsxXSA9PT0gMzEpO1xuLy8gICAgICAgYXNzZXJ0KGQuY29sdW1uMTFbMF0uaGVsbG8gPT09IFwid29ybGRcIik7XG4vLyAgICAgICBhc3NlcnQoZFtcIm5hbWUjIVwiXSA9PT0gZmFsc2UpO1xuLy8gICAgIH0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci5vbihcImRvbmVcIiwgZnVuY3Rpb24gKCkge1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICAgIHJzLnBpcGUoY3N2Q29udmVydGVyKTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgdHVybiBvZmYgZmllbGQgdHlwZSBjaGVja1wiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YVdpdGhUeXBlXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe1xuLy8gICAgICAgZm9yazp0cnVlLFxuLy8gICAgICAgY2hlY2tUeXBlOiBmYWxzZVxuLy8gICAgIH0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci5zdWJzY3JpYmUoZnVuY3Rpb24gKGQpIHtcbi8vICAgICAgIGFzc2VydCh0eXBlb2YgZC5jb2x1bW4xID09PSBcInN0cmluZ1wiKTtcbi8vICAgICAgIGFzc2VydCh0eXBlb2YgZC5jb2x1bW4yID09PSBcInN0cmluZ1wiKTtcbi8vICAgICAgIGFzc2VydChkW1wiY29sdW1uM1wiXSA9PT0gXCIyMDEyLTAxLTAxXCIpO1xuLy8gICAgICAgYXNzZXJ0KGRbXCJjb2x1bWU0XCJdID09PSBcInNvbWVpbnZhbGlkZGF0ZVwiKTtcbi8vICAgICAgIGFzc2VydChkLmNvbHVtbjUgPT09ICd7XCJoZWxsb1wiOlwid29ybGRcIn0nKTtcbi8vICAgICAgIGFzc2VydC5lcXVhbChkW1wiY29sdW1uNlwiXSwgJ3tcImhlbGxvXCI6XCJ3b3JsZFwifScpO1xuLy8gICAgICAgYXNzZXJ0KGRbXCJjb2x1bW43XCJdID09PSBcIjEyMzRcIik7XG4vLyAgICAgICBhc3NlcnQoZFtcImNvbHVtbjhcIl0gPT09IFwiYWJjZFwiKTtcbi8vICAgICAgIGFzc2VydChkLmNvbHVtbjkgPT09IFwidHJ1ZVwiKTtcbi8vICAgICAgIGFzc2VydChkLmNvbHVtbjEwWzBdID09PSBcIjIzXCIpO1xuLy8gICAgICAgYXNzZXJ0KGQuY29sdW1uMTBbMV0gPT09IFwiMzFcIik7XG4vLyAgICAgICBhc3NlcnQoZFtcIm5hbWUjIVwiXSA9PT0gJ2ZhbHNlJyk7XG4vLyAgICAgfSk7XG4vLyAgICAgY3N2Q29udmVydGVyLnRoZW4oZnVuY3Rpb24gKCkge1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICAgIHJzLnBpcGUoY3N2Q29udmVydGVyKTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgZW1pdCBkYXRhIGV2ZW50IGNvcnJlY3RseVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvbGFyZ2UtY3N2LXNhbXBsZS5jc3ZcIjtcblxuLy8gICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0se29iamVjdE1vZGU6dHJ1ZX0pO1xuLy8gICAgIHZhciBjb3VudCA9IDA7XG4vLyAgICAgY3N2Q29udmVydGVyLm9uKFwiZGF0YVwiLCBmdW5jdGlvbiAoZCkge1xuLy8gICAgICAgY291bnQrKztcbi8vICAgICB9KTtcbi8vICAgICBjc3ZDb252ZXJ0ZXIub24oXCJkb25lXCIsIGZ1bmN0aW9uICgpIHtcbi8vICAgICAgIGFzc2VydC5lcXVhbChjc3ZDb252ZXJ0ZXIucGFyc2VkTGluZU51bWJlciwgNTI5MCk7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgcnMucGlwZShjc3ZDb252ZXJ0ZXIpO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBwcm9jZXNzIGNvbHVtbiB3aXRoIGxpbmVicmVha3NcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2xpbmVCcmVha1wiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuLy8gICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGZvcms6dHJ1ZSxcbi8vICAgICAgIGNoZWNrVHlwZTogdHJ1ZVxuLy8gICAgIH0pO1xuLy8gICAgIGNzdkNvbnZlcnRlci5zdWJzY3JpYmUoZnVuY3Rpb24gKGQpIHtcbi8vICAgICAgIGFzc2VydChkLlBlcmlvZCA9PT0gMTMpO1xuLy8gICAgICAgYXNzZXJ0KGRbXCJBcHBhcmVudCBhZ2VcIl0gPT09IFwiVW5rbm93blwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwiYmUgYWJsZSB0byBpZ25vcmUgZW1wdHkgY29sdW1uc1wiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YUlnbm9yZUVtcHR5XCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShjc3YoeyBcbi8vICAgICAgIGlnbm9yZUVtcHR5OiB0cnVlICxcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pKTtcbi8vICAgICBzdC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbi8vICAgICAgIHZhciBqID0gcmVzWzBdO1xuLy8gICAgICAgYXNzZXJ0KHJlcy5sZW5ndGggPT09IDMpO1xuLy8gICAgICAgYXNzZXJ0KGouY29sMi5sZW5ndGggPT09IDIpO1xuLy8gICAgICAgYXNzZXJ0KGouY29sMlsxXSA9PT0gXCJkM1wiKTtcbi8vICAgICAgIGFzc2VydChqLmNvbDQuY29sMyA9PT0gdW5kZWZpbmVkKTtcbi8vICAgICAgIGFzc2VydChqLmNvbDQuY29sNSA9PT0gXCJ3b3JsZFwiKTtcbi8vICAgICAgIGFzc2VydChyZXNbMV0uY29sMSA9PT0gXCJkMlwiKTtcbi8vICAgICAgIGFzc2VydChyZXNbMl0uY29sMSA9PT0gXCJkNFwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgYWxsb3cgbm8gaGVhZGVyXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9ub2hlYWRlcmNzdlwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuLy8gICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcih7IFxuLy8gICAgICAgbm9oZWFkZXI6IHRydWUsXG4vLyAgICAgICBmb3JrOnRydWVcbi8vICAgICB9KSk7XG4vLyAgICAgc3QudGhlbihmdW5jdGlvbiAocmVzKSB7XG4vLyAgICAgICB2YXIgaiA9IHJlc1swXTtcbi8vICAgICAgIGFzc2VydChyZXMubGVuZ3RoID09PSA1KTtcbi8vICAgICAgIGFzc2VydChqLmZpZWxkMSA9PT0gXCJDQzEwMi1QRE1JLTAwMVwiKTtcbi8vICAgICAgIGFzc2VydChqLmZpZWxkMiA9PT0gXCJlQ2xhc3NfNS4xLjNcIik7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIGFsbG93IGN1c3RvbWlzZWQgaGVhZGVyXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9ub2hlYWRlcmNzdlwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuLy8gICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcih7XG4vLyAgICAgICBub2hlYWRlcjogdHJ1ZSxcbi8vICAgICAgIGhlYWRlcnM6IFtcImFcIiwgXCJiXCJdLFxuLy8gICAgICAgZm9yazp0cnVlXG4vLyAgICAgfSkpO1xuLy8gICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuLy8gICAgICAgdmFyIGogPSByZXNbMF07XG4vLyAgICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gNSk7XG4vLyAgICAgICBhc3NlcnQoai5hID09PSBcIkNDMTAyLVBETUktMDAxXCIpO1xuLy8gICAgICAgYXNzZXJ0KGouYiA9PT0gXCJlQ2xhc3NfNS4xLjNcIik7XG4vLyAgICAgICBhc3NlcnQoai5maWVsZDMgPT09IFwiMTAvMy8yMDE0XCIpO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBhbGxvdyBjdXN0b21pc2VkIGhlYWRlciB0byBvdmVycmlkZSBleGlzdGluZyBoZWFkZXJcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2NvbXBsZXhKU09OQ1NWXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGhlYWRlcnM6IFtdLFxuLy8gICAgICAgZm9yazp0cnVlXG4vLyAgICAgfSkpO1xuLy8gICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuLy8gICAgICAgdmFyIGogPSByZXNbMF07XG4vLyAgICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gMik7XG4vLyAgICAgICBhc3NlcnQoai5maWVsZDEgPT09IFwiRm9vZCBGYWN0b3J5XCIpO1xuLy8gICAgICAgYXNzZXJ0KGouZmllbGQyID09PSBcIk9zY2FyXCIpO1xuLy8gICAgICAgZG9uZSgpO1xuLy8gICAgIH0pO1xuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBoYW5kbGUgd2hlbiB0aGVyZSBpcyBhbiBlbXB0eSBzdHJpbmdcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoRW1wdHlTdHJpbmdcIjtcbi8vICAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbi8vICAgICB2YXIgc3QgPSBycy5waXBlKG5ldyBDb252ZXJ0ZXIoe1xuLy8gICAgICAgbm9oZWFkZXI6IHRydWUsXG4vLyAgICAgICBoZWFkZXJzOiBbXCJhXCIsIFwiYlwiLCBcImNcIl0sXG4vLyAgICAgICBjaGVja1R5cGU6IHRydWUsXG4vLyAgICAgICBmb3JrOnRydWVcbi8vICAgICB9KSk7XG4vLyAgICAgc3QudGhlbihmdW5jdGlvbiAocmVzKSB7XG4vLyAgICAgICB2YXIgaiA9IHJlc1swXTtcblxuLy8gICAgICAgLy8gYXNzZXJ0KHJlcy5sZW5ndGg9PT0yKTtcbi8vICAgICAgIGFzc2VydChqLmEgPT09IFwiZ3JlZW5cIik7XG4vLyAgICAgICBhc3NlcnQoai5iID09PSA0MCk7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoai5jLCBcIlwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgZGV0ZWN0IGVvbCBjb3JyZWN0bHkgd2hlbiBmaXJzdCBjaHVuayBpcyBzbWFsbGVyIHRoYW4gaGVhZGVyIHJvdyBsZW5ndGhcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFOb1RyaW1DUkxGXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSwgeyBoaWdoV2F0ZXJNYXJrOiAzIH0pO1xuXG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIHRyaW06IGZhbHNlLFxuLy8gICAgICAgZm9yazp0cnVlXG4vLyAgICAgfSkpO1xuLy8gICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuLy8gICAgICAgdmFyIGogPSByZXNbMF07XG4vLyAgICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gMik7XG4vLyAgICAgICBhc3NlcnQoai5uYW1lID09PSBcImpvZVwiKTtcbi8vICAgICAgIGFzc2VydChqLmFnZSA9PT0gXCIyMFwiKTtcbi8vICAgICAgIGFzc2VydC5lcXVhbChyZXNbMV0ubmFtZSwgXCJzYW1cIik7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwocmVzWzFdLmFnZSwgXCIzMFwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgZGV0ZWN0IGVvbCBjb3JyZWN0bHkgd2hlbiBmaXJzdCBjaHVuayBlbmRzIGluIG1pZGRsZSBvZiBDUkxGIGxpbmUgYnJlYWtcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFOb1RyaW1DUkxGXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSwgeyBoaWdoV2F0ZXJNYXJrOiA5IH0pO1xuXG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIHRyaW06IGZhbHNlLFxuLy8gICAgICAgZm9yazp0cnVlXG4vLyAgICAgfSkpO1xuLy8gICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuLy8gICAgICAgdmFyIGogPSByZXNbMF07XG4vLyAgICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gMik7XG4vLyAgICAgICBhc3NlcnQoai5uYW1lID09PSBcImpvZVwiKTtcbi8vICAgICAgIGFzc2VydChqLmFnZSA9PT0gXCIyMFwiKTtcbi8vICAgICAgIGFzc2VydC5lcXVhbChyZXNbMV0ubmFtZSwgXCJzYW1cIik7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwocmVzWzFdLmFnZSwgXCIzMFwiKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgZW1pdCBlb2wgZXZlbnQgd2hlbiBsaW5lIGVuZGluZyBpcyBkZXRlY3RlZCBhcyBDUkxGXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhTm9UcmltQ1JMRlwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuXG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pKTtcbi8vICAgICB2YXIgZW9sQ2FsbGJhY2sgPSBzYW5kYm94LnNweShmdW5jdGlvbiAoZW9sKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoZW9sLCBcIlxcclxcblwiKTtcbi8vICAgICB9KTtcbi8vICAgICBzdC5vbihcImVvbFwiLCBlb2xDYWxsYmFjayk7XG4vLyAgICAgc3QudGhlbihmdW5jdGlvbiAoKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoZW9sQ2FsbGJhY2suY2FsbENvdW50LCAxLCAnc2hvdWxkIGVtaXQgZW9sIGV2ZW50IG9uY2UnKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KVxuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCBlbWl0IGVvbCBldmVudCB3aGVuIGxpbmUgZW5kaW5nIGlzIGRldGVjdGVkIGFzIExGXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9jb2x1bW5BcnJheVwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuXG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pKTtcbi8vICAgICB2YXIgZW9sQ2FsbGJhY2sgPSBzYW5kYm94LnNweShmdW5jdGlvbiAoZW9sKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoZW9sLCBcIlxcblwiKTtcbi8vICAgICB9KTtcbi8vICAgICBzdC5vbihcImVvbFwiLCBlb2xDYWxsYmFjayk7XG4vLyAgICAgc3QudGhlbihmdW5jdGlvbiAoKSB7XG4vLyAgICAgICBhc3NlcnQuZXF1YWwoZW9sQ2FsbGJhY2suY2FsbENvdW50LCAxLCAnc2hvdWxkIGVtaXQgZW9sIGV2ZW50IG9uY2UnKTtcbi8vICAgICAgIGRvbmUoKTtcbi8vICAgICB9KVxuLy8gICB9KTtcblxuLy8gICBpdChcInNob3VsZCByZW1vdmUgdGhlIEJ5dGUgT3JkZXIgTWFyayAoQk9NKSBmcm9tIGlucHV0XCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhTm9UcmltQk9NXCI7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4vLyAgICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbi8vICAgICAgIHRyaW06IGZhbHNlLFxuLy8gICAgICAgZm9yazp0cnVlXG4vLyAgICAgfSkpO1xuLy8gICAgIHN0LnRoZW4oIGZ1bmN0aW9uIChyZXMpIHtcbi8vICAgICAgIHZhciBqID0gcmVzWzBdO1xuXG4vLyAgICAgICBhc3NlcnQocmVzLmxlbmd0aD09PTIpO1xuLy8gICAgICAgYXNzZXJ0KGoubmFtZSA9PT0gXCJqb2VcIik7XG4vLyAgICAgICBhc3NlcnQoai5hZ2UgPT09IFwiMjBcIik7XG4vLyAgICAgICBkb25lKCk7XG4vLyAgICAgfSk7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIHNldCBvdXRwdXQgYXMgY3N2XCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9jb21wbGV4SlNPTkNTVlwiO1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuLy8gICAgIHZhciBudW1PZlJvdyA9IDA7XG4vLyAgICAgY3N2KHsgb3V0cHV0OiBcImNzdlwiLGZvcms6dHJ1ZSB9KVxuLy8gICAgICAgLmZyb21TdHJlYW0ocnMpXG4vLyAgICAgICAuc3Vic2NyaWJlKGZ1bmN0aW9uIChyb3csIGlkeCkge1xuLy8gICAgICAgICBudW1PZlJvdysrO1xuLy8gICAgICAgICBhc3NlcnQocm93KTtcbi8vICAgICAgICAgYXNzZXJ0KGlkeCA+PSAwKTtcbi8vICAgICAgIH0pXG5cbi8vICAgICAgIC5vbihcImRvbmVcIiwgZnVuY3Rpb24gKGVycm9yKSB7XG4vLyAgICAgICAgIGFzc2VydCghZXJyb3IpO1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoMiwgbnVtT2ZSb3cpO1xuLy8gICAgICAgICBhc3NlcnQobnVtT2ZSb3cgIT09IDApO1xuLy8gICAgICAgICBkb25lKCk7XG4vLyAgICAgICB9KTtcbi8vICAgfSk7XG4vLyAgIGl0KFwic2hvdWxkIHByb2Nlc3MgbG9uZyBoZWFkZXJcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2xvbmdIZWFkZXJcIjtcbi8vICAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhLCB7IGhpZ2hXYXRlck1hcms6IDEwMCB9KTtcbi8vICAgICB2YXIgbnVtT2ZSb3cgPSAwO1xuLy8gICAgIHZhciBudW1PZkpzb24gPSAwO1xuLy8gICAgIGNzdih7Zm9yazp0cnVlfSwgeyBoaWdoV2F0ZXJNYXJrOiAxMDAgfSlcbi8vICAgICAgIC5mcm9tU3RyZWFtKHJzKVxuLy8gICAgICAgLnN1YnNjcmliZShmdW5jdGlvbiAocmVzLCBpZHgpIHtcbi8vICAgICAgICAgbnVtT2ZKc29uKys7XG4vLyAgICAgICAgIGFzc2VydC5lcXVhbChyZXMuRGF0ZSwgJzgvMjYvMTYnKTtcbi8vICAgICAgICAgYXNzZXJ0KGlkeCA+PSAwKTtcbi8vICAgICAgIH0pXG4vLyAgICAgICAub24oXCJkb25lXCIsIGZ1bmN0aW9uICgpIHtcbi8vICAgICAgICAgYXNzZXJ0KG51bU9mSnNvbiA9PT0gMSk7XG4vLyAgICAgICAgIGRvbmUoKTtcbi8vICAgICAgIH0pO1xuLy8gICB9KTtcbi8vICAgaXQoXCJzaG91bGQgcGFyc2UgIzEzOVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhIzEzOVwiKTtcbi8vICAgICBjc3Yoe2Zvcms6dHJ1ZX0pXG4vLyAgICAgICAuZnJvbVN0cmVhbShycylcbi8vICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbi8vICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc1sxXS5maWVsZDMsIFwiOTAwMTAwOTM5NSA5MDAxMDA5OTkwXCIpO1xuLy8gICAgICAgICBkb25lKCk7XG4vLyAgICAgICB9KTtcbi8vICAgfSk7XG5cbi8vICAgaXQoXCJzaG91bGQgaWdub3JlIGNvbHVtblwiLCBmdW5jdGlvbiAoZG9uZSkge1xuLy8gICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFFvdXRlc1wiKTtcbi8vICAgICB2YXIgaGVhZGVyRW1pdHRlZCA9IGZhbHNlO1xuLy8gICAgIGNzdih7XG4vLyAgICAgICBpZ25vcmVDb2x1bW5zOiAvVElNRVNUQU1QLyxcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pXG4vLyAgICAgICAuZnJvbVN0cmVhbShycylcbi8vICAgICAgIC5vbihcImhlYWRlclwiLCBmdW5jdGlvbiAoaGVhZGVyKSB7XG4vLyAgICAgICAgIGFzc2VydC5lcXVhbChoZWFkZXIuaW5kZXhPZihcIlRJTUVTVEFNUFwiKSwgLTEpO1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyLmluZGV4T2YoXCJVUERBVEVcIiksIDApO1xuLy8gICAgICAgICBpZiAoaGVhZGVyRW1pdHRlZCkge1xuLy8gICAgICAgICAgIHRocm93IChcImhlYWRlciBldmVudCBzaG91bGQgb25seSBoYXBwZW4gb25jZVwiKVxuLy8gICAgICAgICB9XG4vLyAgICAgICAgIGhlYWRlckVtaXR0ZWQgPSB0cnVlO1xuLy8gICAgICAgfSlcbi8vICAgICAgIC8vIC5vbihcImNzdlwiLCBmdW5jdGlvbiAocm93LCBpZHgpIHtcbi8vICAgICAgIC8vICAgaWYgKCFoZWFkZXJFbWl0dGVkKSB7XG4vLyAgICAgICAvLyAgICAgdGhyb3cgKFwiaGVhZGVyIHNob3VsZCBiZSBlbWl0dGVkIGJlZm9yZSBhbnkgZGF0YSBldmVudHNcIik7XG4vLyAgICAgICAvLyAgIH1cbi8vICAgICAgIC8vICAgYXNzZXJ0KGlkeCA+PSAwKTtcbi8vICAgICAgIC8vICAgaWYgKGlkeCA9PT0gMSkge1xuLy8gICAgICAgLy8gICAgIGFzc2VydC5lcXVhbChyb3dbMF0sIFwiblwiKTtcbi8vICAgICAgIC8vICAgfVxuLy8gICAgICAgLy8gfSlcbi8vICAgICAgIC5zdWJzY3JpYmUoZnVuY3Rpb24gKGosIGlkeCkge1xuLy8gICAgICAgICAvLyBjb25zb2xlLmxvZyhqKTtcbi8vICAgICAgICAgYXNzZXJ0KCFqLlRJTUVTVEFNUCk7XG4vLyAgICAgICAgIGFzc2VydChpZHggPj0gMCk7XG4vLyAgICAgICB9KVxuLy8gICAgICAgLm9uKFwiZG9uZVwiLCBmdW5jdGlvbiAoZXJyKSB7XG4vLyAgICAgICAgIGFzc2VydCghZXJyKTtcbi8vICAgICAgICAgYXNzZXJ0KGhlYWRlckVtaXR0ZWQpO1xuLy8gICAgICAgICBkb25lKCk7XG4vLyAgICAgICB9KTtcbi8vICAgfSk7XG4vLyAgIGl0KFwic2hvdWxkIGluY2x1ZGUgY29sdW1uXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbShfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoUW91dGVzXCIpO1xuLy8gICAgIGNzdih7XG4vLyAgICAgICBpbmNsdWRlQ29sdW1uczogL1RJTUVTVEFNUC8sXG4vLyAgICAgICBmb3JrOnRydWVcbi8vICAgICB9KVxuLy8gICAgICAgLmZyb21TdHJlYW0ocnMpXG4vLyAgICAgICAub24oXCJoZWFkZXJcIiwgZnVuY3Rpb24gKGhlYWRlcikge1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyLmluZGV4T2YoXCJUSU1FU1RBTVBcIiksIDApO1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoaGVhZGVyLmluZGV4T2YoXCJVUERBVEVcIiksIC0xKTtcbi8vICAgICAgICAgYXNzZXJ0LmVxdWFsKGhlYWRlci5sZW5ndGgsIDEpO1xuLy8gICAgICAgfSlcbi8vICAgICAgIC5zdWJzY3JpYmUoZnVuY3Rpb24gKGosIGlkeCkge1xuLy8gICAgICAgICBhc3NlcnQoaWR4ID49IDApO1xuLy8gICAgICAgICBpZiAoaWR4ID09PSAxKSB7XG4vLyAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGouVElNRVNUQU1QLCBcImFiYywgZGVmLCBjY2NcIik7XG4vLyAgICAgICAgIH1cbi8vICAgICAgICAgYXNzZXJ0KCFqLlVJRClcbi8vICAgICAgICAgYXNzZXJ0KCFqWydCWVRFUyBTRU5UJ10pXG4vLyAgICAgICB9KVxuLy8gICAgICAgLm9uKFwiZG9uZVwiLCBmdW5jdGlvbiAoKSB7XG4vLyAgICAgICAgIGRvbmUoKTtcbi8vICAgICAgIH0pO1xuLy8gICB9KTtcbi8vICAgaXQoXCJzaG91bGQgYWxsb3cgaGVhZGVycyBhbmQgaW5jbHVkZSBjb2x1bW5zIHRvIGJlIGdpdmVuIGFzIHJlZmVyZW5jZSB0byB0aGUgc2FtZSB2YXJcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbi8vICAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKF9fZGlybmFtZSArIFwiL2RhdGEvY29tcGxleEpTT05DU1ZcIik7XG4vLyAgICAgdmFyIGhlYWRlcnMgPSBbXG4vLyAgICAgICAnZmlyc3QnLFxuLy8gICAgICAgJ3NlY29uZCcsXG4vLyAgICAgICAndGhpcmQnLFxuLy8gICAgIF07XG5cbi8vICAgICB2YXIgZXhwZWN0ZWQgPSBoZWFkZXJzO1xuXG4vLyAgICAgY3N2KHtcbi8vICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4vLyAgICAgICBpbmNsdWRlQ29sdW1uczogLyhmaXJzdHxzZWNvbmR8dGhpcmQpLyxcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pXG4vLyAgICAgICAuZnJvbVN0cmVhbShycylcbi8vICAgICAgIC5vbihcImhlYWRlclwiLCBmdW5jdGlvbiAoaGVhZGVyKSB7XG4vLyAgICAgICAgIGV4cGVjdGVkLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkge1xuLy8gICAgICAgICAgIGFzc2VydC5lcXVhbChoZWFkZXIuaW5kZXhPZih2YWx1ZSksIGluZGV4KTtcbi8vICAgICAgICAgfSk7XG4vLyAgICAgICB9KVxuLy8gICAgICAgLnN1YnNjcmliZShmdW5jdGlvbiAoaiwgaWR4KSB7XG4vLyAgICAgICAgIGFzc2VydChpZHggPj0gMCk7XG4vLyAgICAgICAgIGFzc2VydC5lcXVhbChleHBlY3RlZC5sZW5ndGgsIE9iamVjdC5rZXlzKGopLmxlbmd0aCk7XG4vLyAgICAgICAgIGV4cGVjdGVkLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuLy8gICAgICAgICAgIGFzc2VydChqLmhhc093blByb3BlcnR5KGF0dHJpYnV0ZSkpO1xuLy8gICAgICAgICB9KTtcbi8vICAgICAgIH0pXG4vLyAgICAgICAub24oXCJkb25lXCIsIGZ1bmN0aW9uICgpIHtcbi8vICAgICAgICAgZG9uZSgpO1xuLy8gICAgICAgfSk7XG4vLyAgIH0pO1xuXG4vLyAgIGl0KFwic2hvdWxkIGxlYXZlIHByb3ZpZGVkIHBhcmFtcyBvYmplY3RzIHVubXV0YXRlZFwiLCBmdW5jdGlvbigpIHtcbi8vICAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKF9fZGlybmFtZSArIFwiL2RhdGEvY29tcGxleEpTT05DU1ZcIik7XG4vLyAgICAgdmFyIGluY2x1ZGVDb2x1bW5zID0gW1xuLy8gICAgICAgJ2ZpZWxkQS50aXRsZScsXG4vLyAgICAgICAnZGVzY3JpcHRpb24nLFxuLy8gICAgIF07XG5cblxuLy8gICAgIHJldHVybiBjc3Yoe1xuLy8gICAgICAgaW5jbHVkZUNvbHVtbnM6IC8oZmllbGRBXFwudGl0bGV8ZGVzY3JpcHRpb24pLyxcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pXG4vLyAgICAgICAuZnJvbVN0cmVhbShycylcbi8vICAgICAgIC5vbihcImpzb25cIiwgZnVuY3Rpb24oaiwgaWR4KSB7XG4vLyAgICAgICAgIGFzc2VydChpZHggPj0gMCk7XG4vLyAgICAgICB9KVxuLy8gICAgICAgLm9uKFwiaGVhZGVyXCIsIGZ1bmN0aW9uKGhlYWRlcikge1xuLy8gICAgICAgICBpbmNsdWRlQ29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgpIHtcbi8vICAgICAgICAgICBhc3NlcnQuZXF1YWwoaW5kZXgsIGhlYWRlci5pbmRleE9mKHZhbHVlKSk7XG4vLyAgICAgICAgIH0pO1xuLy8gICAgICAgfSlcbi8vICAgfSk7XG4vLyAgIGl0KFwic2hvdWxkIGFjY2VwdCBwaXBlIGFzIHF1b3RlXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4vLyAgICAgY3N2KHtcbi8vICAgICAgIHF1b3RlOiBcInxcIixcbi8vICAgICAgIG91dHB1dDogXCJjc3ZcIixcbi8vICAgICAgIFwiZm9ya1wiOnRydWVcbi8vICAgICB9KVxuLy8gICAgICAgLmZyb21GaWxlKF9fZGlybmFtZSArIFwiL2RhdGEvcGlwZUFzUXVvdGVcIilcbi8vICAgICAgIC5zdWJzY3JpYmUoZnVuY3Rpb24gKGNzdikge1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoY3N2WzJdLCBcImJsYWhoaCwgYmxhaFwiKTtcbi8vICAgICAgIH0pXG4vLyAgICAgICAub24oJ2RvbmUnLCBmdW5jdGlvbiAoKSB7XG4vLyAgICAgICAgIGRvbmUoKVxuLy8gICAgICAgfSk7XG4vLyAgIH0pXG4vLyAgIGl0KFwic2hvdWxkIGFsbG93IGFzeW5jIHN1YnNjcmliZSBmdW5jdGlvblwiLCAoKSA9PiB7XG4vLyAgICAgcmV0dXJuIGNzdih7IHRyaW06IHRydWUsZm9yazp0cnVlIH0pXG4vLyAgICAgICAuZnJvbVN0cmluZyhgYSxiLGNcbi8vICAgICAxLDIsM1xuLy8gICAgIDQsNSw2YClcbi8vICAgICAgIC5zdWJzY3JpYmUoKGQpID0+IHtcbi8vICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbi8vICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbi8vICAgICAgICAgICAgIGQuYSA9IDEwO1xuLy8gICAgICAgICAgICAgcmVzb2x2ZSgpO1xuLy8gICAgICAgICAgIH0sIDIwKTtcbi8vICAgICAgICAgfSlcbi8vICAgICAgIH0pXG4vLyAgICAgICAudGhlbigoZCkgPT4ge1xuLy8gICAgICAgICBhc3NlcnQuZXF1YWwoZFswXS5hLCAxMCk7XG4vLyAgICAgICAgIGFzc2VydC5lcXVhbChkWzFdLmEsIDEwKTtcbi8vICAgICAgIH0pXG4vLyAgIH0pXG4vLyAgIGl0KFwic2hvdWxkIG9taXQgYSBjb2x1bW5cIiwgKCkgPT4ge1xuLy8gICAgIHJldHVybiBjc3Yoe1xuLy8gICAgICAgY29sUGFyc2VyOiB7XG4vLyAgICAgICAgIFwiYVwiOiBcIm9taXRcIlxuLy8gICAgICAgfSxcbi8vICAgICAgIGZvcms6dHJ1ZVxuLy8gICAgIH0pXG4vLyAgICAgICAuZnJvbVN0cmluZyhgYSxiLGNcbi8vICAgMSwyLDNcbi8vICAgZmVmZSw1LDZgKVxuLy8gICAgICAgLnRoZW4oKGQpID0+IHtcbi8vICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRbMF0uYSwgdW5kZWZpbmVkKTtcbi8vICAgICAgICAgYXNzZXJ0LmVxdWFsKGRbMV0uYSwgdW5kZWZpbmVkKTtcbi8vICAgICAgIH0pXG4vLyAgIH0pXG4gIFxuLy8gfSk7XG4iXX0= \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/994c8b0ade8061fb63db45ab25baaf68e9e74f24d69965986f1dfd58764d8f18.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/994c8b0ade8061fb63db45ab25baaf68e9e74f24d69965986f1dfd58764d8f18.js deleted file mode 100644 index f9b80d9..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/994c8b0ade8061fb63db45ab25baaf68e9e74f24d69965986f1dfd58764d8f18.js +++ /dev/null @@ -1,223 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var getEol_1 = __importDefault(require("./getEol")); -var util_1 = require("./util"); -var defaulDelimiters = [",", "|", "\t", ";", ":"]; -var RowSplit = /** @class */ (function () { - function RowSplit(conv) { - this.conv = conv; - this.cachedRegExp = {}; - this.delimiterEmitted = false; - this._needEmitDelimiter = undefined; - this.quote = conv.parseParam.quote; - this.trim = conv.parseParam.trim; - this.escape = conv.parseParam.escape; - } - Object.defineProperty(RowSplit.prototype, "needEmitDelimiter", { - get: function () { - if (this._needEmitDelimiter === undefined) { - this._needEmitDelimiter = this.conv.listeners("delimiter").length > 0; - } - return this._needEmitDelimiter; - }, - enumerable: true, - configurable: true - }); - RowSplit.prototype.parse = function (fileline) { - if (fileline.length === 0 || (this.conv.parseParam.ignoreEmpty && fileline.trim().length === 0)) { - return { cells: [], closed: true }; - } - var quote = this.quote; - var trim = this.trim; - var escape = this.escape; - if (this.conv.parseRuntime.delimiter instanceof Array || this.conv.parseRuntime.delimiter.toLowerCase() === "auto") { - this.conv.parseRuntime.delimiter = this.getDelimiter(fileline); - } - if (this.needEmitDelimiter && !this.delimiterEmitted) { - this.conv.emit("delimiter", this.conv.parseRuntime.delimiter); - this.delimiterEmitted = true; - } - var delimiter = this.conv.parseRuntime.delimiter; - var rowArr = fileline.split(delimiter); - if (quote === "off") { - if (trim) { - for (var i = 0; i < rowArr.length; i++) { - rowArr[i] = rowArr[i].trim(); - } - } - return { cells: rowArr, closed: true }; - } - else { - return this.toCSVRow(rowArr, trim, quote, delimiter); - } - }; - RowSplit.prototype.toCSVRow = function (rowArr, trim, quote, delimiter) { - var row = []; - var inquote = false; - var quoteBuff = ''; - for (var i = 0, rowLen = rowArr.length; i < rowLen; i++) { - var e = rowArr[i]; - if (!inquote && trim) { - e = util_1.trimLeft(e); - } - var len = e.length; - if (!inquote) { - if (len === 2 && e === this.quote + this.quote) { - row.push(""); - continue; - } - else if (this.isQuoteOpen(e)) { //quote open - e = e.substr(1); - if (this.isQuoteClose(e)) { //quote close - e = e.substring(0, e.lastIndexOf(quote)); - e = this.escapeQuote(e); - row.push(e); - continue; - } - else if (e.indexOf(quote) !== -1) { - var count = 0; - for (var _i = 0, e_1 = e; _i < e_1.length; _i++) { - var c = e_1[_i]; - if (c === quote) { - count++; - } - } - if (count % 2 === 1) { - if (trim) { - e = util_1.trimRight(e); - } - row.push(quote + e); - continue; - } - else { - inquote = true; - quoteBuff += e; - continue; - } - } - else { - inquote = true; - quoteBuff += e; - continue; - } - } - else { - if (trim) { - e = util_1.trimRight(e); - } - row.push(e); - continue; - } - } - else { //previous quote not closed - if (this.isQuoteClose(e)) { //close double quote - inquote = false; - e = e.substr(0, len - 1); - quoteBuff += delimiter + e; - quoteBuff = this.escapeQuote(quoteBuff); - if (trim) { - quoteBuff = util_1.trimRight(quoteBuff); - } - row.push(quoteBuff); - quoteBuff = ""; - } - else { - quoteBuff += delimiter + e; - } - } - } - // if (!inquote && param._needFilterRow) { - // row = filterRow(row, param); - // } - return { cells: row, closed: !inquote }; - }; - RowSplit.prototype.getDelimiter = function (fileline) { - var checker; - if (this.conv.parseParam.delimiter === "auto") { - checker = defaulDelimiters; - } - else if (this.conv.parseParam.delimiter instanceof Array) { - checker = this.conv.parseParam.delimiter; - } - else { - return this.conv.parseParam.delimiter; - } - var count = 0; - var rtn = ","; - checker.forEach(function (delim) { - var delimCount = fileline.split(delim).length; - if (delimCount > count) { - rtn = delim; - count = delimCount; - } - }); - return rtn; - }; - RowSplit.prototype.isQuoteOpen = function (str) { - var quote = this.quote; - var escape = this.escape; - return str[0] === quote && (str[1] !== quote || - str[1] === escape && (str[2] === quote || str.length === 2)); - }; - RowSplit.prototype.isQuoteClose = function (str) { - var quote = this.quote; - var escape = this.escape; - if (this.conv.parseParam.trim) { - str = util_1.trimRight(str); - } - var count = 0; - var idx = str.length - 1; - while (str[idx] === quote || str[idx] === escape) { - idx--; - count++; - } - return count % 2 !== 0; - }; - // private twoDoubleQuote(str: string): string { - // var twoQuote = this.quote + this.quote; - // var curIndex = -1; - // while ((curIndex = str.indexOf(twoQuote, curIndex)) > -1) { - // str = str.substring(0, curIndex) + str.substring(++curIndex); - // } - // return str; - // } - RowSplit.prototype.escapeQuote = function (segment) { - var key = "es|" + this.quote + "|" + this.escape; - if (this.cachedRegExp[key] === undefined) { - this.cachedRegExp[key] = new RegExp('\\' + this.escape + '\\' + this.quote, 'g'); - } - var regExp = this.cachedRegExp[key]; - // console.log(regExp,segment); - return segment.replace(regExp, this.quote); - }; - RowSplit.prototype.parseMultiLines = function (lines) { - var csvLines = []; - var left = ""; - while (lines.length) { - var line = left + lines.shift(); - var row = this.parse(line); - if (row.cells.length === 0 && this.conv.parseParam.ignoreEmpty) { - continue; - } - if (row.closed || this.conv.parseParam.alwaysSplitAtEOL) { - if (this.conv.parseRuntime.selectedColumns) { - csvLines.push(util_1.filterArray(row.cells, this.conv.parseRuntime.selectedColumns)); - } - else { - csvLines.push(row.cells); - } - left = ""; - } - else { - left = line + (getEol_1.default(line, this.conv.parseRuntime) || "\n"); - } - } - return { rowsCells: csvLines, partial: left }; - }; - return RowSplit; -}()); -exports.RowSplit = RowSplit; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9yb3dTcGxpdC50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9yb3dTcGxpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLG9EQUE4QjtBQUM5QiwrQkFBMEQ7QUFFMUQsSUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwRDtJQWFFLGtCQUFvQixJQUFlO1FBQWYsU0FBSSxHQUFKLElBQUksQ0FBVztRQVQzQixpQkFBWSxHQUE4QixFQUFFLENBQUM7UUFDN0MscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLHVCQUFrQixHQUFhLFNBQVMsQ0FBQztRQVEvQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUN2QyxDQUFDO0lBVkQsc0JBQVksdUNBQWlCO2FBQTdCO1lBQ0UsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssU0FBUyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzthQUN2RTtZQUNELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ2pDLENBQUM7OztPQUFBO0lBTUQsd0JBQUssR0FBTCxVQUFNLFFBQWtCO1FBQ3RCLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRTtZQUMvRixPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDcEM7UUFDRCxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsWUFBWSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sRUFBRTtZQUNsSCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUVoRTtRQUNELElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1NBQzlCO1FBQ0QsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQ25ELElBQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekMsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFO1lBQ25CLElBQUksSUFBSSxFQUFFO2dCQUNSLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUN0QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUM5QjthQUNGO1lBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO1NBQ3hDO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDdEQ7SUFFSCxDQUFDO0lBQ08sMkJBQVEsR0FBaEIsVUFBaUIsTUFBZ0IsRUFBRSxJQUFhLEVBQUUsS0FBYSxFQUFFLFNBQWlCO1FBQ2hGLElBQU0sR0FBRyxHQUFhLEVBQUUsQ0FBQztRQUN6QixJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ25CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdkQsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFO2dCQUNwQixDQUFDLEdBQUcsZUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2pCO1lBQ0QsSUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNyQixJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNaLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUM5QyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNiLFNBQVM7aUJBQ1Y7cUJBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsWUFBWTtvQkFDNUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLGFBQWE7d0JBQ3ZDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3pDLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUN4QixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNaLFNBQVM7cUJBQ1Y7eUJBQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO3dCQUNsQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7d0JBQ2QsS0FBZ0IsVUFBQyxFQUFELE9BQUMsRUFBRCxlQUFDLEVBQUQsSUFBQzs0QkFBWixJQUFNLENBQUMsVUFBQTs0QkFDVixJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUU7Z0NBQ2YsS0FBSyxFQUFFLENBQUM7NkJBQ1Q7eUJBQ0Y7d0JBQ0QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTs0QkFDbkIsSUFBSSxJQUFJLEVBQUU7Z0NBQ1IsQ0FBQyxHQUFHLGdCQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7NkJBQ2xCOzRCQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDOzRCQUNwQixTQUFTO3lCQUNWOzZCQUFJOzRCQUNILE9BQU8sR0FBRyxJQUFJLENBQUM7NEJBQ2YsU0FBUyxJQUFJLENBQUMsQ0FBQzs0QkFDZixTQUFTO3lCQUNWO3FCQUNGO3lCQUNJO3dCQUNILE9BQU8sR0FBRyxJQUFJLENBQUM7d0JBQ2YsU0FBUyxJQUFJLENBQUMsQ0FBQzt3QkFDZixTQUFTO3FCQUNWO2lCQUNGO3FCQUFNO29CQUNMLElBQUksSUFBSSxFQUFFO3dCQUNSLENBQUMsR0FBRyxnQkFBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNsQjtvQkFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNaLFNBQVM7aUJBQ1Y7YUFDRjtpQkFBTSxFQUFFLDJCQUEyQjtnQkFDbEMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsb0JBQW9CO29CQUM5QyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNoQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUN6QixTQUFTLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztvQkFDM0IsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3hDLElBQUksSUFBSSxFQUFFO3dCQUNSLFNBQVMsR0FBRyxnQkFBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO3FCQUNsQztvQkFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUNwQixTQUFTLEdBQUcsRUFBRSxDQUFDO2lCQUNoQjtxQkFBTTtvQkFDTCxTQUFTLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztpQkFDNUI7YUFDRjtTQUNGO1FBRUQsMENBQTBDO1FBQzFDLGlDQUFpQztRQUNqQyxJQUFJO1FBRUosT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUNPLCtCQUFZLEdBQXBCLFVBQXFCLFFBQWtCO1FBQ3JDLElBQUksT0FBTyxDQUFDO1FBQ1osSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEtBQUssTUFBTSxFQUFFO1lBQzdDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQztTQUM1QjthQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxZQUFZLEtBQUssRUFBRTtZQUMxRCxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1NBQzFDO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztTQUN2QztRQUNELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNkLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxLQUFLO1lBQzdCLElBQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ2hELElBQUksVUFBVSxHQUFHLEtBQUssRUFBRTtnQkFDdEIsR0FBRyxHQUFHLEtBQUssQ0FBQztnQkFDWixLQUFLLEdBQUcsVUFBVSxDQUFDO2FBQ3BCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFDTyw4QkFBVyxHQUFuQixVQUFvQixHQUFXO1FBQzdCLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FDekIsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUs7WUFDaEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFDTywrQkFBWSxHQUFwQixVQUFxQixHQUFXO1FBQzlCLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRTtZQUM3QixHQUFHLEdBQUcsZ0JBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN0QjtRQUNELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssTUFBTSxFQUFFO1lBQ2hELEdBQUcsRUFBRSxDQUFDO1lBQ04sS0FBSyxFQUFFLENBQUM7U0FDVDtRQUNELE9BQU8sS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELGdEQUFnRDtJQUNoRCw0Q0FBNEM7SUFDNUMsdUJBQXVCO0lBQ3ZCLGdFQUFnRTtJQUNoRSxvRUFBb0U7SUFDcEUsTUFBTTtJQUNOLGdCQUFnQjtJQUNoQixJQUFJO0lBR0ksOEJBQVcsR0FBbkIsVUFBb0IsT0FBZTtRQUNqQyxJQUFNLEdBQUcsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNuRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDbEY7UUFDRCxJQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLCtCQUErQjtRQUMvQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0Qsa0NBQWUsR0FBZixVQUFnQixLQUFpQjtRQUMvQixJQUFNLFFBQVEsR0FBZSxFQUFFLENBQUM7UUFDaEMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsT0FBTyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ25CLElBQU0sSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEMsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0JBQzlELFNBQVM7YUFDVjtZQUNELElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDdkQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUU7b0JBQzFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7aUJBQy9FO3FCQUFNO29CQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUMxQjtnQkFFRCxJQUFJLEdBQUcsRUFBRSxDQUFDO2FBQ1g7aUJBQU07Z0JBQ0wsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLGdCQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7YUFDOUQ7U0FDRjtRQUNELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBQ0gsZUFBQztBQUFELENBQUMsQUE5TUQsSUE4TUM7QUE5TVksNEJBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDU1ZQYXJzZVBhcmFtIH0gZnJvbSBcIi4vUGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgQ29udmVydGVyIH0gZnJvbSBcIi4vQ29udmVydGVyXCI7XG5pbXBvcnQgeyBGaWxlbGluZSB9IGZyb20gXCIuL2ZpbGVsaW5lXCI7XG5pbXBvcnQgZ2V0RW9sIGZyb20gXCIuL2dldEVvbFwiO1xuaW1wb3J0IHsgZmlsdGVyQXJyYXksIHRyaW1MZWZ0LCB0cmltUmlnaHQgfSBmcm9tIFwiLi91dGlsXCI7XG5cbmNvbnN0IGRlZmF1bERlbGltaXRlcnMgPSBbXCIsXCIsIFwifFwiLCBcIlxcdFwiLCBcIjtcIiwgXCI6XCJdO1xuZXhwb3J0IGNsYXNzIFJvd1NwbGl0IHtcbiAgcHJpdmF0ZSBxdW90ZTogc3RyaW5nO1xuICBwcml2YXRlIHRyaW06IGJvb2xlYW47XG4gIHByaXZhdGUgZXNjYXBlOiBzdHJpbmc7XG4gIHByaXZhdGUgY2FjaGVkUmVnRXhwOiB7IFtrZXk6IHN0cmluZ106IFJlZ0V4cCB9ID0ge307XG4gIHByaXZhdGUgZGVsaW1pdGVyRW1pdHRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9uZWVkRW1pdERlbGltaXRlcj86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgZ2V0IG5lZWRFbWl0RGVsaW1pdGVyKCkge1xuICAgIGlmICh0aGlzLl9uZWVkRW1pdERlbGltaXRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9uZWVkRW1pdERlbGltaXRlciA9IHRoaXMuY29udi5saXN0ZW5lcnMoXCJkZWxpbWl0ZXJcIikubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25lZWRFbWl0RGVsaW1pdGVyO1xuICB9XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29udjogQ29udmVydGVyKSB7XG4gICAgdGhpcy5xdW90ZSA9IGNvbnYucGFyc2VQYXJhbS5xdW90ZTtcbiAgICB0aGlzLnRyaW0gPSBjb252LnBhcnNlUGFyYW0udHJpbTtcbiAgICB0aGlzLmVzY2FwZSA9IGNvbnYucGFyc2VQYXJhbS5lc2NhcGU7XG4gIH1cbiAgcGFyc2UoZmlsZWxpbmU6IEZpbGVsaW5lKTogUm93U3BsaXRSZXN1bHQge1xuICAgIGlmIChmaWxlbGluZS5sZW5ndGggPT09IDAgfHwgKHRoaXMuY29udi5wYXJzZVBhcmFtLmlnbm9yZUVtcHR5ICYmIGZpbGVsaW5lLnRyaW0oKS5sZW5ndGggPT09IDApKSB7XG4gICAgICByZXR1cm4geyBjZWxsczogW10sIGNsb3NlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICBjb25zdCBxdW90ZSA9IHRoaXMucXVvdGU7XG4gICAgY29uc3QgdHJpbSA9IHRoaXMudHJpbTtcbiAgICBjb25zdCBlc2NhcGUgPSB0aGlzLmVzY2FwZTtcbiAgICBpZiAodGhpcy5jb252LnBhcnNlUnVudGltZS5kZWxpbWl0ZXIgaW5zdGFuY2VvZiBBcnJheSB8fCB0aGlzLmNvbnYucGFyc2VSdW50aW1lLmRlbGltaXRlci50b0xvd2VyQ2FzZSgpID09PSBcImF1dG9cIikge1xuICAgICAgdGhpcy5jb252LnBhcnNlUnVudGltZS5kZWxpbWl0ZXIgPSB0aGlzLmdldERlbGltaXRlcihmaWxlbGluZSk7XG5cbiAgICB9XG4gICAgaWYgKHRoaXMubmVlZEVtaXREZWxpbWl0ZXIgJiYgIXRoaXMuZGVsaW1pdGVyRW1pdHRlZCkge1xuICAgICAgdGhpcy5jb252LmVtaXQoXCJkZWxpbWl0ZXJcIiwgdGhpcy5jb252LnBhcnNlUnVudGltZS5kZWxpbWl0ZXIpO1xuICAgICAgdGhpcy5kZWxpbWl0ZXJFbWl0dGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgZGVsaW1pdGVyID0gdGhpcy5jb252LnBhcnNlUnVudGltZS5kZWxpbWl0ZXI7XG4gICAgY29uc3Qgcm93QXJyID0gZmlsZWxpbmUuc3BsaXQoZGVsaW1pdGVyKTtcbiAgICBpZiAocXVvdGUgPT09IFwib2ZmXCIpIHtcbiAgICAgIGlmICh0cmltKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93QXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgcm93QXJyW2ldID0gcm93QXJyW2ldLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgY2VsbHM6IHJvd0FyciwgY2xvc2VkOiB0cnVlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnRvQ1NWUm93KHJvd0FyciwgdHJpbSwgcXVvdGUsIGRlbGltaXRlcik7XG4gICAgfVxuXG4gIH1cbiAgcHJpdmF0ZSB0b0NTVlJvdyhyb3dBcnI6IHN0cmluZ1tdLCB0cmltOiBib29sZWFuLCBxdW90ZTogc3RyaW5nLCBkZWxpbWl0ZXI6IHN0cmluZyk6IFJvd1NwbGl0UmVzdWx0IHtcbiAgICBjb25zdCByb3c6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IGlucXVvdGUgPSBmYWxzZTtcbiAgICBsZXQgcXVvdGVCdWZmID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDAsIHJvd0xlbiA9IHJvd0Fyci5sZW5ndGg7IGkgPCByb3dMZW47IGkrKykge1xuICAgICAgbGV0IGUgPSByb3dBcnJbaV07XG4gICAgICBpZiAoIWlucXVvdGUgJiYgdHJpbSkge1xuICAgICAgICBlID0gdHJpbUxlZnQoZSk7XG4gICAgICB9XG4gICAgICBjb25zdCBsZW4gPSBlLmxlbmd0aDtcbiAgICAgIGlmICghaW5xdW90ZSkge1xuICAgICAgICBpZiAobGVuID09PSAyICYmIGUgPT09IHRoaXMucXVvdGUgKyB0aGlzLnF1b3RlKSB7XG4gICAgICAgICAgcm93LnB1c2goXCJcIik7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1F1b3RlT3BlbihlKSkgeyAvL3F1b3RlIG9wZW5cbiAgICAgICAgICBlID0gZS5zdWJzdHIoMSk7XG4gICAgICAgICAgaWYgKHRoaXMuaXNRdW90ZUNsb3NlKGUpKSB7IC8vcXVvdGUgY2xvc2VcbiAgICAgICAgICAgIGUgPSBlLnN1YnN0cmluZygwLCBlLmxhc3RJbmRleE9mKHF1b3RlKSk7XG4gICAgICAgICAgICBlID0gdGhpcy5lc2NhcGVRdW90ZShlKTtcbiAgICAgICAgICAgIHJvdy5wdXNoKGUpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChlLmluZGV4T2YocXVvdGUpICE9PSAtMSkge1xuICAgICAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYyBvZiBlKSB7XG4gICAgICAgICAgICAgIGlmIChjID09PSBxdW90ZSkge1xuICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb3VudCAlIDIgPT09IDEpIHtcbiAgICAgICAgICAgICAgaWYgKHRyaW0pIHtcbiAgICAgICAgICAgICAgICBlID0gdHJpbVJpZ2h0KGUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJvdy5wdXNoKHF1b3RlICsgZSk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgIGlucXVvdGUgPSB0cnVlO1xuICAgICAgICAgICAgICBxdW90ZUJ1ZmYgKz0gZTtcbiAgICAgICAgICAgICAgY29udGludWU7ICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpbnF1b3RlID0gdHJ1ZTtcbiAgICAgICAgICAgIHF1b3RlQnVmZiArPSBlO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0cmltKSB7XG4gICAgICAgICAgICBlID0gdHJpbVJpZ2h0KGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByb3cucHVzaChlKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHsgLy9wcmV2aW91cyBxdW90ZSBub3QgY2xvc2VkXG4gICAgICAgIGlmICh0aGlzLmlzUXVvdGVDbG9zZShlKSkgeyAvL2Nsb3NlIGRvdWJsZSBxdW90ZVxuICAgICAgICAgIGlucXVvdGUgPSBmYWxzZTtcbiAgICAgICAgICBlID0gZS5zdWJzdHIoMCwgbGVuIC0gMSk7XG4gICAgICAgICAgcXVvdGVCdWZmICs9IGRlbGltaXRlciArIGU7XG4gICAgICAgICAgcXVvdGVCdWZmID0gdGhpcy5lc2NhcGVRdW90ZShxdW90ZUJ1ZmYpO1xuICAgICAgICAgIGlmICh0cmltKSB7XG4gICAgICAgICAgICBxdW90ZUJ1ZmYgPSB0cmltUmlnaHQocXVvdGVCdWZmKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcm93LnB1c2gocXVvdGVCdWZmKTtcbiAgICAgICAgICBxdW90ZUJ1ZmYgPSBcIlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHF1b3RlQnVmZiArPSBkZWxpbWl0ZXIgKyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgKCFpbnF1b3RlICYmIHBhcmFtLl9uZWVkRmlsdGVyUm93KSB7XG4gICAgLy8gICByb3cgPSBmaWx0ZXJSb3cocm93LCBwYXJhbSk7XG4gICAgLy8gfVxuXG4gICAgcmV0dXJuIHsgY2VsbHM6IHJvdywgY2xvc2VkOiAhaW5xdW90ZSB9O1xuICB9XG4gIHByaXZhdGUgZ2V0RGVsaW1pdGVyKGZpbGVsaW5lOiBGaWxlbGluZSk6IHN0cmluZyB7XG4gICAgbGV0IGNoZWNrZXI7XG4gICAgaWYgKHRoaXMuY29udi5wYXJzZVBhcmFtLmRlbGltaXRlciA9PT0gXCJhdXRvXCIpIHtcbiAgICAgIGNoZWNrZXIgPSBkZWZhdWxEZWxpbWl0ZXJzO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb252LnBhcnNlUGFyYW0uZGVsaW1pdGVyIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGNoZWNrZXIgPSB0aGlzLmNvbnYucGFyc2VQYXJhbS5kZWxpbWl0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnYucGFyc2VQYXJhbS5kZWxpbWl0ZXI7XG4gICAgfVxuICAgIGxldCBjb3VudCA9IDA7XG4gICAgbGV0IHJ0biA9IFwiLFwiO1xuICAgIGNoZWNrZXIuZm9yRWFjaChmdW5jdGlvbiAoZGVsaW0pIHtcbiAgICAgIGNvbnN0IGRlbGltQ291bnQgPSBmaWxlbGluZS5zcGxpdChkZWxpbSkubGVuZ3RoO1xuICAgICAgaWYgKGRlbGltQ291bnQgPiBjb3VudCkge1xuICAgICAgICBydG4gPSBkZWxpbTtcbiAgICAgICAgY291bnQgPSBkZWxpbUNvdW50O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBydG47XG4gIH1cbiAgcHJpdmF0ZSBpc1F1b3RlT3BlbihzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHF1b3RlID0gdGhpcy5xdW90ZTtcbiAgICBjb25zdCBlc2NhcGUgPSB0aGlzLmVzY2FwZTtcbiAgICByZXR1cm4gc3RyWzBdID09PSBxdW90ZSAmJiAoXG4gICAgICBzdHJbMV0gIT09IHF1b3RlIHx8XG4gICAgICBzdHJbMV0gPT09IGVzY2FwZSAmJiAoc3RyWzJdID09PSBxdW90ZSB8fCBzdHIubGVuZ3RoID09PSAyKSk7XG4gIH1cbiAgcHJpdmF0ZSBpc1F1b3RlQ2xvc2Uoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBxdW90ZSA9IHRoaXMucXVvdGU7XG4gICAgY29uc3QgZXNjYXBlID0gdGhpcy5lc2NhcGU7XG4gICAgaWYgKHRoaXMuY29udi5wYXJzZVBhcmFtLnRyaW0pIHtcbiAgICAgIHN0ciA9IHRyaW1SaWdodChzdHIpO1xuICAgIH1cbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGxldCBpZHggPSBzdHIubGVuZ3RoIC0gMTtcbiAgICB3aGlsZSAoc3RyW2lkeF0gPT09IHF1b3RlIHx8IHN0cltpZHhdID09PSBlc2NhcGUpIHtcbiAgICAgIGlkeC0tO1xuICAgICAgY291bnQrKztcbiAgICB9XG4gICAgcmV0dXJuIGNvdW50ICUgMiAhPT0gMDtcbiAgfVxuXG4gIC8vIHByaXZhdGUgdHdvRG91YmxlUXVvdGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyAgIHZhciB0d29RdW90ZSA9IHRoaXMucXVvdGUgKyB0aGlzLnF1b3RlO1xuICAvLyAgIHZhciBjdXJJbmRleCA9IC0xO1xuICAvLyAgIHdoaWxlICgoY3VySW5kZXggPSBzdHIuaW5kZXhPZih0d29RdW90ZSwgY3VySW5kZXgpKSA+IC0xKSB7XG4gIC8vICAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKDAsIGN1ckluZGV4KSArIHN0ci5zdWJzdHJpbmcoKytjdXJJbmRleCk7XG4gIC8vICAgfVxuICAvLyAgIHJldHVybiBzdHI7XG4gIC8vIH1cblxuXG4gIHByaXZhdGUgZXNjYXBlUXVvdGUoc2VnbWVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXkgPSBcImVzfFwiICsgdGhpcy5xdW90ZSArIFwifFwiICsgdGhpcy5lc2NhcGU7XG4gICAgaWYgKHRoaXMuY2FjaGVkUmVnRXhwW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jYWNoZWRSZWdFeHBba2V5XSA9IG5ldyBSZWdFeHAoJ1xcXFwnICsgdGhpcy5lc2NhcGUgKyAnXFxcXCcgKyB0aGlzLnF1b3RlLCAnZycpO1xuICAgIH1cbiAgICBjb25zdCByZWdFeHAgPSB0aGlzLmNhY2hlZFJlZ0V4cFtrZXldO1xuICAgIC8vIGNvbnNvbGUubG9nKHJlZ0V4cCxzZWdtZW50KTtcbiAgICByZXR1cm4gc2VnbWVudC5yZXBsYWNlKHJlZ0V4cCwgdGhpcy5xdW90ZSk7XG4gIH1cbiAgcGFyc2VNdWx0aUxpbmVzKGxpbmVzOiBGaWxlbGluZVtdKTogTXVsdGlwbGVSb3dSZXN1bHQge1xuICAgIGNvbnN0IGNzdkxpbmVzOiBzdHJpbmdbXVtdID0gW107XG4gICAgbGV0IGxlZnQgPSBcIlwiO1xuICAgIHdoaWxlIChsaW5lcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBsZWZ0ICsgbGluZXMuc2hpZnQoKTtcbiAgICAgIGNvbnN0IHJvdyA9IHRoaXMucGFyc2UobGluZSk7XG4gICAgICBpZiAocm93LmNlbGxzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmNvbnYucGFyc2VQYXJhbS5pZ25vcmVFbXB0eSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChyb3cuY2xvc2VkIHx8IHRoaXMuY29udi5wYXJzZVBhcmFtLmFsd2F5c1NwbGl0QXRFT0wpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udi5wYXJzZVJ1bnRpbWUuc2VsZWN0ZWRDb2x1bW5zKSB7XG4gICAgICAgICAgY3N2TGluZXMucHVzaChmaWx0ZXJBcnJheShyb3cuY2VsbHMsIHRoaXMuY29udi5wYXJzZVJ1bnRpbWUuc2VsZWN0ZWRDb2x1bW5zKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3N2TGluZXMucHVzaChyb3cuY2VsbHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGVmdCA9IFwiXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZWZ0ID0gbGluZSArIChnZXRFb2wobGluZSwgdGhpcy5jb252LnBhcnNlUnVudGltZSkgfHwgXCJcXG5cIik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHJvd3NDZWxsczogY3N2TGluZXMsIHBhcnRpYWw6IGxlZnQgfTtcbiAgfVxufVxuZXhwb3J0IGludGVyZmFjZSBNdWx0aXBsZVJvd1Jlc3VsdCB7XG4gIHJvd3NDZWxsczogc3RyaW5nW11bXTtcbiAgcGFydGlhbDogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBSb3dTcGxpdFJlc3VsdCB7XG4gIC8qKlxuICAgKiBjc3Ygcm93IGFycmF5LiBbXCJhXCIsXCJiXCIsXCJjXCJdXG4gICAqL1xuICBjZWxsczogc3RyaW5nW10sXG4gIC8qKlxuICAgKiBpZiB0aGUgcGFzc2VkIGZpbGVsaW5lIGlzIGEgY29tcGxldGUgcm93XG4gICAqL1xuICBjbG9zZWQ6IGJvb2xlYW5cbn1cblxuIl19 \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/9ec1200ff64260596014a889ec30264b6721c20a7144d863993a743b0fd3d45f.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/9ec1200ff64260596014a889ec30264b6721c20a7144d863993a743b0fd3d45f.js deleted file mode 100644 index 7adced4..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/9ec1200ff64260596014a889ec30264b6721c20a7144d863993a743b0fd3d45f.js +++ /dev/null @@ -1,164 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var bluebird_1 = __importDefault(require("bluebird")); -var os_1 = require("os"); -var Result = /** @class */ (function () { - function Result(converter) { - this.converter = converter; - this.finalResult = []; - } - Object.defineProperty(Result.prototype, "needEmitLine", { - get: function () { - return !!this.converter.parseRuntime.subscribe && !!this.converter.parseRuntime.subscribe.onNext || this.needPushDownstream; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Result.prototype, "needPushDownstream", { - get: function () { - if (this._needPushDownstream === undefined) { - this._needPushDownstream = this.converter.listeners("data").length > 0 || this.converter.listeners("readable").length > 0; - } - return this._needPushDownstream; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Result.prototype, "needEmitAll", { - get: function () { - return !!this.converter.parseRuntime.then && this.converter.parseParam.needEmitAll; - // return !!this.converter.parseRuntime.then; - }, - enumerable: true, - configurable: true - }); - Result.prototype.processResult = function (resultLines) { - var _this = this; - var startPos = this.converter.parseRuntime.parsedLineNumber; - if (this.needPushDownstream && this.converter.parseParam.downstreamFormat === "array") { - if (startPos === 0) { - pushDownstream(this.converter, "[" + os_1.EOL); - } - } - // let prom: P; - return new bluebird_1.default(function (resolve, reject) { - if (_this.needEmitLine) { - processLineByLine(resultLines, _this.converter, 0, _this.needPushDownstream, function (err) { - if (err) { - reject(err); - } - else { - _this.appendFinalResult(resultLines); - resolve(); - } - }); - // resolve(); - } - else { - _this.appendFinalResult(resultLines); - resolve(); - } - }); - }; - Result.prototype.appendFinalResult = function (lines) { - if (this.needEmitAll) { - this.finalResult = this.finalResult.concat(lines); - } - this.converter.parseRuntime.parsedLineNumber += lines.length; - }; - Result.prototype.processError = function (err) { - if (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onError) { - this.converter.parseRuntime.subscribe.onError(err); - } - if (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onrejected) { - this.converter.parseRuntime.then.onrejected(err); - } - }; - Result.prototype.endProcess = function () { - if (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onfulfilled) { - if (this.needEmitAll) { - this.converter.parseRuntime.then.onfulfilled(this.finalResult); - } - else { - this.converter.parseRuntime.then.onfulfilled([]); - } - } - if (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onCompleted) { - this.converter.parseRuntime.subscribe.onCompleted(); - } - if (this.needPushDownstream && this.converter.parseParam.downstreamFormat === "array") { - pushDownstream(this.converter, "]" + os_1.EOL); - } - }; - return Result; -}()); -exports.Result = Result; -function processLineByLine(lines, conv, offset, needPushDownstream, cb) { - if (offset >= lines.length) { - cb(); - } - else { - if (conv.parseRuntime.subscribe && conv.parseRuntime.subscribe.onNext) { - var hook_1 = conv.parseRuntime.subscribe.onNext; - var nextLine_1 = lines[offset]; - var res = hook_1(nextLine_1, conv.parseRuntime.parsedLineNumber + offset); - offset++; - // if (isAsync === undefined) { - if (res && res.then) { - res.then(function () { - processRecursive(lines, hook_1, conv, offset, needPushDownstream, cb, nextLine_1); - }, cb); - } - else { - // processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, false); - if (needPushDownstream) { - pushDownstream(conv, nextLine_1); - } - while (offset < lines.length) { - var line = lines[offset]; - hook_1(line, conv.parseRuntime.parsedLineNumber + offset); - offset++; - if (needPushDownstream) { - pushDownstream(conv, line); - } - } - cb(); - } - // } else if (isAsync === true) { - // (res as PromiseLike).then(function () { - // processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, true); - // }, cb); - // } else if (isAsync === false) { - // processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, false); - // } - } - else { - if (needPushDownstream) { - while (offset < lines.length) { - var line = lines[offset++]; - pushDownstream(conv, line); - } - } - cb(); - } - } -} -function processRecursive(lines, hook, conv, offset, needPushDownstream, cb, res) { - if (needPushDownstream) { - pushDownstream(conv, res); - } - processLineByLine(lines, conv, offset, needPushDownstream, cb); -} -function pushDownstream(conv, res) { - if (typeof res === "object" && !conv.options.objectMode) { - var data = JSON.stringify(res); - conv.push(data + (conv.parseParam.downstreamFormat === "array" ? "," + os_1.EOL : os_1.EOL), "utf8"); - } - else { - conv.push(res); - } -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9SZXN1bHQudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvUmVzdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsc0RBQXlCO0FBRXpCLHlCQUF5QjtBQUN6QjtJQWdCRSxnQkFBb0IsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQURoQyxnQkFBVyxHQUFVLEVBQUUsQ0FBQztJQUNZLENBQUM7SUFmN0Msc0JBQVksZ0NBQVk7YUFBeEI7WUFDRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFBO1FBQzdILENBQUM7OztPQUFBO0lBRUQsc0JBQVksc0NBQWtCO2FBQTlCO1lBQ0UsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEtBQUssU0FBUyxFQUFFO2dCQUMxQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2FBQzNIO1lBQ0QsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFDbEMsQ0FBQzs7O09BQUE7SUFDRCxzQkFBWSwrQkFBVzthQUF2QjtZQUNFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7WUFDbkYsNkNBQTZDO1FBQy9DLENBQUM7OztPQUFBO0lBR0QsOEJBQWEsR0FBYixVQUFjLFdBQWdDO1FBQTlDLGlCQThCQztRQTdCQyxJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQztRQUM5RCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsS0FBSyxPQUFPLEVBQUU7WUFDckYsSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFO2dCQUNsQixjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEdBQUcsUUFBRyxDQUFDLENBQUM7YUFDM0M7U0FDRjtRQUNELG9CQUFvQjtRQUNwQixPQUFPLElBQUksa0JBQUMsQ0FBQyxVQUFDLE9BQU8sRUFBRSxNQUFNO1lBQzNCLElBQUksS0FBSSxDQUFDLFlBQVksRUFBRTtnQkFDckIsaUJBQWlCLENBQ2YsV0FBVyxFQUNYLEtBQUksQ0FBQyxTQUFTLEVBQ2QsQ0FBQyxFQUNELEtBQUksQ0FBQyxrQkFBa0IsRUFDdkIsVUFBQyxHQUFHO29CQUNGLElBQUksR0FBRyxFQUFFO3dCQUNQLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDYjt5QkFBTTt3QkFDTCxLQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQ3BDLE9BQU8sRUFBRSxDQUFDO3FCQUNYO2dCQUNILENBQUMsQ0FDRixDQUFBO2dCQUNELGFBQWE7YUFDZDtpQkFBTTtnQkFDTCxLQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3BDLE9BQU8sRUFBRSxDQUFDO2FBQ1g7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxrQ0FBaUIsR0FBakIsVUFBa0IsS0FBWTtRQUM1QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuRDtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDL0QsQ0FBQztJQUNELDZCQUFZLEdBQVosVUFBYSxHQUFhO1FBQ3hCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDMUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNwRDtRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7SUFDRCwyQkFBVSxHQUFWO1FBRUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwRixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ2hFO2lCQUFJO2dCQUNILElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDbEQ7U0FDRjtRQUNILElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUU7WUFDOUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3JEO1FBQ0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEtBQUssT0FBTyxFQUFFO1lBQ3JGLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsR0FBRyxRQUFHLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7SUFDSCxhQUFDO0FBQUQsQ0FBQyxBQTlFRCxJQThFQztBQTlFWSx3QkFBTTtBQWdGbkIsMkJBQ0UsS0FBMEIsRUFFMUIsSUFBZSxFQUNmLE1BQWMsRUFDZCxrQkFBMkIsRUFDM0IsRUFBa0I7SUFFbEIsSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtRQUMxQixFQUFFLEVBQUUsQ0FBQztLQUNOO1NBQU07UUFDTCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUNyRSxJQUFNLE1BQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDaEQsSUFBTSxVQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9CLElBQU0sR0FBRyxHQUFHLE1BQUksQ0FBQyxVQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsQ0FBQztZQUN4RSxNQUFNLEVBQUUsQ0FBQztZQUNULCtCQUErQjtZQUMvQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFO2dCQUNuQixHQUFHLENBQUMsSUFBSSxDQUFDO29CQUNQLGdCQUFnQixDQUFDLEtBQUssRUFBRSxNQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxFQUFFLEVBQUUsVUFBUSxDQUFDLENBQUM7Z0JBQ2hGLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUNSO2lCQUFNO2dCQUNMLHdGQUF3RjtnQkFDeEYsSUFBSSxrQkFBa0IsRUFBRTtvQkFDdEIsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFRLENBQUMsQ0FBQztpQkFDaEM7Z0JBQ0QsT0FBTyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRTtvQkFDNUIsSUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUMzQixNQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLENBQUM7b0JBQ3hELE1BQU0sRUFBRSxDQUFDO29CQUNULElBQUksa0JBQWtCLEVBQUU7d0JBQ3RCLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7cUJBQzVCO2lCQUNGO2dCQUNELEVBQUUsRUFBRSxDQUFDO2FBQ047WUFDRCxpQ0FBaUM7WUFDakMsa0RBQWtEO1lBQ2xELDJGQUEyRjtZQUMzRixZQUFZO1lBQ1osa0NBQWtDO1lBQ2xDLDBGQUEwRjtZQUMxRixJQUFJO1NBQ0w7YUFBTTtZQUNMLElBQUksa0JBQWtCLEVBQUU7Z0JBQ3RCLE9BQU8sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUU7b0JBQzVCLElBQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUM3QixjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUM1QjthQUVGO1lBQ0QsRUFBRSxFQUFFLENBQUM7U0FDTjtLQUVGO0FBQ0gsQ0FBQztBQUVELDBCQUNFLEtBQTBCLEVBQzFCLElBQWlFLEVBQ2pFLElBQWUsRUFDZixNQUFjLEVBQ2Qsa0JBQTJCLEVBQzNCLEVBQWtCLEVBQ2xCLEdBQXNCO0lBRXRCLElBQUksa0JBQWtCLEVBQUU7UUFDdEIsY0FBYyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztLQUMzQjtJQUNELGlCQUFpQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFDRCx3QkFBd0IsSUFBZSxFQUFFLEdBQXNCO0lBQzdELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7UUFDdkQsSUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsUUFBRyxDQUFDLENBQUMsQ0FBQyxRQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUM1RjtTQUFNO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNoQjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb252ZXJ0ZXIgfSBmcm9tIFwiLi9Db252ZXJ0ZXJcIjtcbmltcG9ydCB7IFByb2Nlc3NMaW5lUmVzdWx0IH0gZnJvbSBcIi4vUHJvY2Vzc29yXCI7XG5pbXBvcnQgUCBmcm9tIFwiYmx1ZWJpcmRcIjtcbmltcG9ydCBDU1ZFcnJvciBmcm9tIFwiLi9DU1ZFcnJvclwiO1xuaW1wb3J0IHsgRU9MIH0gZnJvbSBcIm9zXCI7XG5leHBvcnQgY2xhc3MgUmVzdWx0IHtcbiAgcHJpdmF0ZSBnZXQgbmVlZEVtaXRMaW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuY29udmVydGVyLnBhcnNlUnVudGltZS5zdWJzY3JpYmUgJiYgISF0aGlzLmNvbnZlcnRlci5wYXJzZVJ1bnRpbWUuc3Vic2NyaWJlLm9uTmV4dCB8fCB0aGlzLm5lZWRQdXNoRG93bnN0cmVhbVxuICB9XG4gIHByaXZhdGUgX25lZWRQdXNoRG93bnN0cmVhbT86IGJvb2xlYW47XG4gIHByaXZhdGUgZ2V0IG5lZWRQdXNoRG93bnN0cmVhbSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fbmVlZFB1c2hEb3duc3RyZWFtID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX25lZWRQdXNoRG93bnN0cmVhbSA9IHRoaXMuY29udmVydGVyLmxpc3RlbmVycyhcImRhdGFcIikubGVuZ3RoID4gMCB8fCB0aGlzLmNvbnZlcnRlci5saXN0ZW5lcnMoXCJyZWFkYWJsZVwiKS5sZW5ndGggPiAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbmVlZFB1c2hEb3duc3RyZWFtO1xuICB9XG4gIHByaXZhdGUgZ2V0IG5lZWRFbWl0QWxsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuY29udmVydGVyLnBhcnNlUnVudGltZS50aGVuICYmIHRoaXMuY29udmVydGVyLnBhcnNlUGFyYW0ubmVlZEVtaXRBbGw7XG4gICAgLy8gcmV0dXJuICEhdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnRoZW47XG4gIH1cbiAgcHJpdmF0ZSBmaW5hbFJlc3VsdDogYW55W10gPSBbXTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb252ZXJ0ZXI6IENvbnZlcnRlcikgeyB9XG4gIHByb2Nlc3NSZXN1bHQocmVzdWx0TGluZXM6IFByb2Nlc3NMaW5lUmVzdWx0W10pOiBQPGFueT4ge1xuICAgIGNvbnN0IHN0YXJ0UG9zID0gdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnBhcnNlZExpbmVOdW1iZXI7XG4gICAgaWYgKHRoaXMubmVlZFB1c2hEb3duc3RyZWFtICYmIHRoaXMuY29udmVydGVyLnBhcnNlUGFyYW0uZG93bnN0cmVhbUZvcm1hdCA9PT0gXCJhcnJheVwiKSB7XG4gICAgICBpZiAoc3RhcnRQb3MgPT09IDApIHtcbiAgICAgICAgcHVzaERvd25zdHJlYW0odGhpcy5jb252ZXJ0ZXIsIFwiW1wiICsgRU9MKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gbGV0IHByb206IFA8YW55PjtcbiAgICByZXR1cm4gbmV3IFAoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKHRoaXMubmVlZEVtaXRMaW5lKSB7XG4gICAgICAgIHByb2Nlc3NMaW5lQnlMaW5lKFxuICAgICAgICAgIHJlc3VsdExpbmVzLFxuICAgICAgICAgIHRoaXMuY29udmVydGVyLFxuICAgICAgICAgIDAsXG4gICAgICAgICAgdGhpcy5uZWVkUHVzaERvd25zdHJlYW0sXG4gICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuYXBwZW5kRmluYWxSZXN1bHQocmVzdWx0TGluZXMpO1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgKVxuICAgICAgICAvLyByZXNvbHZlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFwcGVuZEZpbmFsUmVzdWx0KHJlc3VsdExpbmVzKTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgYXBwZW5kRmluYWxSZXN1bHQobGluZXM6IGFueVtdKSB7XG4gICAgaWYgKHRoaXMubmVlZEVtaXRBbGwpIHtcbiAgICAgIHRoaXMuZmluYWxSZXN1bHQgPSB0aGlzLmZpbmFsUmVzdWx0LmNvbmNhdChsaW5lcyk7XG4gICAgfVxuICAgIHRoaXMuY29udmVydGVyLnBhcnNlUnVudGltZS5wYXJzZWRMaW5lTnVtYmVyICs9IGxpbmVzLmxlbmd0aDtcbiAgfVxuICBwcm9jZXNzRXJyb3IoZXJyOiBDU1ZFcnJvcikge1xuICAgIGlmICh0aGlzLmNvbnZlcnRlci5wYXJzZVJ1bnRpbWUuc3Vic2NyaWJlICYmIHRoaXMuY29udmVydGVyLnBhcnNlUnVudGltZS5zdWJzY3JpYmUub25FcnJvcikge1xuICAgICAgdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnN1YnNjcmliZS5vbkVycm9yKGVycik7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbnZlcnRlci5wYXJzZVJ1bnRpbWUudGhlbiAmJiB0aGlzLmNvbnZlcnRlci5wYXJzZVJ1bnRpbWUudGhlbi5vbnJlamVjdGVkKSB7XG4gICAgICB0aGlzLmNvbnZlcnRlci5wYXJzZVJ1bnRpbWUudGhlbi5vbnJlamVjdGVkKGVycik7XG4gICAgfVxuICB9XG4gIGVuZFByb2Nlc3MoKSB7XG4gICAgXG4gICAgICBpZiAodGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnRoZW4gJiYgdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnRoZW4ub25mdWxmaWxsZWQpIHtcbiAgICAgICAgaWYgKHRoaXMubmVlZEVtaXRBbGwpIHtcbiAgICAgICAgICB0aGlzLmNvbnZlcnRlci5wYXJzZVJ1bnRpbWUudGhlbi5vbmZ1bGZpbGxlZCh0aGlzLmZpbmFsUmVzdWx0KTtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnRoZW4ub25mdWxmaWxsZWQoW10pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgaWYgKHRoaXMuY29udmVydGVyLnBhcnNlUnVudGltZS5zdWJzY3JpYmUgJiYgdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnN1YnNjcmliZS5vbkNvbXBsZXRlZCkge1xuICAgICAgdGhpcy5jb252ZXJ0ZXIucGFyc2VSdW50aW1lLnN1YnNjcmliZS5vbkNvbXBsZXRlZCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5uZWVkUHVzaERvd25zdHJlYW0gJiYgdGhpcy5jb252ZXJ0ZXIucGFyc2VQYXJhbS5kb3duc3RyZWFtRm9ybWF0ID09PSBcImFycmF5XCIpIHtcbiAgICAgIHB1c2hEb3duc3RyZWFtKHRoaXMuY29udmVydGVyLCBcIl1cIiArIEVPTCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NMaW5lQnlMaW5lKFxuICBsaW5lczogUHJvY2Vzc0xpbmVSZXN1bHRbXSxcblxuICBjb252OiBDb252ZXJ0ZXIsXG4gIG9mZnNldDogbnVtYmVyLFxuICBuZWVkUHVzaERvd25zdHJlYW06IGJvb2xlYW4sXG4gIGNiOiAoZXJyPykgPT4gdm9pZCxcbikge1xuICBpZiAob2Zmc2V0ID49IGxpbmVzLmxlbmd0aCkge1xuICAgIGNiKCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGNvbnYucGFyc2VSdW50aW1lLnN1YnNjcmliZSAmJiBjb252LnBhcnNlUnVudGltZS5zdWJzY3JpYmUub25OZXh0KSB7XG4gICAgICBjb25zdCBob29rID0gY29udi5wYXJzZVJ1bnRpbWUuc3Vic2NyaWJlLm9uTmV4dDtcbiAgICAgIGNvbnN0IG5leHRMaW5lID0gbGluZXNbb2Zmc2V0XTtcbiAgICAgIGNvbnN0IHJlcyA9IGhvb2sobmV4dExpbmUsIGNvbnYucGFyc2VSdW50aW1lLnBhcnNlZExpbmVOdW1iZXIgKyBvZmZzZXQpO1xuICAgICAgb2Zmc2V0Kys7XG4gICAgICAvLyBpZiAoaXNBc3luYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAocmVzICYmIHJlcy50aGVuKSB7XG4gICAgICAgIHJlcy50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBwcm9jZXNzUmVjdXJzaXZlKGxpbmVzLCBob29rLCBjb252LCBvZmZzZXQsIG5lZWRQdXNoRG93bnN0cmVhbSwgY2IsIG5leHRMaW5lKTtcbiAgICAgICAgfSwgY2IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gcHJvY2Vzc1JlY3Vyc2l2ZShsaW5lcywgaG9vaywgY29udiwgb2Zmc2V0LCBuZWVkUHVzaERvd25zdHJlYW0sIGNiLCBuZXh0TGluZSwgZmFsc2UpO1xuICAgICAgICBpZiAobmVlZFB1c2hEb3duc3RyZWFtKSB7XG4gICAgICAgICAgcHVzaERvd25zdHJlYW0oY29udiwgbmV4dExpbmUpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChvZmZzZXQgPCBsaW5lcy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBsaW5lID0gbGluZXNbb2Zmc2V0XTtcbiAgICAgICAgICBob29rKGxpbmUsIGNvbnYucGFyc2VSdW50aW1lLnBhcnNlZExpbmVOdW1iZXIgKyBvZmZzZXQpO1xuICAgICAgICAgIG9mZnNldCsrO1xuICAgICAgICAgIGlmIChuZWVkUHVzaERvd25zdHJlYW0pIHtcbiAgICAgICAgICAgIHB1c2hEb3duc3RyZWFtKGNvbnYsIGxpbmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYigpO1xuICAgICAgfVxuICAgICAgLy8gfSBlbHNlIGlmIChpc0FzeW5jID09PSB0cnVlKSB7XG4gICAgICAvLyAgIChyZXMgYXMgUHJvbWlzZUxpa2U8dm9pZD4pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgLy8gICAgIHByb2Nlc3NSZWN1cnNpdmUobGluZXMsIGhvb2ssIGNvbnYsIG9mZnNldCwgbmVlZFB1c2hEb3duc3RyZWFtLCBjYiwgbmV4dExpbmUsIHRydWUpO1xuICAgICAgLy8gICB9LCBjYik7XG4gICAgICAvLyB9IGVsc2UgaWYgKGlzQXN5bmMgPT09IGZhbHNlKSB7XG4gICAgICAvLyAgIHByb2Nlc3NSZWN1cnNpdmUobGluZXMsIGhvb2ssIGNvbnYsIG9mZnNldCwgbmVlZFB1c2hEb3duc3RyZWFtLCBjYiwgbmV4dExpbmUsIGZhbHNlKTtcbiAgICAgIC8vIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5lZWRQdXNoRG93bnN0cmVhbSkge1xuICAgICAgICB3aGlsZSAob2Zmc2V0IDwgbGluZXMubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgbGluZSA9IGxpbmVzW29mZnNldCsrXTtcbiAgICAgICAgICBwdXNoRG93bnN0cmVhbShjb252LCBsaW5lKTtcbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgICBjYigpO1xuICAgIH1cblxuICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NSZWN1cnNpdmUoXG4gIGxpbmVzOiBQcm9jZXNzTGluZVJlc3VsdFtdLFxuICBob29rOiAoZGF0YTogYW55LCBsaW5lTnVtYmVyOiBudW1iZXIpID0+IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPixcbiAgY29udjogQ29udmVydGVyLFxuICBvZmZzZXQ6IG51bWJlcixcbiAgbmVlZFB1c2hEb3duc3RyZWFtOiBib29sZWFuLFxuICBjYjogKGVycj8pID0+IHZvaWQsXG4gIHJlczogUHJvY2Vzc0xpbmVSZXN1bHQsXG4pIHtcbiAgaWYgKG5lZWRQdXNoRG93bnN0cmVhbSkge1xuICAgIHB1c2hEb3duc3RyZWFtKGNvbnYsIHJlcyk7XG4gIH1cbiAgcHJvY2Vzc0xpbmVCeUxpbmUobGluZXMsIGNvbnYsIG9mZnNldCwgbmVlZFB1c2hEb3duc3RyZWFtLCBjYik7XG59XG5mdW5jdGlvbiBwdXNoRG93bnN0cmVhbShjb252OiBDb252ZXJ0ZXIsIHJlczogUHJvY2Vzc0xpbmVSZXN1bHQpIHtcbiAgaWYgKHR5cGVvZiByZXMgPT09IFwib2JqZWN0XCIgJiYgIWNvbnYub3B0aW9ucy5vYmplY3RNb2RlKSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04uc3RyaW5naWZ5KHJlcyk7XG4gICAgY29udi5wdXNoKGRhdGEgKyAoY29udi5wYXJzZVBhcmFtLmRvd25zdHJlYW1Gb3JtYXQgPT09IFwiYXJyYXlcIiA/IFwiLFwiICsgRU9MIDogRU9MKSwgXCJ1dGY4XCIpO1xuICB9IGVsc2Uge1xuICAgIGNvbnYucHVzaChyZXMpO1xuICB9XG59Il19 \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/ac6559c9ea3c7a83782cf43cf1cc03a456f7a02682d837efbfd48c3882c1725a.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/ac6559c9ea3c7a83782cf43cf1cc03a456f7a02682d837efbfd48c3882c1725a.js deleted file mode 100644 index 09b71bc..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/ac6559c9ea3c7a83782cf43cf1cc03a456f7a02682d837efbfd48c3882c1725a.js +++ /dev/null @@ -1,72 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var strip_bom_1 = __importDefault(require("strip-bom")); -/** - * For each data chunk coming to parser: - * 1. append the data to the buffer that is left from last chunk - * 2. check if utf8 chars being split, if does, stripe the bytes and add to left buffer. - * 3. stripBom - */ -function prepareData(chunk, runtime) { - var workChunk = concatLeftChunk(chunk, runtime); - runtime.csvLineBuffer = undefined; - var cleanCSVString = cleanUtf8Split(workChunk, runtime).toString("utf8"); - if (runtime.started === false) { - return strip_bom_1.default(cleanCSVString); - } - else { - return cleanCSVString; - } -} -exports.prepareData = prepareData; -/** - * append data to buffer that is left form last chunk - */ -function concatLeftChunk(chunk, runtime) { - if (runtime.csvLineBuffer && runtime.csvLineBuffer.length > 0) { - return Buffer.concat([runtime.csvLineBuffer, chunk]); - } - else { - return chunk; - } -} -/** - * check if utf8 chars being split, if does, stripe the bytes and add to left buffer. - */ -function cleanUtf8Split(chunk, runtime) { - var idx = chunk.length - 1; - /** - * From Keyang: - * The code below is to check if a single utf8 char (which could be multiple bytes) being split. - * If the char being split, the buffer from two chunk needs to be concat - * check how utf8 being encoded to understand the code below. - * If anyone has any better way to do this, please let me know. - */ - if ((chunk[idx] & 1 << 7) != 0) { - while ((chunk[idx] & 3 << 6) === 128) { - idx--; - } - idx--; - } - if (idx != chunk.length - 1) { - runtime.csvLineBuffer = chunk.slice(idx + 1); - return chunk.slice(0, idx + 1); - // var _cb=cb; - // var self=this; - // cb=function(){ - // if (self._csvLineBuffer){ - // self._csvLineBuffer=Buffer.concat([bufFromString(self._csvLineBuffer,"utf8"),left]); - // }else{ - // self._csvLineBuffer=left; - // } - // _cb(); - // } - } - else { - return chunk; - } -} -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9kYXRhQ2xlYW4udHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi9zcmMvZGF0YUNsZWFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0Esd0RBQWlDO0FBQ2pDOzs7OztHQUtHO0FBQ0gscUJBQTRCLEtBQWEsRUFBRSxPQUFxQjtJQUM5RCxJQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELE9BQU8sQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0lBQ2xDLElBQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNFLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxLQUFLLEVBQUU7UUFDN0IsT0FBTyxtQkFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQ2pDO1NBQU07UUFDTCxPQUFPLGNBQWMsQ0FBQztLQUN2QjtBQUNILENBQUM7QUFURCxrQ0FTQztBQUNEOztHQUVHO0FBQ0gseUJBQXlCLEtBQWEsRUFBRSxPQUFxQjtJQUMzRCxJQUFJLE9BQU8sQ0FBQyxhQUFhLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzdELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUN0RDtTQUFNO1FBQ0wsT0FBTyxLQUFLLENBQUM7S0FDZDtBQUNILENBQUM7QUFDRDs7R0FFRztBQUNILHdCQUF3QixLQUFhLEVBQUUsT0FBcUI7SUFDMUQsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDM0I7Ozs7OztPQU1HO0lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzlCLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtZQUNwQyxHQUFHLEVBQUUsQ0FBQztTQUNQO1FBQ0QsR0FBRyxFQUFFLENBQUM7S0FDUDtJQUNELElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzNCLE9BQU8sQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0MsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDOUIsY0FBYztRQUNkLGlCQUFpQjtRQUNqQixpQkFBaUI7UUFDakIsOEJBQThCO1FBQzlCLDJGQUEyRjtRQUMzRixXQUFXO1FBQ1gsZ0NBQWdDO1FBQ2hDLE1BQU07UUFDTixXQUFXO1FBQ1gsSUFBSTtLQUNMO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnNlUnVudGltZSB9IGZyb20gXCIuL1BhcnNlUnVudGltZVwiO1xuaW1wb3J0IHN0cmlwQm9tIGZyb20gXCJzdHJpcC1ib21cIjtcbi8qKlxuICogRm9yIGVhY2ggZGF0YSBjaHVuayBjb21pbmcgdG8gcGFyc2VyOlxuICogMS4gYXBwZW5kIHRoZSBkYXRhIHRvIHRoZSBidWZmZXIgdGhhdCBpcyBsZWZ0IGZyb20gbGFzdCBjaHVua1xuICogMi4gY2hlY2sgaWYgdXRmOCBjaGFycyBiZWluZyBzcGxpdCwgaWYgZG9lcywgc3RyaXBlIHRoZSBieXRlcyBhbmQgYWRkIHRvIGxlZnQgYnVmZmVyLlxuICogMy4gc3RyaXBCb20gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlRGF0YShjaHVuazogQnVmZmVyLCBydW50aW1lOiBQYXJzZVJ1bnRpbWUpOiBzdHJpbmcge1xuICBjb25zdCB3b3JrQ2h1bmsgPSBjb25jYXRMZWZ0Q2h1bmsoY2h1bmssIHJ1bnRpbWUpO1xuICBydW50aW1lLmNzdkxpbmVCdWZmZXIgPSB1bmRlZmluZWQ7XG4gIGNvbnN0IGNsZWFuQ1NWU3RyaW5nID0gY2xlYW5VdGY4U3BsaXQod29ya0NodW5rLCBydW50aW1lKS50b1N0cmluZyhcInV0ZjhcIik7XG4gIGlmIChydW50aW1lLnN0YXJ0ZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIHN0cmlwQm9tKGNsZWFuQ1NWU3RyaW5nKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2xlYW5DU1ZTdHJpbmc7XG4gIH1cbn1cbi8qKlxuICogIGFwcGVuZCBkYXRhIHRvIGJ1ZmZlciB0aGF0IGlzIGxlZnQgZm9ybSBsYXN0IGNodW5rXG4gKi9cbmZ1bmN0aW9uIGNvbmNhdExlZnRDaHVuayhjaHVuazogQnVmZmVyLCBydW50aW1lOiBQYXJzZVJ1bnRpbWUpOiBCdWZmZXIge1xuICBpZiAocnVudGltZS5jc3ZMaW5lQnVmZmVyICYmIHJ1bnRpbWUuY3N2TGluZUJ1ZmZlci5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW3J1bnRpbWUuY3N2TGluZUJ1ZmZlciwgY2h1bmtdKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2h1bms7XG4gIH1cbn1cbi8qKlxuICogY2hlY2sgaWYgdXRmOCBjaGFycyBiZWluZyBzcGxpdCwgaWYgZG9lcywgc3RyaXBlIHRoZSBieXRlcyBhbmQgYWRkIHRvIGxlZnQgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbGVhblV0ZjhTcGxpdChjaHVuazogQnVmZmVyLCBydW50aW1lOiBQYXJzZVJ1bnRpbWUpOiBCdWZmZXIge1xuICBsZXQgaWR4ID0gY2h1bmsubGVuZ3RoIC0gMTtcbiAgLyoqXG4gICAqIEZyb20gS2V5YW5nOlxuICAgKiBUaGUgY29kZSBiZWxvdyBpcyB0byBjaGVjayBpZiBhIHNpbmdsZSB1dGY4IGNoYXIgKHdoaWNoIGNvdWxkIGJlIG11bHRpcGxlIGJ5dGVzKSBiZWluZyBzcGxpdC5cbiAgICogSWYgdGhlIGNoYXIgYmVpbmcgc3BsaXQsIHRoZSBidWZmZXIgZnJvbSB0d28gY2h1bmsgbmVlZHMgdG8gYmUgY29uY2F0XG4gICAqIGNoZWNrIGhvdyB1dGY4IGJlaW5nIGVuY29kZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29kZSBiZWxvdy4gXG4gICAqIElmIGFueW9uZSBoYXMgYW55IGJldHRlciB3YXkgdG8gZG8gdGhpcywgcGxlYXNlIGxldCBtZSBrbm93LlxuICAgKi9cbiAgaWYgKChjaHVua1tpZHhdICYgMSA8PCA3KSAhPSAwKSB7XG4gICAgd2hpbGUgKChjaHVua1tpZHhdICYgMyA8PCA2KSA9PT0gMTI4KSB7XG4gICAgICBpZHgtLTtcbiAgICB9XG4gICAgaWR4LS07XG4gIH1cbiAgaWYgKGlkeCAhPSBjaHVuay5sZW5ndGggLSAxKSB7XG4gICAgcnVudGltZS5jc3ZMaW5lQnVmZmVyID0gY2h1bmsuc2xpY2UoaWR4ICsgMSk7XG4gICAgcmV0dXJuIGNodW5rLnNsaWNlKDAsIGlkeCArIDEpXG4gICAgLy8gdmFyIF9jYj1jYjtcbiAgICAvLyB2YXIgc2VsZj10aGlzO1xuICAgIC8vIGNiPWZ1bmN0aW9uKCl7XG4gICAgLy8gICBpZiAoc2VsZi5fY3N2TGluZUJ1ZmZlcil7XG4gICAgLy8gICAgIHNlbGYuX2NzdkxpbmVCdWZmZXI9QnVmZmVyLmNvbmNhdChbYnVmRnJvbVN0cmluZyhzZWxmLl9jc3ZMaW5lQnVmZmVyLFwidXRmOFwiKSxsZWZ0XSk7XG4gICAgLy8gICB9ZWxzZXtcbiAgICAvLyAgICAgc2VsZi5fY3N2TGluZUJ1ZmZlcj1sZWZ0O1xuICAgIC8vICAgfVxuICAgIC8vICAgX2NiKCk7XG4gICAgLy8gfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBjaHVuaztcbiAgfVxufSJdfQ== \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/c4d06c0118a31c538a37ec66e7b4ed78373de3210b31ccf65b4aed7731f9e9cd.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/c4d06c0118a31c538a37ec66e7b4ed78373de3210b31ccf65b4aed7731f9e9cd.js deleted file mode 100644 index 2b2a748..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/c4d06c0118a31c538a37ec66e7b4ed78373de3210b31ccf65b4aed7731f9e9cd.js +++ /dev/null @@ -1,418 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Converter_1 = require("../src/Converter"); -var src_1 = __importDefault(require("../src")); -var assert = require("assert"); -var fs = require("fs"); -var sandbox = require("sinon").sandbox.create(); -var file = __dirname + "/data/testData"; -var trailCommaData = __dirname + "/data/trailingComma"; -describe("CSV Converter", function () { - afterEach(function () { - sandbox.restore(); - }); - it("should create new instance of csv", function () { - var obj = new Converter_1.Converter(); - assert(obj); - }); - it("should read from a stream", function (done) { - var obj = new Converter_1.Converter(); - var stream = fs.createReadStream(file); - obj.then(function (obj) { - assert.equal(obj.length, 2); - done(); - }); - stream.pipe(obj); - }); - it("should call onNext once a row is parsed.", function (done) { - var obj = new Converter_1.Converter(); - var stream = fs.createReadStream(file); - var called = false; - obj.subscribe(function (resultRow) { - assert(resultRow); - called = true; - }); - obj.on("done", function () { - assert(called); - done(); - }); - stream.pipe(obj); - }); - it("should emit end_parsed message once it is finished.", function (done) { - var obj = new Converter_1.Converter(); - obj.then(function (result) { - assert(result); - assert(result.length === 2); - assert(result[0].date); - assert(result[0].employee); - assert(result[0].employee.name); - assert(result[0].employee.age); - assert(result[0].employee.number); - assert(result[0].employee.key.length === 2); - assert(result[0].address.length === 2); - done(); - }); - fs.createReadStream(file).pipe(obj); - }); - it("should handle traling comma gracefully", function (done) { - var stream = fs.createReadStream(trailCommaData); - var obj = new Converter_1.Converter(); - obj.then(function (result) { - assert(result); - assert(result.length > 0); - done(); - }); - stream.pipe(obj); - }); - it("should handle comma in column which is surrounded by qoutes", function (done) { - var testData = __dirname + "/data/dataWithComma"; - var rs = fs.createReadStream(testData); - var obj = new Converter_1.Converter({ - "quote": "#" - }); - obj.then(function (result) { - assert(result[0].col1 === "\"Mini. Sectt"); - assert.equal(result[3].col2, "125001,fenvkdsf"); - // console.log(result); - done(); - }); - rs.pipe(obj); - }); - it("should be able to convert a csv to column array data", function (done) { - var columArrData = __dirname + "/data/columnArray"; - var rs = fs.createReadStream(columArrData); - var result = {}; - var csvConverter = new Converter_1.Converter(); - //end_parsed will be emitted once parsing finished - csvConverter.then(function () { - assert(result.TIMESTAMP.length === 5); - done(); - }); - //record_parsed will be emitted each time a row has been parsed. - csvConverter.subscribe(function (resultRow, rowIndex) { - for (var key in resultRow) { - if (resultRow.hasOwnProperty(key)) { - if (!result[key] || !(result[key] instanceof Array)) { - result[key] = []; - } - result[key][rowIndex] = resultRow[key]; - } - } - }); - rs.pipe(csvConverter); - }); - it("should be able to convert csv string directly", function (done) { - var testData = __dirname + "/data/testData"; - var data = fs.readFileSync(testData).toString(); - var csvConverter = new Converter_1.Converter(); - //end_parsed will be emitted once parsing finished - csvConverter.then(function (jsonObj) { - assert.equal(jsonObj.length, 2); - }); - csvConverter.fromString(data).then(function (jsonObj) { - assert(jsonObj.length === 2); - done(); - }); - }); - it("should be able to convert csv string with error", function (done) { - var testData = __dirname + "/data/dataWithUnclosedQuotes"; - var data = fs.readFileSync(testData).toString(); - var csvConverter = new Converter_1.Converter(); - csvConverter.fromString(data).then(undefined, function (err) { - assert(err); - assert.equal(err.err, "unclosed_quote"); - done(); - }); - }); - it("should be able to convert csv string without callback provided", function (done) { - var testData = __dirname + "/data/testData"; - var data = fs.readFileSync(testData).toString(); - var csvConverter = new Converter_1.Converter(); - //end_parsed will be emitted once parsing finished - csvConverter.then(function (jsonObj) { - assert(jsonObj.length === 2); - done(); - }); - csvConverter.fromString(data); - }); - it("should be able to handle columns with double quotes", function (done) { - var testData = __dirname + "/data/dataWithQoutes"; - var data = fs.readFileSync(testData).toString(); - var csvConverter = new Converter_1.Converter(); - csvConverter.fromString(data).then(function (jsonObj) { - assert(jsonObj[0].TIMESTAMP === '13954264"22', JSON.stringify(jsonObj[0].TIMESTAMP)); - assert(jsonObj[1].TIMESTAMP === 'abc, def, ccc', JSON.stringify(jsonObj[1].TIMESTAMP)); - done(); - }); - }); - it("should be able to handle columns with two double quotes", function (done) { - var testData = __dirname + "/data/twodoublequotes"; - var data = fs.readFileSync(testData).toString(); - var csvConverter = new Converter_1.Converter(); - csvConverter.fromString(data).then(function (jsonObj) { - assert.equal(jsonObj[0].title, "\""); - assert.equal(jsonObj[0].data, "xyabcde"); - assert.equal(jsonObj[0].uuid, "fejal\"eifa"); - assert.equal(jsonObj[0].fieldA, "bnej\"\"falkfe"); - assert.equal(jsonObj[0].fieldB, "\"eisjfes\""); - done(); - }); - }); - it("should handle empty csv file", function (done) { - var testData = __dirname + "/data/emptyFile"; - var rs = fs.createReadStream(testData); - var csvConverter = new Converter_1.Converter(); - csvConverter.then(function (jsonObj) { - assert(jsonObj.length === 0); - done(); - }); - rs.pipe(csvConverter); - }); - it("should parse large csv file", function (done) { - var testData = __dirname + "/data/large-csv-sample.csv"; - var rs = fs.createReadStream(testData); - var csvConverter = new Converter_1.Converter(); - var count = 0; - csvConverter.subscribe(function () { - //console.log(arguments); - count++; - }); - csvConverter.then(function () { - assert(count === 5290); - done(); - }); - rs.pipe(csvConverter); - }); - it("should parse data and covert to specific types", function (done) { - var testData = __dirname + "/data/dataWithType"; - var rs = fs.createReadStream(testData); - var csvConverter = new Converter_1.Converter({ - checkType: true, - colParser: { - "column6": "string", - "column7": "string" - } - }); - csvConverter.subscribe(function (d) { - assert(typeof d.column1 === "number"); - assert(typeof d.column2 === "string"); - assert.equal(d["colume4"], "someinvaliddate"); - assert(d.column5.hello === "world"); - assert(d.column6 === '{"hello":"world"}'); - assert(d.column7 === "1234"); - assert(d.column8 === "abcd"); - assert(d.column9 === true); - assert(d.column10[0] === 23); - assert(d.column10[1] === 31); - assert(d.column11[0].hello === "world"); - assert(d["name#!"] === false); - }); - csvConverter.on("done", function () { - done(); - }); - rs.pipe(csvConverter); - }); - it("should turn off field type check", function (done) { - var testData = __dirname + "/data/dataWithType"; - var rs = fs.createReadStream(testData); - var csvConverter = new Converter_1.Converter({ - checkType: false - }); - csvConverter.subscribe(function (d) { - assert(typeof d.column1 === "string"); - assert(typeof d.column2 === "string"); - assert(d["column3"] === "2012-01-01"); - assert(d["colume4"] === "someinvaliddate"); - assert(d.column5 === '{"hello":"world"}'); - assert.equal(d["column6"], '{"hello":"world"}'); - assert(d["column7"] === "1234"); - assert(d["column8"] === "abcd"); - assert(d.column9 === "true"); - assert(d.column10[0] === "23"); - assert(d.column10[1] === "31"); - assert(d["name#!"] === 'false'); - }); - csvConverter.then(function () { - done(); - }); - rs.pipe(csvConverter); - }); - it("should emit data event correctly", function (done) { - var testData = __dirname + "/data/large-csv-sample.csv"; - var csvConverter = new Converter_1.Converter({}); - var count = 0; - csvConverter.on("data", function (d) { - count++; - }); - csvConverter.on("end", function () { - assert.equal(count, 5290); - done(); - }); - var rs = fs.createReadStream(testData); - rs.pipe(csvConverter); - }); - it("should process column with linebreaks", function (done) { - var testData = __dirname + "/data/lineBreak"; - var rs = fs.createReadStream(testData); - var csvConverter = new Converter_1.Converter({ - checkType: true - }); - csvConverter.subscribe(function (d) { - assert(d.Period === 13); - assert(d["Apparent age"] === "Unknown"); - done(); - }); - rs.pipe(csvConverter); - }); - it("be able to ignore empty columns", function (done) { - var testData = __dirname + "/data/dataIgnoreEmpty"; - var rs = fs.createReadStream(testData); - var st = rs.pipe(src_1.default({ ignoreEmpty: true })); - st.then(function (res) { - var j = res[0]; - assert(res.length === 3); - assert(j.col2.length === 2); - assert(j.col2[1] === "d3"); - assert(j.col4.col3 === undefined); - assert(j.col4.col5 === "world"); - assert(res[1].col1 === "d2"); - assert(res[2].col1 === "d4"); - done(); - }); - }); - it("should allow no header", function (done) { - var testData = __dirname + "/data/noheadercsv"; - var rs = fs.createReadStream(testData); - var st = rs.pipe(new Converter_1.Converter({ noheader: true })); - st.then(function (res) { - var j = res[0]; - assert(res.length === 5); - assert(j.field1 === "CC102-PDMI-001"); - assert(j.field2 === "eClass_5.1.3"); - done(); - }); - }); - it("should allow customised header", function (done) { - var testData = __dirname + "/data/noheadercsv"; - var rs = fs.createReadStream(testData); - var st = rs.pipe(new Converter_1.Converter({ - noheader: true, - headers: ["a", "b"] - })); - st.then(function (res) { - var j = res[0]; - assert(res.length === 5); - assert(j.a === "CC102-PDMI-001"); - assert(j.b === "eClass_5.1.3"); - assert(j.field3 === "10/3/2014"); - done(); - }); - }); - it("should allow customised header to override existing header", function (done) { - var testData = __dirname + "/data/complexJSONCSV"; - var rs = fs.createReadStream(testData); - var st = rs.pipe(new Converter_1.Converter({ - headers: [] - })); - st.then(function (res) { - var j = res[0]; - assert(res.length === 2); - assert(j.field1 === "Food Factory"); - assert(j.field2 === "Oscar"); - done(); - }); - }); - it("should handle when there is an empty string", function (done) { - var testData = __dirname + "/data/dataWithEmptyString"; - var rs = fs.createReadStream(testData); - var st = rs.pipe(new Converter_1.Converter({ - noheader: true, - headers: ["a", "b", "c"], - checkType: true - })); - st.then(function (res) { - var j = res[0]; - // assert(res.length===2); - assert(j.a === "green"); - assert(j.b === 40); - assert.equal(j.c, ""); - done(); - }); - }); - it("should detect eol correctly when first chunk is smaller than header row length", function (done) { - var testData = __dirname + "/data/dataNoTrimCRLF"; - var rs = fs.createReadStream(testData, { highWaterMark: 3 }); - var st = rs.pipe(new Converter_1.Converter({ - trim: false - })); - st.then(function (res) { - var j = res[0]; - assert(res.length === 2); - assert(j.name === "joe"); - assert(j.age === "20"); - assert.equal(res[1].name, "sam"); - assert.equal(res[1].age, "30"); - done(); - }); - }); - it("should detect eol correctly when first chunk ends in middle of CRLF line break", function (done) { - var testData = __dirname + "/data/dataNoTrimCRLF"; - var rs = fs.createReadStream(testData, { highWaterMark: 9 }); - var st = rs.pipe(new Converter_1.Converter({ - trim: false - })); - st.then(function (res) { - var j = res[0]; - assert(res.length === 2); - assert(j.name === "joe"); - assert(j.age === "20"); - assert.equal(res[1].name, "sam"); - assert.equal(res[1].age, "30"); - done(); - }); - }); - it("should emit eol event when line ending is detected as CRLF", function (done) { - var testData = __dirname + "/data/dataNoTrimCRLF"; - var rs = fs.createReadStream(testData); - var st = rs.pipe(new Converter_1.Converter()); - var eolCallback = sandbox.spy(function (eol) { - assert.equal(eol, "\r\n"); - }); - st.on("eol", eolCallback); - st.then(function () { - assert.equal(eolCallback.callCount, 1, 'should emit eol event once'); - done(); - }); - }); - it("should emit eol event when line ending is detected as LF", function (done) { - var testData = __dirname + "/data/columnArray"; - var rs = fs.createReadStream(testData); - var st = rs.pipe(new Converter_1.Converter()); - var eolCallback = sandbox.spy(function (eol) { - assert.equal(eol, "\n"); - }); - st.on("eol", eolCallback); - st.then(function () { - assert.equal(eolCallback.callCount, 1, 'should emit eol event once'); - done(); - }); - }); - it("should remove the Byte Order Mark (BOM) from input", function (done) { - var testData = __dirname + "/data/dataNoTrimBOM"; - var rs = fs.createReadStream(testData); - var st = rs.pipe(new Converter_1.Converter({ - trim: false - })); - st.then(function (res) { - var j = res[0]; - assert(res.length === 2); - assert(j.name === "joe"); - assert(j.age === "20"); - done(); - }); - }); -}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3Rlc3QvdGVzdENTVkNvbnZlcnRlci50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3Rlc3QvdGVzdENTVkNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDhDQUEyQztBQUMzQywrQ0FBeUI7QUFDekIsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9CLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QixJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2hELElBQUksSUFBSSxHQUFHLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztBQUN4QyxJQUFJLGNBQWMsR0FBRyxTQUFTLEdBQUcscUJBQXFCLENBQUM7QUFDdkQsUUFBUSxDQUFDLGVBQWUsRUFBRTtJQUN4QixTQUFTLENBQUM7UUFDUixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsbUNBQW1DLEVBQUU7UUFDdEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxxQkFBUyxFQUFFLENBQUM7UUFDMUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsMkJBQTJCLEVBQUUsVUFBVSxJQUFJO1FBQzVDLElBQUksR0FBRyxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFDO1FBQzFCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNwQixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUIsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsMENBQTBDLEVBQUUsVUFBVSxJQUFJO1FBQzNELElBQUksR0FBRyxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFDO1FBQzFCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLFNBQVM7WUFDL0IsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xCLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRTtZQUNiLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNmLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHFEQUFxRCxFQUFFLFVBQVUsSUFBSTtRQUN0RSxJQUFJLEdBQUcsR0FBRyxJQUFJLHFCQUFTLEVBQUUsQ0FBQztRQUMxQixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsTUFBTTtZQUN2QixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDZixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdkMsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsd0NBQXdDLEVBQUUsVUFBVSxJQUFJO1FBQ3pELElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNqRCxJQUFJLEdBQUcsR0FBRyxJQUFJLHFCQUFTLEVBQUUsQ0FBQztRQUMxQixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsTUFBTTtZQUN2QixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDZixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMxQixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw2REFBNkQsRUFBRSxVQUFVLElBQUk7UUFDOUUsSUFBSSxRQUFRLEdBQUcsU0FBUyxHQUFHLHFCQUFxQixDQUFDO1FBQ2pELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxJQUFJLEdBQUcsR0FBRyxJQUFJLHFCQUFTLENBQUM7WUFDdEIsT0FBTyxFQUFFLEdBQUc7U0FDYixDQUFDLENBQUM7UUFDSCxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsTUFBTTtZQUN2QixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsQ0FBQztZQUMzQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUNoRCx1QkFBdUI7WUFDdkIsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxzREFBc0QsRUFBRSxVQUFVLElBQUk7UUFDdkUsSUFBSSxZQUFZLEdBQUcsU0FBUyxHQUFHLG1CQUFtQixDQUFDO1FBQ25ELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMzQyxJQUFJLE1BQU0sR0FBTyxFQUFFLENBQUM7UUFDcEIsSUFBSSxZQUFZLEdBQUcsSUFBSSxxQkFBUyxFQUFFLENBQUM7UUFDbkMsa0RBQWtEO1FBQ2xELFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDaEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFFSCxnRUFBZ0U7UUFDaEUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLFNBQVMsRUFBRSxRQUFRO1lBQ2xELEtBQUssSUFBSSxHQUFHLElBQUksU0FBUyxFQUFFO2dCQUN6QixJQUFJLFNBQVMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxLQUFLLENBQUMsRUFBRTt3QkFDbkQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztxQkFDbEI7b0JBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDeEM7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrQ0FBK0MsRUFBRSxVQUFVLElBQUk7UUFDaEUsSUFBSSxRQUFRLEdBQUcsU0FBUyxHQUFHLGdCQUFnQixDQUFDO1FBQzVDLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEQsSUFBSSxZQUFZLEdBQUcsSUFBSSxxQkFBUyxFQUFFLENBQUM7UUFDbkMsa0RBQWtEO1FBQ2xELFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxPQUFPO1lBQ2pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsT0FBTztZQUNsRCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM3QixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaURBQWlELEVBQUUsVUFBVSxJQUFJO1FBQ2xFLElBQUksUUFBUSxHQUFHLFNBQVMsR0FBRyw4QkFBOEIsQ0FBQztRQUMxRCxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hELElBQUksWUFBWSxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFDO1FBQ25DLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLEdBQUc7WUFDekQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ1osTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDeEMsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGdFQUFnRSxFQUFFLFVBQVUsSUFBSTtRQUNqRixJQUFJLFFBQVEsR0FBRyxTQUFTLEdBQUcsZ0JBQWdCLENBQUM7UUFDNUMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoRCxJQUFJLFlBQVksR0FBRyxJQUFJLHFCQUFTLEVBQUUsQ0FBQztRQUNuQyxrREFBa0Q7UUFDbEQsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLE9BQU87WUFDakMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDN0IsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMscURBQXFELEVBQUUsVUFBVSxJQUFJO1FBQ3RFLElBQUksUUFBUSxHQUFHLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQztRQUNsRCxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hELElBQUksWUFBWSxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFDO1FBQ25DLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsT0FBTztZQUNsRCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxhQUFhLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUVyRixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN2RixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMseURBQXlELEVBQUUsVUFBVSxJQUFJO1FBQzFFLElBQUksUUFBUSxHQUFHLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQztRQUNuRCxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hELElBQUksWUFBWSxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFDO1FBQ25DLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsT0FBTztZQUNsRCxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztZQUM3QyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUNsRCxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDL0MsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDhCQUE4QixFQUFFLFVBQVUsSUFBSTtRQUMvQyxJQUFJLFFBQVEsR0FBRyxTQUFTLEdBQUcsaUJBQWlCLENBQUM7UUFDN0MsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksWUFBWSxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFDO1FBQ25DLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxPQUFPO1lBQ2pDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzdCLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDZCQUE2QixFQUFFLFVBQVUsSUFBSTtRQUM5QyxJQUFJLFFBQVEsR0FBRyxTQUFTLEdBQUcsNEJBQTRCLENBQUM7UUFDeEQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksWUFBWSxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFDO1FBQ25DLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLFlBQVksQ0FBQyxTQUFTLENBQUM7WUFDckIseUJBQXlCO1lBQ3pCLEtBQUssRUFBRSxDQUFDO1FBQ1YsQ0FBQyxDQUFDLENBQUM7UUFDSCxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ2hCLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDdkIsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsZ0RBQWdELEVBQUUsVUFBVSxJQUFJO1FBQ2pFLElBQUksUUFBUSxHQUFHLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQztRQUNoRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxZQUFZLEdBQUcsSUFBSSxxQkFBUyxDQUFDO1lBQy9CLFNBQVMsRUFBRSxJQUFJO1lBQ2YsU0FBUyxFQUFFO2dCQUNULFNBQVMsRUFBRSxRQUFRO2dCQUNuQixTQUFTLEVBQUUsUUFBUTthQUNwQjtTQUNGLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUM7WUFDdEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQztZQUNwQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQztZQUN4QyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUU7WUFDdEIsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsa0NBQWtDLEVBQUUsVUFBVSxJQUFJO1FBQ25ELElBQUksUUFBUSxHQUFHLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQztRQUNoRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxZQUFZLEdBQUcsSUFBSSxxQkFBUyxDQUFDO1lBQy9CLFNBQVMsRUFBRSxLQUFLO1NBQ2pCLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUM7WUFDdEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLFlBQVksQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssaUJBQWlCLENBQUMsQ0FBQztZQUMzQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFDaEQsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQztZQUNoQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ2hCLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtDQUFrQyxFQUFFLFVBQVUsSUFBSTtRQUNuRCxJQUFJLFFBQVEsR0FBRyxTQUFTLEdBQUcsNEJBQTRCLENBQUM7UUFFeEQsSUFBSSxZQUFZLEdBQUcsSUFBSSxxQkFBUyxDQUFDLEVBQ2hDLENBQUMsQ0FBQztRQUNILElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQztZQUNqQyxLQUFLLEVBQUUsQ0FBQztRQUNWLENBQUMsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUU7WUFDckIsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDMUIsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLFVBQVUsSUFBSTtRQUN4RCxJQUFJLFFBQVEsR0FBRyxTQUFTLEdBQUcsaUJBQWlCLENBQUM7UUFDN0MsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksWUFBWSxHQUFHLElBQUkscUJBQVMsQ0FBQztZQUMvQixTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUFDLENBQUM7UUFDSCxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUNoQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQztZQUN4QixNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlDQUFpQyxFQUFFLFVBQVUsSUFBSTtRQUNsRCxJQUFJLFFBQVEsR0FBRyxTQUFTLEdBQUcsdUJBQXVCLENBQUM7UUFDbkQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBRyxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3QyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNuQixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN6QixNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDNUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDM0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQztZQUNoQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztZQUM3QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztZQUM3QixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsd0JBQXdCLEVBQUUsVUFBVSxJQUFJO1FBQ3pDLElBQUksUUFBUSxHQUFHLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQztRQUMvQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLHFCQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BELEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLENBQUM7WUFDdEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDLENBQUM7WUFDcEMsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLFVBQVUsSUFBSTtRQUNqRCxJQUFJLFFBQVEsR0FBRyxTQUFTLEdBQUcsbUJBQW1CLENBQUM7UUFDL0MsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxxQkFBUyxDQUFDO1lBQzdCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztTQUNwQixDQUFDLENBQUMsQ0FBQztRQUNKLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLGdCQUFnQixDQUFDLENBQUM7WUFDakMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssY0FBYyxDQUFDLENBQUM7WUFDL0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUM7WUFDakMsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDREQUE0RCxFQUFFLFVBQVUsSUFBSTtRQUM3RSxJQUFJLFFBQVEsR0FBRyxTQUFTLEdBQUcsc0JBQXNCLENBQUM7UUFDbEQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxxQkFBUyxDQUFDO1lBQzdCLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUFDLENBQUM7UUFDSixFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNuQixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN6QixNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxjQUFjLENBQUMsQ0FBQztZQUNwQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsQ0FBQztZQUM3QixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkNBQTZDLEVBQUUsVUFBVSxJQUFJO1FBQzlELElBQUksUUFBUSxHQUFHLFNBQVMsR0FBRywyQkFBMkIsQ0FBQztRQUN2RCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLHFCQUFTLENBQUM7WUFDN0IsUUFBUSxFQUFFLElBQUk7WUFDZCxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztZQUN4QixTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUFDLENBQUMsQ0FBQztRQUNKLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVmLDBCQUEwQjtZQUMxQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPLENBQUMsQ0FBQztZQUN4QixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNuQixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEIsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGdGQUFnRixFQUFFLFVBQVUsSUFBSTtRQUNqRyxJQUFJLFFBQVEsR0FBRyxTQUFTLEdBQUcsc0JBQXNCLENBQUM7UUFDbEQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTdELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxxQkFBUyxDQUFDO1lBQzdCLElBQUksRUFBRSxLQUFLO1NBQ1osQ0FBQyxDQUFDLENBQUM7UUFDSixFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNuQixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN6QixNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQztZQUN6QixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUN2QixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDakMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQy9CLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxnRkFBZ0YsRUFBRSxVQUFVLElBQUk7UUFDakcsSUFBSSxRQUFRLEdBQUcsU0FBUyxHQUFHLHNCQUFzQixDQUFDO1FBQ2xELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU3RCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUkscUJBQVMsQ0FBQztZQUM3QixJQUFJLEVBQUUsS0FBSztTQUNaLENBQUMsQ0FBQyxDQUFDO1FBQ0osRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUc7WUFDbkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDekIsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7WUFDekIsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMvQixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNERBQTRELEVBQUUsVUFBVSxJQUFJO1FBQzdFLElBQUksUUFBUSxHQUFHLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQztRQUNsRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdkMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLHFCQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHO1lBQ3pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDMUIsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNOLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztZQUNyRSxJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsMERBQTBELEVBQUUsVUFBVSxJQUFJO1FBQzNFLElBQUksUUFBUSxHQUFHLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQztRQUMvQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdkMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLHFCQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHO1lBQ3pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDMUIsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNOLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztZQUNyRSxJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsb0RBQW9ELEVBQUUsVUFBVSxJQUFJO1FBQ3JFLElBQUksUUFBUSxHQUFHLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQztRQUNqRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLHFCQUFTLENBQUM7WUFDN0IsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDLENBQUMsQ0FBQztRQUNKLEVBQUUsQ0FBQyxJQUFJLENBQUUsVUFBVSxHQUFHO1lBQ3BCLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVmLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb252ZXJ0ZXJ9IGZyb20gXCIuLi9zcmMvQ29udmVydGVyXCI7XG5pbXBvcnQgY3N2IGZyb20gXCIuLi9zcmNcIjtcbnZhciBhc3NlcnQgPSByZXF1aXJlKFwiYXNzZXJ0XCIpO1xudmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xudmFyIHNhbmRib3ggPSByZXF1aXJlKFwic2lub25cIikuc2FuZGJveC5jcmVhdGUoKTtcbnZhciBmaWxlID0gX19kaXJuYW1lICsgXCIvZGF0YS90ZXN0RGF0YVwiO1xudmFyIHRyYWlsQ29tbWFEYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS90cmFpbGluZ0NvbW1hXCI7XG5kZXNjcmliZShcIkNTViBDb252ZXJ0ZXJcIiwgZnVuY3Rpb24gKCkge1xuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNhbmRib3gucmVzdG9yZSgpO1xuICB9KTtcblxuICBpdChcInNob3VsZCBjcmVhdGUgbmV3IGluc3RhbmNlIG9mIGNzdlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9iaiA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICBhc3NlcnQob2JqKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgcmVhZCBmcm9tIGEgc3RyZWFtXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIG9iaiA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICB2YXIgc3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlKTtcbiAgICBvYmoudGhlbihmdW5jdGlvbiAob2JqKSB7XG4gICAgICBhc3NlcnQuZXF1YWwob2JqLmxlbmd0aCwgMik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gICAgc3RyZWFtLnBpcGUob2JqKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgY2FsbCBvbk5leHQgb25jZSBhIHJvdyBpcyBwYXJzZWQuXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIG9iaiA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICB2YXIgc3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlKTtcbiAgICB2YXIgY2FsbGVkID0gZmFsc2U7XG4gICAgb2JqLnN1YnNjcmliZShmdW5jdGlvbiAocmVzdWx0Um93KSB7XG4gICAgICBhc3NlcnQocmVzdWx0Um93KTtcbiAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgfSk7XG4gICAgb2JqLm9uKFwiZG9uZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQoY2FsbGVkKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBzdHJlYW0ucGlwZShvYmopO1xuICB9KTtcblxuICBpdChcInNob3VsZCBlbWl0IGVuZF9wYXJzZWQgbWVzc2FnZSBvbmNlIGl0IGlzIGZpbmlzaGVkLlwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciBvYmogPSBuZXcgQ29udmVydGVyKCk7XG4gICAgb2JqLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgYXNzZXJ0KHJlc3VsdCk7XG4gICAgICBhc3NlcnQocmVzdWx0Lmxlbmd0aCA9PT0gMik7XG4gICAgICBhc3NlcnQocmVzdWx0WzBdLmRhdGUpO1xuICAgICAgYXNzZXJ0KHJlc3VsdFswXS5lbXBsb3llZSk7XG4gICAgICBhc3NlcnQocmVzdWx0WzBdLmVtcGxveWVlLm5hbWUpO1xuICAgICAgYXNzZXJ0KHJlc3VsdFswXS5lbXBsb3llZS5hZ2UpO1xuICAgICAgYXNzZXJ0KHJlc3VsdFswXS5lbXBsb3llZS5udW1iZXIpO1xuICAgICAgYXNzZXJ0KHJlc3VsdFswXS5lbXBsb3llZS5rZXkubGVuZ3RoID09PSAyKTtcbiAgICAgIGFzc2VydChyZXN1bHRbMF0uYWRkcmVzcy5sZW5ndGggPT09IDIpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIGZzLmNyZWF0ZVJlYWRTdHJlYW0oZmlsZSkucGlwZShvYmopO1xuICB9KTtcblxuICBpdChcInNob3VsZCBoYW5kbGUgdHJhbGluZyBjb21tYSBncmFjZWZ1bGx5XCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHN0cmVhbSA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odHJhaWxDb21tYURhdGEpO1xuICAgIHZhciBvYmogPSBuZXcgQ29udmVydGVyKCk7XG4gICAgb2JqLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgYXNzZXJ0KHJlc3VsdCk7XG4gICAgICBhc3NlcnQocmVzdWx0Lmxlbmd0aCA+IDApO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHN0cmVhbS5waXBlKG9iaik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGhhbmRsZSBjb21tYSBpbiBjb2x1bW4gd2hpY2ggaXMgc3Vycm91bmRlZCBieSBxb3V0ZXNcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoQ29tbWFcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbiAgICB2YXIgb2JqID0gbmV3IENvbnZlcnRlcih7XG4gICAgICBcInF1b3RlXCI6IFwiI1wiXG4gICAgfSk7XG4gICAgb2JqLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgYXNzZXJ0KHJlc3VsdFswXS5jb2wxID09PSBcIlxcXCJNaW5pLiBTZWN0dFwiKTtcbiAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbM10uY29sMiwgXCIxMjUwMDEsZmVudmtkc2ZcIik7XG4gICAgICAvLyBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHJzLnBpcGUob2JqKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgYmUgYWJsZSB0byBjb252ZXJ0IGEgY3N2IHRvIGNvbHVtbiBhcnJheSBkYXRhXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIGNvbHVtQXJyRGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvY29sdW1uQXJyYXlcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKGNvbHVtQXJyRGF0YSk7XG4gICAgdmFyIHJlc3VsdDphbnkgPSB7fTtcbiAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcigpO1xuICAgIC8vZW5kX3BhcnNlZCB3aWxsIGJlIGVtaXR0ZWQgb25jZSBwYXJzaW5nIGZpbmlzaGVkXG4gICAgY3N2Q29udmVydGVyLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0KHJlc3VsdC5USU1FU1RBTVAubGVuZ3RoID09PSA1KTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcblxuICAgIC8vcmVjb3JkX3BhcnNlZCB3aWxsIGJlIGVtaXR0ZWQgZWFjaCB0aW1lIGEgcm93IGhhcyBiZWVuIHBhcnNlZC5cbiAgICBjc3ZDb252ZXJ0ZXIuc3Vic2NyaWJlKGZ1bmN0aW9uIChyZXN1bHRSb3csIHJvd0luZGV4KSB7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gcmVzdWx0Um93KSB7XG4gICAgICAgIGlmIChyZXN1bHRSb3cuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgIGlmICghcmVzdWx0W2tleV0gfHwgIShyZXN1bHRba2V5XSBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0W2tleV1bcm93SW5kZXhdID0gcmVzdWx0Um93W2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGJlIGFibGUgdG8gY29udmVydCBjc3Ygc3RyaW5nIGRpcmVjdGx5XCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS90ZXN0RGF0YVwiO1xuICAgIHZhciBkYXRhID0gZnMucmVhZEZpbGVTeW5jKHRlc3REYXRhKS50b1N0cmluZygpO1xuICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKCk7XG4gICAgLy9lbmRfcGFyc2VkIHdpbGwgYmUgZW1pdHRlZCBvbmNlIHBhcnNpbmcgZmluaXNoZWRcbiAgICBjc3ZDb252ZXJ0ZXIudGhlbihmdW5jdGlvbiAoanNvbk9iaikge1xuICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmoubGVuZ3RoLCAyKTtcbiAgICB9KTtcbiAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKS50aGVuKGZ1bmN0aW9uIChqc29uT2JqKSB7XG4gICAgICBhc3NlcnQoanNvbk9iai5sZW5ndGggPT09IDIpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdChcInNob3VsZCBiZSBhYmxlIHRvIGNvbnZlcnQgY3N2IHN0cmluZyB3aXRoIGVycm9yXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFVuY2xvc2VkUXVvdGVzXCI7XG4gICAgdmFyIGRhdGEgPSBmcy5yZWFkRmlsZVN5bmModGVzdERhdGEpLnRvU3RyaW5nKCk7XG4gICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKS50aGVuKHVuZGVmaW5lZCwgZnVuY3Rpb24gKGVycikge1xuICAgICAgYXNzZXJ0KGVycik7XG4gICAgICBhc3NlcnQuZXF1YWwoZXJyLmVyciwgXCJ1bmNsb3NlZF9xdW90ZVwiKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgYmUgYWJsZSB0byBjb252ZXJ0IGNzdiBzdHJpbmcgd2l0aG91dCBjYWxsYmFjayBwcm92aWRlZFwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdGVzdERhdGFcIjtcbiAgICB2YXIgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyh0ZXN0RGF0YSkudG9TdHJpbmcoKTtcbiAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcigpO1xuICAgIC8vZW5kX3BhcnNlZCB3aWxsIGJlIGVtaXR0ZWQgb25jZSBwYXJzaW5nIGZpbmlzaGVkXG4gICAgY3N2Q29udmVydGVyLnRoZW4oZnVuY3Rpb24gKGpzb25PYmopIHtcbiAgICAgIGFzc2VydChqc29uT2JqLmxlbmd0aCA9PT0gMik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gICAgY3N2Q29udmVydGVyLmZyb21TdHJpbmcoZGF0YSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIGNvbHVtbnMgd2l0aCBkb3VibGUgcXVvdGVzXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFFvdXRlc1wiO1xuICAgIHZhciBkYXRhID0gZnMucmVhZEZpbGVTeW5jKHRlc3REYXRhKS50b1N0cmluZygpO1xuICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKCk7XG4gICAgY3N2Q29udmVydGVyLmZyb21TdHJpbmcoZGF0YSkudGhlbihmdW5jdGlvbiAoanNvbk9iaikge1xuICAgICAgYXNzZXJ0KGpzb25PYmpbMF0uVElNRVNUQU1QID09PSAnMTM5NTQyNjRcIjIyJywgSlNPTi5zdHJpbmdpZnkoanNvbk9ialswXS5USU1FU1RBTVApKTtcblxuICAgICAgYXNzZXJ0KGpzb25PYmpbMV0uVElNRVNUQU1QID09PSAnYWJjLCBkZWYsIGNjYycsIEpTT04uc3RyaW5naWZ5KGpzb25PYmpbMV0uVElNRVNUQU1QKSk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIGNvbHVtbnMgd2l0aCB0d28gZG91YmxlIHF1b3Rlc1wiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvdHdvZG91YmxlcXVvdGVzXCI7XG4gICAgdmFyIGRhdGEgPSBmcy5yZWFkRmlsZVN5bmModGVzdERhdGEpLnRvU3RyaW5nKCk7XG4gICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICBjc3ZDb252ZXJ0ZXIuZnJvbVN0cmluZyhkYXRhKS50aGVuKGZ1bmN0aW9uIChqc29uT2JqKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoanNvbk9ialswXS50aXRsZSwgXCJcXFwiXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0uZGF0YSwgXCJ4eWFiY2RlXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0udXVpZCwgXCJmZWphbFxcXCJlaWZhXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0uZmllbGRBLCBcImJuZWpcXFwiXFxcImZhbGtmZVwiKTtcbiAgICAgIGFzc2VydC5lcXVhbChqc29uT2JqWzBdLmZpZWxkQiwgXCJcXFwiZWlzamZlc1xcXCJcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGhhbmRsZSBlbXB0eSBjc3YgZmlsZVwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZW1wdHlGaWxlXCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoKTtcbiAgICBjc3ZDb252ZXJ0ZXIudGhlbihmdW5jdGlvbiAoanNvbk9iaikge1xuICAgICAgYXNzZXJ0KGpzb25PYmoubGVuZ3RoID09PSAwKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHBhcnNlIGxhcmdlIGNzdiBmaWxlXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9sYXJnZS1jc3Ytc2FtcGxlLmNzdlwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKCk7XG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICBjc3ZDb252ZXJ0ZXIuc3Vic2NyaWJlKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vY29uc29sZS5sb2coYXJndW1lbnRzKTtcbiAgICAgIGNvdW50Kys7XG4gICAgfSk7XG4gICAgY3N2Q29udmVydGVyLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0KGNvdW50ID09PSA1MjkwKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHBhcnNlIGRhdGEgYW5kIGNvdmVydCB0byBzcGVjaWZpYyB0eXBlc1wiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YVdpdGhUeXBlXCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIGNzdkNvbnZlcnRlciA9IG5ldyBDb252ZXJ0ZXIoe1xuICAgICAgY2hlY2tUeXBlOiB0cnVlLFxuICAgICAgY29sUGFyc2VyOiB7XG4gICAgICAgIFwiY29sdW1uNlwiOiBcInN0cmluZ1wiLFxuICAgICAgICBcImNvbHVtbjdcIjogXCJzdHJpbmdcIlxuICAgICAgfVxuICAgIH0pO1xuICAgIGNzdkNvbnZlcnRlci5zdWJzY3JpYmUoZnVuY3Rpb24gKGQpIHtcbiAgICAgIGFzc2VydCh0eXBlb2YgZC5jb2x1bW4xID09PSBcIm51bWJlclwiKTtcbiAgICAgIGFzc2VydCh0eXBlb2YgZC5jb2x1bW4yID09PSBcInN0cmluZ1wiKTtcbiAgICAgIGFzc2VydC5lcXVhbChkW1wiY29sdW1lNFwiXSwgXCJzb21laW52YWxpZGRhdGVcIik7XG4gICAgICBhc3NlcnQoZC5jb2x1bW41LmhlbGxvID09PSBcIndvcmxkXCIpO1xuICAgICAgYXNzZXJ0KGQuY29sdW1uNiA9PT0gJ3tcImhlbGxvXCI6XCJ3b3JsZFwifScpO1xuICAgICAgYXNzZXJ0KGQuY29sdW1uNyA9PT0gXCIxMjM0XCIpO1xuICAgICAgYXNzZXJ0KGQuY29sdW1uOCA9PT0gXCJhYmNkXCIpO1xuICAgICAgYXNzZXJ0KGQuY29sdW1uOSA9PT0gdHJ1ZSk7XG4gICAgICBhc3NlcnQoZC5jb2x1bW4xMFswXSA9PT0gMjMpO1xuICAgICAgYXNzZXJ0KGQuY29sdW1uMTBbMV0gPT09IDMxKTtcbiAgICAgIGFzc2VydChkLmNvbHVtbjExWzBdLmhlbGxvID09PSBcIndvcmxkXCIpO1xuICAgICAgYXNzZXJ0KGRbXCJuYW1lIyFcIl0gPT09IGZhbHNlKTtcbiAgICB9KTtcbiAgICBjc3ZDb252ZXJ0ZXIub24oXCJkb25lXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHR1cm4gb2ZmIGZpZWxkIHR5cGUgY2hlY2tcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFXaXRoVHlwZVwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBuZXcgQ29udmVydGVyKHtcbiAgICAgIGNoZWNrVHlwZTogZmFsc2VcbiAgICB9KTtcbiAgICBjc3ZDb252ZXJ0ZXIuc3Vic2NyaWJlKGZ1bmN0aW9uIChkKSB7XG4gICAgICBhc3NlcnQodHlwZW9mIGQuY29sdW1uMSA9PT0gXCJzdHJpbmdcIik7XG4gICAgICBhc3NlcnQodHlwZW9mIGQuY29sdW1uMiA9PT0gXCJzdHJpbmdcIik7XG4gICAgICBhc3NlcnQoZFtcImNvbHVtbjNcIl0gPT09IFwiMjAxMi0wMS0wMVwiKTtcbiAgICAgIGFzc2VydChkW1wiY29sdW1lNFwiXSA9PT0gXCJzb21laW52YWxpZGRhdGVcIik7XG4gICAgICBhc3NlcnQoZC5jb2x1bW41ID09PSAne1wiaGVsbG9cIjpcIndvcmxkXCJ9Jyk7XG4gICAgICBhc3NlcnQuZXF1YWwoZFtcImNvbHVtbjZcIl0sICd7XCJoZWxsb1wiOlwid29ybGRcIn0nKTtcbiAgICAgIGFzc2VydChkW1wiY29sdW1uN1wiXSA9PT0gXCIxMjM0XCIpO1xuICAgICAgYXNzZXJ0KGRbXCJjb2x1bW44XCJdID09PSBcImFiY2RcIik7XG4gICAgICBhc3NlcnQoZC5jb2x1bW45ID09PSBcInRydWVcIik7XG4gICAgICBhc3NlcnQoZC5jb2x1bW4xMFswXSA9PT0gXCIyM1wiKTtcbiAgICAgIGFzc2VydChkLmNvbHVtbjEwWzFdID09PSBcIjMxXCIpO1xuICAgICAgYXNzZXJ0KGRbXCJuYW1lIyFcIl0gPT09ICdmYWxzZScpO1xuICAgIH0pO1xuICAgIGNzdkNvbnZlcnRlci50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgICBycy5waXBlKGNzdkNvbnZlcnRlcik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGVtaXQgZGF0YSBldmVudCBjb3JyZWN0bHlcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2xhcmdlLWNzdi1zYW1wbGUuY3N2XCI7XG5cbiAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcih7XG4gICAgfSk7XG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICBjc3ZDb252ZXJ0ZXIub24oXCJkYXRhXCIsIGZ1bmN0aW9uIChkKSB7XG4gICAgICBjb3VudCsrO1xuICAgIH0pO1xuICAgIGNzdkNvbnZlcnRlci5vbihcImVuZFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoY291bnQsIDUyOTApO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHJzLnBpcGUoY3N2Q29udmVydGVyKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgcHJvY2VzcyBjb2x1bW4gd2l0aCBsaW5lYnJlYWtzXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9saW5lQnJlYWtcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbiAgICB2YXIgY3N2Q29udmVydGVyID0gbmV3IENvbnZlcnRlcih7XG4gICAgICBjaGVja1R5cGU6IHRydWVcbiAgICB9KTtcbiAgICBjc3ZDb252ZXJ0ZXIuc3Vic2NyaWJlKGZ1bmN0aW9uIChkKSB7XG4gICAgICBhc3NlcnQoZC5QZXJpb2QgPT09IDEzKTtcbiAgICAgIGFzc2VydChkW1wiQXBwYXJlbnQgYWdlXCJdID09PSBcIlVua25vd25cIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gICAgcnMucGlwZShjc3ZDb252ZXJ0ZXIpO1xuICB9KTtcblxuICBpdChcImJlIGFibGUgdG8gaWdub3JlIGVtcHR5IGNvbHVtbnNcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFJZ25vcmVFbXB0eVwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHZhciBzdCA9IHJzLnBpcGUoY3N2KHsgaWdub3JlRW1wdHk6IHRydWUgfSkpO1xuICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgdmFyIGogPSByZXNbMF07XG4gICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gMyk7XG4gICAgICBhc3NlcnQoai5jb2wyLmxlbmd0aCA9PT0gMik7XG4gICAgICBhc3NlcnQoai5jb2wyWzFdID09PSBcImQzXCIpO1xuICAgICAgYXNzZXJ0KGouY29sNC5jb2wzID09PSB1bmRlZmluZWQpO1xuICAgICAgYXNzZXJ0KGouY29sNC5jb2w1ID09PSBcIndvcmxkXCIpO1xuICAgICAgYXNzZXJ0KHJlc1sxXS5jb2wxID09PSBcImQyXCIpO1xuICAgICAgYXNzZXJ0KHJlc1syXS5jb2wxID09PSBcImQ0XCIpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdChcInNob3VsZCBhbGxvdyBubyBoZWFkZXJcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL25vaGVhZGVyY3N2XCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHsgbm9oZWFkZXI6IHRydWUgfSkpO1xuICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgdmFyIGogPSByZXNbMF07XG4gICAgICBhc3NlcnQocmVzLmxlbmd0aCA9PT0gNSk7XG4gICAgICBhc3NlcnQoai5maWVsZDEgPT09IFwiQ0MxMDItUERNSS0wMDFcIik7XG4gICAgICBhc3NlcnQoai5maWVsZDIgPT09IFwiZUNsYXNzXzUuMS4zXCIpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdChcInNob3VsZCBhbGxvdyBjdXN0b21pc2VkIGhlYWRlclwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvbm9oZWFkZXJjc3ZcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbiAgICB2YXIgc3QgPSBycy5waXBlKG5ldyBDb252ZXJ0ZXIoe1xuICAgICAgbm9oZWFkZXI6IHRydWUsXG4gICAgICBoZWFkZXJzOiBbXCJhXCIsIFwiYlwiXVxuICAgIH0pKTtcbiAgICBzdC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHZhciBqID0gcmVzWzBdO1xuICAgICAgYXNzZXJ0KHJlcy5sZW5ndGggPT09IDUpO1xuICAgICAgYXNzZXJ0KGouYSA9PT0gXCJDQzEwMi1QRE1JLTAwMVwiKTtcbiAgICAgIGFzc2VydChqLmIgPT09IFwiZUNsYXNzXzUuMS4zXCIpO1xuICAgICAgYXNzZXJ0KGouZmllbGQzID09PSBcIjEwLzMvMjAxNFwiKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgYWxsb3cgY3VzdG9taXNlZCBoZWFkZXIgdG8gb3ZlcnJpZGUgZXhpc3RpbmcgaGVhZGVyXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9jb21wbGV4SlNPTkNTVlwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcih7XG4gICAgICBoZWFkZXJzOiBbXVxuICAgIH0pKTtcbiAgICBzdC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHZhciBqID0gcmVzWzBdO1xuICAgICAgYXNzZXJ0KHJlcy5sZW5ndGggPT09IDIpO1xuICAgICAgYXNzZXJ0KGouZmllbGQxID09PSBcIkZvb2QgRmFjdG9yeVwiKTtcbiAgICAgIGFzc2VydChqLmZpZWxkMiA9PT0gXCJPc2NhclwiKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIHdoZW4gdGhlcmUgaXMgYW4gZW1wdHkgc3RyaW5nXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aEVtcHR5U3RyaW5nXCI7XG4gICAgdmFyIHJzID0gZnMuY3JlYXRlUmVhZFN0cmVhbSh0ZXN0RGF0YSk7XG4gICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKHtcbiAgICAgIG5vaGVhZGVyOiB0cnVlLFxuICAgICAgaGVhZGVyczogW1wiYVwiLCBcImJcIiwgXCJjXCJdLFxuICAgICAgY2hlY2tUeXBlOiB0cnVlXG4gICAgfSkpO1xuICAgIHN0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgdmFyIGogPSByZXNbMF07XG5cbiAgICAgIC8vIGFzc2VydChyZXMubGVuZ3RoPT09Mik7XG4gICAgICBhc3NlcnQoai5hID09PSBcImdyZWVuXCIpO1xuICAgICAgYXNzZXJ0KGouYiA9PT0gNDApO1xuICAgICAgYXNzZXJ0LmVxdWFsKGouYywgXCJcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGRldGVjdCBlb2wgY29ycmVjdGx5IHdoZW4gZmlyc3QgY2h1bmsgaXMgc21hbGxlciB0aGFuIGhlYWRlciByb3cgbGVuZ3RoXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhTm9UcmltQ1JMRlwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEsIHsgaGlnaFdhdGVyTWFyazogMyB9KTtcblxuICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcih7XG4gICAgICB0cmltOiBmYWxzZVxuICAgIH0pKTtcbiAgICBzdC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHZhciBqID0gcmVzWzBdO1xuICAgICAgYXNzZXJ0KHJlcy5sZW5ndGggPT09IDIpO1xuICAgICAgYXNzZXJ0KGoubmFtZSA9PT0gXCJqb2VcIik7XG4gICAgICBhc3NlcnQoai5hZ2UgPT09IFwiMjBcIik7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzWzFdLm5hbWUsIFwic2FtXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc1sxXS5hZ2UsIFwiMzBcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGRldGVjdCBlb2wgY29ycmVjdGx5IHdoZW4gZmlyc3QgY2h1bmsgZW5kcyBpbiBtaWRkbGUgb2YgQ1JMRiBsaW5lIGJyZWFrXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhTm9UcmltQ1JMRlwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEsIHsgaGlnaFdhdGVyTWFyazogOSB9KTtcblxuICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcih7XG4gICAgICB0cmltOiBmYWxzZVxuICAgIH0pKTtcbiAgICBzdC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHZhciBqID0gcmVzWzBdO1xuICAgICAgYXNzZXJ0KHJlcy5sZW5ndGggPT09IDIpO1xuICAgICAgYXNzZXJ0KGoubmFtZSA9PT0gXCJqb2VcIik7XG4gICAgICBhc3NlcnQoai5hZ2UgPT09IFwiMjBcIik7XG4gICAgICBhc3NlcnQuZXF1YWwocmVzWzFdLm5hbWUsIFwic2FtXCIpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHJlc1sxXS5hZ2UsIFwiMzBcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIGVtaXQgZW9sIGV2ZW50IHdoZW4gbGluZSBlbmRpbmcgaXMgZGV0ZWN0ZWQgYXMgQ1JMRlwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciB0ZXN0RGF0YSA9IF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YU5vVHJpbUNSTEZcIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcblxuICAgIHZhciBzdCA9IHJzLnBpcGUobmV3IENvbnZlcnRlcigpKTtcbiAgICB2YXIgZW9sQ2FsbGJhY2sgPSBzYW5kYm94LnNweShmdW5jdGlvbiAoZW9sKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoZW9sLCBcIlxcclxcblwiKTtcbiAgICB9KTtcbiAgICBzdC5vbihcImVvbFwiLCBlb2xDYWxsYmFjayk7XG4gICAgc3QudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoZW9sQ2FsbGJhY2suY2FsbENvdW50LCAxLCAnc2hvdWxkIGVtaXQgZW9sIGV2ZW50IG9uY2UnKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KVxuICB9KTtcblxuICBpdChcInNob3VsZCBlbWl0IGVvbCBldmVudCB3aGVuIGxpbmUgZW5kaW5nIGlzIGRldGVjdGVkIGFzIExGXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9jb2x1bW5BcnJheVwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuXG4gICAgdmFyIHN0ID0gcnMucGlwZShuZXcgQ29udmVydGVyKCkpO1xuICAgIHZhciBlb2xDYWxsYmFjayA9IHNhbmRib3guc3B5KGZ1bmN0aW9uIChlb2wpIHtcbiAgICAgIGFzc2VydC5lcXVhbChlb2wsIFwiXFxuXCIpO1xuICAgIH0pO1xuICAgIHN0Lm9uKFwiZW9sXCIsIGVvbENhbGxiYWNrKTtcbiAgICBzdC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5lcXVhbChlb2xDYWxsYmFjay5jYWxsQ291bnQsIDEsICdzaG91bGQgZW1pdCBlb2wgZXZlbnQgb25jZScpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pXG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHJlbW92ZSB0aGUgQnl0ZSBPcmRlciBNYXJrIChCT00pIGZyb20gaW5wdXRcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2RhdGFOb1RyaW1CT01cIjtcbiAgICB2YXIgcnMgPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHRlc3REYXRhKTtcbiAgICB2YXIgc3QgPSBycy5waXBlKG5ldyBDb252ZXJ0ZXIoe1xuICAgICAgdHJpbTogZmFsc2VcbiAgICB9KSk7XG4gICAgc3QudGhlbiggZnVuY3Rpb24gKHJlcykge1xuICAgICAgdmFyIGogPSByZXNbMF07XG5cbiAgICAgIGFzc2VydChyZXMubGVuZ3RoPT09Mik7XG4gICAgICBhc3NlcnQoai5uYW1lID09PSBcImpvZVwiKTtcbiAgICAgIGFzc2VydChqLmFnZSA9PT0gXCIyMFwiKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ== \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/c8e70df643ed74eb6c2787fa04bd777abbe25614c4f67780bdd3d4f82f7da832.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/c8e70df643ed74eb6c2787fa04bd777abbe25614c4f67780bdd3d4f82f7da832.js deleted file mode 100644 index fe18ea1..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/c8e70df643ed74eb6c2787fa04bd777abbe25614c4f67780bdd3d4f82f7da832.js +++ /dev/null @@ -1,39 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -function bufFromString(str) { - var length = Buffer.byteLength(str); - var buffer = Buffer.allocUnsafe - ? Buffer.allocUnsafe(length) - : new Buffer(length); - buffer.write(str); - return buffer; -} -exports.bufFromString = bufFromString; -function emptyBuffer() { - var buffer = Buffer.allocUnsafe - ? Buffer.allocUnsafe(0) - : new Buffer(0); - return buffer; -} -exports.emptyBuffer = emptyBuffer; -function filterArray(arr, filter) { - var rtn = []; - for (var i = 0; i < arr.length; i++) { - if (filter.indexOf(i) > -1) { - rtn.push(arr[i]); - } - } - return rtn; -} -exports.filterArray = filterArray; -exports.trimLeft = String.prototype.trimLeft ? function trimLeftNative(str) { - return str.trimLeft(); -} : function trimLeftRegExp(str) { - return str.replace(/^\s+/, ""); -}; -exports.trimRight = String.prototype.trimRight ? function trimRightNative(str) { - return str.trimRight(); -} : function trimRightRegExp(str) { - return str.replace(/\s+$/, ""); -}; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy91dGlsLnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1QkFBOEIsR0FBVztJQUN2QyxJQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLElBQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXO1FBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUM1QixDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBUEQsc0NBT0M7QUFFRDtJQUNFLElBQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXO1FBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUxELGtDQUtDO0FBRUQscUJBQTRCLEdBQVUsRUFBRSxNQUFnQjtJQUN0RCxJQUFNLEdBQUcsR0FBVSxFQUFFLENBQUM7SUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbkMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEI7S0FDRjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQVJELGtDQVFDO0FBRVksUUFBQSxRQUFRLEdBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUEsQ0FBQyxDQUFBLHdCQUF3QixHQUFVO0lBQ2hGLE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3hCLENBQUMsQ0FBQSxDQUFDLENBQUEsd0JBQXdCLEdBQVU7SUFDbEMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUE7QUFFWSxRQUFBLFNBQVMsR0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQSxDQUFDLENBQUEseUJBQXlCLEdBQVU7SUFDbkYsT0FBTyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDekIsQ0FBQyxDQUFBLENBQUMsQ0FBQSx5QkFBeUIsR0FBVTtJQUNuQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBidWZGcm9tU3RyaW5nKHN0cjogc3RyaW5nKTogQnVmZmVyIHtcbiAgY29uc3QgbGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGgoc3RyKTtcbiAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlXG4gICAgPyBCdWZmZXIuYWxsb2NVbnNhZmUobGVuZ3RoKVxuICAgIDogbmV3IEJ1ZmZlcihsZW5ndGgpO1xuICBidWZmZXIud3JpdGUoc3RyKTtcbiAgcmV0dXJuIGJ1ZmZlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVtcHR5QnVmZmVyKCk6IEJ1ZmZlcntcbiAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlXG4gICAgPyBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbiAgICA6IG5ldyBCdWZmZXIoMCk7XG4gIHJldHVybiBidWZmZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJBcnJheShhcnI6IGFueVtdLCBmaWx0ZXI6IG51bWJlcltdKTogYW55W10ge1xuICBjb25zdCBydG46IGFueVtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGZpbHRlci5pbmRleE9mKGkpID4gLTEpIHtcbiAgICAgIHJ0bi5wdXNoKGFycltpXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBydG47XG59XG5cbmV4cG9ydCBjb25zdCB0cmltTGVmdD1TdHJpbmcucHJvdG90eXBlLnRyaW1MZWZ0P2Z1bmN0aW9uIHRyaW1MZWZ0TmF0aXZlKHN0cjpzdHJpbmcpe1xuICByZXR1cm4gc3RyLnRyaW1MZWZ0KCk7XG59OmZ1bmN0aW9uIHRyaW1MZWZ0UmVnRXhwKHN0cjpzdHJpbmcpe1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMrLywgXCJcIik7XG59XG5cbmV4cG9ydCBjb25zdCB0cmltUmlnaHQ9U3RyaW5nLnByb3RvdHlwZS50cmltUmlnaHQ/ZnVuY3Rpb24gdHJpbVJpZ2h0TmF0aXZlKHN0cjpzdHJpbmcpe1xuICByZXR1cm4gc3RyLnRyaW1SaWdodCgpO1xufTpmdW5jdGlvbiB0cmltUmlnaHRSZWdFeHAoc3RyOnN0cmluZyl7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvXFxzKyQvLCBcIlwiKTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/c9dd2cde876725b95252230af48b72d263fc7188f8adba2c85aec0c27e54ba1e.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/c9dd2cde876725b95252230af48b72d263fc7188f8adba2c85aec0c27e54ba1e.js deleted file mode 100644 index 46e25d9..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/c9dd2cde876725b95252230af48b72d263fc7188f8adba2c85aec0c27e54ba1e.js +++ /dev/null @@ -1,342 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [0, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var src_1 = __importDefault(require("../src")); -var assert_1 = __importDefault(require("assert")); -var fs = require("fs"); -var sinon_1 = require("sinon"); -var sb = sinon_1.sandbox.create(); -describe("testCSVConverter3", function () { - afterEach(function () { - sb.restore(); - }); - it("should parse large csv file with UTF-8 without spliting characters", function (done) { - var testData = __dirname + "/data/large-utf8.csv"; - var rs = fs.createReadStream(testData); - var csvConverter = src_1.default({}); - var count = 0; - csvConverter.preRawData(function (csvRawData) { - assert_1.default(csvRawData.charCodeAt(0) < 2000); - return csvRawData; - }); - csvConverter.on("data", function () { - count++; - }); - csvConverter.then(function () { - assert_1.default(count === 5290); - done(); - }); - rs.pipe(csvConverter); - }); - it("should setup customise type convert function", function (done) { - src_1.default({ - checkType: true, - colParser: { - "column1": "string", - "column5": function (item, head, resultRow, row, i) { - assert_1.default.equal(item, '{"hello":"world"}'); - assert_1.default.equal(head, "column5"), - assert_1.default(resultRow); - assert_1.default(row); - assert_1.default.equal(i, 5); - return "hello world"; - } - } - }) - .fromFile(__dirname + "/data/dataWithType") - .subscribe(function (json) { - assert_1.default.equal(typeof json.column1, "string"); - assert_1.default.equal(json.column5, "hello world"); - assert_1.default.strictEqual(json["name#!"], false); - assert_1.default.strictEqual(json["column9"], true); - }) - .on('done', function () { - done(); - }); - }); - it("should accept pipe as quote", function (done) { - src_1.default({ - quote: "|", - output: "csv" - }) - .fromFile(__dirname + "/data/pipeAsQuote") - .subscribe(function (csv) { - assert_1.default.equal(csv[2], "blahhh, blah"); - }) - .on('done', function () { - done(); - }); - }); - it("emit file not exists error when try to open a non-exists file", function () { - var called = false; - var cb = sb.spy(function (err) { - assert_1.default(err.toString().indexOf("File does not exist") > -1); - }); - return src_1.default() - .fromFile("somefile") - .subscribe(function (csv) { - }) - .on("error", cb) - .then(function () { - assert_1.default(false); - }, function (err) { - assert_1.default.equal(cb.callCount, 1); - }); - }); - it("should include column that is both included and excluded", function () { - return src_1.default({ - includeColumns: /b/, - ignoreColumns: /a|b/ - }) - .fromString("a,b,c\n1,2,3\n4,5,6") - .subscribe(function (d) { - assert_1.default(d.b); - assert_1.default(!d.a); - }); - }); - it("should allow async preLine hook", function () { - return src_1.default() - .preFileLine(function (line) { - return new Promise(function (resolve, reject) { - setTimeout(function () { - resolve(line + "changed"); - }, 20); - }); - }) - .fromString("a,b\n1,2") - .subscribe(function (d) { - assert_1.default(d.bchanged); - assert_1.default.equal(d.bchanged, "2changed"); - }); - }); - it("should allow async subscribe function", function () { - return src_1.default({ trim: true }) - .fromString("a,b,c\n 1,2,3\n 4,5,6") - .subscribe(function (d) { - return new Promise(function (resolve, reject) { - setTimeout(function () { - d.a = 10; - resolve(); - }, 20); - }); - }) - .then(function (d) { - assert_1.default.equal(d[0].a, 10); - assert_1.default.equal(d[1].a, 10); - }); - }); - it("should propagate value to next then", function () { - return src_1.default({ trim: true }) - .fromString("a,b,c\n 1,2,3\n 4,5,6") - .then(undefined, undefined) - .then(function (d) { - assert_1.default.equal(d.length, 2); - assert_1.default.equal(d[0].a, "1"); - }); - }); - it("should propagate error to next then", function () { - return src_1.default({ trim: true }) - .fromFile(__dirname + "/data/dataWithUnclosedQuotes") - .then(undefined, undefined) - .then(function () { - assert_1.default(false); - }, function (err) { - assert_1.default(err); - assert_1.default.equal(err.err, "unclosed_quote"); - }); - }); - it("should fallback to text is number can not be parsed", function () { - return src_1.default({ - colParser: { - "a": "number" - } - }) - .fromString("a,b,c\n 1,2,3\n fefe,5,6") - .then(function (d) { - assert_1.default.strictEqual(d[0].a, 1); - assert_1.default.equal(d[1].a, "fefe"); - }); - }); - it("should omit a column", function () { - return src_1.default({ - colParser: { - "a": "omit" - } - }) - .fromString("a,b,c\n 1,2,3\n fefe,5,6") - .then(function (d) { - assert_1.default.strictEqual(d[0].a, undefined); - assert_1.default.equal(d[1].a, undefined); - }); - }); - it("could turn off quote and should trim even quote is turned off", function () { - return src_1.default({ - quote: "off", - trim: true - }) - .fromString("a,b,c\n \"1\",\"2\",\"3\"\n \"fefe,5\",6") - .then(function (d) { - assert_1.default.equal(d[0].a, '"1"'); - assert_1.default.equal(d[0].b, '"2"'); - assert_1.default.equal(d[1].a, '"fefe'); - assert_1.default.equal(d[1].b, '5"'); - }); - }); - it("should allow ignoreEmpty with checkColumn", function () { - return src_1.default({ - checkColumn: true, - ignoreEmpty: true - }) - .fromString("date,altitude,airtime\n 2016-07-08,2000,23\n \n 2016-07-09,3000,43") - .then(function (data) { - }, function (err) { - console.log(err); - assert_1.default(!err); - }); - }); - it("should allow quotes without content", function () { - var data = "a|^^|^b^"; - return src_1.default({ - delimiter: '|', - quote: '^', - noheader: true, - }) - .fromString(data) - .then(function (jsonObj) { - assert_1.default.equal(jsonObj[0].field2, ""); - }); - }); - it("should parse header with quotes correctly", function () { - var testData = __dirname + "/data/csvWithUnclosedHeader"; - return src_1.default({ - headers: ["exam_date", "sample_no", "status", "sample_type", "patient_id", "last_name", "first_name", "gender_of_patient", "patient_birth_date", "patient_note", "patient_department", "accession_number", "sample_site", "physician", "operator", "department", "note", "test_order_code", "draw_time", "approval_status", "approval_time", "report_layout", "patient_account_number", "none_1", "errors_detected_during_measurement", "age", "error_code_01", "weight", "error_code_02", "height", "error_code_03", "hcg_beta_p", "error_code_04", "troponin_i_p", "error_code_05", "ck_mb_p", "error_code_06", "d_dimer_p", "error_code_07", "hscrp_p", "error_code_08", "myoglobin_p", "error_code_09", "nt_probnp", "error_code_10", "crp", "error_code_11", "bnp", "error_code_12", "tnt", "error_code_13", "demo_p", "error_code_14", "pct", "error_code_15"] - }) - .fromFile(testData) - .then(function (d) { - assert_1.default.equal(d.length, 2); - assert_1.default.equal(d[0].sample_no, "12669"); - }); - }); - it("should stream json string correctly", function (done) { - var data = "a,b,c\n1,2,3\n4,5,6"; - var hasLeftBracket = false; - var hasRightBracket = false; - src_1.default({ - downstreamFormat: "array" - }) - .fromString(data) - .on("data", function (d) { - var str = d.toString(); - if (str[0] === "[" && str.length === 2) { - hasLeftBracket = true; - } - else if (str[0] === "]" && str.length === 2) { - hasRightBracket = true; - } - else { - assert_1.default.equal(str[str.length - 2], ","); - } - }) - .on("end", function () { - assert_1.default.equal(hasLeftBracket, true); - assert_1.default.equal(hasRightBracket, true); - done(); - }); - }); - it("should stream json line correctly", function (done) { - var data = "a,b,c\n1,2,3\n4,5,6"; - src_1.default({ - downstreamFormat: "line" - }) - .fromString(data) - .on("data", function (d) { - var str = d.toString(); - assert_1.default.notEqual(str[str.length - 2], ","); - }) - .on("end", function () { - done(); - }); - }); - it("should not send json if needEmitAll is false", function () { - return __awaiter(this, void 0, void 0, function () { - var data; - return __generator(this, function (_a) { - data = "a,b,c\n1,2,3\n4,5,6"; - return [2 /*return*/, src_1.default({ - needEmitAll: false - }) - .fromString(data) - .then(function (d) { - assert_1.default(d.length === 0); - })]; - }); - }); - }); - it("should convert null to null object", function () { - return __awaiter(this, void 0, void 0, function () { - var data; - return __generator(this, function (_a) { - data = "a,b,c\nnull,2,3\n4,5,6"; - return [2 /*return*/, src_1.default({ - nullObject: true - }) - .fromString(data) - .then(function (d) { - assert_1.default.equal(d[0].a, null); - })]; - }); - }); - }); - it("should process period properly", function () { - return __awaiter(this, void 0, void 0, function () { - var data; - return __generator(this, function (_a) { - data = "a..,b,c\n1,2,3\n4,5,6"; - return [2 /*return*/, src_1.default({}) - .fromString(data) - .then(function (d) { - assert_1.default.equal(d[0]["a.."], 1); - assert_1.default.equal(d[1]["a.."], 4); - })]; - }); - }); - }); -}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3Rlc3QvdGVzdENTVkNvbnZlcnRlcjMudHMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9reGlhbmcvd29yay9wcm9qZWN0cy9jc3YyanNvbi90ZXN0L3Rlc3RDU1ZDb252ZXJ0ZXIzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBeUI7QUFDekIsa0RBQTRCO0FBQzVCLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QiwrQkFBZ0M7QUFFaEMsSUFBTSxFQUFFLEdBQUcsZUFBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzVCLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRTtJQUM1QixTQUFTLENBQUM7UUFDUixFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztJQUNILEVBQUUsQ0FBQyxvRUFBb0UsRUFBRSxVQUFVLElBQUk7UUFDckYsSUFBSSxRQUFRLEdBQUcsU0FBUyxHQUFHLHNCQUFzQixDQUFDO1FBQ2xELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxJQUFJLFlBQVksR0FBRyxhQUFHLENBQUMsRUFDdEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsWUFBWSxDQUFDLFVBQVUsQ0FBQyxVQUFVLFVBQVU7WUFDMUMsZ0JBQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUU7WUFDdEIsS0FBSyxFQUFFLENBQUM7UUFDVixDQUFDLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDaEIsZ0JBQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDdkIsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDSCxFQUFFLENBQUMsOENBQThDLEVBQUUsVUFBVSxJQUFJO1FBQy9ELGFBQUcsQ0FBQztZQUNGLFNBQVMsRUFBRSxJQUFJO1lBQ2YsU0FBUyxFQUFFO2dCQUNULFNBQVMsRUFBRSxRQUFRO2dCQUNuQixTQUFTLEVBQUUsVUFBVSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQztvQkFDaEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7b0JBQ3hDLGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7d0JBQzNCLGdCQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3BCLGdCQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ1osZ0JBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNuQixPQUFPLGFBQWEsQ0FBQztnQkFDdkIsQ0FBQzthQUNGO1NBQ0YsQ0FBQzthQUNDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsb0JBQW9CLENBQUM7YUFDMUMsU0FBUyxDQUFDLFVBQVUsSUFBSTtZQUN2QixnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDNUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztZQUMxQyxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDMUMsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQzthQUNELEVBQUUsQ0FBQyxNQUFNLEVBQUU7WUFDVixJQUFJLEVBQUUsQ0FBQTtRQUNSLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUE7SUFDRixFQUFFLENBQUMsNkJBQTZCLEVBQUUsVUFBVSxJQUFJO1FBQzlDLGFBQUcsQ0FBQztZQUNGLEtBQUssRUFBRSxHQUFHO1lBQ1YsTUFBTSxFQUFFLEtBQUs7U0FDZCxDQUFDO2FBQ0MsUUFBUSxDQUFDLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQzthQUN6QyxTQUFTLENBQUMsVUFBVSxHQUFHO1lBQ3RCLGdCQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUM7YUFDRCxFQUFFLENBQUMsTUFBTSxFQUFFO1lBQ1YsSUFBSSxFQUFFLENBQUE7UUFDUixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLCtEQUErRCxFQUFFO1FBQ2xFLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQUMsR0FBRztZQUNwQixnQkFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxhQUFHLEVBQUU7YUFDVCxRQUFRLENBQUMsVUFBVSxDQUFDO2FBQ3BCLFNBQVMsQ0FBQyxVQUFVLEdBQUc7UUFFeEIsQ0FBQyxDQUFDO2FBQ0QsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7YUFDZixJQUFJLENBQUM7WUFDSixnQkFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hCLENBQUMsRUFBRSxVQUFDLEdBQUc7WUFDTCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFBO0lBRU4sQ0FBQyxDQUFDLENBQUE7SUFDRixFQUFFLENBQUMsMERBQTBELEVBQUU7UUFDN0QsT0FBTyxhQUFHLENBQUM7WUFDVCxjQUFjLEVBQUUsR0FBRztZQUNuQixhQUFhLEVBQUUsS0FBSztTQUNyQixDQUFDO2FBQ0MsVUFBVSxDQUFDLHFCQUVaLENBQUM7YUFDQSxTQUFTLENBQUMsVUFBQyxDQUFDO1lBQ1gsZ0JBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDWixnQkFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRTtRQUNwQyxPQUFPLGFBQUcsRUFBRTthQUNULFdBQVcsQ0FBQyxVQUFDLElBQUk7WUFDaEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFDLE9BQU8sRUFBRSxNQUFNO2dCQUNqQyxVQUFVLENBQUM7b0JBQ1QsT0FBTyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsQ0FBQTtnQkFDM0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRVQsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUM7YUFDRCxVQUFVLENBQUMsVUFDZCxDQUFDO2FBQ0UsU0FBUyxDQUFDLFVBQUMsQ0FBQztZQUNYLGdCQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25CLGdCQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUE7SUFFTixDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRTtRQUMxQyxPQUFPLGFBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUN2QixVQUFVLENBQUMsNkJBRVIsQ0FBQzthQUNKLFNBQVMsQ0FBQyxVQUFDLENBQUM7WUFDWCxPQUFPLElBQUksT0FBTyxDQUFDLFVBQUMsT0FBTyxFQUFFLE1BQU07Z0JBQ2pDLFVBQVUsQ0FBQztvQkFDVCxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDVCxPQUFPLEVBQUUsQ0FBQztnQkFDWixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDVCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxVQUFDLENBQUM7WUFDTixnQkFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLGdCQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRTtRQUN4QyxPQUFPLGFBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUN2QixVQUFVLENBQUMseUJBRVYsQ0FBQzthQUNGLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO2FBQzFCLElBQUksQ0FBQyxVQUFDLENBQUM7WUFDTixnQkFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFCLGdCQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUE7SUFFTixDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRTtRQUN4QyxPQUFPLGFBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUN2QixRQUFRLENBQUMsU0FBUyxHQUFHLDhCQUE4QixDQUFDO2FBQ3BELElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO2FBQzFCLElBQUksQ0FBQztZQUNKLGdCQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDZixDQUFDLEVBQUUsVUFBQyxHQUFhO1lBQ2YsZ0JBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNaLGdCQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLHFEQUFxRCxFQUFFO1FBQ3hELE9BQU8sYUFBRyxDQUFDO1lBQ1QsU0FBUyxFQUFFO2dCQUNULEdBQUcsRUFBRSxRQUFRO2FBQ2Q7U0FDRixDQUFDO2FBQ0MsVUFBVSxDQUFDLDRCQUVQLENBQUM7YUFDTCxJQUFJLENBQUMsVUFBQyxDQUFDO1lBQ04sZ0JBQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5QixnQkFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7SUFDRixFQUFFLENBQUMsc0JBQXNCLEVBQUU7UUFDekIsT0FBTyxhQUFHLENBQUM7WUFDVCxTQUFTLEVBQUU7Z0JBQ1QsR0FBRyxFQUFFLE1BQU07YUFDWjtTQUNGLENBQUM7YUFDQyxVQUFVLENBQUMsNEJBRVAsQ0FBQzthQUNMLElBQUksQ0FBQyxVQUFDLENBQUM7WUFDTixnQkFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLGdCQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQywrREFBK0QsRUFBRTtRQUNsRSxPQUFPLGFBQUcsQ0FBQztZQUNULEtBQUssRUFBRSxLQUFLO1lBQ1osSUFBSSxFQUFFLElBQUk7U0FDWCxDQUFDO2FBQ0MsVUFBVSxDQUFDLDRDQUVMLENBQUM7YUFDUCxJQUFJLENBQUMsVUFBQyxDQUFDO1lBQ04sZ0JBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1QixnQkFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVCLGdCQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDOUIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBQyxDQUFBO0lBQ0YsRUFBRSxDQUFDLDJDQUEyQyxFQUFFO1FBQzlDLE9BQU8sYUFBRyxDQUFDO1lBQ1QsV0FBVyxFQUFFLElBQUk7WUFDakIsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQzthQUNDLFVBQVUsQ0FBQyw2RUFHSyxDQUFDO2FBQ2pCLElBQUksQ0FBQyxVQUFDLElBQUk7UUFFWCxDQUFDLEVBQUUsVUFBQyxHQUFHO1lBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixnQkFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0gsRUFBRSxDQUFDLHFDQUFxQyxFQUFFO1FBQ3hDLElBQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQztRQUN4QixPQUFPLGFBQUcsQ0FBQztZQUNULFNBQVMsRUFBRSxHQUFHO1lBQ2QsS0FBSyxFQUFFLEdBQUc7WUFDVixRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7YUFDQyxVQUFVLENBQUMsSUFBSSxDQUFDO2FBQ2hCLElBQUksQ0FBQyxVQUFDLE9BQU87WUFDWixnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUE7SUFDRixFQUFFLENBQUMsMkNBQTJDLEVBQUU7UUFDOUMsSUFBSSxRQUFRLEdBQUcsU0FBUyxHQUFHLDZCQUE2QixDQUFDO1FBQ3pELE9BQU8sYUFBRyxDQUFDO1lBQ1QsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxvQ0FBb0MsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLGVBQWUsQ0FBQztTQUNyMEIsQ0FBQzthQUNDLFFBQVEsQ0FBQyxRQUFRLENBQUM7YUFDbEIsSUFBSSxDQUFDLFVBQUMsQ0FBQztZQUNOLGdCQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQTtJQUVOLENBQUMsQ0FBQyxDQUFDO0lBQ0gsRUFBRSxDQUFFLHFDQUFxQyxFQUFDLFVBQVMsSUFBSTtRQUNyRCxJQUFNLElBQUksR0FBQyxxQkFFVCxDQUFBO1FBQ0YsSUFBSSxjQUFjLEdBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksZUFBZSxHQUFDLEtBQUssQ0FBQztRQUMxQixhQUFHLENBQUM7WUFDRixnQkFBZ0IsRUFBQyxPQUFPO1NBQ3pCLENBQUM7YUFDRCxVQUFVLENBQUMsSUFBSSxDQUFDO2FBQ2hCLEVBQUUsQ0FBQyxNQUFNLEVBQUMsVUFBQyxDQUFDO1lBQ1gsSUFBTSxHQUFHLEdBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFJLENBQUMsRUFBQztnQkFDbEMsY0FBYyxHQUFDLElBQUksQ0FBQzthQUNyQjtpQkFBSyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBRyxDQUFDLEVBQUM7Z0JBQ3ZDLGVBQWUsR0FBQyxJQUFJLENBQUM7YUFDdEI7aUJBQUk7Z0JBQ0gsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUM7YUFDckM7UUFFSCxDQUFDLENBQUM7YUFDRCxFQUFFLENBQUMsS0FBSyxFQUFDO1lBQ1IsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLGdCQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBQyxJQUFJLENBQUMsQ0FBQztZQUNuQyxJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUFDLENBQUE7SUFDRixFQUFFLENBQUUsbUNBQW1DLEVBQUMsVUFBUyxJQUFJO1FBQ25ELElBQU0sSUFBSSxHQUFDLHFCQUVULENBQUE7UUFDRixhQUFHLENBQUM7WUFDRixnQkFBZ0IsRUFBQyxNQUFNO1NBQ3hCLENBQUM7YUFDRCxVQUFVLENBQUMsSUFBSSxDQUFDO2FBQ2hCLEVBQUUsQ0FBQyxNQUFNLEVBQUMsVUFBQyxDQUFDO1lBQ1gsSUFBTSxHQUFHLEdBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRXZCLGdCQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQzthQUNELEVBQUUsQ0FBQyxLQUFLLEVBQUM7WUFDUixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUFDLENBQUE7SUFDRixFQUFFLENBQUUsOENBQThDLEVBQUM7Ozs7Z0JBQzNDLElBQUksR0FBQyxxQkFFVCxDQUFBO2dCQUNGLHNCQUFPLGFBQUcsQ0FBQzt3QkFDVCxXQUFXLEVBQUMsS0FBSztxQkFDbEIsQ0FBQzt5QkFDRCxVQUFVLENBQUMsSUFBSSxDQUFDO3lCQUNoQixJQUFJLENBQUMsVUFBQyxDQUFDO3dCQUNOLGdCQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDdkIsQ0FBQyxDQUFDLEVBQUE7OztLQUNILENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBRSxvQ0FBb0MsRUFBQzs7OztnQkFDakMsSUFBSSxHQUFDLHdCQUVULENBQUE7Z0JBQ0Ysc0JBQU8sYUFBRyxDQUFDO3dCQUNULFVBQVUsRUFBQyxJQUFJO3FCQUNoQixDQUFDO3lCQUNELFVBQVUsQ0FBQyxJQUFJLENBQUM7eUJBQ2hCLElBQUksQ0FBQyxVQUFDLENBQUM7d0JBQ04sZ0JBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQTtvQkFDM0IsQ0FBQyxDQUFDLEVBQUE7OztLQUNILENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBRSxnQ0FBZ0MsRUFBQzs7OztnQkFDN0IsSUFBSSxHQUFDLHVCQUVULENBQUE7Z0JBQ0Ysc0JBQU8sYUFBRyxDQUFDLEVBQ1YsQ0FBQzt5QkFDRCxVQUFVLENBQUMsSUFBSSxDQUFDO3lCQUNoQixJQUFJLENBQUMsVUFBQyxDQUFDO3dCQUNOLGdCQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQzt3QkFDNUIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM5QixDQUFDLENBQUMsRUFBQTs7O0tBQ0gsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3N2IGZyb20gXCIuLi9zcmNcIjtcbmltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xudmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xuaW1wb3J0IHsgc2FuZGJveCB9IGZyb20gXCJzaW5vblwiO1xuaW1wb3J0IENTVkVycm9yIGZyb20gXCIuLi9zcmMvQ1NWRXJyb3JcIjtcbmNvbnN0IHNiID0gc2FuZGJveC5jcmVhdGUoKTtcbmRlc2NyaWJlKFwidGVzdENTVkNvbnZlcnRlcjNcIiwgZnVuY3Rpb24gKCkge1xuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNiLnJlc3RvcmUoKTtcbiAgfSk7XG4gIGl0KFwic2hvdWxkIHBhcnNlIGxhcmdlIGNzdiBmaWxlIHdpdGggVVRGLTggd2l0aG91dCBzcGxpdGluZyBjaGFyYWN0ZXJzXCIsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIHRlc3REYXRhID0gX19kaXJuYW1lICsgXCIvZGF0YS9sYXJnZS11dGY4LmNzdlwiO1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0odGVzdERhdGEpO1xuICAgIHZhciBjc3ZDb252ZXJ0ZXIgPSBjc3Yoe1xuICAgIH0pO1xuICAgIHZhciBjb3VudCA9IDA7XG4gICAgY3N2Q29udmVydGVyLnByZVJhd0RhdGEoZnVuY3Rpb24gKGNzdlJhd0RhdGEpIHtcbiAgICAgIGFzc2VydChjc3ZSYXdEYXRhLmNoYXJDb2RlQXQoMCkgPCAyMDAwKTtcbiAgICAgIHJldHVybiBjc3ZSYXdEYXRhO1xuICAgIH0pXG4gICAgY3N2Q29udmVydGVyLm9uKFwiZGF0YVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb3VudCsrO1xuICAgIH0pO1xuICAgIGNzdkNvbnZlcnRlci50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydChjb3VudCA9PT0gNTI5MCk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gICAgcnMucGlwZShjc3ZDb252ZXJ0ZXIpO1xuICB9KTtcbiAgaXQoXCJzaG91bGQgc2V0dXAgY3VzdG9taXNlIHR5cGUgY29udmVydCBmdW5jdGlvblwiLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIGNzdih7XG4gICAgICBjaGVja1R5cGU6IHRydWUsXG4gICAgICBjb2xQYXJzZXI6IHtcbiAgICAgICAgXCJjb2x1bW4xXCI6IFwic3RyaW5nXCIsXG4gICAgICAgIFwiY29sdW1uNVwiOiBmdW5jdGlvbiAoaXRlbSwgaGVhZCwgcmVzdWx0Um93LCByb3csIGkpIHtcbiAgICAgICAgICBhc3NlcnQuZXF1YWwoaXRlbSwgJ3tcImhlbGxvXCI6XCJ3b3JsZFwifScpO1xuICAgICAgICAgIGFzc2VydC5lcXVhbChoZWFkLCBcImNvbHVtbjVcIiksXG4gICAgICAgICAgICBhc3NlcnQocmVzdWx0Um93KTtcbiAgICAgICAgICBhc3NlcnQocm93KTtcbiAgICAgICAgICBhc3NlcnQuZXF1YWwoaSwgNSk7XG4gICAgICAgICAgcmV0dXJuIFwiaGVsbG8gd29ybGRcIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgICAuZnJvbUZpbGUoX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFR5cGVcIilcbiAgICAgIC5zdWJzY3JpYmUoZnVuY3Rpb24gKGpzb24pIHtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKHR5cGVvZiBqc29uLmNvbHVtbjEsIFwic3RyaW5nXCIpO1xuICAgICAgICBhc3NlcnQuZXF1YWwoanNvbi5jb2x1bW41LCBcImhlbGxvIHdvcmxkXCIpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoanNvbltcIm5hbWUjIVwiXSwgZmFsc2UpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoanNvbltcImNvbHVtbjlcIl0sIHRydWUpO1xuICAgICAgfSlcbiAgICAgIC5vbignZG9uZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZG9uZSgpXG4gICAgICB9KTtcbiAgfSlcbiAgaXQoXCJzaG91bGQgYWNjZXB0IHBpcGUgYXMgcXVvdGVcIiwgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICBjc3Yoe1xuICAgICAgcXVvdGU6IFwifFwiLFxuICAgICAgb3V0cHV0OiBcImNzdlwiXG4gICAgfSlcbiAgICAgIC5mcm9tRmlsZShfX2Rpcm5hbWUgKyBcIi9kYXRhL3BpcGVBc1F1b3RlXCIpXG4gICAgICAuc3Vic2NyaWJlKGZ1bmN0aW9uIChjc3YpIHtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGNzdlsyXSwgXCJibGFoaGgsIGJsYWhcIik7XG4gICAgICB9KVxuICAgICAgLm9uKCdkb25lJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBkb25lKClcbiAgICAgIH0pO1xuICB9KVxuICBpdChcImVtaXQgZmlsZSBub3QgZXhpc3RzIGVycm9yIHdoZW4gdHJ5IHRvIG9wZW4gYSBub24tZXhpc3RzIGZpbGVcIiwgZnVuY3Rpb24gKCkge1xuICAgIGxldCBjYWxsZWQgPSBmYWxzZTtcbiAgICBjb25zdCBjYiA9IHNiLnNweSgoZXJyKSA9PiB7XG4gICAgICBhc3NlcnQoZXJyLnRvU3RyaW5nKCkuaW5kZXhPZihcIkZpbGUgZG9lcyBub3QgZXhpc3RcIikgPiAtMSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNzdigpXG4gICAgICAuZnJvbUZpbGUoXCJzb21lZmlsZVwiKVxuICAgICAgLnN1YnNjcmliZShmdW5jdGlvbiAoY3N2KSB7XG5cbiAgICAgIH0pXG4gICAgICAub24oXCJlcnJvclwiLCBjYilcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgYXNzZXJ0KGZhbHNlKTtcbiAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGNiLmNhbGxDb3VudCwgMSk7XG4gICAgICB9KVxuXG4gIH0pXG4gIGl0KFwic2hvdWxkIGluY2x1ZGUgY29sdW1uIHRoYXQgaXMgYm90aCBpbmNsdWRlZCBhbmQgZXhjbHVkZWRcIiwgKCkgPT4ge1xuICAgIHJldHVybiBjc3Yoe1xuICAgICAgaW5jbHVkZUNvbHVtbnM6IC9iLyxcbiAgICAgIGlnbm9yZUNvbHVtbnM6IC9hfGIvXG4gICAgfSlcbiAgICAgIC5mcm9tU3RyaW5nKGBhLGIsY1xuMSwyLDNcbjQsNSw2YClcbiAgICAgIC5zdWJzY3JpYmUoKGQpID0+IHtcbiAgICAgICAgYXNzZXJ0KGQuYik7XG4gICAgICAgIGFzc2VydCghZC5hKTtcbiAgICAgIH0pXG4gIH0pXG4gIGl0KFwic2hvdWxkIGFsbG93IGFzeW5jIHByZUxpbmUgaG9va1wiLCAoKSA9PiB7XG4gICAgcmV0dXJuIGNzdigpXG4gICAgICAucHJlRmlsZUxpbmUoKGxpbmUpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUobGluZSArIFwiY2hhbmdlZFwiKVxuICAgICAgICAgIH0sIDIwKTtcblxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICAgIC5mcm9tU3RyaW5nKGBhLGJcbjEsMmApXG4gICAgICAuc3Vic2NyaWJlKChkKSA9PiB7XG4gICAgICAgIGFzc2VydChkLmJjaGFuZ2VkKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGQuYmNoYW5nZWQsIFwiMmNoYW5nZWRcIik7XG4gICAgICB9KVxuXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgYWxsb3cgYXN5bmMgc3Vic2NyaWJlIGZ1bmN0aW9uXCIsICgpID0+IHtcbiAgICByZXR1cm4gY3N2KHsgdHJpbTogdHJ1ZSB9KVxuICAgICAgLmZyb21TdHJpbmcoYGEsYixjXG4gICAgMSwyLDNcbiAgICA0LDUsNmApXG4gICAgICAuc3Vic2NyaWJlKChkKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBkLmEgPSAxMDtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9LCAyMCk7XG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgICAgLnRoZW4oKGQpID0+IHtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGRbMF0uYSwgMTApO1xuICAgICAgICBhc3NlcnQuZXF1YWwoZFsxXS5hLCAxMCk7XG4gICAgICB9KVxuICB9KVxuICBpdChcInNob3VsZCBwcm9wYWdhdGUgdmFsdWUgdG8gbmV4dCB0aGVuXCIsICgpID0+IHtcbiAgICByZXR1cm4gY3N2KHsgdHJpbTogdHJ1ZSB9KVxuICAgICAgLmZyb21TdHJpbmcoYGEsYixjXG4gIDEsMiwzXG4gIDQsNSw2YClcbiAgICAgIC50aGVuKHVuZGVmaW5lZCwgdW5kZWZpbmVkKVxuICAgICAgLnRoZW4oKGQpID0+IHtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGQubGVuZ3RoLCAyKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGRbMF0uYSwgXCIxXCIpO1xuICAgICAgfSlcblxuICB9KVxuICBpdChcInNob3VsZCBwcm9wYWdhdGUgZXJyb3IgdG8gbmV4dCB0aGVuXCIsICgpID0+IHtcbiAgICByZXR1cm4gY3N2KHsgdHJpbTogdHJ1ZSB9KVxuICAgICAgLmZyb21GaWxlKF9fZGlybmFtZSArIFwiL2RhdGEvZGF0YVdpdGhVbmNsb3NlZFF1b3Rlc1wiKVxuICAgICAgLnRoZW4odW5kZWZpbmVkLCB1bmRlZmluZWQpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGFzc2VydChmYWxzZSlcbiAgICAgIH0sIChlcnI6IENTVkVycm9yKSA9PiB7XG4gICAgICAgIGFzc2VydChlcnIpO1xuICAgICAgICBhc3NlcnQuZXF1YWwoZXJyLmVyciwgXCJ1bmNsb3NlZF9xdW90ZVwiKTtcbiAgICAgIH0pXG4gIH0pXG4gIGl0KFwic2hvdWxkIGZhbGxiYWNrIHRvIHRleHQgaXMgbnVtYmVyIGNhbiBub3QgYmUgcGFyc2VkXCIsICgpID0+IHtcbiAgICByZXR1cm4gY3N2KHtcbiAgICAgIGNvbFBhcnNlcjoge1xuICAgICAgICBcImFcIjogXCJudW1iZXJcIlxuICAgICAgfVxuICAgIH0pXG4gICAgICAuZnJvbVN0cmluZyhgYSxiLGNcbiAgMSwyLDNcbiAgZmVmZSw1LDZgKVxuICAgICAgLnRoZW4oKGQpID0+IHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRbMF0uYSwgMSk7XG4gICAgICAgIGFzc2VydC5lcXVhbChkWzFdLmEsIFwiZmVmZVwiKTtcbiAgICAgIH0pXG4gIH0pXG4gIGl0KFwic2hvdWxkIG9taXQgYSBjb2x1bW5cIiwgKCkgPT4ge1xuICAgIHJldHVybiBjc3Yoe1xuICAgICAgY29sUGFyc2VyOiB7XG4gICAgICAgIFwiYVwiOiBcIm9taXRcIlxuICAgICAgfVxuICAgIH0pXG4gICAgICAuZnJvbVN0cmluZyhgYSxiLGNcbiAgMSwyLDNcbiAgZmVmZSw1LDZgKVxuICAgICAgLnRoZW4oKGQpID0+IHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRbMF0uYSwgdW5kZWZpbmVkKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGRbMV0uYSwgdW5kZWZpbmVkKTtcbiAgICAgIH0pXG4gIH0pXG4gIGl0KFwiY291bGQgdHVybiBvZmYgcXVvdGUgYW5kIHNob3VsZCB0cmltIGV2ZW4gcXVvdGUgaXMgdHVybmVkIG9mZlwiLCAoKSA9PiB7XG4gICAgcmV0dXJuIGNzdih7XG4gICAgICBxdW90ZTogXCJvZmZcIixcbiAgICAgIHRyaW06IHRydWVcbiAgICB9KVxuICAgICAgLmZyb21TdHJpbmcoYGEsYixjXG4gIFwiMVwiLFwiMlwiLFwiM1wiXG4gIFwiZmVmZSw1XCIsNmApXG4gICAgICAudGhlbigoZCkgPT4ge1xuICAgICAgICBhc3NlcnQuZXF1YWwoZFswXS5hLCAnXCIxXCInKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGRbMF0uYiwgJ1wiMlwiJyk7XG4gICAgICAgIGFzc2VydC5lcXVhbChkWzFdLmEsICdcImZlZmUnKTtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGRbMV0uYiwgJzVcIicpO1xuICAgICAgfSlcbiAgfSlcbiAgaXQoXCJzaG91bGQgYWxsb3cgaWdub3JlRW1wdHkgd2l0aCBjaGVja0NvbHVtblwiLCAoKSA9PiB7XG4gICAgcmV0dXJuIGNzdih7XG4gICAgICBjaGVja0NvbHVtbjogdHJ1ZSxcbiAgICAgIGlnbm9yZUVtcHR5OiB0cnVlXG4gICAgfSlcbiAgICAgIC5mcm9tU3RyaW5nKGBkYXRlLGFsdGl0dWRlLGFpcnRpbWVcbiAgICAyMDE2LTA3LTA4LDIwMDAsMjNcbiAgICBcbiAgICAyMDE2LTA3LTA5LDMwMDAsNDNgKVxuICAgICAgLnRoZW4oKGRhdGEpID0+IHtcblxuICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICBhc3NlcnQoIWVycik7XG4gICAgICB9KVxuICB9KTtcbiAgaXQoXCJzaG91bGQgYWxsb3cgcXVvdGVzIHdpdGhvdXQgY29udGVudFwiLCAoKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IFwiYXxeXnxeYl5cIjtcbiAgICByZXR1cm4gY3N2KHtcbiAgICAgIGRlbGltaXRlcjogJ3wnLFxuICAgICAgcXVvdGU6ICdeJyxcbiAgICAgIG5vaGVhZGVyOiB0cnVlLFxuICAgIH0pXG4gICAgICAuZnJvbVN0cmluZyhkYXRhKVxuICAgICAgLnRoZW4oKGpzb25PYmopID0+IHtcbiAgICAgICAgYXNzZXJ0LmVxdWFsKGpzb25PYmpbMF0uZmllbGQyLCBcIlwiKTtcbiAgICAgIH0pO1xuICB9KVxuICBpdChcInNob3VsZCBwYXJzZSBoZWFkZXIgd2l0aCBxdW90ZXMgY29ycmVjdGx5XCIsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGVzdERhdGEgPSBfX2Rpcm5hbWUgKyBcIi9kYXRhL2NzdldpdGhVbmNsb3NlZEhlYWRlclwiO1xuICAgIHJldHVybiBjc3Yoe1xuICAgICAgaGVhZGVyczogW1wiZXhhbV9kYXRlXCIsIFwic2FtcGxlX25vXCIsIFwic3RhdHVzXCIsIFwic2FtcGxlX3R5cGVcIiwgXCJwYXRpZW50X2lkXCIsIFwibGFzdF9uYW1lXCIsIFwiZmlyc3RfbmFtZVwiLCBcImdlbmRlcl9vZl9wYXRpZW50XCIsIFwicGF0aWVudF9iaXJ0aF9kYXRlXCIsIFwicGF0aWVudF9ub3RlXCIsIFwicGF0aWVudF9kZXBhcnRtZW50XCIsIFwiYWNjZXNzaW9uX251bWJlclwiLCBcInNhbXBsZV9zaXRlXCIsIFwicGh5c2ljaWFuXCIsIFwib3BlcmF0b3JcIiwgXCJkZXBhcnRtZW50XCIsIFwibm90ZVwiLCBcInRlc3Rfb3JkZXJfY29kZVwiLCBcImRyYXdfdGltZVwiLCBcImFwcHJvdmFsX3N0YXR1c1wiLCBcImFwcHJvdmFsX3RpbWVcIiwgXCJyZXBvcnRfbGF5b3V0XCIsIFwicGF0aWVudF9hY2NvdW50X251bWJlclwiLCBcIm5vbmVfMVwiLCBcImVycm9yc19kZXRlY3RlZF9kdXJpbmdfbWVhc3VyZW1lbnRcIiwgXCJhZ2VcIiwgXCJlcnJvcl9jb2RlXzAxXCIsIFwid2VpZ2h0XCIsIFwiZXJyb3JfY29kZV8wMlwiLCBcImhlaWdodFwiLCBcImVycm9yX2NvZGVfMDNcIiwgXCJoY2dfYmV0YV9wXCIsIFwiZXJyb3JfY29kZV8wNFwiLCBcInRyb3BvbmluX2lfcFwiLCBcImVycm9yX2NvZGVfMDVcIiwgXCJja19tYl9wXCIsIFwiZXJyb3JfY29kZV8wNlwiLCBcImRfZGltZXJfcFwiLCBcImVycm9yX2NvZGVfMDdcIiwgXCJoc2NycF9wXCIsIFwiZXJyb3JfY29kZV8wOFwiLCBcIm15b2dsb2Jpbl9wXCIsIFwiZXJyb3JfY29kZV8wOVwiLCBcIm50X3Byb2JucFwiLCBcImVycm9yX2NvZGVfMTBcIiwgXCJjcnBcIiwgXCJlcnJvcl9jb2RlXzExXCIsIFwiYm5wXCIsIFwiZXJyb3JfY29kZV8xMlwiLCBcInRudFwiLCBcImVycm9yX2NvZGVfMTNcIiwgXCJkZW1vX3BcIiwgXCJlcnJvcl9jb2RlXzE0XCIsIFwicGN0XCIsIFwiZXJyb3JfY29kZV8xNVwiXVxuICAgIH0pXG4gICAgICAuZnJvbUZpbGUodGVzdERhdGEpXG4gICAgICAudGhlbigoZCkgPT4ge1xuICAgICAgICBhc3NlcnQuZXF1YWwoZC5sZW5ndGgsIDIpO1xuICAgICAgICBhc3NlcnQuZXF1YWwoZFswXS5zYW1wbGVfbm8sIFwiMTI2NjlcIik7XG4gICAgICB9KVxuXG4gIH0pO1xuICBpdCAoXCJzaG91bGQgc3RyZWFtIGpzb24gc3RyaW5nIGNvcnJlY3RseVwiLGZ1bmN0aW9uKGRvbmUpe1xuICAgIGNvbnN0IGRhdGE9YGEsYixjXG4xLDIsM1xuNCw1LDZgXG4gICAgbGV0IGhhc0xlZnRCcmFja2V0PWZhbHNlO1xuICAgIGxldCBoYXNSaWdodEJyYWNrZXQ9ZmFsc2U7XG4gICAgY3N2KHtcbiAgICAgIGRvd25zdHJlYW1Gb3JtYXQ6XCJhcnJheVwiXG4gICAgfSlcbiAgICAuZnJvbVN0cmluZyhkYXRhKVxuICAgIC5vbihcImRhdGFcIiwoZCk9PntcbiAgICAgIGNvbnN0IHN0cj1kLnRvU3RyaW5nKCk7XG4gICAgICBpZiAoc3RyWzBdPT09XCJbXCIgJiYgc3RyLmxlbmd0aCA9PT0yKXtcbiAgICAgICAgaGFzTGVmdEJyYWNrZXQ9dHJ1ZTtcbiAgICAgIH1lbHNlIGlmIChzdHJbMF09PT1cIl1cIiAmJiBzdHIubGVuZ3RoPT09Mil7XG4gICAgICAgIGhhc1JpZ2h0QnJhY2tldD10cnVlO1xuICAgICAgfWVsc2V7XG4gICAgICAgIGFzc2VydC5lcXVhbChzdHJbc3RyLmxlbmd0aC0yXSxcIixcIik7XG4gICAgICB9XG4gICAgICBcbiAgICB9KVxuICAgIC5vbihcImVuZFwiLCgpPT57XG4gICAgICBhc3NlcnQuZXF1YWwoaGFzTGVmdEJyYWNrZXQsdHJ1ZSk7XG4gICAgICBhc3NlcnQuZXF1YWwoaGFzUmlnaHRCcmFja2V0LHRydWUpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pXG4gIH0pXG4gIGl0IChcInNob3VsZCBzdHJlYW0ganNvbiBsaW5lIGNvcnJlY3RseVwiLGZ1bmN0aW9uKGRvbmUpe1xuICAgIGNvbnN0IGRhdGE9YGEsYixjXG4xLDIsM1xuNCw1LDZgXG4gICAgY3N2KHtcbiAgICAgIGRvd25zdHJlYW1Gb3JtYXQ6XCJsaW5lXCJcbiAgICB9KVxuICAgIC5mcm9tU3RyaW5nKGRhdGEpXG4gICAgLm9uKFwiZGF0YVwiLChkKT0+e1xuICAgICAgY29uc3Qgc3RyPWQudG9TdHJpbmcoKTtcbiAgICAgIFxuICAgICAgYXNzZXJ0Lm5vdEVxdWFsKHN0cltzdHIubGVuZ3RoLTJdLFwiLFwiKTtcbiAgICB9KVxuICAgIC5vbihcImVuZFwiLCgpPT57XG4gICAgICBkb25lKCk7XG4gICAgfSlcbiAgfSlcbiAgaXQgKFwic2hvdWxkIG5vdCBzZW5kIGpzb24gaWYgbmVlZEVtaXRBbGwgaXMgZmFsc2VcIixhc3luYyBmdW5jdGlvbigpe1xuICAgIGNvbnN0IGRhdGE9YGEsYixjXG4xLDIsM1xuNCw1LDZgXG4gICAgcmV0dXJuIGNzdih7XG4gICAgICBuZWVkRW1pdEFsbDpmYWxzZVxuICAgIH0pXG4gICAgLmZyb21TdHJpbmcoZGF0YSlcbiAgICAudGhlbigoZCk9PntcbiAgICAgIGFzc2VydChkLmxlbmd0aD09PTApO1xuICAgIH0pXG4gIH0pXG4gIGl0IChcInNob3VsZCBjb252ZXJ0IG51bGwgdG8gbnVsbCBvYmplY3RcIixhc3luYyBmdW5jdGlvbigpe1xuICAgIGNvbnN0IGRhdGE9YGEsYixjXG5udWxsLDIsM1xuNCw1LDZgXG4gICAgcmV0dXJuIGNzdih7XG4gICAgICBudWxsT2JqZWN0OnRydWVcbiAgICB9KVxuICAgIC5mcm9tU3RyaW5nKGRhdGEpXG4gICAgLnRoZW4oKGQpPT57XG4gICAgICBhc3NlcnQuZXF1YWwoZFswXS5hLG51bGwpXG4gICAgfSlcbiAgfSlcbiAgaXQgKFwic2hvdWxkIHByb2Nlc3MgcGVyaW9kIHByb3Blcmx5XCIsYXN5bmMgZnVuY3Rpb24oKXtcbiAgICBjb25zdCBkYXRhPWBhLi4sYixjXG4xLDIsM1xuNCw1LDZgXG4gICAgcmV0dXJuIGNzdih7XG4gICAgfSlcbiAgICAuZnJvbVN0cmluZyhkYXRhKVxuICAgIC50aGVuKChkKT0+e1xuICAgICAgYXNzZXJ0LmVxdWFsKGRbMF1bXCJhLi5cIl0sMSk7XG4gICAgICBhc3NlcnQuZXF1YWwoZFsxXVtcImEuLlwiXSw0KTtcbiAgICB9KVxuICB9KVxufSk7XG4iXX0= \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/dff58c3574a6aa9c5fb6c818f7da8b891eb80498ee4ab50c99085e120ad44307.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/dff58c3574a6aa9c5fb6c818f7da8b891eb80498ee4ab50c99085e120ad44307.js deleted file mode 100644 index 572629d..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/dff58c3574a6aa9c5fb6c818f7da8b891eb80498ee4ab50c99085e120ad44307.js +++ /dev/null @@ -1,42 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var CSVError = /** @class */ (function (_super) { - __extends(CSVError, _super); - function CSVError(err, line, extra) { - var _this = _super.call(this, "Error: " + err + ". JSON Line number: " + line + (extra ? " near: " + extra : "")) || this; - _this.err = err; - _this.line = line; - _this.extra = extra; - _this.name = "CSV Parse Error"; - return _this; - } - CSVError.column_mismatched = function (index, extra) { - return new CSVError("column_mismatched", index, extra); - }; - CSVError.unclosed_quote = function (index, extra) { - return new CSVError("unclosed_quote", index, extra); - }; - CSVError.fromJSON = function (obj) { - return new CSVError(obj.err, obj.line, obj.extra); - }; - CSVError.prototype.toJSON = function () { - return { - err: this.err, - line: this.line, - extra: this.extra - }; - }; - return CSVError; -}(Error)); -exports.default = CSVError; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9DU1ZFcnJvci50cyIsInNvdXJjZXMiOlsiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9DU1ZFcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtJQUFzQyw0QkFBSztJQVV6QyxrQkFDUyxHQUFXLEVBQ1gsSUFBWSxFQUNaLEtBQWM7UUFIdkIsWUFLRSxrQkFBTSxTQUFTLEdBQUcsR0FBRyxHQUFHLHNCQUFzQixHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FFMUY7UUFOUSxTQUFHLEdBQUgsR0FBRyxDQUFRO1FBQ1gsVUFBSSxHQUFKLElBQUksQ0FBUTtRQUNaLFdBQUssR0FBTCxLQUFLLENBQVM7UUFHckIsS0FBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQzs7SUFDaEMsQ0FBQztJQWhCTSwwQkFBaUIsR0FBeEIsVUFBeUIsS0FBYSxFQUFFLEtBQWM7UUFDcEQsT0FBTyxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNNLHVCQUFjLEdBQXJCLFVBQXNCLEtBQWEsRUFBRSxLQUFjO1FBQ2pELE9BQU8sSUFBSSxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDTSxpQkFBUSxHQUFmLFVBQWdCLEdBQUc7UUFDakIsT0FBTyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFTRCx5QkFBTSxHQUFOO1FBQ0UsT0FBTztZQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFBO0lBQ0gsQ0FBQztJQUVILGVBQUM7QUFBRCxDQUFDLEFBMUJELENBQXNDLEtBQUssR0EwQjFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ1NWRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHN0YXRpYyBjb2x1bW5fbWlzbWF0Y2hlZChpbmRleDogbnVtYmVyLCBleHRyYT86IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgQ1NWRXJyb3IoXCJjb2x1bW5fbWlzbWF0Y2hlZFwiLCBpbmRleCwgZXh0cmEpO1xuICB9XG4gIHN0YXRpYyB1bmNsb3NlZF9xdW90ZShpbmRleDogbnVtYmVyLCBleHRyYT86IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgQ1NWRXJyb3IoXCJ1bmNsb3NlZF9xdW90ZVwiLCBpbmRleCwgZXh0cmEpO1xuICB9XG4gIHN0YXRpYyBmcm9tSlNPTihvYmopIHtcbiAgICByZXR1cm4gbmV3IENTVkVycm9yKG9iai5lcnIsIG9iai5saW5lLCBvYmouZXh0cmEpO1xuICB9XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlcnI6IHN0cmluZyxcbiAgICBwdWJsaWMgbGluZTogbnVtYmVyLFxuICAgIHB1YmxpYyBleHRyYT86IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihcIkVycm9yOiBcIiArIGVyciArIFwiLiBKU09OIExpbmUgbnVtYmVyOiBcIiArIGxpbmUgKyAoZXh0cmEgPyBcIiBuZWFyOiBcIiArIGV4dHJhIDogXCJcIikpO1xuICAgIHRoaXMubmFtZSA9IFwiQ1NWIFBhcnNlIEVycm9yXCI7XG4gIH1cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICBlcnI6IHRoaXMuZXJyLFxuICAgICAgbGluZTogdGhpcy5saW5lLFxuICAgICAgZXh0cmE6IHRoaXMuZXh0cmFcbiAgICB9XG4gIH1cblxufVxuIl19 \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/ea6725c683df8e737bfe3585acce32bd3d2a0b578a3d58bf502142d57979736c.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/ea6725c683df8e737bfe3585acce32bd3d2a0b578a3d58bf502142d57979736c.js deleted file mode 100644 index 8b70abb..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/ea6725c683df8e737bfe3585acce32bd3d2a0b578a3d58bf502142d57979736c.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var Converter_1 = require("../src/Converter"); -var assert = require("assert"); -var fs = require("fs"); -describe("Converter error handling", function () { - it("should handle quote not closed", function (done) { - var rs = fs.createReadStream(__dirname + "/data/dataWithUnclosedQuotes"); - var conv = new Converter_1.Converter({}); - conv.on("error", function (err) { - assert(err.err === "unclosed_quote"); - done(); - }); - rs.pipe(conv); - }); - it("should handle column number mismatched error", function (done) { - var rs = fs.createReadStream(__dirname + "/data/dataWithMismatchedColumn"); - var conv = new Converter_1.Converter({ - checkColumn: true - }); - var tested = false; - conv.on("error", function (err) { - if (tested === false) { - assert(err.err === "column_mismatched"); - tested = true; - // done(); - } - }); - conv.on('done', function () { - assert(tested); - done(); - }); - rs.pipe(conv); - }); - it("should treat quote not closed as column_mismatched when alwaysSplitAtEOL is true", function (done) { - var rs = fs.createReadStream(__dirname + "/data/dataWithUnclosedQuotes"); - var conv = new Converter_1.Converter({ - checkColumn: true, - alwaysSplitAtEOL: true, - }); - var tested = false; - conv.on("error", function (err) { - if (tested === false) { - assert(err.err === "column_mismatched"); - tested = true; - } - }); - conv.on('done', function () { - assert(tested); - done(); - }); - rs.pipe(conv); - }); -}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3Rlc3QvdGVzdEVycm9ySGFuZGxlLnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vdGVzdC90ZXN0RXJyb3JIYW5kbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw4Q0FBMkM7QUFFM0MsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9CLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QixRQUFRLENBQUMsMEJBQTBCLEVBQUU7SUFDbkMsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLFVBQVMsSUFBSTtRQUNoRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLDhCQUE4QixDQUFDLENBQUM7UUFDekUsSUFBSSxJQUFJLEdBQUcsSUFBSSxxQkFBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVMsR0FBWTtZQUNwQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3JDLElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBR0gsRUFBRSxDQUFFLDhDQUE4QyxFQUFFLFVBQVMsSUFBSTtRQUMvRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLGdDQUFnQyxDQUFDLENBQUM7UUFDM0UsSUFBSSxJQUFJLEdBQUcsSUFBSSxxQkFBUyxDQUFDO1lBQ3ZCLFdBQVcsRUFBQyxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUNILElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFTLEdBQVk7WUFDcEMsSUFBSSxNQUFNLEtBQUssS0FBSyxFQUFFO2dCQUNwQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUN4QyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNkLFVBQVU7YUFDWDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUM7WUFDYixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDZixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrRkFBa0YsRUFBRSxVQUFTLElBQUk7UUFDbEcsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsR0FBRyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksSUFBSSxHQUFHLElBQUkscUJBQVMsQ0FBQztZQUN2QixXQUFXLEVBQUMsSUFBSTtZQUNoQixnQkFBZ0IsRUFBQyxJQUFJO1NBQ3RCLENBQUMsQ0FBQztRQUNILElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFTLEdBQVk7WUFDcEMsSUFBSSxNQUFNLEtBQUssS0FBSyxFQUFFO2dCQUNwQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUN4QyxNQUFNLEdBQUcsSUFBSSxDQUFDO2FBQ2Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFDO1lBQ2IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2YsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29udmVydGVyfSBmcm9tIFwiLi4vc3JjL0NvbnZlcnRlclwiO1xuaW1wb3J0IENTVkVycm9yIGZyb20gXCIuLi9zcmMvQ1NWRXJyb3JcIjtcbnZhciBhc3NlcnQgPSByZXF1aXJlKFwiYXNzZXJ0XCIpO1xudmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xuXG5kZXNjcmliZShcIkNvbnZlcnRlciBlcnJvciBoYW5kbGluZ1wiLCBmdW5jdGlvbigpIHtcbiAgaXQoXCJzaG91bGQgaGFuZGxlIHF1b3RlIG5vdCBjbG9zZWRcIiwgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFVuY2xvc2VkUXVvdGVzXCIpO1xuICAgIHZhciBjb252ID0gbmV3IENvbnZlcnRlcih7fSk7XG4gICAgY29udi5vbihcImVycm9yXCIsIGZ1bmN0aW9uKGVycjpDU1ZFcnJvcikge1xuICAgICAgYXNzZXJ0KGVyci5lcnIgPT09IFwidW5jbG9zZWRfcXVvdGVcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gICAgcnMucGlwZShjb252KTtcbiAgfSk7XG4gXG5cbiAgaXQgKFwic2hvdWxkIGhhbmRsZSBjb2x1bW4gbnVtYmVyIG1pc21hdGNoZWQgZXJyb3JcIiwgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aE1pc21hdGNoZWRDb2x1bW5cIik7XG4gICAgdmFyIGNvbnYgPSBuZXcgQ29udmVydGVyKHtcbiAgICAgIGNoZWNrQ29sdW1uOnRydWVcbiAgICB9KTtcbiAgICB2YXIgdGVzdGVkID0gZmFsc2U7XG4gICAgY29udi5vbihcImVycm9yXCIsIGZ1bmN0aW9uKGVycjpDU1ZFcnJvcikge1xuICAgICAgaWYgKHRlc3RlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgYXNzZXJ0KGVyci5lcnIgPT09IFwiY29sdW1uX21pc21hdGNoZWRcIik7XG4gICAgICAgIHRlc3RlZCA9IHRydWU7XG4gICAgICAgIC8vIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb252Lm9uKCdkb25lJyxmdW5jdGlvbigpIHtcbiAgICAgIGFzc2VydCh0ZXN0ZWQpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHJzLnBpcGUoY29udik7XG4gIH0pO1xuXG4gIGl0KFwic2hvdWxkIHRyZWF0IHF1b3RlIG5vdCBjbG9zZWQgYXMgY29sdW1uX21pc21hdGNoZWQgd2hlbiBhbHdheXNTcGxpdEF0RU9MIGlzIHRydWVcIiwgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBycyA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oX19kaXJuYW1lICsgXCIvZGF0YS9kYXRhV2l0aFVuY2xvc2VkUXVvdGVzXCIpO1xuICAgIHZhciBjb252ID0gbmV3IENvbnZlcnRlcih7XG4gICAgICBjaGVja0NvbHVtbjp0cnVlLFxuICAgICAgYWx3YXlzU3BsaXRBdEVPTDp0cnVlLFxuICAgIH0pO1xuICAgIHZhciB0ZXN0ZWQgPSBmYWxzZTtcbiAgICBjb252Lm9uKFwiZXJyb3JcIiwgZnVuY3Rpb24oZXJyOkNTVkVycm9yKSB7XG4gICAgICBpZiAodGVzdGVkID09PSBmYWxzZSkge1xuICAgICAgICBhc3NlcnQoZXJyLmVyciA9PT0gXCJjb2x1bW5fbWlzbWF0Y2hlZFwiKTtcbiAgICAgICAgdGVzdGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb252Lm9uKCdkb25lJyxmdW5jdGlvbigpIHtcbiAgICAgIGFzc2VydCh0ZXN0ZWQpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICAgIHJzLnBpcGUoY29udik7XG4gIH0pO1xufSk7XG4iXX0= \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/f869b8207955336fc82664bcde4b115d1ca9f4258e909100787837de7b2c2dde.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/f869b8207955336fc82664bcde4b115d1ca9f4258e909100787837de7b2c2dde.js deleted file mode 100644 index 23fc6dd..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/f869b8207955336fc82664bcde4b115d1ca9f4258e909100787837de7b2c2dde.js +++ /dev/null @@ -1,99 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [0, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var ProcessorLocal_1 = require("./ProcessorLocal"); -var Converter_1 = require("./Converter"); -var fs_1 = require("fs"); -var path_1 = __importDefault(require("path")); -var assert_1 = __importDefault(require("assert")); -var dataDir = path_1.default.join(__dirname, "../test/data/"); -describe("ProcessLocal", function () { - it("should process csv chunks and output json", function () { - return __awaiter(this, void 0, void 0, function () { - var processor, data, lines, line0; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - processor = new ProcessorLocal_1.ProcessorLocal(new Converter_1.Converter()); - data = fs_1.readFileSync(dataDir + "/complexJSONCSV"); - return [4 /*yield*/, processor.process(data)]; - case 1: - lines = _a.sent(); - assert_1.default(lines.length === 2); - line0 = lines[0]; - assert_1.default.equal(line0.fieldA.title, "Food Factory"); - assert_1.default.equal(line0.fieldA.children.length, 2); - assert_1.default.equal(line0.fieldA.children[1].employee[0].name, "Tim"); - return [2 /*return*/]; - } - }); - }); - }); - it("should process csv chunks and output csv rows", function () { - return __awaiter(this, void 0, void 0, function () { - var processor, data, lines; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - processor = new ProcessorLocal_1.ProcessorLocal(new Converter_1.Converter({ output: "line" })); - data = fs_1.readFileSync(dataDir + "/complexJSONCSV"); - return [4 /*yield*/, processor.process(data)]; - case 1: - lines = _a.sent(); - assert_1.default(lines.length === 2); - return [2 /*return*/]; - } - }); - }); - }); - it("should return empty array if preRawHook removed the data", function () { - var conv = new Converter_1.Converter(); - conv.preRawData(function (str) { - return ""; - }); - var processor = new ProcessorLocal_1.ProcessorLocal(conv); - var data = fs_1.readFileSync(dataDir + "/complexJSONCSV"); - return processor.process(data) - .then(function (list) { - assert_1.default.equal(list.length, 0); - }); - }); -}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9Qcm9jZXNzb3JMb2NhbC50ZXN0LnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL1Byb2Nlc3NvckxvY2FsLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFnRDtBQUNoRCx5Q0FBd0M7QUFFeEMseUJBQWdDO0FBQ2hDLDhDQUF3QjtBQUN4QixrREFBNEI7QUFFNUIsSUFBTSxPQUFPLEdBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsZUFBZSxDQUFDLENBQUM7QUFDbkQsUUFBUSxDQUFDLGNBQWMsRUFBQztJQUN0QixFQUFFLENBQUUsMkNBQTJDLEVBQUM7Ozs7Ozt3QkFDeEMsU0FBUyxHQUFDLElBQUksK0JBQWMsQ0FBQyxJQUFJLHFCQUFTLEVBQUUsQ0FBQyxDQUFDO3dCQUM5QyxJQUFJLEdBQUMsaUJBQVksQ0FBQyxPQUFPLEdBQUMsaUJBQWlCLENBQUMsQ0FBQzt3QkFDdkMscUJBQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQTs7d0JBQW5DLEtBQUssR0FBQyxTQUE2Qjt3QkFDekMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUNyQixLQUFLLEdBQUMsS0FBSyxDQUFDLENBQUMsQ0FBZSxDQUFDO3dCQUNuQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBQyxjQUFjLENBQUMsQ0FBQzt3QkFDaEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFDLEtBQUssQ0FBQyxDQUFDOzs7OztLQUMvRCxDQUFDLENBQUE7SUFDRixFQUFFLENBQUUsK0NBQStDLEVBQUM7Ozs7Ozt3QkFDNUMsU0FBUyxHQUFDLElBQUksK0JBQWMsQ0FBQyxJQUFJLHFCQUFTLENBQUMsRUFBQyxNQUFNLEVBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3RCxJQUFJLEdBQUMsaUJBQVksQ0FBQyxPQUFPLEdBQUMsaUJBQWlCLENBQUMsQ0FBQzt3QkFDdkMscUJBQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQTs7d0JBQW5DLEtBQUssR0FBQyxTQUE2Qjt3QkFFekMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDOzs7OztLQUM1QixDQUFDLENBQUE7SUFDRixFQUFFLENBQUUsMERBQTBELEVBQUM7UUFDN0QsSUFBTSxJQUFJLEdBQUMsSUFBSSxxQkFBUyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFDLEdBQUc7WUFDbEIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztRQUNILElBQU0sU0FBUyxHQUFDLElBQUksK0JBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFNLElBQUksR0FBQyxpQkFBWSxDQUFDLE9BQU8sR0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7YUFDN0IsSUFBSSxDQUFDLFVBQUMsSUFBSTtZQUNULGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQcm9jZXNzb3JMb2NhbH0gZnJvbSBcIi4vUHJvY2Vzc29yTG9jYWxcIjtcbmltcG9ydCB7IENvbnZlcnRlciB9IGZyb20gXCIuL0NvbnZlcnRlclwiO1xuaW1wb3J0IFAgZnJvbSBcImJsdWViaXJkXCI7XG5pbXBvcnQge3JlYWRGaWxlU3luY30gZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgeyBKU09OUmVzdWx0IH0gZnJvbSBcIi4vbGluZVRvSnNvblwiO1xuY29uc3QgZGF0YURpcj1wYXRoLmpvaW4oX19kaXJuYW1lLFwiLi4vdGVzdC9kYXRhL1wiKTtcbmRlc2NyaWJlKFwiUHJvY2Vzc0xvY2FsXCIsKCk9PntcbiAgaXQgKFwic2hvdWxkIHByb2Nlc3MgY3N2IGNodW5rcyBhbmQgb3V0cHV0IGpzb25cIixhc3luYyBmdW5jdGlvbiAoKXtcbiAgICBjb25zdCBwcm9jZXNzb3I9bmV3IFByb2Nlc3NvckxvY2FsKG5ldyBDb252ZXJ0ZXIoKSk7XG4gICAgY29uc3QgZGF0YT1yZWFkRmlsZVN5bmMoZGF0YURpcitcIi9jb21wbGV4SlNPTkNTVlwiKTtcbiAgICBjb25zdCBsaW5lcz1hd2FpdCBwcm9jZXNzb3IucHJvY2VzcyhkYXRhKTtcbiAgICBhc3NlcnQobGluZXMubGVuZ3RoID09PSAyKTtcbiAgICBjb25zdCBsaW5lMD1saW5lc1swXSBhcyBKU09OUmVzdWx0O1xuICAgIGFzc2VydC5lcXVhbChsaW5lMC5maWVsZEEudGl0bGUsXCJGb29kIEZhY3RvcnlcIik7XG4gICAgYXNzZXJ0LmVxdWFsKGxpbmUwLmZpZWxkQS5jaGlsZHJlbi5sZW5ndGgsMik7XG4gICAgYXNzZXJ0LmVxdWFsKGxpbmUwLmZpZWxkQS5jaGlsZHJlblsxXS5lbXBsb3llZVswXS5uYW1lLFwiVGltXCIpO1xuICB9KVxuICBpdCAoXCJzaG91bGQgcHJvY2VzcyBjc3YgY2h1bmtzIGFuZCBvdXRwdXQgY3N2IHJvd3NcIixhc3luYyBmdW5jdGlvbiAoKXtcbiAgICBjb25zdCBwcm9jZXNzb3I9bmV3IFByb2Nlc3NvckxvY2FsKG5ldyBDb252ZXJ0ZXIoe291dHB1dDpcImxpbmVcIn0pKTtcbiAgICBjb25zdCBkYXRhPXJlYWRGaWxlU3luYyhkYXRhRGlyK1wiL2NvbXBsZXhKU09OQ1NWXCIpO1xuICAgIGNvbnN0IGxpbmVzPWF3YWl0IHByb2Nlc3Nvci5wcm9jZXNzKGRhdGEpO1xuICAgIFxuICAgIGFzc2VydChsaW5lcy5sZW5ndGggPT09IDIpO1xuICB9KVxuICBpdCAoXCJzaG91bGQgcmV0dXJuIGVtcHR5IGFycmF5IGlmIHByZVJhd0hvb2sgcmVtb3ZlZCB0aGUgZGF0YVwiLCgpPT57XG4gICAgY29uc3QgY29udj1uZXcgQ29udmVydGVyKCk7XG4gICAgY29udi5wcmVSYXdEYXRhKChzdHIpPT57XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9KTtcbiAgICBjb25zdCBwcm9jZXNzb3I9bmV3IFByb2Nlc3NvckxvY2FsKGNvbnYpO1xuICAgIGNvbnN0IGRhdGE9cmVhZEZpbGVTeW5jKGRhdGFEaXIrXCIvY29tcGxleEpTT05DU1ZcIik7XG4gICAgcmV0dXJuIHByb2Nlc3Nvci5wcm9jZXNzKGRhdGEpXG4gICAgLnRoZW4oKGxpc3QpPT57XG4gICAgICBhc3NlcnQuZXF1YWwobGlzdC5sZW5ndGgsMCk7XG4gICAgfSlcbiAgfSlcbn0pXG5cbiJdfQ== \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/faa9fa3d0ff9bc89b0f57c0b9fcba99b4eb7ee0ec505f5bc404dfb198396e590.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/faa9fa3d0ff9bc89b0f57c0b9fcba99b4eb7ee0ec505f5bc404dfb198396e590.js deleted file mode 100644 index 48ddf39..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/faa9fa3d0ff9bc89b0f57c0b9fcba99b4eb7ee0ec505f5bc404dfb198396e590.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -describe("CSVError", function () { - it("should toString()", function () { - }); -}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9DU1ZFcnJvci50ZXN0LnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL0NTVkVycm9yLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxRQUFRLENBQUMsVUFBVSxFQUFDO0lBQ2xCLEVBQUUsQ0FBRSxtQkFBbUIsRUFBQztJQUN4QixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENTVkVycm9yIGZyb20gXCIuL0NTVkVycm9yXCI7XG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmRlc2NyaWJlKFwiQ1NWRXJyb3JcIiwoKT0+e1xuICBpdCAoXCJzaG91bGQgdG9TdHJpbmcoKVwiLCgpPT57XG4gIH0pXG59KSJdfQ== \ No newline at end of file diff --git a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/fcd05a9b151e0034c5b5950c400691dc885e4e64429d73b07dd25f75a49704bb.js b/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/fcd05a9b151e0034c5b5950c400691dc885e4e64429d73b07dd25f75a49704bb.js deleted file mode 100644 index b736d66..0000000 --- a/node_modules/csvtojson/.ts-node/4c960549db1acf61706147e6827e627a7fda2f32ddc1336b4438c12d731ddee1/fcd05a9b151e0034c5b5950c400691dc885e4e64429d73b07dd25f75a49704bb.js +++ /dev/null @@ -1,16 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var fileline_1 = require("./fileline"); -var Converter_1 = require("./Converter"); -var assert = require("assert"); -describe("fileline function", function () { - it("should convert data to multiple lines ", function () { - var conv = new Converter_1.Converter(); - var data = "abcde\nefef"; - var result = fileline_1.stringToLines(data, conv.parseRuntime); - assert.equal(result.lines.length, 1); - assert.equal(result.partial, "efef"); - assert.equal(result.lines[0], "abcde"); - }); -}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2t4aWFuZy93b3JrL3Byb2plY3RzL2NzdjJqc29uL3NyYy9maWxlbGluZS50ZXN0LnRzIiwic291cmNlcyI6WyIvVXNlcnMva3hpYW5nL3dvcmsvcHJvamVjdHMvY3N2Mmpzb24vc3JjL2ZpbGVsaW5lLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1Q0FBeUM7QUFFekMseUNBQXdDO0FBQ3hDLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMvQixRQUFRLENBQUMsbUJBQW1CLEVBQUU7SUFDNUIsRUFBRSxDQUFFLHdDQUF3QyxFQUFFO1FBQzVDLElBQU0sSUFBSSxHQUFDLElBQUkscUJBQVMsRUFBRSxDQUFDO1FBQzNCLElBQUksSUFBSSxHQUFHLGFBQWEsQ0FBQztRQUN6QixJQUFJLE1BQU0sR0FBRyx3QkFBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3N0cmluZ1RvTGluZXN9IGZyb20gXCIuL2ZpbGVsaW5lXCI7XG5pbXBvcnQgeyBtZXJnZVBhcmFtcyB9IGZyb20gXCIuL1BhcmFtZXRlcnNcIjtcbmltcG9ydCB7IENvbnZlcnRlciB9IGZyb20gXCIuL0NvbnZlcnRlclwiO1xudmFyIGFzc2VydCA9IHJlcXVpcmUoXCJhc3NlcnRcIik7XG5kZXNjcmliZShcImZpbGVsaW5lIGZ1bmN0aW9uXCIsIGZ1bmN0aW9uKCkge1xuICBpdCAoXCJzaG91bGQgY29udmVydCBkYXRhIHRvIG11bHRpcGxlIGxpbmVzIFwiLCBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBjb252PW5ldyBDb252ZXJ0ZXIoKTtcbiAgICB2YXIgZGF0YSA9IFwiYWJjZGVcXG5lZmVmXCI7XG4gICAgdmFyIHJlc3VsdCA9IHN0cmluZ1RvTGluZXMoZGF0YSwgY29udi5wYXJzZVJ1bnRpbWUpO1xuICAgIGFzc2VydC5lcXVhbChyZXN1bHQubGluZXMubGVuZ3RoLCAxKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzdWx0LnBhcnRpYWwsIFwiZWZlZlwiKTtcbiAgICBhc3NlcnQuZXF1YWwocmVzdWx0LmxpbmVzWzBdLCBcImFiY2RlXCIpO1xuICB9KTtcbn0pO1xuIl19 \ No newline at end of file diff --git a/node_modules/csvtojson/LICENSE b/node_modules/csvtojson/LICENSE deleted file mode 100644 index bd64207..0000000 --- a/node_modules/csvtojson/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -Copyright (C) 2013 Keyang Xiang - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/csvtojson/bin/csvtojson b/node_modules/csvtojson/bin/csvtojson deleted file mode 100755 index aa991be..0000000 --- a/node_modules/csvtojson/bin/csvtojson +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node - -require('./csvtojson.js')(); diff --git a/node_modules/csvtojson/bin/csvtojson.bat b/node_modules/csvtojson/bin/csvtojson.bat deleted file mode 100644 index 7d3b17c..0000000 --- a/node_modules/csvtojson/bin/csvtojson.bat +++ /dev/null @@ -1 +0,0 @@ -@node csvtojson.js %* \ No newline at end of file diff --git a/node_modules/csvtojson/bin/csvtojson.js b/node_modules/csvtojson/bin/csvtojson.js deleted file mode 100644 index 1e79547..0000000 --- a/node_modules/csvtojson/bin/csvtojson.js +++ /dev/null @@ -1,180 +0,0 @@ -function csvtojson() { - var Converter = require("../v2").Converter; - var fs = require("fs"); - var options = require("./options.json"); - var cmds = options.commands; - var opts = options.options; - var exps = options.examples; - var pkg = require("../package.json"); - var os = require("os"); - /** - *{ - "cmd": "parse", command to run - "options": {}, options to passe to the command - "inputStream": process.stdin // input stream for the command. default is stdin. can be a file read stream. - }; - * - */ - var parsedCmd; - - function _showHelp(errno) { - var key; - errno = typeof errno === "number" ? errno : 0; - console.log("csvtojson: Convert csv to JSON format"); - console.log("version:", pkg.version); - console.log("Usage: csvtojson [] [] filepath\n"); - console.log("Commands: "); - for (key in cmds) { - if (cmds.hasOwnProperty(key)) { - console.log("\t%s: %s", key, cmds[key]); - } - } - console.log("Options: "); - for (key in opts) { - if (opts.hasOwnProperty(key)) { - console.log("\t%s: %s", key, opts[key].desc); - } - } - console.log("Examples: "); - for (var i = 0; i < exps.length; i++) { - console.log("\t%s", exps[i]); - } - process.exit(errno); - } - function stringToRegExp(str) { - var lastSlash = str.lastIndexOf("/"); - var source = str.substring(1, lastSlash); - var flag = str.substring(lastSlash + 1); - return new RegExp(source,flag); - } - function parse() { - var is = parsedCmd.inputStream; - if (parsedCmd.options.maxRowLength === undefined) { - parsedCmd.options.maxRowLength = 10240; - } - if (is === process.stdin && is.isTTY) { - console.log("Please specify csv file path or pipe the csv data through.\n"); - _showHelp(1); - } - if (parsedCmd.options.delimiter === "\\t") { - parsedCmd.options.delimiter = "\t"; - } - if (parsedCmd.options.ignoreColumns) { - parsedCmd.options.ignoreColumns=stringToRegExp(parsedCmd.options.ignoreColumns); - - } - if (parsedCmd.options.includeColumns) { - parsedCmd.options.includeColumns=stringToRegExp(parsedCmd.options.includeColumns); - - } - var conv = new Converter(parsedCmd.options); - var isFirst = true; - conv.on("error", function (err, pos) { - if (!parsedCmd.options.quiet) { - console.error("csvtojson got an error: ", err); - if (pos) { - console.error("The error happens at following line: "); - console.log(pos); - } - } - process.exit(1); - }) - .on("data",function (dataStr) { - process.stdout.write((isFirst ? "" : "," + os.EOL) + dataStr.toString().substr(0,dataStr.length-1)); - isFirst = false; - }) - .on("done", function () { - console.log(os.EOL + "]"); - }) - console.log("["); - is.pipe(conv); - // is.pipe(conv); - } - - function run(cmd, options) { - if (cmd === "parse") { - parse(); - } else if (cmd === "version") { - console.log(pkg.version); - } else { - console.log("unknown command %s.", cmd); - _showHelp(1); - } - } - - function commandParser() { - var parsedCmd = { - "cmd": "parse", - "options": {}, - "inputStream": process.stdin - }; - - function parseObject(val, optional) { - try { - return JSON.parse(val); - } catch (e) { - if (optional) { - return val; - } else { - console.error(e); - process.exit(1); - } - } - } - - function parseBool(str, optName) { - str = str.toLowerCase(); - if (str === "true" || str === "y") { - return true; - } else if (str === "false" || str === "n") { - return false; - } - console.log("Unknown boolean value %s for parameter %s.", str, optName); - _showHelp(1); - } - process.argv.slice(2).forEach(function (item) { - if (item.indexOf("--") > -1) { - var itemArr = item.split("="); - var optName = itemArr[0]; - var key, val, type; - if (!opts[optName]) { - console.log("Option %s not supported.", optName); - _showHelp(1); - } - key = optName.replace('--', ''); - val = itemArr[1] || ''; - type = opts[optName].type; - if (type === "string") { - parsedCmd.options[key] = val.toString(); - } else if (type === "boolean") { - parsedCmd.options[key] = parseBool(val, optName); - } else if (type === "number") { - parsedCmd.options[key] = parseFloat(val); - } else if (type === "object") { - parsedCmd.options[key] = parseObject(val, false); - } else if (type === "~object") { - parsedCmd.options[key] = parseObject(val, true); - } else { - throw ({ - name: "UnimplementedException", - message: "Option type parsing not implemented. See bin/options.json" - }); - } - } else if (cmds[item]) { - parsedCmd.cmd = item; - } else if (fs.existsSync(item)) { - parsedCmd.inputStream = fs.createReadStream(item); - } else { - console.log("unknown parameter %s.", item); - } - }); - return parsedCmd; - } - process.stdin.setEncoding('utf8'); - parsedCmd = commandParser(); - run(parsedCmd.cmd, parsedCmd.options); -} -module.exports = csvtojson; -if (!module.parent) { - csvtojson(); -} diff --git a/node_modules/csvtojson/bin/genCsv.js b/node_modules/csvtojson/bin/genCsv.js deleted file mode 100755 index 9c17601..0000000 --- a/node_modules/csvtojson/bin/genCsv.js +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env node -var minimist = require("minimist"); -var argv = process.argv; -argv.shift(); -argv.shift(); -var args = minimist(argv); -var headers = ["name", "header1", "file2", "description", "header2", "field2", "header3"]; - -if (args.headers) { - headers = JSON.parse(args.headers); -} -var rowNum = args.row ? args.row : 10000; -var chars = args.chars ? args.chars : "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; -var maxLength = parseInt(args.max ? args.max : "15"); -console.log(headers.join(",")); -for (var i = 0; i < rowNum; i++) { - var row = []; - for (var j = 0; j < headers.length; j++) { - row.push(genWord()); - } - console.log(row.join(",")); -} - -function genWord() { - var len = Math.round(Math.random() * maxLength); - var rtn = ""; - for (var i = 0; i < len; i++) { - var pos = Math.round(Math.random() * chars.length); - rtn += chars[pos]; - } - return rtn; -} diff --git a/node_modules/csvtojson/bin/options.json b/node_modules/csvtojson/bin/options.json deleted file mode 100644 index 220b457..0000000 --- a/node_modules/csvtojson/bin/options.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "commands": { - "parse": "(Default)Parse a csv file to json", - "version": "Show version of current csvtojson" - }, - "options": { - "--output":{ - "desc": "The format to be converted to. \"json\" (default) -- convert csv to json. \"csv\" -- convert csv to csv row array. \"line\" -- convert csv to csv line string", - "type": "string" - }, - "--delimiter": { - "desc": "delimiter to separate columns. Possible to give an array or just use 'auto'. default comma (,). e.g. --delimiter=# --delimiter='[\",\",\";\"]' --delimiter=auto", - "type": "~object" - }, - "--quote": { - "desc": "quote surrounding a column content containing delimiters. To turn off quote, please use 'off' --quote=off. default double quote (\"). e.g. chage to hash: --quote=# ", - "type": "string" - }, - "--trim": { - "desc": "Indicate if parser trim off spaces surrounding column content. e.g. \" content \" will be trimmed to \"content\". Default: true", - "type": "boolean" - }, - "--checkType": { - "desc": "This parameter turns on and off whether check field type. default is false.", - "type": "boolean" - - }, - "--ignoreEmpty": { - "desc": "This parameter turns on and off whether ignore empty column values while parsing. default is false", - "type": "boolean" - }, - "--noheader": { - "desc": "Indicating csv data has no header row and first row is data row. Default is false", - "type": "boolean" - }, - "--headers": { - "desc": "An array to specify the headers of CSV data. If --noheader is false, this value will override CSV header. Default: null. Example: --headers='[\"my field\",\"name\"]'", - "type": "object" - }, - "--flatKeys": { - "desc": "Don't interpret dots (.) and square brackets in header fields as nested object or array identifiers at all (treat them like regular characters for JSON field identifiers). Default: false.", - "type": "boolean" - }, - "--maxRowLength": { - "desc": "the max character a csv row could have. 0 means infinite. If max number exceeded, parser will emit \"error\" of \"row_exceed\". if a possibly corrupted csv data provided, give it a number like 65535 so the parser wont consume memory. default: 10240", - "type": "number" - }, - "--checkColumn": { - "desc": "whether check column number of a row is the same as headers. If column number mismatched headers number, an error of \"mismatched_column\" will be emitted.. default: false", - "type": "boolean" - }, - "--eol": { - "desc": "Explicitly specify the end of line character to use.", - "type": "string" - }, - "--quiet": { - "desc": "If any error happens, quit the process quietly rather than log out the error. Default is false.", - "type": "boolean" - }, - "--escape":{ - "desc":"escape character used in quoted column. Default is double quote (\") according to RFC4108. Change to back slash (\\) or other chars for your own case.", - "type":"string" - }, - "--ignoreColumns": { - "desc": "RegExp matched columns to ignore from input. e.g. --ignoreColumns=/(name|age)/ ", - "type": "string" - }, - "--includeColumns": { - "desc": "RegExp matched columns to include from input. e.g. --includeColumns=/(name|age)/ ", - "type": "string" - }, - "--colParser": { - "desc": "Specific parser for columns. e.g. --colParser='{\"col1\":\"number\",\"col2\":\"string\"}'", - "type": "~object" - }, - "--alwaysSplitAtEOL":{ - "desc": "Always interpret each line (as defined by eol) as a row. This will prevent eol characters from being used within a row (even inside a quoted field). This ensures that misplaced quotes only break on row, and not all ensuing rows.", - "type": "boolean" - }, - "--nullObject":{ - "desc":"How to parse if a csv cell contains 'null'. Default false will keep 'null' as string. Change to true if a null object is needed.", - "type":"boolean" - }, - "--downstreamFormat":{ - "desc":"Option to set what JSON array format is needed by downstream. 'line' is also called ndjson format. This format will write lines of JSON (without square brackets and commas) to downstream. 'array' will write complete JSON array string to downstream (suitable for file writable stream etc). Default 'line'", - "type":"string" - } - }, - "examples": [ - "csvtojson < csvfile", - "csvtojson ", - "cat | csvtojson", - "csvtojson --checkType=false --trim=false --delimiter=#" - ] -} diff --git a/node_modules/csvtojson/browser/browser.js b/node_modules/csvtojson/browser/browser.js deleted file mode 100644 index 60538a6..0000000 --- a/node_modules/csvtojson/browser/browser.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports=function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=32)}([function(t,e){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e,r){"use strict";var n=r(6),i=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=f;var o=r(5);o.inherits=r(2);var s=r(23),a=r(14);o.inherits(f,s);for(var u=i(a.prototype),c=0;c - * @license MIT - */ -var n=r(38),i=r(39),o=r(40);function s(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,e){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|t}function d(t,e){if(u.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return N(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return H(t).length;default:if(n)return N(t).length;e=(""+e).toLowerCase(),n=!0}}function _(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function v(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=u.from(e,n)),u.isBuffer(e))return 0===e.length?-1:y(t,e,r,n,i);if("number"==typeof e)return e&=255,u.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):y(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function y(t,e,r,n,i){var o,s=1,a=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var l=-1;for(o=r;oa&&(r=a-u),o=r;o>=0;o--){for(var f=!0,h=0;hi&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var s=0;s>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function x(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function j(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:c>223?3:c>191?2:1;if(i+f<=r)switch(f){case 1:c<128&&(l=c);break;case 2:128==(192&(o=t[i+1]))&&(u=(31&c)<<6|63&o)>127&&(l=u);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&(u=(15&c)<<12|(63&o)<<6|63&s)>2047&&(u<55296||u>57343)&&(l=u);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(l=u)}null===l?(l=65533,f=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=f}return function(t){var e=t.length;if(e<=S)return String.fromCharCode.apply(String,t);for(var r="",n=0;nthis.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return T(this,e,r);case"utf8":case"utf-8":return j(this,e,r);case"ascii":return R(this,e,r);case"latin1":case"binary":return k(this,e,r);case"base64":return x(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}.apply(this,arguments)},u.prototype.equals=function(t){if(!u.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===u.compare(this,t)},u.prototype.inspect=function(){var t="",r=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},u.prototype.compare=function(t,e,r,n,i){if(!u.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(e>>>=0,r>>>=0,n>>>=0,i>>>=0,this===t)return 0;for(var o=i-n,s=r-e,a=Math.min(o,s),c=this.slice(n,i),l=t.slice(e,r),f=0;fi)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return m(this,t,e,r);case"utf8":case"utf-8":return g(this,t,e,r);case"ascii":return b(this,t,e,r);case"latin1":case"binary":return w(this,t,e,r);case"base64":return E(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var S=4096;function R(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function A(t,e,r,n,i,o){if(!u.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function F(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function L(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function M(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function B(t,e,r,n,o){return o||M(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function D(t,e,r,n,o){return o||M(t,0,r,8),i.write(t,e,r,n,52,8),r+8}u.prototype.slice=function(t,e){var r,n=this.length;if(t=~~t,e=void 0===e?n:~~e,t<0?(t+=n)<0&&(t=0):t>n&&(t=n),e<0?(e+=n)<0&&(e=0):e>n&&(e=n),e0&&(i*=256);)n+=this[t+--e]*i;return n},u.prototype.readUInt8=function(t,e){return e||O(t,1,this.length),this[t]},u.prototype.readUInt16LE=function(t,e){return e||O(t,2,this.length),this[t]|this[t+1]<<8},u.prototype.readUInt16BE=function(t,e){return e||O(t,2,this.length),this[t]<<8|this[t+1]},u.prototype.readUInt32LE=function(t,e){return e||O(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},u.prototype.readUInt32BE=function(t,e){return e||O(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},u.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||O(t,e,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*e)),n},u.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||O(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},u.prototype.readInt8=function(t,e){return e||O(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},u.prototype.readInt16LE=function(t,e){e||O(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt16BE=function(t,e){e||O(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt32LE=function(t,e){return e||O(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},u.prototype.readInt32BE=function(t,e){return e||O(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},u.prototype.readFloatLE=function(t,e){return e||O(t,4,this.length),i.read(this,t,!0,23,4)},u.prototype.readFloatBE=function(t,e){return e||O(t,4,this.length),i.read(this,t,!1,23,4)},u.prototype.readDoubleLE=function(t,e){return e||O(t,8,this.length),i.read(this,t,!0,52,8)},u.prototype.readDoubleBE=function(t,e){return e||O(t,8,this.length),i.read(this,t,!1,52,8)},u.prototype.writeUIntLE=function(t,e,r,n){t=+t,e|=0,r|=0,n||A(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o=0&&(o*=256);)this[e+i]=t/o&255;return e+r},u.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,1,255,0),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},u.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},u.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},u.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):L(this,t,e,!0),e+4},u.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):L(this,t,e,!1),e+4},u.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);A(this,t,e,r,i-1,-i)}var o=0,s=1,a=0;for(this[e]=255&t;++o>0)-a&255;return e+r},u.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);A(this,t,e,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+r},u.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,1,127,-128),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},u.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},u.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},u.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):L(this,t,e,!0),e+4},u.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):L(this,t,e,!1),e+4},u.prototype.writeFloatLE=function(t,e,r){return B(this,t,e,!0,r)},u.prototype.writeFloatBE=function(t,e,r){return B(this,t,e,!1,r)},u.prototype.writeDoubleLE=function(t,e,r){return D(this,t,e,!0,r)},u.prototype.writeDoubleBE=function(t,e,r){return D(this,t,e,!1,r)},u.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e=0;--i)t[i+e]=this[i+r];else if(o<1e3||!u.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function H(t){return n.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(I,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function V(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(0))},function(t,e){var r,n,i=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function a(t){if(r===setTimeout)return setTimeout(t,0);if((r===o||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:o}catch(t){r=o}try{n="function"==typeof clearTimeout?clearTimeout:s}catch(t){n=s}}();var u,c=[],l=!1,f=-1;function h(){l&&u&&(l=!1,u.length?c=u.concat(c):f=-1,c.length&&p())}function p(){if(!l){var t=a(h);l=!0;for(var e=c.length;e;){for(u=c,c=[];++f1)for(var r=1;r=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},r(35),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,r(0))},function(t,e){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function n(t){return"function"==typeof t}function i(t){return"object"==typeof t&&null!==t}function o(t){return void 0===t}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(t){if(!function(t){return"number"==typeof t}(t)||t<0||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},r.prototype.emit=function(t){var e,r,s,a,u,c;if(this._events||(this._events={}),"error"===t&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var l=new Error('Uncaught, unspecified "error" event. ('+e+")");throw l.context=e,l}if(o(r=this._events[t]))return!1;if(n(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:a=Array.prototype.slice.call(arguments,1),r.apply(this,a)}else if(i(r))for(a=Array.prototype.slice.call(arguments,1),s=(c=r.slice()).length,u=0;u0&&this._events[t].length>s&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(t,e){if(!n(e))throw TypeError("listener must be a function");var r=!1;function i(){this.removeListener(t,i),r||(r=!0,e.apply(this,arguments))}return i.listener=e,this.on(t,i),this},r.prototype.removeListener=function(t,e){var r,o,s,a;if(!n(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(s=(r=this._events[t]).length,o=-1,r===e||n(r.listener)&&r.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(i(r)){for(a=s;a-- >0;)if(r[a]===e||r[a].listener&&r[a].listener===e){o=a;break}if(o<0)return this;1===r.length?(r.length=0,delete this._events[t]):r.splice(o,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},r.prototype.removeAllListeners=function(t){var e,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(n(r=this._events[t]))this.removeListener(t,r);else if(r)for(;r.length;)this.removeListener(t,r[r.length-1]);return delete this._events[t],this},r.prototype.listeners=function(t){return this._events&&this._events[t]?n(this._events[t])?[this._events[t]]:this._events[t].slice():[]},r.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(n(e))return 1;if(e)return e.length}return 0},r.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e,r){(e=t.exports=r(23)).Stream=e,e.Readable=e,e.Writable=r(14),e.Duplex=r(1),e.Transform=r(27),e.PassThrough=r(45)},function(t,e,r){"use strict";(function(e,n,i){var o=r(6);function s(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,r){var n=t.entry;for(t.entry=null;n;){var i=n.callback;e.pendingcb--,i(void 0),n=n.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}(e,t)}}t.exports=m;var a,u=!e.browser&&["v0.10","v0.9."].indexOf(e.version.slice(0,5))>-1?n:o.nextTick;m.WritableState=y;var c=r(5);c.inherits=r(2);var l,f={deprecate:r(44)},h=r(24),p=r(7).Buffer,d=i.Uint8Array||function(){},_=r(25);function v(){}function y(t,e){a=a||r(1),t=t||{};var n=e instanceof a;this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var i=t.highWaterMark,c=t.writableHighWaterMark,l=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(c||0===c)?c:l,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var f=!1===t.decodeStrings;this.decodeStrings=!f,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,n=r.sync,i=r.writecb;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(r),e)!function(t,e,r,n,i){--e.pendingcb,r?(o.nextTick(i,n),o.nextTick(x,t,e),t._writableState.errorEmitted=!0,t.emit("error",n)):(i(n),t._writableState.errorEmitted=!0,t.emit("error",n),x(t,e))}(t,r,n,e,i);else{var s=E(r);s||r.corked||r.bufferProcessing||!r.bufferedRequest||w(t,r),n?u(b,t,r,s,i):b(t,r,s,i)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function m(t){if(a=a||r(1),!(l.call(m,this)||this instanceof a))return new m(t);this._writableState=new y(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),h.call(this)}function g(t,e,r,n,i,o,s){e.writelen=n,e.writecb=s,e.writing=!0,e.sync=!0,r?t._writev(i,e.onwrite):t._write(i,o,e.onwrite),e.sync=!1}function b(t,e,r,n){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,n(),x(t,e)}function w(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var n=e.bufferedRequestCount,i=new Array(n),o=e.corkedRequestsFree;o.entry=r;for(var a=0,u=!0;r;)i[a]=r,r.isBuf||(u=!1),r=r.next,a+=1;i.allBuffers=u,g(t,e,!0,e.length,i,"",o.finish),e.pendingcb++,e.lastBufferedRequest=null,o.next?(e.corkedRequestsFree=o.next,o.next=null):e.corkedRequestsFree=new s(e),e.bufferedRequestCount=0}else{for(;r;){var c=r.chunk,l=r.encoding,f=r.callback;if(g(t,e,!1,e.objectMode?1:c.length,c,l,f),r=r.next,e.bufferedRequestCount--,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}function E(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function C(t,e){t._final(function(r){e.pendingcb--,r&&t.emit("error",r),e.prefinished=!0,t.emit("prefinish"),x(t,e)})}function x(t,e){var r=E(e);return r&&(function(t,e){e.prefinished||e.finalCalled||("function"==typeof t._final?(e.pendingcb++,e.finalCalled=!0,o.nextTick(C,t,e)):(e.prefinished=!0,t.emit("prefinish")))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"))),r}c.inherits(m,h),y.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(y.prototype,"buffer",{get:f.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(l=Function.prototype[Symbol.hasInstance],Object.defineProperty(m,Symbol.hasInstance,{value:function(t){return!!l.call(this,t)||this===m&&t&&t._writableState instanceof y}})):l=function(t){return t instanceof this},m.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},m.prototype.write=function(t,e,r){var n=this._writableState,i=!1,s=!n.objectMode&&function(t){return p.isBuffer(t)||t instanceof d}(t);return s&&!p.isBuffer(t)&&(t=function(t){return p.from(t)}(t)),"function"==typeof e&&(r=e,e=null),s?e="buffer":e||(e=n.defaultEncoding),"function"!=typeof r&&(r=v),n.ended?function(t,e){var r=new Error("write after end");t.emit("error",r),o.nextTick(e,r)}(this,r):(s||function(t,e,r,n){var i=!0,s=!1;return null===r?s=new TypeError("May not write null values to stream"):"string"==typeof r||void 0===r||e.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(t.emit("error",s),o.nextTick(n,s),i=!1),i}(this,n,t,r))&&(n.pendingcb++,i=function(t,e,r,n,i,o){if(!r){var s=function(t,e,r){return t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=p.from(e,r)),e}(e,n,i);n!==s&&(r=!0,i="buffer",n=s)}var a=e.objectMode?1:n.length;e.length+=a;var u=e.length-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(m.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),m.prototype._write=function(t,e,r){r(new Error("_write() is not implemented"))},m.prototype._writev=null,m.prototype.end=function(t,e,r){var n=this._writableState;"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!==t&&void 0!==t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(t,e,r){e.ending=!0,x(t,e),r&&(e.finished?o.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,n,r)},Object.defineProperty(m.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),m.prototype.destroy=_.destroy,m.prototype._undestroy=_.undestroy,m.prototype._destroy=function(t,e){this.end(),e(t)}}).call(this,r(4),r(11).setImmediate,r(0))},function(t,e,r){(function(e,r,n){t.exports=function t(e,r,n){function i(s,a){if(!r[s]){if(!e[s]){var u="function"==typeof _dereq_&&_dereq_;if(!a&&u)return u(s,!0);if(o)return o(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=r[s]={exports:{}};e[s][0].call(l.exports,function(t){return i(e[s][1][t]||t)},l,l.exports,t,e,r,n)}return r[s].exports}for(var o="function"==typeof _dereq_&&_dereq_,s=0;s0;){var e=t.shift();if("function"==typeof e){var r=t.shift(),n=t.shift();e.call(r,n)}else e._settlePromises()}},u.prototype._drainQueues=function(){this._drainQueue(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,this._drainQueue(this._lateQueue)},u.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},u.prototype._reset=function(){this._isTickUsed=!1},r.exports=u,r.exports.firstLineError=i},{"./queue":26,"./schedule":29,"./util":36}],3:[function(t,e,r){"use strict";e.exports=function(t,e,r,n){var i=!1,o=function(t,e){this._reject(e)},s=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(o,o,null,this,t)},a=function(t,e){0==(50397184&this._bitField)&&this._resolveCallback(e.target)},u=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(o){i||(i=!0,t.prototype._propagateFrom=n.propagateFromFunction(),t.prototype._boundValue=n.boundValueFunction());var c=r(o),l=new t(e);l._propagateFrom(this,1);var f=this._target();if(l._setBoundTo(c),c instanceof t){var h={promiseRejectionQueued:!1,promise:l,target:f,bindingPromise:c};f._then(e,s,void 0,l,h),c._then(a,u,void 0,l,h),l._setOnCancel(c)}else l._resolveCallback(f);return l},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},t.bind=function(e,r){return t.resolve(r).bind(e)}}},{}],4:[function(t,e,r){"use strict";var n;"undefined"!=typeof Promise&&(n=Promise);var i=t("./promise")();i.noConflict=function(){try{Promise===i&&(Promise=n)}catch(t){}return i},e.exports=i},{"./promise":22}],5:[function(t,e,r){"use strict";var n=Object.create;if(n){var i=n(null),o=n(null);i[" size"]=o[" size"]=0}e.exports=function(e){var r=t("./util"),n=r.canEvaluate;function i(t){return function(t,n){var i;if(null!=t&&(i=t[n]),"function"!=typeof i){var o="Object "+r.classString(t)+" has no method '"+r.toString(n)+"'";throw new e.TypeError(o)}return i}(t,this.pop()).apply(t,this)}function o(t){return t[this]}function s(t){var e=+this;return e<0&&(e=Math.max(0,e+t.length)),t[e]}r.isIdentifier,e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(i,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e;if("number"==typeof t)e=s;else if(n){var r=(void 0)(t);e=null!==r?r:o}else e=o;return this._then(e,void 0,void 0,t,void 0)}}},{"./util":36}],6:[function(t,e,r){"use strict";e.exports=function(e,r,n,i){var o=t("./util"),s=o.tryCatch,a=o.errorObj,u=e._async;e.prototype.break=e.prototype.cancel=function(){if(!i.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var r=t._cancellationParent;if(null==r||!r._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=r}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),u.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(o.isArray(t))for(var r=0;r=0)return r[t]}return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},n.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,r.push(this._trace))},n.prototype._popContext=function(){if(void 0!==this._trace){var t=r.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},n.CapturedTrace=null,n.create=function(){if(e)return new n},n.deactivateLongStackTraces=function(){},n.activateLongStackTraces=function(){var r=t.prototype._pushContext,o=t.prototype._popContext,s=t._peekContext,a=t.prototype._peekContext,u=t.prototype._promiseCreated;n.deactivateLongStackTraces=function(){t.prototype._pushContext=r,t.prototype._popContext=o,t._peekContext=s,t.prototype._peekContext=a,t.prototype._promiseCreated=u,e=!1},e=!0,t.prototype._pushContext=n.prototype._pushContext,t.prototype._popContext=n.prototype._popContext,t._peekContext=t.prototype._peekContext=i,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},n}},{}],9:[function(t,r,n){"use strict";r.exports=function(r,n){var i,o,s,a=r._getDomain,u=r._async,c=t("./errors").Warning,l=t("./util"),f=l.canAttachTrace,h=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,p=/\((?:timers\.js):\d+:\d+\)/,d=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,_=null,v=null,y=!1,m=!(0==l.env("BLUEBIRD_DEBUG")),g=!(0==l.env("BLUEBIRD_WARNINGS")||!m&&!l.env("BLUEBIRD_WARNINGS")),b=!(0==l.env("BLUEBIRD_LONG_STACK_TRACES")||!m&&!l.env("BLUEBIRD_LONG_STACK_TRACES")),w=0!=l.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(g||!!l.env("BLUEBIRD_W_FORGOTTEN_RETURN"));r.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|524288},r.prototype._ensurePossibleRejectionHandled=function(){if(0==(524288&this._bitField)){this._setRejectionIsUnhandled();var t=this;setTimeout(function(){t._notifyUnhandledRejection()},1)}},r.prototype._notifyUnhandledRejectionIsHandled=function(){q("rejectionHandled",i,void 0,this)},r.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},r.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},r.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),q("unhandledRejection",o,t,this)}},r.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},r.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},r.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},r.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},r.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},r.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},r.prototype._warn=function(t,e,r){return U(t,e,r||this)},r.onPossiblyUnhandledRejection=function(t){var e=a();o="function"==typeof t?null===e?t:l.domainBind(e,t):void 0},r.onUnhandledRejectionHandled=function(t){var e=a();i="function"==typeof t?null===e?t:l.domainBind(e,t):void 0};var E=function(){};r.longStackTraces=function(){if(u.haveItemsQueued()&&!J.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!J.longStackTraces&&Y()){var t=r.prototype._captureStackTrace,e=r.prototype._attachExtraTrace;J.longStackTraces=!0,E=function(){if(u.haveItemsQueued()&&!J.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");r.prototype._captureStackTrace=t,r.prototype._attachExtraTrace=e,n.deactivateLongStackTraces(),u.enableTrampoline(),J.longStackTraces=!1},r.prototype._captureStackTrace=D,r.prototype._attachExtraTrace=I,n.activateLongStackTraces(),u.disableTrampolineIfNecessary()}},r.hasLongStackTraces=function(){return J.longStackTraces&&Y()};var C=function(){try{if("function"==typeof CustomEvent){var t=new CustomEvent("CustomEvent");return l.global.dispatchEvent(t),function(t,e){var r=new CustomEvent(t.toLowerCase(),{detail:e,cancelable:!0});return!l.global.dispatchEvent(r)}}return"function"==typeof Event?(t=new Event("CustomEvent"),l.global.dispatchEvent(t),function(t,e){var r=new Event(t.toLowerCase(),{cancelable:!0});return r.detail=e,!l.global.dispatchEvent(r)}):((t=document.createEvent("CustomEvent")).initCustomEvent("testingtheevent",!1,!0,{}),l.global.dispatchEvent(t),function(t,e){var r=document.createEvent("CustomEvent");return r.initCustomEvent(t.toLowerCase(),!1,!0,e),!l.global.dispatchEvent(r)})}catch(t){}return function(){return!1}}(),x=l.isNode?function(){return e.emit.apply(e,arguments)}:l.global?function(t){var e="on"+t.toLowerCase(),r=l.global[e];return!!r&&(r.apply(l.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function j(t,e){return{promise:e}}var S={promiseCreated:j,promiseFulfilled:j,promiseRejected:j,promiseResolved:j,promiseCancelled:j,promiseChained:function(t,e,r){return{promise:e,child:r}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,r){return{reason:e,promise:r}},rejectionHandled:j},R=function(t){var e=!1;try{e=x.apply(null,arguments)}catch(t){u.throwLater(t),e=!0}var r=!1;try{r=C(t,S[t].apply(null,arguments))}catch(t){u.throwLater(t),r=!0}return r||e};function k(){return!1}function T(t,e,r){var n=this;try{t(e,r,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+l.toString(t));n._attachCancellationCallback(t)})}catch(t){return t}}function P(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?l.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function O(){return this._onCancelField}function A(t){this._onCancelField=t}function F(){this._cancellationParent=void 0,this._onCancelField=void 0}function L(t,e){if(0!=(1&e)){this._cancellationParent=t;var r=t._branchesRemainingToCancel;void 0===r&&(r=0),t._branchesRemainingToCancel=r+1}0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}r.config=function(t){if("longStackTraces"in(t=Object(t))&&(t.longStackTraces?r.longStackTraces():!t.longStackTraces&&r.hasLongStackTraces()&&E()),"warnings"in t){var e=t.warnings;J.warnings=!!e,w=J.warnings,l.isObject(e)&&"wForgottenReturn"in e&&(w=!!e.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!J.cancellation){if(u.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");r.prototype._clearCancellationData=F,r.prototype._propagateFrom=L,r.prototype._onCancel=O,r.prototype._setOnCancel=A,r.prototype._attachCancellationCallback=P,r.prototype._execute=T,M=L,J.cancellation=!0}return"monitoring"in t&&(t.monitoring&&!J.monitoring?(J.monitoring=!0,r.prototype._fireEvent=R):!t.monitoring&&J.monitoring&&(J.monitoring=!1,r.prototype._fireEvent=k)),r},r.prototype._fireEvent=k,r.prototype._execute=function(t,e,r){try{t(e,r)}catch(t){return t}},r.prototype._onCancel=function(){},r.prototype._setOnCancel=function(t){},r.prototype._attachCancellationCallback=function(t){},r.prototype._captureStackTrace=function(){},r.prototype._attachExtraTrace=function(){},r.prototype._clearCancellationData=function(){},r.prototype._propagateFrom=function(t,e){};var M=function(t,e){0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)};function B(){var t=this._boundTo;return void 0!==t&&t instanceof r?t.isFulfilled()?t.value():void 0:t}function D(){this._trace=new X(this._peekContext())}function I(t,e){if(f(t)){var r=this._trace;if(void 0!==r&&e&&(r=r._parent),void 0!==r)r.attachExtraTrace(t);else if(!t.__stackCleaned__){var n=H(t);l.notEnumerableProp(t,"stack",n.message+"\n"+n.stack.join("\n")),l.notEnumerableProp(t,"__stackCleaned__",!0)}}}function U(t,e,n){if(J.warnings){var i,o=new c(t);if(e)n._attachExtraTrace(o);else if(J.longStackTraces&&(i=r._peekContext()))i.attachExtraTrace(o);else{var s=H(o);o.stack=s.message+"\n"+s.stack.join("\n")}R("warning",o)||V(o,"",!0)}}function N(t){for(var e=[],r=0;r0?function(t){for(var e=t.stack.replace(/\s+$/g,"").split("\n"),r=0;r0&&"SyntaxError"!=t.name&&(e=e.slice(r)),e}(t):[" (No stack trace)"],{message:r,stack:"SyntaxError"==t.name?e:N(e)}}function V(t,e,r){if("undefined"!=typeof console){var n;if(l.isObject(t)){var i=t.stack;n=e+v(i,t)}else n=e+String(t);"function"==typeof s?s(n,r):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(n)}}function q(t,e,r,n){var i=!1;try{"function"==typeof e&&(i=!0,"rejectionHandled"===t?e(n):e(r,n))}catch(t){u.throwLater(t)}"unhandledRejection"===t?R(t,r,n)||i||V(r,"Unhandled rejection "):R(t,n)}function W(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{if(e=t&&"function"==typeof t.toString?t.toString():l.toString(t),/\[object [a-zA-Z0-9$_]+\]/.test(e))try{e=JSON.stringify(t)}catch(t){}0===e.length&&(e="(empty array)")}return"(<"+function(t){return t.length<41?t:t.substr(0,38)+"..."}(e)+">, no stack trace)"}function Y(){return"function"==typeof G}var $=function(){return!1},z=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function Q(t){var e=t.match(z);if(e)return{fileName:e[1],line:parseInt(e[2],10)}}function X(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);G(this,X),e>32&&this.uncycle()}l.inherits(X,Error),n.CapturedTrace=X,X.prototype.uncycle=function(){var t=this._length;if(!(t<2)){for(var e=[],r={},n=0,i=this;void 0!==i;++n)e.push(i),i=i._parent;for(n=(t=this._length=n)-1;n>=0;--n){var o=e[n].stack;void 0===r[o]&&(r[o]=n)}for(n=0;n0&&(e[s-1]._parent=void 0,e[s-1]._length=1),e[n]._parent=void 0,e[n]._length=1;var a=n>0?e[n-1]:this;s=0;--c)e[c]._length=u,u++;return}}}},X.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=H(t),r=e.message,n=[e.stack],i=this;void 0!==i;)n.push(N(i.stack.split("\n"))),i=i._parent;!function(t){for(var e=t[0],r=1;r=0;--a)if(n[a]===o){s=a;break}for(a=s;a>=0;--a){var u=n[a];if(e[i]!==u)break;e.pop(),i--}e=n}}(n),function(t){for(var e=0;e=0)return _=/@/,v=e,y=!0,function(t){t.stack=(new Error).stack};try{throw new Error}catch(t){n="stack"in t}return"stack"in i||!n||"number"!=typeof Error.stackTraceLimit?(v=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?W(e):e.toString()},null):(_=t,v=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(s=function(t){console.warn(t)},l.isNode&&e.stderr.isTTY?s=function(t,e){var r=e?"":"";console.warn(r+t+"\n")}:l.isNode||"string"!=typeof(new Error).stack||(s=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var J={warnings:g,longStackTraces:!1,cancellation:!1,monitoring:!1};return b&&r.longStackTraces(),{longStackTraces:function(){return J.longStackTraces},warnings:function(){return J.warnings},cancellation:function(){return J.cancellation},monitoring:function(){return J.monitoring},propagateFromFunction:function(){return M},boundValueFunction:function(){return B},checkForgottenReturns:function(t,e,r,n,i){if(void 0===t&&null!==e&&w){if(void 0!==i&&i._returnedNonUndefined())return;if(0==(65535&n._bitField))return;r&&(r+=" ");var o="",s="";if(e._trace){for(var a=e._trace.stack.split("\n"),u=N(a),c=u.length-1;c>=0;--c){var l=u[c];if(!p.test(l)){var f=l.match(d);f&&(o="at "+f[1]+":"+f[2]+":"+f[3]+" ");break}}if(u.length>0){var h=u[0];for(c=0;c0&&(s="\n"+a[c-1]);break}}}var _="a promise was created in a "+r+"handler "+o+"but was not returned from it, see http://goo.gl/rRqMUw"+s;n._warn(_,!0,e)}},setBounds:function(t,e){if(Y()){for(var r,n,i=t.stack.split("\n"),o=e.stack.split("\n"),s=-1,a=-1,u=0;u=a||($=function(t){if(h.test(t))return!0;var e=Q(t);return!!(e&&e.fileName===r&&s<=e.line&&e.line<=a)})}},warn:U,deprecated:function(t,e){var r=t+" is deprecated and will be removed in a future version.";return e&&(r+=" Use "+e+" instead."),U(r)},CapturedTrace:X,fireDomEvent:C,fireGlobalEvent:x}}},{"./errors":12,"./util":36}],10:[function(t,e,r){"use strict";e.exports=function(t){function e(){return this.value}function r(){throw this.reason}t.prototype.return=t.prototype.thenReturn=function(r){return r instanceof t&&r.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:r},void 0)},t.prototype.throw=t.prototype.thenThrow=function(t){return this._then(r,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,r,void 0,{reason:t},void 0);var e=arguments[1];return this.caught(t,function(){throw e})},t.prototype.catchReturn=function(r){if(arguments.length<=1)return r instanceof t&&r.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:r},void 0);var n=arguments[1];return n instanceof t&&n.suppressUnhandledRejections(),this.caught(r,function(){return n})}}},{}],11:[function(t,e,r){"use strict";e.exports=function(t,e){var r=t.reduce,n=t.all;function i(){return n(this)}t.prototype.each=function(t){return r(this,t,e,0)._then(i,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return r(this,t,e,e)},t.each=function(t,n){return r(t,n,e,0)._then(i,void 0,void 0,t,void 0)},t.mapSeries=function(t,n){return r(t,n,e,e)}}},{}],12:[function(t,e,r){"use strict";var n,i,o=t("./es5"),s=o.freeze,a=t("./util"),u=a.inherits,c=a.notEnumerableProp;function l(t,e){function r(n){if(!(this instanceof r))return new r(n);c(this,"message","string"==typeof n?n:e),c(this,"name",t),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return u(r,Error),r}var f=l("Warning","warning"),h=l("CancellationError","cancellation error"),p=l("TimeoutError","timeout error"),d=l("AggregateError","aggregate error");try{n=TypeError,i=RangeError}catch(t){n=l("TypeError","type error"),i=l("RangeError","range error")}for(var _="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),v=0;v<_.length;++v)"function"==typeof Array.prototype[_[v]]&&(d.prototype[_[v]]=Array.prototype[_[v]]);o.defineProperty(d.prototype,"length",{value:0,configurable:!1,writable:!0,enumerable:!0}),d.prototype.isOperational=!0;var y=0;function m(t){if(!(this instanceof m))return new m(t);c(this,"name","OperationalError"),c(this,"message",t),this.cause=t,this.isOperational=!0,t instanceof Error?(c(this,"message",t.message),c(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}d.prototype.toString=function(){var t=Array(4*y+1).join(" "),e="\n"+t+"AggregateError of:\n";y++,t=Array(4*y+1).join(" ");for(var r=0;r1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0)}function f(){return p.call(this,this.promise._target()._settledValue())}function h(t){if(!l(this,t))return s.e=t,s}function p(t){var i=this.promise,a=this.handler;if(!this.called){this.called=!0;var u=this.isFinallyHandler()?a.call(i._boundValue()):a.call(i._boundValue(),t);if(u===n)return u;if(void 0!==u){i._setReturnedNonUndefined();var p=r(u,i);if(p instanceof e){if(null!=this.cancelPromise){if(p._isCancelled()){var d=new o("late cancellation observer");return i._attachExtraTrace(d),s.e=d,s}p.isPending()&&p._attachCancellationCallback(new c(this))}return p._then(f,h,void 0,this,void 0)}}}return i.isRejected()?(l(this),s.e=t,s):(l(this),t)}return u.prototype.isFinallyHandler=function(){return 0===this.type},c.prototype._resultCancelled=function(){l(this.finallyHandler)},e.prototype._passThrough=function(t,e,r,n){return"function"!=typeof t?this.then():this._then(r,n,void 0,new u(this,e,t),void 0)},e.prototype.lastly=e.prototype.finally=function(t){return this._passThrough(t,0,p,p)},e.prototype.tap=function(t){return this._passThrough(t,1,p)},e.prototype.tapCatch=function(t){var r=arguments.length;if(1===r)return this._passThrough(t,1,void 0,p);var n,o=new Array(r-1),s=0;for(n=0;n0&&"function"==typeof arguments[e]&&(t=arguments[e]);var n=[].slice.call(arguments);t&&n.pop();var i=new r(n).promise();return void 0!==t?i.spread(t):i}}},{"./util":36}],18:[function(t,e,r){"use strict";e.exports=function(e,r,n,i,o,s){var a=e._getDomain,u=t("./util"),c=u.tryCatch,l=u.errorObj,f=e._async;function h(t,e,r,n){this.constructor$(t),this._promise._captureStackTrace();var i=a();this._callback=null===i?e:u.domainBind(i,e),this._preservedValues=n===o?new Array(this.length()):null,this._limit=r,this._inFlight=0,this._queue=[],f.invoke(this._asyncInit,this,void 0)}function p(t,r,i,o){if("function"!=typeof r)return n("expecting a function but got "+u.classString(r));var s=0;if(void 0!==i){if("object"!=typeof i||null===i)return e.reject(new TypeError("options argument must be an object but it is "+u.classString(i)));if("number"!=typeof i.concurrency)return e.reject(new TypeError("'concurrency' must be a number but it is "+u.classString(i.concurrency)));s=i.concurrency}return new h(t,r,s="number"==typeof s&&isFinite(s)&&s>=1?s:0,o).promise()}u.inherits(h,r),h.prototype._asyncInit=function(){this._init$(void 0,-2)},h.prototype._init=function(){},h.prototype._promiseFulfilled=function(t,r){var n=this._values,o=this.length(),a=this._preservedValues,u=this._limit;if(r<0){if(n[r=-1*r-1]=t,u>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(u>=1&&this._inFlight>=u)return n[r]=t,this._queue.push(r),!1;null!==a&&(a[r]=t);var f=this._promise,h=this._callback,p=f._boundValue();f._pushContext();var d=c(h).call(p,t,r,o),_=f._popContext();if(s.checkForgottenReturns(d,_,null!==a?"Promise.filter":"Promise.map",f),d===l)return this._reject(d.e),!0;var v=i(d,this._promise);if(v instanceof e){var y=(v=v._target())._bitField;if(0==(50397184&y))return u>=1&&this._inFlight++,n[r]=v,v._proxy(this,-1*(r+1)),!1;if(0==(33554432&y))return 0!=(16777216&y)?(this._reject(v._reason()),!0):(this._cancel(),!0);d=v._value()}n[r]=d}return++this._totalResolved>=o&&(null!==a?this._filter(n,a):this._resolve(n),!0)},h.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,r=this._values;t.length>0&&this._inFlight1){o.deprecated("calling Promise.try with more than 1 argument");var c=arguments[1],l=arguments[2];n=s.isArray(c)?a(t).apply(l,c):a(t).call(l,c)}else n=a(t)();var f=u._popContext();return o.checkForgottenReturns(n,f,"Promise.try",u),u._resolveFromSyncValue(n),u},e.prototype._resolveFromSyncValue=function(t){t===s.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":36}],20:[function(t,e,r){"use strict";var n=t("./util"),i=n.maybeWrapAsError,o=t("./errors").OperationalError,s=t("./es5"),a=/^(?:name|message|stack|cause)$/;function u(t){var e;if(function(t){return t instanceof Error&&s.getPrototypeOf(t)===Error.prototype}(t)){(e=new o(t)).name=t.name,e.message=t.message,e.stack=t.stack;for(var r=s.keys(t),i=0;i1){var r,n=new Array(e-1),i=0;for(r=0;r0&&"function"!=typeof t&&"function"!=typeof e){var r=".then() only accepts functions but was passed: "+c.classString(t);arguments.length>1&&(r+=", "+c.classString(e)),this._warn(r)}return this._then(t,e,void 0,void 0,void 0)},T.prototype.done=function(t,e){this._then(t,e,void 0,void 0,void 0)._setIsFinal()},T.prototype.spread=function(t){return"function"!=typeof t?o("expecting a function but got "+c.classString(t)):this.all()._then(t,void 0,void 0,y,void 0)},T.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},T.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new b(this).promise()},T.prototype.error=function(t){return this.caught(c.originatesFromRejection,t)},T.getNewLibraryCopy=r.exports,T.is=function(t){return t instanceof T},T.fromNode=T.fromCallback=function(t){var e=new T(v);e._captureStackTrace();var r=arguments.length>1&&!!Object(arguments[1]).multiArgs,n=k(t)(S(e,r));return n===R&&e._rejectCallback(n.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},T.all=function(t){return new b(t).promise()},T.cast=function(t){var e=g(t);return e instanceof T||((e=new T(v))._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},T.resolve=T.fulfilled=T.cast,T.reject=T.rejected=function(t){var e=new T(v);return e._captureStackTrace(),e._rejectCallback(t,!0),e},T.setScheduler=function(t){if("function"!=typeof t)throw new d("expecting a function but got "+c.classString(t));return h.setScheduler(t)},T.prototype._then=function(t,e,r,n,i){var o=void 0!==i,s=o?i:new T(v),u=this._target(),l=u._bitField;o||(s._propagateFrom(this,3),s._captureStackTrace(),void 0===n&&0!=(2097152&this._bitField)&&(n=0!=(50397184&l)?this._boundValue():u===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,s));var f=a();if(0!=(50397184&l)){var p,d,y=u._settlePromiseCtx;0!=(33554432&l)?(d=u._rejectionHandler0,p=t):0!=(16777216&l)?(d=u._fulfillmentHandler0,p=e,u._unsetRejectionIsUnhandled()):(y=u._settlePromiseLateCancellationObserver,d=new _("late cancellation observer"),u._attachExtraTrace(d),p=e),h.invoke(y,u,{handler:null===f?p:"function"==typeof p&&c.domainBind(f,p),promise:s,receiver:n,value:d})}else u._addCallbacks(t,e,s,n,f);return s},T.prototype._length=function(){return 65535&this._bitField},T.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},T.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},T.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},T.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},T.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},T.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},T.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},T.prototype._isFinal=function(){return(4194304&this._bitField)>0},T.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},T.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},T.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},T.prototype._setAsyncGuaranteed=function(){h.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},T.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];if(e!==u)return void 0===e&&this._isBound()?this._boundValue():e},T.prototype._promiseAt=function(t){return this[4*t-4+2]},T.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},T.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},T.prototype._boundValue=function(){},T.prototype._migrateCallback0=function(t){t._bitField;var e=t._fulfillmentHandler0,r=t._rejectionHandler0,n=t._promise0,i=t._receiverAt(0);void 0===i&&(i=u),this._addCallbacks(e,r,n,i,null)},T.prototype._migrateCallbackAt=function(t,e){var r=t._fulfillmentHandlerAt(e),n=t._rejectionHandlerAt(e),i=t._promiseAt(e),o=t._receiverAt(e);void 0===o&&(o=u),this._addCallbacks(r,n,i,o,null)},T.prototype._addCallbacks=function(t,e,r,n,i){var o=this._length();if(o>=65531&&(o=0,this._setLength(0)),0===o)this._promise0=r,this._receiver0=n,"function"==typeof t&&(this._fulfillmentHandler0=null===i?t:c.domainBind(i,t)),"function"==typeof e&&(this._rejectionHandler0=null===i?e:c.domainBind(i,e));else{var s=4*o-4;this[s+2]=r,this[s+3]=n,"function"==typeof t&&(this[s+0]=null===i?t:c.domainBind(i,t)),"function"==typeof e&&(this[s+1]=null===i?e:c.domainBind(i,e))}return this._setLength(o+1),o},T.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},T.prototype._resolveCallback=function(t,e){if(0==(117506048&this._bitField)){if(t===this)return this._rejectCallback(n(),!1);var r=g(t,this);if(!(r instanceof T))return this._fulfill(t);e&&this._propagateFrom(r,2);var i=r._target();if(i!==this){var o=i._bitField;if(0==(50397184&o)){var s=this._length();s>0&&i._migrateCallback0(this);for(var a=1;a>>16)){if(t===this){var r=n();return this._attachExtraTrace(r),this._reject(r)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!=(134217728&e)?this._settlePromises():h.settlePromises(this))}},T.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=t,this._isFinal())return h.fatalError(t,c.isNode);(65535&e)>0?h.settlePromises(this):this._ensurePossibleRejectionHandled()}},T.prototype._fulfillPromises=function(t,e){for(var r=1;r0){if(0!=(16842752&t)){var r=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,r,t),this._rejectPromises(e,r)}else{var n=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,n,t),this._fulfillPromises(e,n)}this._setLength(0)}this._clearCancellationData()},T.prototype._settledValue=function(){var t=this._bitField;return 0!=(33554432&t)?this._rejectionHandler0:0!=(16777216&t)?this._fulfillmentHandler0:void 0},T.defer=T.pending=function(){return C.deprecated("Promise.defer","new Promise"),{promise:new T(v),resolve:P,reject:O}},c.notEnumerableProp(T,"_makeSelfResolutionError",n),t("./method")(T,v,g,o,C),t("./bind")(T,v,g,C),t("./cancel")(T,b,o,C),t("./direct_resolve")(T),t("./synchronous_inspection")(T),t("./join")(T,b,g,v,h,a),T.Promise=T,T.version="3.5.1",t("./map.js")(T,b,o,g,v,C),t("./call_get.js")(T),t("./using.js")(T,o,g,E,v,C),t("./timers.js")(T,v,C),t("./generators.js")(T,o,v,g,s,C),t("./nodeify.js")(T),t("./promisify.js")(T,v),t("./props.js")(T,b,g,o),t("./race.js")(T,v,g,o),t("./reduce.js")(T,b,o,g,v,C),t("./settle.js")(T,b,C),t("./some.js")(T,b,o),t("./filter.js")(T,v),t("./each.js")(T,v),t("./any.js")(T),c.toFastProperties(T),c.toFastProperties(T.prototype),A({a:1}),A({b:2}),A({c:3}),A(1),A(function(){}),A(void 0),A(!1),A(new T(v)),C.setBounds(f.firstLineError,c.lastLineError),T}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(t,e,r){"use strict";e.exports=function(e,r,n,i,o){var s=t("./util");function a(t){var n=this._promise=new e(r);t instanceof e&&n._propagateFrom(t,3),n._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return s.isArray,s.inherits(a,o),a.prototype.length=function(){return this._length},a.prototype.promise=function(){return this._promise},a.prototype._init=function t(r,o){var a=n(this._values,this._promise);if(a instanceof e){var u=(a=a._target())._bitField;if(this._values=a,0==(50397184&u))return this._promise._setAsyncGuaranteed(),a._then(t,this._reject,void 0,this,o);if(0==(33554432&u))return 0!=(16777216&u)?this._reject(a._reason()):this._cancel();a=a._value()}if(null!==(a=s.asArray(a)))0!==a.length?this._iterate(a):-5===o?this._resolveEmptyArray():this._resolve(function(t){switch(o){case-2:return[];case-3:return{};case-6:return new Map}}());else{var c=i("expecting an array or an iterable object but got "+s.classString(a)).reason();this._promise._rejectCallback(c,!1)}},a.prototype._iterate=function(t){var r=this.getActualLength(t.length);this._length=r,this._values=this.shouldCopyValues()?new Array(r):this._values;for(var i=this._promise,o=!1,s=null,a=0;a=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseCancelled=function(){return this._cancel(),!0},a.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},a.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var r=0;r=this._length){var r;if(this._isMap)r=function(t){for(var e=new o,r=t.length/2|0,n=0;n>1},e.prototype.props=function(){return f(this)},e.props=function(t){return f(t)}}},{"./es5":13,"./util":36}],26:[function(t,e,r){"use strict";function n(t){this._capacity=t,this._length=0,this._front=0}n.prototype._willBeOverCapacity=function(t){return this._capacity=this._length&&(this._resolve(this._values),!0)},o.prototype._promiseFulfilled=function(t,e){var r=new i;return r._bitField=33554432,r._settledValueField=t,this._promiseResolved(e,r)},o.prototype._promiseRejected=function(t,e){var r=new i;return r._bitField=16777216,r._settledValueField=t,this._promiseResolved(e,r)},e.settle=function(t){return n.deprecated(".settle()",".reflect()"),new o(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{"./util":36}],31:[function(t,e,r){"use strict";e.exports=function(e,r,n){var i=t("./util"),o=t("./errors").RangeError,s=t("./errors").AggregateError,a=i.isArray,u={};function c(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function l(t,e){if((0|e)!==e||e<0)return n("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var r=new c(t),i=r.promise();return r.setHowMany(e),r.init(),i}i.inherits(c,r),c.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var t=a(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},c.prototype.init=function(){this._initialized=!0,this._init()},c.prototype.setUnwrap=function(){this._unwrap=!0},c.prototype.howMany=function(){return this._howMany},c.prototype.setHowMany=function(t){this._howMany=t},c.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},c.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},c.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(u),this._checkOutcome())},c.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new s,e=this.length();e0?this._reject(t):this._cancel(),!0}return!1},c.prototype._fulfilled=function(){return this._totalResolved},c.prototype._rejected=function(){return this._values.length-this.length()},c.prototype._addRejected=function(t){this._values.push(t)},c.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},c.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},c.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new o(e)},c.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return l(t,e)},e.prototype.some=function(t){return l(this,t)},e._SomePromiseArray=c}},{"./errors":12,"./util":36}],32:[function(t,e,r){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var r=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},n=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},i=e.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},o=e.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},s=e.prototype.isPending=function(){return 0==(50397184&this._bitField)},a=e.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};e.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},t.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},t.prototype._isCancelled=function(){return this._target().__isCancelled()},t.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},t.prototype.isPending=function(){return s.call(this._target())},t.prototype.isRejected=function(){return o.call(this._target())},t.prototype.isFulfilled=function(){return i.call(this._target())},t.prototype.isResolved=function(){return a.call(this._target())},t.prototype.value=function(){return r.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),n.call(t)},t.prototype._value=function(){return this._settledValue()},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e,r){"use strict";e.exports=function(e,r){var n=t("./util"),i=n.errorObj,o=n.isObject,s={}.hasOwnProperty;return function(t,a){if(o(t)){if(t instanceof e)return t;var u=function(t){try{return function(t){return t.then}(t)}catch(t){return i.e=t,i}}(t);if(u===i){a&&a._pushContext();var c=e.reject(u.e);return a&&a._popContext(),c}if("function"==typeof u)return function(t){try{return s.call(t,"_promise0")}catch(t){return!1}}(t)?(c=new e(r),t._then(c._fulfill,c._reject,void 0,c,null),c):function(t,o,s){var a=new e(r),u=a;s&&s._pushContext(),a._captureStackTrace(),s&&s._popContext();var c=!0,l=n.tryCatch(o).call(t,function(t){a&&(a._resolveCallback(t),a=null)},function(t){a&&(a._rejectCallback(t,c,!0),a=null)});return c=!1,a&&l===i&&(a._rejectCallback(l.e,!0,!0),a=null),u}(t,u,a)}return t}}},{"./util":36}],34:[function(t,e,r){"use strict";e.exports=function(e,r,n){var i=t("./util"),o=e.TimeoutError;function s(t){this.handle=t}s.prototype._resultCancelled=function(){clearTimeout(this.handle)};var a=function(t){return u(+this).thenReturn(t)},u=e.delay=function(t,i){var o,u;return void 0!==i?(o=e.resolve(i)._then(a,null,null,t,void 0),n.cancellation()&&i instanceof e&&o._setOnCancel(i)):(o=new e(r),u=setTimeout(function(){o._fulfill()},+t),n.cancellation()&&o._setOnCancel(new s(u)),o._captureStackTrace()),o._setAsyncGuaranteed(),o};function c(t){return clearTimeout(this.handle),t}function l(t){throw clearTimeout(this.handle),t}e.prototype.delay=function(t){return u(t,this)},e.prototype.timeout=function(t,e){var r,a;t=+t;var u=new s(setTimeout(function(){r.isPending()&&function(t,e,r){var n;n="string"!=typeof e?e instanceof Error?e:new o("operation timed out"):new o(e),i.markAsOriginatingFromRejection(n),t._attachExtraTrace(n),t._reject(n),null!=r&&r.cancel()}(r,e,a)},t));return n.cancellation()?(a=this.then(),(r=a._then(c,l,void 0,u,void 0))._setOnCancel(u)):r=this._then(c,l,void 0,u,void 0),r}}},{"./util":36}],35:[function(t,e,r){"use strict";e.exports=function(e,r,n,i,o,s){var a=t("./util"),u=t("./errors").TypeError,c=t("./util").inherits,l=a.errorObj,f=a.tryCatch,h={};function p(t){setTimeout(function(){throw t},0)}function d(t,r){var i=0,s=t.length,a=new e(o);return function o(){if(i>=s)return a._fulfill();var u=function(t){var e=n(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}(t[i++]);if(u instanceof e&&u._isDisposable()){try{u=n(u._getDisposer().tryDispose(r),t.promise)}catch(t){return p(t)}if(u instanceof e)return u._then(o,p,null,null,null)}o()}(),a}function _(t,e,r){this._data=t,this._promise=e,this._context=r}function v(t,e,r){this.constructor$(t,e,r)}function y(t){return _.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function m(t){this.length=t,this.promise=null,this[t-1]=null}_.prototype.data=function(){return this._data},_.prototype.promise=function(){return this._promise},_.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():h},_.prototype.tryDispose=function(t){var e=this.resource(),r=this._context;void 0!==r&&r._pushContext();var n=e!==h?this.doDispose(e,t):null;return void 0!==r&&r._popContext(),this._promise._unsetDisposable(),this._data=null,n},_.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},c(v,_),v.prototype.doDispose=function(t,e){return this.data().call(t,t,e)},m.prototype._resultCancelled=function(){for(var t=this.length,r=0;r0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if("function"==typeof t)return new v(t,this,i());throw new u}}},{"./errors":12,"./util":36}],36:[function(t,n,i){"use strict";var o,s=t("./es5"),a="undefined"==typeof navigator,u={e:{}},c="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==r?r:void 0!==this?this:null;function l(){try{var t=o;return o=null,t.apply(this,arguments)}catch(t){return u.e=t,u}}function f(t){return null==t||!0===t||!1===t||"string"==typeof t||"number"==typeof t}function h(t,e,r){if(f(t))return t;var n={value:r,configurable:!0,enumerable:!1,writable:!0};return s.defineProperty(t,e,n),t}var p=function(){var t=[Array.prototype,Object.prototype,Function.prototype],e=function(e){for(var r=0;r1,n=e.length>0&&!(1===e.length&&"constructor"===e[0]),i=d.test(t+"")&&s.names(t).length>0;if(r||n||i)return!0}return!1}catch(t){return!1}},isIdentifier:function(t){return _.test(t)},inheritedDataKeys:p,getDataPropertyOrDefault:function(t,e,r){if(!s.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var n=Object.getOwnPropertyDescriptor(t,e);return null!=n?null==n.get&&null==n.set?n.value:r:void 0},thrower:function(t){throw t},isArray:s.isArray,asArray:w,notEnumerableProp:h,isPrimitive:f,isObject:function(t){return"function"==typeof t||"object"==typeof t&&null!==t},isError:y,canEvaluate:a,errorObj:u,tryCatch:function(t){return o=t,l},inherits:function(t,e){var r={}.hasOwnProperty;function n(){for(var n in this.constructor=t,this.constructor$=e,e.prototype)r.call(e.prototype,n)&&"$"!==n.charAt(n.length-1)&&(this[n+"$"]=e.prototype[n])}return n.prototype=e.prototype,t.prototype=new n,t.prototype},withAppended:function(t,e){var r,n=t.length,i=new Array(n+1);for(r=0;r10||t[0]>0}(),j.isNode&&j.toFastProperties(e);try{throw new Error}catch(t){j.lastLineError=t}n.exports=j},{"./es5":13}]},{},[4])(4),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,r(4),r(0),r(11).setImmediate)},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){if(!e.eol&&t)for(var r=0,n=t.length;r0?("string"==typeof e||s.objectMode||Object.getPrototypeOf(e)===c.prototype||(e=function(t){return c.from(t)}(e)),n?s.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):w(t,s,e,!0):s.ended?t.emit("error",new Error("stream.push() after EOF")):(s.reading=!1,s.decoder&&!r?(e=s.decoder.write(e),s.objectMode||0!==e.length?w(t,s,e,!1):S(t,s)):w(t,s,e,!1))):n||(s.reading=!1)),function(t){return!t.ended&&(t.needReadable||t.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=E?t=E:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function x(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(p("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?i.nextTick(j,t):j(t))}function j(t){p("emit readable"),t.emit("readable"),P(t)}function S(t,e){e.readingMore||(e.readingMore=!0,i.nextTick(R,t,e))}function R(t,e){for(var r=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):r=function(t,e,r){var n;return to.length?o.length:t;if(s===o.length?i+=o:i+=o.slice(0,t),0==(t-=s)){s===o.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(s));break}++n}return e.length-=n,i}(t,e):function(t,e){var r=c.allocUnsafe(t),n=e.head,i=1;for(n.data.copy(r),t-=n.data.length;n=n.next;){var o=n.data,s=t>o.length?o.length:t;if(o.copy(r,r.length-t,0,s),0==(t-=s)){s===o.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(s));break}++i}return e.length-=i,r}(t,e),n}(t,e.buffer,e.decoder),r);var r}function A(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,i.nextTick(F,e,t))}function F(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function L(t,e){for(var r=0,n=t.length;r=e.highWaterMark||e.ended))return p("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?A(this):x(this),null;if(0===(t=C(t,e))&&e.ended)return 0===e.length&&A(this),null;var n,i=e.needReadable;return p("need readable",i),(0===e.length||e.length-t0?O(t,e):null)?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&A(this)),null!==n&&this.emit("data",n),n},g.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},g.prototype.pipe=function(t,e){var r=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=t;break;case 1:o.pipes=[o.pipes,t];break;default:o.pipes.push(t)}o.pipesCount+=1,p("pipe count=%d opts=%j",o.pipesCount,e);var u=e&&!1===e.end||t===n.stdout||t===n.stderr?m:c;function c(){p("onend"),t.end()}o.endEmitted?i.nextTick(u):r.once("end",u),t.on("unpipe",function e(n,i){p("onunpipe"),n===r&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,p("cleanup"),t.removeListener("close",v),t.removeListener("finish",y),t.removeListener("drain",l),t.removeListener("error",_),t.removeListener("unpipe",e),r.removeListener("end",c),r.removeListener("end",m),r.removeListener("data",d),f=!0,!o.awaitDrain||t._writableState&&!t._writableState.needDrain||l())});var l=function(t){return function(){var e=t._readableState;p("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&a(t,"data")&&(e.flowing=!0,P(t))}}(r);t.on("drain",l);var f=!1,h=!1;function d(e){p("ondata"),h=!1,!1!==t.write(e)||h||((1===o.pipesCount&&o.pipes===t||o.pipesCount>1&&-1!==L(o.pipes,t))&&!f&&(p("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,h=!0),r.pause())}function _(e){p("onerror",e),m(),t.removeListener("error",_),0===a(t,"error")&&t.emit("error",e)}function v(){t.removeListener("finish",y),m()}function y(){p("onfinish"),t.removeListener("close",v),m()}function m(){p("unpipe"),r.unpipe(t)}return r.on("data",d),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?s(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",_),t.once("close",v),t.once("finish",y),t.emit("pipe",r),o.flowing||(p("pipe resume"),r.resume()),t},g.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var n=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function a(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function u(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function l(t,e){var r=(t.length-e)%3;return 0===r?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function f(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function h(t){return t.toString(this.encoding)}function p(t){return t&&t.length?this.write(t):""}e.StringDecoder=o,o.prototype.write=function(t){if(0===t.length)return"";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(i>0&&(t.lastNeed=i-1),i):--n=0?(i>0&&(t.lastNeed=i-2),i):--n=0?(i>0&&(2===i?i=0:t.lastNeed=i-3),i):0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString("utf8",e,n)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},function(t,e,r){"use strict";t.exports=o;var n=r(1),i=r(5);function o(t){if(!(this instanceof o))return new o(t);n.call(this,t),this._transformState={afterTransform:function(t,e){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit("error",new Error("write callback called multiple times"));r.writechunk=null,r.writecb=null,null!=e&&this.push(e),n(t);var i=this._readableState;i.reading=!1,(i.needReadable||i.length-1&&r.push(t[n]);return r},e.trimLeft=String.prototype.trimLeft?function(t){return t.trimLeft()}:function(t){return t.replace(/^\s+/,"")},e.trimRight=String.prototype.trimRight?function(t){return t.trimRight()}:function(t){return t.replace(/\s+$/,"")}}).call(this,r(3).Buffer)},function(t,e,r){"use strict";var n=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=function(t){function e(e,r,n){var i=t.call(this,"Error: "+e+". JSON Line number: "+r+(n?" near: "+n:""))||this;return i.err=e,i.line=r,i.extra=n,i.name="CSV Parse Error",i}return n(e,t),e.column_mismatched=function(t,r){return new e("column_mismatched",t,r)},e.unclosed_quote=function(t,r){return new e("unclosed_quote",t,r)},e.fromJSON=function(t){return new e(t.err,t.line,t.extra)},e.prototype.toJSON=function(){return{err:this.err,line:this.line,extra:this.extra}},e}(Error);e.default=i},function(t,e,r){var n=r(18),i=r(68),o=r(69),s=n?n.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":s&&s in Object(t)?i(t):o(t)}},function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},function(t,e,r){t.exports=r(33)},function(t,e,r){"use strict";var n=r(34),i=function(t,e){return new n.Converter(t,e)};i.csv=i,i.Converter=n.Converter,t.exports=i},function(t,e,r){"use strict";(function(t){var n=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var o=r(36),s=r(50),a=r(51),u=i(r(15)),c=r(52),l=r(105),f=function(e){function i(r,n){void 0===n&&(n={});var i=e.call(this,n)||this;return i.options=n,i.params=s.mergeParams(r),i.runtime=a.initParseRuntime(i),i.result=new l.Result(i),i.processor=new c.ProcessorLocal(i),i.once("error",function(e){t(function(){i.result.processError(e),i.emit("done",e)})}),i.once("done",function(){i.processor.destroy()}),i}return n(i,e),i.prototype.preRawData=function(t){return this.runtime.preRawDataHook=t,this},i.prototype.preFileLine=function(t){return this.runtime.preFileLineHook=t,this},i.prototype.subscribe=function(t,e,r){return this.parseRuntime.subscribe={onNext:t,onError:e,onCompleted:r},this},i.prototype.fromFile=function(t,e){var n=this,i=r(!function(){var t=new Error("Cannot find module 'fs'");throw t.code="MODULE_NOT_FOUND",t}());return i.exists(t,function(r){r?i.createReadStream(t,e).pipe(n):n.emit("error",new Error("File does not exist. Check to make sure the file path to your csv is correct."))}),this},i.prototype.fromStream=function(t){return t.pipe(this),this},i.prototype.fromString=function(t){t.toString();var e=new o.Readable,r=0;return e._read=function(e){if(r>=t.length)this.push(null);else{var n=t.substr(r,e);this.push(n),r+=e}},this.fromStream(e)},i.prototype.then=function(t,e){var r=this;return new u.default(function(n,i){r.parseRuntime.then={onfulfilled:function(e){n(t?t(e):e)},onrejected:function(t){e?n(e(t)):i(t)}}})},Object.defineProperty(i.prototype,"parseParam",{get:function(){return this.params},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"parseRuntime",{get:function(){return this.runtime},enumerable:!0,configurable:!0}),i.prototype._transform=function(t,e,r){var n=this;this.processor.process(t).then(function(t){if(t.length>0)return n.runtime.started=!0,n.result.processResult(t)}).then(function(){n.emit("drained"),r()},function(t){n.runtime.hasError=!0,n.runtime.error=t,n.emit("error",t),r()})},i.prototype._flush=function(t){var e=this;this.processor.flush().then(function(t){if(t.length>0)return e.result.processResult(t)}).then(function(){e.processEnd(t)},function(r){e.emit("error",r),t()})},i.prototype.processEnd=function(t){this.result.endProcess(),this.emit("done"),t()},Object.defineProperty(i.prototype,"parsedLineNumber",{get:function(){return this.runtime.parsedLineNumber},enumerable:!0,configurable:!0}),i}(o.Transform);e.Converter=f}).call(this,r(11).setImmediate)},function(t,e,r){(function(t,e){!function(t,r){"use strict";if(!t.setImmediate){var n,i=1,o={},s=!1,a=t.document,u=Object.getPrototypeOf&&Object.getPrototypeOf(t);u=u&&u.setTimeout?u:t,"[object process]"==={}.toString.call(t.process)?n=function(t){e.nextTick(function(){l(t)})}:function(){if(t.postMessage&&!t.importScripts){var e=!0,r=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=r,e}}()?function(){var e="setImmediate$"+Math.random()+"$",r=function(r){r.source===t&&"string"==typeof r.data&&0===r.data.indexOf(e)&&l(+r.data.slice(e.length))};t.addEventListener?t.addEventListener("message",r,!1):t.attachEvent("onmessage",r),n=function(r){t.postMessage(e+r,"*")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){l(t.data)},n=function(e){t.port2.postMessage(e)}}():a&&"onreadystatechange"in a.createElement("script")?function(){var t=a.documentElement;n=function(e){var r=a.createElement("script");r.onreadystatechange=function(){l(e),r.onreadystatechange=null,t.removeChild(r),r=null},t.appendChild(r)}}():n=function(t){setTimeout(l,0,t)},u.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),r=0;r0?n-4:n,f=0;f>16&255,a[u++]=e>>8&255,a[u++]=255&e;return 2===s&&(e=i[t.charCodeAt(f)]<<2|i[t.charCodeAt(f+1)]>>4,a[u++]=255&e),1===s&&(e=i[t.charCodeAt(f)]<<10|i[t.charCodeAt(f+1)]<<4|i[t.charCodeAt(f+2)]>>2,a[u++]=e>>8&255,a[u++]=255&e),a},e.fromByteArray=function(t){for(var e,r=t.length,i=r%3,o=[],s=0,a=r-i;sa?a:s+16383));return 1===i?(e=t[r-1],o.push(n[e>>2]+n[e<<4&63]+"==")):2===i&&(e=(t[r-2]<<8)+t[r-1],o.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+"=")),o.join("")};for(var n=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,u=s.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function l(t){return n[t>>18&63]+n[t>>12&63]+n[t>>6&63]+n[63&t]}function f(t,e,r){for(var n,i=[],o=e;o>1,l=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,o=p&(1<<-l)-1,p>>=-l,l+=a;l>0;o=256*o+t[e+f],f+=h,l-=8);for(s=o&(1<<-l)-1,o>>=-l,l+=n;l>0;s=256*s+t[e+f],f+=h,l-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,n),o-=c}return(p?-1:1)*s*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var s,a,u,c=8*o-i-1,l=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,d=n?1:-1,_=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=l):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),(e+=s+f>=1?h/u:h*Math.pow(2,1-f))*u>=2&&(s++,u/=2),s+f>=l?(a=0,s=l):s+f>=1?(a=(e*u-1)*Math.pow(2,i),s+=f):(a=e*Math.pow(2,f-1)*Math.pow(2,i),s=0));i>=8;t[r+p]=255&a,p+=d,a/=256,i-=8);for(s=s<0;t[r+p]=255&s,p+=d,s/=256,c-=8);t[r+p-d]|=128*_}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e){},function(t,e,r){"use strict";var n=r(7).Buffer,i=r(43);function o(t,e,r){t.copy(e,r)}t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r},t.prototype.concat=function(t){if(0===this.length)return n.alloc(0);if(1===this.length)return this.head.data;for(var e=n.allocUnsafe(t>>>0),r=this.head,i=0;r;)o(r.data,e,i),i+=r.data.length,r=r.next;return e},t}(),i&&i.inspect&&i.inspect.custom&&(t.exports.prototype[i.inspect.custom]=function(){var t=i.inspect({length:this.length});return this.constructor.name+" "+t})},function(t,e){},function(t,e,r){(function(e){function r(t){try{if(!e.localStorage)return!1}catch(t){return!1}var r=e.localStorage[t];return null!=r&&"true"===String(r).toLowerCase()}t.exports=function(t,e){if(r("noDeprecation"))return t;var n=!1;return function(){if(!n){if(r("throwDeprecation"))throw new Error(e);r("traceDeprecation")?console.trace(e):console.warn(e),n=!0}return t.apply(this,arguments)}}}).call(this,r(0))},function(t,e,r){"use strict";t.exports=o;var n=r(27),i=r(5);function o(t){if(!(this instanceof o))return new o(t);n.call(this,t)}i.inherits=r(2),i.inherits(o,n),o.prototype._transform=function(t,e,r){r(null,t)}},function(t,e,r){t.exports=r(14)},function(t,e,r){t.exports=r(1)},function(t,e,r){t.exports=r(13).Transform},function(t,e,r){t.exports=r(13).PassThrough},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.mergeParams=function(t){var e={delimiter:",",ignoreColumns:void 0,includeColumns:void 0,quote:'"',trim:!0,checkType:!1,ignoreEmpty:!1,noheader:!1,headers:void 0,flatKeys:!1,maxRowLength:0,checkColumn:!1,escape:'"',colParser:{},eol:void 0,alwaysSplitAtEOL:!1,output:"json",nullObject:!1,downstreamFormat:"line",needEmitAll:!0};for(var r in t||(t={}),t)t.hasOwnProperty(r)&&(Array.isArray(t[r])?e[r]=[].concat(t[r]):e[r]=t[r]);return e}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.initParseRuntime=function(t){var e=t.parseParam,r={needProcessIgnoreColumn:!1,needProcessIncludeColumn:!1,selectedColumns:void 0,ended:!1,hasError:!1,error:void 0,delimiter:t.parseParam.delimiter,eol:t.parseParam.eol,columnConv:[],headerType:[],headerTitle:[],headerFlag:[],headers:void 0,started:!1,parsedLineNumber:0,columnValueSetter:[]};return e.ignoreColumns&&(r.needProcessIgnoreColumn=!0),e.includeColumns&&(r.needProcessIncludeColumn=!0),r}},function(t,e,r){"use strict";(function(t){var n=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var o=r(53),s=i(r(15)),a=r(54),u=i(r(16)),c=r(57),l=r(28),f=r(58),h=i(r(59)),p=i(r(29)),d=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.rowSplit=new f.RowSplit(t.converter),t.eolEmitted=!1,t._needEmitEol=void 0,t.headEmitted=!1,t._needEmitHead=void 0,t}return n(r,e),r.prototype.flush=function(){var t=this;if(this.runtime.csvLineBuffer&&this.runtime.csvLineBuffer.length>0){var e=this.runtime.csvLineBuffer;return this.runtime.csvLineBuffer=void 0,this.process(e,!0).then(function(e){return t.runtime.csvLineBuffer&&t.runtime.csvLineBuffer.length>0?s.default.reject(p.default.unclosed_quote(t.runtime.parsedLineNumber,t.runtime.csvLineBuffer.toString())):s.default.resolve(e)})}return s.default.resolve([])},r.prototype.destroy=function(){return s.default.resolve()},Object.defineProperty(r.prototype,"needEmitEol",{get:function(){return void 0===this._needEmitEol&&(this._needEmitEol=this.converter.listeners("eol").length>0),this._needEmitEol},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"needEmitHead",{get:function(){return void 0===this._needEmitHead&&(this._needEmitHead=this.converter.listeners("header").length>0),this._needEmitHead},enumerable:!0,configurable:!0}),r.prototype.process=function(t,e){var r,n=this;return void 0===e&&(e=!1),r=e?t.toString():a.prepareData(t,this.converter.parseRuntime),s.default.resolve().then(function(){return n.runtime.preRawDataHook?n.runtime.preRawDataHook(r):r}).then(function(t){return t&&t.length>0?n.processCSV(t,e):s.default.resolve([])})},r.prototype.processCSV=function(t,e){var r=this,n=this.params,i=this.runtime;i.eol||u.default(t,i),this.needEmitEol&&!this.eolEmitted&&i.eol&&(this.converter.emit("eol",i.eol),this.eolEmitted=!0),n.ignoreEmpty&&!i.started&&(t=l.trimLeft(t));var o=c.stringToLines(t,i);return e?(o.lines.push(o.partial),o.partial=""):this.prependLeftBuf(l.bufFromString(o.partial)),o.lines.length>0?(i.preFileLineHook?this.runPreLineHook(o.lines):s.default.resolve(o.lines)).then(function(t){return i.started||r.runtime.headers?r.processCSVBody(t):r.processDataWithHead(t)}):s.default.resolve([])},r.prototype.processDataWithHead=function(t){if(this.params.noheader)this.params.headers?this.runtime.headers=this.params.headers:this.runtime.headers=[];else{for(var e="",r=[];t.length;){var n=e+t.shift(),i=this.rowSplit.parse(n);if(i.closed){r=i.cells,e="";break}e=n+u.default(n,this.runtime)}if(this.prependLeftBuf(l.bufFromString(e)),0===r.length)return[];this.params.headers?this.runtime.headers=this.params.headers:this.runtime.headers=r}return(this.runtime.needProcessIgnoreColumn||this.runtime.needProcessIncludeColumn)&&this.filterHeader(),this.needEmitHead&&!this.headEmitted&&(this.converter.emit("header",this.runtime.headers),this.headEmitted=!0),this.processCSVBody(t)},r.prototype.filterHeader=function(){if(this.runtime.selectedColumns=[],this.runtime.headers){for(var t=this.runtime.headers,e=0;e=e.length)i();else if(r.preFileLineHook){var o=e[n],s=r.preFileLineHook(o,r.parsedLineNumber+n);if(n++,s&&s.then)s.then(function(o){e[n-1]=o,t(e,r,n,i)});else{for(e[n-1]=s;n0?t.concat([r.csvLineBuffer,e]):e}(e,r);r.csvLineBuffer=void 0;var o=function(t,e){var r=t.length-1;if(0!=(128&t[r])){for(;128==(192&t[r]);)r--;r--}return r!=t.length-1?(e.csvLineBuffer=t.slice(r+1),t.slice(0,r+1)):t}(n,r).toString("utf8");return!1===r.started?i.default(o):o}}).call(this,r(3).Buffer)},function(t,e,r){"use strict";(function(e){var n=r(56);t.exports=function(t){return"string"==typeof t&&65279===t.charCodeAt(0)?t.slice(1):e.isBuffer(t)&&n(t)&&239===t[0]&&187===t[1]&&191===t[2]?t.slice(3):t}}).call(this,r(3).Buffer)},function(t,e){t.exports=function(t){for(var e=0;e0),this._needEmitDelimiter},enumerable:!0,configurable:!0}),t.prototype.parse=function(t){if(0===t.length||this.conv.parseParam.ignoreEmpty&&0===t.trim().length)return{cells:[],closed:!0};var e=this.quote,r=this.trim;this.escape,(this.conv.parseRuntime.delimiter instanceof Array||"auto"===this.conv.parseRuntime.delimiter.toLowerCase())&&(this.conv.parseRuntime.delimiter=this.getDelimiter(t)),this.needEmitDelimiter&&!this.delimiterEmitted&&(this.conv.emit("delimiter",this.conv.parseRuntime.delimiter),this.delimiterEmitted=!0);var n=this.conv.parseRuntime.delimiter,i=t.split(n);if("off"===e){if(r)for(var o=0;or&&(n=e,r=i)}),n},t.prototype.isQuoteOpen=function(t){var e=this.quote,r=this.escape;return t[0]===e&&(t[1]!==e||t[1]===r&&(t[2]===e||2===t.length))},t.prototype.isQuoteClose=function(t){var e=this.quote,r=this.escape;this.conv.parseParam.trim&&(t=o.trimRight(t));for(var n=0,i=t.length-1;t[i]===e||t[i]===r;)i--,n++;return n%2!=0},t.prototype.escapeQuote=function(t){var e="es|"+this.quote+"|"+this.escape;void 0===this.cachedRegExp[e]&&(this.cachedRegExp[e]=new RegExp("\\"+this.escape+"\\"+this.quote,"g"));var r=this.cachedRegExp[e];return t.replace(r,this.quote)},t.prototype.parseMultiLines=function(t){for(var e=[],r="";t.length;){var n=r+t.shift(),s=this.parse(n);0===s.cells.length&&this.conv.parseParam.ignoreEmpty||(s.closed||this.conv.parseParam.alwaysSplitAtEOL?(this.conv.parseRuntime.selectedColumns?e.push(o.filterArray(s.cells,this.conv.parseRuntime.selectedColumns)):e.push(s.cells),r=""):r=n+(i.default(n,this.conv.parseRuntime)||"\n"))}return{rowsCells:e,partial:r}},t}();e.RowSplit=a},function(t,e,r){"use strict";var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var i=n(r(29)),o=n(r(60)),s=/^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;function a(t,e,r){if(e.parseParam.checkColumn&&e.parseRuntime.headers&&t.length!==e.parseRuntime.headers.length)throw i.default.column_mismatched(e.parseRuntime.parsedLineNumber+r);return function(t,e,r){for(var n=!1,i={},o=0,s=t.length;o-1){for(var o=e.split("."),s=!0;o.length>0;)if(0===o.shift().length){s=!1;break}!s||n.parseParam.colParser[e]&&n.parseParam.colParser[e].flat?n.parseRuntime.columnValueSetter[i]=f:n.parseRuntime.columnValueSetter[i]=h}else n.parseRuntime.columnValueSetter[i]=f;!0===n.parseParam.nullObject&&"null"===r&&(r=null),n.parseRuntime.columnValueSetter[i](t,e,r)}function f(t,e,r){t[e]=r}function h(t,e,r){o.default(t,e,r)}function p(t,e,r,n){return n.parseRuntime.headerType[r]?n.parseRuntime.headerType[r]:e.indexOf("number#!")>-1?n.parseRuntime.headerType[r]=d:e.indexOf("string#!")>-1?n.parseRuntime.headerType[r]=_:n.parseParam.checkType?n.parseRuntime.headerType[r]=v:n.parseRuntime.headerType[r]=_}function d(t){var e=parseFloat(t);return isNaN(e)?t:e}function _(t){return t.toString()}function v(t){var e=t.trim();return""===e?_(t):s.test(e)?d(t):5===e.length&&"false"===e.toLowerCase()||4===e.length&&"true"===e.toLowerCase()?function(t){var e=t.trim();return 5!==e.length||"false"!==e.toLowerCase()}(t):"{"===e[0]&&"}"===e[e.length-1]||"["===e[0]&&"]"===e[e.length-1]?function(t){try{return JSON.parse(t)}catch(e){return t}}(t):_(t)}},function(t,e,r){var n=r(61);t.exports=function(t,e,r){return null==t?t:n(t,e,r)}},function(t,e,r){var n=r(62),i=r(74),o=r(103),s=r(20),a=r(104);t.exports=function(t,e,r,u){if(!s(t))return t;for(var c=-1,l=(e=i(e,t)).length,f=l-1,h=t;null!=h&&++c-1}},function(t,e,r){var n=r(9);t.exports=function(t,e){var r=this.__data__,i=n(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this}},function(t,e,r){var n=r(17)(r(19),"Map");t.exports=n},function(t,e,r){var n=r(10);t.exports=function(t){var e=n(this,t).delete(t);return this.size-=e?1:0,e}},function(t,e){t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},function(t,e,r){var n=r(10);t.exports=function(t){return n(this,t).get(t)}},function(t,e,r){var n=r(10);t.exports=function(t){return n(this,t).has(t)}},function(t,e,r){var n=r(10);t.exports=function(t,e){var r=n(this,t),i=r.size;return r.set(t,e),this.size+=r.size==i?0:1,this}},function(t,e,r){var n=r(101);t.exports=function(t){return null==t?"":n(t)}},function(t,e,r){var n=r(18),i=r(102),o=r(21),s=r(22),a=n?n.prototype:void 0,u=a?a.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(o(e))return i(e,t)+"";if(s(e))return u?u.call(e):"";var r=e+"";return"0"==r&&1/e==-1/0?"-0":r}},function(t,e){t.exports=function(t,e){for(var r=-1,n=null==t?0:t.length,i=Array(n);++r-1&&t%1==0&&t0||this.converter.listeners("readable").length>0),this._needPushDownstream},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"needEmitAll",{get:function(){return!!this.converter.parseRuntime.then&&this.converter.parseParam.needEmitAll},enumerable:!0,configurable:!0}),t.prototype.processResult=function(t){var e=this,r=this.converter.parseRuntime.parsedLineNumber;return this.needPushDownstream&&"array"===this.converter.parseParam.downstreamFormat&&0===r&&a(this.converter,"["+o.EOL),new i.default(function(r,n){e.needEmitLine?function t(e,r,n,i,o){if(n>=e.length)o();else if(r.parseRuntime.subscribe&&r.parseRuntime.subscribe.onNext){var s=r.parseRuntime.subscribe.onNext,u=e[n],c=s(u,r.parseRuntime.parsedLineNumber+n);if(n++,c&&c.then)c.then(function(){!function(e,r,n,i,o,s,u){o&&a(n,u),t(e,n,i,o,s)}(e,0,r,n,i,o,u)},o);else{for(i&&a(r,u);n - * @license MIT - */ -var n=r(38),i=r(39),o=r(40);function s(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,e){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|t}function d(t,e){if(u.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return N(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return H(t).length;default:if(n)return N(t).length;e=(""+e).toLowerCase(),n=!0}}function _(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function v(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=u.from(e,n)),u.isBuffer(e))return 0===e.length?-1:y(t,e,r,n,i);if("number"==typeof e)return e&=255,u.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):y(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function y(t,e,r,n,i){var o,s=1,a=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var l=-1;for(o=r;oa&&(r=a-u),o=r;o>=0;o--){for(var f=!0,h=0;hi&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var s=0;s>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function x(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function j(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:c>223?3:c>191?2:1;if(i+f<=r)switch(f){case 1:c<128&&(l=c);break;case 2:128==(192&(o=t[i+1]))&&(u=(31&c)<<6|63&o)>127&&(l=u);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&(u=(15&c)<<12|(63&o)<<6|63&s)>2047&&(u<55296||u>57343)&&(l=u);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(l=u)}null===l?(l=65533,f=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=f}return function(t){var e=t.length;if(e<=S)return String.fromCharCode.apply(String,t);for(var r="",n=0;nthis.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return T(this,e,r);case"utf8":case"utf-8":return j(this,e,r);case"ascii":return R(this,e,r);case"latin1":case"binary":return k(this,e,r);case"base64":return x(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}.apply(this,arguments)},u.prototype.equals=function(t){if(!u.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===u.compare(this,t)},u.prototype.inspect=function(){var t="",r=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},u.prototype.compare=function(t,e,r,n,i){if(!u.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(e>>>=0,r>>>=0,n>>>=0,i>>>=0,this===t)return 0;for(var o=i-n,s=r-e,a=Math.min(o,s),c=this.slice(n,i),l=t.slice(e,r),f=0;fi)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return m(this,t,e,r);case"utf8":case"utf-8":return g(this,t,e,r);case"ascii":return b(this,t,e,r);case"latin1":case"binary":return w(this,t,e,r);case"base64":return E(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var S=4096;function R(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function A(t,e,r,n,i,o){if(!u.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function F(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function L(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function M(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function B(t,e,r,n,o){return o||M(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function D(t,e,r,n,o){return o||M(t,0,r,8),i.write(t,e,r,n,52,8),r+8}u.prototype.slice=function(t,e){var r,n=this.length;if(t=~~t,e=void 0===e?n:~~e,t<0?(t+=n)<0&&(t=0):t>n&&(t=n),e<0?(e+=n)<0&&(e=0):e>n&&(e=n),e0&&(i*=256);)n+=this[t+--e]*i;return n},u.prototype.readUInt8=function(t,e){return e||O(t,1,this.length),this[t]},u.prototype.readUInt16LE=function(t,e){return e||O(t,2,this.length),this[t]|this[t+1]<<8},u.prototype.readUInt16BE=function(t,e){return e||O(t,2,this.length),this[t]<<8|this[t+1]},u.prototype.readUInt32LE=function(t,e){return e||O(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},u.prototype.readUInt32BE=function(t,e){return e||O(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},u.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||O(t,e,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*e)),n},u.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||O(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},u.prototype.readInt8=function(t,e){return e||O(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},u.prototype.readInt16LE=function(t,e){e||O(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt16BE=function(t,e){e||O(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt32LE=function(t,e){return e||O(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},u.prototype.readInt32BE=function(t,e){return e||O(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},u.prototype.readFloatLE=function(t,e){return e||O(t,4,this.length),i.read(this,t,!0,23,4)},u.prototype.readFloatBE=function(t,e){return e||O(t,4,this.length),i.read(this,t,!1,23,4)},u.prototype.readDoubleLE=function(t,e){return e||O(t,8,this.length),i.read(this,t,!0,52,8)},u.prototype.readDoubleBE=function(t,e){return e||O(t,8,this.length),i.read(this,t,!1,52,8)},u.prototype.writeUIntLE=function(t,e,r,n){t=+t,e|=0,r|=0,n||A(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o=0&&(o*=256);)this[e+i]=t/o&255;return e+r},u.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,1,255,0),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},u.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},u.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},u.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):L(this,t,e,!0),e+4},u.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):L(this,t,e,!1),e+4},u.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);A(this,t,e,r,i-1,-i)}var o=0,s=1,a=0;for(this[e]=255&t;++o>0)-a&255;return e+r},u.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);A(this,t,e,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+r},u.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,1,127,-128),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},u.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},u.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},u.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):L(this,t,e,!0),e+4},u.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||A(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):L(this,t,e,!1),e+4},u.prototype.writeFloatLE=function(t,e,r){return B(this,t,e,!0,r)},u.prototype.writeFloatBE=function(t,e,r){return B(this,t,e,!1,r)},u.prototype.writeDoubleLE=function(t,e,r){return D(this,t,e,!0,r)},u.prototype.writeDoubleBE=function(t,e,r){return D(this,t,e,!1,r)},u.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e=0;--i)t[i+e]=this[i+r];else if(o<1e3||!u.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function H(t){return n.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(I,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function V(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(0))},function(t,e){var r,n,i=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function a(t){if(r===setTimeout)return setTimeout(t,0);if((r===o||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:o}catch(t){r=o}try{n="function"==typeof clearTimeout?clearTimeout:s}catch(t){n=s}}();var u,c=[],l=!1,f=-1;function h(){l&&u&&(l=!1,u.length?c=u.concat(c):f=-1,c.length&&p())}function p(){if(!l){var t=a(h);l=!0;for(var e=c.length;e;){for(u=c,c=[];++f1)for(var r=1;r=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},r(35),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,r(0))},function(t,e){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function n(t){return"function"==typeof t}function i(t){return"object"==typeof t&&null!==t}function o(t){return void 0===t}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(t){if(!function(t){return"number"==typeof t}(t)||t<0||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},r.prototype.emit=function(t){var e,r,s,a,u,c;if(this._events||(this._events={}),"error"===t&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var l=new Error('Uncaught, unspecified "error" event. ('+e+")");throw l.context=e,l}if(o(r=this._events[t]))return!1;if(n(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:a=Array.prototype.slice.call(arguments,1),r.apply(this,a)}else if(i(r))for(a=Array.prototype.slice.call(arguments,1),s=(c=r.slice()).length,u=0;u0&&this._events[t].length>s&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(t,e){if(!n(e))throw TypeError("listener must be a function");var r=!1;function i(){this.removeListener(t,i),r||(r=!0,e.apply(this,arguments))}return i.listener=e,this.on(t,i),this},r.prototype.removeListener=function(t,e){var r,o,s,a;if(!n(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(s=(r=this._events[t]).length,o=-1,r===e||n(r.listener)&&r.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(i(r)){for(a=s;a-- >0;)if(r[a]===e||r[a].listener&&r[a].listener===e){o=a;break}if(o<0)return this;1===r.length?(r.length=0,delete this._events[t]):r.splice(o,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},r.prototype.removeAllListeners=function(t){var e,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(n(r=this._events[t]))this.removeListener(t,r);else if(r)for(;r.length;)this.removeListener(t,r[r.length-1]);return delete this._events[t],this},r.prototype.listeners=function(t){return this._events&&this._events[t]?n(this._events[t])?[this._events[t]]:this._events[t].slice():[]},r.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(n(e))return 1;if(e)return e.length}return 0},r.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e,r){(e=t.exports=r(23)).Stream=e,e.Readable=e,e.Writable=r(14),e.Duplex=r(1),e.Transform=r(27),e.PassThrough=r(45)},function(t,e,r){"use strict";(function(e,n,i){var o=r(6);function s(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,r){var n=t.entry;for(t.entry=null;n;){var i=n.callback;e.pendingcb--,i(void 0),n=n.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}(e,t)}}t.exports=m;var a,u=!e.browser&&["v0.10","v0.9."].indexOf(e.version.slice(0,5))>-1?n:o.nextTick;m.WritableState=y;var c=r(5);c.inherits=r(2);var l,f={deprecate:r(44)},h=r(24),p=r(7).Buffer,d=i.Uint8Array||function(){},_=r(25);function v(){}function y(t,e){a=a||r(1),t=t||{};var n=e instanceof a;this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var i=t.highWaterMark,c=t.writableHighWaterMark,l=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(c||0===c)?c:l,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var f=!1===t.decodeStrings;this.decodeStrings=!f,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,n=r.sync,i=r.writecb;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(r),e)!function(t,e,r,n,i){--e.pendingcb,r?(o.nextTick(i,n),o.nextTick(x,t,e),t._writableState.errorEmitted=!0,t.emit("error",n)):(i(n),t._writableState.errorEmitted=!0,t.emit("error",n),x(t,e))}(t,r,n,e,i);else{var s=E(r);s||r.corked||r.bufferProcessing||!r.bufferedRequest||w(t,r),n?u(b,t,r,s,i):b(t,r,s,i)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function m(t){if(a=a||r(1),!(l.call(m,this)||this instanceof a))return new m(t);this._writableState=new y(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),h.call(this)}function g(t,e,r,n,i,o,s){e.writelen=n,e.writecb=s,e.writing=!0,e.sync=!0,r?t._writev(i,e.onwrite):t._write(i,o,e.onwrite),e.sync=!1}function b(t,e,r,n){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,n(),x(t,e)}function w(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var n=e.bufferedRequestCount,i=new Array(n),o=e.corkedRequestsFree;o.entry=r;for(var a=0,u=!0;r;)i[a]=r,r.isBuf||(u=!1),r=r.next,a+=1;i.allBuffers=u,g(t,e,!0,e.length,i,"",o.finish),e.pendingcb++,e.lastBufferedRequest=null,o.next?(e.corkedRequestsFree=o.next,o.next=null):e.corkedRequestsFree=new s(e),e.bufferedRequestCount=0}else{for(;r;){var c=r.chunk,l=r.encoding,f=r.callback;if(g(t,e,!1,e.objectMode?1:c.length,c,l,f),r=r.next,e.bufferedRequestCount--,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}function E(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function C(t,e){t._final(function(r){e.pendingcb--,r&&t.emit("error",r),e.prefinished=!0,t.emit("prefinish"),x(t,e)})}function x(t,e){var r=E(e);return r&&(function(t,e){e.prefinished||e.finalCalled||("function"==typeof t._final?(e.pendingcb++,e.finalCalled=!0,o.nextTick(C,t,e)):(e.prefinished=!0,t.emit("prefinish")))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"))),r}c.inherits(m,h),y.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(y.prototype,"buffer",{get:f.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(l=Function.prototype[Symbol.hasInstance],Object.defineProperty(m,Symbol.hasInstance,{value:function(t){return!!l.call(this,t)||this===m&&t&&t._writableState instanceof y}})):l=function(t){return t instanceof this},m.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},m.prototype.write=function(t,e,r){var n=this._writableState,i=!1,s=!n.objectMode&&function(t){return p.isBuffer(t)||t instanceof d}(t);return s&&!p.isBuffer(t)&&(t=function(t){return p.from(t)}(t)),"function"==typeof e&&(r=e,e=null),s?e="buffer":e||(e=n.defaultEncoding),"function"!=typeof r&&(r=v),n.ended?function(t,e){var r=new Error("write after end");t.emit("error",r),o.nextTick(e,r)}(this,r):(s||function(t,e,r,n){var i=!0,s=!1;return null===r?s=new TypeError("May not write null values to stream"):"string"==typeof r||void 0===r||e.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(t.emit("error",s),o.nextTick(n,s),i=!1),i}(this,n,t,r))&&(n.pendingcb++,i=function(t,e,r,n,i,o){if(!r){var s=function(t,e,r){return t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=p.from(e,r)),e}(e,n,i);n!==s&&(r=!0,i="buffer",n=s)}var a=e.objectMode?1:n.length;e.length+=a;var u=e.length-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(m.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),m.prototype._write=function(t,e,r){r(new Error("_write() is not implemented"))},m.prototype._writev=null,m.prototype.end=function(t,e,r){var n=this._writableState;"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!==t&&void 0!==t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(t,e,r){e.ending=!0,x(t,e),r&&(e.finished?o.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,n,r)},Object.defineProperty(m.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),m.prototype.destroy=_.destroy,m.prototype._undestroy=_.undestroy,m.prototype._destroy=function(t,e){this.end(),e(t)}}).call(this,r(4),r(11).setImmediate,r(0))},function(t,e,r){(function(e,r,n){t.exports=function t(e,r,n){function i(s,a){if(!r[s]){if(!e[s]){var u="function"==typeof _dereq_&&_dereq_;if(!a&&u)return u(s,!0);if(o)return o(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=r[s]={exports:{}};e[s][0].call(l.exports,function(t){return i(e[s][1][t]||t)},l,l.exports,t,e,r,n)}return r[s].exports}for(var o="function"==typeof _dereq_&&_dereq_,s=0;s0;){var e=t.shift();if("function"==typeof e){var r=t.shift(),n=t.shift();e.call(r,n)}else e._settlePromises()}},u.prototype._drainQueues=function(){this._drainQueue(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,this._drainQueue(this._lateQueue)},u.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},u.prototype._reset=function(){this._isTickUsed=!1},r.exports=u,r.exports.firstLineError=i},{"./queue":26,"./schedule":29,"./util":36}],3:[function(t,e,r){"use strict";e.exports=function(t,e,r,n){var i=!1,o=function(t,e){this._reject(e)},s=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(o,o,null,this,t)},a=function(t,e){0==(50397184&this._bitField)&&this._resolveCallback(e.target)},u=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(o){i||(i=!0,t.prototype._propagateFrom=n.propagateFromFunction(),t.prototype._boundValue=n.boundValueFunction());var c=r(o),l=new t(e);l._propagateFrom(this,1);var f=this._target();if(l._setBoundTo(c),c instanceof t){var h={promiseRejectionQueued:!1,promise:l,target:f,bindingPromise:c};f._then(e,s,void 0,l,h),c._then(a,u,void 0,l,h),l._setOnCancel(c)}else l._resolveCallback(f);return l},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},t.bind=function(e,r){return t.resolve(r).bind(e)}}},{}],4:[function(t,e,r){"use strict";var n;"undefined"!=typeof Promise&&(n=Promise);var i=t("./promise")();i.noConflict=function(){try{Promise===i&&(Promise=n)}catch(t){}return i},e.exports=i},{"./promise":22}],5:[function(t,e,r){"use strict";var n=Object.create;if(n){var i=n(null),o=n(null);i[" size"]=o[" size"]=0}e.exports=function(e){var r=t("./util"),n=r.canEvaluate;function i(t){return function(t,n){var i;if(null!=t&&(i=t[n]),"function"!=typeof i){var o="Object "+r.classString(t)+" has no method '"+r.toString(n)+"'";throw new e.TypeError(o)}return i}(t,this.pop()).apply(t,this)}function o(t){return t[this]}function s(t){var e=+this;return e<0&&(e=Math.max(0,e+t.length)),t[e]}r.isIdentifier,e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(i,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e;if("number"==typeof t)e=s;else if(n){var r=(void 0)(t);e=null!==r?r:o}else e=o;return this._then(e,void 0,void 0,t,void 0)}}},{"./util":36}],6:[function(t,e,r){"use strict";e.exports=function(e,r,n,i){var o=t("./util"),s=o.tryCatch,a=o.errorObj,u=e._async;e.prototype.break=e.prototype.cancel=function(){if(!i.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var r=t._cancellationParent;if(null==r||!r._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=r}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),u.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(o.isArray(t))for(var r=0;r=0)return r[t]}return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},n.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,r.push(this._trace))},n.prototype._popContext=function(){if(void 0!==this._trace){var t=r.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},n.CapturedTrace=null,n.create=function(){if(e)return new n},n.deactivateLongStackTraces=function(){},n.activateLongStackTraces=function(){var r=t.prototype._pushContext,o=t.prototype._popContext,s=t._peekContext,a=t.prototype._peekContext,u=t.prototype._promiseCreated;n.deactivateLongStackTraces=function(){t.prototype._pushContext=r,t.prototype._popContext=o,t._peekContext=s,t.prototype._peekContext=a,t.prototype._promiseCreated=u,e=!1},e=!0,t.prototype._pushContext=n.prototype._pushContext,t.prototype._popContext=n.prototype._popContext,t._peekContext=t.prototype._peekContext=i,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},n}},{}],9:[function(t,r,n){"use strict";r.exports=function(r,n){var i,o,s,a=r._getDomain,u=r._async,c=t("./errors").Warning,l=t("./util"),f=l.canAttachTrace,h=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,p=/\((?:timers\.js):\d+:\d+\)/,d=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,_=null,v=null,y=!1,m=!(0==l.env("BLUEBIRD_DEBUG")),g=!(0==l.env("BLUEBIRD_WARNINGS")||!m&&!l.env("BLUEBIRD_WARNINGS")),b=!(0==l.env("BLUEBIRD_LONG_STACK_TRACES")||!m&&!l.env("BLUEBIRD_LONG_STACK_TRACES")),w=0!=l.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(g||!!l.env("BLUEBIRD_W_FORGOTTEN_RETURN"));r.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|524288},r.prototype._ensurePossibleRejectionHandled=function(){if(0==(524288&this._bitField)){this._setRejectionIsUnhandled();var t=this;setTimeout(function(){t._notifyUnhandledRejection()},1)}},r.prototype._notifyUnhandledRejectionIsHandled=function(){q("rejectionHandled",i,void 0,this)},r.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},r.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},r.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),q("unhandledRejection",o,t,this)}},r.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},r.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},r.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},r.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},r.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},r.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},r.prototype._warn=function(t,e,r){return U(t,e,r||this)},r.onPossiblyUnhandledRejection=function(t){var e=a();o="function"==typeof t?null===e?t:l.domainBind(e,t):void 0},r.onUnhandledRejectionHandled=function(t){var e=a();i="function"==typeof t?null===e?t:l.domainBind(e,t):void 0};var E=function(){};r.longStackTraces=function(){if(u.haveItemsQueued()&&!J.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!J.longStackTraces&&Y()){var t=r.prototype._captureStackTrace,e=r.prototype._attachExtraTrace;J.longStackTraces=!0,E=function(){if(u.haveItemsQueued()&&!J.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");r.prototype._captureStackTrace=t,r.prototype._attachExtraTrace=e,n.deactivateLongStackTraces(),u.enableTrampoline(),J.longStackTraces=!1},r.prototype._captureStackTrace=D,r.prototype._attachExtraTrace=I,n.activateLongStackTraces(),u.disableTrampolineIfNecessary()}},r.hasLongStackTraces=function(){return J.longStackTraces&&Y()};var C=function(){try{if("function"==typeof CustomEvent){var t=new CustomEvent("CustomEvent");return l.global.dispatchEvent(t),function(t,e){var r=new CustomEvent(t.toLowerCase(),{detail:e,cancelable:!0});return!l.global.dispatchEvent(r)}}return"function"==typeof Event?(t=new Event("CustomEvent"),l.global.dispatchEvent(t),function(t,e){var r=new Event(t.toLowerCase(),{cancelable:!0});return r.detail=e,!l.global.dispatchEvent(r)}):((t=document.createEvent("CustomEvent")).initCustomEvent("testingtheevent",!1,!0,{}),l.global.dispatchEvent(t),function(t,e){var r=document.createEvent("CustomEvent");return r.initCustomEvent(t.toLowerCase(),!1,!0,e),!l.global.dispatchEvent(r)})}catch(t){}return function(){return!1}}(),x=l.isNode?function(){return e.emit.apply(e,arguments)}:l.global?function(t){var e="on"+t.toLowerCase(),r=l.global[e];return!!r&&(r.apply(l.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function j(t,e){return{promise:e}}var S={promiseCreated:j,promiseFulfilled:j,promiseRejected:j,promiseResolved:j,promiseCancelled:j,promiseChained:function(t,e,r){return{promise:e,child:r}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,r){return{reason:e,promise:r}},rejectionHandled:j},R=function(t){var e=!1;try{e=x.apply(null,arguments)}catch(t){u.throwLater(t),e=!0}var r=!1;try{r=C(t,S[t].apply(null,arguments))}catch(t){u.throwLater(t),r=!0}return r||e};function k(){return!1}function T(t,e,r){var n=this;try{t(e,r,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+l.toString(t));n._attachCancellationCallback(t)})}catch(t){return t}}function P(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?l.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function O(){return this._onCancelField}function A(t){this._onCancelField=t}function F(){this._cancellationParent=void 0,this._onCancelField=void 0}function L(t,e){if(0!=(1&e)){this._cancellationParent=t;var r=t._branchesRemainingToCancel;void 0===r&&(r=0),t._branchesRemainingToCancel=r+1}0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}r.config=function(t){if("longStackTraces"in(t=Object(t))&&(t.longStackTraces?r.longStackTraces():!t.longStackTraces&&r.hasLongStackTraces()&&E()),"warnings"in t){var e=t.warnings;J.warnings=!!e,w=J.warnings,l.isObject(e)&&"wForgottenReturn"in e&&(w=!!e.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!J.cancellation){if(u.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");r.prototype._clearCancellationData=F,r.prototype._propagateFrom=L,r.prototype._onCancel=O,r.prototype._setOnCancel=A,r.prototype._attachCancellationCallback=P,r.prototype._execute=T,M=L,J.cancellation=!0}return"monitoring"in t&&(t.monitoring&&!J.monitoring?(J.monitoring=!0,r.prototype._fireEvent=R):!t.monitoring&&J.monitoring&&(J.monitoring=!1,r.prototype._fireEvent=k)),r},r.prototype._fireEvent=k,r.prototype._execute=function(t,e,r){try{t(e,r)}catch(t){return t}},r.prototype._onCancel=function(){},r.prototype._setOnCancel=function(t){},r.prototype._attachCancellationCallback=function(t){},r.prototype._captureStackTrace=function(){},r.prototype._attachExtraTrace=function(){},r.prototype._clearCancellationData=function(){},r.prototype._propagateFrom=function(t,e){};var M=function(t,e){0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)};function B(){var t=this._boundTo;return void 0!==t&&t instanceof r?t.isFulfilled()?t.value():void 0:t}function D(){this._trace=new X(this._peekContext())}function I(t,e){if(f(t)){var r=this._trace;if(void 0!==r&&e&&(r=r._parent),void 0!==r)r.attachExtraTrace(t);else if(!t.__stackCleaned__){var n=H(t);l.notEnumerableProp(t,"stack",n.message+"\n"+n.stack.join("\n")),l.notEnumerableProp(t,"__stackCleaned__",!0)}}}function U(t,e,n){if(J.warnings){var i,o=new c(t);if(e)n._attachExtraTrace(o);else if(J.longStackTraces&&(i=r._peekContext()))i.attachExtraTrace(o);else{var s=H(o);o.stack=s.message+"\n"+s.stack.join("\n")}R("warning",o)||V(o,"",!0)}}function N(t){for(var e=[],r=0;r0?function(t){for(var e=t.stack.replace(/\s+$/g,"").split("\n"),r=0;r0&&"SyntaxError"!=t.name&&(e=e.slice(r)),e}(t):[" (No stack trace)"],{message:r,stack:"SyntaxError"==t.name?e:N(e)}}function V(t,e,r){if("undefined"!=typeof console){var n;if(l.isObject(t)){var i=t.stack;n=e+v(i,t)}else n=e+String(t);"function"==typeof s?s(n,r):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(n)}}function q(t,e,r,n){var i=!1;try{"function"==typeof e&&(i=!0,"rejectionHandled"===t?e(n):e(r,n))}catch(t){u.throwLater(t)}"unhandledRejection"===t?R(t,r,n)||i||V(r,"Unhandled rejection "):R(t,n)}function W(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{if(e=t&&"function"==typeof t.toString?t.toString():l.toString(t),/\[object [a-zA-Z0-9$_]+\]/.test(e))try{e=JSON.stringify(t)}catch(t){}0===e.length&&(e="(empty array)")}return"(<"+function(t){return t.length<41?t:t.substr(0,38)+"..."}(e)+">, no stack trace)"}function Y(){return"function"==typeof G}var $=function(){return!1},z=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function Q(t){var e=t.match(z);if(e)return{fileName:e[1],line:parseInt(e[2],10)}}function X(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);G(this,X),e>32&&this.uncycle()}l.inherits(X,Error),n.CapturedTrace=X,X.prototype.uncycle=function(){var t=this._length;if(!(t<2)){for(var e=[],r={},n=0,i=this;void 0!==i;++n)e.push(i),i=i._parent;for(n=(t=this._length=n)-1;n>=0;--n){var o=e[n].stack;void 0===r[o]&&(r[o]=n)}for(n=0;n0&&(e[s-1]._parent=void 0,e[s-1]._length=1),e[n]._parent=void 0,e[n]._length=1;var a=n>0?e[n-1]:this;s=0;--c)e[c]._length=u,u++;return}}}},X.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=H(t),r=e.message,n=[e.stack],i=this;void 0!==i;)n.push(N(i.stack.split("\n"))),i=i._parent;!function(t){for(var e=t[0],r=1;r=0;--a)if(n[a]===o){s=a;break}for(a=s;a>=0;--a){var u=n[a];if(e[i]!==u)break;e.pop(),i--}e=n}}(n),function(t){for(var e=0;e=0)return _=/@/,v=e,y=!0,function(t){t.stack=(new Error).stack};try{throw new Error}catch(t){n="stack"in t}return"stack"in i||!n||"number"!=typeof Error.stackTraceLimit?(v=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?W(e):e.toString()},null):(_=t,v=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(s=function(t){console.warn(t)},l.isNode&&e.stderr.isTTY?s=function(t,e){var r=e?"":"";console.warn(r+t+"\n")}:l.isNode||"string"!=typeof(new Error).stack||(s=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var J={warnings:g,longStackTraces:!1,cancellation:!1,monitoring:!1};return b&&r.longStackTraces(),{longStackTraces:function(){return J.longStackTraces},warnings:function(){return J.warnings},cancellation:function(){return J.cancellation},monitoring:function(){return J.monitoring},propagateFromFunction:function(){return M},boundValueFunction:function(){return B},checkForgottenReturns:function(t,e,r,n,i){if(void 0===t&&null!==e&&w){if(void 0!==i&&i._returnedNonUndefined())return;if(0==(65535&n._bitField))return;r&&(r+=" ");var o="",s="";if(e._trace){for(var a=e._trace.stack.split("\n"),u=N(a),c=u.length-1;c>=0;--c){var l=u[c];if(!p.test(l)){var f=l.match(d);f&&(o="at "+f[1]+":"+f[2]+":"+f[3]+" ");break}}if(u.length>0){var h=u[0];for(c=0;c0&&(s="\n"+a[c-1]);break}}}var _="a promise was created in a "+r+"handler "+o+"but was not returned from it, see http://goo.gl/rRqMUw"+s;n._warn(_,!0,e)}},setBounds:function(t,e){if(Y()){for(var r,n,i=t.stack.split("\n"),o=e.stack.split("\n"),s=-1,a=-1,u=0;u=a||($=function(t){if(h.test(t))return!0;var e=Q(t);return!!(e&&e.fileName===r&&s<=e.line&&e.line<=a)})}},warn:U,deprecated:function(t,e){var r=t+" is deprecated and will be removed in a future version.";return e&&(r+=" Use "+e+" instead."),U(r)},CapturedTrace:X,fireDomEvent:C,fireGlobalEvent:x}}},{"./errors":12,"./util":36}],10:[function(t,e,r){"use strict";e.exports=function(t){function e(){return this.value}function r(){throw this.reason}t.prototype.return=t.prototype.thenReturn=function(r){return r instanceof t&&r.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:r},void 0)},t.prototype.throw=t.prototype.thenThrow=function(t){return this._then(r,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,r,void 0,{reason:t},void 0);var e=arguments[1];return this.caught(t,function(){throw e})},t.prototype.catchReturn=function(r){if(arguments.length<=1)return r instanceof t&&r.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:r},void 0);var n=arguments[1];return n instanceof t&&n.suppressUnhandledRejections(),this.caught(r,function(){return n})}}},{}],11:[function(t,e,r){"use strict";e.exports=function(t,e){var r=t.reduce,n=t.all;function i(){return n(this)}t.prototype.each=function(t){return r(this,t,e,0)._then(i,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return r(this,t,e,e)},t.each=function(t,n){return r(t,n,e,0)._then(i,void 0,void 0,t,void 0)},t.mapSeries=function(t,n){return r(t,n,e,e)}}},{}],12:[function(t,e,r){"use strict";var n,i,o=t("./es5"),s=o.freeze,a=t("./util"),u=a.inherits,c=a.notEnumerableProp;function l(t,e){function r(n){if(!(this instanceof r))return new r(n);c(this,"message","string"==typeof n?n:e),c(this,"name",t),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return u(r,Error),r}var f=l("Warning","warning"),h=l("CancellationError","cancellation error"),p=l("TimeoutError","timeout error"),d=l("AggregateError","aggregate error");try{n=TypeError,i=RangeError}catch(t){n=l("TypeError","type error"),i=l("RangeError","range error")}for(var _="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),v=0;v<_.length;++v)"function"==typeof Array.prototype[_[v]]&&(d.prototype[_[v]]=Array.prototype[_[v]]);o.defineProperty(d.prototype,"length",{value:0,configurable:!1,writable:!0,enumerable:!0}),d.prototype.isOperational=!0;var y=0;function m(t){if(!(this instanceof m))return new m(t);c(this,"name","OperationalError"),c(this,"message",t),this.cause=t,this.isOperational=!0,t instanceof Error?(c(this,"message",t.message),c(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}d.prototype.toString=function(){var t=Array(4*y+1).join(" "),e="\n"+t+"AggregateError of:\n";y++,t=Array(4*y+1).join(" ");for(var r=0;r1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0)}function f(){return p.call(this,this.promise._target()._settledValue())}function h(t){if(!l(this,t))return s.e=t,s}function p(t){var i=this.promise,a=this.handler;if(!this.called){this.called=!0;var u=this.isFinallyHandler()?a.call(i._boundValue()):a.call(i._boundValue(),t);if(u===n)return u;if(void 0!==u){i._setReturnedNonUndefined();var p=r(u,i);if(p instanceof e){if(null!=this.cancelPromise){if(p._isCancelled()){var d=new o("late cancellation observer");return i._attachExtraTrace(d),s.e=d,s}p.isPending()&&p._attachCancellationCallback(new c(this))}return p._then(f,h,void 0,this,void 0)}}}return i.isRejected()?(l(this),s.e=t,s):(l(this),t)}return u.prototype.isFinallyHandler=function(){return 0===this.type},c.prototype._resultCancelled=function(){l(this.finallyHandler)},e.prototype._passThrough=function(t,e,r,n){return"function"!=typeof t?this.then():this._then(r,n,void 0,new u(this,e,t),void 0)},e.prototype.lastly=e.prototype.finally=function(t){return this._passThrough(t,0,p,p)},e.prototype.tap=function(t){return this._passThrough(t,1,p)},e.prototype.tapCatch=function(t){var r=arguments.length;if(1===r)return this._passThrough(t,1,void 0,p);var n,o=new Array(r-1),s=0;for(n=0;n0&&"function"==typeof arguments[e]&&(t=arguments[e]);var n=[].slice.call(arguments);t&&n.pop();var i=new r(n).promise();return void 0!==t?i.spread(t):i}}},{"./util":36}],18:[function(t,e,r){"use strict";e.exports=function(e,r,n,i,o,s){var a=e._getDomain,u=t("./util"),c=u.tryCatch,l=u.errorObj,f=e._async;function h(t,e,r,n){this.constructor$(t),this._promise._captureStackTrace();var i=a();this._callback=null===i?e:u.domainBind(i,e),this._preservedValues=n===o?new Array(this.length()):null,this._limit=r,this._inFlight=0,this._queue=[],f.invoke(this._asyncInit,this,void 0)}function p(t,r,i,o){if("function"!=typeof r)return n("expecting a function but got "+u.classString(r));var s=0;if(void 0!==i){if("object"!=typeof i||null===i)return e.reject(new TypeError("options argument must be an object but it is "+u.classString(i)));if("number"!=typeof i.concurrency)return e.reject(new TypeError("'concurrency' must be a number but it is "+u.classString(i.concurrency)));s=i.concurrency}return new h(t,r,s="number"==typeof s&&isFinite(s)&&s>=1?s:0,o).promise()}u.inherits(h,r),h.prototype._asyncInit=function(){this._init$(void 0,-2)},h.prototype._init=function(){},h.prototype._promiseFulfilled=function(t,r){var n=this._values,o=this.length(),a=this._preservedValues,u=this._limit;if(r<0){if(n[r=-1*r-1]=t,u>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(u>=1&&this._inFlight>=u)return n[r]=t,this._queue.push(r),!1;null!==a&&(a[r]=t);var f=this._promise,h=this._callback,p=f._boundValue();f._pushContext();var d=c(h).call(p,t,r,o),_=f._popContext();if(s.checkForgottenReturns(d,_,null!==a?"Promise.filter":"Promise.map",f),d===l)return this._reject(d.e),!0;var v=i(d,this._promise);if(v instanceof e){var y=(v=v._target())._bitField;if(0==(50397184&y))return u>=1&&this._inFlight++,n[r]=v,v._proxy(this,-1*(r+1)),!1;if(0==(33554432&y))return 0!=(16777216&y)?(this._reject(v._reason()),!0):(this._cancel(),!0);d=v._value()}n[r]=d}return++this._totalResolved>=o&&(null!==a?this._filter(n,a):this._resolve(n),!0)},h.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,r=this._values;t.length>0&&this._inFlight1){o.deprecated("calling Promise.try with more than 1 argument");var c=arguments[1],l=arguments[2];n=s.isArray(c)?a(t).apply(l,c):a(t).call(l,c)}else n=a(t)();var f=u._popContext();return o.checkForgottenReturns(n,f,"Promise.try",u),u._resolveFromSyncValue(n),u},e.prototype._resolveFromSyncValue=function(t){t===s.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":36}],20:[function(t,e,r){"use strict";var n=t("./util"),i=n.maybeWrapAsError,o=t("./errors").OperationalError,s=t("./es5"),a=/^(?:name|message|stack|cause)$/;function u(t){var e;if(function(t){return t instanceof Error&&s.getPrototypeOf(t)===Error.prototype}(t)){(e=new o(t)).name=t.name,e.message=t.message,e.stack=t.stack;for(var r=s.keys(t),i=0;i1){var r,n=new Array(e-1),i=0;for(r=0;r0&&"function"!=typeof t&&"function"!=typeof e){var r=".then() only accepts functions but was passed: "+c.classString(t);arguments.length>1&&(r+=", "+c.classString(e)),this._warn(r)}return this._then(t,e,void 0,void 0,void 0)},T.prototype.done=function(t,e){this._then(t,e,void 0,void 0,void 0)._setIsFinal()},T.prototype.spread=function(t){return"function"!=typeof t?o("expecting a function but got "+c.classString(t)):this.all()._then(t,void 0,void 0,y,void 0)},T.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},T.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new b(this).promise()},T.prototype.error=function(t){return this.caught(c.originatesFromRejection,t)},T.getNewLibraryCopy=r.exports,T.is=function(t){return t instanceof T},T.fromNode=T.fromCallback=function(t){var e=new T(v);e._captureStackTrace();var r=arguments.length>1&&!!Object(arguments[1]).multiArgs,n=k(t)(S(e,r));return n===R&&e._rejectCallback(n.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},T.all=function(t){return new b(t).promise()},T.cast=function(t){var e=g(t);return e instanceof T||((e=new T(v))._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},T.resolve=T.fulfilled=T.cast,T.reject=T.rejected=function(t){var e=new T(v);return e._captureStackTrace(),e._rejectCallback(t,!0),e},T.setScheduler=function(t){if("function"!=typeof t)throw new d("expecting a function but got "+c.classString(t));return h.setScheduler(t)},T.prototype._then=function(t,e,r,n,i){var o=void 0!==i,s=o?i:new T(v),u=this._target(),l=u._bitField;o||(s._propagateFrom(this,3),s._captureStackTrace(),void 0===n&&0!=(2097152&this._bitField)&&(n=0!=(50397184&l)?this._boundValue():u===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,s));var f=a();if(0!=(50397184&l)){var p,d,y=u._settlePromiseCtx;0!=(33554432&l)?(d=u._rejectionHandler0,p=t):0!=(16777216&l)?(d=u._fulfillmentHandler0,p=e,u._unsetRejectionIsUnhandled()):(y=u._settlePromiseLateCancellationObserver,d=new _("late cancellation observer"),u._attachExtraTrace(d),p=e),h.invoke(y,u,{handler:null===f?p:"function"==typeof p&&c.domainBind(f,p),promise:s,receiver:n,value:d})}else u._addCallbacks(t,e,s,n,f);return s},T.prototype._length=function(){return 65535&this._bitField},T.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},T.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},T.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},T.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},T.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},T.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},T.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},T.prototype._isFinal=function(){return(4194304&this._bitField)>0},T.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},T.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},T.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},T.prototype._setAsyncGuaranteed=function(){h.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},T.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];if(e!==u)return void 0===e&&this._isBound()?this._boundValue():e},T.prototype._promiseAt=function(t){return this[4*t-4+2]},T.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},T.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},T.prototype._boundValue=function(){},T.prototype._migrateCallback0=function(t){t._bitField;var e=t._fulfillmentHandler0,r=t._rejectionHandler0,n=t._promise0,i=t._receiverAt(0);void 0===i&&(i=u),this._addCallbacks(e,r,n,i,null)},T.prototype._migrateCallbackAt=function(t,e){var r=t._fulfillmentHandlerAt(e),n=t._rejectionHandlerAt(e),i=t._promiseAt(e),o=t._receiverAt(e);void 0===o&&(o=u),this._addCallbacks(r,n,i,o,null)},T.prototype._addCallbacks=function(t,e,r,n,i){var o=this._length();if(o>=65531&&(o=0,this._setLength(0)),0===o)this._promise0=r,this._receiver0=n,"function"==typeof t&&(this._fulfillmentHandler0=null===i?t:c.domainBind(i,t)),"function"==typeof e&&(this._rejectionHandler0=null===i?e:c.domainBind(i,e));else{var s=4*o-4;this[s+2]=r,this[s+3]=n,"function"==typeof t&&(this[s+0]=null===i?t:c.domainBind(i,t)),"function"==typeof e&&(this[s+1]=null===i?e:c.domainBind(i,e))}return this._setLength(o+1),o},T.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},T.prototype._resolveCallback=function(t,e){if(0==(117506048&this._bitField)){if(t===this)return this._rejectCallback(n(),!1);var r=g(t,this);if(!(r instanceof T))return this._fulfill(t);e&&this._propagateFrom(r,2);var i=r._target();if(i!==this){var o=i._bitField;if(0==(50397184&o)){var s=this._length();s>0&&i._migrateCallback0(this);for(var a=1;a>>16)){if(t===this){var r=n();return this._attachExtraTrace(r),this._reject(r)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!=(134217728&e)?this._settlePromises():h.settlePromises(this))}},T.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=t,this._isFinal())return h.fatalError(t,c.isNode);(65535&e)>0?h.settlePromises(this):this._ensurePossibleRejectionHandled()}},T.prototype._fulfillPromises=function(t,e){for(var r=1;r0){if(0!=(16842752&t)){var r=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,r,t),this._rejectPromises(e,r)}else{var n=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,n,t),this._fulfillPromises(e,n)}this._setLength(0)}this._clearCancellationData()},T.prototype._settledValue=function(){var t=this._bitField;return 0!=(33554432&t)?this._rejectionHandler0:0!=(16777216&t)?this._fulfillmentHandler0:void 0},T.defer=T.pending=function(){return C.deprecated("Promise.defer","new Promise"),{promise:new T(v),resolve:P,reject:O}},c.notEnumerableProp(T,"_makeSelfResolutionError",n),t("./method")(T,v,g,o,C),t("./bind")(T,v,g,C),t("./cancel")(T,b,o,C),t("./direct_resolve")(T),t("./synchronous_inspection")(T),t("./join")(T,b,g,v,h,a),T.Promise=T,T.version="3.5.1",t("./map.js")(T,b,o,g,v,C),t("./call_get.js")(T),t("./using.js")(T,o,g,E,v,C),t("./timers.js")(T,v,C),t("./generators.js")(T,o,v,g,s,C),t("./nodeify.js")(T),t("./promisify.js")(T,v),t("./props.js")(T,b,g,o),t("./race.js")(T,v,g,o),t("./reduce.js")(T,b,o,g,v,C),t("./settle.js")(T,b,C),t("./some.js")(T,b,o),t("./filter.js")(T,v),t("./each.js")(T,v),t("./any.js")(T),c.toFastProperties(T),c.toFastProperties(T.prototype),A({a:1}),A({b:2}),A({c:3}),A(1),A(function(){}),A(void 0),A(!1),A(new T(v)),C.setBounds(f.firstLineError,c.lastLineError),T}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(t,e,r){"use strict";e.exports=function(e,r,n,i,o){var s=t("./util");function a(t){var n=this._promise=new e(r);t instanceof e&&n._propagateFrom(t,3),n._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return s.isArray,s.inherits(a,o),a.prototype.length=function(){return this._length},a.prototype.promise=function(){return this._promise},a.prototype._init=function t(r,o){var a=n(this._values,this._promise);if(a instanceof e){var u=(a=a._target())._bitField;if(this._values=a,0==(50397184&u))return this._promise._setAsyncGuaranteed(),a._then(t,this._reject,void 0,this,o);if(0==(33554432&u))return 0!=(16777216&u)?this._reject(a._reason()):this._cancel();a=a._value()}if(null!==(a=s.asArray(a)))0!==a.length?this._iterate(a):-5===o?this._resolveEmptyArray():this._resolve(function(t){switch(o){case-2:return[];case-3:return{};case-6:return new Map}}());else{var c=i("expecting an array or an iterable object but got "+s.classString(a)).reason();this._promise._rejectCallback(c,!1)}},a.prototype._iterate=function(t){var r=this.getActualLength(t.length);this._length=r,this._values=this.shouldCopyValues()?new Array(r):this._values;for(var i=this._promise,o=!1,s=null,a=0;a=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseCancelled=function(){return this._cancel(),!0},a.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},a.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var r=0;r=this._length){var r;if(this._isMap)r=function(t){for(var e=new o,r=t.length/2|0,n=0;n>1},e.prototype.props=function(){return f(this)},e.props=function(t){return f(t)}}},{"./es5":13,"./util":36}],26:[function(t,e,r){"use strict";function n(t){this._capacity=t,this._length=0,this._front=0}n.prototype._willBeOverCapacity=function(t){return this._capacity=this._length&&(this._resolve(this._values),!0)},o.prototype._promiseFulfilled=function(t,e){var r=new i;return r._bitField=33554432,r._settledValueField=t,this._promiseResolved(e,r)},o.prototype._promiseRejected=function(t,e){var r=new i;return r._bitField=16777216,r._settledValueField=t,this._promiseResolved(e,r)},e.settle=function(t){return n.deprecated(".settle()",".reflect()"),new o(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{"./util":36}],31:[function(t,e,r){"use strict";e.exports=function(e,r,n){var i=t("./util"),o=t("./errors").RangeError,s=t("./errors").AggregateError,a=i.isArray,u={};function c(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function l(t,e){if((0|e)!==e||e<0)return n("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var r=new c(t),i=r.promise();return r.setHowMany(e),r.init(),i}i.inherits(c,r),c.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var t=a(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},c.prototype.init=function(){this._initialized=!0,this._init()},c.prototype.setUnwrap=function(){this._unwrap=!0},c.prototype.howMany=function(){return this._howMany},c.prototype.setHowMany=function(t){this._howMany=t},c.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},c.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},c.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(u),this._checkOutcome())},c.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new s,e=this.length();e0?this._reject(t):this._cancel(),!0}return!1},c.prototype._fulfilled=function(){return this._totalResolved},c.prototype._rejected=function(){return this._values.length-this.length()},c.prototype._addRejected=function(t){this._values.push(t)},c.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},c.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},c.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new o(e)},c.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return l(t,e)},e.prototype.some=function(t){return l(this,t)},e._SomePromiseArray=c}},{"./errors":12,"./util":36}],32:[function(t,e,r){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var r=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},n=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},i=e.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},o=e.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},s=e.prototype.isPending=function(){return 0==(50397184&this._bitField)},a=e.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};e.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},t.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},t.prototype._isCancelled=function(){return this._target().__isCancelled()},t.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},t.prototype.isPending=function(){return s.call(this._target())},t.prototype.isRejected=function(){return o.call(this._target())},t.prototype.isFulfilled=function(){return i.call(this._target())},t.prototype.isResolved=function(){return a.call(this._target())},t.prototype.value=function(){return r.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),n.call(t)},t.prototype._value=function(){return this._settledValue()},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e,r){"use strict";e.exports=function(e,r){var n=t("./util"),i=n.errorObj,o=n.isObject,s={}.hasOwnProperty;return function(t,a){if(o(t)){if(t instanceof e)return t;var u=function(t){try{return function(t){return t.then}(t)}catch(t){return i.e=t,i}}(t);if(u===i){a&&a._pushContext();var c=e.reject(u.e);return a&&a._popContext(),c}if("function"==typeof u)return function(t){try{return s.call(t,"_promise0")}catch(t){return!1}}(t)?(c=new e(r),t._then(c._fulfill,c._reject,void 0,c,null),c):function(t,o,s){var a=new e(r),u=a;s&&s._pushContext(),a._captureStackTrace(),s&&s._popContext();var c=!0,l=n.tryCatch(o).call(t,function(t){a&&(a._resolveCallback(t),a=null)},function(t){a&&(a._rejectCallback(t,c,!0),a=null)});return c=!1,a&&l===i&&(a._rejectCallback(l.e,!0,!0),a=null),u}(t,u,a)}return t}}},{"./util":36}],34:[function(t,e,r){"use strict";e.exports=function(e,r,n){var i=t("./util"),o=e.TimeoutError;function s(t){this.handle=t}s.prototype._resultCancelled=function(){clearTimeout(this.handle)};var a=function(t){return u(+this).thenReturn(t)},u=e.delay=function(t,i){var o,u;return void 0!==i?(o=e.resolve(i)._then(a,null,null,t,void 0),n.cancellation()&&i instanceof e&&o._setOnCancel(i)):(o=new e(r),u=setTimeout(function(){o._fulfill()},+t),n.cancellation()&&o._setOnCancel(new s(u)),o._captureStackTrace()),o._setAsyncGuaranteed(),o};function c(t){return clearTimeout(this.handle),t}function l(t){throw clearTimeout(this.handle),t}e.prototype.delay=function(t){return u(t,this)},e.prototype.timeout=function(t,e){var r,a;t=+t;var u=new s(setTimeout(function(){r.isPending()&&function(t,e,r){var n;n="string"!=typeof e?e instanceof Error?e:new o("operation timed out"):new o(e),i.markAsOriginatingFromRejection(n),t._attachExtraTrace(n),t._reject(n),null!=r&&r.cancel()}(r,e,a)},t));return n.cancellation()?(a=this.then(),(r=a._then(c,l,void 0,u,void 0))._setOnCancel(u)):r=this._then(c,l,void 0,u,void 0),r}}},{"./util":36}],35:[function(t,e,r){"use strict";e.exports=function(e,r,n,i,o,s){var a=t("./util"),u=t("./errors").TypeError,c=t("./util").inherits,l=a.errorObj,f=a.tryCatch,h={};function p(t){setTimeout(function(){throw t},0)}function d(t,r){var i=0,s=t.length,a=new e(o);return function o(){if(i>=s)return a._fulfill();var u=function(t){var e=n(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}(t[i++]);if(u instanceof e&&u._isDisposable()){try{u=n(u._getDisposer().tryDispose(r),t.promise)}catch(t){return p(t)}if(u instanceof e)return u._then(o,p,null,null,null)}o()}(),a}function _(t,e,r){this._data=t,this._promise=e,this._context=r}function v(t,e,r){this.constructor$(t,e,r)}function y(t){return _.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function m(t){this.length=t,this.promise=null,this[t-1]=null}_.prototype.data=function(){return this._data},_.prototype.promise=function(){return this._promise},_.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():h},_.prototype.tryDispose=function(t){var e=this.resource(),r=this._context;void 0!==r&&r._pushContext();var n=e!==h?this.doDispose(e,t):null;return void 0!==r&&r._popContext(),this._promise._unsetDisposable(),this._data=null,n},_.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},c(v,_),v.prototype.doDispose=function(t,e){return this.data().call(t,t,e)},m.prototype._resultCancelled=function(){for(var t=this.length,r=0;r0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if("function"==typeof t)return new v(t,this,i());throw new u}}},{"./errors":12,"./util":36}],36:[function(t,n,i){"use strict";var o,s=t("./es5"),a="undefined"==typeof navigator,u={e:{}},c="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==r?r:void 0!==this?this:null;function l(){try{var t=o;return o=null,t.apply(this,arguments)}catch(t){return u.e=t,u}}function f(t){return null==t||!0===t||!1===t||"string"==typeof t||"number"==typeof t}function h(t,e,r){if(f(t))return t;var n={value:r,configurable:!0,enumerable:!1,writable:!0};return s.defineProperty(t,e,n),t}var p=function(){var t=[Array.prototype,Object.prototype,Function.prototype],e=function(e){for(var r=0;r1,n=e.length>0&&!(1===e.length&&"constructor"===e[0]),i=d.test(t+"")&&s.names(t).length>0;if(r||n||i)return!0}return!1}catch(t){return!1}},isIdentifier:function(t){return _.test(t)},inheritedDataKeys:p,getDataPropertyOrDefault:function(t,e,r){if(!s.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var n=Object.getOwnPropertyDescriptor(t,e);return null!=n?null==n.get&&null==n.set?n.value:r:void 0},thrower:function(t){throw t},isArray:s.isArray,asArray:w,notEnumerableProp:h,isPrimitive:f,isObject:function(t){return"function"==typeof t||"object"==typeof t&&null!==t},isError:y,canEvaluate:a,errorObj:u,tryCatch:function(t){return o=t,l},inherits:function(t,e){var r={}.hasOwnProperty;function n(){for(var n in this.constructor=t,this.constructor$=e,e.prototype)r.call(e.prototype,n)&&"$"!==n.charAt(n.length-1)&&(this[n+"$"]=e.prototype[n])}return n.prototype=e.prototype,t.prototype=new n,t.prototype},withAppended:function(t,e){var r,n=t.length,i=new Array(n+1);for(r=0;r10||t[0]>0}(),j.isNode&&j.toFastProperties(e);try{throw new Error}catch(t){j.lastLineError=t}n.exports=j},{"./es5":13}]},{},[4])(4),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,r(4),r(0),r(11).setImmediate)},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){if(!e.eol&&t)for(var r=0,n=t.length;r0?("string"==typeof e||s.objectMode||Object.getPrototypeOf(e)===c.prototype||(e=function(t){return c.from(t)}(e)),n?s.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):w(t,s,e,!0):s.ended?t.emit("error",new Error("stream.push() after EOF")):(s.reading=!1,s.decoder&&!r?(e=s.decoder.write(e),s.objectMode||0!==e.length?w(t,s,e,!1):S(t,s)):w(t,s,e,!1))):n||(s.reading=!1)),function(t){return!t.ended&&(t.needReadable||t.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=E?t=E:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function x(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(p("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?i.nextTick(j,t):j(t))}function j(t){p("emit readable"),t.emit("readable"),P(t)}function S(t,e){e.readingMore||(e.readingMore=!0,i.nextTick(R,t,e))}function R(t,e){for(var r=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):r=function(t,e,r){var n;return to.length?o.length:t;if(s===o.length?i+=o:i+=o.slice(0,t),0==(t-=s)){s===o.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(s));break}++n}return e.length-=n,i}(t,e):function(t,e){var r=c.allocUnsafe(t),n=e.head,i=1;for(n.data.copy(r),t-=n.data.length;n=n.next;){var o=n.data,s=t>o.length?o.length:t;if(o.copy(r,r.length-t,0,s),0==(t-=s)){s===o.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(s));break}++i}return e.length-=i,r}(t,e),n}(t,e.buffer,e.decoder),r);var r}function A(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,i.nextTick(F,e,t))}function F(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function L(t,e){for(var r=0,n=t.length;r=e.highWaterMark||e.ended))return p("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?A(this):x(this),null;if(0===(t=C(t,e))&&e.ended)return 0===e.length&&A(this),null;var n,i=e.needReadable;return p("need readable",i),(0===e.length||e.length-t0?O(t,e):null)?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&A(this)),null!==n&&this.emit("data",n),n},g.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},g.prototype.pipe=function(t,e){var r=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=t;break;case 1:o.pipes=[o.pipes,t];break;default:o.pipes.push(t)}o.pipesCount+=1,p("pipe count=%d opts=%j",o.pipesCount,e);var u=e&&!1===e.end||t===n.stdout||t===n.stderr?m:c;function c(){p("onend"),t.end()}o.endEmitted?i.nextTick(u):r.once("end",u),t.on("unpipe",function e(n,i){p("onunpipe"),n===r&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,p("cleanup"),t.removeListener("close",v),t.removeListener("finish",y),t.removeListener("drain",l),t.removeListener("error",_),t.removeListener("unpipe",e),r.removeListener("end",c),r.removeListener("end",m),r.removeListener("data",d),f=!0,!o.awaitDrain||t._writableState&&!t._writableState.needDrain||l())});var l=function(t){return function(){var e=t._readableState;p("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&a(t,"data")&&(e.flowing=!0,P(t))}}(r);t.on("drain",l);var f=!1,h=!1;function d(e){p("ondata"),h=!1,!1!==t.write(e)||h||((1===o.pipesCount&&o.pipes===t||o.pipesCount>1&&-1!==L(o.pipes,t))&&!f&&(p("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,h=!0),r.pause())}function _(e){p("onerror",e),m(),t.removeListener("error",_),0===a(t,"error")&&t.emit("error",e)}function v(){t.removeListener("finish",y),m()}function y(){p("onfinish"),t.removeListener("close",v),m()}function m(){p("unpipe"),r.unpipe(t)}return r.on("data",d),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?s(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",_),t.once("close",v),t.once("finish",y),t.emit("pipe",r),o.flowing||(p("pipe resume"),r.resume()),t},g.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var n=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function a(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function u(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function l(t,e){var r=(t.length-e)%3;return 0===r?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function f(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function h(t){return t.toString(this.encoding)}function p(t){return t&&t.length?this.write(t):""}e.StringDecoder=o,o.prototype.write=function(t){if(0===t.length)return"";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(i>0&&(t.lastNeed=i-1),i):--n=0?(i>0&&(t.lastNeed=i-2),i):--n=0?(i>0&&(2===i?i=0:t.lastNeed=i-3),i):0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString("utf8",e,n)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},function(t,e,r){"use strict";t.exports=o;var n=r(1),i=r(5);function o(t){if(!(this instanceof o))return new o(t);n.call(this,t),this._transformState={afterTransform:function(t,e){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit("error",new Error("write callback called multiple times"));r.writechunk=null,r.writecb=null,null!=e&&this.push(e),n(t);var i=this._readableState;i.reading=!1,(i.needReadable||i.length-1&&r.push(t[n]);return r},e.trimLeft=String.prototype.trimLeft?function(t){return t.trimLeft()}:function(t){return t.replace(/^\s+/,"")},e.trimRight=String.prototype.trimRight?function(t){return t.trimRight()}:function(t){return t.replace(/\s+$/,"")}}).call(this,r(3).Buffer)},function(t,e,r){"use strict";var n=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=function(t){function e(e,r,n){var i=t.call(this,"Error: "+e+". JSON Line number: "+r+(n?" near: "+n:""))||this;return i.err=e,i.line=r,i.extra=n,i.name="CSV Parse Error",i}return n(e,t),e.column_mismatched=function(t,r){return new e("column_mismatched",t,r)},e.unclosed_quote=function(t,r){return new e("unclosed_quote",t,r)},e.fromJSON=function(t){return new e(t.err,t.line,t.extra)},e.prototype.toJSON=function(){return{err:this.err,line:this.line,extra:this.extra}},e}(Error);e.default=i},function(t,e,r){var n=r(18),i=r(68),o=r(69),s=n?n.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":s&&s in Object(t)?i(t):o(t)}},function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},function(t,e,r){t.exports=r(33)},function(t,e,r){"use strict";var n=r(34),i=function(t,e){return new n.Converter(t,e)};i.csv=i,i.Converter=n.Converter,t.exports=i},function(t,e,r){"use strict";(function(t){var n=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var o=r(36),s=r(50),a=r(51),u=i(r(15)),c=r(52),l=r(105),f=function(e){function i(r,n){void 0===n&&(n={});var i=e.call(this,n)||this;return i.options=n,i.params=s.mergeParams(r),i.runtime=a.initParseRuntime(i),i.result=new l.Result(i),i.processor=new c.ProcessorLocal(i),i.once("error",function(e){t(function(){i.result.processError(e),i.emit("done",e)})}),i.once("done",function(){i.processor.destroy()}),i}return n(i,e),i.prototype.preRawData=function(t){return this.runtime.preRawDataHook=t,this},i.prototype.preFileLine=function(t){return this.runtime.preFileLineHook=t,this},i.prototype.subscribe=function(t,e,r){return this.parseRuntime.subscribe={onNext:t,onError:e,onCompleted:r},this},i.prototype.fromFile=function(t,e){var n=this,i=r(!function(){var t=new Error("Cannot find module 'fs'");throw t.code="MODULE_NOT_FOUND",t}());return i.exists(t,function(r){r?i.createReadStream(t,e).pipe(n):n.emit("error",new Error("File does not exist. Check to make sure the file path to your csv is correct."))}),this},i.prototype.fromStream=function(t){return t.pipe(this),this},i.prototype.fromString=function(t){t.toString();var e=new o.Readable,r=0;return e._read=function(e){if(r>=t.length)this.push(null);else{var n=t.substr(r,e);this.push(n),r+=e}},this.fromStream(e)},i.prototype.then=function(t,e){var r=this;return new u.default(function(n,i){r.parseRuntime.then={onfulfilled:function(e){n(t?t(e):e)},onrejected:function(t){e?n(e(t)):i(t)}}})},Object.defineProperty(i.prototype,"parseParam",{get:function(){return this.params},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"parseRuntime",{get:function(){return this.runtime},enumerable:!0,configurable:!0}),i.prototype._transform=function(t,e,r){var n=this;this.processor.process(t).then(function(t){if(t.length>0)return n.runtime.started=!0,n.result.processResult(t)}).then(function(){n.emit("drained"),r()},function(t){n.runtime.hasError=!0,n.runtime.error=t,n.emit("error",t),r()})},i.prototype._flush=function(t){var e=this;this.processor.flush().then(function(t){if(t.length>0)return e.result.processResult(t)}).then(function(){e.processEnd(t)},function(r){e.emit("error",r),t()})},i.prototype.processEnd=function(t){this.result.endProcess(),this.emit("done"),t()},Object.defineProperty(i.prototype,"parsedLineNumber",{get:function(){return this.runtime.parsedLineNumber},enumerable:!0,configurable:!0}),i}(o.Transform);e.Converter=f}).call(this,r(11).setImmediate)},function(t,e,r){(function(t,e){!function(t,r){"use strict";if(!t.setImmediate){var n,i=1,o={},s=!1,a=t.document,u=Object.getPrototypeOf&&Object.getPrototypeOf(t);u=u&&u.setTimeout?u:t,"[object process]"==={}.toString.call(t.process)?n=function(t){e.nextTick(function(){l(t)})}:function(){if(t.postMessage&&!t.importScripts){var e=!0,r=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=r,e}}()?function(){var e="setImmediate$"+Math.random()+"$",r=function(r){r.source===t&&"string"==typeof r.data&&0===r.data.indexOf(e)&&l(+r.data.slice(e.length))};t.addEventListener?t.addEventListener("message",r,!1):t.attachEvent("onmessage",r),n=function(r){t.postMessage(e+r,"*")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){l(t.data)},n=function(e){t.port2.postMessage(e)}}():a&&"onreadystatechange"in a.createElement("script")?function(){var t=a.documentElement;n=function(e){var r=a.createElement("script");r.onreadystatechange=function(){l(e),r.onreadystatechange=null,t.removeChild(r),r=null},t.appendChild(r)}}():n=function(t){setTimeout(l,0,t)},u.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),r=0;r0?n-4:n,f=0;f>16&255,a[u++]=e>>8&255,a[u++]=255&e;return 2===s&&(e=i[t.charCodeAt(f)]<<2|i[t.charCodeAt(f+1)]>>4,a[u++]=255&e),1===s&&(e=i[t.charCodeAt(f)]<<10|i[t.charCodeAt(f+1)]<<4|i[t.charCodeAt(f+2)]>>2,a[u++]=e>>8&255,a[u++]=255&e),a},e.fromByteArray=function(t){for(var e,r=t.length,i=r%3,o=[],s=0,a=r-i;sa?a:s+16383));return 1===i?(e=t[r-1],o.push(n[e>>2]+n[e<<4&63]+"==")):2===i&&(e=(t[r-2]<<8)+t[r-1],o.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+"=")),o.join("")};for(var n=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,u=s.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function l(t){return n[t>>18&63]+n[t>>12&63]+n[t>>6&63]+n[63&t]}function f(t,e,r){for(var n,i=[],o=e;o>1,l=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,o=p&(1<<-l)-1,p>>=-l,l+=a;l>0;o=256*o+t[e+f],f+=h,l-=8);for(s=o&(1<<-l)-1,o>>=-l,l+=n;l>0;s=256*s+t[e+f],f+=h,l-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,n),o-=c}return(p?-1:1)*s*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var s,a,u,c=8*o-i-1,l=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,d=n?1:-1,_=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=l):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),(e+=s+f>=1?h/u:h*Math.pow(2,1-f))*u>=2&&(s++,u/=2),s+f>=l?(a=0,s=l):s+f>=1?(a=(e*u-1)*Math.pow(2,i),s+=f):(a=e*Math.pow(2,f-1)*Math.pow(2,i),s=0));i>=8;t[r+p]=255&a,p+=d,a/=256,i-=8);for(s=s<0;t[r+p]=255&s,p+=d,s/=256,c-=8);t[r+p-d]|=128*_}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e){},function(t,e,r){"use strict";var n=r(7).Buffer,i=r(43);function o(t,e,r){t.copy(e,r)}t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r},t.prototype.concat=function(t){if(0===this.length)return n.alloc(0);if(1===this.length)return this.head.data;for(var e=n.allocUnsafe(t>>>0),r=this.head,i=0;r;)o(r.data,e,i),i+=r.data.length,r=r.next;return e},t}(),i&&i.inspect&&i.inspect.custom&&(t.exports.prototype[i.inspect.custom]=function(){var t=i.inspect({length:this.length});return this.constructor.name+" "+t})},function(t,e){},function(t,e,r){(function(e){function r(t){try{if(!e.localStorage)return!1}catch(t){return!1}var r=e.localStorage[t];return null!=r&&"true"===String(r).toLowerCase()}t.exports=function(t,e){if(r("noDeprecation"))return t;var n=!1;return function(){if(!n){if(r("throwDeprecation"))throw new Error(e);r("traceDeprecation")?console.trace(e):console.warn(e),n=!0}return t.apply(this,arguments)}}}).call(this,r(0))},function(t,e,r){"use strict";t.exports=o;var n=r(27),i=r(5);function o(t){if(!(this instanceof o))return new o(t);n.call(this,t)}i.inherits=r(2),i.inherits(o,n),o.prototype._transform=function(t,e,r){r(null,t)}},function(t,e,r){t.exports=r(14)},function(t,e,r){t.exports=r(1)},function(t,e,r){t.exports=r(13).Transform},function(t,e,r){t.exports=r(13).PassThrough},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.mergeParams=function(t){var e={delimiter:",",ignoreColumns:void 0,includeColumns:void 0,quote:'"',trim:!0,checkType:!1,ignoreEmpty:!1,noheader:!1,headers:void 0,flatKeys:!1,maxRowLength:0,checkColumn:!1,escape:'"',colParser:{},eol:void 0,alwaysSplitAtEOL:!1,output:"json",nullObject:!1,downstreamFormat:"line",needEmitAll:!0};for(var r in t||(t={}),t)t.hasOwnProperty(r)&&(Array.isArray(t[r])?e[r]=[].concat(t[r]):e[r]=t[r]);return e}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.initParseRuntime=function(t){var e=t.parseParam,r={needProcessIgnoreColumn:!1,needProcessIncludeColumn:!1,selectedColumns:void 0,ended:!1,hasError:!1,error:void 0,delimiter:t.parseParam.delimiter,eol:t.parseParam.eol,columnConv:[],headerType:[],headerTitle:[],headerFlag:[],headers:void 0,started:!1,parsedLineNumber:0,columnValueSetter:[]};return e.ignoreColumns&&(r.needProcessIgnoreColumn=!0),e.includeColumns&&(r.needProcessIncludeColumn=!0),r}},function(t,e,r){"use strict";(function(t){var n=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var o=r(53),s=i(r(15)),a=r(54),u=i(r(16)),c=r(57),l=r(28),f=r(58),h=i(r(59)),p=i(r(29)),d=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.rowSplit=new f.RowSplit(t.converter),t.eolEmitted=!1,t._needEmitEol=void 0,t.headEmitted=!1,t._needEmitHead=void 0,t}return n(r,e),r.prototype.flush=function(){var t=this;if(this.runtime.csvLineBuffer&&this.runtime.csvLineBuffer.length>0){var e=this.runtime.csvLineBuffer;return this.runtime.csvLineBuffer=void 0,this.process(e,!0).then(function(e){return t.runtime.csvLineBuffer&&t.runtime.csvLineBuffer.length>0?s.default.reject(p.default.unclosed_quote(t.runtime.parsedLineNumber,t.runtime.csvLineBuffer.toString())):s.default.resolve(e)})}return s.default.resolve([])},r.prototype.destroy=function(){return s.default.resolve()},Object.defineProperty(r.prototype,"needEmitEol",{get:function(){return void 0===this._needEmitEol&&(this._needEmitEol=this.converter.listeners("eol").length>0),this._needEmitEol},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"needEmitHead",{get:function(){return void 0===this._needEmitHead&&(this._needEmitHead=this.converter.listeners("header").length>0),this._needEmitHead},enumerable:!0,configurable:!0}),r.prototype.process=function(t,e){var r,n=this;return void 0===e&&(e=!1),r=e?t.toString():a.prepareData(t,this.converter.parseRuntime),s.default.resolve().then(function(){return n.runtime.preRawDataHook?n.runtime.preRawDataHook(r):r}).then(function(t){return t&&t.length>0?n.processCSV(t,e):s.default.resolve([])})},r.prototype.processCSV=function(t,e){var r=this,n=this.params,i=this.runtime;i.eol||u.default(t,i),this.needEmitEol&&!this.eolEmitted&&i.eol&&(this.converter.emit("eol",i.eol),this.eolEmitted=!0),n.ignoreEmpty&&!i.started&&(t=l.trimLeft(t));var o=c.stringToLines(t,i);return e?(o.lines.push(o.partial),o.partial=""):this.prependLeftBuf(l.bufFromString(o.partial)),o.lines.length>0?(i.preFileLineHook?this.runPreLineHook(o.lines):s.default.resolve(o.lines)).then(function(t){return i.started||r.runtime.headers?r.processCSVBody(t):r.processDataWithHead(t)}):s.default.resolve([])},r.prototype.processDataWithHead=function(t){if(this.params.noheader)this.params.headers?this.runtime.headers=this.params.headers:this.runtime.headers=[];else{for(var e="",r=[];t.length;){var n=e+t.shift(),i=this.rowSplit.parse(n);if(i.closed){r=i.cells,e="";break}e=n+u.default(n,this.runtime)}if(this.prependLeftBuf(l.bufFromString(e)),0===r.length)return[];this.params.headers?this.runtime.headers=this.params.headers:this.runtime.headers=r}return(this.runtime.needProcessIgnoreColumn||this.runtime.needProcessIncludeColumn)&&this.filterHeader(),this.needEmitHead&&!this.headEmitted&&(this.converter.emit("header",this.runtime.headers),this.headEmitted=!0),this.processCSVBody(t)},r.prototype.filterHeader=function(){if(this.runtime.selectedColumns=[],this.runtime.headers){for(var t=this.runtime.headers,e=0;e=e.length)i();else if(r.preFileLineHook){var o=e[n],s=r.preFileLineHook(o,r.parsedLineNumber+n);if(n++,s&&s.then)s.then(function(o){e[n-1]=o,t(e,r,n,i)});else{for(e[n-1]=s;n0?t.concat([r.csvLineBuffer,e]):e}(e,r);r.csvLineBuffer=void 0;var o=function(t,e){var r=t.length-1;if(0!=(128&t[r])){for(;128==(192&t[r]);)r--;r--}return r!=t.length-1?(e.csvLineBuffer=t.slice(r+1),t.slice(0,r+1)):t}(n,r).toString("utf8");return!1===r.started?i.default(o):o}}).call(this,r(3).Buffer)},function(t,e,r){"use strict";(function(e){var n=r(56);t.exports=function(t){return"string"==typeof t&&65279===t.charCodeAt(0)?t.slice(1):e.isBuffer(t)&&n(t)&&239===t[0]&&187===t[1]&&191===t[2]?t.slice(3):t}}).call(this,r(3).Buffer)},function(t,e){t.exports=function(t){for(var e=0;e0),this._needEmitDelimiter},enumerable:!0,configurable:!0}),t.prototype.parse=function(t){if(0===t.length||this.conv.parseParam.ignoreEmpty&&0===t.trim().length)return{cells:[],closed:!0};var e=this.quote,r=this.trim;this.escape,(this.conv.parseRuntime.delimiter instanceof Array||"auto"===this.conv.parseRuntime.delimiter.toLowerCase())&&(this.conv.parseRuntime.delimiter=this.getDelimiter(t)),this.needEmitDelimiter&&!this.delimiterEmitted&&(this.conv.emit("delimiter",this.conv.parseRuntime.delimiter),this.delimiterEmitted=!0);var n=this.conv.parseRuntime.delimiter,i=t.split(n);if("off"===e){if(r)for(var o=0;or&&(n=e,r=i)}),n},t.prototype.isQuoteOpen=function(t){var e=this.quote,r=this.escape;return t[0]===e&&(t[1]!==e||t[1]===r&&(t[2]===e||2===t.length))},t.prototype.isQuoteClose=function(t){var e=this.quote,r=this.escape;this.conv.parseParam.trim&&(t=o.trimRight(t));for(var n=0,i=t.length-1;t[i]===e||t[i]===r;)i--,n++;return n%2!=0},t.prototype.escapeQuote=function(t){var e="es|"+this.quote+"|"+this.escape;void 0===this.cachedRegExp[e]&&(this.cachedRegExp[e]=new RegExp("\\"+this.escape+"\\"+this.quote,"g"));var r=this.cachedRegExp[e];return t.replace(r,this.quote)},t.prototype.parseMultiLines=function(t){for(var e=[],r="";t.length;){var n=r+t.shift(),s=this.parse(n);0===s.cells.length&&this.conv.parseParam.ignoreEmpty||(s.closed||this.conv.parseParam.alwaysSplitAtEOL?(this.conv.parseRuntime.selectedColumns?e.push(o.filterArray(s.cells,this.conv.parseRuntime.selectedColumns)):e.push(s.cells),r=""):r=n+(i.default(n,this.conv.parseRuntime)||"\n"))}return{rowsCells:e,partial:r}},t}();e.RowSplit=a},function(t,e,r){"use strict";var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var i=n(r(29)),o=n(r(60)),s=/^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;function a(t,e,r){if(e.parseParam.checkColumn&&e.parseRuntime.headers&&t.length!==e.parseRuntime.headers.length)throw i.default.column_mismatched(e.parseRuntime.parsedLineNumber+r);return function(t,e,r){for(var n=!1,i={},o=0,s=t.length;o-1){for(var o=e.split("."),s=!0;o.length>0;)if(0===o.shift().length){s=!1;break}!s||n.parseParam.colParser[e]&&n.parseParam.colParser[e].flat?n.parseRuntime.columnValueSetter[i]=f:n.parseRuntime.columnValueSetter[i]=h}else n.parseRuntime.columnValueSetter[i]=f;!0===n.parseParam.nullObject&&"null"===r&&(r=null),n.parseRuntime.columnValueSetter[i](t,e,r)}function f(t,e,r){t[e]=r}function h(t,e,r){o.default(t,e,r)}function p(t,e,r,n){return n.parseRuntime.headerType[r]?n.parseRuntime.headerType[r]:e.indexOf("number#!")>-1?n.parseRuntime.headerType[r]=d:e.indexOf("string#!")>-1?n.parseRuntime.headerType[r]=_:n.parseParam.checkType?n.parseRuntime.headerType[r]=v:n.parseRuntime.headerType[r]=_}function d(t){var e=parseFloat(t);return isNaN(e)?t:e}function _(t){return t.toString()}function v(t){var e=t.trim();return""===e?_(t):s.test(e)?d(t):5===e.length&&"false"===e.toLowerCase()||4===e.length&&"true"===e.toLowerCase()?function(t){var e=t.trim();return 5!==e.length||"false"!==e.toLowerCase()}(t):"{"===e[0]&&"}"===e[e.length-1]||"["===e[0]&&"]"===e[e.length-1]?function(t){try{return JSON.parse(t)}catch(e){return t}}(t):_(t)}},function(t,e,r){var n=r(61);t.exports=function(t,e,r){return null==t?t:n(t,e,r)}},function(t,e,r){var n=r(62),i=r(74),o=r(103),s=r(20),a=r(104);t.exports=function(t,e,r,u){if(!s(t))return t;for(var c=-1,l=(e=i(e,t)).length,f=l-1,h=t;null!=h&&++c-1}},function(t,e,r){var n=r(9);t.exports=function(t,e){var r=this.__data__,i=n(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this}},function(t,e,r){var n=r(17)(r(19),"Map");t.exports=n},function(t,e,r){var n=r(10);t.exports=function(t){var e=n(this,t).delete(t);return this.size-=e?1:0,e}},function(t,e){t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},function(t,e,r){var n=r(10);t.exports=function(t){return n(this,t).get(t)}},function(t,e,r){var n=r(10);t.exports=function(t){return n(this,t).has(t)}},function(t,e,r){var n=r(10);t.exports=function(t,e){var r=n(this,t),i=r.size;return r.set(t,e),this.size+=r.size==i?0:1,this}},function(t,e,r){var n=r(101);t.exports=function(t){return null==t?"":n(t)}},function(t,e,r){var n=r(18),i=r(102),o=r(21),s=r(22),a=n?n.prototype:void 0,u=a?a.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(o(e))return i(e,t)+"";if(s(e))return u?u.call(e):"";var r=e+"";return"0"==r&&1/e==-1/0?"-0":r}},function(t,e){t.exports=function(t,e){for(var r=-1,n=null==t?0:t.length,i=Array(n);++r-1&&t%1==0&&t0||this.converter.listeners("readable").length>0),this._needPushDownstream},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"needEmitAll",{get:function(){return!!this.converter.parseRuntime.then&&this.converter.parseParam.needEmitAll},enumerable:!0,configurable:!0}),t.prototype.processResult=function(t){var e=this,r=this.converter.parseRuntime.parsedLineNumber;return this.needPushDownstream&&"array"===this.converter.parseParam.downstreamFormat&&0===r&&a(this.converter,"["+o.EOL),new i.default(function(r,n){e.needEmitLine?function t(e,r,n,i,o){if(n>=e.length)o();else if(r.parseRuntime.subscribe&&r.parseRuntime.subscribe.onNext){var s=r.parseRuntime.subscribe.onNext,u=e[n],c=s(u,r.parseRuntime.parsedLineNumber+n);if(n++,c&&c.then)c.then(function(){!function(e,r,n,i,o,s,u){o&&a(n,u),t(e,n,i,o,s)}(e,0,r,n,i,o,u)},o);else{for(i&&a(r,u);n141 Commits / 70357++ / 66412-- -77.05% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Matthias Lienau](https://github.com/atufkas) -9 Commits / 74++ / 45-- -04.92% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Keita Akutsu](https://github.com/kakts) -4 Commits / 821++ / 784-- -02.19% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Ron Korving](https://github.com/ronkorving) -3 Commits / 3++ / 3-- -01.64% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Sean Lang](https://github.com/slang800) -2 Commits / 2++ / 1-- -01.09% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[null](https://github.com/nbelakovski) -2 Commits / 2++ / 2-- -01.09% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Blake Blackshear](https://github.com/blakeblackshear) -2 Commits / 8++ / 8-- -01.09% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Dimitri Kennedy](https://github.com/roodboi) -2 Commits / 3++ / 3-- -01.09% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Jimi Ford](https://github.com/JimiHFord) -1 Commits / 5++ / 5-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Alec Fenichel](https://github.com/fenichelar) -1 Commits / 1++ / 1-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Bruce Johnson](https://github.com/brucejo75) -1 Commits / 36++ / 1-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Zsolt R. Molnar](https://github.com/molnarzs) -1 Commits / 40++ / 2-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Ionică Bizău (Johnny B.)](https://github.com/IonicaBizau) -1 Commits / 98++ / 86-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[null](https://github.com/markwithers) -1 Commits / 1++ / 1-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Trang](https://github.com/trangtungn) -1 Commits / 6++ / 1-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[null](https://github.com/jondayft) -1 Commits / 18++ / 0-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Robert Porter](https://github.com/colarob) -1 Commits / 64++ / 21-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Bert Verhelst](https://github.com/bertyhell) -1 Commits / 17++ / 0-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Jeff Johnson](https://github.com/jeffcjohnson) -1 Commits / 1++ / 1-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Richard Pringle](https://github.com/richardpringle) -1 Commits / 1++ / 1-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[José Expósito](https://github.com/JoseExposito) -1 Commits / 9++ / 3-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Daniel Cohen](https://github.com/dcohenb) -1 Commits / 1++ / 6-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Jessica Good](https://github.com/jessicagood) -1 Commits / 8++ / 5-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Amila Welihinda](https://github.com/amilajack) -1 Commits / 2++ / 1-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Dane Petersen](https://github.com/thegreatsunra) -1 Commits / 18920++ / 8429-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-[Hocine Moukaideche](https://github.com/Off76) -1 Commits / 1++ / 1-- -00.55% ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

-###### [Generated](https://github.com/jakeleboeuf/contributor) on Sat Sep 30 2017 19:56:19 GMT+0100 (IST) \ No newline at end of file diff --git a/node_modules/csvtojson/coverage/CSVError.test.ts.html b/node_modules/csvtojson/coverage/CSVError.test.ts.html deleted file mode 100644 index 4d49457..0000000 --- a/node_modules/csvtojson/coverage/CSVError.test.ts.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - Code coverage report for CSVError.test.ts - - - - - - - -
-
-

- All files CSVError.test.ts -

-
-
- 100% - Statements - 1/1 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 1/1 -
-
- 100% - Lines - 1/1 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6  -  -1x -  -  - 
import CSVError from "./CSVError";
-import assert from "assert";
-describe("CSVError",()=>{
-  it ("should toString()",()=>{
-  })
-})
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/CSVError.ts.html b/node_modules/csvtojson/coverage/CSVError.ts.html deleted file mode 100644 index f6e3ccf..0000000 --- a/node_modules/csvtojson/coverage/CSVError.ts.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - Code coverage report for CSVError.ts - - - - - - - -
-
-

- All files CSVError.ts -

-
-
- 94.12% - Statements - 16/17 -
-
- 75% - Branches - 3/4 -
-
- 83.33% - Functions - 5/6 -
-
- 93.75% - Lines - 15/16 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -291x -1x -1x -2x -  -1x -5x -  -1x -1x -  -  -8x -8x -8x -  -8x -8x -  -1x -  -  -  -  -  -  -  -1x - 
var util = require("util");
-export default class CSVError extends Error {
-  static column_mismatched(index: number, extra?: string) {
-    return new CSVError("column_mismatched", index, extra);
-  }
-  static unclosed_quote(index: number, extra?: string) {
-    return new CSVError("unclosed_quote", index, extra);
-  }
-  static fromJSON(obj) {
-    return new CSVError(obj.err, obj.line, obj.extra);
-  }
-  constructor(
-    public err: string,
-    public line: number,
-    public extra?: string
-  ) {
-    super("Error: " + err + ". JSON Line number: " + line + (extra ? " near: " + extra : ""));
-    this.name = "CSV Parse Error";
-  }
-  toJSON() {
-    return {
-      err: this.err,
-      line: this.line,
-      extra: this.extra
-    }
-  }
- 
-}
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/Converter.ts.html b/node_modules/csvtojson/coverage/Converter.ts.html deleted file mode 100644 index c542c80..0000000 --- a/node_modules/csvtojson/coverage/Converter.ts.html +++ /dev/null @@ -1,618 +0,0 @@ - - - - Code coverage report for Converter.ts - - - - - - - -
-
-

- All files Converter.ts -

-
-
- 100% - Statements - 98/98 -
-
- 100% - Branches - 18/18 -
-
- 100% - Functions - 29/29 -
-
- 100% - Lines - 92/92 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -1841x -1x -1x -1x -  -  -  -  -  -  -1x -1x -1x -  -  -1x -1x -3x -3x -  -1x -2x -2x -  -1x -  -  -  -34x -  -  -  -  -34x -  -8x -8x -  -  -  -  -  -  -8x -8x -7x -7x -  -1x -  -  -8x -  -1x -46x -46x -  -1x -30x -30x -30x -30x -65x -30x -  -35x -35x -35x -  -  -30x -  -86x -86x -86x -  -79x -78x -  -1x -  -  -  -5x -4x -  -1x -  -  -  -  -  -1x -166228x -  -1x -442655x -  -  -  -  -  -356x -120x -120x -120x -120x -120x -37x -  -83x -  -120x -  -  -9x -9x -9x -  -  -  -120x -113x -  -  -120x -  -217x -217x -  -215x -81x -81x -  -  -  -215x -215x -  -2x -2x -2x -2x -  -  -110x -110x -  -104x -66x -  -  -  -104x -  -5x -5x -  -  -1x -104x -104x -104x -  -1x -1x -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { Transform, TransformOptions, Readable } from "stream";
-import { CSVParseParam, mergeParams } from "./Parameters";
-import { ParseRuntime, initParseRuntime } from "./ParseRuntime";
-import P from "bluebird";
-import { stringToLines } from "./fileline";
-import { map } from "lodash/map";
-import { RowSplit, RowSplitResult } from "./rowSplit";
-import getEol from "./getEol";
-import lineToJson, { JSONResult } from "./lineToJson";
-import { Processor, ProcessLineResult } from "./Processor";
-import { ProcessorFork } from "./ProcessFork";
-import { ProcessorLocal } from "./ProcessorLocal";
-import { Result } from "./Result";
-import CSVError from "./CSVError";
-import { bufFromString } from "./util";
-export class Converter extends Transform {
-  preRawData(onRawData: PreRawDataCallback):Converter {
-    this.runtime.preRawDataHook = onRawData;
-    return this;
-  }
-  preFileLine(onFileLine: PreFileLineCallback):Converter {
-    this.runtime.preFileLineHook = onFileLine;
-    return this;
-  }
-  subscribe(
-    onNext?: (data: any, lineNumber: number) => void | PromiseLike<void>,
-    onError?: (err: CSVError) => void,
-    onCompleted?: () => void): Converter {
-    this.parseRuntime.subscribe = {
-      onNext,
-      onError,
-      onCompleted
-    }
-    return this;
-  }
-  fromFile(filePath: string, options?: string | CreateReadStreamOption | undefined): Converter {
-    const fs = require("fs");
-    // var rs = null;
-    // this.wrapCallback(cb, function () {
-    //   if (rs && rs.destroy) {
-    //     rs.destroy();
-    //   }
-    // });
-    fs.exists(filePath, (exist) => {
-      if (exist) {
-        const rs = fs.createReadStream(filePath, options);
-        rs.pipe(this);
-      } else {
-        this.emit('error', new Error("File does not exist. Check to make sure the file path to your csv is correct."));
-      }
-    });
-    return this;
-  }
-  fromStream(readStream: Readable): Converter {
-    readStream.pipe(this);
-    return this;
-  }
-  fromString(csvString: string): Converter {
-    const csv = csvString.toString();
-    const read = new Readable();
-    let idx = 0;
-    read._read = function (size) {
-      if (idx >= csvString.length) {
-        this.push(null);
-      } else {
-        const str = csvString.substr(idx, size);
-        this.push(str);
-        idx += size;
-      }
-    }
-    return this.fromStream(read);
-  }
-  then<TResult1 = any[], TResult2 = never>(onfulfilled?: (value: any[]) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2> {
-    return new P((resolve, reject) => {
-      this.parseRuntime.then = {
-        onfulfilled: (value: any[]) => {
-          if (onfulfilled) {
-            resolve(onfulfilled(value));
-          } else {
-            resolve(value as any);
-          }
-        },
-        onrejected: (err: Error) => {
-          if (onrejected) {
-            resolve(onrejected(err));
-          } else {
-            reject(err);
-          }
-        }
-      }
-    });
-  }
-  public get parseParam(): CSVParseParam {
-    return this.params;
-  }
-  public get parseRuntime(): ParseRuntime {
-    return this.runtime;
-  }
-  private params: CSVParseParam;
-  private runtime: ParseRuntime;
-  private processor: Processor;
-  private result: Result;
-  constructor(param?: Partial<CSVParseParam>, public options: TransformOptions = {}) {
-    super(options);
-    this.params = mergeParams(param);
-    this.runtime = initParseRuntime(this);
-    this.result = new Result(this);
-    if (this.params.fork) {
-      this.processor = new ProcessorFork(this);
-    } else {
-      this.processor = new ProcessorLocal(this);
-    }
-    this.once("error", (err: any) => {
-      // console.log("BBB");
-      
-      setTimeout(() => {
-        this.result.processError(err);
-        this.emit("done", err);
-      },0);
- 
-    });
-    this.once("done",()=>{
-      this.processor.destroy();
-    })
- 
-    return this;
-  }
-  _transform(chunk: any, encoding: string, cb: Function) {
-    this.processor.process(chunk)
-      .then((result) => {
-        if (result.length > 0) {
-          this.runtime.started = true;
-          return this.result.processResult(result);
-        }
-      })
-      .then(() => {
-        this.emit("drained");
-        cb();
-      }, (error) => {
-        this.runtime.hasError = true;
-        this.runtime.error = error;
-        this.emit("error", error);
-        cb();
-      });
-  }
-  _flush(cb: Function) {
-    this.processor.flush()
-    .then((data)=>{
-      if (data.length>0){
-        return this.result.processResult(data);
-      }
-    })
-    .then(()=>{
-      this.processEnd(cb);
-    },(err)=>{
-      this.emit("error",err);
-      cb();
-    })
-  }
-  private processEnd(cb) {
-    this.result.endProcess();
-    this.emit("done");
-    cb();
-  }
-  get parsedLineNumber(): number {
-    return this.runtime.parsedLineNumber;
-  }
-}
-export interface CreateReadStreamOption {
-  flags?: string;
-  encoding?: string;
-  fd?: number;
-  mode?: number;
-  autoClose?: boolean;
-  start?: number;
-  end?: number;
-  highWaterMark?: number;
-}
-export type CallBack = (err: Error, data: Array<any>) => void;
- 
- 
-export type PreFileLineCallback = (line: string, lineNumber: number) => string | PromiseLike<string>;
-export type PreRawDataCallback = (csvString: string) => string | PromiseLike<string>;
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/Parameters.ts.html b/node_modules/csvtojson/coverage/Parameters.ts.html deleted file mode 100644 index 5d684e7..0000000 --- a/node_modules/csvtojson/coverage/Parameters.ts.html +++ /dev/null @@ -1,420 +0,0 @@ - - - - Code coverage report for Parameters.ts - - - - - - - -
-
-

- All files Parameters.ts -

-
-
- 100% - Statements - 10/10 -
-
- 83.33% - Branches - 5/6 -
-
- 100% - Functions - 1/1 -
-
- 100% - Lines - 10/10 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -83x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -83x -30x -  -83x -62x -62x -6x -  -56x -  -  -  -83x -  -  - 
export interface CSVParseParam {
-  /**
-   *   delimiter used for seperating columns. Use "auto" if delimiter is unknown in advance, in this case, delimiter will be auto-detected (by best attempt). Use an array to give a list of potential delimiters e.g. [",","|","$"]. default: ","
-   */
-  delimiter: string | string[];
-  /**
-   *  This parameter instructs the parser to ignore columns as specified by an array of column indexes or header names. Example: [1,3,5,"title","age"] will ignore columns 1, 3, 5, title column and age column and will not return them in the JSON output
-   */
-  ignoreColumns?: RegExp;
-  /**
-   *  This parameter instructs the parser to include only those columns as specified by an array of column indexes or header names. Example: [0,2,3,"name"] will parse and include only columns 0, 2, 3, and column with header "name" in the JSON output.
-   */
-  includeColumns?: RegExp;
-  /**
-   *  If a column contains delimiter, it is able to use quote character to surround the column content. e.g. "hello, world" wont be split into two columns while parsing. Set to "off" will ignore all quotes. default: " (double quote)
-   */
-  quote: string;
-  /**
-   *  Indicate if parser trim off spaces surrounding column content. e.g. " content " will be trimmed to "content". Default: true
-   */
-  trim: boolean;
-  /**
-   *  This parameter turns on and off whether check field type. Default is false. 
-   */
-  checkType: boolean;
-  /**
-   *  Ignore the empty value in CSV columns. If a column value is not given, set this to true to skip them. Default: false.
-   */
-  ignoreEmpty: boolean;
-  /**
-   *  Delegate parsing work to another process.
-   */
-  fork: boolean;
-  /**
-   *  Indicating csv data has no header row and first row is data row. Default is false.
-   */
-  noheader: boolean;
-  /**
-   *  An array to specify the headers of CSV data. If --noheader is false, this value will override CSV header row. Default: null. Example: ["my field","name"].
-   */
-  headers?: string[];
-  /**
-   *  Don't interpret dots (.) and square brackets in header fields as nested object or array identifiers at all (treat them like regular characters for JSON field identifiers). Default: false.
-   */
-  flatKeys: boolean;
-  /**
-   *  the max character a csv row could have. 0 means infinite. If max number exceeded, parser will emit "error" of "row_exceed". if a possibly corrupted csv data provided, give it a number like 65535 so the parser wont consume memory. default: 0
-   */
-  maxRowLength: number;
-  /**
-   *  whether check column number of a row is the same as headers. If column number mismatched headers number, an error of "mismatched_column" will be emitted.. default: false
-   */
-  checkColumn: boolean;
-  /**
-   *  escape character used in quoted column. Default is double quote (") according to RFC4108. Change to back slash (\) or other chars for your own case.
-   */
-  escape: string;
-  /**
-   *   Allows override parsing logic for a specific column. It accepts a JSON object with fields like: headName: <String | Function> . e.g. {field1:'number'} will use built-in number parser to convert value of the field1 column to number. Another example {"name":nameProcessFunc} will use specified function to parse the value.
-   */
-  colParser: {
-    [key: string]: string | CellParser | ColumnParam
-  };
-  /**
-   *  End of line character. If omitted, parser will attempt to retrieve it from the first chunks of CSV data
-   */
-  eol?: string;
-  /**
-   *  Always interpret each line (as defined by eol) as a row. This will prevent eol characters from being used within a row (even inside a quoted field). This ensures that misplaced quotes only break on row, and not all ensuing rows.
-   */
-  alwaysSplitAtEOL: boolean;
-  output: "json" | "csv" | "line";
-}
- 
-export type CellParser = (item: string, head: string, resultRow: any, row: string[], columnIndex: number) => any;
- 
-export interface ColumnParam {
-  flat?: boolean;
-  cellParser?: string | CellParser;
-}
- 
-export function mergeParams(params?: Partial<CSVParseParam>): CSVParseParam {
-  const defaultParam: CSVParseParam = {
-    delimiter: ',',
-    ignoreColumns: undefined,
-    includeColumns: undefined,
-    quote: '"',
-    trim: true,
-    checkType: false,
-    ignoreEmpty: false,
-    fork: false,
-    noheader: false,
-    headers: undefined,
-    flatKeys: false,
-    maxRowLength: 0,
-    checkColumn: false,
-    escape: '"',
-    colParser: {},
-    eol: undefined,
-    alwaysSplitAtEOL: false,
-    output: "json"
-  }
-  if (!params) {
-    params = {};
-  }
-  for (let key in params) {
-    Eif (params.hasOwnProperty(key)) {
-      if (Array.isArray(params[key])) {
-        defaultParam[key] = [].concat(params[key]);
-      } else {
-        defaultParam[key] = params[key];
-      }
-    }
-  }
-  return defaultParam;
-}
- 
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/ParseRuntime.ts.html b/node_modules/csvtojson/coverage/ParseRuntime.ts.html deleted file mode 100644 index b6fe267..0000000 --- a/node_modules/csvtojson/coverage/ParseRuntime.ts.html +++ /dev/null @@ -1,336 +0,0 @@ - - - - Code coverage report for ParseRuntime.ts - - - - - - - -
-
-

- All files ParseRuntime.ts -

-
-
- 100% - Statements - 8/8 -
-
- 100% - Branches - 4/4 -
-
- 100% - Functions - 1/1 -
-
- 100% - Lines - 8/8 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -83x -83x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -83x -2x -  -83x -4x -  -83x - 
import { CSVParseParam, CellParser } from "./Parameters";
-import { Converter, PreRawDataCallback, PreFileLineCallback } from "./Converter";
-import { ChildProcess } from "child_process";
-import CSVError from "./CSVError";
- 
-export interface ParseRuntime {
-  /**
-   * If need convert ignoreColumn from column name(string) to column index (number). Parser needs column index.
-   */
-  needProcessIgnoreColumn: boolean;
-  /**
-   * If need convert includeColumn from column name(string) to column index (number). Parser needs column index.
-   */
-  needProcessIncludeColumn: boolean;
-  /**
-   * the indexes of columns to reserve, undefined means reserve all, [] means hide all
-   */
-  selectedColumns?: number[];
-  ended: boolean;
-  hasError: boolean;
-  error?: Error;
-  /**
-   * Inferred delimiter
-   */
-  delimiter: string | string[];
-  /**
-   * Inferred eol
-   */
-  eol?: string;
-  /**
-   * Converter function for a column. Populated at runtime.
-   */
-  columnConv: (CellParser | null)[],
-  headerType: any[],
-  headerTitle: string[],
-  headerFlag: any[],
-  /**
-   * Inferred headers
-   */
-  headers?: any[],
-  csvLineBuffer?: Buffer,
-  
-  /**
-   * after first chunk of data being processed and emitted, started will become true.
-   */
-  started: boolean,
-  preRawDataHook?: PreRawDataCallback,
-  preFileLineHook?: PreFileLineCallback,
-  parsedLineNumber: number,
- 
-  columnValueSetter: Function[];
-  subscribe?: {
-    onNext?: (data: any, lineNumber:number) => void | PromiseLike<void>;
-    onError?: (err: CSVError) => void;
-    onCompleted?: () => void;
-  };
-  then?: {
-    onfulfilled: (value: any[]) => any;
-    onrejected: (err: Error) => any;
-  }
- 
-}
-export function initParseRuntime(converter: Converter): ParseRuntime {
-  const params = converter.parseParam;
-  const rtn: ParseRuntime = {
-    needProcessIgnoreColumn: false,
-    needProcessIncludeColumn: false,
-    selectedColumns: undefined,
-    ended: false,
-    hasError: false,
-    error: undefined,
-    delimiter: converter.parseParam.delimiter,
-    eol: converter.parseParam.eol,
-    columnConv: [],
-    headerType: [],
-    headerTitle: [],
-    headerFlag: [],
-    headers: undefined,
-    started: false,
-    parsedLineNumber: 0,
-    columnValueSetter: [],
-  }
-  if (params.ignoreColumns) {
-    rtn.needProcessIgnoreColumn = true;
-  }
-  if (params.includeColumns) {
-    rtn.needProcessIncludeColumn = true;
-  }
-  return rtn;
-}
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/ProcessFork.ts.html b/node_modules/csvtojson/coverage/ProcessFork.ts.html deleted file mode 100644 index e0bd0b3..0000000 --- a/node_modules/csvtojson/coverage/ProcessFork.ts.html +++ /dev/null @@ -1,489 +0,0 @@ - - - - Code coverage report for ProcessFork.ts - - - - - - - -
-
-

- All files ProcessFork.ts -

-
-
- 100% - Statements - 78/78 -
-
- 86.67% - Branches - 26/30 -
-
- 100% - Functions - 15/15 -
-
- 100% - Lines - 73/73 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -1411x -1x -  -  -1x -  -  -  -1x -  -1x -37x -37x -  -37x -37x -37x -  -  -1x -37x -37x -  -  -37x -37x -37x -37x -  -37x -37x -37x -  -  -37x -  -1x -37x -37x -1x -  -  -  -  -37x -3x -  -  -  -  -37x -  -37x -37x -  -  -  -37x -145x -37x -108x -36x -2x -  -72x -36x -4x -  -36x -  -36x -  -  -  -37x -  -2886x -2886x -  -  -37x -  -1x -  -  -  -1x -  -121x -121x -  -121x -  -1x -2886x -2886x -2886x -2886x -2886x -3x -  -2883x -  -  -2886x -13554x -13554x -2883x -  -10671x -10671x -  -10671x -10671x -  -  -  -85x -85x -  -85x -  -85x -  -85x -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -1x
import { Processor, ProcessLineResult } from "./Processor";
-import P from "bluebird"
-import { Converter } from "./Converter";
-import { ChildProcess } from "child_process";
-import { CSVParseParam, mergeParams } from "./Parameters";
-import { ParseRuntime } from "./ParseRuntime";
-import { Readable, Writable } from "stream";
-import { bufFromString, emptyBuffer } from "./util";
-import CSVError from "./CSVError";
- 
-export class ProcessorFork extends Processor {
-  flush(): P<ProcessLineResult[]> {
-    return new P((resolve, reject) => {
-      // console.log("flush");
-      this.finalChunk = true;
-      this.next = resolve;
-      this.childProcess.stdin.end();
-    });
-  }
-  destroy(): P<void> {
-    this.childProcess.kill();
-    return P.resolve();
-  }
-  childProcess: ChildProcess;
-  inited: boolean = false;
-  private resultBuf: ProcessLineResult[] = [];
-  private leftChunk: string = "";
-  private finalChunk: boolean = false;
-  private next?: (result: ProcessLineResult[]) => any;
-  constructor(protected converter: Converter) {
-    super(converter);
-    this.childProcess = require("child_process").spawn(process.execPath, [__dirname + "/../v2/worker.js"], {
-      stdio: ["pipe", "pipe", "pipe", "ipc"]
-    });
-    this.initWorker();
-  }
-  private prepareParam(param:CSVParseParam):any{
-    const clone:any=mergeParams(param);
-    if (clone.ignoreColumns){
-      clone.ignoreColumns={
-        source:clone.ignoreColumns.source,
-        flags:clone.ignoreColumns.flags
-      }
-    }
-    if (clone.includeColumns){
-      clone.includeColumns={
-        source:clone.includeColumns.source,
-        flags:clone.includeColumns.flags
-      }
-    }
-    return clone;
-  }
-  private initWorker() {
-    this.childProcess.send({
-      cmd: "init",
-      params: this.prepareParam(this.converter.parseParam)
-    } as InitMessage);
-    this.childProcess.on("message", (msg: Message) => {
-      if (msg.cmd === "inited") {
-        this.inited = true;
-      } else if (msg.cmd === "eol") {
-        if (this.converter.listeners("eol").length > 0){
-          this.converter.emit("eol",(msg as StringMessage).value);
-        }
-      }else if (msg.cmd === "header") {
-        if (this.converter.listeners("header").length > 0){
-          this.converter.emit("header",(msg as StringMessage).value);
-        }
-      }else Eif (msg.cmd === "done"){
- 
-        this.flushResult();
-      }
- 
-    });
-    this.childProcess.stdout.on("data", (data) => {
-      // console.log("stdout", data.toString());
-      const res = data.toString();
-      this.appendBuf(res);
- 
-    });
-    this.childProcess.stderr.on("data", (data) => {
-      // console.log("stderr", data.toString());
-      this.converter.emit("error", CSVError.fromJSON(JSON.parse(data.toString())));
-    });
- 
-  }
-  private flushResult() {
-    // console.log("flush result", this.resultBuf.length);
-    Eif (this.next) {
-      this.next(this.resultBuf);
-    }
-    this.resultBuf = [];
-  }
-  private appendBuf(data: string) {
-    const res = this.leftChunk + data;
-    const list = res.split("\n");
-    let counter = 0;
-    const lastBit = list[list.length - 1];
-    if (lastBit !== "") {
-      this.leftChunk = list.pop() || "";
-    } else {
-      this.leftChunk = "";
-    }
- 
-    while (list.length) {
-      let item = list.shift() || "";
-      if (item.length === 0 ) {
-        continue;
-      }
-      Eif (this.params.output !== "line") {
-        item = JSON.parse(item);
-      }
-      this.resultBuf.push(item);
-      counter++;
-    }
-  }
- 
-  process(chunk: Buffer): P<ProcessLineResult[]> {
-    return new P((resolve, reject) => {
-      // console.log("chunk", chunk.length);
-      this.next = resolve;
-      // this.appendReadBuf(chunk);
-      this.childProcess.stdin.write(chunk, () => {
-        // console.log("chunk callback");
-        this.flushResult();
-      });
-    });
-  }
-}
- 
-export interface Message {
-  cmd: string
-}
- 
-export interface InitMessage extends Message {
-  params: any;
-}
-export interface StringMessage extends Message {
-  value: string
-}
-export const EOM = "\x03";
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/Processor.ts.html b/node_modules/csvtojson/coverage/Processor.ts.html deleted file mode 100644 index 7659fbe..0000000 --- a/node_modules/csvtojson/coverage/Processor.ts.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - Code coverage report for Processor.ts - - - - - - - -
-
-

- All files Processor.ts -

-
-
- 100% - Statements - 6/6 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 2/2 -
-
- 100% - Lines - 5/5 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19  -  -  -  -  -  -1x -  -  -123x -123x -123x -  -  -  -  -1x -  - 
import { Converter } from "./Converter";
-import P from "bluebird";
-import { JSONResult } from "./lineToJson";
-import { CSVParseParam } from "./Parameters";
-import { ParseRuntime } from "./ParseRuntime";
- 
-export abstract class Processor {
-  protected params: CSVParseParam;
-  protected runtime: ParseRuntime;
-  constructor(protected converter: Converter) {
-    this.params = converter.parseParam;
-    this.runtime = converter.parseRuntime;
-  }
-  abstract process(chunk: Buffer,finalChunk?:boolean): P<ProcessLineResult[]>
-  abstract destroy():P<void>;
-  abstract flush(): P<ProcessLineResult[]>;
-}
-export type ProcessLineResult = string | string[] | JSONResult;
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/ProcessorLocal.test.ts.html b/node_modules/csvtojson/coverage/ProcessorLocal.test.ts.html deleted file mode 100644 index 64ed5de..0000000 --- a/node_modules/csvtojson/coverage/ProcessorLocal.test.ts.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - Code coverage report for ProcessorLocal.test.ts - - - - - - - -
-
-

- All files ProcessorLocal.test.ts -

-
-
- 100% - Statements - 31/31 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 6/6 -
-
- 100% - Lines - 29/29 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -411x -1x -  -1x -1x -1x -  -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -  -1x -1x -1x -1x -  -1x -  -1x -1x -1x -1x -  -1x -1x -1x -  -1x -  -  -  -  - 
import {ProcessorLocal} from "./ProcessorLocal";
-import { Converter } from "./Converter";
-import P from "bluebird";
-import {readFileSync} from "fs";
-import path from "path";
-import assert from "assert";
-import { JSONResult } from "./lineToJson";
-const dataDir=path.join(__dirname,"../test/data/");
-describe("ProcessLocal",()=>{
-  it ("should process csv chunks and output json",async function (){
-    const processor=new ProcessorLocal(new Converter());
-    const data=readFileSync(dataDir+"/complexJSONCSV");
-    const lines=await processor.process(data);
-    assert(lines.length === 2);
-    const line0=lines[0] as JSONResult;
-    assert.equal(line0.fieldA.title,"Food Factory");
-    assert.equal(line0.fieldA.children.length,2);
-    assert.equal(line0.fieldA.children[1].employee[0].name,"Tim");
-  })
-  it ("should process csv chunks and output csv rows",async function (){
-    const processor=new ProcessorLocal(new Converter({output:"line"}));
-    const data=readFileSync(dataDir+"/complexJSONCSV");
-    const lines=await processor.process(data);
-    
-    assert(lines.length === 2);
-  })
-  it ("should return empty array if preRawHook removed the data",()=>{
-    const conv=new Converter();
-    conv.preRawData((str)=>{
-      return "";
-    });
-    const processor=new ProcessorLocal(conv);
-    const data=readFileSync(dataDir+"/complexJSONCSV");
-    return processor.process(data)
-    .then((list)=>{
-      assert.equal(list.length,0);
-    })
-  })
-})
- 
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/ProcessorLocal.ts.html b/node_modules/csvtojson/coverage/ProcessorLocal.ts.html deleted file mode 100644 index 9ca3768..0000000 --- a/node_modules/csvtojson/coverage/ProcessorLocal.ts.html +++ /dev/null @@ -1,870 +0,0 @@ - - - - Code coverage report for ProcessorLocal.ts - - - - - - - -
-
-

- All files ProcessorLocal.ts -

-
-
- 98.09% - Statements - 154/157 -
-
- 93.75% - Branches - 90/96 -
-
- 100% - Functions - 20/20 -
-
- 97.99% - Lines - 146/149 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -2681x -1x -1x -1x -1x -1x -1x -1x -  -1x -  -86x -73x -73x -36x -36x -36x -  -36x -5x -  -31x -  -  -  -37x -  -  -1x -76x -  -86x -86x -86x -1x -170x -76x -  -170x -  -86x -86x -1x -75x -75x -  -75x -  -  -306x -  -171x -36x -  -135x -  -  -171x -  -171x -5x -  -166x -  -  -  -171x -170x -  -1x -  -  -  -170x -170x -170x -170x -113x -  -170x -2x -2x -  -  -170x -1x -  -170x -170x -134x -  -36x -36x -  -170x -122x -122x -3x -  -119x -  -122x -122x -  -  -76x -  -46x -  -  -  -  -  -  -48x -  -  -  -1x -76x -8x -4x -  -4x -  -  -68x -68x -68x -68x -68x -68x -67x -67x -67x -  -1x -  -  -68x -  -68x -1x -  -67x -2x -  -65x -  -  -75x -5x -  -75x -4x -4x -  -75x -  -1x -5x -5x -5x -5x -25x -8x -3x -1x -  -2x -  -  -5x -  -17x -17x -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -5x -  -  -  -1x -121x -1x -  -120x -120x -120x -2x -  -118x -  -  -  -  -  -  -  -  -  -1x -322x -322x -154x -  -168x -  -  -  -  -3x -3x -3x -3x -  -  -3x -  -  -  -  -1x -  -  -  -  -5x -2x -  -3x -3x -3x -3x -3x -2x -2x -2x -  -  -1x -1x -1x -1x -  -1x -  -  -  -  -  - 
import { Processor, ProcessLineResult } from "./Processor";
-import P from "bluebird";
-import { prepareData } from "./dataClean";
-import getEol from "./getEol";
-import { stringToLines } from "./fileline";
-import { bufFromString, filterArray } from "./util";
-import { RowSplit } from "./rowSplit";
-import lineToJson from "./lineToJson";
-import { ParseRuntime } from "./ParseRuntime";
-import CSVError from "./CSVError";
- 
-export class ProcessorLocal extends Processor {
-  flush(): P<ProcessLineResult[]> {
-    if (this.runtime.csvLineBuffer && this.runtime.csvLineBuffer.length > 0) {
-      const buf = this.runtime.csvLineBuffer;
-      this.runtime.csvLineBuffer = undefined;
-      return this.process(buf, true)
-        .then((res) => {
-          if (this.runtime.csvLineBuffer && this.runtime.csvLineBuffer.length > 0) {
-            return P.reject(CSVError.unclosed_quote(this.runtime.parsedLineNumber, this.runtime.csvLineBuffer.toString()))
-          } else {
-            return P.resolve(res);
-          }
-        })
-    } else {
-      return P.resolve([]);
-    }
-  }
-  destroy(): P<void> {
-    return P.resolve();
-  }
-  private rowSplit: RowSplit = new RowSplit(this.converter);
-  private eolEmitted = false;
-  private _needEmitEol?: boolean = undefined;
-  private get needEmitEol() {
-    if (this._needEmitEol === undefined) {
-      this._needEmitEol = this.converter.listeners("eol").length > 0;
-    }
-    return this._needEmitEol;
-  }
-  private headEmitted = false;
-  private _needEmitHead?: boolean = undefined;
-  private get needEmitHead() {
-    Eif (this._needEmitHead === undefined) {
-      this._needEmitHead = this.converter.listeners("header").length > 0;
-    }
-    return this._needEmitHead;
- 
-  }
-  process(chunk: Buffer, finalChunk = false): P<ProcessLineResult[]> {
-    let csvString: string;
-    if (finalChunk) {
-      csvString = chunk.toString();
-    } else {
-      csvString = prepareData(chunk, this.converter.parseRuntime);
- 
-    }
-    return P.resolve()
-      .then(() => {
-        if (this.runtime.preRawDataHook) {
-          return this.runtime.preRawDataHook(csvString);
-        } else {
-          return csvString;
-        }
-      })
-      .then((csv) => {
-        if (csv && csv.length > 0) {
-          return this.processCSV(csv, finalChunk);
-        } else {
-          return P.resolve([]);
-        }
-      })
-  }
-  private processCSV(csv: string, finalChunk: boolean): P<ProcessLineResult[]> {
-    const params = this.params;
-    const runtime = this.runtime;
-    if (!runtime.eol) {
-      getEol(csv, runtime);
-    }
-    if (this.needEmitEol && !this.eolEmitted && runtime.eol) {
-      this.converter.emit("eol", runtime.eol);
-      this.eolEmitted = true;
-    }
-    // trim csv file has initial blank lines.
-    if (params.ignoreEmpty && !runtime.started) {
-      csv = csv.trimLeft();
-    }
-    const stringToLineResult = stringToLines(csv, runtime);
-    if (!finalChunk) {
-      this.prependLeftBuf(bufFromString(stringToLineResult.partial));
-    } else {
-      stringToLineResult.lines.push(stringToLineResult.partial);
-      stringToLineResult.partial = "";
-    }
-    if (stringToLineResult.lines.length > 0) {
-      let prom: P<string[]>;
-      if (runtime.preFileLineHook) {
-        prom = this.runPreLineHook(stringToLineResult.lines);
-      } else {
-        prom = P.resolve(stringToLineResult.lines);
-      }
-      return prom.then((lines) => {
-        if (!runtime.started
-          && !this.runtime.headers
-        ) {
-          return this.processDataWithHead(lines);
-        } else {
-          return this.processCSVBody(lines);
-        }
- 
-      })
- 
-    } else {
- 
-      return P.resolve([]);
-    }
- 
-  }
-  private processDataWithHead(lines: string[]): ProcessLineResult[] {
-    if (this.params.noheader) {
-      if (this.params.headers) {
-        this.runtime.headers = this.params.headers;
-      } else {
-        this.runtime.headers = [];
-      }
-    } else {
-      let left = "";
-      let headerRow: string[] = [];
-      while (lines.length) {
-        const line = left + lines.shift();
-        const row = this.rowSplit.parse(line);
-        if (row.closed) {
-          headerRow = row.cells;
-          left = "";
-          break;
-        } else {
-          left = line + getEol(line, this.runtime);
-        }
-      }
-      this.prependLeftBuf(bufFromString(left));
- 
-      if (headerRow.length === 0) {
-        return [];
-      }
-      if (this.params.headers) {
-        this.runtime.headers = this.params.headers;
-      } else {
-        this.runtime.headers = headerRow;
-      }
-    }
-    if (this.runtime.needProcessIgnoreColumn || this.runtime.needProcessIncludeColumn) {
-      this.filterHeader();
-    }
-    if (this.needEmitHead && !this.headEmitted) {
-      this.converter.emit("header", this.runtime.headers);
-      this.headEmitted = true;
-    }
-    return this.processCSVBody(lines);
-  }
-  private filterHeader() {
-    this.runtime.selectedColumns = [];
-    Eif (this.runtime.headers) {
-      const headers = this.runtime.headers;
-      for (let i = 0; i < headers.length; i++) {
-        if (this.params.ignoreColumns) {
-          if (this.params.ignoreColumns.test(headers[i])) {
-            if (this.params.includeColumns && this.params.includeColumns.test(headers[i])) {
-              this.runtime.selectedColumns.push(i);
-            } else {
-              continue;
-            }
-          } else {
-            this.runtime.selectedColumns.push(i);
-          }
-        } else Eif (this.params.includeColumns) {
-          if (this.params.includeColumns.test(headers[i])) {
-            this.runtime.selectedColumns.push(i);
-          }
-        } else {
-          this.runtime.selectedColumns.push(i);
-        }
-        // if (this.params.includeColumns && this.params.includeColumns.test(headers[i])){
-        //   this.runtime.selectedColumns.push(i);
-        // }else{
-        //   if (this.params.ignoreColumns && this.params.ignoreColumns.test(headers[i])){
-        //     continue;
-        //   }else{
-        //     if (this.params.ignoreColumns && !this.params.includeColumns){
-        //       this.runtime.selectedColumns.push(i);
-        //     }
- 
-        //   }
-        // }
-      }
-      this.runtime.headers = filterArray(this.runtime.headers, this.runtime.selectedColumns);
-    }
- 
-  }
-  private processCSVBody(lines: string[]): ProcessLineResult[] {
-    if (this.params.output === "line") {
-      return lines;
-    } else {
-      const result = this.rowSplit.parseMultiLines(lines);
-      this.prependLeftBuf(bufFromString(result.partial));
-      if (this.params.output === "csv") {
-        return result.rowsCells;
-      } else {
-        return lineToJson(result.rowsCells, this.converter);
-      }
-    }
- 
-    // var jsonArr = linesToJson(lines.lines, params, this.recordNum);
-    // this.processResult(jsonArr);
-    // this.lastIndex += jsonArr.length;
-    // this.recordNum += jsonArr.length;
-  }
- 
-  private prependLeftBuf(buf: Buffer) {
-    Eif (buf) {
-      if (this.runtime.csvLineBuffer) {
-        this.runtime.csvLineBuffer = Buffer.concat([buf, this.runtime.csvLineBuffer]);
-      } else {
-        this.runtime.csvLineBuffer = buf;
-      }
-    }
- 
-  }
-  private runPreLineHook(lines: string[]): P<string[]> {
-    return new P((resolve, reject) => {
-      processLineHook(lines, this.runtime, 0, (err) => {
-        Iif (err) {
-          reject(err);
-        } else {
-          resolve(lines);
-        }
-      })
-    });
-  }
-}
- 
-function processLineHook(lines: string[], runtime: ParseRuntime, offset: number,
-  cb: (err?) => void
-) {
-  if (offset >= lines.length) {
-    cb();
-  } else {
-    Eif (runtime.preFileLineHook) {
-      const line = lines[offset];
-      const res = runtime.preFileLineHook(line, runtime.parsedLineNumber + offset);
-      offset++;
-      if (res && (res as PromiseLike<string>).then) {
-        (res as PromiseLike<string>).then((value) => {
-          lines[offset - 1] = value;
-          processLineHook(lines, runtime, offset, cb);
-        });
-      } else {
-        lines[offset - 1] = res as string;
-        while (offset < lines.length) {
-          lines[offset] = runtime.preFileLineHook(lines[offset], runtime.parsedLineNumber + offset) as string;
-          offset++;
-        }
-        cb();
-      }
-    } else {
-      cb();
-    }
-  }
-}
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/Result.ts.html b/node_modules/csvtojson/coverage/Result.ts.html deleted file mode 100644 index 2b9b9dd..0000000 --- a/node_modules/csvtojson/coverage/Result.ts.html +++ /dev/null @@ -1,516 +0,0 @@ - - - - Code coverage report for Result.ts - - - - - - - -
-
-

- All files Result.ts -

-
-
- 94.37% - Statements - 67/71 -
-
- 88.68% - Branches - 47/53 -
-
- 100% - Functions - 15/15 -
-
- 94.2% - Lines - 65/69 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150  -  -1x -  -  -1x -1x -147x -  -  -1x -158x -106x -  -158x -  -1x -251x -  -120x -120x -147x -147x -  -147x -147x -54x -  -  -  -  -  -54x -  -  -54x -54x -  -  -  -  -93x -93x -  -  -  -1x -147x -114x -  -147x -  -1x -9x -  -  -9x -5x -  -  -1x -104x -79x -79x -  -  -104x -  -  -  -1x -  -  -  -  -  -  -  -  -  -58x -3x -  -55x -44x -44x -44x -44x -  -44x -4x -4x -  -  -  -40x -1x -  -40x -15896x -15896x -15896x -15896x -1x -  -  -40x -  -  -  -  -  -  -  -  -  -11x -11x -15874x -15874x -  -  -  -11x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -  -  -4x -  -  -15876x -10584x -  -5292x -  - 
import { Converter } from "./Converter";
-import { ProcessLineResult } from "./Processor";
-import P from "bluebird";
-import CSVError from "./CSVError";
- 
-export class Result {
-  private get needEmitLine(): boolean {
-    return !!this.converter.parseRuntime.subscribe && !!this.converter.parseRuntime.subscribe.onNext || this.needPushDownstream
-  }
-  private _needPushDownstream?: boolean;
-  private get needPushDownstream(): boolean {
-    if (this._needPushDownstream === undefined) {
-      this._needPushDownstream = this.converter.listeners("data").length > 0 || this.converter.listeners("readable").length > 0;
-    }
-    return this._needPushDownstream;
-  }
-  private get needEmitAll(): boolean {
-    return !!this.converter.parseRuntime.then;
-  }
-  private finalResult: any[] = [];
-  constructor(private converter: Converter) { }
-  processResult(resultLines: ProcessLineResult[]): P<any> {
-    const startPos = this.converter.parseRuntime.parsedLineNumber;
-    // let prom: P<any>;
-    return new P((resolve, reject) => {
-      if (this.needEmitLine) {
-        processLineByLine(
-          resultLines,
-          this.converter,
-          0,
-          this.needPushDownstream,
-          (err) => {
-            Iif (err) {
-              reject(err);
-            } else {
-              this.appendFinalResult(resultLines);
-              resolve();
-            }
-          },
-        )
-      } else {
-        this.appendFinalResult(resultLines);
-        resolve();
-      }
-    })
-  }
-  appendFinalResult(lines: any[]) {
-    if (this.needEmitAll) {
-      this.finalResult = this.finalResult.concat(lines);
-    }
-    this.converter.parseRuntime.parsedLineNumber += lines.length;
-  }
-  processError(err: CSVError) {
-    Iif (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onError) {
-      this.converter.parseRuntime.subscribe.onError(err);
-    }
-    if (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onrejected) {
-      this.converter.parseRuntime.then.onrejected(err);
-    }
-  }
-  endProcess() {
-    if (this.needEmitAll) {
-      Eif (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onfulfilled) {
-        this.converter.parseRuntime.then.onfulfilled(this.finalResult);
-      }
-    }
-    Iif (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onCompleted) {
-      this.converter.parseRuntime.subscribe.onCompleted();
-    }
-  }
-}
- 
-function processLineByLine(
-  lines: ProcessLineResult[],
- 
-  conv: Converter,
-  offset: number,
-  needPushDownstream: boolean,
-  cb: (err?) => void,
-) {
-  if (offset >= lines.length) {
-    cb();
-  } else {
-    if (conv.parseRuntime.subscribe && conv.parseRuntime.subscribe.onNext) {
-      const hook = conv.parseRuntime.subscribe.onNext;
-      const nextLine = lines[offset];
-      const res = hook(nextLine, conv.parseRuntime.parsedLineNumber + offset);
-      offset++;
-      // if (isAsync === undefined) {
-      if (res && res.then) {
-        res.then(function () {
-          processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine);
-        }, cb);
-      } else {
-        // processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, false);
-        if (needPushDownstream){
-          pushDownstream(conv,nextLine);
-        }
-        while (offset<lines.length){
-          const line=lines[offset];
-          hook(line, conv.parseRuntime.parsedLineNumber + offset);
-          offset++;
-          if (needPushDownstream){
-            pushDownstream(conv,line);
-          }
-        }
-        cb();
-      }
-      // } else if (isAsync === true) {
-      //   (res as PromiseLike<void>).then(function () {
-      //     processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, true);
-      //   }, cb);
-      // } else if (isAsync === false) {
-      //   processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, false);
-      // }
-    } else {
-      Eif (needPushDownstream) {
-        while (offset<lines.length) {
-          const line = lines[offset++];
-          pushDownstream(conv, line);
-        }
-        
-      }
-      cb();
-    }
- 
-  }
-}
- 
-function processRecursive(
-  lines: ProcessLineResult[],
-  hook: (data: any, lineNumber: number) => void | PromiseLike<void>,
-  conv: Converter,
-  offset: number,
-  needPushDownstream: boolean,
-  cb: (err?) => void,
-  res: ProcessLineResult,
-) {
-  Iif (needPushDownstream) {
-    pushDownstream(conv, res);
-  }
-  processLineByLine(lines, conv, offset, needPushDownstream, cb);
-}
-function pushDownstream(conv: Converter, res: ProcessLineResult) {
-  if (typeof res === "object" && !conv.options.objectMode) {
-    conv.push(JSON.stringify(res) + "\n", "utf8");
-  } else {
-    conv.push(res);
-  }
-}
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/Worker.ts.html b/node_modules/csvtojson/coverage/Worker.ts.html deleted file mode 100644 index d151a6d..0000000 --- a/node_modules/csvtojson/coverage/Worker.ts.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - Code coverage report for Worker.ts - - - - - - - -
-
-

- All files Worker.ts -

-
-
- 0% - Statements - 0/0 -
-
- 0% - Branches - 0/0 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/0 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7  -  -  -  -  -  - 
import { Converter } from "./Converter";
- 
-export class Worker {
-  constructor(converter: Converter) {
- 
-  }
-}
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/base.css b/node_modules/csvtojson/coverage/base.css deleted file mode 100644 index 7090209..0000000 --- a/node_modules/csvtojson/coverage/base.css +++ /dev/null @@ -1,223 +0,0 @@ -body, html { - margin:0; padding: 0; - height: 100%; -} -body { - font-family: Helvetica Neue, Helvetica, Arial; - font-size: 14px; - color:#333; -} -.small { font-size: 12px; } -*, *:after, *:before { - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; - } -h1 { font-size: 20px; margin: 0;} -h2 { font-size: 14px; } -pre { - font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; - margin: 0; - padding: 0; - -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2; -} -a { color:#0074D9; text-decoration:none; } -a:hover { text-decoration:underline; } -.strong { font-weight: bold; } -.space-top1 { padding: 10px 0 0 0; } -.pad2y { padding: 20px 0; } -.pad1y { padding: 10px 0; } -.pad2x { padding: 0 20px; } -.pad2 { padding: 20px; } -.pad1 { padding: 10px; } -.space-left2 { padding-left:55px; } -.space-right2 { padding-right:20px; } -.center { text-align:center; } -.clearfix { display:block; } -.clearfix:after { - content:''; - display:block; - height:0; - clear:both; - visibility:hidden; - } -.fl { float: left; } -@media only screen and (max-width:640px) { - .col3 { width:100%; max-width:100%; } - .hide-mobile { display:none!important; } -} - -.quiet { - color: #7f7f7f; - color: rgba(0,0,0,0.5); -} -.quiet a { opacity: 0.7; } - -.fraction { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 10px; - color: #555; - background: #E8E8E8; - padding: 4px 5px; - border-radius: 3px; - vertical-align: middle; -} - -div.path a:link, div.path a:visited { color: #333; } -table.coverage { - border-collapse: collapse; - margin: 10px 0 0 0; - padding: 0; -} - -table.coverage td { - margin: 0; - padding: 0; - vertical-align: top; -} -table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; -} -table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width:20px; -} - -table.coverage td span.cline-any { - display: inline-block; - padding: 0 5px; - width: 100%; -} -.missing-if-branch { - display: inline-block; - margin-right: 5px; - border-radius: 3px; - position: relative; - padding: 0 4px; - background: #333; - color: yellow; -} - -.skip-if-branch { - display: none; - margin-right: 10px; - position: relative; - padding: 0 4px; - background: #ccc; - color: white; -} -.missing-if-branch .typ, .skip-if-branch .typ { - color: inherit !important; -} -.coverage-summary { - border-collapse: collapse; - width: 100%; -} -.coverage-summary tr { border-bottom: 1px solid #bbb; } -.keyline-all { border: 1px solid #ddd; } -.coverage-summary td, .coverage-summary th { padding: 10px; } -.coverage-summary tbody { border: 1px solid #bbb; } -.coverage-summary td { border-right: 1px solid #bbb; } -.coverage-summary td:last-child { border-right: none; } -.coverage-summary th { - text-align: left; - font-weight: normal; - white-space: nowrap; -} -.coverage-summary th.file { border-right: none !important; } -.coverage-summary th.pct { } -.coverage-summary th.pic, -.coverage-summary th.abs, -.coverage-summary td.pct, -.coverage-summary td.abs { text-align: right; } -.coverage-summary td.file { white-space: nowrap; } -.coverage-summary td.pic { min-width: 120px !important; } -.coverage-summary tfoot td { } - -.coverage-summary .sorter { - height: 10px; - width: 7px; - display: inline-block; - margin-left: 0.5em; - background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; -} -.coverage-summary .sorted .sorter { - background-position: 0 -20px; -} -.coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; -} -.status-line { height: 10px; } -/* yellow */ -.cbranch-no { background: yellow !important; color: #111; } -/* dark red */ -.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } -.low .chart { border:1px solid #C21F39 } -.highlighted, -.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ - background: #C21F39 !important; -} -/* medium red */ -.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } -/* light red */ -.low, .cline-no { background:#FCE1E5 } -/* light green */ -.high, .cline-yes { background:rgb(230,245,208) } -/* medium green */ -.cstat-yes { background:rgb(161,215,106) } -/* dark green */ -.status-line.high, .high .cover-fill { background:rgb(77,146,33) } -.high .chart { border:1px solid rgb(77,146,33) } - -.medium .chart { border:1px solid #666; } -.medium .cover-fill { background: #666; } - -.cstat-skip { background: #ddd; color: #111; } -.fstat-skip { background: #ddd; color: #111 !important; } -.cbranch-skip { background: #ddd !important; color: #111; } - -span.cline-neutral { background: #eaeaea; } -.medium { background: #eaeaea; } - -.coverage-summary td.empty { - opacity: .5; - padding-top: 4px; - padding-bottom: 4px; - line-height: 1; - color: #888; -} - -.cover-fill, .cover-empty { - display:inline-block; - height: 12px; -} -.chart { - line-height: 0; -} -.cover-empty { - background: white; -} -.cover-full { - border-right: none !important; -} -pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; -} -.com { color: #999 !important; } -.ignore-none { color: #999; font-weight: normal; } - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -48px; -} -.footer, .push { - height: 48px; -} diff --git a/node_modules/csvtojson/coverage/block-navigation.js b/node_modules/csvtojson/coverage/block-navigation.js deleted file mode 100644 index 0c71903..0000000 --- a/node_modules/csvtojson/coverage/block-navigation.js +++ /dev/null @@ -1,63 +0,0 @@ -var jumpToCode = (function init () { - // Classes of code we would like to highlight - var missingCoverageClasses = [ '.cbranch-no', '.cstat-no', '.fstat-no' ]; - - // We don't want to select elements that are direct descendants of another match - var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` - - // Selecter that finds elements on the page to which we can jump - var selector = notSelector + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` - - // The NodeList of matching elements - var missingCoverageElements = document.querySelectorAll(selector); - - var currentIndex; - - function toggleClass(index) { - missingCoverageElements.item(currentIndex).classList.remove('highlighted'); - missingCoverageElements.item(index).classList.add('highlighted'); - } - - function makeCurrent(index) { - toggleClass(index); - currentIndex = index; - missingCoverageElements.item(index) - .scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' }); - } - - function goToPrevious() { - var nextIndex = 0; - if (typeof currentIndex !== 'number' || currentIndex === 0) { - nextIndex = missingCoverageElements.length - 1; - } else if (missingCoverageElements.length > 1) { - nextIndex = currentIndex - 1; - } - - makeCurrent(nextIndex); - } - - function goToNext() { - var nextIndex = 0; - - if (typeof currentIndex === 'number' && currentIndex < (missingCoverageElements.length - 1)) { - nextIndex = currentIndex + 1; - } - - makeCurrent(nextIndex); - } - - return function jump(event) { - switch (event.which) { - case 78: // n - case 74: // j - goToNext(); - break; - case 66: // b - case 75: // k - case 80: // p - goToPrevious(); - break; - } - }; -}()); -window.addEventListener('keydown', jumpToCode); diff --git a/node_modules/csvtojson/coverage/csv2json/Gruntfile.js.html b/node_modules/csvtojson/coverage/csv2json/Gruntfile.js.html deleted file mode 100644 index 68710d9..0000000 --- a/node_modules/csvtojson/coverage/csv2json/Gruntfile.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/Gruntfile.js - - - - - - - -
-
-

- All files / csv2json Gruntfile.js -

-
-
- 0% - Statements - 0/8 -
-
- 100% - Branches - 0/0 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/8 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/Gruntfile.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/Gruntfile.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/Gruntfile.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/Gruntfile.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/bin/benchmark.js.html b/node_modules/csvtojson/coverage/csv2json/bin/benchmark.js.html deleted file mode 100644 index 2e5b135..0000000 --- a/node_modules/csvtojson/coverage/csv2json/bin/benchmark.js.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - Code coverage report for csv2json/bin/benchmark.js - - - - - - - -
-
-

- All files / csv2json/bin benchmark.js -

-
-
- 0% - Statements - 0/29 -
-
- 0% - Branches - 0/2 -
-
- 0% - Functions - 0/5 -
-
- 0% - Lines - 0/29 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
#!/usr/bin/env node
-var path = process.argv[2];
-var fs = require('fs');
-if (!fs.existsSync(path)) {
-  console.log("Run: benchmark [csvpath]");
-  console.log("File not found: ", path);
-  process.exit(1);
-}
-function testCSVLine(coreNum, checkType, cb){
-  console.log("WorkerNum:", coreNum, "Check Type: ", checkType);
-  var Converter = require("../libs/core/Converter");
-  var rs = fs.createReadStream(path);
-  var converter = new Converter({
-    workerNum: coreNum,
-    checkType: checkType,
-    constructResult: false
-    // fork:true
-  });
-  var totalLines = 0;
-  var secLines = 0;
-  converter.on("data", function() {
-    totalLines++;
-    secLines++;
-  });
-  converter.on("end", function() {
-    clearInterval(timer);
-    console.log("");
-    var t = new Date() - start;
-    console.log("Time elapsed: ", t, " ms");
-    console.log("Total lines: " + totalLines);
-    console.log("Average Speed: " + Math.round(totalLines / t * 1000) + " Lines / Sec");
-    cb();
-  });
-  var timer = setInterval(function() {
-    process.stdout.write("\r" + secLines + " CSV Lines/Sec");
-    secLines = 0;
-  }, 1000);
-  var start = new Date();
- 
-  var stream = rs.pipe(converter);
-}
- 
-// testCSVLine(1,false,false,function(){
-  testCSVLine(4,true,function(){
- 
-  });
-// });
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/bin/csvtojson.js.html b/node_modules/csvtojson/coverage/csv2json/bin/csvtojson.js.html deleted file mode 100644 index 51400fc..0000000 --- a/node_modules/csvtojson/coverage/csv2json/bin/csvtojson.js.html +++ /dev/null @@ -1,552 +0,0 @@ - - - - Code coverage report for csv2json/bin/csvtojson.js - - - - - - - -
-
-

- All files / csv2json/bin csvtojson.js -

-
-
- 0% - Statements - 0/96 -
-
- 0% - Branches - 0/56 -
-
- 0% - Functions - 0/9 -
-
- 0% - Lines - 0/96 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
function csvtojson() {
-  var Converter = require("../libs/core/Converter.js");
-  var fs = require("fs");
-  var options = require("./options.json");
-  var cmds = options.commands;
-  var opts = options.options;
-  var exps = options.examples;
-  var pkg = require("../package.json");
-  /**
-   *{
-    "cmd": "parse", command to run
-    "options": {}, options to passe to the command
-    "inputStream": process.stdin // input stream for the command. default is stdin. can be a file read stream.
-  };
-   *
-   */
-  var parsedCmd;
- 
-  function _showHelp(errno) {
-    var key;
-    errno = typeof errno === "number" ? errno : 0;
-    console.log("csvtojson: Convert csv to JSON format");
-    console.log("version:", pkg.version);
-    console.log("Usage: csvtojson [<command>] [<options>] filepath\n");
-    console.log("Commands: ");
-    for (key in cmds) {
-      if (cmds.hasOwnProperty(key)) {
-        console.log("\t%s: %s", key, cmds[key]);
-      }
-    }
-    console.log("Options: ");
-    for (key in opts) {
-      if (opts.hasOwnProperty(key)) {
-        console.log("\t%s: %s", key, opts[key].desc);
-      }
-    }
-    console.log("Examples: ");
-    for (var i = 0; i < exps.length; i++) {
-      console.log("\t%s", exps[i]);
-    }
-    process.exit(errno);
-  }
- 
-  function parse() {
-    var is = parsedCmd.inputStream;
-    parsedCmd.options.constructResult = false;
-    if (parsedCmd.options.toArrayString === undefined) {
-      parsedCmd.options.toArrayString = true;
-    }
-    if (parsedCmd.options.maxRowLength === undefined) {
-      parsedCmd.options.maxRowLength = 10240;
-    }
-    if (is === process.stdin && is.isTTY) {
-      console.log("Please specify csv file path or pipe the csv data through.\n");
-      _showHelp(1);
-    }
-    if (parsedCmd.options.delimiter === "\\t" ){
-      parsedCmd.options.delimiter="\t";
-    }
-    var conv = new Converter(parsedCmd.options);
-    conv.on("error", function (err, pos) {
-      if (!parsedCmd.options.quiet) {
-        console.error("csvtojson got an error: ", err);
-        if (pos) {
-          console.error("The error happens at following line: ");
-          console.log(pos);
-        }
-      }
-      process.exit(1);
-    });
-    is.pipe(conv).pipe(process.stdout);
-    // is.pipe(conv);
-  }
- 
-  function run(cmd, options) {
-    if (cmd === "parse") {
-      parse();
-    } else if (cmd === "version") {
-      console.log(pkg.version);
-    } else {
-      console.log("unknown command %s.", cmd);
-      _showHelp(1);
-    }
-  }
- 
-  function commandParser() {
-    var parsedCmd = {
-      "cmd": "parse",
-      "options": {},
-      "inputStream": process.stdin
-    };
- 
-    function parseObject(val, optional) {
-      try {
-        return JSON.parse(val);
-      } catch (e) {
-        if (optional) {
-          return val;
-        } else {
-          console.error(e);
-          process.exit(1);
-        }
-      }
-    }
- 
-    function parseBool(str, optName) {
-      str = str.toLowerCase();
-      if (str === "true" || str === "y") {
-        return true;
-      } else if (str === "false" || str === "n") {
-        return false;
-      }
-      console.log("Unknown boolean value %s for parameter %s.", str, optName);
-      _showHelp(1);
-    }
-    process.argv.slice(2).forEach(function (item) {
-      if (item.indexOf("--") > -1) {
-        var itemArr = item.split("=");
-        var optName = itemArr[0];
-        var key, val, type;
-        if (!opts[optName]) {
-          console.log("Option %s not supported.", optName);
-          _showHelp(1);
-        }
-        key = optName.replace('--', '');
-        val = itemArr[1] || '';
-        type = opts[optName].type;
-        if (type === "string") {
-          parsedCmd.options[key] = val.toString();
-        } else if (type === "boolean") {
-          parsedCmd.options[key] = parseBool(val, optName);
-        } else if (type === "number") {
-          parsedCmd.options[key] = parseFloat(val);
-        } else if (type === "object") {
-          parsedCmd.options[key] = parseObject(val, false);
-        } else if (type === "~object") {
-          parsedCmd.options[key] = parseObject(val, true);
-        } else {
-          throw ({
-            name: "UnimplementedException",
-            message: "Option type parsing not implemented. See bin/options.json"
-          });
-        }
-      } else if (cmds[item]) {
-        parsedCmd.cmd = item;
-      } else if (fs.existsSync(item)) {
-        parsedCmd.inputStream = fs.createReadStream(item);
-      } else {
-        console.log("unknown parameter %s.", item);
-      }
-    });
-    return parsedCmd;
-  }
-  process.stdin.setEncoding('utf8');
-  parsedCmd = commandParser();
-  run(parsedCmd.cmd, parsedCmd.options);
-}
-module.exports = csvtojson;
-if (!module.parent) {
-  csvtojson();
-}
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/bin/genCsv.js.html b/node_modules/csvtojson/coverage/csv2json/bin/genCsv.js.html deleted file mode 100644 index 576ad49..0000000 --- a/node_modules/csvtojson/coverage/csv2json/bin/genCsv.js.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - Code coverage report for csv2json/bin/genCsv.js - - - - - - - -
-
-

- All files / csv2json/bin genCsv.js -

-
-
- 0% - Statements - 0/23 -
-
- 0% - Branches - 0/8 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/23 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
#!/usr/bin/env node
-var minimist = require("minimist");
-var argv = process.argv;
-argv.shift();
-argv.shift();
-var args = minimist(argv);
-var headers = ["name", "header1", "file2", "description", "header2", "field2", "header3"];
- 
-if (args.headers) {
-  headers = JSON.parse(args.headers);
-}
-var rowNum = args.row ? args.row : 10000;
-var chars = args.chars ? args.chars : "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
-var maxLength = parseInt(args.max ? args.max : "15");
-console.log(headers.join(","));
-for (var i = 0; i < rowNum; i++) {
-  var row = [];
-  for (var j = 0; j < headers.length; j++) {
-    row.push(genWord());
-  }
-  console.log(row.join(","));
-}
- 
-function genWord() {
-  var len = Math.round(Math.random() * maxLength);
-  var rtn = "";
-  for (var i = 0; i < len; i++) {
-    var pos = Math.round(Math.random() * chars.length);
-    rtn += chars[pos];
-  }
-  return rtn;
-}
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/bin/index.html b/node_modules/csvtojson/coverage/csv2json/bin/index.html deleted file mode 100644 index d74a8cf..0000000 --- a/node_modules/csvtojson/coverage/csv2json/bin/index.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - Code coverage report for csv2json/bin - - - - - - - -
-
-

- All files csv2json/bin -

-
-
- 0% - Statements - 0/148 -
-
- 0% - Branches - 0/66 -
-
- 0% - Functions - 0/15 -
-
- 0% - Lines - 0/148 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
benchmark.js
0%0/290%0/20%0/50%0/29
csvtojson.js
0%0/960%0/560%0/90%0/96
genCsv.js
0%0/230%0/80%0/10%0/23
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/browser_index.js.html b/node_modules/csvtojson/coverage/csv2json/browser_index.js.html deleted file mode 100644 index 5b49cc2..0000000 --- a/node_modules/csvtojson/coverage/csv2json/browser_index.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/browser_index.js - - - - - - - -
-
-

- All files / csv2json browser_index.js -

-
-
- 0% - Statements - 0/3 -
-
- 0% - Branches - 0/2 -
-
- 100% - Functions - 0/0 -
-
- 0% - Lines - 0/3 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/browser_index.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/browser_index.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/browser_index.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/browser_index.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/dist/csvtojson.js.html b/node_modules/csvtojson/coverage/csv2json/dist/csvtojson.js.html deleted file mode 100644 index e312748..0000000 --- a/node_modules/csvtojson/coverage/csv2json/dist/csvtojson.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/dist/csvtojson.js - - - - - - - -
-
-

- All files / csv2json/dist csvtojson.js -

-
-
- 0% - Statements - 0/8755 -
-
- 0% - Branches - 0/6057 -
-
- 0% - Functions - 0/1477 -
-
- 0% - Lines - 0/8543 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/dist/csvtojson.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/dist/csvtojson.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/dist/csvtojson.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/dist/csvtojson.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/dist/csvtojson.min.js.html b/node_modules/csvtojson/coverage/csv2json/dist/csvtojson.min.js.html deleted file mode 100644 index 7db970e..0000000 --- a/node_modules/csvtojson/coverage/csv2json/dist/csvtojson.min.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/dist/csvtojson.min.js - - - - - - - -
-
-

- All files / csv2json/dist csvtojson.min.js -

-
-
- 0% - Statements - 0/5007 -
-
- 0% - Branches - 0/5826 -
-
- 0% - Functions - 0/1473 -
-
- 0% - Lines - 0/6 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/dist/csvtojson.min.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/dist/csvtojson.min.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/dist/csvtojson.min.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/dist/csvtojson.min.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/dist/index.html b/node_modules/csvtojson/coverage/csv2json/dist/index.html deleted file mode 100644 index 152974c..0000000 --- a/node_modules/csvtojson/coverage/csv2json/dist/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - Code coverage report for csv2json/dist - - - - - - - -
-
-

- All files csv2json/dist -

-
-
- 0% - Statements - 0/13762 -
-
- 0% - Branches - 0/11883 -
-
- 0% - Functions - 0/2950 -
-
- 0% - Lines - 0/8549 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
csvtojson.js
0%0/87550%0/60570%0/14770%0/8543
csvtojson.min.js
0%0/50070%0/58260%0/14730%0/6
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/index.html b/node_modules/csvtojson/coverage/csv2json/index.html deleted file mode 100644 index ae92411..0000000 --- a/node_modules/csvtojson/coverage/csv2json/index.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - Code coverage report for csv2json - - - - - - - -
-
-

- All files csv2json -

-
-
- 0% - Statements - 0/12 -
-
- 0% - Branches - 0/2 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/12 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
Gruntfile.js
0%0/8100%0/00%0/10%0/8
browser_index.js
0%0/30%0/2100%0/00%0/3
index.js
0%0/1100%0/0100%0/00%0/1
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/index.js.html b/node_modules/csvtojson/coverage/csv2json/index.js.html deleted file mode 100644 index d2b4e59..0000000 --- a/node_modules/csvtojson/coverage/csv2json/index.js.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - Code coverage report for csv2json/index.js - - - - - - - -
-
-

- All files / csv2json index.js -

-
-
- 0% - Statements - 0/1 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 0% - Lines - 0/1 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 
module.exports=require("./build");
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/CSVError.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/CSVError.js.html deleted file mode 100644 index a993e79..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/CSVError.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/CSVError.js - - - - - - - -
-
-

- All files / csv2json/libs/core CSVError.js -

-
-
- 0% - Statements - 0/17 -
-
- 0% - Branches - 0/2 -
-
- 0% - Functions - 0/5 -
-
- 0% - Lines - 0/17 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/CSVError.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/CSVError.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/CSVError.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/CSVError.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/Converter.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/Converter.js.html deleted file mode 100644 index cc528e5..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/Converter.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/Converter.js - - - - - - - -
-
-

- All files / csv2json/libs/core Converter.js -

-
-
- 0% - Statements - 0/375 -
-
- 0% - Branches - 0/226 -
-
- 0% - Functions - 0/43 -
-
- 0% - Lines - 0/374 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/Converter.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/Converter.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/Converter.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/Converter.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/csvline.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/csvline.js.html deleted file mode 100644 index bdc0bb7..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/csvline.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/csvline.js - - - - - - - -
-
-

- All files / csv2json/libs/core csvline.js -

-
-
- 0% - Statements - 0/13 -
-
- 0% - Branches - 0/6 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/13 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/csvline.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/csvline.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/csvline.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/csvline.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/dataToCSVLine.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/dataToCSVLine.js.html deleted file mode 100644 index 1fa9005..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/dataToCSVLine.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/dataToCSVLine.js - - - - - - - -
-
-

- All files / csv2json/libs/core dataToCSVLine.js -

-
-
- 0% - Statements - 0/7 -
-
- 100% - Branches - 0/0 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/7 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/dataToCSVLine.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/dataToCSVLine.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/dataToCSVLine.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/dataToCSVLine.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/defParam.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/defParam.js.html deleted file mode 100644 index ed250b9..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/defParam.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/defParam.js - - - - - - - -
-
-

- All files / csv2json/libs/core defParam.js -

-
-
- 0% - Statements - 0/23 -
-
- 0% - Branches - 0/22 -
-
- 0% - Functions - 0/3 -
-
- 0% - Lines - 0/22 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/defParam.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/defParam.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/defParam.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/defParam.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/index.html b/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/index.html deleted file mode 100644 index 65c8353..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/index.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/defaultParsers - - - - - - - -
-
-

- All files csv2json/libs/core/defaultParsers -

-
-
- 0% - Statements - 0/63 -
-
- 0% - Branches - 0/40 -
-
- 0% - Functions - 0/6 -
-
- 0% - Lines - 0/63 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
index.js
0%0/1100%0/0100%0/00%0/1
parser_array.js
0%0/50%0/20%0/10%0/5
parser_flat.js
0%0/4100%0/00%0/10%0/4
parser_json.js
0%0/390%0/340%0/20%0/39
parser_jsonarray.js
0%0/130%0/40%0/10%0/13
parser_omit.js
0%0/1100%0/00%0/10%0/1
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/index.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/index.js.html deleted file mode 100644 index 74602c4..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/index.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/defaultParsers/index.js - - - - - - - -
-
-

- All files / csv2json/libs/core/defaultParsers index.js -

-
-
- 0% - Statements - 0/1 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 0% - Lines - 0/1 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/index.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/index.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/index.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/index.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_array.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_array.js.html deleted file mode 100644 index 5f6c3a4..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_array.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/defaultParsers/parser_array.js - - - - - - - -
-
-

- All files / csv2json/libs/core/defaultParsers parser_array.js -

-
-
- 0% - Statements - 0/5 -
-
- 0% - Branches - 0/2 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/5 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_array.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_array.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_array.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_array.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_flat.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_flat.js.html deleted file mode 100644 index 0397ee3..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_flat.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/defaultParsers/parser_flat.js - - - - - - - -
-
-

- All files / csv2json/libs/core/defaultParsers parser_flat.js -

-
-
- 0% - Statements - 0/4 -
-
- 100% - Branches - 0/0 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/4 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_flat.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_flat.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_flat.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_flat.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_json.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_json.js.html deleted file mode 100644 index c50b266..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_json.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/defaultParsers/parser_json.js - - - - - - - -
-
-

- All files / csv2json/libs/core/defaultParsers parser_json.js -

-
-
- 0% - Statements - 0/39 -
-
- 0% - Branches - 0/34 -
-
- 0% - Functions - 0/2 -
-
- 0% - Lines - 0/39 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_json.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_json.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_json.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_json.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_jsonarray.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_jsonarray.js.html deleted file mode 100644 index 63ddec2..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_jsonarray.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/defaultParsers/parser_jsonarray.js - - - - - - - -
-
-

- All files / csv2json/libs/core/defaultParsers parser_jsonarray.js -

-
-
- 0% - Statements - 0/13 -
-
- 0% - Branches - 0/4 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/13 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_jsonarray.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_jsonarray.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_jsonarray.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_jsonarray.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_omit.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_omit.js.html deleted file mode 100644 index cf3c0d1..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/defaultParsers/parser_omit.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/defaultParsers/parser_omit.js - - - - - - - -
-
-

- All files / csv2json/libs/core/defaultParsers parser_omit.js -

-
-
- 0% - Statements - 0/1 -
-
- 100% - Branches - 0/0 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/1 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_omit.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_omit.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_omit.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_omit.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/fileLineToCSVLine.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/fileLineToCSVLine.js.html deleted file mode 100644 index 93544a6..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/fileLineToCSVLine.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/fileLineToCSVLine.js - - - - - - - -
-
-

- All files / csv2json/libs/core fileLineToCSVLine.js -

-
-
- 0% - Statements - 0/5 -
-
- 100% - Branches - 0/0 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/5 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/fileLineToCSVLine.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/fileLineToCSVLine.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/fileLineToCSVLine.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/fileLineToCSVLine.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/fileline.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/fileline.js.html deleted file mode 100644 index 991417d..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/fileline.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/fileline.js - - - - - - - -
-
-

- All files / csv2json/libs/core fileline.js -

-
-
- 0% - Statements - 0/6 -
-
- 100% - Branches - 0/0 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/6 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/fileline.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/fileline.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/fileline.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/fileline.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/filterRow.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/filterRow.js.html deleted file mode 100644 index ee0732e..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/filterRow.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/filterRow.js - - - - - - - -
-
-

- All files / csv2json/libs/core filterRow.js -

-
-
- 0% - Statements - 0/12 -
-
- 0% - Branches - 0/12 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/12 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/filterRow.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/filterRow.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/filterRow.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/filterRow.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/getDelimiter.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/getDelimiter.js.html deleted file mode 100644 index 2952297..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/getDelimiter.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/getDelimiter.js - - - - - - - -
-
-

- All files / csv2json/libs/core getDelimiter.js -

-
-
- 0% - Statements - 0/15 -
-
- 0% - Branches - 0/6 -
-
- 0% - Functions - 0/2 -
-
- 0% - Lines - 0/15 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/getDelimiter.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/getDelimiter.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/getDelimiter.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/getDelimiter.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/getEol.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/getEol.js.html deleted file mode 100644 index f70412e..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/getEol.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/getEol.js - - - - - - - -
-
-

- All files / csv2json/libs/core getEol.js -

-
-
- 0% - Statements - 0/14 -
-
- 0% - Branches - 0/12 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/14 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/getEol.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/getEol.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/getEol.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/getEol.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/index.html b/node_modules/csvtojson/coverage/csv2json/libs/core/index.html deleted file mode 100644 index 63f56b6..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/index.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - Code coverage report for csv2json/libs/core - - - - - - - -
-
-

- All files csv2json/libs/core -

-
-
- 0% - Statements - 0/911 -
-
- 0% - Branches - 0/503 -
-
- 0% - Functions - 0/125 -
-
- 0% - Lines - 0/909 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
CSVError.js
0%0/170%0/20%0/50%0/17
Converter.js
0%0/3750%0/2260%0/430%0/374
csvline.js
0%0/130%0/60%0/10%0/13
dataToCSVLine.js
0%0/7100%0/00%0/10%0/7
defParam.js
0%0/230%0/220%0/30%0/22
fileLineToCSVLine.js
0%0/5100%0/00%0/10%0/5
fileline.js
0%0/6100%0/00%0/10%0/6
filterRow.js
0%0/120%0/120%0/10%0/12
getDelimiter.js
0%0/150%0/60%0/20%0/15
getEol.js
0%0/140%0/120%0/10%0/14
index.js
0%0/3100%0/00%0/10%0/3
linesToJson.js
0%0/1210%0/880%0/160%0/121
parser.js
0%0/720%0/490%0/100%0/72
parserMgr.js
0%0/340%0/140%0/100%0/34
rowSplit.js
0%0/700%0/350%0/50%0/70
worker.js
0%0/450%0/130%0/60%0/45
workerMgr.js
0%0/790%0/180%0/180%0/79
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/index.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/index.js.html deleted file mode 100644 index 32cfa42..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/index.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/index.js - - - - - - - -
-
-

- All files / csv2json/libs/core index.js -

-
-
- 0% - Statements - 0/3 -
-
- 100% - Branches - 0/0 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/3 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/index.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/index.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/index.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/index.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/linesToJson.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/linesToJson.js.html deleted file mode 100644 index a5cefec..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/linesToJson.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/linesToJson.js - - - - - - - -
-
-

- All files / csv2json/libs/core linesToJson.js -

-
-
- 0% - Statements - 0/121 -
-
- 0% - Branches - 0/88 -
-
- 0% - Functions - 0/16 -
-
- 0% - Lines - 0/121 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/linesToJson.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/linesToJson.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/linesToJson.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/linesToJson.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/parser.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/parser.js.html deleted file mode 100644 index 761dba4..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/parser.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/parser.js - - - - - - - -
-
-

- All files / csv2json/libs/core parser.js -

-
-
- 0% - Statements - 0/72 -
-
- 0% - Branches - 0/49 -
-
- 0% - Functions - 0/10 -
-
- 0% - Lines - 0/72 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/parser.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/parser.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/parser.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/parser.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/parserMgr.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/parserMgr.js.html deleted file mode 100644 index 05dd268..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/parserMgr.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/parserMgr.js - - - - - - - -
-
-

- All files / csv2json/libs/core parserMgr.js -

-
-
- 0% - Statements - 0/34 -
-
- 0% - Branches - 0/14 -
-
- 0% - Functions - 0/10 -
-
- 0% - Lines - 0/34 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/parserMgr.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/parserMgr.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/parserMgr.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/parserMgr.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/rowSplit.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/rowSplit.js.html deleted file mode 100644 index 732d36b..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/rowSplit.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/rowSplit.js - - - - - - - -
-
-

- All files / csv2json/libs/core rowSplit.js -

-
-
- 0% - Statements - 0/70 -
-
- 0% - Branches - 0/35 -
-
- 0% - Functions - 0/5 -
-
- 0% - Lines - 0/70 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/rowSplit.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/rowSplit.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/rowSplit.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/rowSplit.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/worker.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/worker.js.html deleted file mode 100644 index cd7920e..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/worker.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/worker.js - - - - - - - -
-
-

- All files / csv2json/libs/core worker.js -

-
-
- 0% - Statements - 0/45 -
-
- 0% - Branches - 0/13 -
-
- 0% - Functions - 0/6 -
-
- 0% - Lines - 0/45 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/worker.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/worker.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/worker.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/worker.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/core/workerMgr.js.html b/node_modules/csvtojson/coverage/csv2json/libs/core/workerMgr.js.html deleted file mode 100644 index f244c0c..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/core/workerMgr.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/workerMgr.js - - - - - - - -
-
-

- All files / csv2json/libs/core workerMgr.js -

-
-
- 0% - Statements - 0/79 -
-
- 0% - Branches - 0/18 -
-
- 0% - Functions - 0/18 -
-
- 0% - Lines - 0/79 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/workerMgr.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/workerMgr.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/core/workerMgr.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/core/workerMgr.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/csv2json.js.html b/node_modules/csvtojson/coverage/csv2json/libs/csv2json.js.html deleted file mode 100644 index 2767bed..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/csv2json.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/csv2json.js - - - - - - - -
-
-

- All files / csv2json/libs csv2json.js -

-
-
- 0% - Statements - 0/3 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 0% - Lines - 0/3 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/csv2json.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/csv2json.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/csv2json.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/csv2json.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/index.html b/node_modules/csvtojson/coverage/csv2json/libs/index.html deleted file mode 100644 index 5e4e51a..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/index.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - Code coverage report for csv2json/libs - - - - - - - -
-
-

- All files csv2json/libs -

-
-
- 0% - Statements - 0/3 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 0% - Lines - 0/3 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
csv2json.js
0%0/3100%0/0100%0/00%0/3
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/interfaces/cli/index.html b/node_modules/csvtojson/coverage/csv2json/libs/interfaces/cli/index.html deleted file mode 100644 index d7c40e9..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/interfaces/cli/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - Code coverage report for csv2json/libs/interfaces/cli - - - - - - - -
-
-

- All files csv2json/libs/interfaces/cli -

-
-
- 0% - Statements - 0/24 -
-
- 0% - Branches - 0/4 -
-
- 0% - Functions - 0/6 -
-
- 0% - Lines - 0/24 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
index.js
0%0/1100%0/0100%0/00%0/1
main.js
0%0/230%0/40%0/60%0/23
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/interfaces/cli/index.js.html b/node_modules/csvtojson/coverage/csv2json/libs/interfaces/cli/index.js.html deleted file mode 100644 index 88adb37..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/interfaces/cli/index.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/interfaces/cli/index.js - - - - - - - -
-
-

- All files / csv2json/libs/interfaces/cli index.js -

-
-
- 0% - Statements - 0/1 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 0% - Lines - 0/1 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/interfaces/cli/index.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/interfaces/cli/index.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/interfaces/cli/index.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/interfaces/cli/index.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/interfaces/cli/main.js.html b/node_modules/csvtojson/coverage/csv2json/libs/interfaces/cli/main.js.html deleted file mode 100644 index d667a31..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/interfaces/cli/main.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/interfaces/cli/main.js - - - - - - - -
-
-

- All files / csv2json/libs/interfaces/cli main.js -

-
-
- 0% - Statements - 0/23 -
-
- 0% - Branches - 0/4 -
-
- 0% - Functions - 0/6 -
-
- 0% - Lines - 0/23 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/interfaces/cli/main.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/interfaces/cli/main.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/interfaces/cli/main.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/interfaces/cli/main.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/interfaces/index.html b/node_modules/csvtojson/coverage/csv2json/libs/interfaces/index.html deleted file mode 100644 index 34e85bd..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/interfaces/index.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - Code coverage report for csv2json/libs/interfaces - - - - - - - -
-
-

- All files csv2json/libs/interfaces -

-
-
- 0% - Statements - 0/1 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 0% - Lines - 0/1 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
index.js
0%0/1100%0/0100%0/00%0/1
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/libs/interfaces/index.js.html b/node_modules/csvtojson/coverage/csv2json/libs/interfaces/index.js.html deleted file mode 100644 index 3b14064..0000000 --- a/node_modules/csvtojson/coverage/csv2json/libs/interfaces/index.js.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/libs/interfaces/index.js - - - - - - - -
-
-

- All files / csv2json/libs/interfaces index.js -

-
-
- 0% - Statements - 0/1 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 0% - Lines - 0/1 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/interfaces/index.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/interfaces/index.js')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/libs/interfaces/index.js(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/libs/interfaces/index.js')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/CSVError.ts.html b/node_modules/csvtojson/coverage/csv2json/src/CSVError.ts.html deleted file mode 100644 index c603aa8..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/CSVError.ts.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - Code coverage report for csv2json/src/CSVError.ts - - - - - - - -
-
-

- All files / csv2json/src CSVError.ts -

-
-
- 88.24% - Statements - 15/17 -
-
- 75% - Branches - 3/4 -
-
- 66.67% - Functions - 4/6 -
-
- 87.5% - Lines - 14/16 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -241x -1x -1x -2x -  -1x -4x -  -1x -  -  -  -6x -6x -6x -  -6x -6x -  -1x -  -  -1x - 
var util = require("util");
-export default class CSVError extends Error{
-  static column_mismatched(index:number, extra?:string){
-    return new CSVError("column_mismatched", index, extra);
-  }
-  static unclosed_quote(index:number, extra?:string){
-    return new CSVError("unclosed_quote", index, extra);
-  }
-  static fromArray(arr:any[]){
-    return new CSVError(arr[0],arr[1],arr[2]);
-  }
-  constructor(
-    public err:string,
-    public line:number,
-    public extra?: string
-  ){
-    super("Error: " + err + ". JSON Line number: " + line + (extra ? " near: " + extra : ""));
-    this.name="CSV Parse Error";
-  }
-  toString(){
-    return JSON.stringify([this.err, this.line, this.extra]);  
-  }
-}
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/Converter.ts.html b/node_modules/csvtojson/coverage/csv2json/src/Converter.ts.html deleted file mode 100644 index 7b45a00..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/Converter.ts.html +++ /dev/null @@ -1,636 +0,0 @@ - - - - Code coverage report for csv2json/src/Converter.ts - - - - - - - -
-
-

- All files / csv2json/src Converter.ts -

-
-
- 94% - Statements - 94/100 -
-
- 84.62% - Branches - 22/26 -
-
- 96.43% - Functions - 27/28 -
-
- 93.62% - Lines - 88/94 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -1901x -1x -1x -1x -  -  -  -  -  -  -  -1x -1x -1x -1x -  -1x -1x -2x -  -1x -1x -  -1x -  -  -  -17x -  -  -  -  -17x -  -5x -5x -  -  -  -  -  -  -5x -5x -5x -5x -  -  -  -  -5x -  -1x -25x -25x -  -1x -16x -16x -16x -16x -37x -16x -  -21x -21x -21x -  -  -16x -  -49x -49x -49x -  -46x -46x -  -  -  -  -  -2x -2x -  -  -  -  -  -  -  -1x -165734x -  -1x -436312x -  -  -  -  -  -217x -73x -73x -73x -73x -73x -  -  -73x -  -73x -  -6x -6x -6x -  -  -  -  -73x -  -124x -124x -  -122x -70x -70x -  -  -  -122x -  -2x -2x -2x -2x -  -  -65x -65x -28x -28x -28x -  -28x -24x -  -  -  -28x -4x -  -24x -  -  -  -  -  -  -  -  -37x -  -  -1x -61x -61x -61x -  -1x -4x -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { Transform, TransformOptions, Readable } from "stream";
-import { CSVParseParam, mergeParams } from "./Parameters";
-import { ParseRuntime, initParseRuntime } from "./ParseRuntime";
-import P from "bluebird";
-import { Worker } from "./Worker";
-import { stringToLines } from "./fileline";
-import { map } from "lodash/map";
-import { RowSplit, RowSplitResult } from "./rowSplit";
-import getEol from "./getEol";
-import lineToJson, { JSONResult } from "./lineToJson";
-import { Processor, ProcessLineResult } from "./Processor";
-import { ProcessorFork } from "./ProcessFork";
-import { ProcessorLocal } from "./ProcessorLocal";
-import { Result } from "./Result";
-import CSVError from "./CSVError";
-import { bufFromString } from "./util";
-export class Converter extends Transform {
-  preRawData(onRawData: PreRawDataCallback) {
-    this.runtime.preRawDataHook = onRawData;
-  }
-  preFileLine(onFileLine: PreFileLineCallback) {
-    this.runtime.preFileLineHook = onFileLine;
-  }
-  subscribe(
-    onNext?: (data: any, lineNumber: number) => void | PromiseLike<void>,
-    onError?: (err: CSVError) => void,
-    onCompleted?: () => void): Converter {
-    this.parseRuntime.subscribe = {
-      onNext,
-      onError,
-      onCompleted
-    }
-    return this;
-  }
-  fromFile(filePath: string, options?: string | CreateReadStreamOption | undefined): Converter {
-    const fs = require("fs");
-    // var rs = null;
-    // this.wrapCallback(cb, function () {
-    //   if (rs && rs.destroy) {
-    //     rs.destroy();
-    //   }
-    // });
-    fs.exists(filePath, (exist) => {
-      Eif (exist) {
-        const rs = fs.createReadStream(filePath, options);
-        rs.pipe(this);
-      } else {
-        this.emit('error', new Error("File does not exist. Check to make sure the file path to your csv is correct."));
-      }
-    });
-    return this;
-  }
-  fromStream(readStream: Readable): Converter {
-    readStream.pipe(this);
-    return this;
-  }
-  fromString(csvString: string): Converter {
-    const csv = csvString.toString();
-    const read = new Readable();
-    let idx = 0;
-    read._read = function (size) {
-      if (idx >= csvString.length) {
-        this.push(null);
-      } else {
-        const str = csvString.substr(idx, size);
-        this.push(str);
-        idx += size;
-      }
-    }
-    return this.fromStream(read);
-  }
-  then<TResult1 = any[], TResult2 = never>(onfulfilled?: (value: any[]) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2> {
-    return new P((resolve, reject) => {
-      this.parseRuntime.then = {
-        onfulfilled: (value: any[]) => {
-          Eif (onfulfilled) {
-            resolve(onfulfilled(value));
-          } else {
-            resolve(value as any);
-          }
-        },
-        onrejected: (err: Error) => {
-          Eif (onrejected) {
-            resolve(onrejected(err));
-          } else {
-            reject(err);
-          }
-        }
-      }
-    });
-  }
-  public get parseParam(): CSVParseParam {
-    return this.params;
-  }
-  public get parseRuntime(): ParseRuntime {
-    return this.runtime;
-  }
-  private params: CSVParseParam;
-  private runtime: ParseRuntime;
-  private processor: Processor;
-  private result: Result;
-  constructor(param?: Partial<CSVParseParam>, public options: TransformOptions = {}) {
-    super(options);
-    this.params = mergeParams(param);
-    this.runtime = initParseRuntime(this);
-    this.result = new Result(this);
-    Iif (this.params.fork) {
-      this.processor = new ProcessorFork(this);
-    } else {
-      this.processor = new ProcessorLocal(this);
-    }
-    this.once("error", (err: any) => {
-      // console.log("BBB");
-      this.result.processError(err);
-      setTimeout(() => {
-        this.emit("done", err);
-      },0);
- 
-    });
- 
-    return this;
-  }
-  _transform(chunk: any, encoding: string, cb: Function) {
-    this.processor.process(chunk)
-      .then((result) => {
-        if (result.length > 0) {
-          this.runtime.started = true;
-          return this.result.processResult(result);
-        }
-      })
-      .then(() => {
-        cb();
-      }, (error) => {
-        this.runtime.hasError = true;
-        this.runtime.error = error;
-        this.emit("error", error);
-        cb();
-      });
-  }
-  _flush(cb: Function) {
-    if (this.runtime.csvLineBuffer && this.runtime.csvLineBuffer.length > 0) {
-      const buf = this.runtime.csvLineBuffer;
-      this.runtime.csvLineBuffer = undefined;
-      this.processor.process(buf, true)
-        .then((result) => {
-          if (result.length > 0) {
-            return this.result.processResult(result);
-          }
-        })
-        .then(() => {
-          if (this.runtime.csvLineBuffer && this.runtime.csvLineBuffer.length > 0) {
-            this.emit("error", CSVError.unclosed_quote(this.parsedLineNumber, this.runtime.csvLineBuffer.toString()));
-          } else {
-            this.processEnd(cb);
-          }
-          // cb();
- 
-        }, (err) => {
-          this.emit("error", err);
-          cb();
-        })
-    } else {
-      this.processEnd(cb);
-    }
-  }
-  private processEnd(cb) {
-    this.result.endProcess();
-    this.emit("done");
-    cb();
-  }
-  get parsedLineNumber(): number {
-    return this.runtime.parsedLineNumber;
-  }
-}
-export interface CreateReadStreamOption {
-  flags?: string;
-  encoding?: string;
-  fd?: number;
-  mode?: number;
-  autoClose?: boolean;
-  start?: number;
-  end?: number;
-  highWaterMark?: number;
-}
-export type CallBack = (err: Error, data: Array<any>) => void;
- 
- 
-export type PreFileLineCallback = (line: string, lineNumber: number) => string | PromiseLike<string>;
-export type PreRawDataCallback = (csvString: string) => string | PromiseLike<string>;
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/Processor.ts.html b/node_modules/csvtojson/coverage/csv2json/src/Processor.ts.html deleted file mode 100644 index 474a104..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/Processor.ts.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - Code coverage report for csv2json/src/Processor.ts - - - - - - - -
-
-

- All files / csv2json/src Processor.ts -

-
-
- 100% - Statements - 6/6 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 2/2 -
-
- 100% - Lines - 5/5 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17  -  -  -  -  -  -1x -  -  -75x -75x -75x -  -  -1x -  - 
import { Converter } from "./Converter";
-import P from "bluebird";
-import { JSONResult } from "./lineToJson";
-import { CSVParseParam } from "./Parameters";
-import { ParseRuntime } from "./ParseRuntime";
- 
-export abstract class Processor {
-  protected params: CSVParseParam;
-  protected runtime: ParseRuntime;
-  constructor(protected converter: Converter) {
-    this.params = converter.parseParam;
-    this.runtime = converter.parseRuntime;
-  }
-  abstract process(chunk: Buffer,finalChunk?:boolean): P<ProcessLineResult[]>
-}
-export type ProcessLineResult = string | string[] | JSONResult;
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/ProcessorLocal.test.ts.html b/node_modules/csvtojson/coverage/csv2json/src/ProcessorLocal.test.ts.html deleted file mode 100644 index 8ef7a4b..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/ProcessorLocal.test.ts.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - Code coverage report for csv2json/src/ProcessorLocal.test.ts - - - - - - - -
-
-

- All files / csv2json/src ProcessorLocal.test.ts -

-
-
- 100% - Statements - 23/23 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 3/3 -
-
- 100% - Lines - 21/21 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -291x -1x -  -1x -1x -1x -  -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -  -1x -1x -1x -1x -  -1x -  -  -  - 
import {ProcessorLocal} from "./ProcessorLocal";
-import { Converter } from "./Converter";
-import P from "bluebird";
-import {readFileSync} from "fs";
-import path from "path";
-import assert from "assert";
-import { JSONResult } from "./lineToJson";
-const dataDir=path.join(__dirname,"../test/data/");
-describe("ProcessLocal",()=>{
-  it ("should process csv chunks and output json",async function (){
-    const processor=new ProcessorLocal(new Converter());
-    const data=readFileSync(dataDir+"/complexJSONCSV");
-    const lines=await processor.process(data);
-    assert(lines.length === 2);
-    const line0=lines[0] as JSONResult;
-    assert.equal(line0.fieldA.title,"Food Factory");
-    assert.equal(line0.fieldA.children.length,2);
-    assert.equal(line0.fieldA.children[1].employee[0].name,"Tim");
-  })
-  it ("should process csv chunks and output csv rows",async function (){
-    const processor=new ProcessorLocal(new Converter({output:"line"}));
-    const data=readFileSync(dataDir+"/complexJSONCSV");
-    const lines=await processor.process(data);
-    
-    assert(lines.length === 2);
-  })
-})
- 
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/ProcessorLocal.ts.html b/node_modules/csvtojson/coverage/csv2json/src/ProcessorLocal.ts.html deleted file mode 100644 index 5bd262f..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/ProcessorLocal.ts.html +++ /dev/null @@ -1,810 +0,0 @@ - - - - Code coverage report for csv2json/src/ProcessorLocal.ts - - - - - - - -
-
-

- All files / csv2json/src ProcessorLocal.ts -

-
-
- 93.75% - Statements - 135/144 -
-
- 87.5% - Branches - 77/88 -
-
- 94.12% - Functions - 16/17 -
-
- 93.43% - Lines - 128/137 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -2481x -1x -1x -1x -1x -1x -1x -1x -  -  -75x -75x -75x -75x -1x -154x -68x -  -154x -  -75x -75x -1x -67x -67x -  -67x -  -  -280x -  -154x -28x -  -126x -  -  -154x -  -154x -4x -  -150x -  -  -  -154x -154x -  -  -  -  -  -154x -154x -154x -154x -105x -  -154x -2x -2x -  -  -154x -1x -  -154x -154x -126x -  -28x -28x -  -154x -106x -106x -1x -  -105x -  -106x -106x -  -  -68x -  -38x -  -  -  -  -  -  -48x -  -  -  -1x -68x -8x -4x -  -4x -  -  -60x -60x -60x -60x -60x -60x -59x -59x -59x -  -1x -  -  -60x -  -60x -1x -  -59x -2x -  -57x -  -  -67x -4x -  -67x -4x -4x -  -67x -  -1x -4x -4x -4x -4x -22x -5x -1x -  -  -1x -  -  -4x -  -17x -17x -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -  -  -  -1x -105x -1x -  -104x -104x -104x -2x -  -102x -  -  -  -  -  -  -  -  -  -1x -290x -290x -138x -  -152x -  -  -  -  -1x -1x -1x -1x -  -  -1x -  -  -  -  -1x -  -  -  -  -1x -  -  -1x -1x -1x -1x -1x -  -  -  -  -  -1x -1x -1x -1x -  -1x -  -  -  -  -  - 
import { Processor, ProcessLineResult } from "./Processor";
-import P from "bluebird";
-import { prepareData } from "./dataClean";
-import getEol from "./getEol";
-import { stringToLines } from "./fileline";
-import { bufFromString, filterArray } from "./util";
-import { RowSplit } from "./rowSplit";
-import lineToJson from "./lineToJson";
-import { ParseRuntime } from "./ParseRuntime";
- 
-export class ProcessorLocal extends Processor {
-  private rowSplit: RowSplit = new RowSplit(this.converter);
-  private eolEmitted = false;
-  private _needEmitEol?: boolean = undefined;
-  private get needEmitEol() {
-    if (this._needEmitEol === undefined) {
-      this._needEmitEol = this.converter.listeners("eol").length > 0;
-    }
-    return this._needEmitEol;
-  }
-  private headEmitted = false;
-  private _needEmitHead?: boolean = undefined;
-  private get needEmitHead() {
-    Eif (this._needEmitHead === undefined) {
-      this._needEmitHead = this.converter.listeners("header").length > 0;
-    }
-    return this._needEmitHead;
- 
-  }
-  process(chunk: Buffer, finalChunk = false): P<ProcessLineResult[]> {
-    let csvString: string;
-    if (finalChunk) {
-      csvString = chunk.toString();
-    } else {
-      csvString = prepareData(chunk, this.converter.parseRuntime);
- 
-    }
-    return P.resolve()
-      .then(() => {
-        if (this.runtime.preRawDataHook) {
-          return this.runtime.preRawDataHook(csvString);
-        } else {
-          return csvString;
-        }
-      })
-      .then((csv) => {
-        Eif (csv && csv.length > 0) {
-          return this.processCSV(csv, finalChunk);
-        } else {
-          return P.resolve([]);
-        }
-      })
-  }
-  private processCSV(csv: string, finalChunk: boolean): P<ProcessLineResult[]> {
-    const params = this.params;
-    const runtime = this.runtime;
-    if (!runtime.eol) {
-      getEol(csv, runtime);
-    }
-    if (this.needEmitEol && !this.eolEmitted && runtime.eol) {
-      this.converter.emit("eol", runtime.eol);
-      this.eolEmitted = true;
-    }
-    // trim csv file has initial blank lines.
-    if (params.ignoreEmpty && !runtime.started) {
-      csv = csv.trimLeft();
-    }
-    const stringToLineResult = stringToLines(csv, runtime);
-    if (!finalChunk) {
-      this.prependLeftBuf(bufFromString(stringToLineResult.partial));
-    } else {
-      stringToLineResult.lines.push(stringToLineResult.partial);
-      stringToLineResult.partial = "";
-    }
-    if (stringToLineResult.lines.length > 0) {
-      let prom: P<string[]>;
-      if (runtime.preFileLineHook) {
-        prom = this.runPreLineHook(stringToLineResult.lines);
-      } else {
-        prom = P.resolve(stringToLineResult.lines);
-      }
-      return prom.then((lines) => {
-        if (!runtime.started
-          && !this.runtime.headers
-        ) {
-          return this.processDataWithHead(lines);
-        } else {
-          return this.processCSVBody(lines);
-        }
- 
-      })
- 
-    } else {
- 
-      return P.resolve([]);
-    }
- 
-  }
-  private processDataWithHead(lines: string[]): ProcessLineResult[] {
-    if (this.params.noheader) {
-      if (this.params.headers) {
-        this.runtime.headers = this.params.headers;
-      } else {
-        this.runtime.headers = [];
-      }
-    } else {
-      let left = "";
-      let headerRow: string[] = [];
-      while (lines.length) {
-        const line = left + lines.shift();
-        const row = this.rowSplit.parse(line);
-        if (row.closed) {
-          headerRow = row.cells;
-          left = "";
-          break;
-        } else {
-          left = line + getEol(line, this.runtime);
-        }
-      }
-      this.prependLeftBuf(bufFromString(left));
- 
-      if (headerRow.length === 0) {
-        return [];
-      }
-      if (this.params.headers) {
-        this.runtime.headers = this.params.headers;
-      } else {
-        this.runtime.headers = headerRow;
-      }
-    }
-    if (this.runtime.needProcessIgnoreColumn || this.runtime.needProcessIncludeColumn) {
-      this.filterHeader();
-    }
-    if (this.needEmitHead && !this.headEmitted) {
-      this.converter.emit("header", this.runtime.headers);
-      this.headEmitted = true;
-    }
-    return this.processCSVBody(lines);
-  }
-  private filterHeader() {
-    this.runtime.selectedColumns = [];
-    Eif (this.runtime.headers) {
-      const headers = this.runtime.headers;
-      for (let i = 0; i < headers.length; i++) {
-        if (this.params.ignoreColumns) {
-          if (this.params.ignoreColumns.test(headers[i])) {
-            Iif (this.params.includeColumns && this.params.includeColumns.test(headers[i])) {
-              this.runtime.selectedColumns.push(i);
-            } else {
-              continue;
-            }
-          } else {
-            this.runtime.selectedColumns.push(i);
-          }
-        } else Eif (this.params.includeColumns) {
-          if (this.params.includeColumns.test(headers[i])) {
-            this.runtime.selectedColumns.push(i);
-          }
-        } else {
-          this.runtime.selectedColumns.push(i);
-        }
-        // if (this.params.includeColumns && this.params.includeColumns.test(headers[i])){
-        //   this.runtime.selectedColumns.push(i);
-        // }else{
-        //   if (this.params.ignoreColumns && this.params.ignoreColumns.test(headers[i])){
-        //     continue;
-        //   }else{
-        //     if (this.params.ignoreColumns && !this.params.includeColumns){
-        //       this.runtime.selectedColumns.push(i);
-        //     }
- 
-        //   }
-        // }
-      }
-      this.runtime.headers = filterArray(this.runtime.headers, this.runtime.selectedColumns);
-    }
- 
-  }
-  private processCSVBody(lines: string[]): ProcessLineResult[] {
-    if (this.params.output === "line") {
-      return lines;
-    } else {
-      const result = this.rowSplit.parseMultiLines(lines);
-      this.prependLeftBuf(bufFromString(result.partial));
-      if (this.params.output === "csv") {
-        return result.rowsCells;
-      } else {
-        return lineToJson(result.rowsCells, this.converter);
-      }
-    }
- 
-    // var jsonArr = linesToJson(lines.lines, params, this.recordNum);
-    // this.processResult(jsonArr);
-    // this.lastIndex += jsonArr.length;
-    // this.recordNum += jsonArr.length;
-  }
- 
-  private prependLeftBuf(buf: Buffer) {
-    Eif (buf) {
-      if (this.runtime.csvLineBuffer) {
-        this.runtime.csvLineBuffer = Buffer.concat([buf, this.runtime.csvLineBuffer]);
-      } else {
-        this.runtime.csvLineBuffer = buf;
-      }
-    }
- 
-  }
-  private runPreLineHook(lines: string[]): P<string[]> {
-    return new P((resolve,reject)=>{
-      processLineHook(lines,this.runtime,0,(err)=>{
-        Iif (err){
-          reject(err);
-        }else{
-          resolve(lines);
-        }
-      })
-    });
-  }
-}
- 
-function processLineHook(lines: string[], runtime: ParseRuntime, offset: number,
-  cb: (err?) => void
-) {
-  Iif (lines.length === 0) {
-    cb();
-  } else {
-    Eif (runtime.preFileLineHook) {
-      const line = lines[offset];
-      const res = runtime.preFileLineHook(line, runtime.parsedLineNumber + offset);
-      offset++;
-      Iif (res && (res as PromiseLike<string>).then) {
-        (res as PromiseLike<string>).then((value) => {
-          lines[offset - 1] = value;
-          processLineHook(lines, runtime, offset, cb);
-        });
-      } else {
-        lines[offset - 1] = res as string;
-        while (offset < lines.length) {
-          lines[offset] = runtime.preFileLineHook(lines[offset], runtime.parsedLineNumber + offset) as string;
-          offset++;
-        }
-        cb();
-      }
-    } else {
-      cb();
-    }
-  }
-}
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/Result.ts.html b/node_modules/csvtojson/coverage/csv2json/src/Result.ts.html deleted file mode 100644 index 709be52..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/Result.ts.html +++ /dev/null @@ -1,516 +0,0 @@ - - - - Code coverage report for csv2json/src/Result.ts - - - - - - - -
-
-

- All files / csv2json/src Result.ts -

-
-
- 87.32% - Statements - 62/71 -
-
- 79.25% - Branches - 42/53 -
-
- 86.67% - Functions - 13/15 -
-
- 86.96% - Lines - 60/69 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150  -  -1x -  -  -1x -1x -94x -  -  -1x -102x -63x -  -102x -  -1x -155x -  -73x -73x -94x -94x -  -94x -94x -31x -  -  -  -  -  -31x -  -  -31x -31x -  -  -  -  -63x -63x -  -  -  -1x -94x -73x -  -94x -  -1x -6x -  -  -6x -2x -  -  -1x -61x -46x -46x -  -  -61x -  -  -  -1x -  -  -  -  -  -  -  -  -  -31x -  -  -31x -23x -23x -23x -23x -  -23x -  -  -  -  -  -23x -1x -  -23x -10592x -10592x -10592x -10592x -1x -  -  -23x -  -  -  -  -  -  -  -  -  -8x -8x -10584x -10584x -  -  -  -8x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -10586x -10584x -  -2x -  - 
import { Converter } from "./Converter";
-import { ProcessLineResult } from "./Processor";
-import P from "bluebird";
-import CSVError from "./CSVError";
- 
-export class Result {
-  private get needEmitLine(): boolean {
-    return !!this.converter.parseRuntime.subscribe && !!this.converter.parseRuntime.subscribe.onNext || this.needPushDownstream
-  }
-  private _needPushDownstream?: boolean;
-  private get needPushDownstream(): boolean {
-    if (this._needPushDownstream === undefined) {
-      this._needPushDownstream = this.converter.listeners("data").length > 0 || this.converter.listeners("readable").length > 0;
-    }
-    return this._needPushDownstream;
-  }
-  private get needEmitAll(): boolean {
-    return !!this.converter.parseRuntime.then;
-  }
-  private finalResult: any[] = [];
-  constructor(private converter: Converter) { }
-  processResult(resultLines: ProcessLineResult[]): P<any> {
-    const startPos = this.converter.parseRuntime.parsedLineNumber;
-    // let prom: P<any>;
-    return new P((resolve, reject) => {
-      if (this.needEmitLine) {
-        processLineByLine(
-          resultLines,
-          this.converter,
-          0,
-          this.needPushDownstream,
-          (err) => {
-            Iif (err) {
-              reject(err);
-            } else {
-              this.appendFinalResult(resultLines);
-              resolve();
-            }
-          },
-        )
-      } else {
-        this.appendFinalResult(resultLines);
-        resolve();
-      }
-    })
-  }
-  appendFinalResult(lines: any[]) {
-    if (this.needEmitAll) {
-      this.finalResult = this.finalResult.concat(lines);
-    }
-    this.converter.parseRuntime.parsedLineNumber += lines.length;
-  }
-  processError(err: CSVError) {
-    Iif (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onError) {
-      this.converter.parseRuntime.subscribe.onError(err);
-    }
-    if (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onrejected) {
-      this.converter.parseRuntime.then.onrejected(err);
-    }
-  }
-  endProcess() {
-    if (this.needEmitAll) {
-      Eif (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onfulfilled) {
-        this.converter.parseRuntime.then.onfulfilled(this.finalResult);
-      }
-    }
-    Iif (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onCompleted) {
-      this.converter.parseRuntime.subscribe.onCompleted();
-    }
-  }
-}
- 
-function processLineByLine(
-  lines: ProcessLineResult[],
- 
-  conv: Converter,
-  offset: number,
-  needPushDownstream: boolean,
-  cb: (err?) => void,
-) {
-  Iif (lines.length === 0) {
-    cb();
-  } else {
-    if (conv.parseRuntime.subscribe && conv.parseRuntime.subscribe.onNext) {
-      const hook = conv.parseRuntime.subscribe.onNext;
-      const nextLine = lines[offset];
-      const res = hook(nextLine, conv.parseRuntime.parsedLineNumber + offset);
-      offset++;
-      // if (isAsync === undefined) {
-      Iif (res && res.then) {
-        res.then(function () {
-          processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine);
-        }, cb);
-      } else {
-        // processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, false);
-        if (needPushDownstream){
-          pushDownstream(conv,nextLine);
-        }
-        while (offset<lines.length){
-          const line=lines[offset];
-          hook(line, conv.parseRuntime.parsedLineNumber + offset);
-          offset++;
-          if (needPushDownstream){
-            pushDownstream(conv,line);
-          }
-        }
-        cb();
-      }
-      // } else if (isAsync === true) {
-      //   (res as PromiseLike<void>).then(function () {
-      //     processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, true);
-      //   }, cb);
-      // } else if (isAsync === false) {
-      //   processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, false);
-      // }
-    } else {
-      Eif (needPushDownstream) {
-        while (offset<lines.length) {
-          const line = lines[offset++];
-          pushDownstream(conv, line);
-        }
-        
-      }
-      cb();
-    }
- 
-  }
-}
- 
-function processRecursive(
-  lines: ProcessLineResult[],
-  hook: (data: any, lineNumber: number) => void | PromiseLike<void>,
-  conv: Converter,
-  offset: number,
-  needPushDownstream: boolean,
-  cb: (err?) => void,
-  res: ProcessLineResult,
-) {
-  if (needPushDownstream) {
-    pushDownstream(conv, res);
-  }
-  processLineByLine(lines, conv, offset, needPushDownstream, cb);
-}
-function pushDownstream(conv: Converter, res: ProcessLineResult) {
-  if (typeof res === "object" && !conv.options.objectMode) {
-    conv.push(JSON.stringify(res) + "\n", "utf8");
-  } else {
-    conv.push(res);
-  }
-}
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/Worker.ts.html b/node_modules/csvtojson/coverage/csv2json/src/Worker.ts.html deleted file mode 100644 index 09ce1f6..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/Worker.ts.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - Code coverage report for csv2json/src/Worker.ts - - - - - - - -
-
-

- All files / csv2json/src Worker.ts -

-
-
- 0% - Statements - 0/0 -
-
- 0% - Branches - 0/0 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/0 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7  -  -  -  -  -  - 
import { Converter } from "./Converter";
- 
-export class Worker {
-  constructor(converter: Converter) {
- 
-  }
-}
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/dataClean.ts.html b/node_modules/csvtojson/coverage/csv2json/src/dataClean.ts.html deleted file mode 100644 index e065b8f..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/dataClean.ts.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - Code coverage report for csv2json/src/dataClean.ts - - - - - - - -
-
-

- All files / csv2json/src dataClean.ts -

-
-
- 100% - Statements - 7/7 -
-
- 75% - Branches - 3/4 -
-
- 100% - Functions - 1/1 -
-
- 100% - Lines - 7/7 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63  -  -  -  -  -  -  -1x -126x -126x -  -126x -  -  -  -  -  -126x -  -  -  -  -  -  -  -14x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -126x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ParseRuntime } from "./ParseRuntime";
-import stripBom from "strip-bom";
-/**
- * For each data chunk coming to parser:
- * 1. append the data to the buffer that is left from last chunk
- * 2. check if utf8 chars being split, if does, stripe the bytes and add to left buffer.
- * 3. stripBom 
- */
-export function prepareData(chunk: Buffer, runtime: ParseRuntime): string {
-  const workChunk = concatLeftChunk(chunk, runtime);
-  runtime.csvLineBuffer = undefined;
-  const cleanCSVString = cleanUtf8Split(workChunk, runtime).toString("utf8");
-  if (runtime.started === false) {
-    return stripBom(cleanCSVString);
-  } else {
-    return cleanCSVString;
-  }
-}I
-/**
- *  append data to buffer that is left form last chunk
- */
-function concatLeftChunk(chunk: Buffer, runtime: ParseRuntime): Buffer {
-  if (runtime.csvLineBuffer && runtime.csvLineBuffer.length > 0) {
-    return Buffer.concat([runtime.csvLineBuffer, chunk]);
-  } else {
-    return chunk;
-  }
-}
-/**
- * check if utf8 chars being split, if does, stripe the bytes and add to left buffer.
- */
-function cleanUtf8Split(chunk: Buffer, runtime: ParseRuntime): Buffer {
-  let idx = chunk.length - 1;
-  /**
-   * From Keyang:
-   * The code below is to check if a single utf8 char (which could be multiple bytes) being split.
-   * If the char being split, the buffer from two chunk needs to be concat
-   * check how utf8 being encoded to understand the code below. 
-   * If anyone has any better way to do this, please let me know.
-   */
-  if ((chunk[idx] & 1 << 7) != 0) {
-    while ((chunk[idx] & 3 << 6) === 128) {
-      idx--;
-    }
-    idx--;
-  }
-  if (idx != chunk.length - 1) {
-    runtime.csvLineBuffer = chunk.slice(idx + 1);
-    return chunk.slice(0, idx + 1)
-    // var _cb=cb;
-    // var self=this;
-    // cb=function(){
-    //   if (self._csvLineBuffer){
-    //     self._csvLineBuffer=Buffer.concat([bufFromString(self._csvLineBuffer,"utf8"),left]);
-    //   }else{
-    //     self._csvLineBuffer=left;
-    //   }
-    //   _cb();
-    // }
-  } else {
-    return chunk;
-  }
-}
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/fileline.test.ts.html b/node_modules/csvtojson/coverage/csv2json/src/fileline.test.ts.html deleted file mode 100644 index 3cfaa95..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/fileline.test.ts.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - Code coverage report for csv2json/src/fileline.test.ts - - - - - - - -
-
-

- All files / csv2json/src fileline.test.ts -

-
-
- 100% - Statements - 4/4 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 100% - Lines - 4/4 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15  -  -1x -  -  -1x -1x -1x -  -  -  -  -  -  - 
import {stringToLines} from "./fileline";
-import { mergeParams } from "./Parameters";
-import { Converter } from "./Converter";
-var assert = require("assert");
-describe("fileline function", function() {
-  it ("should convert data to multiple lines ", function() {
-    const conv=new Converter();
-    var data = "abcde\nefef";
-    var result = stringToLines(data, conv.parseRuntime);
-    assert.equal(result.lines.length, 1);
-    assert.equal(result.partial, "efef");
-    assert.equal(result.lines[0], "abcde");
-  });
-});
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/fileline.ts.html b/node_modules/csvtojson/coverage/csv2json/src/fileline.ts.html deleted file mode 100644 index a5f64ed..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/fileline.ts.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - Code coverage report for csv2json/src/fileline.ts - - - - - - - -
-
-

- All files / csv2json/src fileline.ts -

-
-
- 100% - Statements - 2/2 -
-
- 100% - Branches - 2/2 -
-
- 100% - Functions - 0/0 -
-
- 100% - Lines - 2/2 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25  -  -  -  -  -  -  -  -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ParseRuntime } from "./ParseRuntime";
-import getEol from "./getEol";
-// const getEol = require("./getEol");
-/**
- * convert data chunk to file lines array
- * @param  {string} data  data chunk as utf8 string
- * @param  {object} param Converter param object
- * @return {Object}   {lines:[line1,line2...],partial:String}
- */
-export function stringToLines(data: string, param: ParseRuntime): StringToLinesResult {
-  const eol = getEol(data, param);
-  const lines = data.split(eol);
-  const partial = lines.pop() || "";
-  return { lines: lines, partial: partial };
-};
- 
- 
-export interface StringToLinesResult {
-  lines: Fileline[],
-  /**
-   * last line which could be incomplete line.
-   */
-  partial: string
-}
-export type Fileline = string;
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/getEol.ts.html b/node_modules/csvtojson/coverage/csv2json/src/getEol.ts.html deleted file mode 100644 index 343647b..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/getEol.ts.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - Code coverage report for csv2json/src/getEol.ts - - - - - - - -
-
-

- All files / csv2json/src getEol.ts -

-
-
- 0% - Statements - 0/0 -
-
- 0% - Branches - 3/3 -
-
- 0% - Functions - 0/0 -
-
- 0% - Lines - 0/0 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ParseRuntime } from "./ParseRuntime";
-//return first eol found from a data chunk.
-export default function (data: string, param: ParseRuntime): string {
-  if (!param.eol && data) {
-    for (var i = 0, len = data.length; i < len; i++) {
-      if (data[i] === "\r") {
-        if (data[i + 1] === "\n") {
-          param.eol = "\r\n";
-          break;
-        } else if (data[i + 1]) {
-          param.eol = "\r";
-          break;
-        } 
-      } else if (data[i] === "\n") {
-        param.eol = "\n";
-        break;
-      }
-    }
-  }
-  return param.eol || "\n";
-};
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/index.html b/node_modules/csvtojson/coverage/csv2json/src/index.html deleted file mode 100644 index 9c4554d..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/index.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - Code coverage report for csv2json/src - - - - - - - -
-
-

- All files csv2json/src -

-
-
- 93.69% - Statements - 594/634 -
-
- 86.56% - Branches - 277/320 -
-
- 91% - Functions - 91/100 -
-
- 93.47% - Lines - 573/613 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
CSVError.ts
88.24%15/1775%3/466.67%4/687.5%14/16
Converter.ts
94%94/10084.62%22/2696.43%27/2893.62%88/94
Processor.ts
100%6/6100%0/0100%2/2100%5/5
ProcessorLocal.test.ts
100%23/23100%0/0100%3/3100%21/21
ProcessorLocal.ts
93.75%135/14487.5%77/8894.12%16/1793.43%128/137
Result.ts
87.32%62/7179.25%42/5386.67%13/1586.96%60/69
Worker.ts
0%0/00%0/00%0/10%0/0
dataClean.ts
100%7/775%3/4100%1/1100%7/7
fileline.test.ts
100%4/4100%0/0100%0/0100%4/4
fileline.ts
100%2/2100%2/2100%0/0100%2/2
getEol.ts
0%0/00%3/30%0/00%0/0
index.ts
100%5/5100%0/0100%1/1100%5/5
lineToJson.ts
91.92%91/9986.75%72/8392.86%13/1491.92%91/99
rowSplit.test.ts
100%31/31100%0/0100%0/0100%31/31
rowSplit.ts
95.08%116/12294.55%52/5591.67%11/1295.04%115/121
test.ts
0%0/00%0/00%0/00%0/0
util.ts
100%3/350%1/2100%0/0100%2/2
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/index.ts.html b/node_modules/csvtojson/coverage/csv2json/src/index.ts.html deleted file mode 100644 index 4559d23..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/index.ts.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - Code coverage report for csv2json/src/index.ts - - - - - - - -
-
-

- All files / csv2json/src index.ts -

-
-
- 100% - Statements - 5/5 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 1/1 -
-
- 100% - Lines - 5/5 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9  -  -1x -1x -15x -  -  -1x -1x
import { TransformOptions } from "stream";
-import { CSVParseParam } from "./Parameters";
-import { Converter } from "./Converter";
-const helper = function (param?: Partial<CSVParseParam>, options?: TransformOptions): Converter {
-  return new Converter(param, options);
-}
- 
-helper["Converter"] = Converter;
-export =helper;
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/lineToJson.ts.html b/node_modules/csvtojson/coverage/csv2json/src/lineToJson.ts.html deleted file mode 100644 index db476bc..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/lineToJson.ts.html +++ /dev/null @@ -1,660 +0,0 @@ - - - - Code coverage report for csv2json/src/lineToJson.ts - - - - - - - -
-
-

- All files / csv2json/src lineToJson.ts -

-
-
- 91.92% - Statements - 91/99 -
-
- 86.75% - Branches - 72/83 -
-
- 92.86% - Functions - 13/14 -
-
- 91.92% - Lines - 91/99 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198  -1x -  -1x -  -  -1x -  -1x -102x -102x -32101x -32099x -32090x -  -  -100x -  -  -  -  -  -  -  -32101x -2x -  -  -32099x -32099x -32099x -32090x -  -9x -  -  -  -  -32099x -32099x -  -32099x -65788x -  -65788x -7x -  -65781x -  -65781x -65781x -50x -  -65781x -65781x -6x -6x -6x -  -  -  -  -  -  -65775x -75x -75x -  -65775x -65775x -  -  -  -32099x -32090x -  -9x -  -  -  -1x -  -  -  -  -  -65781x -65243x -  -538x -538x -533x -  -5x -1x -  -5x -4x -4x -4x -4x -  -  -  -1x -1x -  -  -  -  -  -  -65781x -538x -3x -  -535x -103x -1x -  -102x -  -  -432x -  -  -  -65781x -  -  -  -  -64992x -  -  -789x -  -  -  -  -75x -9x -66x -  -66x -  -66x -66x -  -  -  -  -  -  -13x -13x -  -  -13x -  -  -  -60x -  -  -  -75x -75x -13x -  -62x -13x -49x -2x -47x -5x -  -42x -  -  -  -  -2x -2x -  -  -2x -  -  -  -  -5x -5x -  -  -  -  - 
import { Converter } from "./Converter";
-import CSVError from "./CSVError";
-import { CellParser, ColumnParam } from "./Parameters";
-import set from "lodash/set";
-import { ParseRuntime } from "./ParseRuntime";
- 
-var numReg = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;
- 
-export default function (csvRows: string[][], conv: Converter): JSONResult[] {
-  const res: JSONResult[] = [];
-  for (let i = 0, len = csvRows.length; i < len; i++) {
-    const r = processRow(csvRows[i], conv, i);
-    if (r) {
-      res.push(r);
-    }
-  }
-  return res;
-};
-export type JSONResult = {
-  [key: string]: any
-}
- 
-function processRow(row: string[], conv: Converter, index): JSONResult | null {
- 
-  if (conv.parseParam.checkColumn && conv.parseRuntime.headers && row.length !== conv.parseRuntime.headers.length) {
-    throw (CSVError.column_mismatched(conv.parseRuntime.parsedLineNumber + index))
-  }
- 
-  const headRow = conv.parseRuntime.headers || [];
-  const resultRow = convertRowToJson(row, headRow, conv);
-  if (resultRow) {
-    return resultRow;
-  } else {
-    return null;
-  }
-}
- 
-function convertRowToJson(row: string[], headRow: string[], conv: Converter): { [key: string]: any } | null {
-  let hasValue = false;
-  const resultRow = {};
-  
-  for (let i = 0, len = row.length; i < len; i++) {
-    let item = row[i];
- 
-    if (conv.parseParam.ignoreEmpty && item === '') {
-      continue;
-    }
-    hasValue = true;
- 
-    let head = headRow[i];
-    if (!head || head === "") {
-      head = headRow[i] = "field" + (i + 1);
-    }
-    const convFunc = getConvFunc(head, i, conv);
-    if (convFunc) {
-      const convRes = convFunc(item, head, resultRow, row, i);
-      Eif (convRes !== undefined) {
-        setPath(resultRow, head, convRes, conv,i);
-      }
-    } else {
-      // var flag = getFlag(head, i, param);
-      // if (flag === 'omit') {
-      //   continue;
-      // }
-      if (conv.parseParam.checkType) {
-        const convertFunc = checkType(item, head, i, conv);
-        item = convertFunc(item);
-      }
-      Eif (item !== undefined) {
-        setPath(resultRow, head, item, conv,i);
-      }
-    }
-  }
-  if (hasValue) {
-    return resultRow;
-  } else {
-    return null;
-  }
-}
- 
-const builtInConv: { [key: string]: CellParser } = {
-  "string": stringType,
-  "number": numberType,
-  "omit": function () { }
-}
-function getConvFunc(head: string, i: number, conv: Converter): CellParser | null {
-  if (conv.parseRuntime.columnConv[i] !== undefined) {
-    return conv.parseRuntime.columnConv[i];
-  } else {
-    let flag = conv.parseParam.colParser[head];
-    if (flag === undefined) {
-      return conv.parseRuntime.columnConv[i] = null;
-    }
-    if (typeof flag === "object") {
-      flag = (flag as ColumnParam).cellParser || "string";
-    }
-    if (typeof flag === "string") {
-      flag = flag.trim().toLowerCase();
-      const builtInFunc = builtInConv[flag];
-      Eif (builtInFunc) {
-        return conv.parseRuntime.columnConv[i] = builtInFunc;
-      } else {
-        return conv.parseRuntime.columnConv[i] = null;
-      }
-    } else Eif (typeof flag === "function") {
-      return conv.parseRuntime.columnConv[i] = flag;
-    } else {
-      return conv.parseRuntime.columnConv[i] = null;
-    }
-  }
-}
-function setPath(resultJson: any, head: string, value: any, conv: Converter,headIdx:number) {
-  if (!conv.parseRuntime.columnValueSetter[headIdx]) {
-    if (conv.parseParam.flatKeys) {
-      conv.parseRuntime.columnValueSetter[headIdx] = flatSetter;
-    } else {
-      if (head.indexOf(".") > -1) {
-        if (conv.parseParam.colParser[head] && (conv.parseParam.colParser[head] as ColumnParam).flat) {
-          conv.parseRuntime.columnValueSetter[headIdx] = flatSetter;
-        } else {
-          conv.parseRuntime.columnValueSetter[headIdx] = jsonSetter;
-        }
-      } else {
-        conv.parseRuntime.columnValueSetter[headIdx] = flatSetter;
-      }
-    }
-  }
-  conv.parseRuntime.columnValueSetter[headIdx](resultJson, head, value);
-  // flatSetter(resultJson, head, value);
- 
-}
-function flatSetter(resultJson: any, head: string, value: any) {
-  resultJson[head] = value;
-}
-function jsonSetter(resultJson: any, head: string, value: any) {
-  set(resultJson, head, value);
-}
- 
- 
-function checkType(item: string, head: string, headIdx: number, conv: Converter): Function {
-  if (conv.parseRuntime.headerType[headIdx]) {
-    return conv.parseRuntime.headerType[headIdx];
-  } else Iif (head.indexOf('number#!') > -1) {
-    return conv.parseRuntime.headerType[headIdx] = numberType;
-  } else Iif (head.indexOf('string#!') > -1) {
-    return conv.parseRuntime.headerType[headIdx] = stringType;
-  } else Eif (conv.parseParam.checkType) {
-    return conv.parseRuntime.headerType[headIdx] = dynamicType;
-  } else {
-    return conv.parseRuntime.headerType[headIdx] = stringType;
-  }
-}
- 
-function numberType(item) {
-  var rtn = parseFloat(item);
-  Iif (isNaN(rtn)) {
-    return item;
-  }
-  return rtn;
-}
- 
-function stringType(item: string): string {
-  return item.toString();
-}
- 
-function dynamicType(item) {
-  var trimed = item.trim();
-  if (trimed === "") {
-    return stringType(item);
-  }
-  if (numReg.test(trimed)) {
-    return numberType(item);
-  } else if (trimed.length === 5 && trimed.toLowerCase() === "false" || trimed.length === 4 && trimed.toLowerCase() === "true") {
-    return booleanType(item);
-  } else if (trimed[0] === "{" && trimed[trimed.length - 1] === "}" || trimed[0] === "[" && trimed[trimed.length - 1] === "]") {
-    return jsonType(item);
-  } else {
-    return stringType(item);
-  }
-}
- 
-function booleanType(item) {
-  var trimed = item.trim();
-  Iif (trimed.length === 5 && trimed.toLowerCase() === "false") {
-    return false;
-  } else {
-    return true;
-  }
-}
- 
-function jsonType(item) {
-  try {
-    return JSON.parse(item);
-  } catch (e) {
-    return item;
-  }
-}
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/rowSplit.test.ts.html b/node_modules/csvtojson/coverage/csv2json/src/rowSplit.test.ts.html deleted file mode 100644 index 3124c1c..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/rowSplit.test.ts.html +++ /dev/null @@ -1,399 +0,0 @@ - - - - Code coverage report for csv2json/src/rowSplit.test.ts - - - - - - - -
-
-

- All files / csv2json/src rowSplit.test.ts -

-
-
- 100% - Statements - 31/31 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 100% - Lines - 31/31 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -1111x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -4x -1x -  -  -  -  -  -1x -1x -1x -  -  -  -  -1x -1x -  -1x -  -  -  -1x -1x -  -1x -  -  -  -  -1x -  -  -  -  -1x -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -1x -1x -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -1x -1x -  -  -  -  -  -1x -  -1x -  -  -  -1x -3x -1x -  -1x -  -  -  -1x -1x -  -1x - 
import { RowSplit, MultipleRowResult, RowSplitResult } from "./rowSplit";
-import { Converter } from "./Converter";
-const assert = require("assert");
- 
-describe("Test delimiters", function () {
-  const getDelimiter = (str, opt: { delimiter: string | string[] }): string => {
-    return RowSplit.prototype["getDelimiter"].call({
-      conv: {
-        parseParam: {
-          delimiter: opt.delimiter
-        }
-      }
-    }, str);
-  }
- 
-  it("should return the explicitly specified delimiter", function () {
-    var delimiter = ";";
-    var rowStr = "a;b;c";
-    var returnedDelimiter = getDelimiter(rowStr, { delimiter: ";" });
-    assert.equal(returnedDelimiter, delimiter);
-  });
- 
-  it("should return the autodetected delimiter if 'auto' specified", function () {
-    var rowStr = "a;b;c";
-    var returnedDelimiter = getDelimiter(rowStr, { delimiter: "auto" });
-    assert(returnedDelimiter === ";");
-  });
- 
-  it("should return the ',' delimiter if delimiter cannot be specified, in case of 'auto'", function () {
-    var rowStr = "abc";
-    var returnedDelimiter = getDelimiter(rowStr, { delimiter: "auto" });
-    assert(returnedDelimiter === ",");
-  });
- 
-  it("should accetp an array with potential delimiters", function () {
-    var rowStr = "a$b$c";
-    var returnedDelimiter = getDelimiter(rowStr, { delimiter: [",", ";", "$"] });
-    assert(returnedDelimiter === '$');
-  });
-});
- 
-describe("ParseMultiLine function", function () {
-  const rowSplit = new RowSplit(new Converter());
-  const func = (lines: string[]): MultipleRowResult => {
-    return rowSplit.parseMultiLines(lines);
-  }
-  it("should convert lines to csv lines", function () {
-    var lines = [
-      "a,b,c,d",
-      "hello,world,csvtojson,abc",
-      "1,2,3,4"
-    ];
-    var res = func(lines);
-    assert.equal(res.rowsCells.length, 3);
-    assert.equal(res.partial, "");
-  });
- 
-  it("should process line breaks", function () {
-    var lines = [
-      "a,b,c",
-      '15",hello,"ab',
-      "cde\"",
-      "\"b\"\"b\",cc,dd"
-    ];
-    var res = func(lines);
-    assert.equal(res.rowsCells.length, 3);
-    assert.equal(res.rowsCells[1][0], "15\"");
-    assert.equal(res.rowsCells[1][2], "ab\ncde");
-    assert.equal(res.rowsCells[2][0], "b\"b");
-    assert.equal(res.partial, "");
-  });
- 
-  it("should return partial if line not closed", function () {
-    var lines = [
-      "a,b,c",
-      '15",hello,"ab',
-      "d,e,f"
-    ];
-    var res = func(lines);
-    assert.equal(res.rowsCells.length, 1);
-    assert.equal(res.partial, "15\",hello,\"ab\nd,e,f\n");
-  });
-});
- 
-describe("RowSplit.parse function", function () {
-  const rowSplit = new RowSplit(new Converter());
-  const func = (str): RowSplitResult => {
-    return rowSplit.parse(str);
-  }
-  it("should split complete csv line", function () {
-    var str = "hello,world,csvtojson,awesome";
-    var res = func(str);
-    assert.equal(res.cells.length, 4);
-    assert.equal(res.closed, true);
-  });
- 
-  it("should split incomplete csv line", function () {
-    var str = "hello,world,\"csvtojson,awesome";
-    var res = func(str);
-    assert.equal(res.closed, false);
-  });
- 
-  it("should allow multiple line", function () {
-    var str = "\"he\"llo\",world,\"csvtojson,a\"\nwesome\"";
-    var res = func(str);
-    assert.equal(res.closed, true);
-    assert.equal(res.cells[2], 'csvtojson,a"\nwesome');
-  });
- 
-});
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/rowSplit.ts.html b/node_modules/csvtojson/coverage/csv2json/src/rowSplit.ts.html deleted file mode 100644 index 3a5b0de..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/rowSplit.ts.html +++ /dev/null @@ -1,666 +0,0 @@ - - - - Code coverage report for csv2json/src/rowSplit.ts - - - - - - - -
-
-

- All files / csv2json/src rowSplit.ts -

-
-
- 95.08% - Statements - 116/122 -
-
- 94.55% - Branches - 52/55 -
-
- 91.67% - Functions - 11/12 -
-
- 95.04% - Lines - 115/121 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200  -  -  -1x -1x -  -1x -1x -  -  -  -77x -77x -77x -1x -32192x -70x -  -32192x -  -77x -77x -77x -77x -  -1x -32200x -8x -  -32192x -32192x -32192x -32192x -4x -  -  -32192x -2x -2x -  -32192x -32192x -32192x -  -  -32192x -  -  -  -1x -32192x -32192x -32192x -32192x -66757x -66757x -66625x -  -66757x -66757x -66643x -158x -158x -107x -107x -107x -107x -  -51x -51x -51x -  -  -66485x -66473x -  -66485x -66485x -  -  -114x -26x -26x -26x -26x -26x -26x -  -26x -26x -  -88x -  -  -  -  -  -  -  -  -32192x -  -1x -  -8x -6x -2x -1x -  -1x -  -7x -7x -7x -33x -33x -13x -13x -  -  -7x -  -1x -66643x -66643x -66643x -  -  -  -1x -272x -272x -272x -266x -  -272x -272x -272x -191x -191x -  -272x -  -  -1x -  -  -  -  -  -  -  -  -  -1x -133x -133x -25x -  -133x -  -133x -  -1x -107x -107x -107x -32137x -32137x -32137x -32116x -18x -  -32098x -  -  -32116x -  -21x -  -  -107x -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { CSVParseParam } from "./Parameters";
-import { Converter } from "./Converter";
-import { Fileline } from "./fileline";
-import getEol from "./getEol";
-import { filterArray } from "./util";
- 
-const defaulDelimiters = [",", "|", "\t", ";", ":"];
-export class RowSplit {
-  private quote: string;
-  private trim: boolean;
-  private escape: string;
-  private cachedRegExp: { [key: string]: RegExp } = {};
-  private delimiterEmitted = false;
-  private _needEmitDelimiter?: boolean = undefined;
-  private get needEmitDelimiter() {
-    if (this._needEmitDelimiter === undefined) {
-      this._needEmitDelimiter = this.conv.listeners("delimiter").length > 0;
-    }
-    return this._needEmitDelimiter;
-  }
-  constructor(private conv: Converter) {
-    this.quote = conv.parseParam.quote;
-    this.trim = conv.parseParam.trim;
-    this.escape = conv.parseParam.escape;
-  }
-  parse(fileline: Fileline): RowSplitResult {
-    if (fileline === "") {
-      return { cells: [], closed: true };
-    }
-    const quote = this.quote;
-    const trim = this.trim;
-    const escape = this.escape;
-    if (this.conv.parseRuntime.delimiter instanceof Array || this.conv.parseRuntime.delimiter.toLowerCase() === "auto") {
-      this.conv.parseRuntime.delimiter = this.getDelimiter(fileline);
- 
-    }
-    if (this.needEmitDelimiter && !this.delimiterEmitted) {
-      this.conv.emit("delimiter", this.conv.parseRuntime.delimiter);
-      this.delimiterEmitted = true;
-    }
-    const delimiter = this.conv.parseRuntime.delimiter;
-    const rowArr = fileline.split(delimiter);
-    Iif (quote === "off") {
-      return { cells: rowArr, closed: true };
-    } else {
-      return this.toCSVRow(rowArr, trim, quote, delimiter);
-    }
- 
-  }
-  private toCSVRow(rowArr: string[], trim: boolean, quote: string, delimiter: string): RowSplitResult {
-    const row: string[] = [];
-    let inquote = false;
-    let quoteBuff = '';
-    for (let i = 0, rowLen = rowArr.length; i < rowLen; i++) {
-      let e = rowArr[i];
-      if (!inquote && trim) {
-        e = e.trimLeft();
-      }
-      const len = e.length;
-      if (!inquote) {
-        if (this.isQuoteOpen(e)) { //quote open
-          e = e.substr(1);
-          if (this.isQuoteClose(e)) { //quote close
-            e = e.substring(0, e.lastIndexOf(quote));
-            e = this.escapeQuote(e);
-            row.push(e);
-            continue;
-          } else {
-            inquote = true;
-            quoteBuff += e;
-            continue;
-          }
-        } else {
-          if (trim) {
-            e = e.trimRight();
-          }
-          row.push(e);
-          continue;
-        }
-      } else { //previous quote not closed
-        if (this.isQuoteClose(e)) { //close double quote
-          inquote = false;
-          e = e.substr(0, len - 1);
-          quoteBuff += delimiter + e;
-          quoteBuff = this.escapeQuote(quoteBuff);
-          Eif (trim) {
-            quoteBuff = quoteBuff.trimRight();
-          }
-          row.push(quoteBuff);
-          quoteBuff = "";
-        } else {
-          quoteBuff += delimiter + e;
-        }
-      }
-    }
- 
-    // if (!inquote && param._needFilterRow) {
-    //   row = filterRow(row, param);
-    // }
- 
-    return { cells: row, closed: !inquote };
-  }
-  private getDelimiter(fileline: Fileline): string {
-    let checker;
-    if (this.conv.parseParam.delimiter === "auto") {
-      checker = defaulDelimiters;
-    } else if (this.conv.parseParam.delimiter instanceof Array) {
-      checker = this.conv.parseParam.delimiter;
-    } else {
-      return this.conv.parseParam.delimiter;
-    }
-    let count = 0;
-    let rtn = ",";
-    checker.forEach(function (delim) {
-      const delimCount = fileline.split(delim).length;
-      if (delimCount > count) {
-        rtn = delim;
-        count = delimCount;
-      }
-    });
-    return rtn;
-  }
-  private isQuoteOpen(str: string): boolean {
-    const quote = this.quote;
-    const escape = this.escape;
-    return str[0] === quote && (
-      str[1] !== quote ||
-      str[1] === escape && (str[2] === quote || str.length === 2));
-  }
-  private isQuoteClose(str: string): boolean {
-    const quote = this.quote;
-    const escape = this.escape;
-    if (this.conv.parseParam.trim) {
-      str = str.trimRight();
-    }
-    let count = 0;
-    let idx = str.length - 1;
-    while (str[idx] === quote || str[idx] === escape) {
-      idx--;
-      count++;
-    }
-    return count % 2 !== 0;
-  }
- 
-  private twoDoubleQuote(str: string): string {
-    var twoQuote = this.quote + this.quote;
-    var curIndex = -1;
-    while ((curIndex = str.indexOf(twoQuote, curIndex)) > -1) {
-      str = str.substring(0, curIndex) + str.substring(++curIndex);
-    }
-    return str;
-  }
- 
- 
-  private escapeQuote(segment: string): string {
-    const key = "es|" + this.quote + "|" + this.escape;
-    if (this.cachedRegExp[key] === undefined) {
-      this.cachedRegExp[key] = new RegExp('\\' + this.escape + '\\' + this.quote, 'g');
-    }
-    const regExp = this.cachedRegExp[key];
-    // console.log(regExp,segment);
-    return segment.replace(regExp, this.quote);
-  }
-  parseMultiLines(lines: Fileline[]): MultipleRowResult {
-    const csvLines: string[][] = [];
-    let left = "";
-    while (lines.length) {
-      const line = left + lines.shift();
-      const row = this.parse(line);
-      if (row.closed || this.conv.parseParam.alwaysSplitAtEOL) {
-        if (this.conv.parseRuntime.selectedColumns) {
-          csvLines.push(filterArray(row.cells, this.conv.parseRuntime.selectedColumns));
-        } else {
-          csvLines.push(row.cells);
-        }
- 
-        left = "";
-      } else {
-        left = line + (getEol(line, this.conv.parseRuntime) || "\n");
-      }
-    }
-    return { rowsCells: csvLines, partial: left };
-  }
-}
-export interface MultipleRowResult {
-  rowsCells: string[][];
-  partial: string;
-}
-export interface RowSplitResult {
-  /**
-   * csv row array. ["a","b","c"]
-   */
-  cells: string[],
-  /**
-   * if the passed fileline is a complete row
-   */
-  closed: boolean
-}
- 
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/test.ts.html b/node_modules/csvtojson/coverage/csv2json/src/test.ts.html deleted file mode 100644 index 217549b..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/test.ts.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - Code coverage report for csv2json/src/test.ts - - - - - - - -
-
-

- All files / csv2json/src test.ts -

-
-
- 0% - Statements - 0/0 -
-
- 0% - Branches - 0/0 -
-
- 0% - Functions - 0/0 -
-
- 0% - Lines - 0/0 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5  -  -  -  - 
import a from "./index";
- 
- 
-// a("sss","CCc");
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/src/util.ts.html b/node_modules/csvtojson/coverage/csv2json/src/util.ts.html deleted file mode 100644 index d79d6d6..0000000 --- a/node_modules/csvtojson/coverage/csv2json/src/util.ts.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - Code coverage report for csv2json/src/util.ts - - - - - - - -
-
-

- All files / csv2json/src util.ts -

-
-
- 100% - Statements - 3/3 -
-
- 50% - Branches - 1/2 -
-
- 100% - Functions - 0/0 -
-
- 100% - Lines - 2/2 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18290x -  -  -  -  -  -  -  -  -  -  -22x -  -  -  -  -  - 
export function bufFromString(str: string): Buffer {
-  const length = Buffer.byteLength(str);
-  const buffer = Buffer.allocUnsafe
-    ? Buffer.allocUnsafe(length)
-    : new Buffer(length);
-  buffer.write(str);
-  return buffer;
-}
- 
-export function filterArray(arr: any[], filter: number[]): any[] {
-  const rtn: any[] = [];
-  for (let i = 0; i < arr.length; i++) {
-    if (filter.indexOf(i) > -1) {
-      rtn.push(arr[i]);
-    }
-  }
-  return rtn;
-}
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/testNew/index.html b/node_modules/csvtojson/coverage/csv2json/testNew/index.html deleted file mode 100644 index 826fa8e..0000000 --- a/node_modules/csvtojson/coverage/csv2json/testNew/index.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - Code coverage report for csv2json/testNew - - - - - - - -
-
-

- All files csv2json/testNew -

-
-
- 98.58% - Statements - 208/211 -
-
- 100% - Branches - 1/1 -
-
- 100% - Functions - 22/22 -
-
- 98.58% - Lines - 208/211 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
testCSVConverter.ts
98.95%94/95100%1/1100%5/598.95%94/95
testCSVConverter2.ts
98%98/100100%0/0100%15/1598%98/100
testCSVConverter3.ts
100%4/4100%0/0100%0/0100%4/4
testErrorHandle.ts
100%12/12100%0/0100%2/2100%12/12
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/testNew/testCSVConverter.ts.html b/node_modules/csvtojson/coverage/csv2json/testNew/testCSVConverter.ts.html deleted file mode 100644 index 037a84d..0000000 --- a/node_modules/csvtojson/coverage/csv2json/testNew/testCSVConverter.ts.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/testNew/testCSVConverter.ts - - - - - - - -
-
-

- All files / csv2json/testNew testCSVConverter.ts -

-
-
- 98.95% - Statements - 94/95 -
-
- 100% - Branches - 1/1 -
-
- 100% - Functions - 5/5 -
-
- 98.95% - Lines - 94/95 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/testNew/testCSVConverter.ts(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/testNew/testCSVConverter.ts')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/testNew/testCSVConverter.ts(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/testNew/testCSVConverter.ts')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/testNew/testCSVConverter2.ts.html b/node_modules/csvtojson/coverage/csv2json/testNew/testCSVConverter2.ts.html deleted file mode 100644 index 28fb201..0000000 --- a/node_modules/csvtojson/coverage/csv2json/testNew/testCSVConverter2.ts.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/testNew/testCSVConverter2.ts - - - - - - - -
-
-

- All files / csv2json/testNew testCSVConverter2.ts -

-
-
- 98% - Statements - 98/100 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 15/15 -
-
- 98% - Lines - 98/100 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/testNew/testCSVConverter2.ts(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/testNew/testCSVConverter2.ts')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/testNew/testCSVConverter2.ts(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/testNew/testCSVConverter2.ts')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/testNew/testCSVConverter3.ts.html b/node_modules/csvtojson/coverage/csv2json/testNew/testCSVConverter3.ts.html deleted file mode 100644 index 907a8b2..0000000 --- a/node_modules/csvtojson/coverage/csv2json/testNew/testCSVConverter3.ts.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/testNew/testCSVConverter3.ts - - - - - - - -
-
-

- All files / csv2json/testNew testCSVConverter3.ts -

-
-
- 100% - Statements - 4/4 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 100% - Lines - 4/4 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/testNew/testCSVConverter3.ts(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/testNew/testCSVConverter3.ts')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/testNew/testCSVConverter3.ts(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/testNew/testCSVConverter3.ts')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/csv2json/testNew/testErrorHandle.ts.html b/node_modules/csvtojson/coverage/csv2json/testNew/testErrorHandle.ts.html deleted file mode 100644 index 17fb472..0000000 --- a/node_modules/csvtojson/coverage/csv2json/testNew/testErrorHandle.ts.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/testNew/testErrorHandle.ts - - - - - - - -
-
-

- All files / csv2json/testNew testErrorHandle.ts -

-
-
- 100% - Statements - 12/12 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 2/2 -
-
- 100% - Lines - 12/12 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/testNew/testErrorHandle.ts(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/testNew/testErrorHandle.ts')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/testNew/testErrorHandle.ts(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/testNew/testErrorHandle.ts')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:126:5)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/dataClean.ts.html b/node_modules/csvtojson/coverage/dataClean.ts.html deleted file mode 100644 index 6205f11..0000000 --- a/node_modules/csvtojson/coverage/dataClean.ts.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - Code coverage report for dataClean.ts - - - - - - - -
-
-

- All files dataClean.ts -

-
-
- 100% - Statements - 7/7 -
-
- 75% - Branches - 3/4 -
-
- 100% - Functions - 1/1 -
-
- 100% - Lines - 7/7 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63  -  -  -  -  -  -  -1x -135x -135x -  -135x -  -  -  -  -  -135x -  -  -  -  -  -  -  -14x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -135x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ParseRuntime } from "./ParseRuntime";
-import stripBom from "strip-bom";
-/**
- * For each data chunk coming to parser:
- * 1. append the data to the buffer that is left from last chunk
- * 2. check if utf8 chars being split, if does, stripe the bytes and add to left buffer.
- * 3. stripBom 
- */
-export function prepareData(chunk: Buffer, runtime: ParseRuntime): string {
-  const workChunk = concatLeftChunk(chunk, runtime);
-  runtime.csvLineBuffer = undefined;
-  const cleanCSVString = cleanUtf8Split(workChunk, runtime).toString("utf8");
-  if (runtime.started === false) {
-    return stripBom(cleanCSVString);
-  } else {
-    return cleanCSVString;
-  }
-}I
-/**
- *  append data to buffer that is left form last chunk
- */
-function concatLeftChunk(chunk: Buffer, runtime: ParseRuntime): Buffer {
-  if (runtime.csvLineBuffer && runtime.csvLineBuffer.length > 0) {
-    return Buffer.concat([runtime.csvLineBuffer, chunk]);
-  } else {
-    return chunk;
-  }
-}
-/**
- * check if utf8 chars being split, if does, stripe the bytes and add to left buffer.
- */
-function cleanUtf8Split(chunk: Buffer, runtime: ParseRuntime): Buffer {
-  let idx = chunk.length - 1;
-  /**
-   * From Keyang:
-   * The code below is to check if a single utf8 char (which could be multiple bytes) being split.
-   * If the char being split, the buffer from two chunk needs to be concat
-   * check how utf8 being encoded to understand the code below. 
-   * If anyone has any better way to do this, please let me know.
-   */
-  if ((chunk[idx] & 1 << 7) != 0) {
-    while ((chunk[idx] & 3 << 6) === 128) {
-      idx--;
-    }
-    idx--;
-  }
-  if (idx != chunk.length - 1) {
-    runtime.csvLineBuffer = chunk.slice(idx + 1);
-    return chunk.slice(0, idx + 1)
-    // var _cb=cb;
-    // var self=this;
-    // cb=function(){
-    //   if (self._csvLineBuffer){
-    //     self._csvLineBuffer=Buffer.concat([bufFromString(self._csvLineBuffer,"utf8"),left]);
-    //   }else{
-    //     self._csvLineBuffer=left;
-    //   }
-    //   _cb();
-    // }
-  } else {
-    return chunk;
-  }
-}
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/fileline.test.ts.html b/node_modules/csvtojson/coverage/fileline.test.ts.html deleted file mode 100644 index 2ab3abb..0000000 --- a/node_modules/csvtojson/coverage/fileline.test.ts.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - Code coverage report for fileline.test.ts - - - - - - - -
-
-

- All files fileline.test.ts -

-
-
- 100% - Statements - 4/4 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 100% - Lines - 4/4 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15  -  -1x -  -  -1x -1x -1x -  -  -  -  -  -  - 
import {stringToLines} from "./fileline";
-import { mergeParams } from "./Parameters";
-import { Converter } from "./Converter";
-var assert = require("assert");
-describe("fileline function", function() {
-  it ("should convert data to multiple lines ", function() {
-    const conv=new Converter();
-    var data = "abcde\nefef";
-    var result = stringToLines(data, conv.parseRuntime);
-    assert.equal(result.lines.length, 1);
-    assert.equal(result.partial, "efef");
-    assert.equal(result.lines[0], "abcde");
-  });
-});
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/fileline.ts.html b/node_modules/csvtojson/coverage/fileline.ts.html deleted file mode 100644 index aa267aa..0000000 --- a/node_modules/csvtojson/coverage/fileline.ts.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - Code coverage report for fileline.ts - - - - - - - -
-
-

- All files fileline.ts -

-
-
- 100% - Statements - 2/2 -
-
- 100% - Branches - 2/2 -
-
- 100% - Functions - 0/0 -
-
- 100% - Lines - 2/2 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25  -  -  -  -  -  -  -  -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ParseRuntime } from "./ParseRuntime";
-import getEol from "./getEol";
-// const getEol = require("./getEol");
-/**
- * convert data chunk to file lines array
- * @param  {string} data  data chunk as utf8 string
- * @param  {object} param Converter param object
- * @return {Object}   {lines:[line1,line2...],partial:String}
- */
-export function stringToLines(data: string, param: ParseRuntime): StringToLinesResult {
-  const eol = getEol(data, param);
-  const lines = data.split(eol);
-  const partial = lines.pop() || "";
-  return { lines: lines, partial: partial };
-};
- 
- 
-export interface StringToLinesResult {
-  lines: Fileline[],
-  /**
-   * last line which could be incomplete line.
-   */
-  partial: string
-}
-export type Fileline = string;
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/getEol.ts.html b/node_modules/csvtojson/coverage/getEol.ts.html deleted file mode 100644 index 6e1c162..0000000 --- a/node_modules/csvtojson/coverage/getEol.ts.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - Code coverage report for getEol.ts - - - - - - - -
-
-

- All files getEol.ts -

-
-
- 0% - Statements - 0/0 -
-
- 0% - Branches - 3/3 -
-
- 0% - Functions - 0/0 -
-
- 0% - Lines - 0/0 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ParseRuntime } from "./ParseRuntime";
-//return first eol found from a data chunk.
-export default function (data: string, param: ParseRuntime): string {
-  if (!param.eol && data) {
-    for (var i = 0, len = data.length; i < len; i++) {
-      if (data[i] === "\r") {
-        if (data[i + 1] === "\n") {
-          param.eol = "\r\n";
-          break;
-        } else if (data[i + 1]) {
-          param.eol = "\r";
-          break;
-        } 
-      } else if (data[i] === "\n") {
-        param.eol = "\n";
-        break;
-      }
-    }
-  }
-  return param.eol || "\n";
-};
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/index.html b/node_modules/csvtojson/coverage/index.html deleted file mode 100644 index c47d138..0000000 --- a/node_modules/csvtojson/coverage/index.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - Code coverage report for All files - - - - - - - -
-
-

- All files -

-
-
- 97.95% - Statements - 715/730 -
-
- 91.24% - Branches - 323/354 -
-
- 99.17% - Functions - 120/121 -
-
- 97.87% - Lines - 688/703 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
CSVError.test.ts
100%1/1100%0/0100%1/1100%1/1
CSVError.ts
94.12%16/1775%3/483.33%5/693.75%15/16
Converter.ts
100%98/98100%18/18100%29/29100%92/92
ProcessFork.ts
100%78/7886.67%26/30100%15/15100%73/73
Processor.ts
100%6/6100%0/0100%2/2100%5/5
ProcessorLocal.test.ts
100%31/31100%0/0100%6/6100%29/29
ProcessorLocal.ts
98.09%154/15793.75%90/96100%20/2097.99%146/149
Result.ts
94.37%67/7188.68%47/53100%15/1594.2%65/69
dataClean.ts
100%7/775%3/4100%1/1100%7/7
fileline.test.ts
100%4/4100%0/0100%0/0100%4/4
fileline.ts
100%2/2100%2/2100%0/0100%2/2
getEol.ts
0%0/00%3/30%0/00%0/0
index.ts
100%5/5100%0/0100%1/1100%5/5
lineToJson.ts
93.94%93/9991.57%76/83100%14/1493.94%93/99
rowSplit.test.ts
100%31/31100%0/0100%0/0100%31/31
rowSplit.ts
100%119/11994.74%54/57100%11/11100%118/118
util.ts
75%3/425%1/4100%0/066.67%2/3
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/index.ts.html b/node_modules/csvtojson/coverage/index.ts.html deleted file mode 100644 index 5e6ac42..0000000 --- a/node_modules/csvtojson/coverage/index.ts.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - Code coverage report for index.ts - - - - - - - -
-
-

- All files index.ts -

-
-
- 100% - Statements - 5/5 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 1/1 -
-
- 100% - Lines - 5/5 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9  -  -1x -1x -35x -  -  -1x -1x
import { TransformOptions } from "stream";
-import { CSVParseParam } from "./Parameters";
-import { Converter } from "./Converter";
-const helper = function (param?: Partial<CSVParseParam>, options?: TransformOptions): Converter {
-  return new Converter(param, options);
-}
- 
-helper["Converter"] = Converter;
-export =helper;
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/base.css b/node_modules/csvtojson/coverage/lcov-report/base.css deleted file mode 100644 index 7090209..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/base.css +++ /dev/null @@ -1,223 +0,0 @@ -body, html { - margin:0; padding: 0; - height: 100%; -} -body { - font-family: Helvetica Neue, Helvetica, Arial; - font-size: 14px; - color:#333; -} -.small { font-size: 12px; } -*, *:after, *:before { - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; - } -h1 { font-size: 20px; margin: 0;} -h2 { font-size: 14px; } -pre { - font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; - margin: 0; - padding: 0; - -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2; -} -a { color:#0074D9; text-decoration:none; } -a:hover { text-decoration:underline; } -.strong { font-weight: bold; } -.space-top1 { padding: 10px 0 0 0; } -.pad2y { padding: 20px 0; } -.pad1y { padding: 10px 0; } -.pad2x { padding: 0 20px; } -.pad2 { padding: 20px; } -.pad1 { padding: 10px; } -.space-left2 { padding-left:55px; } -.space-right2 { padding-right:20px; } -.center { text-align:center; } -.clearfix { display:block; } -.clearfix:after { - content:''; - display:block; - height:0; - clear:both; - visibility:hidden; - } -.fl { float: left; } -@media only screen and (max-width:640px) { - .col3 { width:100%; max-width:100%; } - .hide-mobile { display:none!important; } -} - -.quiet { - color: #7f7f7f; - color: rgba(0,0,0,0.5); -} -.quiet a { opacity: 0.7; } - -.fraction { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 10px; - color: #555; - background: #E8E8E8; - padding: 4px 5px; - border-radius: 3px; - vertical-align: middle; -} - -div.path a:link, div.path a:visited { color: #333; } -table.coverage { - border-collapse: collapse; - margin: 10px 0 0 0; - padding: 0; -} - -table.coverage td { - margin: 0; - padding: 0; - vertical-align: top; -} -table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; -} -table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width:20px; -} - -table.coverage td span.cline-any { - display: inline-block; - padding: 0 5px; - width: 100%; -} -.missing-if-branch { - display: inline-block; - margin-right: 5px; - border-radius: 3px; - position: relative; - padding: 0 4px; - background: #333; - color: yellow; -} - -.skip-if-branch { - display: none; - margin-right: 10px; - position: relative; - padding: 0 4px; - background: #ccc; - color: white; -} -.missing-if-branch .typ, .skip-if-branch .typ { - color: inherit !important; -} -.coverage-summary { - border-collapse: collapse; - width: 100%; -} -.coverage-summary tr { border-bottom: 1px solid #bbb; } -.keyline-all { border: 1px solid #ddd; } -.coverage-summary td, .coverage-summary th { padding: 10px; } -.coverage-summary tbody { border: 1px solid #bbb; } -.coverage-summary td { border-right: 1px solid #bbb; } -.coverage-summary td:last-child { border-right: none; } -.coverage-summary th { - text-align: left; - font-weight: normal; - white-space: nowrap; -} -.coverage-summary th.file { border-right: none !important; } -.coverage-summary th.pct { } -.coverage-summary th.pic, -.coverage-summary th.abs, -.coverage-summary td.pct, -.coverage-summary td.abs { text-align: right; } -.coverage-summary td.file { white-space: nowrap; } -.coverage-summary td.pic { min-width: 120px !important; } -.coverage-summary tfoot td { } - -.coverage-summary .sorter { - height: 10px; - width: 7px; - display: inline-block; - margin-left: 0.5em; - background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; -} -.coverage-summary .sorted .sorter { - background-position: 0 -20px; -} -.coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; -} -.status-line { height: 10px; } -/* yellow */ -.cbranch-no { background: yellow !important; color: #111; } -/* dark red */ -.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } -.low .chart { border:1px solid #C21F39 } -.highlighted, -.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ - background: #C21F39 !important; -} -/* medium red */ -.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } -/* light red */ -.low, .cline-no { background:#FCE1E5 } -/* light green */ -.high, .cline-yes { background:rgb(230,245,208) } -/* medium green */ -.cstat-yes { background:rgb(161,215,106) } -/* dark green */ -.status-line.high, .high .cover-fill { background:rgb(77,146,33) } -.high .chart { border:1px solid rgb(77,146,33) } - -.medium .chart { border:1px solid #666; } -.medium .cover-fill { background: #666; } - -.cstat-skip { background: #ddd; color: #111; } -.fstat-skip { background: #ddd; color: #111 !important; } -.cbranch-skip { background: #ddd !important; color: #111; } - -span.cline-neutral { background: #eaeaea; } -.medium { background: #eaeaea; } - -.coverage-summary td.empty { - opacity: .5; - padding-top: 4px; - padding-bottom: 4px; - line-height: 1; - color: #888; -} - -.cover-fill, .cover-empty { - display:inline-block; - height: 12px; -} -.chart { - line-height: 0; -} -.cover-empty { - background: white; -} -.cover-full { - border-right: none !important; -} -pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; -} -.com { color: #999 !important; } -.ignore-none { color: #999; font-weight: normal; } - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -48px; -} -.footer, .push { - height: 48px; -} diff --git a/node_modules/csvtojson/coverage/lcov-report/block-navigation.js b/node_modules/csvtojson/coverage/lcov-report/block-navigation.js deleted file mode 100644 index 0c71903..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/block-navigation.js +++ /dev/null @@ -1,63 +0,0 @@ -var jumpToCode = (function init () { - // Classes of code we would like to highlight - var missingCoverageClasses = [ '.cbranch-no', '.cstat-no', '.fstat-no' ]; - - // We don't want to select elements that are direct descendants of another match - var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` - - // Selecter that finds elements on the page to which we can jump - var selector = notSelector + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` - - // The NodeList of matching elements - var missingCoverageElements = document.querySelectorAll(selector); - - var currentIndex; - - function toggleClass(index) { - missingCoverageElements.item(currentIndex).classList.remove('highlighted'); - missingCoverageElements.item(index).classList.add('highlighted'); - } - - function makeCurrent(index) { - toggleClass(index); - currentIndex = index; - missingCoverageElements.item(index) - .scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' }); - } - - function goToPrevious() { - var nextIndex = 0; - if (typeof currentIndex !== 'number' || currentIndex === 0) { - nextIndex = missingCoverageElements.length - 1; - } else if (missingCoverageElements.length > 1) { - nextIndex = currentIndex - 1; - } - - makeCurrent(nextIndex); - } - - function goToNext() { - var nextIndex = 0; - - if (typeof currentIndex === 'number' && currentIndex < (missingCoverageElements.length - 1)) { - nextIndex = currentIndex + 1; - } - - makeCurrent(nextIndex); - } - - return function jump(event) { - switch (event.which) { - case 78: // n - case 74: // j - goToNext(); - break; - case 66: // b - case 75: // k - case 80: // p - goToPrevious(); - break; - } - }; -}()); -window.addEventListener('keydown', jumpToCode); diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/Gruntfile.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/Gruntfile.js.html deleted file mode 100644 index 6fb1b30..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/Gruntfile.js.html +++ /dev/null @@ -1,330 +0,0 @@ - - - - Code coverage report for csv2json/Gruntfile.js - - - - - - - -
-
-

- All files / csv2json Gruntfile.js -

-
-
- 0% - Statements - 0/8 -
-
- 100% - Branches - 0/0 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/8 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
/*
-	GRUNT instructions
-	1. ensure you have dependencies installed run `npm install` in the root directory of the repo to get dev dependencies
-	2. run `grunt` in root dir of the repo in a shell to get the watcher started
-		The watcher looks at files. When a file is added or changed it passes the file through jshint
-	3. run `grunt test` to execute all unit tests and get output
-	4. run `grunt jshint` to pass all files through linter
- 
-	MADGE instructions
-	1. run `npm install -g madge` to get madge executable
-	2. Insure graphviz is installed and the bin folder is in your path.
-	3. run `madge -x "node_modules|util|stream|os|assert|fs|http" -i graph.png ./` to generate graph.png
-		which is the dependency graph for the current build.
-*/
- 
-module.exports = function(grunt) {
-  require('load-grunt-tasks')(grunt);
-  grunt.loadTasks('./devops/grunt-wiki');
-  var files = ['Gruntfile.js', 'libs/**/*.js', 'libs/**/**/*.js', 'test/*.js', 'bin/csvtojson',
-    'bin/csvtojson.js', 'devops/*.js'
-  ];
-  grunt.initConfig({
-    uglify: {
-      client: {
-        options: {
-          mangle: true,
-          banner: "/*Automatically Generated. Do not modify.*/\n"
-        },
-        src: "./dist/csvtojson.js",
-        dest: "./dist/csvtojson.min.js",
-      }
-    },
-    browserify: {
-      dist: {
-        src: "./browser_index.js",
-        dest: "./dist/csvtojson.js"
-      }
-    },
-    jshint: {
-      all: {
-        src: files,
-        options: {
-          'globals': { // false makes global variable readonly true is read/write
-            'describe': false,
-            'it': false
-          },
-          // see the docs for full list of options http://jshint.com/docs/options/
-          'bitwise': true,
-          'curly': true,
-          'eqeqeq': true,
-          'forin': true,
-          'freeze': true,
-          'funcscope': true,
-          'futurehostile': true,
-          'latedef': false,
-          'maxcomplexity': 10, // arbitrary but anything over 10 quickly becomes hard to think about
-          'maxdepth': 3, // also arbitrary. Deeply nested functions should be refactored to use helper functions.
-          'maxparams': 4, // arbitrary. Consider using an object literal instead of list of params.
-          'nocomma': true,
-          //'nonew': true, // In the future when all objects are refactored to avoid new.
-          //'strict': true, // in the future when all functions are closer to adhering to strict.
-          'notypeof': true,
-          'undef': true,
-          'unused': true,
-          'node': true // defines node globals
-        }
-      }
-    },
-    mochaTest: {
-      test: {
-        src: [files[3]]
-      }
-    },
-    watch: {
-      files: files,
-      tasks: ['newer:jshint:all', 'mochaTest'],
-      options: {
-        spawn: false,
-        event: ['changed', 'added']
-      }
-    },
-    wiki: {},
-  });
-  grunt.registerTask('default', ['watch']);
-  grunt.registerTask('test', ['mochaTest']);
-  grunt.registerTask("build:browser",["browserify:dist","uglify:client"]);
-};
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/bin/benchmark.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/bin/benchmark.js.html deleted file mode 100644 index 31deaab..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/bin/benchmark.js.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - Code coverage report for csv2json/bin/benchmark.js - - - - - - - -
-
-

- All files / csv2json/bin benchmark.js -

-
-
- 0% - Statements - 0/29 -
-
- 0% - Branches - 0/2 -
-
- 0% - Functions - 0/5 -
-
- 0% - Lines - 0/29 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
#!/usr/bin/env node
-var path = process.argv[2];
-var fs = require('fs');
-if (!fs.existsSync(path)) {
-  console.log("Run: benchmark [csvpath]");
-  console.log("File not found: ", path);
-  process.exit(1);
-}
-function testCSVLine(coreNum, checkType, cb){
-  console.log("WorkerNum:", coreNum, "Check Type: ", checkType);
-  var Converter = require("../libs/core/Converter");
-  var rs = fs.createReadStream(path);
-  var converter = new Converter({
-    workerNum: coreNum,
-    checkType: checkType,
-    constructResult: false
-    // fork:true
-  });
-  var totalLines = 0;
-  var secLines = 0;
-  converter.on("data", function() {
-    totalLines++;
-    secLines++;
-  });
-  converter.on("end", function() {
-    clearInterval(timer);
-    console.log("");
-    var t = new Date() - start;
-    console.log("Time elapsed: ", t, " ms");
-    console.log("Total lines: " + totalLines);
-    console.log("Average Speed: " + Math.round(totalLines / t * 1000) + " Lines / Sec");
-    cb();
-  });
-  var timer = setInterval(function() {
-    process.stdout.write("\r" + secLines + " CSV Lines/Sec");
-    secLines = 0;
-  }, 1000);
-  var start = new Date();
- 
-  var stream = rs.pipe(converter);
-}
- 
-// testCSVLine(1,false,false,function(){
-  testCSVLine(4,true,function(){
- 
-  });
-// });
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/bin/csvtojson.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/bin/csvtojson.js.html deleted file mode 100644 index 18f33e0..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/bin/csvtojson.js.html +++ /dev/null @@ -1,552 +0,0 @@ - - - - Code coverage report for csv2json/bin/csvtojson.js - - - - - - - -
-
-

- All files / csv2json/bin csvtojson.js -

-
-
- 0% - Statements - 0/96 -
-
- 0% - Branches - 0/56 -
-
- 0% - Functions - 0/9 -
-
- 0% - Lines - 0/96 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
function csvtojson() {
-  var Converter = require("../libs/core/Converter.js");
-  var fs = require("fs");
-  var options = require("./options.json");
-  var cmds = options.commands;
-  var opts = options.options;
-  var exps = options.examples;
-  var pkg = require("../package.json");
-  /**
-   *{
-    "cmd": "parse", command to run
-    "options": {}, options to passe to the command
-    "inputStream": process.stdin // input stream for the command. default is stdin. can be a file read stream.
-  };
-   *
-   */
-  var parsedCmd;
- 
-  function _showHelp(errno) {
-    var key;
-    errno = typeof errno === "number" ? errno : 0;
-    console.log("csvtojson: Convert csv to JSON format");
-    console.log("version:", pkg.version);
-    console.log("Usage: csvtojson [<command>] [<options>] filepath\n");
-    console.log("Commands: ");
-    for (key in cmds) {
-      if (cmds.hasOwnProperty(key)) {
-        console.log("\t%s: %s", key, cmds[key]);
-      }
-    }
-    console.log("Options: ");
-    for (key in opts) {
-      if (opts.hasOwnProperty(key)) {
-        console.log("\t%s: %s", key, opts[key].desc);
-      }
-    }
-    console.log("Examples: ");
-    for (var i = 0; i < exps.length; i++) {
-      console.log("\t%s", exps[i]);
-    }
-    process.exit(errno);
-  }
- 
-  function parse() {
-    var is = parsedCmd.inputStream;
-    parsedCmd.options.constructResult = false;
-    if (parsedCmd.options.toArrayString === undefined) {
-      parsedCmd.options.toArrayString = true;
-    }
-    if (parsedCmd.options.maxRowLength === undefined) {
-      parsedCmd.options.maxRowLength = 10240;
-    }
-    if (is === process.stdin && is.isTTY) {
-      console.log("Please specify csv file path or pipe the csv data through.\n");
-      _showHelp(1);
-    }
-    if (parsedCmd.options.delimiter === "\\t" ){
-      parsedCmd.options.delimiter="\t";
-    }
-    var conv = new Converter(parsedCmd.options);
-    conv.on("error", function (err, pos) {
-      if (!parsedCmd.options.quiet) {
-        console.error("csvtojson got an error: ", err);
-        if (pos) {
-          console.error("The error happens at following line: ");
-          console.log(pos);
-        }
-      }
-      process.exit(1);
-    });
-    is.pipe(conv).pipe(process.stdout);
-    // is.pipe(conv);
-  }
- 
-  function run(cmd, options) {
-    if (cmd === "parse") {
-      parse();
-    } else if (cmd === "version") {
-      console.log(pkg.version);
-    } else {
-      console.log("unknown command %s.", cmd);
-      _showHelp(1);
-    }
-  }
- 
-  function commandParser() {
-    var parsedCmd = {
-      "cmd": "parse",
-      "options": {},
-      "inputStream": process.stdin
-    };
- 
-    function parseObject(val, optional) {
-      try {
-        return JSON.parse(val);
-      } catch (e) {
-        if (optional) {
-          return val;
-        } else {
-          console.error(e);
-          process.exit(1);
-        }
-      }
-    }
- 
-    function parseBool(str, optName) {
-      str = str.toLowerCase();
-      if (str === "true" || str === "y") {
-        return true;
-      } else if (str === "false" || str === "n") {
-        return false;
-      }
-      console.log("Unknown boolean value %s for parameter %s.", str, optName);
-      _showHelp(1);
-    }
-    process.argv.slice(2).forEach(function (item) {
-      if (item.indexOf("--") > -1) {
-        var itemArr = item.split("=");
-        var optName = itemArr[0];
-        var key, val, type;
-        if (!opts[optName]) {
-          console.log("Option %s not supported.", optName);
-          _showHelp(1);
-        }
-        key = optName.replace('--', '');
-        val = itemArr[1] || '';
-        type = opts[optName].type;
-        if (type === "string") {
-          parsedCmd.options[key] = val.toString();
-        } else if (type === "boolean") {
-          parsedCmd.options[key] = parseBool(val, optName);
-        } else if (type === "number") {
-          parsedCmd.options[key] = parseFloat(val);
-        } else if (type === "object") {
-          parsedCmd.options[key] = parseObject(val, false);
-        } else if (type === "~object") {
-          parsedCmd.options[key] = parseObject(val, true);
-        } else {
-          throw ({
-            name: "UnimplementedException",
-            message: "Option type parsing not implemented. See bin/options.json"
-          });
-        }
-      } else if (cmds[item]) {
-        parsedCmd.cmd = item;
-      } else if (fs.existsSync(item)) {
-        parsedCmd.inputStream = fs.createReadStream(item);
-      } else {
-        console.log("unknown parameter %s.", item);
-      }
-    });
-    return parsedCmd;
-  }
-  process.stdin.setEncoding('utf8');
-  parsedCmd = commandParser();
-  run(parsedCmd.cmd, parsedCmd.options);
-}
-module.exports = csvtojson;
-if (!module.parent) {
-  csvtojson();
-}
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/bin/genCsv.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/bin/genCsv.js.html deleted file mode 100644 index b80c8c7..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/bin/genCsv.js.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - Code coverage report for csv2json/bin/genCsv.js - - - - - - - -
-
-

- All files / csv2json/bin genCsv.js -

-
-
- 0% - Statements - 0/23 -
-
- 0% - Branches - 0/8 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/23 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
#!/usr/bin/env node
-var minimist = require("minimist");
-var argv = process.argv;
-argv.shift();
-argv.shift();
-var args = minimist(argv);
-var headers = ["name", "header1", "file2", "description", "header2", "field2", "header3"];
- 
-if (args.headers) {
-  headers = JSON.parse(args.headers);
-}
-var rowNum = args.row ? args.row : 10000;
-var chars = args.chars ? args.chars : "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
-var maxLength = parseInt(args.max ? args.max : "15");
-console.log(headers.join(","));
-for (var i = 0; i < rowNum; i++) {
-  var row = [];
-  for (var j = 0; j < headers.length; j++) {
-    row.push(genWord());
-  }
-  console.log(row.join(","));
-}
- 
-function genWord() {
-  var len = Math.round(Math.random() * maxLength);
-  var rtn = "";
-  for (var i = 0; i < len; i++) {
-    var pos = Math.round(Math.random() * chars.length);
-    rtn += chars[pos];
-  }
-  return rtn;
-}
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/bin/index.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/bin/index.html deleted file mode 100644 index 5025793..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/bin/index.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - Code coverage report for csv2json/bin - - - - - - - -
-
-

- All files csv2json/bin -

-
-
- 0% - Statements - 0/148 -
-
- 0% - Branches - 0/66 -
-
- 0% - Functions - 0/15 -
-
- 0% - Lines - 0/148 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
benchmark.js
0%0/290%0/20%0/50%0/29
csvtojson.js
0%0/960%0/560%0/90%0/96
genCsv.js
0%0/230%0/80%0/10%0/23
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/browser_index.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/browser_index.js.html deleted file mode 100644 index ce18c03..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/browser_index.js.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - Code coverage report for csv2json/browser_index.js - - - - - - - -
-
-

- All files / csv2json browser_index.js -

-
-
- 0% - Statements - 0/3 -
-
- 0% - Branches - 0/2 -
-
- 100% - Functions - 0/0 -
-
- 0% - Lines - 0/3 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5  -  -  -  - 
if (window){
-  window.csvtojson=require("./index.js");
-  window.csvtojson.version=require("./package.json").version;
-}
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/dist/csvtojson.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/dist/csvtojson.js.html deleted file mode 100644 index e3ca6ef..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/dist/csvtojson.js.html +++ /dev/null @@ -1,84849 +0,0 @@ - - - - Code coverage report for csv2json/dist/csvtojson.js - - - - - - - -
-
-

- All files / csv2json/dist csvtojson.js -

-
-
- 0% - Statements - 0/8755 -
-
- 0% - Branches - 0/6057 -
-
- 0% - Functions - 0/1477 -
-
- 0% - Lines - 0/8543 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590 -591 -592 -593 -594 -595 -596 -597 -598 -599 -600 -601 -602 -603 -604 -605 -606 -607 -608 -609 -610 -611 -612 -613 -614 -615 -616 -617 -618 -619 -620 -621 -622 -623 -624 -625 -626 -627 -628 -629 -630 -631 -632 -633 -634 -635 -636 -637 -638 -639 -640 -641 -642 -643 -644 -645 -646 -647 -648 -649 -650 -651 -652 -653 -654 -655 -656 -657 -658 -659 -660 -661 -662 -663 -664 -665 -666 -667 -668 -669 -670 -671 -672 -673 -674 -675 -676 -677 -678 -679 -680 -681 -682 -683 -684 -685 -686 -687 -688 -689 -690 -691 -692 -693 -694 -695 -696 -697 -698 -699 -700 -701 -702 -703 -704 -705 -706 -707 -708 -709 -710 -711 -712 -713 -714 -715 -716 -717 -718 -719 -720 -721 -722 -723 -724 -725 -726 -727 -728 -729 -730 -731 -732 -733 -734 -735 -736 -737 -738 -739 -740 -741 -742 -743 -744 -745 -746 -747 -748 -749 -750 -751 -752 -753 -754 -755 -756 -757 -758 -759 -760 -761 -762 -763 -764 -765 -766 -767 -768 -769 -770 -771 -772 -773 -774 -775 -776 -777 -778 -779 -780 -781 -782 -783 -784 -785 -786 -787 -788 -789 -790 -791 -792 -793 -794 -795 -796 -797 -798 -799 -800 -801 -802 -803 -804 -805 -806 -807 -808 -809 -810 -811 -812 -813 -814 -815 -816 -817 -818 -819 -820 -821 -822 -823 -824 -825 -826 -827 -828 -829 -830 -831 -832 -833 -834 -835 -836 -837 -838 -839 -840 -841 -842 -843 -844 -845 -846 -847 -848 -849 -850 -851 -852 -853 -854 -855 -856 -857 -858 -859 -860 -861 -862 -863 -864 -865 -866 -867 -868 -869 -870 -871 -872 -873 -874 -875 -876 -877 -878 -879 -880 -881 -882 -883 -884 -885 -886 -887 -888 -889 -890 -891 -892 -893 -894 -895 -896 -897 -898 -899 -900 -901 -902 -903 -904 -905 -906 -907 -908 -909 -910 -911 -912 -913 -914 -915 -916 -917 -918 -919 -920 -921 -922 -923 -924 -925 -926 -927 -928 -929 -930 -931 -932 -933 -934 -935 -936 -937 -938 -939 -940 -941 -942 -943 -944 -945 -946 -947 -948 -949 -950 -951 -952 -953 -954 -955 -956 -957 -958 -959 -960 -961 -962 -963 -964 -965 -966 -967 -968 -969 -970 -971 -972 -973 -974 -975 -976 -977 -978 -979 -980 -981 -982 -983 -984 -985 -986 -987 -988 -989 -990 -991 -992 -993 -994 -995 -996 -997 -998 -999 -1000 -1001 -1002 -1003 -1004 -1005 -1006 -1007 -1008 -1009 -1010 -1011 -1012 -1013 -1014 -1015 -1016 -1017 -1018 -1019 -1020 -1021 -1022 -1023 -1024 -1025 -1026 -1027 -1028 -1029 -1030 -1031 -1032 -1033 -1034 -1035 -1036 -1037 -1038 -1039 -1040 -1041 -1042 -1043 -1044 -1045 -1046 -1047 -1048 -1049 -1050 -1051 -1052 -1053 -1054 -1055 -1056 -1057 -1058 -1059 -1060 -1061 -1062 -1063 -1064 -1065 -1066 -1067 -1068 -1069 -1070 -1071 -1072 -1073 -1074 -1075 -1076 -1077 -1078 -1079 -1080 -1081 -1082 -1083 -1084 -1085 -1086 -1087 -1088 -1089 -1090 -1091 -1092 -1093 -1094 -1095 -1096 -1097 -1098 -1099 -1100 -1101 -1102 -1103 -1104 -1105 -1106 -1107 -1108 -1109 -1110 -1111 -1112 -1113 -1114 -1115 -1116 -1117 -1118 -1119 -1120 -1121 -1122 -1123 -1124 -1125 -1126 -1127 -1128 -1129 -1130 -1131 -1132 -1133 -1134 -1135 -1136 -1137 -1138 -1139 -1140 -1141 -1142 -1143 -1144 -1145 -1146 -1147 -1148 -1149 -1150 -1151 -1152 -1153 -1154 -1155 -1156 -1157 -1158 -1159 -1160 -1161 -1162 -1163 -1164 -1165 -1166 -1167 -1168 -1169 -1170 -1171 -1172 -1173 -1174 -1175 -1176 -1177 -1178 -1179 -1180 -1181 -1182 -1183 -1184 -1185 -1186 -1187 -1188 -1189 -1190 -1191 -1192 -1193 -1194 -1195 -1196 -1197 -1198 -1199 -1200 -1201 -1202 -1203 -1204 -1205 -1206 -1207 -1208 -1209 -1210 -1211 -1212 -1213 -1214 -1215 -1216 -1217 -1218 -1219 -1220 -1221 -1222 -1223 -1224 -1225 -1226 -1227 -1228 -1229 -1230 -1231 -1232 -1233 -1234 -1235 -1236 -1237 -1238 -1239 -1240 -1241 -1242 -1243 -1244 -1245 -1246 -1247 -1248 -1249 -1250 -1251 -1252 -1253 -1254 -1255 -1256 -1257 -1258 -1259 -1260 -1261 -1262 -1263 -1264 -1265 -1266 -1267 -1268 -1269 -1270 -1271 -1272 -1273 -1274 -1275 -1276 -1277 -1278 -1279 -1280 -1281 -1282 -1283 -1284 -1285 -1286 -1287 -1288 -1289 -1290 -1291 -1292 -1293 -1294 -1295 -1296 -1297 -1298 -1299 -1300 -1301 -1302 -1303 -1304 -1305 -1306 -1307 -1308 -1309 -1310 -1311 -1312 -1313 -1314 -1315 -1316 -1317 -1318 -1319 -1320 -1321 -1322 -1323 -1324 -1325 -1326 -1327 -1328 -1329 -1330 -1331 -1332 -1333 -1334 -1335 -1336 -1337 -1338 -1339 -1340 -1341 -1342 -1343 -1344 -1345 -1346 -1347 -1348 -1349 -1350 -1351 -1352 -1353 -1354 -1355 -1356 -1357 -1358 -1359 -1360 -1361 -1362 -1363 -1364 -1365 -1366 -1367 -1368 -1369 -1370 -1371 -1372 -1373 -1374 -1375 -1376 -1377 -1378 -1379 -1380 -1381 -1382 -1383 -1384 -1385 -1386 -1387 -1388 -1389 -1390 -1391 -1392 -1393 -1394 -1395 -1396 -1397 -1398 -1399 -1400 -1401 -1402 -1403 -1404 -1405 -1406 -1407 -1408 -1409 -1410 -1411 -1412 -1413 -1414 -1415 -1416 -1417 -1418 -1419 -1420 -1421 -1422 -1423 -1424 -1425 -1426 -1427 -1428 -1429 -1430 -1431 -1432 -1433 -1434 -1435 -1436 -1437 -1438 -1439 -1440 -1441 -1442 -1443 -1444 -1445 -1446 -1447 -1448 -1449 -1450 -1451 -1452 -1453 -1454 -1455 -1456 -1457 -1458 -1459 -1460 -1461 -1462 -1463 -1464 -1465 -1466 -1467 -1468 -1469 -1470 -1471 -1472 -1473 -1474 -1475 -1476 -1477 -1478 -1479 -1480 -1481 -1482 -1483 -1484 -1485 -1486 -1487 -1488 -1489 -1490 -1491 -1492 -1493 -1494 -1495 -1496 -1497 -1498 -1499 -1500 -1501 -1502 -1503 -1504 -1505 -1506 -1507 -1508 -1509 -1510 -1511 -1512 -1513 -1514 -1515 -1516 -1517 -1518 -1519 -1520 -1521 -1522 -1523 -1524 -1525 -1526 -1527 -1528 -1529 -1530 -1531 -1532 -1533 -1534 -1535 -1536 -1537 -1538 -1539 -1540 -1541 -1542 -1543 -1544 -1545 -1546 -1547 -1548 -1549 -1550 -1551 -1552 -1553 -1554 -1555 -1556 -1557 -1558 -1559 -1560 -1561 -1562 -1563 -1564 -1565 -1566 -1567 -1568 -1569 -1570 -1571 -1572 -1573 -1574 -1575 -1576 -1577 -1578 -1579 -1580 -1581 -1582 -1583 -1584 -1585 -1586 -1587 -1588 -1589 -1590 -1591 -1592 -1593 -1594 -1595 -1596 -1597 -1598 -1599 -1600 -1601 -1602 -1603 -1604 -1605 -1606 -1607 -1608 -1609 -1610 -1611 -1612 -1613 -1614 -1615 -1616 -1617 -1618 -1619 -1620 -1621 -1622 -1623 -1624 -1625 -1626 -1627 -1628 -1629 -1630 -1631 -1632 -1633 -1634 -1635 -1636 -1637 -1638 -1639 -1640 -1641 -1642 -1643 -1644 -1645 -1646 -1647 -1648 -1649 -1650 -1651 -1652 -1653 -1654 -1655 -1656 -1657 -1658 -1659 -1660 -1661 -1662 -1663 -1664 -1665 -1666 -1667 -1668 -1669 -1670 -1671 -1672 -1673 -1674 -1675 -1676 -1677 -1678 -1679 -1680 -1681 -1682 -1683 -1684 -1685 -1686 -1687 -1688 -1689 -1690 -1691 -1692 -1693 -1694 -1695 -1696 -1697 -1698 -1699 -1700 -1701 -1702 -1703 -1704 -1705 -1706 -1707 -1708 -1709 -1710 -1711 -1712 -1713 -1714 -1715 -1716 -1717 -1718 -1719 -1720 -1721 -1722 -1723 -1724 -1725 -1726 -1727 -1728 -1729 -1730 -1731 -1732 -1733 -1734 -1735 -1736 -1737 -1738 -1739 -1740 -1741 -1742 -1743 -1744 -1745 -1746 -1747 -1748 -1749 -1750 -1751 -1752 -1753 -1754 -1755 -1756 -1757 -1758 -1759 -1760 -1761 -1762 -1763 -1764 -1765 -1766 -1767 -1768 -1769 -1770 -1771 -1772 -1773 -1774 -1775 -1776 -1777 -1778 -1779 -1780 -1781 -1782 -1783 -1784 -1785 -1786 -1787 -1788 -1789 -1790 -1791 -1792 -1793 -1794 -1795 -1796 -1797 -1798 -1799 -1800 -1801 -1802 -1803 -1804 -1805 -1806 -1807 -1808 -1809 -1810 -1811 -1812 -1813 -1814 -1815 -1816 -1817 -1818 -1819 -1820 -1821 -1822 -1823 -1824 -1825 -1826 -1827 -1828 -1829 -1830 -1831 -1832 -1833 -1834 -1835 -1836 -1837 -1838 -1839 -1840 -1841 -1842 -1843 -1844 -1845 -1846 -1847 -1848 -1849 -1850 -1851 -1852 -1853 -1854 -1855 -1856 -1857 -1858 -1859 -1860 -1861 -1862 -1863 -1864 -1865 -1866 -1867 -1868 -1869 -1870 -1871 -1872 -1873 -1874 -1875 -1876 -1877 -1878 -1879 -1880 -1881 -1882 -1883 -1884 -1885 -1886 -1887 -1888 -1889 -1890 -1891 -1892 -1893 -1894 -1895 -1896 -1897 -1898 -1899 -1900 -1901 -1902 -1903 -1904 -1905 -1906 -1907 -1908 -1909 -1910 -1911 -1912 -1913 -1914 -1915 -1916 -1917 -1918 -1919 -1920 -1921 -1922 -1923 -1924 -1925 -1926 -1927 -1928 -1929 -1930 -1931 -1932 -1933 -1934 -1935 -1936 -1937 -1938 -1939 -1940 -1941 -1942 -1943 -1944 -1945 -1946 -1947 -1948 -1949 -1950 -1951 -1952 -1953 -1954 -1955 -1956 -1957 -1958 -1959 -1960 -1961 -1962 -1963 -1964 -1965 -1966 -1967 -1968 -1969 -1970 -1971 -1972 -1973 -1974 -1975 -1976 -1977 -1978 -1979 -1980 -1981 -1982 -1983 -1984 -1985 -1986 -1987 -1988 -1989 -1990 -1991 -1992 -1993 -1994 -1995 -1996 -1997 -1998 -1999 -2000 -2001 -2002 -2003 -2004 -2005 -2006 -2007 -2008 -2009 -2010 -2011 -2012 -2013 -2014 -2015 -2016 -2017 -2018 -2019 -2020 -2021 -2022 -2023 -2024 -2025 -2026 -2027 -2028 -2029 -2030 -2031 -2032 -2033 -2034 -2035 -2036 -2037 -2038 -2039 -2040 -2041 -2042 -2043 -2044 -2045 -2046 -2047 -2048 -2049 -2050 -2051 -2052 -2053 -2054 -2055 -2056 -2057 -2058 -2059 -2060 -2061 -2062 -2063 -2064 -2065 -2066 -2067 -2068 -2069 -2070 -2071 -2072 -2073 -2074 -2075 -2076 -2077 -2078 -2079 -2080 -2081 -2082 -2083 -2084 -2085 -2086 -2087 -2088 -2089 -2090 -2091 -2092 -2093 -2094 -2095 -2096 -2097 -2098 -2099 -2100 -2101 -2102 -2103 -2104 -2105 -2106 -2107 -2108 -2109 -2110 -2111 -2112 -2113 -2114 -2115 -2116 -2117 -2118 -2119 -2120 -2121 -2122 -2123 -2124 -2125 -2126 -2127 -2128 -2129 -2130 -2131 -2132 -2133 -2134 -2135 -2136 -2137 -2138 -2139 -2140 -2141 -2142 -2143 -2144 -2145 -2146 -2147 -2148 -2149 -2150 -2151 -2152 -2153 -2154 -2155 -2156 -2157 -2158 -2159 -2160 -2161 -2162 -2163 -2164 -2165 -2166 -2167 -2168 -2169 -2170 -2171 -2172 -2173 -2174 -2175 -2176 -2177 -2178 -2179 -2180 -2181 -2182 -2183 -2184 -2185 -2186 -2187 -2188 -2189 -2190 -2191 -2192 -2193 -2194 -2195 -2196 -2197 -2198 -2199 -2200 -2201 -2202 -2203 -2204 -2205 -2206 -2207 -2208 -2209 -2210 -2211 -2212 -2213 -2214 -2215 -2216 -2217 -2218 -2219 -2220 -2221 -2222 -2223 -2224 -2225 -2226 -2227 -2228 -2229 -2230 -2231 -2232 -2233 -2234 -2235 -2236 -2237 -2238 -2239 -2240 -2241 -2242 -2243 -2244 -2245 -2246 -2247 -2248 -2249 -2250 -2251 -2252 -2253 -2254 -2255 -2256 -2257 -2258 -2259 -2260 -2261 -2262 -2263 -2264 -2265 -2266 -2267 -2268 -2269 -2270 -2271 -2272 -2273 -2274 -2275 -2276 -2277 -2278 -2279 -2280 -2281 -2282 -2283 -2284 -2285 -2286 -2287 -2288 -2289 -2290 -2291 -2292 -2293 -2294 -2295 -2296 -2297 -2298 -2299 -2300 -2301 -2302 -2303 -2304 -2305 -2306 -2307 -2308 -2309 -2310 -2311 -2312 -2313 -2314 -2315 -2316 -2317 -2318 -2319 -2320 -2321 -2322 -2323 -2324 -2325 -2326 -2327 -2328 -2329 -2330 -2331 -2332 -2333 -2334 -2335 -2336 -2337 -2338 -2339 -2340 -2341 -2342 -2343 -2344 -2345 -2346 -2347 -2348 -2349 -2350 -2351 -2352 -2353 -2354 -2355 -2356 -2357 -2358 -2359 -2360 -2361 -2362 -2363 -2364 -2365 -2366 -2367 -2368 -2369 -2370 -2371 -2372 -2373 -2374 -2375 -2376 -2377 -2378 -2379 -2380 -2381 -2382 -2383 -2384 -2385 -2386 -2387 -2388 -2389 -2390 -2391 -2392 -2393 -2394 -2395 -2396 -2397 -2398 -2399 -2400 -2401 -2402 -2403 -2404 -2405 -2406 -2407 -2408 -2409 -2410 -2411 -2412 -2413 -2414 -2415 -2416 -2417 -2418 -2419 -2420 -2421 -2422 -2423 -2424 -2425 -2426 -2427 -2428 -2429 -2430 -2431 -2432 -2433 -2434 -2435 -2436 -2437 -2438 -2439 -2440 -2441 -2442 -2443 -2444 -2445 -2446 -2447 -2448 -2449 -2450 -2451 -2452 -2453 -2454 -2455 -2456 -2457 -2458 -2459 -2460 -2461 -2462 -2463 -2464 -2465 -2466 -2467 -2468 -2469 -2470 -2471 -2472 -2473 -2474 -2475 -2476 -2477 -2478 -2479 -2480 -2481 -2482 -2483 -2484 -2485 -2486 -2487 -2488 -2489 -2490 -2491 -2492 -2493 -2494 -2495 -2496 -2497 -2498 -2499 -2500 -2501 -2502 -2503 -2504 -2505 -2506 -2507 -2508 -2509 -2510 -2511 -2512 -2513 -2514 -2515 -2516 -2517 -2518 -2519 -2520 -2521 -2522 -2523 -2524 -2525 -2526 -2527 -2528 -2529 -2530 -2531 -2532 -2533 -2534 -2535 -2536 -2537 -2538 -2539 -2540 -2541 -2542 -2543 -2544 -2545 -2546 -2547 -2548 -2549 -2550 -2551 -2552 -2553 -2554 -2555 -2556 -2557 -2558 -2559 -2560 -2561 -2562 -2563 -2564 -2565 -2566 -2567 -2568 -2569 -2570 -2571 -2572 -2573 -2574 -2575 -2576 -2577 -2578 -2579 -2580 -2581 -2582 -2583 -2584 -2585 -2586 -2587 -2588 -2589 -2590 -2591 -2592 -2593 -2594 -2595 -2596 -2597 -2598 -2599 -2600 -2601 -2602 -2603 -2604 -2605 -2606 -2607 -2608 -2609 -2610 -2611 -2612 -2613 -2614 -2615 -2616 -2617 -2618 -2619 -2620 -2621 -2622 -2623 -2624 -2625 -2626 -2627 -2628 -2629 -2630 -2631 -2632 -2633 -2634 -2635 -2636 -2637 -2638 -2639 -2640 -2641 -2642 -2643 -2644 -2645 -2646 -2647 -2648 -2649 -2650 -2651 -2652 -2653 -2654 -2655 -2656 -2657 -2658 -2659 -2660 -2661 -2662 -2663 -2664 -2665 -2666 -2667 -2668 -2669 -2670 -2671 -2672 -2673 -2674 -2675 -2676 -2677 -2678 -2679 -2680 -2681 -2682 -2683 -2684 -2685 -2686 -2687 -2688 -2689 -2690 -2691 -2692 -2693 -2694 -2695 -2696 -2697 -2698 -2699 -2700 -2701 -2702 -2703 -2704 -2705 -2706 -2707 -2708 -2709 -2710 -2711 -2712 -2713 -2714 -2715 -2716 -2717 -2718 -2719 -2720 -2721 -2722 -2723 -2724 -2725 -2726 -2727 -2728 -2729 -2730 -2731 -2732 -2733 -2734 -2735 -2736 -2737 -2738 -2739 -2740 -2741 -2742 -2743 -2744 -2745 -2746 -2747 -2748 -2749 -2750 -2751 -2752 -2753 -2754 -2755 -2756 -2757 -2758 -2759 -2760 -2761 -2762 -2763 -2764 -2765 -2766 -2767 -2768 -2769 -2770 -2771 -2772 -2773 -2774 -2775 -2776 -2777 -2778 -2779 -2780 -2781 -2782 -2783 -2784 -2785 -2786 -2787 -2788 -2789 -2790 -2791 -2792 -2793 -2794 -2795 -2796 -2797 -2798 -2799 -2800 -2801 -2802 -2803 -2804 -2805 -2806 -2807 -2808 -2809 -2810 -2811 -2812 -2813 -2814 -2815 -2816 -2817 -2818 -2819 -2820 -2821 -2822 -2823 -2824 -2825 -2826 -2827 -2828 -2829 -2830 -2831 -2832 -2833 -2834 -2835 -2836 -2837 -2838 -2839 -2840 -2841 -2842 -2843 -2844 -2845 -2846 -2847 -2848 -2849 -2850 -2851 -2852 -2853 -2854 -2855 -2856 -2857 -2858 -2859 -2860 -2861 -2862 -2863 -2864 -2865 -2866 -2867 -2868 -2869 -2870 -2871 -2872 -2873 -2874 -2875 -2876 -2877 -2878 -2879 -2880 -2881 -2882 -2883 -2884 -2885 -2886 -2887 -2888 -2889 -2890 -2891 -2892 -2893 -2894 -2895 -2896 -2897 -2898 -2899 -2900 -2901 -2902 -2903 -2904 -2905 -2906 -2907 -2908 -2909 -2910 -2911 -2912 -2913 -2914 -2915 -2916 -2917 -2918 -2919 -2920 -2921 -2922 -2923 -2924 -2925 -2926 -2927 -2928 -2929 -2930 -2931 -2932 -2933 -2934 -2935 -2936 -2937 -2938 -2939 -2940 -2941 -2942 -2943 -2944 -2945 -2946 -2947 -2948 -2949 -2950 -2951 -2952 -2953 -2954 -2955 -2956 -2957 -2958 -2959 -2960 -2961 -2962 -2963 -2964 -2965 -2966 -2967 -2968 -2969 -2970 -2971 -2972 -2973 -2974 -2975 -2976 -2977 -2978 -2979 -2980 -2981 -2982 -2983 -2984 -2985 -2986 -2987 -2988 -2989 -2990 -2991 -2992 -2993 -2994 -2995 -2996 -2997 -2998 -2999 -3000 -3001 -3002 -3003 -3004 -3005 -3006 -3007 -3008 -3009 -3010 -3011 -3012 -3013 -3014 -3015 -3016 -3017 -3018 -3019 -3020 -3021 -3022 -3023 -3024 -3025 -3026 -3027 -3028 -3029 -3030 -3031 -3032 -3033 -3034 -3035 -3036 -3037 -3038 -3039 -3040 -3041 -3042 -3043 -3044 -3045 -3046 -3047 -3048 -3049 -3050 -3051 -3052 -3053 -3054 -3055 -3056 -3057 -3058 -3059 -3060 -3061 -3062 -3063 -3064 -3065 -3066 -3067 -3068 -3069 -3070 -3071 -3072 -3073 -3074 -3075 -3076 -3077 -3078 -3079 -3080 -3081 -3082 -3083 -3084 -3085 -3086 -3087 -3088 -3089 -3090 -3091 -3092 -3093 -3094 -3095 -3096 -3097 -3098 -3099 -3100 -3101 -3102 -3103 -3104 -3105 -3106 -3107 -3108 -3109 -3110 -3111 -3112 -3113 -3114 -3115 -3116 -3117 -3118 -3119 -3120 -3121 -3122 -3123 -3124 -3125 -3126 -3127 -3128 -3129 -3130 -3131 -3132 -3133 -3134 -3135 -3136 -3137 -3138 -3139 -3140 -3141 -3142 -3143 -3144 -3145 -3146 -3147 -3148 -3149 -3150 -3151 -3152 -3153 -3154 -3155 -3156 -3157 -3158 -3159 -3160 -3161 -3162 -3163 -3164 -3165 -3166 -3167 -3168 -3169 -3170 -3171 -3172 -3173 -3174 -3175 -3176 -3177 -3178 -3179 -3180 -3181 -3182 -3183 -3184 -3185 -3186 -3187 -3188 -3189 -3190 -3191 -3192 -3193 -3194 -3195 -3196 -3197 -3198 -3199 -3200 -3201 -3202 -3203 -3204 -3205 -3206 -3207 -3208 -3209 -3210 -3211 -3212 -3213 -3214 -3215 -3216 -3217 -3218 -3219 -3220 -3221 -3222 -3223 -3224 -3225 -3226 -3227 -3228 -3229 -3230 -3231 -3232 -3233 -3234 -3235 -3236 -3237 -3238 -3239 -3240 -3241 -3242 -3243 -3244 -3245 -3246 -3247 -3248 -3249 -3250 -3251 -3252 -3253 -3254 -3255 -3256 -3257 -3258 -3259 -3260 -3261 -3262 -3263 -3264 -3265 -3266 -3267 -3268 -3269 -3270 -3271 -3272 -3273 -3274 -3275 -3276 -3277 -3278 -3279 -3280 -3281 -3282 -3283 -3284 -3285 -3286 -3287 -3288 -3289 -3290 -3291 -3292 -3293 -3294 -3295 -3296 -3297 -3298 -3299 -3300 -3301 -3302 -3303 -3304 -3305 -3306 -3307 -3308 -3309 -3310 -3311 -3312 -3313 -3314 -3315 -3316 -3317 -3318 -3319 -3320 -3321 -3322 -3323 -3324 -3325 -3326 -3327 -3328 -3329 -3330 -3331 -3332 -3333 -3334 -3335 -3336 -3337 -3338 -3339 -3340 -3341 -3342 -3343 -3344 -3345 -3346 -3347 -3348 -3349 -3350 -3351 -3352 -3353 -3354 -3355 -3356 -3357 -3358 -3359 -3360 -3361 -3362 -3363 -3364 -3365 -3366 -3367 -3368 -3369 -3370 -3371 -3372 -3373 -3374 -3375 -3376 -3377 -3378 -3379 -3380 -3381 -3382 -3383 -3384 -3385 -3386 -3387 -3388 -3389 -3390 -3391 -3392 -3393 -3394 -3395 -3396 -3397 -3398 -3399 -3400 -3401 -3402 -3403 -3404 -3405 -3406 -3407 -3408 -3409 -3410 -3411 -3412 -3413 -3414 -3415 -3416 -3417 -3418 -3419 -3420 -3421 -3422 -3423 -3424 -3425 -3426 -3427 -3428 -3429 -3430 -3431 -3432 -3433 -3434 -3435 -3436 -3437 -3438 -3439 -3440 -3441 -3442 -3443 -3444 -3445 -3446 -3447 -3448 -3449 -3450 -3451 -3452 -3453 -3454 -3455 -3456 -3457 -3458 -3459 -3460 -3461 -3462 -3463 -3464 -3465 -3466 -3467 -3468 -3469 -3470 -3471 -3472 -3473 -3474 -3475 -3476 -3477 -3478 -3479 -3480 -3481 -3482 -3483 -3484 -3485 -3486 -3487 -3488 -3489 -3490 -3491 -3492 -3493 -3494 -3495 -3496 -3497 -3498 -3499 -3500 -3501 -3502 -3503 -3504 -3505 -3506 -3507 -3508 -3509 -3510 -3511 -3512 -3513 -3514 -3515 -3516 -3517 -3518 -3519 -3520 -3521 -3522 -3523 -3524 -3525 -3526 -3527 -3528 -3529 -3530 -3531 -3532 -3533 -3534 -3535 -3536 -3537 -3538 -3539 -3540 -3541 -3542 -3543 -3544 -3545 -3546 -3547 -3548 -3549 -3550 -3551 -3552 -3553 -3554 -3555 -3556 -3557 -3558 -3559 -3560 -3561 -3562 -3563 -3564 -3565 -3566 -3567 -3568 -3569 -3570 -3571 -3572 -3573 -3574 -3575 -3576 -3577 -3578 -3579 -3580 -3581 -3582 -3583 -3584 -3585 -3586 -3587 -3588 -3589 -3590 -3591 -3592 -3593 -3594 -3595 -3596 -3597 -3598 -3599 -3600 -3601 -3602 -3603 -3604 -3605 -3606 -3607 -3608 -3609 -3610 -3611 -3612 -3613 -3614 -3615 -3616 -3617 -3618 -3619 -3620 -3621 -3622 -3623 -3624 -3625 -3626 -3627 -3628 -3629 -3630 -3631 -3632 -3633 -3634 -3635 -3636 -3637 -3638 -3639 -3640 -3641 -3642 -3643 -3644 -3645 -3646 -3647 -3648 -3649 -3650 -3651 -3652 -3653 -3654 -3655 -3656 -3657 -3658 -3659 -3660 -3661 -3662 -3663 -3664 -3665 -3666 -3667 -3668 -3669 -3670 -3671 -3672 -3673 -3674 -3675 -3676 -3677 -3678 -3679 -3680 -3681 -3682 -3683 -3684 -3685 -3686 -3687 -3688 -3689 -3690 -3691 -3692 -3693 -3694 -3695 -3696 -3697 -3698 -3699 -3700 -3701 -3702 -3703 -3704 -3705 -3706 -3707 -3708 -3709 -3710 -3711 -3712 -3713 -3714 -3715 -3716 -3717 -3718 -3719 -3720 -3721 -3722 -3723 -3724 -3725 -3726 -3727 -3728 -3729 -3730 -3731 -3732 -3733 -3734 -3735 -3736 -3737 -3738 -3739 -3740 -3741 -3742 -3743 -3744 -3745 -3746 -3747 -3748 -3749 -3750 -3751 -3752 -3753 -3754 -3755 -3756 -3757 -3758 -3759 -3760 -3761 -3762 -3763 -3764 -3765 -3766 -3767 -3768 -3769 -3770 -3771 -3772 -3773 -3774 -3775 -3776 -3777 -3778 -3779 -3780 -3781 -3782 -3783 -3784 -3785 -3786 -3787 -3788 -3789 -3790 -3791 -3792 -3793 -3794 -3795 -3796 -3797 -3798 -3799 -3800 -3801 -3802 -3803 -3804 -3805 -3806 -3807 -3808 -3809 -3810 -3811 -3812 -3813 -3814 -3815 -3816 -3817 -3818 -3819 -3820 -3821 -3822 -3823 -3824 -3825 -3826 -3827 -3828 -3829 -3830 -3831 -3832 -3833 -3834 -3835 -3836 -3837 -3838 -3839 -3840 -3841 -3842 -3843 -3844 -3845 -3846 -3847 -3848 -3849 -3850 -3851 -3852 -3853 -3854 -3855 -3856 -3857 -3858 -3859 -3860 -3861 -3862 -3863 -3864 -3865 -3866 -3867 -3868 -3869 -3870 -3871 -3872 -3873 -3874 -3875 -3876 -3877 -3878 -3879 -3880 -3881 -3882 -3883 -3884 -3885 -3886 -3887 -3888 -3889 -3890 -3891 -3892 -3893 -3894 -3895 -3896 -3897 -3898 -3899 -3900 -3901 -3902 -3903 -3904 -3905 -3906 -3907 -3908 -3909 -3910 -3911 -3912 -3913 -3914 -3915 -3916 -3917 -3918 -3919 -3920 -3921 -3922 -3923 -3924 -3925 -3926 -3927 -3928 -3929 -3930 -3931 -3932 -3933 -3934 -3935 -3936 -3937 -3938 -3939 -3940 -3941 -3942 -3943 -3944 -3945 -3946 -3947 -3948 -3949 -3950 -3951 -3952 -3953 -3954 -3955 -3956 -3957 -3958 -3959 -3960 -3961 -3962 -3963 -3964 -3965 -3966 -3967 -3968 -3969 -3970 -3971 -3972 -3973 -3974 -3975 -3976 -3977 -3978 -3979 -3980 -3981 -3982 -3983 -3984 -3985 -3986 -3987 -3988 -3989 -3990 -3991 -3992 -3993 -3994 -3995 -3996 -3997 -3998 -3999 -4000 -4001 -4002 -4003 -4004 -4005 -4006 -4007 -4008 -4009 -4010 -4011 -4012 -4013 -4014 -4015 -4016 -4017 -4018 -4019 -4020 -4021 -4022 -4023 -4024 -4025 -4026 -4027 -4028 -4029 -4030 -4031 -4032 -4033 -4034 -4035 -4036 -4037 -4038 -4039 -4040 -4041 -4042 -4043 -4044 -4045 -4046 -4047 -4048 -4049 -4050 -4051 -4052 -4053 -4054 -4055 -4056 -4057 -4058 -4059 -4060 -4061 -4062 -4063 -4064 -4065 -4066 -4067 -4068 -4069 -4070 -4071 -4072 -4073 -4074 -4075 -4076 -4077 -4078 -4079 -4080 -4081 -4082 -4083 -4084 -4085 -4086 -4087 -4088 -4089 -4090 -4091 -4092 -4093 -4094 -4095 -4096 -4097 -4098 -4099 -4100 -4101 -4102 -4103 -4104 -4105 -4106 -4107 -4108 -4109 -4110 -4111 -4112 -4113 -4114 -4115 -4116 -4117 -4118 -4119 -4120 -4121 -4122 -4123 -4124 -4125 -4126 -4127 -4128 -4129 -4130 -4131 -4132 -4133 -4134 -4135 -4136 -4137 -4138 -4139 -4140 -4141 -4142 -4143 -4144 -4145 -4146 -4147 -4148 -4149 -4150 -4151 -4152 -4153 -4154 -4155 -4156 -4157 -4158 -4159 -4160 -4161 -4162 -4163 -4164 -4165 -4166 -4167 -4168 -4169 -4170 -4171 -4172 -4173 -4174 -4175 -4176 -4177 -4178 -4179 -4180 -4181 -4182 -4183 -4184 -4185 -4186 -4187 -4188 -4189 -4190 -4191 -4192 -4193 -4194 -4195 -4196 -4197 -4198 -4199 -4200 -4201 -4202 -4203 -4204 -4205 -4206 -4207 -4208 -4209 -4210 -4211 -4212 -4213 -4214 -4215 -4216 -4217 -4218 -4219 -4220 -4221 -4222 -4223 -4224 -4225 -4226 -4227 -4228 -4229 -4230 -4231 -4232 -4233 -4234 -4235 -4236 -4237 -4238 -4239 -4240 -4241 -4242 -4243 -4244 -4245 -4246 -4247 -4248 -4249 -4250 -4251 -4252 -4253 -4254 -4255 -4256 -4257 -4258 -4259 -4260 -4261 -4262 -4263 -4264 -4265 -4266 -4267 -4268 -4269 -4270 -4271 -4272 -4273 -4274 -4275 -4276 -4277 -4278 -4279 -4280 -4281 -4282 -4283 -4284 -4285 -4286 -4287 -4288 -4289 -4290 -4291 -4292 -4293 -4294 -4295 -4296 -4297 -4298 -4299 -4300 -4301 -4302 -4303 -4304 -4305 -4306 -4307 -4308 -4309 -4310 -4311 -4312 -4313 -4314 -4315 -4316 -4317 -4318 -4319 -4320 -4321 -4322 -4323 -4324 -4325 -4326 -4327 -4328 -4329 -4330 -4331 -4332 -4333 -4334 -4335 -4336 -4337 -4338 -4339 -4340 -4341 -4342 -4343 -4344 -4345 -4346 -4347 -4348 -4349 -4350 -4351 -4352 -4353 -4354 -4355 -4356 -4357 -4358 -4359 -4360 -4361 -4362 -4363 -4364 -4365 -4366 -4367 -4368 -4369 -4370 -4371 -4372 -4373 -4374 -4375 -4376 -4377 -4378 -4379 -4380 -4381 -4382 -4383 -4384 -4385 -4386 -4387 -4388 -4389 -4390 -4391 -4392 -4393 -4394 -4395 -4396 -4397 -4398 -4399 -4400 -4401 -4402 -4403 -4404 -4405 -4406 -4407 -4408 -4409 -4410 -4411 -4412 -4413 -4414 -4415 -4416 -4417 -4418 -4419 -4420 -4421 -4422 -4423 -4424 -4425 -4426 -4427 -4428 -4429 -4430 -4431 -4432 -4433 -4434 -4435 -4436 -4437 -4438 -4439 -4440 -4441 -4442 -4443 -4444 -4445 -4446 -4447 -4448 -4449 -4450 -4451 -4452 -4453 -4454 -4455 -4456 -4457 -4458 -4459 -4460 -4461 -4462 -4463 -4464 -4465 -4466 -4467 -4468 -4469 -4470 -4471 -4472 -4473 -4474 -4475 -4476 -4477 -4478 -4479 -4480 -4481 -4482 -4483 -4484 -4485 -4486 -4487 -4488 -4489 -4490 -4491 -4492 -4493 -4494 -4495 -4496 -4497 -4498 -4499 -4500 -4501 -4502 -4503 -4504 -4505 -4506 -4507 -4508 -4509 -4510 -4511 -4512 -4513 -4514 -4515 -4516 -4517 -4518 -4519 -4520 -4521 -4522 -4523 -4524 -4525 -4526 -4527 -4528 -4529 -4530 -4531 -4532 -4533 -4534 -4535 -4536 -4537 -4538 -4539 -4540 -4541 -4542 -4543 -4544 -4545 -4546 -4547 -4548 -4549 -4550 -4551 -4552 -4553 -4554 -4555 -4556 -4557 -4558 -4559 -4560 -4561 -4562 -4563 -4564 -4565 -4566 -4567 -4568 -4569 -4570 -4571 -4572 -4573 -4574 -4575 -4576 -4577 -4578 -4579 -4580 -4581 -4582 -4583 -4584 -4585 -4586 -4587 -4588 -4589 -4590 -4591 -4592 -4593 -4594 -4595 -4596 -4597 -4598 -4599 -4600 -4601 -4602 -4603 -4604 -4605 -4606 -4607 -4608 -4609 -4610 -4611 -4612 -4613 -4614 -4615 -4616 -4617 -4618 -4619 -4620 -4621 -4622 -4623 -4624 -4625 -4626 -4627 -4628 -4629 -4630 -4631 -4632 -4633 -4634 -4635 -4636 -4637 -4638 -4639 -4640 -4641 -4642 -4643 -4644 -4645 -4646 -4647 -4648 -4649 -4650 -4651 -4652 -4653 -4654 -4655 -4656 -4657 -4658 -4659 -4660 -4661 -4662 -4663 -4664 -4665 -4666 -4667 -4668 -4669 -4670 -4671 -4672 -4673 -4674 -4675 -4676 -4677 -4678 -4679 -4680 -4681 -4682 -4683 -4684 -4685 -4686 -4687 -4688 -4689 -4690 -4691 -4692 -4693 -4694 -4695 -4696 -4697 -4698 -4699 -4700 -4701 -4702 -4703 -4704 -4705 -4706 -4707 -4708 -4709 -4710 -4711 -4712 -4713 -4714 -4715 -4716 -4717 -4718 -4719 -4720 -4721 -4722 -4723 -4724 -4725 -4726 -4727 -4728 -4729 -4730 -4731 -4732 -4733 -4734 -4735 -4736 -4737 -4738 -4739 -4740 -4741 -4742 -4743 -4744 -4745 -4746 -4747 -4748 -4749 -4750 -4751 -4752 -4753 -4754 -4755 -4756 -4757 -4758 -4759 -4760 -4761 -4762 -4763 -4764 -4765 -4766 -4767 -4768 -4769 -4770 -4771 -4772 -4773 -4774 -4775 -4776 -4777 -4778 -4779 -4780 -4781 -4782 -4783 -4784 -4785 -4786 -4787 -4788 -4789 -4790 -4791 -4792 -4793 -4794 -4795 -4796 -4797 -4798 -4799 -4800 -4801 -4802 -4803 -4804 -4805 -4806 -4807 -4808 -4809 -4810 -4811 -4812 -4813 -4814 -4815 -4816 -4817 -4818 -4819 -4820 -4821 -4822 -4823 -4824 -4825 -4826 -4827 -4828 -4829 -4830 -4831 -4832 -4833 -4834 -4835 -4836 -4837 -4838 -4839 -4840 -4841 -4842 -4843 -4844 -4845 -4846 -4847 -4848 -4849 -4850 -4851 -4852 -4853 -4854 -4855 -4856 -4857 -4858 -4859 -4860 -4861 -4862 -4863 -4864 -4865 -4866 -4867 -4868 -4869 -4870 -4871 -4872 -4873 -4874 -4875 -4876 -4877 -4878 -4879 -4880 -4881 -4882 -4883 -4884 -4885 -4886 -4887 -4888 -4889 -4890 -4891 -4892 -4893 -4894 -4895 -4896 -4897 -4898 -4899 -4900 -4901 -4902 -4903 -4904 -4905 -4906 -4907 -4908 -4909 -4910 -4911 -4912 -4913 -4914 -4915 -4916 -4917 -4918 -4919 -4920 -4921 -4922 -4923 -4924 -4925 -4926 -4927 -4928 -4929 -4930 -4931 -4932 -4933 -4934 -4935 -4936 -4937 -4938 -4939 -4940 -4941 -4942 -4943 -4944 -4945 -4946 -4947 -4948 -4949 -4950 -4951 -4952 -4953 -4954 -4955 -4956 -4957 -4958 -4959 -4960 -4961 -4962 -4963 -4964 -4965 -4966 -4967 -4968 -4969 -4970 -4971 -4972 -4973 -4974 -4975 -4976 -4977 -4978 -4979 -4980 -4981 -4982 -4983 -4984 -4985 -4986 -4987 -4988 -4989 -4990 -4991 -4992 -4993 -4994 -4995 -4996 -4997 -4998 -4999 -5000 -5001 -5002 -5003 -5004 -5005 -5006 -5007 -5008 -5009 -5010 -5011 -5012 -5013 -5014 -5015 -5016 -5017 -5018 -5019 -5020 -5021 -5022 -5023 -5024 -5025 -5026 -5027 -5028 -5029 -5030 -5031 -5032 -5033 -5034 -5035 -5036 -5037 -5038 -5039 -5040 -5041 -5042 -5043 -5044 -5045 -5046 -5047 -5048 -5049 -5050 -5051 -5052 -5053 -5054 -5055 -5056 -5057 -5058 -5059 -5060 -5061 -5062 -5063 -5064 -5065 -5066 -5067 -5068 -5069 -5070 -5071 -5072 -5073 -5074 -5075 -5076 -5077 -5078 -5079 -5080 -5081 -5082 -5083 -5084 -5085 -5086 -5087 -5088 -5089 -5090 -5091 -5092 -5093 -5094 -5095 -5096 -5097 -5098 -5099 -5100 -5101 -5102 -5103 -5104 -5105 -5106 -5107 -5108 -5109 -5110 -5111 -5112 -5113 -5114 -5115 -5116 -5117 -5118 -5119 -5120 -5121 -5122 -5123 -5124 -5125 -5126 -5127 -5128 -5129 -5130 -5131 -5132 -5133 -5134 -5135 -5136 -5137 -5138 -5139 -5140 -5141 -5142 -5143 -5144 -5145 -5146 -5147 -5148 -5149 -5150 -5151 -5152 -5153 -5154 -5155 -5156 -5157 -5158 -5159 -5160 -5161 -5162 -5163 -5164 -5165 -5166 -5167 -5168 -5169 -5170 -5171 -5172 -5173 -5174 -5175 -5176 -5177 -5178 -5179 -5180 -5181 -5182 -5183 -5184 -5185 -5186 -5187 -5188 -5189 -5190 -5191 -5192 -5193 -5194 -5195 -5196 -5197 -5198 -5199 -5200 -5201 -5202 -5203 -5204 -5205 -5206 -5207 -5208 -5209 -5210 -5211 -5212 -5213 -5214 -5215 -5216 -5217 -5218 -5219 -5220 -5221 -5222 -5223 -5224 -5225 -5226 -5227 -5228 -5229 -5230 -5231 -5232 -5233 -5234 -5235 -5236 -5237 -5238 -5239 -5240 -5241 -5242 -5243 -5244 -5245 -5246 -5247 -5248 -5249 -5250 -5251 -5252 -5253 -5254 -5255 -5256 -5257 -5258 -5259 -5260 -5261 -5262 -5263 -5264 -5265 -5266 -5267 -5268 -5269 -5270 -5271 -5272 -5273 -5274 -5275 -5276 -5277 -5278 -5279 -5280 -5281 -5282 -5283 -5284 -5285 -5286 -5287 -5288 -5289 -5290 -5291 -5292 -5293 -5294 -5295 -5296 -5297 -5298 -5299 -5300 -5301 -5302 -5303 -5304 -5305 -5306 -5307 -5308 -5309 -5310 -5311 -5312 -5313 -5314 -5315 -5316 -5317 -5318 -5319 -5320 -5321 -5322 -5323 -5324 -5325 -5326 -5327 -5328 -5329 -5330 -5331 -5332 -5333 -5334 -5335 -5336 -5337 -5338 -5339 -5340 -5341 -5342 -5343 -5344 -5345 -5346 -5347 -5348 -5349 -5350 -5351 -5352 -5353 -5354 -5355 -5356 -5357 -5358 -5359 -5360 -5361 -5362 -5363 -5364 -5365 -5366 -5367 -5368 -5369 -5370 -5371 -5372 -5373 -5374 -5375 -5376 -5377 -5378 -5379 -5380 -5381 -5382 -5383 -5384 -5385 -5386 -5387 -5388 -5389 -5390 -5391 -5392 -5393 -5394 -5395 -5396 -5397 -5398 -5399 -5400 -5401 -5402 -5403 -5404 -5405 -5406 -5407 -5408 -5409 -5410 -5411 -5412 -5413 -5414 -5415 -5416 -5417 -5418 -5419 -5420 -5421 -5422 -5423 -5424 -5425 -5426 -5427 -5428 -5429 -5430 -5431 -5432 -5433 -5434 -5435 -5436 -5437 -5438 -5439 -5440 -5441 -5442 -5443 -5444 -5445 -5446 -5447 -5448 -5449 -5450 -5451 -5452 -5453 -5454 -5455 -5456 -5457 -5458 -5459 -5460 -5461 -5462 -5463 -5464 -5465 -5466 -5467 -5468 -5469 -5470 -5471 -5472 -5473 -5474 -5475 -5476 -5477 -5478 -5479 -5480 -5481 -5482 -5483 -5484 -5485 -5486 -5487 -5488 -5489 -5490 -5491 -5492 -5493 -5494 -5495 -5496 -5497 -5498 -5499 -5500 -5501 -5502 -5503 -5504 -5505 -5506 -5507 -5508 -5509 -5510 -5511 -5512 -5513 -5514 -5515 -5516 -5517 -5518 -5519 -5520 -5521 -5522 -5523 -5524 -5525 -5526 -5527 -5528 -5529 -5530 -5531 -5532 -5533 -5534 -5535 -5536 -5537 -5538 -5539 -5540 -5541 -5542 -5543 -5544 -5545 -5546 -5547 -5548 -5549 -5550 -5551 -5552 -5553 -5554 -5555 -5556 -5557 -5558 -5559 -5560 -5561 -5562 -5563 -5564 -5565 -5566 -5567 -5568 -5569 -5570 -5571 -5572 -5573 -5574 -5575 -5576 -5577 -5578 -5579 -5580 -5581 -5582 -5583 -5584 -5585 -5586 -5587 -5588 -5589 -5590 -5591 -5592 -5593 -5594 -5595 -5596 -5597 -5598 -5599 -5600 -5601 -5602 -5603 -5604 -5605 -5606 -5607 -5608 -5609 -5610 -5611 -5612 -5613 -5614 -5615 -5616 -5617 -5618 -5619 -5620 -5621 -5622 -5623 -5624 -5625 -5626 -5627 -5628 -5629 -5630 -5631 -5632 -5633 -5634 -5635 -5636 -5637 -5638 -5639 -5640 -5641 -5642 -5643 -5644 -5645 -5646 -5647 -5648 -5649 -5650 -5651 -5652 -5653 -5654 -5655 -5656 -5657 -5658 -5659 -5660 -5661 -5662 -5663 -5664 -5665 -5666 -5667 -5668 -5669 -5670 -5671 -5672 -5673 -5674 -5675 -5676 -5677 -5678 -5679 -5680 -5681 -5682 -5683 -5684 -5685 -5686 -5687 -5688 -5689 -5690 -5691 -5692 -5693 -5694 -5695 -5696 -5697 -5698 -5699 -5700 -5701 -5702 -5703 -5704 -5705 -5706 -5707 -5708 -5709 -5710 -5711 -5712 -5713 -5714 -5715 -5716 -5717 -5718 -5719 -5720 -5721 -5722 -5723 -5724 -5725 -5726 -5727 -5728 -5729 -5730 -5731 -5732 -5733 -5734 -5735 -5736 -5737 -5738 -5739 -5740 -5741 -5742 -5743 -5744 -5745 -5746 -5747 -5748 -5749 -5750 -5751 -5752 -5753 -5754 -5755 -5756 -5757 -5758 -5759 -5760 -5761 -5762 -5763 -5764 -5765 -5766 -5767 -5768 -5769 -5770 -5771 -5772 -5773 -5774 -5775 -5776 -5777 -5778 -5779 -5780 -5781 -5782 -5783 -5784 -5785 -5786 -5787 -5788 -5789 -5790 -5791 -5792 -5793 -5794 -5795 -5796 -5797 -5798 -5799 -5800 -5801 -5802 -5803 -5804 -5805 -5806 -5807 -5808 -5809 -5810 -5811 -5812 -5813 -5814 -5815 -5816 -5817 -5818 -5819 -5820 -5821 -5822 -5823 -5824 -5825 -5826 -5827 -5828 -5829 -5830 -5831 -5832 -5833 -5834 -5835 -5836 -5837 -5838 -5839 -5840 -5841 -5842 -5843 -5844 -5845 -5846 -5847 -5848 -5849 -5850 -5851 -5852 -5853 -5854 -5855 -5856 -5857 -5858 -5859 -5860 -5861 -5862 -5863 -5864 -5865 -5866 -5867 -5868 -5869 -5870 -5871 -5872 -5873 -5874 -5875 -5876 -5877 -5878 -5879 -5880 -5881 -5882 -5883 -5884 -5885 -5886 -5887 -5888 -5889 -5890 -5891 -5892 -5893 -5894 -5895 -5896 -5897 -5898 -5899 -5900 -5901 -5902 -5903 -5904 -5905 -5906 -5907 -5908 -5909 -5910 -5911 -5912 -5913 -5914 -5915 -5916 -5917 -5918 -5919 -5920 -5921 -5922 -5923 -5924 -5925 -5926 -5927 -5928 -5929 -5930 -5931 -5932 -5933 -5934 -5935 -5936 -5937 -5938 -5939 -5940 -5941 -5942 -5943 -5944 -5945 -5946 -5947 -5948 -5949 -5950 -5951 -5952 -5953 -5954 -5955 -5956 -5957 -5958 -5959 -5960 -5961 -5962 -5963 -5964 -5965 -5966 -5967 -5968 -5969 -5970 -5971 -5972 -5973 -5974 -5975 -5976 -5977 -5978 -5979 -5980 -5981 -5982 -5983 -5984 -5985 -5986 -5987 -5988 -5989 -5990 -5991 -5992 -5993 -5994 -5995 -5996 -5997 -5998 -5999 -6000 -6001 -6002 -6003 -6004 -6005 -6006 -6007 -6008 -6009 -6010 -6011 -6012 -6013 -6014 -6015 -6016 -6017 -6018 -6019 -6020 -6021 -6022 -6023 -6024 -6025 -6026 -6027 -6028 -6029 -6030 -6031 -6032 -6033 -6034 -6035 -6036 -6037 -6038 -6039 -6040 -6041 -6042 -6043 -6044 -6045 -6046 -6047 -6048 -6049 -6050 -6051 -6052 -6053 -6054 -6055 -6056 -6057 -6058 -6059 -6060 -6061 -6062 -6063 -6064 -6065 -6066 -6067 -6068 -6069 -6070 -6071 -6072 -6073 -6074 -6075 -6076 -6077 -6078 -6079 -6080 -6081 -6082 -6083 -6084 -6085 -6086 -6087 -6088 -6089 -6090 -6091 -6092 -6093 -6094 -6095 -6096 -6097 -6098 -6099 -6100 -6101 -6102 -6103 -6104 -6105 -6106 -6107 -6108 -6109 -6110 -6111 -6112 -6113 -6114 -6115 -6116 -6117 -6118 -6119 -6120 -6121 -6122 -6123 -6124 -6125 -6126 -6127 -6128 -6129 -6130 -6131 -6132 -6133 -6134 -6135 -6136 -6137 -6138 -6139 -6140 -6141 -6142 -6143 -6144 -6145 -6146 -6147 -6148 -6149 -6150 -6151 -6152 -6153 -6154 -6155 -6156 -6157 -6158 -6159 -6160 -6161 -6162 -6163 -6164 -6165 -6166 -6167 -6168 -6169 -6170 -6171 -6172 -6173 -6174 -6175 -6176 -6177 -6178 -6179 -6180 -6181 -6182 -6183 -6184 -6185 -6186 -6187 -6188 -6189 -6190 -6191 -6192 -6193 -6194 -6195 -6196 -6197 -6198 -6199 -6200 -6201 -6202 -6203 -6204 -6205 -6206 -6207 -6208 -6209 -6210 -6211 -6212 -6213 -6214 -6215 -6216 -6217 -6218 -6219 -6220 -6221 -6222 -6223 -6224 -6225 -6226 -6227 -6228 -6229 -6230 -6231 -6232 -6233 -6234 -6235 -6236 -6237 -6238 -6239 -6240 -6241 -6242 -6243 -6244 -6245 -6246 -6247 -6248 -6249 -6250 -6251 -6252 -6253 -6254 -6255 -6256 -6257 -6258 -6259 -6260 -6261 -6262 -6263 -6264 -6265 -6266 -6267 -6268 -6269 -6270 -6271 -6272 -6273 -6274 -6275 -6276 -6277 -6278 -6279 -6280 -6281 -6282 -6283 -6284 -6285 -6286 -6287 -6288 -6289 -6290 -6291 -6292 -6293 -6294 -6295 -6296 -6297 -6298 -6299 -6300 -6301 -6302 -6303 -6304 -6305 -6306 -6307 -6308 -6309 -6310 -6311 -6312 -6313 -6314 -6315 -6316 -6317 -6318 -6319 -6320 -6321 -6322 -6323 -6324 -6325 -6326 -6327 -6328 -6329 -6330 -6331 -6332 -6333 -6334 -6335 -6336 -6337 -6338 -6339 -6340 -6341 -6342 -6343 -6344 -6345 -6346 -6347 -6348 -6349 -6350 -6351 -6352 -6353 -6354 -6355 -6356 -6357 -6358 -6359 -6360 -6361 -6362 -6363 -6364 -6365 -6366 -6367 -6368 -6369 -6370 -6371 -6372 -6373 -6374 -6375 -6376 -6377 -6378 -6379 -6380 -6381 -6382 -6383 -6384 -6385 -6386 -6387 -6388 -6389 -6390 -6391 -6392 -6393 -6394 -6395 -6396 -6397 -6398 -6399 -6400 -6401 -6402 -6403 -6404 -6405 -6406 -6407 -6408 -6409 -6410 -6411 -6412 -6413 -6414 -6415 -6416 -6417 -6418 -6419 -6420 -6421 -6422 -6423 -6424 -6425 -6426 -6427 -6428 -6429 -6430 -6431 -6432 -6433 -6434 -6435 -6436 -6437 -6438 -6439 -6440 -6441 -6442 -6443 -6444 -6445 -6446 -6447 -6448 -6449 -6450 -6451 -6452 -6453 -6454 -6455 -6456 -6457 -6458 -6459 -6460 -6461 -6462 -6463 -6464 -6465 -6466 -6467 -6468 -6469 -6470 -6471 -6472 -6473 -6474 -6475 -6476 -6477 -6478 -6479 -6480 -6481 -6482 -6483 -6484 -6485 -6486 -6487 -6488 -6489 -6490 -6491 -6492 -6493 -6494 -6495 -6496 -6497 -6498 -6499 -6500 -6501 -6502 -6503 -6504 -6505 -6506 -6507 -6508 -6509 -6510 -6511 -6512 -6513 -6514 -6515 -6516 -6517 -6518 -6519 -6520 -6521 -6522 -6523 -6524 -6525 -6526 -6527 -6528 -6529 -6530 -6531 -6532 -6533 -6534 -6535 -6536 -6537 -6538 -6539 -6540 -6541 -6542 -6543 -6544 -6545 -6546 -6547 -6548 -6549 -6550 -6551 -6552 -6553 -6554 -6555 -6556 -6557 -6558 -6559 -6560 -6561 -6562 -6563 -6564 -6565 -6566 -6567 -6568 -6569 -6570 -6571 -6572 -6573 -6574 -6575 -6576 -6577 -6578 -6579 -6580 -6581 -6582 -6583 -6584 -6585 -6586 -6587 -6588 -6589 -6590 -6591 -6592 -6593 -6594 -6595 -6596 -6597 -6598 -6599 -6600 -6601 -6602 -6603 -6604 -6605 -6606 -6607 -6608 -6609 -6610 -6611 -6612 -6613 -6614 -6615 -6616 -6617 -6618 -6619 -6620 -6621 -6622 -6623 -6624 -6625 -6626 -6627 -6628 -6629 -6630 -6631 -6632 -6633 -6634 -6635 -6636 -6637 -6638 -6639 -6640 -6641 -6642 -6643 -6644 -6645 -6646 -6647 -6648 -6649 -6650 -6651 -6652 -6653 -6654 -6655 -6656 -6657 -6658 -6659 -6660 -6661 -6662 -6663 -6664 -6665 -6666 -6667 -6668 -6669 -6670 -6671 -6672 -6673 -6674 -6675 -6676 -6677 -6678 -6679 -6680 -6681 -6682 -6683 -6684 -6685 -6686 -6687 -6688 -6689 -6690 -6691 -6692 -6693 -6694 -6695 -6696 -6697 -6698 -6699 -6700 -6701 -6702 -6703 -6704 -6705 -6706 -6707 -6708 -6709 -6710 -6711 -6712 -6713 -6714 -6715 -6716 -6717 -6718 -6719 -6720 -6721 -6722 -6723 -6724 -6725 -6726 -6727 -6728 -6729 -6730 -6731 -6732 -6733 -6734 -6735 -6736 -6737 -6738 -6739 -6740 -6741 -6742 -6743 -6744 -6745 -6746 -6747 -6748 -6749 -6750 -6751 -6752 -6753 -6754 -6755 -6756 -6757 -6758 -6759 -6760 -6761 -6762 -6763 -6764 -6765 -6766 -6767 -6768 -6769 -6770 -6771 -6772 -6773 -6774 -6775 -6776 -6777 -6778 -6779 -6780 -6781 -6782 -6783 -6784 -6785 -6786 -6787 -6788 -6789 -6790 -6791 -6792 -6793 -6794 -6795 -6796 -6797 -6798 -6799 -6800 -6801 -6802 -6803 -6804 -6805 -6806 -6807 -6808 -6809 -6810 -6811 -6812 -6813 -6814 -6815 -6816 -6817 -6818 -6819 -6820 -6821 -6822 -6823 -6824 -6825 -6826 -6827 -6828 -6829 -6830 -6831 -6832 -6833 -6834 -6835 -6836 -6837 -6838 -6839 -6840 -6841 -6842 -6843 -6844 -6845 -6846 -6847 -6848 -6849 -6850 -6851 -6852 -6853 -6854 -6855 -6856 -6857 -6858 -6859 -6860 -6861 -6862 -6863 -6864 -6865 -6866 -6867 -6868 -6869 -6870 -6871 -6872 -6873 -6874 -6875 -6876 -6877 -6878 -6879 -6880 -6881 -6882 -6883 -6884 -6885 -6886 -6887 -6888 -6889 -6890 -6891 -6892 -6893 -6894 -6895 -6896 -6897 -6898 -6899 -6900 -6901 -6902 -6903 -6904 -6905 -6906 -6907 -6908 -6909 -6910 -6911 -6912 -6913 -6914 -6915 -6916 -6917 -6918 -6919 -6920 -6921 -6922 -6923 -6924 -6925 -6926 -6927 -6928 -6929 -6930 -6931 -6932 -6933 -6934 -6935 -6936 -6937 -6938 -6939 -6940 -6941 -6942 -6943 -6944 -6945 -6946 -6947 -6948 -6949 -6950 -6951 -6952 -6953 -6954 -6955 -6956 -6957 -6958 -6959 -6960 -6961 -6962 -6963 -6964 -6965 -6966 -6967 -6968 -6969 -6970 -6971 -6972 -6973 -6974 -6975 -6976 -6977 -6978 -6979 -6980 -6981 -6982 -6983 -6984 -6985 -6986 -6987 -6988 -6989 -6990 -6991 -6992 -6993 -6994 -6995 -6996 -6997 -6998 -6999 -7000 -7001 -7002 -7003 -7004 -7005 -7006 -7007 -7008 -7009 -7010 -7011 -7012 -7013 -7014 -7015 -7016 -7017 -7018 -7019 -7020 -7021 -7022 -7023 -7024 -7025 -7026 -7027 -7028 -7029 -7030 -7031 -7032 -7033 -7034 -7035 -7036 -7037 -7038 -7039 -7040 -7041 -7042 -7043 -7044 -7045 -7046 -7047 -7048 -7049 -7050 -7051 -7052 -7053 -7054 -7055 -7056 -7057 -7058 -7059 -7060 -7061 -7062 -7063 -7064 -7065 -7066 -7067 -7068 -7069 -7070 -7071 -7072 -7073 -7074 -7075 -7076 -7077 -7078 -7079 -7080 -7081 -7082 -7083 -7084 -7085 -7086 -7087 -7088 -7089 -7090 -7091 -7092 -7093 -7094 -7095 -7096 -7097 -7098 -7099 -7100 -7101 -7102 -7103 -7104 -7105 -7106 -7107 -7108 -7109 -7110 -7111 -7112 -7113 -7114 -7115 -7116 -7117 -7118 -7119 -7120 -7121 -7122 -7123 -7124 -7125 -7126 -7127 -7128 -7129 -7130 -7131 -7132 -7133 -7134 -7135 -7136 -7137 -7138 -7139 -7140 -7141 -7142 -7143 -7144 -7145 -7146 -7147 -7148 -7149 -7150 -7151 -7152 -7153 -7154 -7155 -7156 -7157 -7158 -7159 -7160 -7161 -7162 -7163 -7164 -7165 -7166 -7167 -7168 -7169 -7170 -7171 -7172 -7173 -7174 -7175 -7176 -7177 -7178 -7179 -7180 -7181 -7182 -7183 -7184 -7185 -7186 -7187 -7188 -7189 -7190 -7191 -7192 -7193 -7194 -7195 -7196 -7197 -7198 -7199 -7200 -7201 -7202 -7203 -7204 -7205 -7206 -7207 -7208 -7209 -7210 -7211 -7212 -7213 -7214 -7215 -7216 -7217 -7218 -7219 -7220 -7221 -7222 -7223 -7224 -7225 -7226 -7227 -7228 -7229 -7230 -7231 -7232 -7233 -7234 -7235 -7236 -7237 -7238 -7239 -7240 -7241 -7242 -7243 -7244 -7245 -7246 -7247 -7248 -7249 -7250 -7251 -7252 -7253 -7254 -7255 -7256 -7257 -7258 -7259 -7260 -7261 -7262 -7263 -7264 -7265 -7266 -7267 -7268 -7269 -7270 -7271 -7272 -7273 -7274 -7275 -7276 -7277 -7278 -7279 -7280 -7281 -7282 -7283 -7284 -7285 -7286 -7287 -7288 -7289 -7290 -7291 -7292 -7293 -7294 -7295 -7296 -7297 -7298 -7299 -7300 -7301 -7302 -7303 -7304 -7305 -7306 -7307 -7308 -7309 -7310 -7311 -7312 -7313 -7314 -7315 -7316 -7317 -7318 -7319 -7320 -7321 -7322 -7323 -7324 -7325 -7326 -7327 -7328 -7329 -7330 -7331 -7332 -7333 -7334 -7335 -7336 -7337 -7338 -7339 -7340 -7341 -7342 -7343 -7344 -7345 -7346 -7347 -7348 -7349 -7350 -7351 -7352 -7353 -7354 -7355 -7356 -7357 -7358 -7359 -7360 -7361 -7362 -7363 -7364 -7365 -7366 -7367 -7368 -7369 -7370 -7371 -7372 -7373 -7374 -7375 -7376 -7377 -7378 -7379 -7380 -7381 -7382 -7383 -7384 -7385 -7386 -7387 -7388 -7389 -7390 -7391 -7392 -7393 -7394 -7395 -7396 -7397 -7398 -7399 -7400 -7401 -7402 -7403 -7404 -7405 -7406 -7407 -7408 -7409 -7410 -7411 -7412 -7413 -7414 -7415 -7416 -7417 -7418 -7419 -7420 -7421 -7422 -7423 -7424 -7425 -7426 -7427 -7428 -7429 -7430 -7431 -7432 -7433 -7434 -7435 -7436 -7437 -7438 -7439 -7440 -7441 -7442 -7443 -7444 -7445 -7446 -7447 -7448 -7449 -7450 -7451 -7452 -7453 -7454 -7455 -7456 -7457 -7458 -7459 -7460 -7461 -7462 -7463 -7464 -7465 -7466 -7467 -7468 -7469 -7470 -7471 -7472 -7473 -7474 -7475 -7476 -7477 -7478 -7479 -7480 -7481 -7482 -7483 -7484 -7485 -7486 -7487 -7488 -7489 -7490 -7491 -7492 -7493 -7494 -7495 -7496 -7497 -7498 -7499 -7500 -7501 -7502 -7503 -7504 -7505 -7506 -7507 -7508 -7509 -7510 -7511 -7512 -7513 -7514 -7515 -7516 -7517 -7518 -7519 -7520 -7521 -7522 -7523 -7524 -7525 -7526 -7527 -7528 -7529 -7530 -7531 -7532 -7533 -7534 -7535 -7536 -7537 -7538 -7539 -7540 -7541 -7542 -7543 -7544 -7545 -7546 -7547 -7548 -7549 -7550 -7551 -7552 -7553 -7554 -7555 -7556 -7557 -7558 -7559 -7560 -7561 -7562 -7563 -7564 -7565 -7566 -7567 -7568 -7569 -7570 -7571 -7572 -7573 -7574 -7575 -7576 -7577 -7578 -7579 -7580 -7581 -7582 -7583 -7584 -7585 -7586 -7587 -7588 -7589 -7590 -7591 -7592 -7593 -7594 -7595 -7596 -7597 -7598 -7599 -7600 -7601 -7602 -7603 -7604 -7605 -7606 -7607 -7608 -7609 -7610 -7611 -7612 -7613 -7614 -7615 -7616 -7617 -7618 -7619 -7620 -7621 -7622 -7623 -7624 -7625 -7626 -7627 -7628 -7629 -7630 -7631 -7632 -7633 -7634 -7635 -7636 -7637 -7638 -7639 -7640 -7641 -7642 -7643 -7644 -7645 -7646 -7647 -7648 -7649 -7650 -7651 -7652 -7653 -7654 -7655 -7656 -7657 -7658 -7659 -7660 -7661 -7662 -7663 -7664 -7665 -7666 -7667 -7668 -7669 -7670 -7671 -7672 -7673 -7674 -7675 -7676 -7677 -7678 -7679 -7680 -7681 -7682 -7683 -7684 -7685 -7686 -7687 -7688 -7689 -7690 -7691 -7692 -7693 -7694 -7695 -7696 -7697 -7698 -7699 -7700 -7701 -7702 -7703 -7704 -7705 -7706 -7707 -7708 -7709 -7710 -7711 -7712 -7713 -7714 -7715 -7716 -7717 -7718 -7719 -7720 -7721 -7722 -7723 -7724 -7725 -7726 -7727 -7728 -7729 -7730 -7731 -7732 -7733 -7734 -7735 -7736 -7737 -7738 -7739 -7740 -7741 -7742 -7743 -7744 -7745 -7746 -7747 -7748 -7749 -7750 -7751 -7752 -7753 -7754 -7755 -7756 -7757 -7758 -7759 -7760 -7761 -7762 -7763 -7764 -7765 -7766 -7767 -7768 -7769 -7770 -7771 -7772 -7773 -7774 -7775 -7776 -7777 -7778 -7779 -7780 -7781 -7782 -7783 -7784 -7785 -7786 -7787 -7788 -7789 -7790 -7791 -7792 -7793 -7794 -7795 -7796 -7797 -7798 -7799 -7800 -7801 -7802 -7803 -7804 -7805 -7806 -7807 -7808 -7809 -7810 -7811 -7812 -7813 -7814 -7815 -7816 -7817 -7818 -7819 -7820 -7821 -7822 -7823 -7824 -7825 -7826 -7827 -7828 -7829 -7830 -7831 -7832 -7833 -7834 -7835 -7836 -7837 -7838 -7839 -7840 -7841 -7842 -7843 -7844 -7845 -7846 -7847 -7848 -7849 -7850 -7851 -7852 -7853 -7854 -7855 -7856 -7857 -7858 -7859 -7860 -7861 -7862 -7863 -7864 -7865 -7866 -7867 -7868 -7869 -7870 -7871 -7872 -7873 -7874 -7875 -7876 -7877 -7878 -7879 -7880 -7881 -7882 -7883 -7884 -7885 -7886 -7887 -7888 -7889 -7890 -7891 -7892 -7893 -7894 -7895 -7896 -7897 -7898 -7899 -7900 -7901 -7902 -7903 -7904 -7905 -7906 -7907 -7908 -7909 -7910 -7911 -7912 -7913 -7914 -7915 -7916 -7917 -7918 -7919 -7920 -7921 -7922 -7923 -7924 -7925 -7926 -7927 -7928 -7929 -7930 -7931 -7932 -7933 -7934 -7935 -7936 -7937 -7938 -7939 -7940 -7941 -7942 -7943 -7944 -7945 -7946 -7947 -7948 -7949 -7950 -7951 -7952 -7953 -7954 -7955 -7956 -7957 -7958 -7959 -7960 -7961 -7962 -7963 -7964 -7965 -7966 -7967 -7968 -7969 -7970 -7971 -7972 -7973 -7974 -7975 -7976 -7977 -7978 -7979 -7980 -7981 -7982 -7983 -7984 -7985 -7986 -7987 -7988 -7989 -7990 -7991 -7992 -7993 -7994 -7995 -7996 -7997 -7998 -7999 -8000 -8001 -8002 -8003 -8004 -8005 -8006 -8007 -8008 -8009 -8010 -8011 -8012 -8013 -8014 -8015 -8016 -8017 -8018 -8019 -8020 -8021 -8022 -8023 -8024 -8025 -8026 -8027 -8028 -8029 -8030 -8031 -8032 -8033 -8034 -8035 -8036 -8037 -8038 -8039 -8040 -8041 -8042 -8043 -8044 -8045 -8046 -8047 -8048 -8049 -8050 -8051 -8052 -8053 -8054 -8055 -8056 -8057 -8058 -8059 -8060 -8061 -8062 -8063 -8064 -8065 -8066 -8067 -8068 -8069 -8070 -8071 -8072 -8073 -8074 -8075 -8076 -8077 -8078 -8079 -8080 -8081 -8082 -8083 -8084 -8085 -8086 -8087 -8088 -8089 -8090 -8091 -8092 -8093 -8094 -8095 -8096 -8097 -8098 -8099 -8100 -8101 -8102 -8103 -8104 -8105 -8106 -8107 -8108 -8109 -8110 -8111 -8112 -8113 -8114 -8115 -8116 -8117 -8118 -8119 -8120 -8121 -8122 -8123 -8124 -8125 -8126 -8127 -8128 -8129 -8130 -8131 -8132 -8133 -8134 -8135 -8136 -8137 -8138 -8139 -8140 -8141 -8142 -8143 -8144 -8145 -8146 -8147 -8148 -8149 -8150 -8151 -8152 -8153 -8154 -8155 -8156 -8157 -8158 -8159 -8160 -8161 -8162 -8163 -8164 -8165 -8166 -8167 -8168 -8169 -8170 -8171 -8172 -8173 -8174 -8175 -8176 -8177 -8178 -8179 -8180 -8181 -8182 -8183 -8184 -8185 -8186 -8187 -8188 -8189 -8190 -8191 -8192 -8193 -8194 -8195 -8196 -8197 -8198 -8199 -8200 -8201 -8202 -8203 -8204 -8205 -8206 -8207 -8208 -8209 -8210 -8211 -8212 -8213 -8214 -8215 -8216 -8217 -8218 -8219 -8220 -8221 -8222 -8223 -8224 -8225 -8226 -8227 -8228 -8229 -8230 -8231 -8232 -8233 -8234 -8235 -8236 -8237 -8238 -8239 -8240 -8241 -8242 -8243 -8244 -8245 -8246 -8247 -8248 -8249 -8250 -8251 -8252 -8253 -8254 -8255 -8256 -8257 -8258 -8259 -8260 -8261 -8262 -8263 -8264 -8265 -8266 -8267 -8268 -8269 -8270 -8271 -8272 -8273 -8274 -8275 -8276 -8277 -8278 -8279 -8280 -8281 -8282 -8283 -8284 -8285 -8286 -8287 -8288 -8289 -8290 -8291 -8292 -8293 -8294 -8295 -8296 -8297 -8298 -8299 -8300 -8301 -8302 -8303 -8304 -8305 -8306 -8307 -8308 -8309 -8310 -8311 -8312 -8313 -8314 -8315 -8316 -8317 -8318 -8319 -8320 -8321 -8322 -8323 -8324 -8325 -8326 -8327 -8328 -8329 -8330 -8331 -8332 -8333 -8334 -8335 -8336 -8337 -8338 -8339 -8340 -8341 -8342 -8343 -8344 -8345 -8346 -8347 -8348 -8349 -8350 -8351 -8352 -8353 -8354 -8355 -8356 -8357 -8358 -8359 -8360 -8361 -8362 -8363 -8364 -8365 -8366 -8367 -8368 -8369 -8370 -8371 -8372 -8373 -8374 -8375 -8376 -8377 -8378 -8379 -8380 -8381 -8382 -8383 -8384 -8385 -8386 -8387 -8388 -8389 -8390 -8391 -8392 -8393 -8394 -8395 -8396 -8397 -8398 -8399 -8400 -8401 -8402 -8403 -8404 -8405 -8406 -8407 -8408 -8409 -8410 -8411 -8412 -8413 -8414 -8415 -8416 -8417 -8418 -8419 -8420 -8421 -8422 -8423 -8424 -8425 -8426 -8427 -8428 -8429 -8430 -8431 -8432 -8433 -8434 -8435 -8436 -8437 -8438 -8439 -8440 -8441 -8442 -8443 -8444 -8445 -8446 -8447 -8448 -8449 -8450 -8451 -8452 -8453 -8454 -8455 -8456 -8457 -8458 -8459 -8460 -8461 -8462 -8463 -8464 -8465 -8466 -8467 -8468 -8469 -8470 -8471 -8472 -8473 -8474 -8475 -8476 -8477 -8478 -8479 -8480 -8481 -8482 -8483 -8484 -8485 -8486 -8487 -8488 -8489 -8490 -8491 -8492 -8493 -8494 -8495 -8496 -8497 -8498 -8499 -8500 -8501 -8502 -8503 -8504 -8505 -8506 -8507 -8508 -8509 -8510 -8511 -8512 -8513 -8514 -8515 -8516 -8517 -8518 -8519 -8520 -8521 -8522 -8523 -8524 -8525 -8526 -8527 -8528 -8529 -8530 -8531 -8532 -8533 -8534 -8535 -8536 -8537 -8538 -8539 -8540 -8541 -8542 -8543 -8544 -8545 -8546 -8547 -8548 -8549 -8550 -8551 -8552 -8553 -8554 -8555 -8556 -8557 -8558 -8559 -8560 -8561 -8562 -8563 -8564 -8565 -8566 -8567 -8568 -8569 -8570 -8571 -8572 -8573 -8574 -8575 -8576 -8577 -8578 -8579 -8580 -8581 -8582 -8583 -8584 -8585 -8586 -8587 -8588 -8589 -8590 -8591 -8592 -8593 -8594 -8595 -8596 -8597 -8598 -8599 -8600 -8601 -8602 -8603 -8604 -8605 -8606 -8607 -8608 -8609 -8610 -8611 -8612 -8613 -8614 -8615 -8616 -8617 -8618 -8619 -8620 -8621 -8622 -8623 -8624 -8625 -8626 -8627 -8628 -8629 -8630 -8631 -8632 -8633 -8634 -8635 -8636 -8637 -8638 -8639 -8640 -8641 -8642 -8643 -8644 -8645 -8646 -8647 -8648 -8649 -8650 -8651 -8652 -8653 -8654 -8655 -8656 -8657 -8658 -8659 -8660 -8661 -8662 -8663 -8664 -8665 -8666 -8667 -8668 -8669 -8670 -8671 -8672 -8673 -8674 -8675 -8676 -8677 -8678 -8679 -8680 -8681 -8682 -8683 -8684 -8685 -8686 -8687 -8688 -8689 -8690 -8691 -8692 -8693 -8694 -8695 -8696 -8697 -8698 -8699 -8700 -8701 -8702 -8703 -8704 -8705 -8706 -8707 -8708 -8709 -8710 -8711 -8712 -8713 -8714 -8715 -8716 -8717 -8718 -8719 -8720 -8721 -8722 -8723 -8724 -8725 -8726 -8727 -8728 -8729 -8730 -8731 -8732 -8733 -8734 -8735 -8736 -8737 -8738 -8739 -8740 -8741 -8742 -8743 -8744 -8745 -8746 -8747 -8748 -8749 -8750 -8751 -8752 -8753 -8754 -8755 -8756 -8757 -8758 -8759 -8760 -8761 -8762 -8763 -8764 -8765 -8766 -8767 -8768 -8769 -8770 -8771 -8772 -8773 -8774 -8775 -8776 -8777 -8778 -8779 -8780 -8781 -8782 -8783 -8784 -8785 -8786 -8787 -8788 -8789 -8790 -8791 -8792 -8793 -8794 -8795 -8796 -8797 -8798 -8799 -8800 -8801 -8802 -8803 -8804 -8805 -8806 -8807 -8808 -8809 -8810 -8811 -8812 -8813 -8814 -8815 -8816 -8817 -8818 -8819 -8820 -8821 -8822 -8823 -8824 -8825 -8826 -8827 -8828 -8829 -8830 -8831 -8832 -8833 -8834 -8835 -8836 -8837 -8838 -8839 -8840 -8841 -8842 -8843 -8844 -8845 -8846 -8847 -8848 -8849 -8850 -8851 -8852 -8853 -8854 -8855 -8856 -8857 -8858 -8859 -8860 -8861 -8862 -8863 -8864 -8865 -8866 -8867 -8868 -8869 -8870 -8871 -8872 -8873 -8874 -8875 -8876 -8877 -8878 -8879 -8880 -8881 -8882 -8883 -8884 -8885 -8886 -8887 -8888 -8889 -8890 -8891 -8892 -8893 -8894 -8895 -8896 -8897 -8898 -8899 -8900 -8901 -8902 -8903 -8904 -8905 -8906 -8907 -8908 -8909 -8910 -8911 -8912 -8913 -8914 -8915 -8916 -8917 -8918 -8919 -8920 -8921 -8922 -8923 -8924 -8925 -8926 -8927 -8928 -8929 -8930 -8931 -8932 -8933 -8934 -8935 -8936 -8937 -8938 -8939 -8940 -8941 -8942 -8943 -8944 -8945 -8946 -8947 -8948 -8949 -8950 -8951 -8952 -8953 -8954 -8955 -8956 -8957 -8958 -8959 -8960 -8961 -8962 -8963 -8964 -8965 -8966 -8967 -8968 -8969 -8970 -8971 -8972 -8973 -8974 -8975 -8976 -8977 -8978 -8979 -8980 -8981 -8982 -8983 -8984 -8985 -8986 -8987 -8988 -8989 -8990 -8991 -8992 -8993 -8994 -8995 -8996 -8997 -8998 -8999 -9000 -9001 -9002 -9003 -9004 -9005 -9006 -9007 -9008 -9009 -9010 -9011 -9012 -9013 -9014 -9015 -9016 -9017 -9018 -9019 -9020 -9021 -9022 -9023 -9024 -9025 -9026 -9027 -9028 -9029 -9030 -9031 -9032 -9033 -9034 -9035 -9036 -9037 -9038 -9039 -9040 -9041 -9042 -9043 -9044 -9045 -9046 -9047 -9048 -9049 -9050 -9051 -9052 -9053 -9054 -9055 -9056 -9057 -9058 -9059 -9060 -9061 -9062 -9063 -9064 -9065 -9066 -9067 -9068 -9069 -9070 -9071 -9072 -9073 -9074 -9075 -9076 -9077 -9078 -9079 -9080 -9081 -9082 -9083 -9084 -9085 -9086 -9087 -9088 -9089 -9090 -9091 -9092 -9093 -9094 -9095 -9096 -9097 -9098 -9099 -9100 -9101 -9102 -9103 -9104 -9105 -9106 -9107 -9108 -9109 -9110 -9111 -9112 -9113 -9114 -9115 -9116 -9117 -9118 -9119 -9120 -9121 -9122 -9123 -9124 -9125 -9126 -9127 -9128 -9129 -9130 -9131 -9132 -9133 -9134 -9135 -9136 -9137 -9138 -9139 -9140 -9141 -9142 -9143 -9144 -9145 -9146 -9147 -9148 -9149 -9150 -9151 -9152 -9153 -9154 -9155 -9156 -9157 -9158 -9159 -9160 -9161 -9162 -9163 -9164 -9165 -9166 -9167 -9168 -9169 -9170 -9171 -9172 -9173 -9174 -9175 -9176 -9177 -9178 -9179 -9180 -9181 -9182 -9183 -9184 -9185 -9186 -9187 -9188 -9189 -9190 -9191 -9192 -9193 -9194 -9195 -9196 -9197 -9198 -9199 -9200 -9201 -9202 -9203 -9204 -9205 -9206 -9207 -9208 -9209 -9210 -9211 -9212 -9213 -9214 -9215 -9216 -9217 -9218 -9219 -9220 -9221 -9222 -9223 -9224 -9225 -9226 -9227 -9228 -9229 -9230 -9231 -9232 -9233 -9234 -9235 -9236 -9237 -9238 -9239 -9240 -9241 -9242 -9243 -9244 -9245 -9246 -9247 -9248 -9249 -9250 -9251 -9252 -9253 -9254 -9255 -9256 -9257 -9258 -9259 -9260 -9261 -9262 -9263 -9264 -9265 -9266 -9267 -9268 -9269 -9270 -9271 -9272 -9273 -9274 -9275 -9276 -9277 -9278 -9279 -9280 -9281 -9282 -9283 -9284 -9285 -9286 -9287 -9288 -9289 -9290 -9291 -9292 -9293 -9294 -9295 -9296 -9297 -9298 -9299 -9300 -9301 -9302 -9303 -9304 -9305 -9306 -9307 -9308 -9309 -9310 -9311 -9312 -9313 -9314 -9315 -9316 -9317 -9318 -9319 -9320 -9321 -9322 -9323 -9324 -9325 -9326 -9327 -9328 -9329 -9330 -9331 -9332 -9333 -9334 -9335 -9336 -9337 -9338 -9339 -9340 -9341 -9342 -9343 -9344 -9345 -9346 -9347 -9348 -9349 -9350 -9351 -9352 -9353 -9354 -9355 -9356 -9357 -9358 -9359 -9360 -9361 -9362 -9363 -9364 -9365 -9366 -9367 -9368 -9369 -9370 -9371 -9372 -9373 -9374 -9375 -9376 -9377 -9378 -9379 -9380 -9381 -9382 -9383 -9384 -9385 -9386 -9387 -9388 -9389 -9390 -9391 -9392 -9393 -9394 -9395 -9396 -9397 -9398 -9399 -9400 -9401 -9402 -9403 -9404 -9405 -9406 -9407 -9408 -9409 -9410 -9411 -9412 -9413 -9414 -9415 -9416 -9417 -9418 -9419 -9420 -9421 -9422 -9423 -9424 -9425 -9426 -9427 -9428 -9429 -9430 -9431 -9432 -9433 -9434 -9435 -9436 -9437 -9438 -9439 -9440 -9441 -9442 -9443 -9444 -9445 -9446 -9447 -9448 -9449 -9450 -9451 -9452 -9453 -9454 -9455 -9456 -9457 -9458 -9459 -9460 -9461 -9462 -9463 -9464 -9465 -9466 -9467 -9468 -9469 -9470 -9471 -9472 -9473 -9474 -9475 -9476 -9477 -9478 -9479 -9480 -9481 -9482 -9483 -9484 -9485 -9486 -9487 -9488 -9489 -9490 -9491 -9492 -9493 -9494 -9495 -9496 -9497 -9498 -9499 -9500 -9501 -9502 -9503 -9504 -9505 -9506 -9507 -9508 -9509 -9510 -9511 -9512 -9513 -9514 -9515 -9516 -9517 -9518 -9519 -9520 -9521 -9522 -9523 -9524 -9525 -9526 -9527 -9528 -9529 -9530 -9531 -9532 -9533 -9534 -9535 -9536 -9537 -9538 -9539 -9540 -9541 -9542 -9543 -9544 -9545 -9546 -9547 -9548 -9549 -9550 -9551 -9552 -9553 -9554 -9555 -9556 -9557 -9558 -9559 -9560 -9561 -9562 -9563 -9564 -9565 -9566 -9567 -9568 -9569 -9570 -9571 -9572 -9573 -9574 -9575 -9576 -9577 -9578 -9579 -9580 -9581 -9582 -9583 -9584 -9585 -9586 -9587 -9588 -9589 -9590 -9591 -9592 -9593 -9594 -9595 -9596 -9597 -9598 -9599 -9600 -9601 -9602 -9603 -9604 -9605 -9606 -9607 -9608 -9609 -9610 -9611 -9612 -9613 -9614 -9615 -9616 -9617 -9618 -9619 -9620 -9621 -9622 -9623 -9624 -9625 -9626 -9627 -9628 -9629 -9630 -9631 -9632 -9633 -9634 -9635 -9636 -9637 -9638 -9639 -9640 -9641 -9642 -9643 -9644 -9645 -9646 -9647 -9648 -9649 -9650 -9651 -9652 -9653 -9654 -9655 -9656 -9657 -9658 -9659 -9660 -9661 -9662 -9663 -9664 -9665 -9666 -9667 -9668 -9669 -9670 -9671 -9672 -9673 -9674 -9675 -9676 -9677 -9678 -9679 -9680 -9681 -9682 -9683 -9684 -9685 -9686 -9687 -9688 -9689 -9690 -9691 -9692 -9693 -9694 -9695 -9696 -9697 -9698 -9699 -9700 -9701 -9702 -9703 -9704 -9705 -9706 -9707 -9708 -9709 -9710 -9711 -9712 -9713 -9714 -9715 -9716 -9717 -9718 -9719 -9720 -9721 -9722 -9723 -9724 -9725 -9726 -9727 -9728 -9729 -9730 -9731 -9732 -9733 -9734 -9735 -9736 -9737 -9738 -9739 -9740 -9741 -9742 -9743 -9744 -9745 -9746 -9747 -9748 -9749 -9750 -9751 -9752 -9753 -9754 -9755 -9756 -9757 -9758 -9759 -9760 -9761 -9762 -9763 -9764 -9765 -9766 -9767 -9768 -9769 -9770 -9771 -9772 -9773 -9774 -9775 -9776 -9777 -9778 -9779 -9780 -9781 -9782 -9783 -9784 -9785 -9786 -9787 -9788 -9789 -9790 -9791 -9792 -9793 -9794 -9795 -9796 -9797 -9798 -9799 -9800 -9801 -9802 -9803 -9804 -9805 -9806 -9807 -9808 -9809 -9810 -9811 -9812 -9813 -9814 -9815 -9816 -9817 -9818 -9819 -9820 -9821 -9822 -9823 -9824 -9825 -9826 -9827 -9828 -9829 -9830 -9831 -9832 -9833 -9834 -9835 -9836 -9837 -9838 -9839 -9840 -9841 -9842 -9843 -9844 -9845 -9846 -9847 -9848 -9849 -9850 -9851 -9852 -9853 -9854 -9855 -9856 -9857 -9858 -9859 -9860 -9861 -9862 -9863 -9864 -9865 -9866 -9867 -9868 -9869 -9870 -9871 -9872 -9873 -9874 -9875 -9876 -9877 -9878 -9879 -9880 -9881 -9882 -9883 -9884 -9885 -9886 -9887 -9888 -9889 -9890 -9891 -9892 -9893 -9894 -9895 -9896 -9897 -9898 -9899 -9900 -9901 -9902 -9903 -9904 -9905 -9906 -9907 -9908 -9909 -9910 -9911 -9912 -9913 -9914 -9915 -9916 -9917 -9918 -9919 -9920 -9921 -9922 -9923 -9924 -9925 -9926 -9927 -9928 -9929 -9930 -9931 -9932 -9933 -9934 -9935 -9936 -9937 -9938 -9939 -9940 -9941 -9942 -9943 -9944 -9945 -9946 -9947 -9948 -9949 -9950 -9951 -9952 -9953 -9954 -9955 -9956 -9957 -9958 -9959 -9960 -9961 -9962 -9963 -9964 -9965 -9966 -9967 -9968 -9969 -9970 -9971 -9972 -9973 -9974 -9975 -9976 -9977 -9978 -9979 -9980 -9981 -9982 -9983 -9984 -9985 -9986 -9987 -9988 -9989 -9990 -9991 -9992 -9993 -9994 -9995 -9996 -9997 -9998 -9999 -10000 -10001 -10002 -10003 -10004 -10005 -10006 -10007 -10008 -10009 -10010 -10011 -10012 -10013 -10014 -10015 -10016 -10017 -10018 -10019 -10020 -10021 -10022 -10023 -10024 -10025 -10026 -10027 -10028 -10029 -10030 -10031 -10032 -10033 -10034 -10035 -10036 -10037 -10038 -10039 -10040 -10041 -10042 -10043 -10044 -10045 -10046 -10047 -10048 -10049 -10050 -10051 -10052 -10053 -10054 -10055 -10056 -10057 -10058 -10059 -10060 -10061 -10062 -10063 -10064 -10065 -10066 -10067 -10068 -10069 -10070 -10071 -10072 -10073 -10074 -10075 -10076 -10077 -10078 -10079 -10080 -10081 -10082 -10083 -10084 -10085 -10086 -10087 -10088 -10089 -10090 -10091 -10092 -10093 -10094 -10095 -10096 -10097 -10098 -10099 -10100 -10101 -10102 -10103 -10104 -10105 -10106 -10107 -10108 -10109 -10110 -10111 -10112 -10113 -10114 -10115 -10116 -10117 -10118 -10119 -10120 -10121 -10122 -10123 -10124 -10125 -10126 -10127 -10128 -10129 -10130 -10131 -10132 -10133 -10134 -10135 -10136 -10137 -10138 -10139 -10140 -10141 -10142 -10143 -10144 -10145 -10146 -10147 -10148 -10149 -10150 -10151 -10152 -10153 -10154 -10155 -10156 -10157 -10158 -10159 -10160 -10161 -10162 -10163 -10164 -10165 -10166 -10167 -10168 -10169 -10170 -10171 -10172 -10173 -10174 -10175 -10176 -10177 -10178 -10179 -10180 -10181 -10182 -10183 -10184 -10185 -10186 -10187 -10188 -10189 -10190 -10191 -10192 -10193 -10194 -10195 -10196 -10197 -10198 -10199 -10200 -10201 -10202 -10203 -10204 -10205 -10206 -10207 -10208 -10209 -10210 -10211 -10212 -10213 -10214 -10215 -10216 -10217 -10218 -10219 -10220 -10221 -10222 -10223 -10224 -10225 -10226 -10227 -10228 -10229 -10230 -10231 -10232 -10233 -10234 -10235 -10236 -10237 -10238 -10239 -10240 -10241 -10242 -10243 -10244 -10245 -10246 -10247 -10248 -10249 -10250 -10251 -10252 -10253 -10254 -10255 -10256 -10257 -10258 -10259 -10260 -10261 -10262 -10263 -10264 -10265 -10266 -10267 -10268 -10269 -10270 -10271 -10272 -10273 -10274 -10275 -10276 -10277 -10278 -10279 -10280 -10281 -10282 -10283 -10284 -10285 -10286 -10287 -10288 -10289 -10290 -10291 -10292 -10293 -10294 -10295 -10296 -10297 -10298 -10299 -10300 -10301 -10302 -10303 -10304 -10305 -10306 -10307 -10308 -10309 -10310 -10311 -10312 -10313 -10314 -10315 -10316 -10317 -10318 -10319 -10320 -10321 -10322 -10323 -10324 -10325 -10326 -10327 -10328 -10329 -10330 -10331 -10332 -10333 -10334 -10335 -10336 -10337 -10338 -10339 -10340 -10341 -10342 -10343 -10344 -10345 -10346 -10347 -10348 -10349 -10350 -10351 -10352 -10353 -10354 -10355 -10356 -10357 -10358 -10359 -10360 -10361 -10362 -10363 -10364 -10365 -10366 -10367 -10368 -10369 -10370 -10371 -10372 -10373 -10374 -10375 -10376 -10377 -10378 -10379 -10380 -10381 -10382 -10383 -10384 -10385 -10386 -10387 -10388 -10389 -10390 -10391 -10392 -10393 -10394 -10395 -10396 -10397 -10398 -10399 -10400 -10401 -10402 -10403 -10404 -10405 -10406 -10407 -10408 -10409 -10410 -10411 -10412 -10413 -10414 -10415 -10416 -10417 -10418 -10419 -10420 -10421 -10422 -10423 -10424 -10425 -10426 -10427 -10428 -10429 -10430 -10431 -10432 -10433 -10434 -10435 -10436 -10437 -10438 -10439 -10440 -10441 -10442 -10443 -10444 -10445 -10446 -10447 -10448 -10449 -10450 -10451 -10452 -10453 -10454 -10455 -10456 -10457 -10458 -10459 -10460 -10461 -10462 -10463 -10464 -10465 -10466 -10467 -10468 -10469 -10470 -10471 -10472 -10473 -10474 -10475 -10476 -10477 -10478 -10479 -10480 -10481 -10482 -10483 -10484 -10485 -10486 -10487 -10488 -10489 -10490 -10491 -10492 -10493 -10494 -10495 -10496 -10497 -10498 -10499 -10500 -10501 -10502 -10503 -10504 -10505 -10506 -10507 -10508 -10509 -10510 -10511 -10512 -10513 -10514 -10515 -10516 -10517 -10518 -10519 -10520 -10521 -10522 -10523 -10524 -10525 -10526 -10527 -10528 -10529 -10530 -10531 -10532 -10533 -10534 -10535 -10536 -10537 -10538 -10539 -10540 -10541 -10542 -10543 -10544 -10545 -10546 -10547 -10548 -10549 -10550 -10551 -10552 -10553 -10554 -10555 -10556 -10557 -10558 -10559 -10560 -10561 -10562 -10563 -10564 -10565 -10566 -10567 -10568 -10569 -10570 -10571 -10572 -10573 -10574 -10575 -10576 -10577 -10578 -10579 -10580 -10581 -10582 -10583 -10584 -10585 -10586 -10587 -10588 -10589 -10590 -10591 -10592 -10593 -10594 -10595 -10596 -10597 -10598 -10599 -10600 -10601 -10602 -10603 -10604 -10605 -10606 -10607 -10608 -10609 -10610 -10611 -10612 -10613 -10614 -10615 -10616 -10617 -10618 -10619 -10620 -10621 -10622 -10623 -10624 -10625 -10626 -10627 -10628 -10629 -10630 -10631 -10632 -10633 -10634 -10635 -10636 -10637 -10638 -10639 -10640 -10641 -10642 -10643 -10644 -10645 -10646 -10647 -10648 -10649 -10650 -10651 -10652 -10653 -10654 -10655 -10656 -10657 -10658 -10659 -10660 -10661 -10662 -10663 -10664 -10665 -10666 -10667 -10668 -10669 -10670 -10671 -10672 -10673 -10674 -10675 -10676 -10677 -10678 -10679 -10680 -10681 -10682 -10683 -10684 -10685 -10686 -10687 -10688 -10689 -10690 -10691 -10692 -10693 -10694 -10695 -10696 -10697 -10698 -10699 -10700 -10701 -10702 -10703 -10704 -10705 -10706 -10707 -10708 -10709 -10710 -10711 -10712 -10713 -10714 -10715 -10716 -10717 -10718 -10719 -10720 -10721 -10722 -10723 -10724 -10725 -10726 -10727 -10728 -10729 -10730 -10731 -10732 -10733 -10734 -10735 -10736 -10737 -10738 -10739 -10740 -10741 -10742 -10743 -10744 -10745 -10746 -10747 -10748 -10749 -10750 -10751 -10752 -10753 -10754 -10755 -10756 -10757 -10758 -10759 -10760 -10761 -10762 -10763 -10764 -10765 -10766 -10767 -10768 -10769 -10770 -10771 -10772 -10773 -10774 -10775 -10776 -10777 -10778 -10779 -10780 -10781 -10782 -10783 -10784 -10785 -10786 -10787 -10788 -10789 -10790 -10791 -10792 -10793 -10794 -10795 -10796 -10797 -10798 -10799 -10800 -10801 -10802 -10803 -10804 -10805 -10806 -10807 -10808 -10809 -10810 -10811 -10812 -10813 -10814 -10815 -10816 -10817 -10818 -10819 -10820 -10821 -10822 -10823 -10824 -10825 -10826 -10827 -10828 -10829 -10830 -10831 -10832 -10833 -10834 -10835 -10836 -10837 -10838 -10839 -10840 -10841 -10842 -10843 -10844 -10845 -10846 -10847 -10848 -10849 -10850 -10851 -10852 -10853 -10854 -10855 -10856 -10857 -10858 -10859 -10860 -10861 -10862 -10863 -10864 -10865 -10866 -10867 -10868 -10869 -10870 -10871 -10872 -10873 -10874 -10875 -10876 -10877 -10878 -10879 -10880 -10881 -10882 -10883 -10884 -10885 -10886 -10887 -10888 -10889 -10890 -10891 -10892 -10893 -10894 -10895 -10896 -10897 -10898 -10899 -10900 -10901 -10902 -10903 -10904 -10905 -10906 -10907 -10908 -10909 -10910 -10911 -10912 -10913 -10914 -10915 -10916 -10917 -10918 -10919 -10920 -10921 -10922 -10923 -10924 -10925 -10926 -10927 -10928 -10929 -10930 -10931 -10932 -10933 -10934 -10935 -10936 -10937 -10938 -10939 -10940 -10941 -10942 -10943 -10944 -10945 -10946 -10947 -10948 -10949 -10950 -10951 -10952 -10953 -10954 -10955 -10956 -10957 -10958 -10959 -10960 -10961 -10962 -10963 -10964 -10965 -10966 -10967 -10968 -10969 -10970 -10971 -10972 -10973 -10974 -10975 -10976 -10977 -10978 -10979 -10980 -10981 -10982 -10983 -10984 -10985 -10986 -10987 -10988 -10989 -10990 -10991 -10992 -10993 -10994 -10995 -10996 -10997 -10998 -10999 -11000 -11001 -11002 -11003 -11004 -11005 -11006 -11007 -11008 -11009 -11010 -11011 -11012 -11013 -11014 -11015 -11016 -11017 -11018 -11019 -11020 -11021 -11022 -11023 -11024 -11025 -11026 -11027 -11028 -11029 -11030 -11031 -11032 -11033 -11034 -11035 -11036 -11037 -11038 -11039 -11040 -11041 -11042 -11043 -11044 -11045 -11046 -11047 -11048 -11049 -11050 -11051 -11052 -11053 -11054 -11055 -11056 -11057 -11058 -11059 -11060 -11061 -11062 -11063 -11064 -11065 -11066 -11067 -11068 -11069 -11070 -11071 -11072 -11073 -11074 -11075 -11076 -11077 -11078 -11079 -11080 -11081 -11082 -11083 -11084 -11085 -11086 -11087 -11088 -11089 -11090 -11091 -11092 -11093 -11094 -11095 -11096 -11097 -11098 -11099 -11100 -11101 -11102 -11103 -11104 -11105 -11106 -11107 -11108 -11109 -11110 -11111 -11112 -11113 -11114 -11115 -11116 -11117 -11118 -11119 -11120 -11121 -11122 -11123 -11124 -11125 -11126 -11127 -11128 -11129 -11130 -11131 -11132 -11133 -11134 -11135 -11136 -11137 -11138 -11139 -11140 -11141 -11142 -11143 -11144 -11145 -11146 -11147 -11148 -11149 -11150 -11151 -11152 -11153 -11154 -11155 -11156 -11157 -11158 -11159 -11160 -11161 -11162 -11163 -11164 -11165 -11166 -11167 -11168 -11169 -11170 -11171 -11172 -11173 -11174 -11175 -11176 -11177 -11178 -11179 -11180 -11181 -11182 -11183 -11184 -11185 -11186 -11187 -11188 -11189 -11190 -11191 -11192 -11193 -11194 -11195 -11196 -11197 -11198 -11199 -11200 -11201 -11202 -11203 -11204 -11205 -11206 -11207 -11208 -11209 -11210 -11211 -11212 -11213 -11214 -11215 -11216 -11217 -11218 -11219 -11220 -11221 -11222 -11223 -11224 -11225 -11226 -11227 -11228 -11229 -11230 -11231 -11232 -11233 -11234 -11235 -11236 -11237 -11238 -11239 -11240 -11241 -11242 -11243 -11244 -11245 -11246 -11247 -11248 -11249 -11250 -11251 -11252 -11253 -11254 -11255 -11256 -11257 -11258 -11259 -11260 -11261 -11262 -11263 -11264 -11265 -11266 -11267 -11268 -11269 -11270 -11271 -11272 -11273 -11274 -11275 -11276 -11277 -11278 -11279 -11280 -11281 -11282 -11283 -11284 -11285 -11286 -11287 -11288 -11289 -11290 -11291 -11292 -11293 -11294 -11295 -11296 -11297 -11298 -11299 -11300 -11301 -11302 -11303 -11304 -11305 -11306 -11307 -11308 -11309 -11310 -11311 -11312 -11313 -11314 -11315 -11316 -11317 -11318 -11319 -11320 -11321 -11322 -11323 -11324 -11325 -11326 -11327 -11328 -11329 -11330 -11331 -11332 -11333 -11334 -11335 -11336 -11337 -11338 -11339 -11340 -11341 -11342 -11343 -11344 -11345 -11346 -11347 -11348 -11349 -11350 -11351 -11352 -11353 -11354 -11355 -11356 -11357 -11358 -11359 -11360 -11361 -11362 -11363 -11364 -11365 -11366 -11367 -11368 -11369 -11370 -11371 -11372 -11373 -11374 -11375 -11376 -11377 -11378 -11379 -11380 -11381 -11382 -11383 -11384 -11385 -11386 -11387 -11388 -11389 -11390 -11391 -11392 -11393 -11394 -11395 -11396 -11397 -11398 -11399 -11400 -11401 -11402 -11403 -11404 -11405 -11406 -11407 -11408 -11409 -11410 -11411 -11412 -11413 -11414 -11415 -11416 -11417 -11418 -11419 -11420 -11421 -11422 -11423 -11424 -11425 -11426 -11427 -11428 -11429 -11430 -11431 -11432 -11433 -11434 -11435 -11436 -11437 -11438 -11439 -11440 -11441 -11442 -11443 -11444 -11445 -11446 -11447 -11448 -11449 -11450 -11451 -11452 -11453 -11454 -11455 -11456 -11457 -11458 -11459 -11460 -11461 -11462 -11463 -11464 -11465 -11466 -11467 -11468 -11469 -11470 -11471 -11472 -11473 -11474 -11475 -11476 -11477 -11478 -11479 -11480 -11481 -11482 -11483 -11484 -11485 -11486 -11487 -11488 -11489 -11490 -11491 -11492 -11493 -11494 -11495 -11496 -11497 -11498 -11499 -11500 -11501 -11502 -11503 -11504 -11505 -11506 -11507 -11508 -11509 -11510 -11511 -11512 -11513 -11514 -11515 -11516 -11517 -11518 -11519 -11520 -11521 -11522 -11523 -11524 -11525 -11526 -11527 -11528 -11529 -11530 -11531 -11532 -11533 -11534 -11535 -11536 -11537 -11538 -11539 -11540 -11541 -11542 -11543 -11544 -11545 -11546 -11547 -11548 -11549 -11550 -11551 -11552 -11553 -11554 -11555 -11556 -11557 -11558 -11559 -11560 -11561 -11562 -11563 -11564 -11565 -11566 -11567 -11568 -11569 -11570 -11571 -11572 -11573 -11574 -11575 -11576 -11577 -11578 -11579 -11580 -11581 -11582 -11583 -11584 -11585 -11586 -11587 -11588 -11589 -11590 -11591 -11592 -11593 -11594 -11595 -11596 -11597 -11598 -11599 -11600 -11601 -11602 -11603 -11604 -11605 -11606 -11607 -11608 -11609 -11610 -11611 -11612 -11613 -11614 -11615 -11616 -11617 -11618 -11619 -11620 -11621 -11622 -11623 -11624 -11625 -11626 -11627 -11628 -11629 -11630 -11631 -11632 -11633 -11634 -11635 -11636 -11637 -11638 -11639 -11640 -11641 -11642 -11643 -11644 -11645 -11646 -11647 -11648 -11649 -11650 -11651 -11652 -11653 -11654 -11655 -11656 -11657 -11658 -11659 -11660 -11661 -11662 -11663 -11664 -11665 -11666 -11667 -11668 -11669 -11670 -11671 -11672 -11673 -11674 -11675 -11676 -11677 -11678 -11679 -11680 -11681 -11682 -11683 -11684 -11685 -11686 -11687 -11688 -11689 -11690 -11691 -11692 -11693 -11694 -11695 -11696 -11697 -11698 -11699 -11700 -11701 -11702 -11703 -11704 -11705 -11706 -11707 -11708 -11709 -11710 -11711 -11712 -11713 -11714 -11715 -11716 -11717 -11718 -11719 -11720 -11721 -11722 -11723 -11724 -11725 -11726 -11727 -11728 -11729 -11730 -11731 -11732 -11733 -11734 -11735 -11736 -11737 -11738 -11739 -11740 -11741 -11742 -11743 -11744 -11745 -11746 -11747 -11748 -11749 -11750 -11751 -11752 -11753 -11754 -11755 -11756 -11757 -11758 -11759 -11760 -11761 -11762 -11763 -11764 -11765 -11766 -11767 -11768 -11769 -11770 -11771 -11772 -11773 -11774 -11775 -11776 -11777 -11778 -11779 -11780 -11781 -11782 -11783 -11784 -11785 -11786 -11787 -11788 -11789 -11790 -11791 -11792 -11793 -11794 -11795 -11796 -11797 -11798 -11799 -11800 -11801 -11802 -11803 -11804 -11805 -11806 -11807 -11808 -11809 -11810 -11811 -11812 -11813 -11814 -11815 -11816 -11817 -11818 -11819 -11820 -11821 -11822 -11823 -11824 -11825 -11826 -11827 -11828 -11829 -11830 -11831 -11832 -11833 -11834 -11835 -11836 -11837 -11838 -11839 -11840 -11841 -11842 -11843 -11844 -11845 -11846 -11847 -11848 -11849 -11850 -11851 -11852 -11853 -11854 -11855 -11856 -11857 -11858 -11859 -11860 -11861 -11862 -11863 -11864 -11865 -11866 -11867 -11868 -11869 -11870 -11871 -11872 -11873 -11874 -11875 -11876 -11877 -11878 -11879 -11880 -11881 -11882 -11883 -11884 -11885 -11886 -11887 -11888 -11889 -11890 -11891 -11892 -11893 -11894 -11895 -11896 -11897 -11898 -11899 -11900 -11901 -11902 -11903 -11904 -11905 -11906 -11907 -11908 -11909 -11910 -11911 -11912 -11913 -11914 -11915 -11916 -11917 -11918 -11919 -11920 -11921 -11922 -11923 -11924 -11925 -11926 -11927 -11928 -11929 -11930 -11931 -11932 -11933 -11934 -11935 -11936 -11937 -11938 -11939 -11940 -11941 -11942 -11943 -11944 -11945 -11946 -11947 -11948 -11949 -11950 -11951 -11952 -11953 -11954 -11955 -11956 -11957 -11958 -11959 -11960 -11961 -11962 -11963 -11964 -11965 -11966 -11967 -11968 -11969 -11970 -11971 -11972 -11973 -11974 -11975 -11976 -11977 -11978 -11979 -11980 -11981 -11982 -11983 -11984 -11985 -11986 -11987 -11988 -11989 -11990 -11991 -11992 -11993 -11994 -11995 -11996 -11997 -11998 -11999 -12000 -12001 -12002 -12003 -12004 -12005 -12006 -12007 -12008 -12009 -12010 -12011 -12012 -12013 -12014 -12015 -12016 -12017 -12018 -12019 -12020 -12021 -12022 -12023 -12024 -12025 -12026 -12027 -12028 -12029 -12030 -12031 -12032 -12033 -12034 -12035 -12036 -12037 -12038 -12039 -12040 -12041 -12042 -12043 -12044 -12045 -12046 -12047 -12048 -12049 -12050 -12051 -12052 -12053 -12054 -12055 -12056 -12057 -12058 -12059 -12060 -12061 -12062 -12063 -12064 -12065 -12066 -12067 -12068 -12069 -12070 -12071 -12072 -12073 -12074 -12075 -12076 -12077 -12078 -12079 -12080 -12081 -12082 -12083 -12084 -12085 -12086 -12087 -12088 -12089 -12090 -12091 -12092 -12093 -12094 -12095 -12096 -12097 -12098 -12099 -12100 -12101 -12102 -12103 -12104 -12105 -12106 -12107 -12108 -12109 -12110 -12111 -12112 -12113 -12114 -12115 -12116 -12117 -12118 -12119 -12120 -12121 -12122 -12123 -12124 -12125 -12126 -12127 -12128 -12129 -12130 -12131 -12132 -12133 -12134 -12135 -12136 -12137 -12138 -12139 -12140 -12141 -12142 -12143 -12144 -12145 -12146 -12147 -12148 -12149 -12150 -12151 -12152 -12153 -12154 -12155 -12156 -12157 -12158 -12159 -12160 -12161 -12162 -12163 -12164 -12165 -12166 -12167 -12168 -12169 -12170 -12171 -12172 -12173 -12174 -12175 -12176 -12177 -12178 -12179 -12180 -12181 -12182 -12183 -12184 -12185 -12186 -12187 -12188 -12189 -12190 -12191 -12192 -12193 -12194 -12195 -12196 -12197 -12198 -12199 -12200 -12201 -12202 -12203 -12204 -12205 -12206 -12207 -12208 -12209 -12210 -12211 -12212 -12213 -12214 -12215 -12216 -12217 -12218 -12219 -12220 -12221 -12222 -12223 -12224 -12225 -12226 -12227 -12228 -12229 -12230 -12231 -12232 -12233 -12234 -12235 -12236 -12237 -12238 -12239 -12240 -12241 -12242 -12243 -12244 -12245 -12246 -12247 -12248 -12249 -12250 -12251 -12252 -12253 -12254 -12255 -12256 -12257 -12258 -12259 -12260 -12261 -12262 -12263 -12264 -12265 -12266 -12267 -12268 -12269 -12270 -12271 -12272 -12273 -12274 -12275 -12276 -12277 -12278 -12279 -12280 -12281 -12282 -12283 -12284 -12285 -12286 -12287 -12288 -12289 -12290 -12291 -12292 -12293 -12294 -12295 -12296 -12297 -12298 -12299 -12300 -12301 -12302 -12303 -12304 -12305 -12306 -12307 -12308 -12309 -12310 -12311 -12312 -12313 -12314 -12315 -12316 -12317 -12318 -12319 -12320 -12321 -12322 -12323 -12324 -12325 -12326 -12327 -12328 -12329 -12330 -12331 -12332 -12333 -12334 -12335 -12336 -12337 -12338 -12339 -12340 -12341 -12342 -12343 -12344 -12345 -12346 -12347 -12348 -12349 -12350 -12351 -12352 -12353 -12354 -12355 -12356 -12357 -12358 -12359 -12360 -12361 -12362 -12363 -12364 -12365 -12366 -12367 -12368 -12369 -12370 -12371 -12372 -12373 -12374 -12375 -12376 -12377 -12378 -12379 -12380 -12381 -12382 -12383 -12384 -12385 -12386 -12387 -12388 -12389 -12390 -12391 -12392 -12393 -12394 -12395 -12396 -12397 -12398 -12399 -12400 -12401 -12402 -12403 -12404 -12405 -12406 -12407 -12408 -12409 -12410 -12411 -12412 -12413 -12414 -12415 -12416 -12417 -12418 -12419 -12420 -12421 -12422 -12423 -12424 -12425 -12426 -12427 -12428 -12429 -12430 -12431 -12432 -12433 -12434 -12435 -12436 -12437 -12438 -12439 -12440 -12441 -12442 -12443 -12444 -12445 -12446 -12447 -12448 -12449 -12450 -12451 -12452 -12453 -12454 -12455 -12456 -12457 -12458 -12459 -12460 -12461 -12462 -12463 -12464 -12465 -12466 -12467 -12468 -12469 -12470 -12471 -12472 -12473 -12474 -12475 -12476 -12477 -12478 -12479 -12480 -12481 -12482 -12483 -12484 -12485 -12486 -12487 -12488 -12489 -12490 -12491 -12492 -12493 -12494 -12495 -12496 -12497 -12498 -12499 -12500 -12501 -12502 -12503 -12504 -12505 -12506 -12507 -12508 -12509 -12510 -12511 -12512 -12513 -12514 -12515 -12516 -12517 -12518 -12519 -12520 -12521 -12522 -12523 -12524 -12525 -12526 -12527 -12528 -12529 -12530 -12531 -12532 -12533 -12534 -12535 -12536 -12537 -12538 -12539 -12540 -12541 -12542 -12543 -12544 -12545 -12546 -12547 -12548 -12549 -12550 -12551 -12552 -12553 -12554 -12555 -12556 -12557 -12558 -12559 -12560 -12561 -12562 -12563 -12564 -12565 -12566 -12567 -12568 -12569 -12570 -12571 -12572 -12573 -12574 -12575 -12576 -12577 -12578 -12579 -12580 -12581 -12582 -12583 -12584 -12585 -12586 -12587 -12588 -12589 -12590 -12591 -12592 -12593 -12594 -12595 -12596 -12597 -12598 -12599 -12600 -12601 -12602 -12603 -12604 -12605 -12606 -12607 -12608 -12609 -12610 -12611 -12612 -12613 -12614 -12615 -12616 -12617 -12618 -12619 -12620 -12621 -12622 -12623 -12624 -12625 -12626 -12627 -12628 -12629 -12630 -12631 -12632 -12633 -12634 -12635 -12636 -12637 -12638 -12639 -12640 -12641 -12642 -12643 -12644 -12645 -12646 -12647 -12648 -12649 -12650 -12651 -12652 -12653 -12654 -12655 -12656 -12657 -12658 -12659 -12660 -12661 -12662 -12663 -12664 -12665 -12666 -12667 -12668 -12669 -12670 -12671 -12672 -12673 -12674 -12675 -12676 -12677 -12678 -12679 -12680 -12681 -12682 -12683 -12684 -12685 -12686 -12687 -12688 -12689 -12690 -12691 -12692 -12693 -12694 -12695 -12696 -12697 -12698 -12699 -12700 -12701 -12702 -12703 -12704 -12705 -12706 -12707 -12708 -12709 -12710 -12711 -12712 -12713 -12714 -12715 -12716 -12717 -12718 -12719 -12720 -12721 -12722 -12723 -12724 -12725 -12726 -12727 -12728 -12729 -12730 -12731 -12732 -12733 -12734 -12735 -12736 -12737 -12738 -12739 -12740 -12741 -12742 -12743 -12744 -12745 -12746 -12747 -12748 -12749 -12750 -12751 -12752 -12753 -12754 -12755 -12756 -12757 -12758 -12759 -12760 -12761 -12762 -12763 -12764 -12765 -12766 -12767 -12768 -12769 -12770 -12771 -12772 -12773 -12774 -12775 -12776 -12777 -12778 -12779 -12780 -12781 -12782 -12783 -12784 -12785 -12786 -12787 -12788 -12789 -12790 -12791 -12792 -12793 -12794 -12795 -12796 -12797 -12798 -12799 -12800 -12801 -12802 -12803 -12804 -12805 -12806 -12807 -12808 -12809 -12810 -12811 -12812 -12813 -12814 -12815 -12816 -12817 -12818 -12819 -12820 -12821 -12822 -12823 -12824 -12825 -12826 -12827 -12828 -12829 -12830 -12831 -12832 -12833 -12834 -12835 -12836 -12837 -12838 -12839 -12840 -12841 -12842 -12843 -12844 -12845 -12846 -12847 -12848 -12849 -12850 -12851 -12852 -12853 -12854 -12855 -12856 -12857 -12858 -12859 -12860 -12861 -12862 -12863 -12864 -12865 -12866 -12867 -12868 -12869 -12870 -12871 -12872 -12873 -12874 -12875 -12876 -12877 -12878 -12879 -12880 -12881 -12882 -12883 -12884 -12885 -12886 -12887 -12888 -12889 -12890 -12891 -12892 -12893 -12894 -12895 -12896 -12897 -12898 -12899 -12900 -12901 -12902 -12903 -12904 -12905 -12906 -12907 -12908 -12909 -12910 -12911 -12912 -12913 -12914 -12915 -12916 -12917 -12918 -12919 -12920 -12921 -12922 -12923 -12924 -12925 -12926 -12927 -12928 -12929 -12930 -12931 -12932 -12933 -12934 -12935 -12936 -12937 -12938 -12939 -12940 -12941 -12942 -12943 -12944 -12945 -12946 -12947 -12948 -12949 -12950 -12951 -12952 -12953 -12954 -12955 -12956 -12957 -12958 -12959 -12960 -12961 -12962 -12963 -12964 -12965 -12966 -12967 -12968 -12969 -12970 -12971 -12972 -12973 -12974 -12975 -12976 -12977 -12978 -12979 -12980 -12981 -12982 -12983 -12984 -12985 -12986 -12987 -12988 -12989 -12990 -12991 -12992 -12993 -12994 -12995 -12996 -12997 -12998 -12999 -13000 -13001 -13002 -13003 -13004 -13005 -13006 -13007 -13008 -13009 -13010 -13011 -13012 -13013 -13014 -13015 -13016 -13017 -13018 -13019 -13020 -13021 -13022 -13023 -13024 -13025 -13026 -13027 -13028 -13029 -13030 -13031 -13032 -13033 -13034 -13035 -13036 -13037 -13038 -13039 -13040 -13041 -13042 -13043 -13044 -13045 -13046 -13047 -13048 -13049 -13050 -13051 -13052 -13053 -13054 -13055 -13056 -13057 -13058 -13059 -13060 -13061 -13062 -13063 -13064 -13065 -13066 -13067 -13068 -13069 -13070 -13071 -13072 -13073 -13074 -13075 -13076 -13077 -13078 -13079 -13080 -13081 -13082 -13083 -13084 -13085 -13086 -13087 -13088 -13089 -13090 -13091 -13092 -13093 -13094 -13095 -13096 -13097 -13098 -13099 -13100 -13101 -13102 -13103 -13104 -13105 -13106 -13107 -13108 -13109 -13110 -13111 -13112 -13113 -13114 -13115 -13116 -13117 -13118 -13119 -13120 -13121 -13122 -13123 -13124 -13125 -13126 -13127 -13128 -13129 -13130 -13131 -13132 -13133 -13134 -13135 -13136 -13137 -13138 -13139 -13140 -13141 -13142 -13143 -13144 -13145 -13146 -13147 -13148 -13149 -13150 -13151 -13152 -13153 -13154 -13155 -13156 -13157 -13158 -13159 -13160 -13161 -13162 -13163 -13164 -13165 -13166 -13167 -13168 -13169 -13170 -13171 -13172 -13173 -13174 -13175 -13176 -13177 -13178 -13179 -13180 -13181 -13182 -13183 -13184 -13185 -13186 -13187 -13188 -13189 -13190 -13191 -13192 -13193 -13194 -13195 -13196 -13197 -13198 -13199 -13200 -13201 -13202 -13203 -13204 -13205 -13206 -13207 -13208 -13209 -13210 -13211 -13212 -13213 -13214 -13215 -13216 -13217 -13218 -13219 -13220 -13221 -13222 -13223 -13224 -13225 -13226 -13227 -13228 -13229 -13230 -13231 -13232 -13233 -13234 -13235 -13236 -13237 -13238 -13239 -13240 -13241 -13242 -13243 -13244 -13245 -13246 -13247 -13248 -13249 -13250 -13251 -13252 -13253 -13254 -13255 -13256 -13257 -13258 -13259 -13260 -13261 -13262 -13263 -13264 -13265 -13266 -13267 -13268 -13269 -13270 -13271 -13272 -13273 -13274 -13275 -13276 -13277 -13278 -13279 -13280 -13281 -13282 -13283 -13284 -13285 -13286 -13287 -13288 -13289 -13290 -13291 -13292 -13293 -13294 -13295 -13296 -13297 -13298 -13299 -13300 -13301 -13302 -13303 -13304 -13305 -13306 -13307 -13308 -13309 -13310 -13311 -13312 -13313 -13314 -13315 -13316 -13317 -13318 -13319 -13320 -13321 -13322 -13323 -13324 -13325 -13326 -13327 -13328 -13329 -13330 -13331 -13332 -13333 -13334 -13335 -13336 -13337 -13338 -13339 -13340 -13341 -13342 -13343 -13344 -13345 -13346 -13347 -13348 -13349 -13350 -13351 -13352 -13353 -13354 -13355 -13356 -13357 -13358 -13359 -13360 -13361 -13362 -13363 -13364 -13365 -13366 -13367 -13368 -13369 -13370 -13371 -13372 -13373 -13374 -13375 -13376 -13377 -13378 -13379 -13380 -13381 -13382 -13383 -13384 -13385 -13386 -13387 -13388 -13389 -13390 -13391 -13392 -13393 -13394 -13395 -13396 -13397 -13398 -13399 -13400 -13401 -13402 -13403 -13404 -13405 -13406 -13407 -13408 -13409 -13410 -13411 -13412 -13413 -13414 -13415 -13416 -13417 -13418 -13419 -13420 -13421 -13422 -13423 -13424 -13425 -13426 -13427 -13428 -13429 -13430 -13431 -13432 -13433 -13434 -13435 -13436 -13437 -13438 -13439 -13440 -13441 -13442 -13443 -13444 -13445 -13446 -13447 -13448 -13449 -13450 -13451 -13452 -13453 -13454 -13455 -13456 -13457 -13458 -13459 -13460 -13461 -13462 -13463 -13464 -13465 -13466 -13467 -13468 -13469 -13470 -13471 -13472 -13473 -13474 -13475 -13476 -13477 -13478 -13479 -13480 -13481 -13482 -13483 -13484 -13485 -13486 -13487 -13488 -13489 -13490 -13491 -13492 -13493 -13494 -13495 -13496 -13497 -13498 -13499 -13500 -13501 -13502 -13503 -13504 -13505 -13506 -13507 -13508 -13509 -13510 -13511 -13512 -13513 -13514 -13515 -13516 -13517 -13518 -13519 -13520 -13521 -13522 -13523 -13524 -13525 -13526 -13527 -13528 -13529 -13530 -13531 -13532 -13533 -13534 -13535 -13536 -13537 -13538 -13539 -13540 -13541 -13542 -13543 -13544 -13545 -13546 -13547 -13548 -13549 -13550 -13551 -13552 -13553 -13554 -13555 -13556 -13557 -13558 -13559 -13560 -13561 -13562 -13563 -13564 -13565 -13566 -13567 -13568 -13569 -13570 -13571 -13572 -13573 -13574 -13575 -13576 -13577 -13578 -13579 -13580 -13581 -13582 -13583 -13584 -13585 -13586 -13587 -13588 -13589 -13590 -13591 -13592 -13593 -13594 -13595 -13596 -13597 -13598 -13599 -13600 -13601 -13602 -13603 -13604 -13605 -13606 -13607 -13608 -13609 -13610 -13611 -13612 -13613 -13614 -13615 -13616 -13617 -13618 -13619 -13620 -13621 -13622 -13623 -13624 -13625 -13626 -13627 -13628 -13629 -13630 -13631 -13632 -13633 -13634 -13635 -13636 -13637 -13638 -13639 -13640 -13641 -13642 -13643 -13644 -13645 -13646 -13647 -13648 -13649 -13650 -13651 -13652 -13653 -13654 -13655 -13656 -13657 -13658 -13659 -13660 -13661 -13662 -13663 -13664 -13665 -13666 -13667 -13668 -13669 -13670 -13671 -13672 -13673 -13674 -13675 -13676 -13677 -13678 -13679 -13680 -13681 -13682 -13683 -13684 -13685 -13686 -13687 -13688 -13689 -13690 -13691 -13692 -13693 -13694 -13695 -13696 -13697 -13698 -13699 -13700 -13701 -13702 -13703 -13704 -13705 -13706 -13707 -13708 -13709 -13710 -13711 -13712 -13713 -13714 -13715 -13716 -13717 -13718 -13719 -13720 -13721 -13722 -13723 -13724 -13725 -13726 -13727 -13728 -13729 -13730 -13731 -13732 -13733 -13734 -13735 -13736 -13737 -13738 -13739 -13740 -13741 -13742 -13743 -13744 -13745 -13746 -13747 -13748 -13749 -13750 -13751 -13752 -13753 -13754 -13755 -13756 -13757 -13758 -13759 -13760 -13761 -13762 -13763 -13764 -13765 -13766 -13767 -13768 -13769 -13770 -13771 -13772 -13773 -13774 -13775 -13776 -13777 -13778 -13779 -13780 -13781 -13782 -13783 -13784 -13785 -13786 -13787 -13788 -13789 -13790 -13791 -13792 -13793 -13794 -13795 -13796 -13797 -13798 -13799 -13800 -13801 -13802 -13803 -13804 -13805 -13806 -13807 -13808 -13809 -13810 -13811 -13812 -13813 -13814 -13815 -13816 -13817 -13818 -13819 -13820 -13821 -13822 -13823 -13824 -13825 -13826 -13827 -13828 -13829 -13830 -13831 -13832 -13833 -13834 -13835 -13836 -13837 -13838 -13839 -13840 -13841 -13842 -13843 -13844 -13845 -13846 -13847 -13848 -13849 -13850 -13851 -13852 -13853 -13854 -13855 -13856 -13857 -13858 -13859 -13860 -13861 -13862 -13863 -13864 -13865 -13866 -13867 -13868 -13869 -13870 -13871 -13872 -13873 -13874 -13875 -13876 -13877 -13878 -13879 -13880 -13881 -13882 -13883 -13884 -13885 -13886 -13887 -13888 -13889 -13890 -13891 -13892 -13893 -13894 -13895 -13896 -13897 -13898 -13899 -13900 -13901 -13902 -13903 -13904 -13905 -13906 -13907 -13908 -13909 -13910 -13911 -13912 -13913 -13914 -13915 -13916 -13917 -13918 -13919 -13920 -13921 -13922 -13923 -13924 -13925 -13926 -13927 -13928 -13929 -13930 -13931 -13932 -13933 -13934 -13935 -13936 -13937 -13938 -13939 -13940 -13941 -13942 -13943 -13944 -13945 -13946 -13947 -13948 -13949 -13950 -13951 -13952 -13953 -13954 -13955 -13956 -13957 -13958 -13959 -13960 -13961 -13962 -13963 -13964 -13965 -13966 -13967 -13968 -13969 -13970 -13971 -13972 -13973 -13974 -13975 -13976 -13977 -13978 -13979 -13980 -13981 -13982 -13983 -13984 -13985 -13986 -13987 -13988 -13989 -13990 -13991 -13992 -13993 -13994 -13995 -13996 -13997 -13998 -13999 -14000 -14001 -14002 -14003 -14004 -14005 -14006 -14007 -14008 -14009 -14010 -14011 -14012 -14013 -14014 -14015 -14016 -14017 -14018 -14019 -14020 -14021 -14022 -14023 -14024 -14025 -14026 -14027 -14028 -14029 -14030 -14031 -14032 -14033 -14034 -14035 -14036 -14037 -14038 -14039 -14040 -14041 -14042 -14043 -14044 -14045 -14046 -14047 -14048 -14049 -14050 -14051 -14052 -14053 -14054 -14055 -14056 -14057 -14058 -14059 -14060 -14061 -14062 -14063 -14064 -14065 -14066 -14067 -14068 -14069 -14070 -14071 -14072 -14073 -14074 -14075 -14076 -14077 -14078 -14079 -14080 -14081 -14082 -14083 -14084 -14085 -14086 -14087 -14088 -14089 -14090 -14091 -14092 -14093 -14094 -14095 -14096 -14097 -14098 -14099 -14100 -14101 -14102 -14103 -14104 -14105 -14106 -14107 -14108 -14109 -14110 -14111 -14112 -14113 -14114 -14115 -14116 -14117 -14118 -14119 -14120 -14121 -14122 -14123 -14124 -14125 -14126 -14127 -14128 -14129 -14130 -14131 -14132 -14133 -14134 -14135 -14136 -14137 -14138 -14139 -14140 -14141 -14142 -14143 -14144 -14145 -14146 -14147 -14148 -14149 -14150 -14151 -14152 -14153 -14154 -14155 -14156 -14157 -14158 -14159 -14160 -14161 -14162 -14163 -14164 -14165 -14166 -14167 -14168 -14169 -14170 -14171 -14172 -14173 -14174 -14175 -14176 -14177 -14178 -14179 -14180 -14181 -14182 -14183 -14184 -14185 -14186 -14187 -14188 -14189 -14190 -14191 -14192 -14193 -14194 -14195 -14196 -14197 -14198 -14199 -14200 -14201 -14202 -14203 -14204 -14205 -14206 -14207 -14208 -14209 -14210 -14211 -14212 -14213 -14214 -14215 -14216 -14217 -14218 -14219 -14220 -14221 -14222 -14223 -14224 -14225 -14226 -14227 -14228 -14229 -14230 -14231 -14232 -14233 -14234 -14235 -14236 -14237 -14238 -14239 -14240 -14241 -14242 -14243 -14244 -14245 -14246 -14247 -14248 -14249 -14250 -14251 -14252 -14253 -14254 -14255 -14256 -14257 -14258 -14259 -14260 -14261 -14262 -14263 -14264 -14265 -14266 -14267 -14268 -14269 -14270 -14271 -14272 -14273 -14274 -14275 -14276 -14277 -14278 -14279 -14280 -14281 -14282 -14283 -14284 -14285 -14286 -14287 -14288 -14289 -14290 -14291 -14292 -14293 -14294 -14295 -14296 -14297 -14298 -14299 -14300 -14301 -14302 -14303 -14304 -14305 -14306 -14307 -14308 -14309 -14310 -14311 -14312 -14313 -14314 -14315 -14316 -14317 -14318 -14319 -14320 -14321 -14322 -14323 -14324 -14325 -14326 -14327 -14328 -14329 -14330 -14331 -14332 -14333 -14334 -14335 -14336 -14337 -14338 -14339 -14340 -14341 -14342 -14343 -14344 -14345 -14346 -14347 -14348 -14349 -14350 -14351 -14352 -14353 -14354 -14355 -14356 -14357 -14358 -14359 -14360 -14361 -14362 -14363 -14364 -14365 -14366 -14367 -14368 -14369 -14370 -14371 -14372 -14373 -14374 -14375 -14376 -14377 -14378 -14379 -14380 -14381 -14382 -14383 -14384 -14385 -14386 -14387 -14388 -14389 -14390 -14391 -14392 -14393 -14394 -14395 -14396 -14397 -14398 -14399 -14400 -14401 -14402 -14403 -14404 -14405 -14406 -14407 -14408 -14409 -14410 -14411 -14412 -14413 -14414 -14415 -14416 -14417 -14418 -14419 -14420 -14421 -14422 -14423 -14424 -14425 -14426 -14427 -14428 -14429 -14430 -14431 -14432 -14433 -14434 -14435 -14436 -14437 -14438 -14439 -14440 -14441 -14442 -14443 -14444 -14445 -14446 -14447 -14448 -14449 -14450 -14451 -14452 -14453 -14454 -14455 -14456 -14457 -14458 -14459 -14460 -14461 -14462 -14463 -14464 -14465 -14466 -14467 -14468 -14469 -14470 -14471 -14472 -14473 -14474 -14475 -14476 -14477 -14478 -14479 -14480 -14481 -14482 -14483 -14484 -14485 -14486 -14487 -14488 -14489 -14490 -14491 -14492 -14493 -14494 -14495 -14496 -14497 -14498 -14499 -14500 -14501 -14502 -14503 -14504 -14505 -14506 -14507 -14508 -14509 -14510 -14511 -14512 -14513 -14514 -14515 -14516 -14517 -14518 -14519 -14520 -14521 -14522 -14523 -14524 -14525 -14526 -14527 -14528 -14529 -14530 -14531 -14532 -14533 -14534 -14535 -14536 -14537 -14538 -14539 -14540 -14541 -14542 -14543 -14544 -14545 -14546 -14547 -14548 -14549 -14550 -14551 -14552 -14553 -14554 -14555 -14556 -14557 -14558 -14559 -14560 -14561 -14562 -14563 -14564 -14565 -14566 -14567 -14568 -14569 -14570 -14571 -14572 -14573 -14574 -14575 -14576 -14577 -14578 -14579 -14580 -14581 -14582 -14583 -14584 -14585 -14586 -14587 -14588 -14589 -14590 -14591 -14592 -14593 -14594 -14595 -14596 -14597 -14598 -14599 -14600 -14601 -14602 -14603 -14604 -14605 -14606 -14607 -14608 -14609 -14610 -14611 -14612 -14613 -14614 -14615 -14616 -14617 -14618 -14619 -14620 -14621 -14622 -14623 -14624 -14625 -14626 -14627 -14628 -14629 -14630 -14631 -14632 -14633 -14634 -14635 -14636 -14637 -14638 -14639 -14640 -14641 -14642 -14643 -14644 -14645 -14646 -14647 -14648 -14649 -14650 -14651 -14652 -14653 -14654 -14655 -14656 -14657 -14658 -14659 -14660 -14661 -14662 -14663 -14664 -14665 -14666 -14667 -14668 -14669 -14670 -14671 -14672 -14673 -14674 -14675 -14676 -14677 -14678 -14679 -14680 -14681 -14682 -14683 -14684 -14685 -14686 -14687 -14688 -14689 -14690 -14691 -14692 -14693 -14694 -14695 -14696 -14697 -14698 -14699 -14700 -14701 -14702 -14703 -14704 -14705 -14706 -14707 -14708 -14709 -14710 -14711 -14712 -14713 -14714 -14715 -14716 -14717 -14718 -14719 -14720 -14721 -14722 -14723 -14724 -14725 -14726 -14727 -14728 -14729 -14730 -14731 -14732 -14733 -14734 -14735 -14736 -14737 -14738 -14739 -14740 -14741 -14742 -14743 -14744 -14745 -14746 -14747 -14748 -14749 -14750 -14751 -14752 -14753 -14754 -14755 -14756 -14757 -14758 -14759 -14760 -14761 -14762 -14763 -14764 -14765 -14766 -14767 -14768 -14769 -14770 -14771 -14772 -14773 -14774 -14775 -14776 -14777 -14778 -14779 -14780 -14781 -14782 -14783 -14784 -14785 -14786 -14787 -14788 -14789 -14790 -14791 -14792 -14793 -14794 -14795 -14796 -14797 -14798 -14799 -14800 -14801 -14802 -14803 -14804 -14805 -14806 -14807 -14808 -14809 -14810 -14811 -14812 -14813 -14814 -14815 -14816 -14817 -14818 -14819 -14820 -14821 -14822 -14823 -14824 -14825 -14826 -14827 -14828 -14829 -14830 -14831 -14832 -14833 -14834 -14835 -14836 -14837 -14838 -14839 -14840 -14841 -14842 -14843 -14844 -14845 -14846 -14847 -14848 -14849 -14850 -14851 -14852 -14853 -14854 -14855 -14856 -14857 -14858 -14859 -14860 -14861 -14862 -14863 -14864 -14865 -14866 -14867 -14868 -14869 -14870 -14871 -14872 -14873 -14874 -14875 -14876 -14877 -14878 -14879 -14880 -14881 -14882 -14883 -14884 -14885 -14886 -14887 -14888 -14889 -14890 -14891 -14892 -14893 -14894 -14895 -14896 -14897 -14898 -14899 -14900 -14901 -14902 -14903 -14904 -14905 -14906 -14907 -14908 -14909 -14910 -14911 -14912 -14913 -14914 -14915 -14916 -14917 -14918 -14919 -14920 -14921 -14922 -14923 -14924 -14925 -14926 -14927 -14928 -14929 -14930 -14931 -14932 -14933 -14934 -14935 -14936 -14937 -14938 -14939 -14940 -14941 -14942 -14943 -14944 -14945 -14946 -14947 -14948 -14949 -14950 -14951 -14952 -14953 -14954 -14955 -14956 -14957 -14958 -14959 -14960 -14961 -14962 -14963 -14964 -14965 -14966 -14967 -14968 -14969 -14970 -14971 -14972 -14973 -14974 -14975 -14976 -14977 -14978 -14979 -14980 -14981 -14982 -14983 -14984 -14985 -14986 -14987 -14988 -14989 -14990 -14991 -14992 -14993 -14994 -14995 -14996 -14997 -14998 -14999 -15000 -15001 -15002 -15003 -15004 -15005 -15006 -15007 -15008 -15009 -15010 -15011 -15012 -15013 -15014 -15015 -15016 -15017 -15018 -15019 -15020 -15021 -15022 -15023 -15024 -15025 -15026 -15027 -15028 -15029 -15030 -15031 -15032 -15033 -15034 -15035 -15036 -15037 -15038 -15039 -15040 -15041 -15042 -15043 -15044 -15045 -15046 -15047 -15048 -15049 -15050 -15051 -15052 -15053 -15054 -15055 -15056 -15057 -15058 -15059 -15060 -15061 -15062 -15063 -15064 -15065 -15066 -15067 -15068 -15069 -15070 -15071 -15072 -15073 -15074 -15075 -15076 -15077 -15078 -15079 -15080 -15081 -15082 -15083 -15084 -15085 -15086 -15087 -15088 -15089 -15090 -15091 -15092 -15093 -15094 -15095 -15096 -15097 -15098 -15099 -15100 -15101 -15102 -15103 -15104 -15105 -15106 -15107 -15108 -15109 -15110 -15111 -15112 -15113 -15114 -15115 -15116 -15117 -15118 -15119 -15120 -15121 -15122 -15123 -15124 -15125 -15126 -15127 -15128 -15129 -15130 -15131 -15132 -15133 -15134 -15135 -15136 -15137 -15138 -15139 -15140 -15141 -15142 -15143 -15144 -15145 -15146 -15147 -15148 -15149 -15150 -15151 -15152 -15153 -15154 -15155 -15156 -15157 -15158 -15159 -15160 -15161 -15162 -15163 -15164 -15165 -15166 -15167 -15168 -15169 -15170 -15171 -15172 -15173 -15174 -15175 -15176 -15177 -15178 -15179 -15180 -15181 -15182 -15183 -15184 -15185 -15186 -15187 -15188 -15189 -15190 -15191 -15192 -15193 -15194 -15195 -15196 -15197 -15198 -15199 -15200 -15201 -15202 -15203 -15204 -15205 -15206 -15207 -15208 -15209 -15210 -15211 -15212 -15213 -15214 -15215 -15216 -15217 -15218 -15219 -15220 -15221 -15222 -15223 -15224 -15225 -15226 -15227 -15228 -15229 -15230 -15231 -15232 -15233 -15234 -15235 -15236 -15237 -15238 -15239 -15240 -15241 -15242 -15243 -15244 -15245 -15246 -15247 -15248 -15249 -15250 -15251 -15252 -15253 -15254 -15255 -15256 -15257 -15258 -15259 -15260 -15261 -15262 -15263 -15264 -15265 -15266 -15267 -15268 -15269 -15270 -15271 -15272 -15273 -15274 -15275 -15276 -15277 -15278 -15279 -15280 -15281 -15282 -15283 -15284 -15285 -15286 -15287 -15288 -15289 -15290 -15291 -15292 -15293 -15294 -15295 -15296 -15297 -15298 -15299 -15300 -15301 -15302 -15303 -15304 -15305 -15306 -15307 -15308 -15309 -15310 -15311 -15312 -15313 -15314 -15315 -15316 -15317 -15318 -15319 -15320 -15321 -15322 -15323 -15324 -15325 -15326 -15327 -15328 -15329 -15330 -15331 -15332 -15333 -15334 -15335 -15336 -15337 -15338 -15339 -15340 -15341 -15342 -15343 -15344 -15345 -15346 -15347 -15348 -15349 -15350 -15351 -15352 -15353 -15354 -15355 -15356 -15357 -15358 -15359 -15360 -15361 -15362 -15363 -15364 -15365 -15366 -15367 -15368 -15369 -15370 -15371 -15372 -15373 -15374 -15375 -15376 -15377 -15378 -15379 -15380 -15381 -15382 -15383 -15384 -15385 -15386 -15387 -15388 -15389 -15390 -15391 -15392 -15393 -15394 -15395 -15396 -15397 -15398 -15399 -15400 -15401 -15402 -15403 -15404 -15405 -15406 -15407 -15408 -15409 -15410 -15411 -15412 -15413 -15414 -15415 -15416 -15417 -15418 -15419 -15420 -15421 -15422 -15423 -15424 -15425 -15426 -15427 -15428 -15429 -15430 -15431 -15432 -15433 -15434 -15435 -15436 -15437 -15438 -15439 -15440 -15441 -15442 -15443 -15444 -15445 -15446 -15447 -15448 -15449 -15450 -15451 -15452 -15453 -15454 -15455 -15456 -15457 -15458 -15459 -15460 -15461 -15462 -15463 -15464 -15465 -15466 -15467 -15468 -15469 -15470 -15471 -15472 -15473 -15474 -15475 -15476 -15477 -15478 -15479 -15480 -15481 -15482 -15483 -15484 -15485 -15486 -15487 -15488 -15489 -15490 -15491 -15492 -15493 -15494 -15495 -15496 -15497 -15498 -15499 -15500 -15501 -15502 -15503 -15504 -15505 -15506 -15507 -15508 -15509 -15510 -15511 -15512 -15513 -15514 -15515 -15516 -15517 -15518 -15519 -15520 -15521 -15522 -15523 -15524 -15525 -15526 -15527 -15528 -15529 -15530 -15531 -15532 -15533 -15534 -15535 -15536 -15537 -15538 -15539 -15540 -15541 -15542 -15543 -15544 -15545 -15546 -15547 -15548 -15549 -15550 -15551 -15552 -15553 -15554 -15555 -15556 -15557 -15558 -15559 -15560 -15561 -15562 -15563 -15564 -15565 -15566 -15567 -15568 -15569 -15570 -15571 -15572 -15573 -15574 -15575 -15576 -15577 -15578 -15579 -15580 -15581 -15582 -15583 -15584 -15585 -15586 -15587 -15588 -15589 -15590 -15591 -15592 -15593 -15594 -15595 -15596 -15597 -15598 -15599 -15600 -15601 -15602 -15603 -15604 -15605 -15606 -15607 -15608 -15609 -15610 -15611 -15612 -15613 -15614 -15615 -15616 -15617 -15618 -15619 -15620 -15621 -15622 -15623 -15624 -15625 -15626 -15627 -15628 -15629 -15630 -15631 -15632 -15633 -15634 -15635 -15636 -15637 -15638 -15639 -15640 -15641 -15642 -15643 -15644 -15645 -15646 -15647 -15648 -15649 -15650 -15651 -15652 -15653 -15654 -15655 -15656 -15657 -15658 -15659 -15660 -15661 -15662 -15663 -15664 -15665 -15666 -15667 -15668 -15669 -15670 -15671 -15672 -15673 -15674 -15675 -15676 -15677 -15678 -15679 -15680 -15681 -15682 -15683 -15684 -15685 -15686 -15687 -15688 -15689 -15690 -15691 -15692 -15693 -15694 -15695 -15696 -15697 -15698 -15699 -15700 -15701 -15702 -15703 -15704 -15705 -15706 -15707 -15708 -15709 -15710 -15711 -15712 -15713 -15714 -15715 -15716 -15717 -15718 -15719 -15720 -15721 -15722 -15723 -15724 -15725 -15726 -15727 -15728 -15729 -15730 -15731 -15732 -15733 -15734 -15735 -15736 -15737 -15738 -15739 -15740 -15741 -15742 -15743 -15744 -15745 -15746 -15747 -15748 -15749 -15750 -15751 -15752 -15753 -15754 -15755 -15756 -15757 -15758 -15759 -15760 -15761 -15762 -15763 -15764 -15765 -15766 -15767 -15768 -15769 -15770 -15771 -15772 -15773 -15774 -15775 -15776 -15777 -15778 -15779 -15780 -15781 -15782 -15783 -15784 -15785 -15786 -15787 -15788 -15789 -15790 -15791 -15792 -15793 -15794 -15795 -15796 -15797 -15798 -15799 -15800 -15801 -15802 -15803 -15804 -15805 -15806 -15807 -15808 -15809 -15810 -15811 -15812 -15813 -15814 -15815 -15816 -15817 -15818 -15819 -15820 -15821 -15822 -15823 -15824 -15825 -15826 -15827 -15828 -15829 -15830 -15831 -15832 -15833 -15834 -15835 -15836 -15837 -15838 -15839 -15840 -15841 -15842 -15843 -15844 -15845 -15846 -15847 -15848 -15849 -15850 -15851 -15852 -15853 -15854 -15855 -15856 -15857 -15858 -15859 -15860 -15861 -15862 -15863 -15864 -15865 -15866 -15867 -15868 -15869 -15870 -15871 -15872 -15873 -15874 -15875 -15876 -15877 -15878 -15879 -15880 -15881 -15882 -15883 -15884 -15885 -15886 -15887 -15888 -15889 -15890 -15891 -15892 -15893 -15894 -15895 -15896 -15897 -15898 -15899 -15900 -15901 -15902 -15903 -15904 -15905 -15906 -15907 -15908 -15909 -15910 -15911 -15912 -15913 -15914 -15915 -15916 -15917 -15918 -15919 -15920 -15921 -15922 -15923 -15924 -15925 -15926 -15927 -15928 -15929 -15930 -15931 -15932 -15933 -15934 -15935 -15936 -15937 -15938 -15939 -15940 -15941 -15942 -15943 -15944 -15945 -15946 -15947 -15948 -15949 -15950 -15951 -15952 -15953 -15954 -15955 -15956 -15957 -15958 -15959 -15960 -15961 -15962 -15963 -15964 -15965 -15966 -15967 -15968 -15969 -15970 -15971 -15972 -15973 -15974 -15975 -15976 -15977 -15978 -15979 -15980 -15981 -15982 -15983 -15984 -15985 -15986 -15987 -15988 -15989 -15990 -15991 -15992 -15993 -15994 -15995 -15996 -15997 -15998 -15999 -16000 -16001 -16002 -16003 -16004 -16005 -16006 -16007 -16008 -16009 -16010 -16011 -16012 -16013 -16014 -16015 -16016 -16017 -16018 -16019 -16020 -16021 -16022 -16023 -16024 -16025 -16026 -16027 -16028 -16029 -16030 -16031 -16032 -16033 -16034 -16035 -16036 -16037 -16038 -16039 -16040 -16041 -16042 -16043 -16044 -16045 -16046 -16047 -16048 -16049 -16050 -16051 -16052 -16053 -16054 -16055 -16056 -16057 -16058 -16059 -16060 -16061 -16062 -16063 -16064 -16065 -16066 -16067 -16068 -16069 -16070 -16071 -16072 -16073 -16074 -16075 -16076 -16077 -16078 -16079 -16080 -16081 -16082 -16083 -16084 -16085 -16086 -16087 -16088 -16089 -16090 -16091 -16092 -16093 -16094 -16095 -16096 -16097 -16098 -16099 -16100 -16101 -16102 -16103 -16104 -16105 -16106 -16107 -16108 -16109 -16110 -16111 -16112 -16113 -16114 -16115 -16116 -16117 -16118 -16119 -16120 -16121 -16122 -16123 -16124 -16125 -16126 -16127 -16128 -16129 -16130 -16131 -16132 -16133 -16134 -16135 -16136 -16137 -16138 -16139 -16140 -16141 -16142 -16143 -16144 -16145 -16146 -16147 -16148 -16149 -16150 -16151 -16152 -16153 -16154 -16155 -16156 -16157 -16158 -16159 -16160 -16161 -16162 -16163 -16164 -16165 -16166 -16167 -16168 -16169 -16170 -16171 -16172 -16173 -16174 -16175 -16176 -16177 -16178 -16179 -16180 -16181 -16182 -16183 -16184 -16185 -16186 -16187 -16188 -16189 -16190 -16191 -16192 -16193 -16194 -16195 -16196 -16197 -16198 -16199 -16200 -16201 -16202 -16203 -16204 -16205 -16206 -16207 -16208 -16209 -16210 -16211 -16212 -16213 -16214 -16215 -16216 -16217 -16218 -16219 -16220 -16221 -16222 -16223 -16224 -16225 -16226 -16227 -16228 -16229 -16230 -16231 -16232 -16233 -16234 -16235 -16236 -16237 -16238 -16239 -16240 -16241 -16242 -16243 -16244 -16245 -16246 -16247 -16248 -16249 -16250 -16251 -16252 -16253 -16254 -16255 -16256 -16257 -16258 -16259 -16260 -16261 -16262 -16263 -16264 -16265 -16266 -16267 -16268 -16269 -16270 -16271 -16272 -16273 -16274 -16275 -16276 -16277 -16278 -16279 -16280 -16281 -16282 -16283 -16284 -16285 -16286 -16287 -16288 -16289 -16290 -16291 -16292 -16293 -16294 -16295 -16296 -16297 -16298 -16299 -16300 -16301 -16302 -16303 -16304 -16305 -16306 -16307 -16308 -16309 -16310 -16311 -16312 -16313 -16314 -16315 -16316 -16317 -16318 -16319 -16320 -16321 -16322 -16323 -16324 -16325 -16326 -16327 -16328 -16329 -16330 -16331 -16332 -16333 -16334 -16335 -16336 -16337 -16338 -16339 -16340 -16341 -16342 -16343 -16344 -16345 -16346 -16347 -16348 -16349 -16350 -16351 -16352 -16353 -16354 -16355 -16356 -16357 -16358 -16359 -16360 -16361 -16362 -16363 -16364 -16365 -16366 -16367 -16368 -16369 -16370 -16371 -16372 -16373 -16374 -16375 -16376 -16377 -16378 -16379 -16380 -16381 -16382 -16383 -16384 -16385 -16386 -16387 -16388 -16389 -16390 -16391 -16392 -16393 -16394 -16395 -16396 -16397 -16398 -16399 -16400 -16401 -16402 -16403 -16404 -16405 -16406 -16407 -16408 -16409 -16410 -16411 -16412 -16413 -16414 -16415 -16416 -16417 -16418 -16419 -16420 -16421 -16422 -16423 -16424 -16425 -16426 -16427 -16428 -16429 -16430 -16431 -16432 -16433 -16434 -16435 -16436 -16437 -16438 -16439 -16440 -16441 -16442 -16443 -16444 -16445 -16446 -16447 -16448 -16449 -16450 -16451 -16452 -16453 -16454 -16455 -16456 -16457 -16458 -16459 -16460 -16461 -16462 -16463 -16464 -16465 -16466 -16467 -16468 -16469 -16470 -16471 -16472 -16473 -16474 -16475 -16476 -16477 -16478 -16479 -16480 -16481 -16482 -16483 -16484 -16485 -16486 -16487 -16488 -16489 -16490 -16491 -16492 -16493 -16494 -16495 -16496 -16497 -16498 -16499 -16500 -16501 -16502 -16503 -16504 -16505 -16506 -16507 -16508 -16509 -16510 -16511 -16512 -16513 -16514 -16515 -16516 -16517 -16518 -16519 -16520 -16521 -16522 -16523 -16524 -16525 -16526 -16527 -16528 -16529 -16530 -16531 -16532 -16533 -16534 -16535 -16536 -16537 -16538 -16539 -16540 -16541 -16542 -16543 -16544 -16545 -16546 -16547 -16548 -16549 -16550 -16551 -16552 -16553 -16554 -16555 -16556 -16557 -16558 -16559 -16560 -16561 -16562 -16563 -16564 -16565 -16566 -16567 -16568 -16569 -16570 -16571 -16572 -16573 -16574 -16575 -16576 -16577 -16578 -16579 -16580 -16581 -16582 -16583 -16584 -16585 -16586 -16587 -16588 -16589 -16590 -16591 -16592 -16593 -16594 -16595 -16596 -16597 -16598 -16599 -16600 -16601 -16602 -16603 -16604 -16605 -16606 -16607 -16608 -16609 -16610 -16611 -16612 -16613 -16614 -16615 -16616 -16617 -16618 -16619 -16620 -16621 -16622 -16623 -16624 -16625 -16626 -16627 -16628 -16629 -16630 -16631 -16632 -16633 -16634 -16635 -16636 -16637 -16638 -16639 -16640 -16641 -16642 -16643 -16644 -16645 -16646 -16647 -16648 -16649 -16650 -16651 -16652 -16653 -16654 -16655 -16656 -16657 -16658 -16659 -16660 -16661 -16662 -16663 -16664 -16665 -16666 -16667 -16668 -16669 -16670 -16671 -16672 -16673 -16674 -16675 -16676 -16677 -16678 -16679 -16680 -16681 -16682 -16683 -16684 -16685 -16686 -16687 -16688 -16689 -16690 -16691 -16692 -16693 -16694 -16695 -16696 -16697 -16698 -16699 -16700 -16701 -16702 -16703 -16704 -16705 -16706 -16707 -16708 -16709 -16710 -16711 -16712 -16713 -16714 -16715 -16716 -16717 -16718 -16719 -16720 -16721 -16722 -16723 -16724 -16725 -16726 -16727 -16728 -16729 -16730 -16731 -16732 -16733 -16734 -16735 -16736 -16737 -16738 -16739 -16740 -16741 -16742 -16743 -16744 -16745 -16746 -16747 -16748 -16749 -16750 -16751 -16752 -16753 -16754 -16755 -16756 -16757 -16758 -16759 -16760 -16761 -16762 -16763 -16764 -16765 -16766 -16767 -16768 -16769 -16770 -16771 -16772 -16773 -16774 -16775 -16776 -16777 -16778 -16779 -16780 -16781 -16782 -16783 -16784 -16785 -16786 -16787 -16788 -16789 -16790 -16791 -16792 -16793 -16794 -16795 -16796 -16797 -16798 -16799 -16800 -16801 -16802 -16803 -16804 -16805 -16806 -16807 -16808 -16809 -16810 -16811 -16812 -16813 -16814 -16815 -16816 -16817 -16818 -16819 -16820 -16821 -16822 -16823 -16824 -16825 -16826 -16827 -16828 -16829 -16830 -16831 -16832 -16833 -16834 -16835 -16836 -16837 -16838 -16839 -16840 -16841 -16842 -16843 -16844 -16845 -16846 -16847 -16848 -16849 -16850 -16851 -16852 -16853 -16854 -16855 -16856 -16857 -16858 -16859 -16860 -16861 -16862 -16863 -16864 -16865 -16866 -16867 -16868 -16869 -16870 -16871 -16872 -16873 -16874 -16875 -16876 -16877 -16878 -16879 -16880 -16881 -16882 -16883 -16884 -16885 -16886 -16887 -16888 -16889 -16890 -16891 -16892 -16893 -16894 -16895 -16896 -16897 -16898 -16899 -16900 -16901 -16902 -16903 -16904 -16905 -16906 -16907 -16908 -16909 -16910 -16911 -16912 -16913 -16914 -16915 -16916 -16917 -16918 -16919 -16920 -16921 -16922 -16923 -16924 -16925 -16926 -16927 -16928 -16929 -16930 -16931 -16932 -16933 -16934 -16935 -16936 -16937 -16938 -16939 -16940 -16941 -16942 -16943 -16944 -16945 -16946 -16947 -16948 -16949 -16950 -16951 -16952 -16953 -16954 -16955 -16956 -16957 -16958 -16959 -16960 -16961 -16962 -16963 -16964 -16965 -16966 -16967 -16968 -16969 -16970 -16971 -16972 -16973 -16974 -16975 -16976 -16977 -16978 -16979 -16980 -16981 -16982 -16983 -16984 -16985 -16986 -16987 -16988 -16989 -16990 -16991 -16992 -16993 -16994 -16995 -16996 -16997 -16998 -16999 -17000 -17001 -17002 -17003 -17004 -17005 -17006 -17007 -17008 -17009 -17010 -17011 -17012 -17013 -17014 -17015 -17016 -17017 -17018 -17019 -17020 -17021 -17022 -17023 -17024 -17025 -17026 -17027 -17028 -17029 -17030 -17031 -17032 -17033 -17034 -17035 -17036 -17037 -17038 -17039 -17040 -17041 -17042 -17043 -17044 -17045 -17046 -17047 -17048 -17049 -17050 -17051 -17052 -17053 -17054 -17055 -17056 -17057 -17058 -17059 -17060 -17061 -17062 -17063 -17064 -17065 -17066 -17067 -17068 -17069 -17070 -17071 -17072 -17073 -17074 -17075 -17076 -17077 -17078 -17079 -17080 -17081 -17082 -17083 -17084 -17085 -17086 -17087 -17088 -17089 -17090 -17091 -17092 -17093 -17094 -17095 -17096 -17097 -17098 -17099 -17100 -17101 -17102 -17103 -17104 -17105 -17106 -17107 -17108 -17109 -17110 -17111 -17112 -17113 -17114 -17115 -17116 -17117 -17118 -17119 -17120 -17121 -17122 -17123 -17124 -17125 -17126 -17127 -17128 -17129 -17130 -17131 -17132 -17133 -17134 -17135 -17136 -17137 -17138 -17139 -17140 -17141 -17142 -17143 -17144 -17145 -17146 -17147 -17148 -17149 -17150 -17151 -17152 -17153 -17154 -17155 -17156 -17157 -17158 -17159 -17160 -17161 -17162 -17163 -17164 -17165 -17166 -17167 -17168 -17169 -17170 -17171 -17172 -17173 -17174 -17175 -17176 -17177 -17178 -17179 -17180 -17181 -17182 -17183 -17184 -17185 -17186 -17187 -17188 -17189 -17190 -17191 -17192 -17193 -17194 -17195 -17196 -17197 -17198 -17199 -17200 -17201 -17202 -17203 -17204 -17205 -17206 -17207 -17208 -17209 -17210 -17211 -17212 -17213 -17214 -17215 -17216 -17217 -17218 -17219 -17220 -17221 -17222 -17223 -17224 -17225 -17226 -17227 -17228 -17229 -17230 -17231 -17232 -17233 -17234 -17235 -17236 -17237 -17238 -17239 -17240 -17241 -17242 -17243 -17244 -17245 -17246 -17247 -17248 -17249 -17250 -17251 -17252 -17253 -17254 -17255 -17256 -17257 -17258 -17259 -17260 -17261 -17262 -17263 -17264 -17265 -17266 -17267 -17268 -17269 -17270 -17271 -17272 -17273 -17274 -17275 -17276 -17277 -17278 -17279 -17280 -17281 -17282 -17283 -17284 -17285 -17286 -17287 -17288 -17289 -17290 -17291 -17292 -17293 -17294 -17295 -17296 -17297 -17298 -17299 -17300 -17301 -17302 -17303 -17304 -17305 -17306 -17307 -17308 -17309 -17310 -17311 -17312 -17313 -17314 -17315 -17316 -17317 -17318 -17319 -17320 -17321 -17322 -17323 -17324 -17325 -17326 -17327 -17328 -17329 -17330 -17331 -17332 -17333 -17334 -17335 -17336 -17337 -17338 -17339 -17340 -17341 -17342 -17343 -17344 -17345 -17346 -17347 -17348 -17349 -17350 -17351 -17352 -17353 -17354 -17355 -17356 -17357 -17358 -17359 -17360 -17361 -17362 -17363 -17364 -17365 -17366 -17367 -17368 -17369 -17370 -17371 -17372 -17373 -17374 -17375 -17376 -17377 -17378 -17379 -17380 -17381 -17382 -17383 -17384 -17385 -17386 -17387 -17388 -17389 -17390 -17391 -17392 -17393 -17394 -17395 -17396 -17397 -17398 -17399 -17400 -17401 -17402 -17403 -17404 -17405 -17406 -17407 -17408 -17409 -17410 -17411 -17412 -17413 -17414 -17415 -17416 -17417 -17418 -17419 -17420 -17421 -17422 -17423 -17424 -17425 -17426 -17427 -17428 -17429 -17430 -17431 -17432 -17433 -17434 -17435 -17436 -17437 -17438 -17439 -17440 -17441 -17442 -17443 -17444 -17445 -17446 -17447 -17448 -17449 -17450 -17451 -17452 -17453 -17454 -17455 -17456 -17457 -17458 -17459 -17460 -17461 -17462 -17463 -17464 -17465 -17466 -17467 -17468 -17469 -17470 -17471 -17472 -17473 -17474 -17475 -17476 -17477 -17478 -17479 -17480 -17481 -17482 -17483 -17484 -17485 -17486 -17487 -17488 -17489 -17490 -17491 -17492 -17493 -17494 -17495 -17496 -17497 -17498 -17499 -17500 -17501 -17502 -17503 -17504 -17505 -17506 -17507 -17508 -17509 -17510 -17511 -17512 -17513 -17514 -17515 -17516 -17517 -17518 -17519 -17520 -17521 -17522 -17523 -17524 -17525 -17526 -17527 -17528 -17529 -17530 -17531 -17532 -17533 -17534 -17535 -17536 -17537 -17538 -17539 -17540 -17541 -17542 -17543 -17544 -17545 -17546 -17547 -17548 -17549 -17550 -17551 -17552 -17553 -17554 -17555 -17556 -17557 -17558 -17559 -17560 -17561 -17562 -17563 -17564 -17565 -17566 -17567 -17568 -17569 -17570 -17571 -17572 -17573 -17574 -17575 -17576 -17577 -17578 -17579 -17580 -17581 -17582 -17583 -17584 -17585 -17586 -17587 -17588 -17589 -17590 -17591 -17592 -17593 -17594 -17595 -17596 -17597 -17598 -17599 -17600 -17601 -17602 -17603 -17604 -17605 -17606 -17607 -17608 -17609 -17610 -17611 -17612 -17613 -17614 -17615 -17616 -17617 -17618 -17619 -17620 -17621 -17622 -17623 -17624 -17625 -17626 -17627 -17628 -17629 -17630 -17631 -17632 -17633 -17634 -17635 -17636 -17637 -17638 -17639 -17640 -17641 -17642 -17643 -17644 -17645 -17646 -17647 -17648 -17649 -17650 -17651 -17652 -17653 -17654 -17655 -17656 -17657 -17658 -17659 -17660 -17661 -17662 -17663 -17664 -17665 -17666 -17667 -17668 -17669 -17670 -17671 -17672 -17673 -17674 -17675 -17676 -17677 -17678 -17679 -17680 -17681 -17682 -17683 -17684 -17685 -17686 -17687 -17688 -17689 -17690 -17691 -17692 -17693 -17694 -17695 -17696 -17697 -17698 -17699 -17700 -17701 -17702 -17703 -17704 -17705 -17706 -17707 -17708 -17709 -17710 -17711 -17712 -17713 -17714 -17715 -17716 -17717 -17718 -17719 -17720 -17721 -17722 -17723 -17724 -17725 -17726 -17727 -17728 -17729 -17730 -17731 -17732 -17733 -17734 -17735 -17736 -17737 -17738 -17739 -17740 -17741 -17742 -17743 -17744 -17745 -17746 -17747 -17748 -17749 -17750 -17751 -17752 -17753 -17754 -17755 -17756 -17757 -17758 -17759 -17760 -17761 -17762 -17763 -17764 -17765 -17766 -17767 -17768 -17769 -17770 -17771 -17772 -17773 -17774 -17775 -17776 -17777 -17778 -17779 -17780 -17781 -17782 -17783 -17784 -17785 -17786 -17787 -17788 -17789 -17790 -17791 -17792 -17793 -17794 -17795 -17796 -17797 -17798 -17799 -17800 -17801 -17802 -17803 -17804 -17805 -17806 -17807 -17808 -17809 -17810 -17811 -17812 -17813 -17814 -17815 -17816 -17817 -17818 -17819 -17820 -17821 -17822 -17823 -17824 -17825 -17826 -17827 -17828 -17829 -17830 -17831 -17832 -17833 -17834 -17835 -17836 -17837 -17838 -17839 -17840 -17841 -17842 -17843 -17844 -17845 -17846 -17847 -17848 -17849 -17850 -17851 -17852 -17853 -17854 -17855 -17856 -17857 -17858 -17859 -17860 -17861 -17862 -17863 -17864 -17865 -17866 -17867 -17868 -17869 -17870 -17871 -17872 -17873 -17874 -17875 -17876 -17877 -17878 -17879 -17880 -17881 -17882 -17883 -17884 -17885 -17886 -17887 -17888 -17889 -17890 -17891 -17892 -17893 -17894 -17895 -17896 -17897 -17898 -17899 -17900 -17901 -17902 -17903 -17904 -17905 -17906 -17907 -17908 -17909 -17910 -17911 -17912 -17913 -17914 -17915 -17916 -17917 -17918 -17919 -17920 -17921 -17922 -17923 -17924 -17925 -17926 -17927 -17928 -17929 -17930 -17931 -17932 -17933 -17934 -17935 -17936 -17937 -17938 -17939 -17940 -17941 -17942 -17943 -17944 -17945 -17946 -17947 -17948 -17949 -17950 -17951 -17952 -17953 -17954 -17955 -17956 -17957 -17958 -17959 -17960 -17961 -17962 -17963 -17964 -17965 -17966 -17967 -17968 -17969 -17970 -17971 -17972 -17973 -17974 -17975 -17976 -17977 -17978 -17979 -17980 -17981 -17982 -17983 -17984 -17985 -17986 -17987 -17988 -17989 -17990 -17991 -17992 -17993 -17994 -17995 -17996 -17997 -17998 -17999 -18000 -18001 -18002 -18003 -18004 -18005 -18006 -18007 -18008 -18009 -18010 -18011 -18012 -18013 -18014 -18015 -18016 -18017 -18018 -18019 -18020 -18021 -18022 -18023 -18024 -18025 -18026 -18027 -18028 -18029 -18030 -18031 -18032 -18033 -18034 -18035 -18036 -18037 -18038 -18039 -18040 -18041 -18042 -18043 -18044 -18045 -18046 -18047 -18048 -18049 -18050 -18051 -18052 -18053 -18054 -18055 -18056 -18057 -18058 -18059 -18060 -18061 -18062 -18063 -18064 -18065 -18066 -18067 -18068 -18069 -18070 -18071 -18072 -18073 -18074 -18075 -18076 -18077 -18078 -18079 -18080 -18081 -18082 -18083 -18084 -18085 -18086 -18087 -18088 -18089 -18090 -18091 -18092 -18093 -18094 -18095 -18096 -18097 -18098 -18099 -18100 -18101 -18102 -18103 -18104 -18105 -18106 -18107 -18108 -18109 -18110 -18111 -18112 -18113 -18114 -18115 -18116 -18117 -18118 -18119 -18120 -18121 -18122 -18123 -18124 -18125 -18126 -18127 -18128 -18129 -18130 -18131 -18132 -18133 -18134 -18135 -18136 -18137 -18138 -18139 -18140 -18141 -18142 -18143 -18144 -18145 -18146 -18147 -18148 -18149 -18150 -18151 -18152 -18153 -18154 -18155 -18156 -18157 -18158 -18159 -18160 -18161 -18162 -18163 -18164 -18165 -18166 -18167 -18168 -18169 -18170 -18171 -18172 -18173 -18174 -18175 -18176 -18177 -18178 -18179 -18180 -18181 -18182 -18183 -18184 -18185 -18186 -18187 -18188 -18189 -18190 -18191 -18192 -18193 -18194 -18195 -18196 -18197 -18198 -18199 -18200 -18201 -18202 -18203 -18204 -18205 -18206 -18207 -18208 -18209 -18210 -18211 -18212 -18213 -18214 -18215 -18216 -18217 -18218 -18219 -18220 -18221 -18222 -18223 -18224 -18225 -18226 -18227 -18228 -18229 -18230 -18231 -18232 -18233 -18234 -18235 -18236 -18237 -18238 -18239 -18240 -18241 -18242 -18243 -18244 -18245 -18246 -18247 -18248 -18249 -18250 -18251 -18252 -18253 -18254 -18255 -18256 -18257 -18258 -18259 -18260 -18261 -18262 -18263 -18264 -18265 -18266 -18267 -18268 -18269 -18270 -18271 -18272 -18273 -18274 -18275 -18276 -18277 -18278 -18279 -18280 -18281 -18282 -18283 -18284 -18285 -18286 -18287 -18288 -18289 -18290 -18291 -18292 -18293 -18294 -18295 -18296 -18297 -18298 -18299 -18300 -18301 -18302 -18303 -18304 -18305 -18306 -18307 -18308 -18309 -18310 -18311 -18312 -18313 -18314 -18315 -18316 -18317 -18318 -18319 -18320 -18321 -18322 -18323 -18324 -18325 -18326 -18327 -18328 -18329 -18330 -18331 -18332 -18333 -18334 -18335 -18336 -18337 -18338 -18339 -18340 -18341 -18342 -18343 -18344 -18345 -18346 -18347 -18348 -18349 -18350 -18351 -18352 -18353 -18354 -18355 -18356 -18357 -18358 -18359 -18360 -18361 -18362 -18363 -18364 -18365 -18366 -18367 -18368 -18369 -18370 -18371 -18372 -18373 -18374 -18375 -18376 -18377 -18378 -18379 -18380 -18381 -18382 -18383 -18384 -18385 -18386 -18387 -18388 -18389 -18390 -18391 -18392 -18393 -18394 -18395 -18396 -18397 -18398 -18399 -18400 -18401 -18402 -18403 -18404 -18405 -18406 -18407 -18408 -18409 -18410 -18411 -18412 -18413 -18414 -18415 -18416 -18417 -18418 -18419 -18420 -18421 -18422 -18423 -18424 -18425 -18426 -18427 -18428 -18429 -18430 -18431 -18432 -18433 -18434 -18435 -18436 -18437 -18438 -18439 -18440 -18441 -18442 -18443 -18444 -18445 -18446 -18447 -18448 -18449 -18450 -18451 -18452 -18453 -18454 -18455 -18456 -18457 -18458 -18459 -18460 -18461 -18462 -18463 -18464 -18465 -18466 -18467 -18468 -18469 -18470 -18471 -18472 -18473 -18474 -18475 -18476 -18477 -18478 -18479 -18480 -18481 -18482 -18483 -18484 -18485 -18486 -18487 -18488 -18489 -18490 -18491 -18492 -18493 -18494 -18495 -18496 -18497 -18498 -18499 -18500 -18501 -18502 -18503 -18504 -18505 -18506 -18507 -18508 -18509 -18510 -18511 -18512 -18513 -18514 -18515 -18516 -18517 -18518 -18519 -18520 -18521 -18522 -18523 -18524 -18525 -18526 -18527 -18528 -18529 -18530 -18531 -18532 -18533 -18534 -18535 -18536 -18537 -18538 -18539 -18540 -18541 -18542 -18543 -18544 -18545 -18546 -18547 -18548 -18549 -18550 -18551 -18552 -18553 -18554 -18555 -18556 -18557 -18558 -18559 -18560 -18561 -18562 -18563 -18564 -18565 -18566 -18567 -18568 -18569 -18570 -18571 -18572 -18573 -18574 -18575 -18576 -18577 -18578 -18579 -18580 -18581 -18582 -18583 -18584 -18585 -18586 -18587 -18588 -18589 -18590 -18591 -18592 -18593 -18594 -18595 -18596 -18597 -18598 -18599 -18600 -18601 -18602 -18603 -18604 -18605 -18606 -18607 -18608 -18609 -18610 -18611 -18612 -18613 -18614 -18615 -18616 -18617 -18618 -18619 -18620 -18621 -18622 -18623 -18624 -18625 -18626 -18627 -18628 -18629 -18630 -18631 -18632 -18633 -18634 -18635 -18636 -18637 -18638 -18639 -18640 -18641 -18642 -18643 -18644 -18645 -18646 -18647 -18648 -18649 -18650 -18651 -18652 -18653 -18654 -18655 -18656 -18657 -18658 -18659 -18660 -18661 -18662 -18663 -18664 -18665 -18666 -18667 -18668 -18669 -18670 -18671 -18672 -18673 -18674 -18675 -18676 -18677 -18678 -18679 -18680 -18681 -18682 -18683 -18684 -18685 -18686 -18687 -18688 -18689 -18690 -18691 -18692 -18693 -18694 -18695 -18696 -18697 -18698 -18699 -18700 -18701 -18702 -18703 -18704 -18705 -18706 -18707 -18708 -18709 -18710 -18711 -18712 -18713 -18714 -18715 -18716 -18717 -18718 -18719 -18720 -18721 -18722 -18723 -18724 -18725 -18726 -18727 -18728 -18729 -18730 -18731 -18732 -18733 -18734 -18735 -18736 -18737 -18738 -18739 -18740 -18741 -18742 -18743 -18744 -18745 -18746 -18747 -18748 -18749 -18750 -18751 -18752 -18753 -18754 -18755 -18756 -18757 -18758 -18759 -18760 -18761 -18762 -18763 -18764 -18765 -18766 -18767 -18768 -18769 -18770 -18771 -18772 -18773 -18774 -18775 -18776 -18777 -18778 -18779 -18780 -18781 -18782 -18783 -18784 -18785 -18786 -18787 -18788 -18789 -18790 -18791 -18792 -18793 -18794 -18795 -18796 -18797 -18798 -18799 -18800 -18801 -18802 -18803 -18804 -18805 -18806 -18807 -18808 -18809 -18810 -18811 -18812 -18813 -18814 -18815 -18816 -18817 -18818 -18819 -18820 -18821 -18822 -18823 -18824 -18825 -18826 -18827 -18828 -18829 -18830 -18831 -18832 -18833 -18834 -18835 -18836 -18837 -18838 -18839 -18840 -18841 -18842 -18843 -18844 -18845 -18846 -18847 -18848 -18849 -18850 -18851 -18852 -18853 -18854 -18855 -18856 -18857 -18858 -18859 -18860 -18861 -18862 -18863 -18864 -18865 -18866 -18867 -18868 -18869 -18870 -18871 -18872 -18873 -18874 -18875 -18876 -18877 -18878 -18879 -18880 -18881 -18882 -18883 -18884 -18885 -18886 -18887 -18888 -18889 -18890 -18891 -18892 -18893 -18894 -18895 -18896 -18897 -18898 -18899 -18900 -18901 -18902 -18903 -18904 -18905 -18906 -18907 -18908 -18909 -18910 -18911 -18912 -18913 -18914 -18915 -18916 -18917 -18918 -18919 -18920 -18921 -18922 -18923 -18924 -18925 -18926 -18927 -18928 -18929 -18930 -18931 -18932 -18933 -18934 -18935 -18936 -18937 -18938 -18939 -18940 -18941 -18942 -18943 -18944 -18945 -18946 -18947 -18948 -18949 -18950 -18951 -18952 -18953 -18954 -18955 -18956 -18957 -18958 -18959 -18960 -18961 -18962 -18963 -18964 -18965 -18966 -18967 -18968 -18969 -18970 -18971 -18972 -18973 -18974 -18975 -18976 -18977 -18978 -18979 -18980 -18981 -18982 -18983 -18984 -18985 -18986 -18987 -18988 -18989 -18990 -18991 -18992 -18993 -18994 -18995 -18996 -18997 -18998 -18999 -19000 -19001 -19002 -19003 -19004 -19005 -19006 -19007 -19008 -19009 -19010 -19011 -19012 -19013 -19014 -19015 -19016 -19017 -19018 -19019 -19020 -19021 -19022 -19023 -19024 -19025 -19026 -19027 -19028 -19029 -19030 -19031 -19032 -19033 -19034 -19035 -19036 -19037 -19038 -19039 -19040 -19041 -19042 -19043 -19044 -19045 -19046 -19047 -19048 -19049 -19050 -19051 -19052 -19053 -19054 -19055 -19056 -19057 -19058 -19059 -19060 -19061 -19062 -19063 -19064 -19065 -19066 -19067 -19068 -19069 -19070 -19071 -19072 -19073 -19074 -19075 -19076 -19077 -19078 -19079 -19080 -19081 -19082 -19083 -19084 -19085 -19086 -19087 -19088 -19089 -19090 -19091 -19092 -19093 -19094 -19095 -19096 -19097 -19098 -19099 -19100 -19101 -19102 -19103 -19104 -19105 -19106 -19107 -19108 -19109 -19110 -19111 -19112 -19113 -19114 -19115 -19116 -19117 -19118 -19119 -19120 -19121 -19122 -19123 -19124 -19125 -19126 -19127 -19128 -19129 -19130 -19131 -19132 -19133 -19134 -19135 -19136 -19137 -19138 -19139 -19140 -19141 -19142 -19143 -19144 -19145 -19146 -19147 -19148 -19149 -19150 -19151 -19152 -19153 -19154 -19155 -19156 -19157 -19158 -19159 -19160 -19161 -19162 -19163 -19164 -19165 -19166 -19167 -19168 -19169 -19170 -19171 -19172 -19173 -19174 -19175 -19176 -19177 -19178 -19179 -19180 -19181 -19182 -19183 -19184 -19185 -19186 -19187 -19188 -19189 -19190 -19191 -19192 -19193 -19194 -19195 -19196 -19197 -19198 -19199 -19200 -19201 -19202 -19203 -19204 -19205 -19206 -19207 -19208 -19209 -19210 -19211 -19212 -19213 -19214 -19215 -19216 -19217 -19218 -19219 -19220 -19221 -19222 -19223 -19224 -19225 -19226 -19227 -19228 -19229 -19230 -19231 -19232 -19233 -19234 -19235 -19236 -19237 -19238 -19239 -19240 -19241 -19242 -19243 -19244 -19245 -19246 -19247 -19248 -19249 -19250 -19251 -19252 -19253 -19254 -19255 -19256 -19257 -19258 -19259 -19260 -19261 -19262 -19263 -19264 -19265 -19266 -19267 -19268 -19269 -19270 -19271 -19272 -19273 -19274 -19275 -19276 -19277 -19278 -19279 -19280 -19281 -19282 -19283 -19284 -19285 -19286 -19287 -19288 -19289 -19290 -19291 -19292 -19293 -19294 -19295 -19296 -19297 -19298 -19299 -19300 -19301 -19302 -19303 -19304 -19305 -19306 -19307 -19308 -19309 -19310 -19311 -19312 -19313 -19314 -19315 -19316 -19317 -19318 -19319 -19320 -19321 -19322 -19323 -19324 -19325 -19326 -19327 -19328 -19329 -19330 -19331 -19332 -19333 -19334 -19335 -19336 -19337 -19338 -19339 -19340 -19341 -19342 -19343 -19344 -19345 -19346 -19347 -19348 -19349 -19350 -19351 -19352 -19353 -19354 -19355 -19356 -19357 -19358 -19359 -19360 -19361 -19362 -19363 -19364 -19365 -19366 -19367 -19368 -19369 -19370 -19371 -19372 -19373 -19374 -19375 -19376 -19377 -19378 -19379 -19380 -19381 -19382 -19383 -19384 -19385 -19386 -19387 -19388 -19389 -19390 -19391 -19392 -19393 -19394 -19395 -19396 -19397 -19398 -19399 -19400 -19401 -19402 -19403 -19404 -19405 -19406 -19407 -19408 -19409 -19410 -19411 -19412 -19413 -19414 -19415 -19416 -19417 -19418 -19419 -19420 -19421 -19422 -19423 -19424 -19425 -19426 -19427 -19428 -19429 -19430 -19431 -19432 -19433 -19434 -19435 -19436 -19437 -19438 -19439 -19440 -19441 -19442 -19443 -19444 -19445 -19446 -19447 -19448 -19449 -19450 -19451 -19452 -19453 -19454 -19455 -19456 -19457 -19458 -19459 -19460 -19461 -19462 -19463 -19464 -19465 -19466 -19467 -19468 -19469 -19470 -19471 -19472 -19473 -19474 -19475 -19476 -19477 -19478 -19479 -19480 -19481 -19482 -19483 -19484 -19485 -19486 -19487 -19488 -19489 -19490 -19491 -19492 -19493 -19494 -19495 -19496 -19497 -19498 -19499 -19500 -19501 -19502 -19503 -19504 -19505 -19506 -19507 -19508 -19509 -19510 -19511 -19512 -19513 -19514 -19515 -19516 -19517 -19518 -19519 -19520 -19521 -19522 -19523 -19524 -19525 -19526 -19527 -19528 -19529 -19530 -19531 -19532 -19533 -19534 -19535 -19536 -19537 -19538 -19539 -19540 -19541 -19542 -19543 -19544 -19545 -19546 -19547 -19548 -19549 -19550 -19551 -19552 -19553 -19554 -19555 -19556 -19557 -19558 -19559 -19560 -19561 -19562 -19563 -19564 -19565 -19566 -19567 -19568 -19569 -19570 -19571 -19572 -19573 -19574 -19575 -19576 -19577 -19578 -19579 -19580 -19581 -19582 -19583 -19584 -19585 -19586 -19587 -19588 -19589 -19590 -19591 -19592 -19593 -19594 -19595 -19596 -19597 -19598 -19599 -19600 -19601 -19602 -19603 -19604 -19605 -19606 -19607 -19608 -19609 -19610 -19611 -19612 -19613 -19614 -19615 -19616 -19617 -19618 -19619 -19620 -19621 -19622 -19623 -19624 -19625 -19626 -19627 -19628 -19629 -19630 -19631 -19632 -19633 -19634 -19635 -19636 -19637 -19638 -19639 -19640 -19641 -19642 -19643 -19644 -19645 -19646 -19647 -19648 -19649 -19650 -19651 -19652 -19653 -19654 -19655 -19656 -19657 -19658 -19659 -19660 -19661 -19662 -19663 -19664 -19665 -19666 -19667 -19668 -19669 -19670 -19671 -19672 -19673 -19674 -19675 -19676 -19677 -19678 -19679 -19680 -19681 -19682 -19683 -19684 -19685 -19686 -19687 -19688 -19689 -19690 -19691 -19692 -19693 -19694 -19695 -19696 -19697 -19698 -19699 -19700 -19701 -19702 -19703 -19704 -19705 -19706 -19707 -19708 -19709 -19710 -19711 -19712 -19713 -19714 -19715 -19716 -19717 -19718 -19719 -19720 -19721 -19722 -19723 -19724 -19725 -19726 -19727 -19728 -19729 -19730 -19731 -19732 -19733 -19734 -19735 -19736 -19737 -19738 -19739 -19740 -19741 -19742 -19743 -19744 -19745 -19746 -19747 -19748 -19749 -19750 -19751 -19752 -19753 -19754 -19755 -19756 -19757 -19758 -19759 -19760 -19761 -19762 -19763 -19764 -19765 -19766 -19767 -19768 -19769 -19770 -19771 -19772 -19773 -19774 -19775 -19776 -19777 -19778 -19779 -19780 -19781 -19782 -19783 -19784 -19785 -19786 -19787 -19788 -19789 -19790 -19791 -19792 -19793 -19794 -19795 -19796 -19797 -19798 -19799 -19800 -19801 -19802 -19803 -19804 -19805 -19806 -19807 -19808 -19809 -19810 -19811 -19812 -19813 -19814 -19815 -19816 -19817 -19818 -19819 -19820 -19821 -19822 -19823 -19824 -19825 -19826 -19827 -19828 -19829 -19830 -19831 -19832 -19833 -19834 -19835 -19836 -19837 -19838 -19839 -19840 -19841 -19842 -19843 -19844 -19845 -19846 -19847 -19848 -19849 -19850 -19851 -19852 -19853 -19854 -19855 -19856 -19857 -19858 -19859 -19860 -19861 -19862 -19863 -19864 -19865 -19866 -19867 -19868 -19869 -19870 -19871 -19872 -19873 -19874 -19875 -19876 -19877 -19878 -19879 -19880 -19881 -19882 -19883 -19884 -19885 -19886 -19887 -19888 -19889 -19890 -19891 -19892 -19893 -19894 -19895 -19896 -19897 -19898 -19899 -19900 -19901 -19902 -19903 -19904 -19905 -19906 -19907 -19908 -19909 -19910 -19911 -19912 -19913 -19914 -19915 -19916 -19917 -19918 -19919 -19920 -19921 -19922 -19923 -19924 -19925 -19926 -19927 -19928 -19929 -19930 -19931 -19932 -19933 -19934 -19935 -19936 -19937 -19938 -19939 -19940 -19941 -19942 -19943 -19944 -19945 -19946 -19947 -19948 -19949 -19950 -19951 -19952 -19953 -19954 -19955 -19956 -19957 -19958 -19959 -19960 -19961 -19962 -19963 -19964 -19965 -19966 -19967 -19968 -19969 -19970 -19971 -19972 -19973 -19974 -19975 -19976 -19977 -19978 -19979 -19980 -19981 -19982 -19983 -19984 -19985 -19986 -19987 -19988 -19989 -19990 -19991 -19992 -19993 -19994 -19995 -19996 -19997 -19998 -19999 -20000 -20001 -20002 -20003 -20004 -20005 -20006 -20007 -20008 -20009 -20010 -20011 -20012 -20013 -20014 -20015 -20016 -20017 -20018 -20019 -20020 -20021 -20022 -20023 -20024 -20025 -20026 -20027 -20028 -20029 -20030 -20031 -20032 -20033 -20034 -20035 -20036 -20037 -20038 -20039 -20040 -20041 -20042 -20043 -20044 -20045 -20046 -20047 -20048 -20049 -20050 -20051 -20052 -20053 -20054 -20055 -20056 -20057 -20058 -20059 -20060 -20061 -20062 -20063 -20064 -20065 -20066 -20067 -20068 -20069 -20070 -20071 -20072 -20073 -20074 -20075 -20076 -20077 -20078 -20079 -20080 -20081 -20082 -20083 -20084 -20085 -20086 -20087 -20088 -20089 -20090 -20091 -20092 -20093 -20094 -20095 -20096 -20097 -20098 -20099 -20100 -20101 -20102 -20103 -20104 -20105 -20106 -20107 -20108 -20109 -20110 -20111 -20112 -20113 -20114 -20115 -20116 -20117 -20118 -20119 -20120 -20121 -20122 -20123 -20124 -20125 -20126 -20127 -20128 -20129 -20130 -20131 -20132 -20133 -20134 -20135 -20136 -20137 -20138 -20139 -20140 -20141 -20142 -20143 -20144 -20145 -20146 -20147 -20148 -20149 -20150 -20151 -20152 -20153 -20154 -20155 -20156 -20157 -20158 -20159 -20160 -20161 -20162 -20163 -20164 -20165 -20166 -20167 -20168 -20169 -20170 -20171 -20172 -20173 -20174 -20175 -20176 -20177 -20178 -20179 -20180 -20181 -20182 -20183 -20184 -20185 -20186 -20187 -20188 -20189 -20190 -20191 -20192 -20193 -20194 -20195 -20196 -20197 -20198 -20199 -20200 -20201 -20202 -20203 -20204 -20205 -20206 -20207 -20208 -20209 -20210 -20211 -20212 -20213 -20214 -20215 -20216 -20217 -20218 -20219 -20220 -20221 -20222 -20223 -20224 -20225 -20226 -20227 -20228 -20229 -20230 -20231 -20232 -20233 -20234 -20235 -20236 -20237 -20238 -20239 -20240 -20241 -20242 -20243 -20244 -20245 -20246 -20247 -20248 -20249 -20250 -20251 -20252 -20253 -20254 -20255 -20256 -20257 -20258 -20259 -20260 -20261 -20262 -20263 -20264 -20265 -20266 -20267 -20268 -20269 -20270 -20271 -20272 -20273 -20274 -20275 -20276 -20277 -20278 -20279 -20280 -20281 -20282 -20283 -20284 -20285 -20286 -20287 -20288 -20289 -20290 -20291 -20292 -20293 -20294 -20295 -20296 -20297 -20298 -20299 -20300 -20301 -20302 -20303 -20304 -20305 -20306 -20307 -20308 -20309 -20310 -20311 -20312 -20313 -20314 -20315 -20316 -20317 -20318 -20319 -20320 -20321 -20322 -20323 -20324 -20325 -20326 -20327 -20328 -20329 -20330 -20331 -20332 -20333 -20334 -20335 -20336 -20337 -20338 -20339 -20340 -20341 -20342 -20343 -20344 -20345 -20346 -20347 -20348 -20349 -20350 -20351 -20352 -20353 -20354 -20355 -20356 -20357 -20358 -20359 -20360 -20361 -20362 -20363 -20364 -20365 -20366 -20367 -20368 -20369 -20370 -20371 -20372 -20373 -20374 -20375 -20376 -20377 -20378 -20379 -20380 -20381 -20382 -20383 -20384 -20385 -20386 -20387 -20388 -20389 -20390 -20391 -20392 -20393 -20394 -20395 -20396 -20397 -20398 -20399 -20400 -20401 -20402 -20403 -20404 -20405 -20406 -20407 -20408 -20409 -20410 -20411 -20412 -20413 -20414 -20415 -20416 -20417 -20418 -20419 -20420 -20421 -20422 -20423 -20424 -20425 -20426 -20427 -20428 -20429 -20430 -20431 -20432 -20433 -20434 -20435 -20436 -20437 -20438 -20439 -20440 -20441 -20442 -20443 -20444 -20445 -20446 -20447 -20448 -20449 -20450 -20451 -20452 -20453 -20454 -20455 -20456 -20457 -20458 -20459 -20460 -20461 -20462 -20463 -20464 -20465 -20466 -20467 -20468 -20469 -20470 -20471 -20472 -20473 -20474 -20475 -20476 -20477 -20478 -20479 -20480 -20481 -20482 -20483 -20484 -20485 -20486 -20487 -20488 -20489 -20490 -20491 -20492 -20493 -20494 -20495 -20496 -20497 -20498 -20499 -20500 -20501 -20502 -20503 -20504 -20505 -20506 -20507 -20508 -20509 -20510 -20511 -20512 -20513 -20514 -20515 -20516 -20517 -20518 -20519 -20520 -20521 -20522 -20523 -20524 -20525 -20526 -20527 -20528 -20529 -20530 -20531 -20532 -20533 -20534 -20535 -20536 -20537 -20538 -20539 -20540 -20541 -20542 -20543 -20544 -20545 -20546 -20547 -20548 -20549 -20550 -20551 -20552 -20553 -20554 -20555 -20556 -20557 -20558 -20559 -20560 -20561 -20562 -20563 -20564 -20565 -20566 -20567 -20568 -20569 -20570 -20571 -20572 -20573 -20574 -20575 -20576 -20577 -20578 -20579 -20580 -20581 -20582 -20583 -20584 -20585 -20586 -20587 -20588 -20589 -20590 -20591 -20592 -20593 -20594 -20595 -20596 -20597 -20598 -20599 -20600 -20601 -20602 -20603 -20604 -20605 -20606 -20607 -20608 -20609 -20610 -20611 -20612 -20613 -20614 -20615 -20616 -20617 -20618 -20619 -20620 -20621 -20622 -20623 -20624 -20625 -20626 -20627 -20628 -20629 -20630 -20631 -20632 -20633 -20634 -20635 -20636 -20637 -20638 -20639 -20640 -20641 -20642 -20643 -20644 -20645 -20646 -20647 -20648 -20649 -20650 -20651 -20652 -20653 -20654 -20655 -20656 -20657 -20658 -20659 -20660 -20661 -20662 -20663 -20664 -20665 -20666 -20667 -20668 -20669 -20670 -20671 -20672 -20673 -20674 -20675 -20676 -20677 -20678 -20679 -20680 -20681 -20682 -20683 -20684 -20685 -20686 -20687 -20688 -20689 -20690 -20691 -20692 -20693 -20694 -20695 -20696 -20697 -20698 -20699 -20700 -20701 -20702 -20703 -20704 -20705 -20706 -20707 -20708 -20709 -20710 -20711 -20712 -20713 -20714 -20715 -20716 -20717 -20718 -20719 -20720 -20721 -20722 -20723 -20724 -20725 -20726 -20727 -20728 -20729 -20730 -20731 -20732 -20733 -20734 -20735 -20736 -20737 -20738 -20739 -20740 -20741 -20742 -20743 -20744 -20745 -20746 -20747 -20748 -20749 -20750 -20751 -20752 -20753 -20754 -20755 -20756 -20757 -20758 -20759 -20760 -20761 -20762 -20763 -20764 -20765 -20766 -20767 -20768 -20769 -20770 -20771 -20772 -20773 -20774 -20775 -20776 -20777 -20778 -20779 -20780 -20781 -20782 -20783 -20784 -20785 -20786 -20787 -20788 -20789 -20790 -20791 -20792 -20793 -20794 -20795 -20796 -20797 -20798 -20799 -20800 -20801 -20802 -20803 -20804 -20805 -20806 -20807 -20808 -20809 -20810 -20811 -20812 -20813 -20814 -20815 -20816 -20817 -20818 -20819 -20820 -20821 -20822 -20823 -20824 -20825 -20826 -20827 -20828 -20829 -20830 -20831 -20832 -20833 -20834 -20835 -20836 -20837 -20838 -20839 -20840 -20841 -20842 -20843 -20844 -20845 -20846 -20847 -20848 -20849 -20850 -20851 -20852 -20853 -20854 -20855 -20856 -20857 -20858 -20859 -20860 -20861 -20862 -20863 -20864 -20865 -20866 -20867 -20868 -20869 -20870 -20871 -20872 -20873 -20874 -20875 -20876 -20877 -20878 -20879 -20880 -20881 -20882 -20883 -20884 -20885 -20886 -20887 -20888 -20889 -20890 -20891 -20892 -20893 -20894 -20895 -20896 -20897 -20898 -20899 -20900 -20901 -20902 -20903 -20904 -20905 -20906 -20907 -20908 -20909 -20910 -20911 -20912 -20913 -20914 -20915 -20916 -20917 -20918 -20919 -20920 -20921 -20922 -20923 -20924 -20925 -20926 -20927 -20928 -20929 -20930 -20931 -20932 -20933 -20934 -20935 -20936 -20937 -20938 -20939 -20940 -20941 -20942 -20943 -20944 -20945 -20946 -20947 -20948 -20949 -20950 -20951 -20952 -20953 -20954 -20955 -20956 -20957 -20958 -20959 -20960 -20961 -20962 -20963 -20964 -20965 -20966 -20967 -20968 -20969 -20970 -20971 -20972 -20973 -20974 -20975 -20976 -20977 -20978 -20979 -20980 -20981 -20982 -20983 -20984 -20985 -20986 -20987 -20988 -20989 -20990 -20991 -20992 -20993 -20994 -20995 -20996 -20997 -20998 -20999 -21000 -21001 -21002 -21003 -21004 -21005 -21006 -21007 -21008 -21009 -21010 -21011 -21012 -21013 -21014 -21015 -21016 -21017 -21018 -21019 -21020 -21021 -21022 -21023 -21024 -21025 -21026 -21027 -21028 -21029 -21030 -21031 -21032 -21033 -21034 -21035 -21036 -21037 -21038 -21039 -21040 -21041 -21042 -21043 -21044 -21045 -21046 -21047 -21048 -21049 -21050 -21051 -21052 -21053 -21054 -21055 -21056 -21057 -21058 -21059 -21060 -21061 -21062 -21063 -21064 -21065 -21066 -21067 -21068 -21069 -21070 -21071 -21072 -21073 -21074 -21075 -21076 -21077 -21078 -21079 -21080 -21081 -21082 -21083 -21084 -21085 -21086 -21087 -21088 -21089 -21090 -21091 -21092 -21093 -21094 -21095 -21096 -21097 -21098 -21099 -21100 -21101 -21102 -21103 -21104 -21105 -21106 -21107 -21108 -21109 -21110 -21111 -21112 -21113 -21114 -21115 -21116 -21117 -21118 -21119 -21120 -21121 -21122 -21123 -21124 -21125 -21126 -21127 -21128 -21129 -21130 -21131 -21132 -21133 -21134 -21135 -21136 -21137 -21138 -21139 -21140 -21141 -21142 -21143 -21144 -21145 -21146 -21147 -21148 -21149 -21150 -21151 -21152 -21153 -21154 -21155 -21156 -21157 -21158 -21159 -21160 -21161 -21162 -21163 -21164 -21165 -21166 -21167 -21168 -21169 -21170 -21171 -21172 -21173 -21174 -21175 -21176 -21177 -21178 -21179 -21180 -21181 -21182 -21183 -21184 -21185 -21186 -21187 -21188 -21189 -21190 -21191 -21192 -21193 -21194 -21195 -21196 -21197 -21198 -21199 -21200 -21201 -21202 -21203 -21204 -21205 -21206 -21207 -21208 -21209 -21210 -21211 -21212 -21213 -21214 -21215 -21216 -21217 -21218 -21219 -21220 -21221 -21222 -21223 -21224 -21225 -21226 -21227 -21228 -21229 -21230 -21231 -21232 -21233 -21234 -21235 -21236 -21237 -21238 -21239 -21240 -21241 -21242 -21243 -21244 -21245 -21246 -21247 -21248 -21249 -21250 -21251 -21252 -21253 -21254 -21255 -21256 -21257 -21258 -21259 -21260 -21261 -21262 -21263 -21264 -21265 -21266 -21267 -21268 -21269 -21270 -21271 -21272 -21273 -21274 -21275 -21276 -21277 -21278 -21279 -21280 -21281 -21282 -21283 -21284 -21285 -21286 -21287 -21288 -21289 -21290 -21291 -21292 -21293 -21294 -21295 -21296 -21297 -21298 -21299 -21300 -21301 -21302 -21303 -21304 -21305 -21306 -21307 -21308 -21309 -21310 -21311 -21312 -21313 -21314 -21315 -21316 -21317 -21318 -21319 -21320 -21321 -21322 -21323 -21324 -21325 -21326 -21327 -21328 -21329 -21330 -21331 -21332 -21333 -21334 -21335 -21336 -21337 -21338 -21339 -21340 -21341 -21342 -21343 -21344 -21345 -21346 -21347 -21348 -21349 -21350 -21351 -21352 -21353 -21354 -21355 -21356 -21357 -21358 -21359 -21360 -21361 -21362 -21363 -21364 -21365 -21366 -21367 -21368 -21369 -21370 -21371 -21372 -21373 -21374 -21375 -21376 -21377 -21378 -21379 -21380 -21381 -21382 -21383 -21384 -21385 -21386 -21387 -21388 -21389 -21390 -21391 -21392 -21393 -21394 -21395 -21396 -21397 -21398 -21399 -21400 -21401 -21402 -21403 -21404 -21405 -21406 -21407 -21408 -21409 -21410 -21411 -21412 -21413 -21414 -21415 -21416 -21417 -21418 -21419 -21420 -21421 -21422 -21423 -21424 -21425 -21426 -21427 -21428 -21429 -21430 -21431 -21432 -21433 -21434 -21435 -21436 -21437 -21438 -21439 -21440 -21441 -21442 -21443 -21444 -21445 -21446 -21447 -21448 -21449 -21450 -21451 -21452 -21453 -21454 -21455 -21456 -21457 -21458 -21459 -21460 -21461 -21462 -21463 -21464 -21465 -21466 -21467 -21468 -21469 -21470 -21471 -21472 -21473 -21474 -21475 -21476 -21477 -21478 -21479 -21480 -21481 -21482 -21483 -21484 -21485 -21486 -21487 -21488 -21489 -21490 -21491 -21492 -21493 -21494 -21495 -21496 -21497 -21498 -21499 -21500 -21501 -21502 -21503 -21504 -21505 -21506 -21507 -21508 -21509 -21510 -21511 -21512 -21513 -21514 -21515 -21516 -21517 -21518 -21519 -21520 -21521 -21522 -21523 -21524 -21525 -21526 -21527 -21528 -21529 -21530 -21531 -21532 -21533 -21534 -21535 -21536 -21537 -21538 -21539 -21540 -21541 -21542 -21543 -21544 -21545 -21546 -21547 -21548 -21549 -21550 -21551 -21552 -21553 -21554 -21555 -21556 -21557 -21558 -21559 -21560 -21561 -21562 -21563 -21564 -21565 -21566 -21567 -21568 -21569 -21570 -21571 -21572 -21573 -21574 -21575 -21576 -21577 -21578 -21579 -21580 -21581 -21582 -21583 -21584 -21585 -21586 -21587 -21588 -21589 -21590 -21591 -21592 -21593 -21594 -21595 -21596 -21597 -21598 -21599 -21600 -21601 -21602 -21603 -21604 -21605 -21606 -21607 -21608 -21609 -21610 -21611 -21612 -21613 -21614 -21615 -21616 -21617 -21618 -21619 -21620 -21621 -21622 -21623 -21624 -21625 -21626 -21627 -21628 -21629 -21630 -21631 -21632 -21633 -21634 -21635 -21636 -21637 -21638 -21639 -21640 -21641 -21642 -21643 -21644 -21645 -21646 -21647 -21648 -21649 -21650 -21651 -21652 -21653 -21654 -21655 -21656 -21657 -21658 -21659 -21660 -21661 -21662 -21663 -21664 -21665 -21666 -21667 -21668 -21669 -21670 -21671 -21672 -21673 -21674 -21675 -21676 -21677 -21678 -21679 -21680 -21681 -21682 -21683 -21684 -21685 -21686 -21687 -21688 -21689 -21690 -21691 -21692 -21693 -21694 -21695 -21696 -21697 -21698 -21699 -21700 -21701 -21702 -21703 -21704 -21705 -21706 -21707 -21708 -21709 -21710 -21711 -21712 -21713 -21714 -21715 -21716 -21717 -21718 -21719 -21720 -21721 -21722 -21723 -21724 -21725 -21726 -21727 -21728 -21729 -21730 -21731 -21732 -21733 -21734 -21735 -21736 -21737 -21738 -21739 -21740 -21741 -21742 -21743 -21744 -21745 -21746 -21747 -21748 -21749 -21750 -21751 -21752 -21753 -21754 -21755 -21756 -21757 -21758 -21759 -21760 -21761 -21762 -21763 -21764 -21765 -21766 -21767 -21768 -21769 -21770 -21771 -21772 -21773 -21774 -21775 -21776 -21777 -21778 -21779 -21780 -21781 -21782 -21783 -21784 -21785 -21786 -21787 -21788 -21789 -21790 -21791 -21792 -21793 -21794 -21795 -21796 -21797 -21798 -21799 -21800 -21801 -21802 -21803 -21804 -21805 -21806 -21807 -21808 -21809 -21810 -21811 -21812 -21813 -21814 -21815 -21816 -21817 -21818 -21819 -21820 -21821 -21822 -21823 -21824 -21825 -21826 -21827 -21828 -21829 -21830 -21831 -21832 -21833 -21834 -21835 -21836 -21837 -21838 -21839 -21840 -21841 -21842 -21843 -21844 -21845 -21846 -21847 -21848 -21849 -21850 -21851 -21852 -21853 -21854 -21855 -21856 -21857 -21858 -21859 -21860 -21861 -21862 -21863 -21864 -21865 -21866 -21867 -21868 -21869 -21870 -21871 -21872 -21873 -21874 -21875 -21876 -21877 -21878 -21879 -21880 -21881 -21882 -21883 -21884 -21885 -21886 -21887 -21888 -21889 -21890 -21891 -21892 -21893 -21894 -21895 -21896 -21897 -21898 -21899 -21900 -21901 -21902 -21903 -21904 -21905 -21906 -21907 -21908 -21909 -21910 -21911 -21912 -21913 -21914 -21915 -21916 -21917 -21918 -21919 -21920 -21921 -21922 -21923 -21924 -21925 -21926 -21927 -21928 -21929 -21930 -21931 -21932 -21933 -21934 -21935 -21936 -21937 -21938 -21939 -21940 -21941 -21942 -21943 -21944 -21945 -21946 -21947 -21948 -21949 -21950 -21951 -21952 -21953 -21954 -21955 -21956 -21957 -21958 -21959 -21960 -21961 -21962 -21963 -21964 -21965 -21966 -21967 -21968 -21969 -21970 -21971 -21972 -21973 -21974 -21975 -21976 -21977 -21978 -21979 -21980 -21981 -21982 -21983 -21984 -21985 -21986 -21987 -21988 -21989 -21990 -21991 -21992 -21993 -21994 -21995 -21996 -21997 -21998 -21999 -22000 -22001 -22002 -22003 -22004 -22005 -22006 -22007 -22008 -22009 -22010 -22011 -22012 -22013 -22014 -22015 -22016 -22017 -22018 -22019 -22020 -22021 -22022 -22023 -22024 -22025 -22026 -22027 -22028 -22029 -22030 -22031 -22032 -22033 -22034 -22035 -22036 -22037 -22038 -22039 -22040 -22041 -22042 -22043 -22044 -22045 -22046 -22047 -22048 -22049 -22050 -22051 -22052 -22053 -22054 -22055 -22056 -22057 -22058 -22059 -22060 -22061 -22062 -22063 -22064 -22065 -22066 -22067 -22068 -22069 -22070 -22071 -22072 -22073 -22074 -22075 -22076 -22077 -22078 -22079 -22080 -22081 -22082 -22083 -22084 -22085 -22086 -22087 -22088 -22089 -22090 -22091 -22092 -22093 -22094 -22095 -22096 -22097 -22098 -22099 -22100 -22101 -22102 -22103 -22104 -22105 -22106 -22107 -22108 -22109 -22110 -22111 -22112 -22113 -22114 -22115 -22116 -22117 -22118 -22119 -22120 -22121 -22122 -22123 -22124 -22125 -22126 -22127 -22128 -22129 -22130 -22131 -22132 -22133 -22134 -22135 -22136 -22137 -22138 -22139 -22140 -22141 -22142 -22143 -22144 -22145 -22146 -22147 -22148 -22149 -22150 -22151 -22152 -22153 -22154 -22155 -22156 -22157 -22158 -22159 -22160 -22161 -22162 -22163 -22164 -22165 -22166 -22167 -22168 -22169 -22170 -22171 -22172 -22173 -22174 -22175 -22176 -22177 -22178 -22179 -22180 -22181 -22182 -22183 -22184 -22185 -22186 -22187 -22188 -22189 -22190 -22191 -22192 -22193 -22194 -22195 -22196 -22197 -22198 -22199 -22200 -22201 -22202 -22203 -22204 -22205 -22206 -22207 -22208 -22209 -22210 -22211 -22212 -22213 -22214 -22215 -22216 -22217 -22218 -22219 -22220 -22221 -22222 -22223 -22224 -22225 -22226 -22227 -22228 -22229 -22230 -22231 -22232 -22233 -22234 -22235 -22236 -22237 -22238 -22239 -22240 -22241 -22242 -22243 -22244 -22245 -22246 -22247 -22248 -22249 -22250 -22251 -22252 -22253 -22254 -22255 -22256 -22257 -22258 -22259 -22260 -22261 -22262 -22263 -22264 -22265 -22266 -22267 -22268 -22269 -22270 -22271 -22272 -22273 -22274 -22275 -22276 -22277 -22278 -22279 -22280 -22281 -22282 -22283 -22284 -22285 -22286 -22287 -22288 -22289 -22290 -22291 -22292 -22293 -22294 -22295 -22296 -22297 -22298 -22299 -22300 -22301 -22302 -22303 -22304 -22305 -22306 -22307 -22308 -22309 -22310 -22311 -22312 -22313 -22314 -22315 -22316 -22317 -22318 -22319 -22320 -22321 -22322 -22323 -22324 -22325 -22326 -22327 -22328 -22329 -22330 -22331 -22332 -22333 -22334 -22335 -22336 -22337 -22338 -22339 -22340 -22341 -22342 -22343 -22344 -22345 -22346 -22347 -22348 -22349 -22350 -22351 -22352 -22353 -22354 -22355 -22356 -22357 -22358 -22359 -22360 -22361 -22362 -22363 -22364 -22365 -22366 -22367 -22368 -22369 -22370 -22371 -22372 -22373 -22374 -22375 -22376 -22377 -22378 -22379 -22380 -22381 -22382 -22383 -22384 -22385 -22386 -22387 -22388 -22389 -22390 -22391 -22392 -22393 -22394 -22395 -22396 -22397 -22398 -22399 -22400 -22401 -22402 -22403 -22404 -22405 -22406 -22407 -22408 -22409 -22410 -22411 -22412 -22413 -22414 -22415 -22416 -22417 -22418 -22419 -22420 -22421 -22422 -22423 -22424 -22425 -22426 -22427 -22428 -22429 -22430 -22431 -22432 -22433 -22434 -22435 -22436 -22437 -22438 -22439 -22440 -22441 -22442 -22443 -22444 -22445 -22446 -22447 -22448 -22449 -22450 -22451 -22452 -22453 -22454 -22455 -22456 -22457 -22458 -22459 -22460 -22461 -22462 -22463 -22464 -22465 -22466 -22467 -22468 -22469 -22470 -22471 -22472 -22473 -22474 -22475 -22476 -22477 -22478 -22479 -22480 -22481 -22482 -22483 -22484 -22485 -22486 -22487 -22488 -22489 -22490 -22491 -22492 -22493 -22494 -22495 -22496 -22497 -22498 -22499 -22500 -22501 -22502 -22503 -22504 -22505 -22506 -22507 -22508 -22509 -22510 -22511 -22512 -22513 -22514 -22515 -22516 -22517 -22518 -22519 -22520 -22521 -22522 -22523 -22524 -22525 -22526 -22527 -22528 -22529 -22530 -22531 -22532 -22533 -22534 -22535 -22536 -22537 -22538 -22539 -22540 -22541 -22542 -22543 -22544 -22545 -22546 -22547 -22548 -22549 -22550 -22551 -22552 -22553 -22554 -22555 -22556 -22557 -22558 -22559 -22560 -22561 -22562 -22563 -22564 -22565 -22566 -22567 -22568 -22569 -22570 -22571 -22572 -22573 -22574 -22575 -22576 -22577 -22578 -22579 -22580 -22581 -22582 -22583 -22584 -22585 -22586 -22587 -22588 -22589 -22590 -22591 -22592 -22593 -22594 -22595 -22596 -22597 -22598 -22599 -22600 -22601 -22602 -22603 -22604 -22605 -22606 -22607 -22608 -22609 -22610 -22611 -22612 -22613 -22614 -22615 -22616 -22617 -22618 -22619 -22620 -22621 -22622 -22623 -22624 -22625 -22626 -22627 -22628 -22629 -22630 -22631 -22632 -22633 -22634 -22635 -22636 -22637 -22638 -22639 -22640 -22641 -22642 -22643 -22644 -22645 -22646 -22647 -22648 -22649 -22650 -22651 -22652 -22653 -22654 -22655 -22656 -22657 -22658 -22659 -22660 -22661 -22662 -22663 -22664 -22665 -22666 -22667 -22668 -22669 -22670 -22671 -22672 -22673 -22674 -22675 -22676 -22677 -22678 -22679 -22680 -22681 -22682 -22683 -22684 -22685 -22686 -22687 -22688 -22689 -22690 -22691 -22692 -22693 -22694 -22695 -22696 -22697 -22698 -22699 -22700 -22701 -22702 -22703 -22704 -22705 -22706 -22707 -22708 -22709 -22710 -22711 -22712 -22713 -22714 -22715 -22716 -22717 -22718 -22719 -22720 -22721 -22722 -22723 -22724 -22725 -22726 -22727 -22728 -22729 -22730 -22731 -22732 -22733 -22734 -22735 -22736 -22737 -22738 -22739 -22740 -22741 -22742 -22743 -22744 -22745 -22746 -22747 -22748 -22749 -22750 -22751 -22752 -22753 -22754 -22755 -22756 -22757 -22758 -22759 -22760 -22761 -22762 -22763 -22764 -22765 -22766 -22767 -22768 -22769 -22770 -22771 -22772 -22773 -22774 -22775 -22776 -22777 -22778 -22779 -22780 -22781 -22782 -22783 -22784 -22785 -22786 -22787 -22788 -22789 -22790 -22791 -22792 -22793 -22794 -22795 -22796 -22797 -22798 -22799 -22800 -22801 -22802 -22803 -22804 -22805 -22806 -22807 -22808 -22809 -22810 -22811 -22812 -22813 -22814 -22815 -22816 -22817 -22818 -22819 -22820 -22821 -22822 -22823 -22824 -22825 -22826 -22827 -22828 -22829 -22830 -22831 -22832 -22833 -22834 -22835 -22836 -22837 -22838 -22839 -22840 -22841 -22842 -22843 -22844 -22845 -22846 -22847 -22848 -22849 -22850 -22851 -22852 -22853 -22854 -22855 -22856 -22857 -22858 -22859 -22860 -22861 -22862 -22863 -22864 -22865 -22866 -22867 -22868 -22869 -22870 -22871 -22872 -22873 -22874 -22875 -22876 -22877 -22878 -22879 -22880 -22881 -22882 -22883 -22884 -22885 -22886 -22887 -22888 -22889 -22890 -22891 -22892 -22893 -22894 -22895 -22896 -22897 -22898 -22899 -22900 -22901 -22902 -22903 -22904 -22905 -22906 -22907 -22908 -22909 -22910 -22911 -22912 -22913 -22914 -22915 -22916 -22917 -22918 -22919 -22920 -22921 -22922 -22923 -22924 -22925 -22926 -22927 -22928 -22929 -22930 -22931 -22932 -22933 -22934 -22935 -22936 -22937 -22938 -22939 -22940 -22941 -22942 -22943 -22944 -22945 -22946 -22947 -22948 -22949 -22950 -22951 -22952 -22953 -22954 -22955 -22956 -22957 -22958 -22959 -22960 -22961 -22962 -22963 -22964 -22965 -22966 -22967 -22968 -22969 -22970 -22971 -22972 -22973 -22974 -22975 -22976 -22977 -22978 -22979 -22980 -22981 -22982 -22983 -22984 -22985 -22986 -22987 -22988 -22989 -22990 -22991 -22992 -22993 -22994 -22995 -22996 -22997 -22998 -22999 -23000 -23001 -23002 -23003 -23004 -23005 -23006 -23007 -23008 -23009 -23010 -23011 -23012 -23013 -23014 -23015 -23016 -23017 -23018 -23019 -23020 -23021 -23022 -23023 -23024 -23025 -23026 -23027 -23028 -23029 -23030 -23031 -23032 -23033 -23034 -23035 -23036 -23037 -23038 -23039 -23040 -23041 -23042 -23043 -23044 -23045 -23046 -23047 -23048 -23049 -23050 -23051 -23052 -23053 -23054 -23055 -23056 -23057 -23058 -23059 -23060 -23061 -23062 -23063 -23064 -23065 -23066 -23067 -23068 -23069 -23070 -23071 -23072 -23073 -23074 -23075 -23076 -23077 -23078 -23079 -23080 -23081 -23082 -23083 -23084 -23085 -23086 -23087 -23088 -23089 -23090 -23091 -23092 -23093 -23094 -23095 -23096 -23097 -23098 -23099 -23100 -23101 -23102 -23103 -23104 -23105 -23106 -23107 -23108 -23109 -23110 -23111 -23112 -23113 -23114 -23115 -23116 -23117 -23118 -23119 -23120 -23121 -23122 -23123 -23124 -23125 -23126 -23127 -23128 -23129 -23130 -23131 -23132 -23133 -23134 -23135 -23136 -23137 -23138 -23139 -23140 -23141 -23142 -23143 -23144 -23145 -23146 -23147 -23148 -23149 -23150 -23151 -23152 -23153 -23154 -23155 -23156 -23157 -23158 -23159 -23160 -23161 -23162 -23163 -23164 -23165 -23166 -23167 -23168 -23169 -23170 -23171 -23172 -23173 -23174 -23175 -23176 -23177 -23178 -23179 -23180 -23181 -23182 -23183 -23184 -23185 -23186 -23187 -23188 -23189 -23190 -23191 -23192 -23193 -23194 -23195 -23196 -23197 -23198 -23199 -23200 -23201 -23202 -23203 -23204 -23205 -23206 -23207 -23208 -23209 -23210 -23211 -23212 -23213 -23214 -23215 -23216 -23217 -23218 -23219 -23220 -23221 -23222 -23223 -23224 -23225 -23226 -23227 -23228 -23229 -23230 -23231 -23232 -23233 -23234 -23235 -23236 -23237 -23238 -23239 -23240 -23241 -23242 -23243 -23244 -23245 -23246 -23247 -23248 -23249 -23250 -23251 -23252 -23253 -23254 -23255 -23256 -23257 -23258 -23259 -23260 -23261 -23262 -23263 -23264 -23265 -23266 -23267 -23268 -23269 -23270 -23271 -23272 -23273 -23274 -23275 -23276 -23277 -23278 -23279 -23280 -23281 -23282 -23283 -23284 -23285 -23286 -23287 -23288 -23289 -23290 -23291 -23292 -23293 -23294 -23295 -23296 -23297 -23298 -23299 -23300 -23301 -23302 -23303 -23304 -23305 -23306 -23307 -23308 -23309 -23310 -23311 -23312 -23313 -23314 -23315 -23316 -23317 -23318 -23319 -23320 -23321 -23322 -23323 -23324 -23325 -23326 -23327 -23328 -23329 -23330 -23331 -23332 -23333 -23334 -23335 -23336 -23337 -23338 -23339 -23340 -23341 -23342 -23343 -23344 -23345 -23346 -23347 -23348 -23349 -23350 -23351 -23352 -23353 -23354 -23355 -23356 -23357 -23358 -23359 -23360 -23361 -23362 -23363 -23364 -23365 -23366 -23367 -23368 -23369 -23370 -23371 -23372 -23373 -23374 -23375 -23376 -23377 -23378 -23379 -23380 -23381 -23382 -23383 -23384 -23385 -23386 -23387 -23388 -23389 -23390 -23391 -23392 -23393 -23394 -23395 -23396 -23397 -23398 -23399 -23400 -23401 -23402 -23403 -23404 -23405 -23406 -23407 -23408 -23409 -23410 -23411 -23412 -23413 -23414 -23415 -23416 -23417 -23418 -23419 -23420 -23421 -23422 -23423 -23424 -23425 -23426 -23427 -23428 -23429 -23430 -23431 -23432 -23433 -23434 -23435 -23436 -23437 -23438 -23439 -23440 -23441 -23442 -23443 -23444 -23445 -23446 -23447 -23448 -23449 -23450 -23451 -23452 -23453 -23454 -23455 -23456 -23457 -23458 -23459 -23460 -23461 -23462 -23463 -23464 -23465 -23466 -23467 -23468 -23469 -23470 -23471 -23472 -23473 -23474 -23475 -23476 -23477 -23478 -23479 -23480 -23481 -23482 -23483 -23484 -23485 -23486 -23487 -23488 -23489 -23490 -23491 -23492 -23493 -23494 -23495 -23496 -23497 -23498 -23499 -23500 -23501 -23502 -23503 -23504 -23505 -23506 -23507 -23508 -23509 -23510 -23511 -23512 -23513 -23514 -23515 -23516 -23517 -23518 -23519 -23520 -23521 -23522 -23523 -23524 -23525 -23526 -23527 -23528 -23529 -23530 -23531 -23532 -23533 -23534 -23535 -23536 -23537 -23538 -23539 -23540 -23541 -23542 -23543 -23544 -23545 -23546 -23547 -23548 -23549 -23550 -23551 -23552 -23553 -23554 -23555 -23556 -23557 -23558 -23559 -23560 -23561 -23562 -23563 -23564 -23565 -23566 -23567 -23568 -23569 -23570 -23571 -23572 -23573 -23574 -23575 -23576 -23577 -23578 -23579 -23580 -23581 -23582 -23583 -23584 -23585 -23586 -23587 -23588 -23589 -23590 -23591 -23592 -23593 -23594 -23595 -23596 -23597 -23598 -23599 -23600 -23601 -23602 -23603 -23604 -23605 -23606 -23607 -23608 -23609 -23610 -23611 -23612 -23613 -23614 -23615 -23616 -23617 -23618 -23619 -23620 -23621 -23622 -23623 -23624 -23625 -23626 -23627 -23628 -23629 -23630 -23631 -23632 -23633 -23634 -23635 -23636 -23637 -23638 -23639 -23640 -23641 -23642 -23643 -23644 -23645 -23646 -23647 -23648 -23649 -23650 -23651 -23652 -23653 -23654 -23655 -23656 -23657 -23658 -23659 -23660 -23661 -23662 -23663 -23664 -23665 -23666 -23667 -23668 -23669 -23670 -23671 -23672 -23673 -23674 -23675 -23676 -23677 -23678 -23679 -23680 -23681 -23682 -23683 -23684 -23685 -23686 -23687 -23688 -23689 -23690 -23691 -23692 -23693 -23694 -23695 -23696 -23697 -23698 -23699 -23700 -23701 -23702 -23703 -23704 -23705 -23706 -23707 -23708 -23709 -23710 -23711 -23712 -23713 -23714 -23715 -23716 -23717 -23718 -23719 -23720 -23721 -23722 -23723 -23724 -23725 -23726 -23727 -23728 -23729 -23730 -23731 -23732 -23733 -23734 -23735 -23736 -23737 -23738 -23739 -23740 -23741 -23742 -23743 -23744 -23745 -23746 -23747 -23748 -23749 -23750 -23751 -23752 -23753 -23754 -23755 -23756 -23757 -23758 -23759 -23760 -23761 -23762 -23763 -23764 -23765 -23766 -23767 -23768 -23769 -23770 -23771 -23772 -23773 -23774 -23775 -23776 -23777 -23778 -23779 -23780 -23781 -23782 -23783 -23784 -23785 -23786 -23787 -23788 -23789 -23790 -23791 -23792 -23793 -23794 -23795 -23796 -23797 -23798 -23799 -23800 -23801 -23802 -23803 -23804 -23805 -23806 -23807 -23808 -23809 -23810 -23811 -23812 -23813 -23814 -23815 -23816 -23817 -23818 -23819 -23820 -23821 -23822 -23823 -23824 -23825 -23826 -23827 -23828 -23829 -23830 -23831 -23832 -23833 -23834 -23835 -23836 -23837 -23838 -23839 -23840 -23841 -23842 -23843 -23844 -23845 -23846 -23847 -23848 -23849 -23850 -23851 -23852 -23853 -23854 -23855 -23856 -23857 -23858 -23859 -23860 -23861 -23862 -23863 -23864 -23865 -23866 -23867 -23868 -23869 -23870 -23871 -23872 -23873 -23874 -23875 -23876 -23877 -23878 -23879 -23880 -23881 -23882 -23883 -23884 -23885 -23886 -23887 -23888 -23889 -23890 -23891 -23892 -23893 -23894 -23895 -23896 -23897 -23898 -23899 -23900 -23901 -23902 -23903 -23904 -23905 -23906 -23907 -23908 -23909 -23910 -23911 -23912 -23913 -23914 -23915 -23916 -23917 -23918 -23919 -23920 -23921 -23922 -23923 -23924 -23925 -23926 -23927 -23928 -23929 -23930 -23931 -23932 -23933 -23934 -23935 -23936 -23937 -23938 -23939 -23940 -23941 -23942 -23943 -23944 -23945 -23946 -23947 -23948 -23949 -23950 -23951 -23952 -23953 -23954 -23955 -23956 -23957 -23958 -23959 -23960 -23961 -23962 -23963 -23964 -23965 -23966 -23967 -23968 -23969 -23970 -23971 -23972 -23973 -23974 -23975 -23976 -23977 -23978 -23979 -23980 -23981 -23982 -23983 -23984 -23985 -23986 -23987 -23988 -23989 -23990 -23991 -23992 -23993 -23994 -23995 -23996 -23997 -23998 -23999 -24000 -24001 -24002 -24003 -24004 -24005 -24006 -24007 -24008 -24009 -24010 -24011 -24012 -24013 -24014 -24015 -24016 -24017 -24018 -24019 -24020 -24021 -24022 -24023 -24024 -24025 -24026 -24027 -24028 -24029 -24030 -24031 -24032 -24033 -24034 -24035 -24036 -24037 -24038 -24039 -24040 -24041 -24042 -24043 -24044 -24045 -24046 -24047 -24048 -24049 -24050 -24051 -24052 -24053 -24054 -24055 -24056 -24057 -24058 -24059 -24060 -24061 -24062 -24063 -24064 -24065 -24066 -24067 -24068 -24069 -24070 -24071 -24072 -24073 -24074 -24075 -24076 -24077 -24078 -24079 -24080 -24081 -24082 -24083 -24084 -24085 -24086 -24087 -24088 -24089 -24090 -24091 -24092 -24093 -24094 -24095 -24096 -24097 -24098 -24099 -24100 -24101 -24102 -24103 -24104 -24105 -24106 -24107 -24108 -24109 -24110 -24111 -24112 -24113 -24114 -24115 -24116 -24117 -24118 -24119 -24120 -24121 -24122 -24123 -24124 -24125 -24126 -24127 -24128 -24129 -24130 -24131 -24132 -24133 -24134 -24135 -24136 -24137 -24138 -24139 -24140 -24141 -24142 -24143 -24144 -24145 -24146 -24147 -24148 -24149 -24150 -24151 -24152 -24153 -24154 -24155 -24156 -24157 -24158 -24159 -24160 -24161 -24162 -24163 -24164 -24165 -24166 -24167 -24168 -24169 -24170 -24171 -24172 -24173 -24174 -24175 -24176 -24177 -24178 -24179 -24180 -24181 -24182 -24183 -24184 -24185 -24186 -24187 -24188 -24189 -24190 -24191 -24192 -24193 -24194 -24195 -24196 -24197 -24198 -24199 -24200 -24201 -24202 -24203 -24204 -24205 -24206 -24207 -24208 -24209 -24210 -24211 -24212 -24213 -24214 -24215 -24216 -24217 -24218 -24219 -24220 -24221 -24222 -24223 -24224 -24225 -24226 -24227 -24228 -24229 -24230 -24231 -24232 -24233 -24234 -24235 -24236 -24237 -24238 -24239 -24240 -24241 -24242 -24243 -24244 -24245 -24246 -24247 -24248 -24249 -24250 -24251 -24252 -24253 -24254 -24255 -24256 -24257 -24258 -24259 -24260 -24261 -24262 -24263 -24264 -24265 -24266 -24267 -24268 -24269 -24270 -24271 -24272 -24273 -24274 -24275 -24276 -24277 -24278 -24279 -24280 -24281 -24282 -24283 -24284 -24285 -24286 -24287 -24288 -24289 -24290 -24291 -24292 -24293 -24294 -24295 -24296 -24297 -24298 -24299 -24300 -24301 -24302 -24303 -24304 -24305 -24306 -24307 -24308 -24309 -24310 -24311 -24312 -24313 -24314 -24315 -24316 -24317 -24318 -24319 -24320 -24321 -24322 -24323 -24324 -24325 -24326 -24327 -24328 -24329 -24330 -24331 -24332 -24333 -24334 -24335 -24336 -24337 -24338 -24339 -24340 -24341 -24342 -24343 -24344 -24345 -24346 -24347 -24348 -24349 -24350 -24351 -24352 -24353 -24354 -24355 -24356 -24357 -24358 -24359 -24360 -24361 -24362 -24363 -24364 -24365 -24366 -24367 -24368 -24369 -24370 -24371 -24372 -24373 -24374 -24375 -24376 -24377 -24378 -24379 -24380 -24381 -24382 -24383 -24384 -24385 -24386 -24387 -24388 -24389 -24390 -24391 -24392 -24393 -24394 -24395 -24396 -24397 -24398 -24399 -24400 -24401 -24402 -24403 -24404 -24405 -24406 -24407 -24408 -24409 -24410 -24411 -24412 -24413 -24414 -24415 -24416 -24417 -24418 -24419 -24420 -24421 -24422 -24423 -24424 -24425 -24426 -24427 -24428 -24429 -24430 -24431 -24432 -24433 -24434 -24435 -24436 -24437 -24438 -24439 -24440 -24441 -24442 -24443 -24444 -24445 -24446 -24447 -24448 -24449 -24450 -24451 -24452 -24453 -24454 -24455 -24456 -24457 -24458 -24459 -24460 -24461 -24462 -24463 -24464 -24465 -24466 -24467 -24468 -24469 -24470 -24471 -24472 -24473 -24474 -24475 -24476 -24477 -24478 -24479 -24480 -24481 -24482 -24483 -24484 -24485 -24486 -24487 -24488 -24489 -24490 -24491 -24492 -24493 -24494 -24495 -24496 -24497 -24498 -24499 -24500 -24501 -24502 -24503 -24504 -24505 -24506 -24507 -24508 -24509 -24510 -24511 -24512 -24513 -24514 -24515 -24516 -24517 -24518 -24519 -24520 -24521 -24522 -24523 -24524 -24525 -24526 -24527 -24528 -24529 -24530 -24531 -24532 -24533 -24534 -24535 -24536 -24537 -24538 -24539 -24540 -24541 -24542 -24543 -24544 -24545 -24546 -24547 -24548 -24549 -24550 -24551 -24552 -24553 -24554 -24555 -24556 -24557 -24558 -24559 -24560 -24561 -24562 -24563 -24564 -24565 -24566 -24567 -24568 -24569 -24570 -24571 -24572 -24573 -24574 -24575 -24576 -24577 -24578 -24579 -24580 -24581 -24582 -24583 -24584 -24585 -24586 -24587 -24588 -24589 -24590 -24591 -24592 -24593 -24594 -24595 -24596 -24597 -24598 -24599 -24600 -24601 -24602 -24603 -24604 -24605 -24606 -24607 -24608 -24609 -24610 -24611 -24612 -24613 -24614 -24615 -24616 -24617 -24618 -24619 -24620 -24621 -24622 -24623 -24624 -24625 -24626 -24627 -24628 -24629 -24630 -24631 -24632 -24633 -24634 -24635 -24636 -24637 -24638 -24639 -24640 -24641 -24642 -24643 -24644 -24645 -24646 -24647 -24648 -24649 -24650 -24651 -24652 -24653 -24654 -24655 -24656 -24657 -24658 -24659 -24660 -24661 -24662 -24663 -24664 -24665 -24666 -24667 -24668 -24669 -24670 -24671 -24672 -24673 -24674 -24675 -24676 -24677 -24678 -24679 -24680 -24681 -24682 -24683 -24684 -24685 -24686 -24687 -24688 -24689 -24690 -24691 -24692 -24693 -24694 -24695 -24696 -24697 -24698 -24699 -24700 -24701 -24702 -24703 -24704 -24705 -24706 -24707 -24708 -24709 -24710 -24711 -24712 -24713 -24714 -24715 -24716 -24717 -24718 -24719 -24720 -24721 -24722 -24723 -24724 -24725 -24726 -24727 -24728 -24729 -24730 -24731 -24732 -24733 -24734 -24735 -24736 -24737 -24738 -24739 -24740 -24741 -24742 -24743 -24744 -24745 -24746 -24747 -24748 -24749 -24750 -24751 -24752 -24753 -24754 -24755 -24756 -24757 -24758 -24759 -24760 -24761 -24762 -24763 -24764 -24765 -24766 -24767 -24768 -24769 -24770 -24771 -24772 -24773 -24774 -24775 -24776 -24777 -24778 -24779 -24780 -24781 -24782 -24783 -24784 -24785 -24786 -24787 -24788 -24789 -24790 -24791 -24792 -24793 -24794 -24795 -24796 -24797 -24798 -24799 -24800 -24801 -24802 -24803 -24804 -24805 -24806 -24807 -24808 -24809 -24810 -24811 -24812 -24813 -24814 -24815 -24816 -24817 -24818 -24819 -24820 -24821 -24822 -24823 -24824 -24825 -24826 -24827 -24828 -24829 -24830 -24831 -24832 -24833 -24834 -24835 -24836 -24837 -24838 -24839 -24840 -24841 -24842 -24843 -24844 -24845 -24846 -24847 -24848 -24849 -24850 -24851 -24852 -24853 -24854 -24855 -24856 -24857 -24858 -24859 -24860 -24861 -24862 -24863 -24864 -24865 -24866 -24867 -24868 -24869 -24870 -24871 -24872 -24873 -24874 -24875 -24876 -24877 -24878 -24879 -24880 -24881 -24882 -24883 -24884 -24885 -24886 -24887 -24888 -24889 -24890 -24891 -24892 -24893 -24894 -24895 -24896 -24897 -24898 -24899 -24900 -24901 -24902 -24903 -24904 -24905 -24906 -24907 -24908 -24909 -24910 -24911 -24912 -24913 -24914 -24915 -24916 -24917 -24918 -24919 -24920 -24921 -24922 -24923 -24924 -24925 -24926 -24927 -24928 -24929 -24930 -24931 -24932 -24933 -24934 -24935 -24936 -24937 -24938 -24939 -24940 -24941 -24942 -24943 -24944 -24945 -24946 -24947 -24948 -24949 -24950 -24951 -24952 -24953 -24954 -24955 -24956 -24957 -24958 -24959 -24960 -24961 -24962 -24963 -24964 -24965 -24966 -24967 -24968 -24969 -24970 -24971 -24972 -24973 -24974 -24975 -24976 -24977 -24978 -24979 -24980 -24981 -24982 -24983 -24984 -24985 -24986 -24987 -24988 -24989 -24990 -24991 -24992 -24993 -24994 -24995 -24996 -24997 -24998 -24999 -25000 -25001 -25002 -25003 -25004 -25005 -25006 -25007 -25008 -25009 -25010 -25011 -25012 -25013 -25014 -25015 -25016 -25017 -25018 -25019 -25020 -25021 -25022 -25023 -25024 -25025 -25026 -25027 -25028 -25029 -25030 -25031 -25032 -25033 -25034 -25035 -25036 -25037 -25038 -25039 -25040 -25041 -25042 -25043 -25044 -25045 -25046 -25047 -25048 -25049 -25050 -25051 -25052 -25053 -25054 -25055 -25056 -25057 -25058 -25059 -25060 -25061 -25062 -25063 -25064 -25065 -25066 -25067 -25068 -25069 -25070 -25071 -25072 -25073 -25074 -25075 -25076 -25077 -25078 -25079 -25080 -25081 -25082 -25083 -25084 -25085 -25086 -25087 -25088 -25089 -25090 -25091 -25092 -25093 -25094 -25095 -25096 -25097 -25098 -25099 -25100 -25101 -25102 -25103 -25104 -25105 -25106 -25107 -25108 -25109 -25110 -25111 -25112 -25113 -25114 -25115 -25116 -25117 -25118 -25119 -25120 -25121 -25122 -25123 -25124 -25125 -25126 -25127 -25128 -25129 -25130 -25131 -25132 -25133 -25134 -25135 -25136 -25137 -25138 -25139 -25140 -25141 -25142 -25143 -25144 -25145 -25146 -25147 -25148 -25149 -25150 -25151 -25152 -25153 -25154 -25155 -25156 -25157 -25158 -25159 -25160 -25161 -25162 -25163 -25164 -25165 -25166 -25167 -25168 -25169 -25170 -25171 -25172 -25173 -25174 -25175 -25176 -25177 -25178 -25179 -25180 -25181 -25182 -25183 -25184 -25185 -25186 -25187 -25188 -25189 -25190 -25191 -25192 -25193 -25194 -25195 -25196 -25197 -25198 -25199 -25200 -25201 -25202 -25203 -25204 -25205 -25206 -25207 -25208 -25209 -25210 -25211 -25212 -25213 -25214 -25215 -25216 -25217 -25218 -25219 -25220 -25221 -25222 -25223 -25224 -25225 -25226 -25227 -25228 -25229 -25230 -25231 -25232 -25233 -25234 -25235 -25236 -25237 -25238 -25239 -25240 -25241 -25242 -25243 -25244 -25245 -25246 -25247 -25248 -25249 -25250 -25251 -25252 -25253 -25254 -25255 -25256 -25257 -25258 -25259 -25260 -25261 -25262 -25263 -25264 -25265 -25266 -25267 -25268 -25269 -25270 -25271 -25272 -25273 -25274 -25275 -25276 -25277 -25278 -25279 -25280 -25281 -25282 -25283 -25284 -25285 -25286 -25287 -25288 -25289 -25290 -25291 -25292 -25293 -25294 -25295 -25296 -25297 -25298 -25299 -25300 -25301 -25302 -25303 -25304 -25305 -25306 -25307 -25308 -25309 -25310 -25311 -25312 -25313 -25314 -25315 -25316 -25317 -25318 -25319 -25320 -25321 -25322 -25323 -25324 -25325 -25326 -25327 -25328 -25329 -25330 -25331 -25332 -25333 -25334 -25335 -25336 -25337 -25338 -25339 -25340 -25341 -25342 -25343 -25344 -25345 -25346 -25347 -25348 -25349 -25350 -25351 -25352 -25353 -25354 -25355 -25356 -25357 -25358 -25359 -25360 -25361 -25362 -25363 -25364 -25365 -25366 -25367 -25368 -25369 -25370 -25371 -25372 -25373 -25374 -25375 -25376 -25377 -25378 -25379 -25380 -25381 -25382 -25383 -25384 -25385 -25386 -25387 -25388 -25389 -25390 -25391 -25392 -25393 -25394 -25395 -25396 -25397 -25398 -25399 -25400 -25401 -25402 -25403 -25404 -25405 -25406 -25407 -25408 -25409 -25410 -25411 -25412 -25413 -25414 -25415 -25416 -25417 -25418 -25419 -25420 -25421 -25422 -25423 -25424 -25425 -25426 -25427 -25428 -25429 -25430 -25431 -25432 -25433 -25434 -25435 -25436 -25437 -25438 -25439 -25440 -25441 -25442 -25443 -25444 -25445 -25446 -25447 -25448 -25449 -25450 -25451 -25452 -25453 -25454 -25455 -25456 -25457 -25458 -25459 -25460 -25461 -25462 -25463 -25464 -25465 -25466 -25467 -25468 -25469 -25470 -25471 -25472 -25473 -25474 -25475 -25476 -25477 -25478 -25479 -25480 -25481 -25482 -25483 -25484 -25485 -25486 -25487 -25488 -25489 -25490 -25491 -25492 -25493 -25494 -25495 -25496 -25497 -25498 -25499 -25500 -25501 -25502 -25503 -25504 -25505 -25506 -25507 -25508 -25509 -25510 -25511 -25512 -25513 -25514 -25515 -25516 -25517 -25518 -25519 -25520 -25521 -25522 -25523 -25524 -25525 -25526 -25527 -25528 -25529 -25530 -25531 -25532 -25533 -25534 -25535 -25536 -25537 -25538 -25539 -25540 -25541 -25542 -25543 -25544 -25545 -25546 -25547 -25548 -25549 -25550 -25551 -25552 -25553 -25554 -25555 -25556 -25557 -25558 -25559 -25560 -25561 -25562 -25563 -25564 -25565 -25566 -25567 -25568 -25569 -25570 -25571 -25572 -25573 -25574 -25575 -25576 -25577 -25578 -25579 -25580 -25581 -25582 -25583 -25584 -25585 -25586 -25587 -25588 -25589 -25590 -25591 -25592 -25593 -25594 -25595 -25596 -25597 -25598 -25599 -25600 -25601 -25602 -25603 -25604 -25605 -25606 -25607 -25608 -25609 -25610 -25611 -25612 -25613 -25614 -25615 -25616 -25617 -25618 -25619 -25620 -25621 -25622 -25623 -25624 -25625 -25626 -25627 -25628 -25629 -25630 -25631 -25632 -25633 -25634 -25635 -25636 -25637 -25638 -25639 -25640 -25641 -25642 -25643 -25644 -25645 -25646 -25647 -25648 -25649 -25650 -25651 -25652 -25653 -25654 -25655 -25656 -25657 -25658 -25659 -25660 -25661 -25662 -25663 -25664 -25665 -25666 -25667 -25668 -25669 -25670 -25671 -25672 -25673 -25674 -25675 -25676 -25677 -25678 -25679 -25680 -25681 -25682 -25683 -25684 -25685 -25686 -25687 -25688 -25689 -25690 -25691 -25692 -25693 -25694 -25695 -25696 -25697 -25698 -25699 -25700 -25701 -25702 -25703 -25704 -25705 -25706 -25707 -25708 -25709 -25710 -25711 -25712 -25713 -25714 -25715 -25716 -25717 -25718 -25719 -25720 -25721 -25722 -25723 -25724 -25725 -25726 -25727 -25728 -25729 -25730 -25731 -25732 -25733 -25734 -25735 -25736 -25737 -25738 -25739 -25740 -25741 -25742 -25743 -25744 -25745 -25746 -25747 -25748 -25749 -25750 -25751 -25752 -25753 -25754 -25755 -25756 -25757 -25758 -25759 -25760 -25761 -25762 -25763 -25764 -25765 -25766 -25767 -25768 -25769 -25770 -25771 -25772 -25773 -25774 -25775 -25776 -25777 -25778 -25779 -25780 -25781 -25782 -25783 -25784 -25785 -25786 -25787 -25788 -25789 -25790 -25791 -25792 -25793 -25794 -25795 -25796 -25797 -25798 -25799 -25800 -25801 -25802 -25803 -25804 -25805 -25806 -25807 -25808 -25809 -25810 -25811 -25812 -25813 -25814 -25815 -25816 -25817 -25818 -25819 -25820 -25821 -25822 -25823 -25824 -25825 -25826 -25827 -25828 -25829 -25830 -25831 -25832 -25833 -25834 -25835 -25836 -25837 -25838 -25839 -25840 -25841 -25842 -25843 -25844 -25845 -25846 -25847 -25848 -25849 -25850 -25851 -25852 -25853 -25854 -25855 -25856 -25857 -25858 -25859 -25860 -25861 -25862 -25863 -25864 -25865 -25866 -25867 -25868 -25869 -25870 -25871 -25872 -25873 -25874 -25875 -25876 -25877 -25878 -25879 -25880 -25881 -25882 -25883 -25884 -25885 -25886 -25887 -25888 -25889 -25890 -25891 -25892 -25893 -25894 -25895 -25896 -25897 -25898 -25899 -25900 -25901 -25902 -25903 -25904 -25905 -25906 -25907 -25908 -25909 -25910 -25911 -25912 -25913 -25914 -25915 -25916 -25917 -25918 -25919 -25920 -25921 -25922 -25923 -25924 -25925 -25926 -25927 -25928 -25929 -25930 -25931 -25932 -25933 -25934 -25935 -25936 -25937 -25938 -25939 -25940 -25941 -25942 -25943 -25944 -25945 -25946 -25947 -25948 -25949 -25950 -25951 -25952 -25953 -25954 -25955 -25956 -25957 -25958 -25959 -25960 -25961 -25962 -25963 -25964 -25965 -25966 -25967 -25968 -25969 -25970 -25971 -25972 -25973 -25974 -25975 -25976 -25977 -25978 -25979 -25980 -25981 -25982 -25983 -25984 -25985 -25986 -25987 -25988 -25989 -25990 -25991 -25992 -25993 -25994 -25995 -25996 -25997 -25998 -25999 -26000 -26001 -26002 -26003 -26004 -26005 -26006 -26007 -26008 -26009 -26010 -26011 -26012 -26013 -26014 -26015 -26016 -26017 -26018 -26019 -26020 -26021 -26022 -26023 -26024 -26025 -26026 -26027 -26028 -26029 -26030 -26031 -26032 -26033 -26034 -26035 -26036 -26037 -26038 -26039 -26040 -26041 -26042 -26043 -26044 -26045 -26046 -26047 -26048 -26049 -26050 -26051 -26052 -26053 -26054 -26055 -26056 -26057 -26058 -26059 -26060 -26061 -26062 -26063 -26064 -26065 -26066 -26067 -26068 -26069 -26070 -26071 -26072 -26073 -26074 -26075 -26076 -26077 -26078 -26079 -26080 -26081 -26082 -26083 -26084 -26085 -26086 -26087 -26088 -26089 -26090 -26091 -26092 -26093 -26094 -26095 -26096 -26097 -26098 -26099 -26100 -26101 -26102 -26103 -26104 -26105 -26106 -26107 -26108 -26109 -26110 -26111 -26112 -26113 -26114 -26115 -26116 -26117 -26118 -26119 -26120 -26121 -26122 -26123 -26124 -26125 -26126 -26127 -26128 -26129 -26130 -26131 -26132 -26133 -26134 -26135 -26136 -26137 -26138 -26139 -26140 -26141 -26142 -26143 -26144 -26145 -26146 -26147 -26148 -26149 -26150 -26151 -26152 -26153 -26154 -26155 -26156 -26157 -26158 -26159 -26160 -26161 -26162 -26163 -26164 -26165 -26166 -26167 -26168 -26169 -26170 -26171 -26172 -26173 -26174 -26175 -26176 -26177 -26178 -26179 -26180 -26181 -26182 -26183 -26184 -26185 -26186 -26187 -26188 -26189 -26190 -26191 -26192 -26193 -26194 -26195 -26196 -26197 -26198 -26199 -26200 -26201 -26202 -26203 -26204 -26205 -26206 -26207 -26208 -26209 -26210 -26211 -26212 -26213 -26214 -26215 -26216 -26217 -26218 -26219 -26220 -26221 -26222 -26223 -26224 -26225 -26226 -26227 -26228 -26229 -26230 -26231 -26232 -26233 -26234 -26235 -26236 -26237 -26238 -26239 -26240 -26241 -26242 -26243 -26244 -26245 -26246 -26247 -26248 -26249 -26250 -26251 -26252 -26253 -26254 -26255 -26256 -26257 -26258 -26259 -26260 -26261 -26262 -26263 -26264 -26265 -26266 -26267 -26268 -26269 -26270 -26271 -26272 -26273 -26274 -26275 -26276 -26277 -26278 -26279 -26280 -26281 -26282 -26283 -26284 -26285 -26286 -26287 -26288 -26289 -26290 -26291 -26292 -26293 -26294 -26295 -26296 -26297 -26298 -26299 -26300 -26301 -26302 -26303 -26304 -26305 -26306 -26307 -26308 -26309 -26310 -26311 -26312 -26313 -26314 -26315 -26316 -26317 -26318 -26319 -26320 -26321 -26322 -26323 -26324 -26325 -26326 -26327 -26328 -26329 -26330 -26331 -26332 -26333 -26334 -26335 -26336 -26337 -26338 -26339 -26340 -26341 -26342 -26343 -26344 -26345 -26346 -26347 -26348 -26349 -26350 -26351 -26352 -26353 -26354 -26355 -26356 -26357 -26358 -26359 -26360 -26361 -26362 -26363 -26364 -26365 -26366 -26367 -26368 -26369 -26370 -26371 -26372 -26373 -26374 -26375 -26376 -26377 -26378 -26379 -26380 -26381 -26382 -26383 -26384 -26385 -26386 -26387 -26388 -26389 -26390 -26391 -26392 -26393 -26394 -26395 -26396 -26397 -26398 -26399 -26400 -26401 -26402 -26403 -26404 -26405 -26406 -26407 -26408 -26409 -26410 -26411 -26412 -26413 -26414 -26415 -26416 -26417 -26418 -26419 -26420 -26421 -26422 -26423 -26424 -26425 -26426 -26427 -26428 -26429 -26430 -26431 -26432 -26433 -26434 -26435 -26436 -26437 -26438 -26439 -26440 -26441 -26442 -26443 -26444 -26445 -26446 -26447 -26448 -26449 -26450 -26451 -26452 -26453 -26454 -26455 -26456 -26457 -26458 -26459 -26460 -26461 -26462 -26463 -26464 -26465 -26466 -26467 -26468 -26469 -26470 -26471 -26472 -26473 -26474 -26475 -26476 -26477 -26478 -26479 -26480 -26481 -26482 -26483 -26484 -26485 -26486 -26487 -26488 -26489 -26490 -26491 -26492 -26493 -26494 -26495 -26496 -26497 -26498 -26499 -26500 -26501 -26502 -26503 -26504 -26505 -26506 -26507 -26508 -26509 -26510 -26511 -26512 -26513 -26514 -26515 -26516 -26517 -26518 -26519 -26520 -26521 -26522 -26523 -26524 -26525 -26526 -26527 -26528 -26529 -26530 -26531 -26532 -26533 -26534 -26535 -26536 -26537 -26538 -26539 -26540 -26541 -26542 -26543 -26544 -26545 -26546 -26547 -26548 -26549 -26550 -26551 -26552 -26553 -26554 -26555 -26556 -26557 -26558 -26559 -26560 -26561 -26562 -26563 -26564 -26565 -26566 -26567 -26568 -26569 -26570 -26571 -26572 -26573 -26574 -26575 -26576 -26577 -26578 -26579 -26580 -26581 -26582 -26583 -26584 -26585 -26586 -26587 -26588 -26589 -26590 -26591 -26592 -26593 -26594 -26595 -26596 -26597 -26598 -26599 -26600 -26601 -26602 -26603 -26604 -26605 -26606 -26607 -26608 -26609 -26610 -26611 -26612 -26613 -26614 -26615 -26616 -26617 -26618 -26619 -26620 -26621 -26622 -26623 -26624 -26625 -26626 -26627 -26628 -26629 -26630 -26631 -26632 -26633 -26634 -26635 -26636 -26637 -26638 -26639 -26640 -26641 -26642 -26643 -26644 -26645 -26646 -26647 -26648 -26649 -26650 -26651 -26652 -26653 -26654 -26655 -26656 -26657 -26658 -26659 -26660 -26661 -26662 -26663 -26664 -26665 -26666 -26667 -26668 -26669 -26670 -26671 -26672 -26673 -26674 -26675 -26676 -26677 -26678 -26679 -26680 -26681 -26682 -26683 -26684 -26685 -26686 -26687 -26688 -26689 -26690 -26691 -26692 -26693 -26694 -26695 -26696 -26697 -26698 -26699 -26700 -26701 -26702 -26703 -26704 -26705 -26706 -26707 -26708 -26709 -26710 -26711 -26712 -26713 -26714 -26715 -26716 -26717 -26718 -26719 -26720 -26721 -26722 -26723 -26724 -26725 -26726 -26727 -26728 -26729 -26730 -26731 -26732 -26733 -26734 -26735 -26736 -26737 -26738 -26739 -26740 -26741 -26742 -26743 -26744 -26745 -26746 -26747 -26748 -26749 -26750 -26751 -26752 -26753 -26754 -26755 -26756 -26757 -26758 -26759 -26760 -26761 -26762 -26763 -26764 -26765 -26766 -26767 -26768 -26769 -26770 -26771 -26772 -26773 -26774 -26775 -26776 -26777 -26778 -26779 -26780 -26781 -26782 -26783 -26784 -26785 -26786 -26787 -26788 -26789 -26790 -26791 -26792 -26793 -26794 -26795 -26796 -26797 -26798 -26799 -26800 -26801 -26802 -26803 -26804 -26805 -26806 -26807 -26808 -26809 -26810 -26811 -26812 -26813 -26814 -26815 -26816 -26817 -26818 -26819 -26820 -26821 -26822 -26823 -26824 -26825 -26826 -26827 -26828 -26829 -26830 -26831 -26832 -26833 -26834 -26835 -26836 -26837 -26838 -26839 -26840 -26841 -26842 -26843 -26844 -26845 -26846 -26847 -26848 -26849 -26850 -26851 -26852 -26853 -26854 -26855 -26856 -26857 -26858 -26859 -26860 -26861 -26862 -26863 -26864 -26865 -26866 -26867 -26868 -26869 -26870 -26871 -26872 -26873 -26874 -26875 -26876 -26877 -26878 -26879 -26880 -26881 -26882 -26883 -26884 -26885 -26886 -26887 -26888 -26889 -26890 -26891 -26892 -26893 -26894 -26895 -26896 -26897 -26898 -26899 -26900 -26901 -26902 -26903 -26904 -26905 -26906 -26907 -26908 -26909 -26910 -26911 -26912 -26913 -26914 -26915 -26916 -26917 -26918 -26919 -26920 -26921 -26922 -26923 -26924 -26925 -26926 -26927 -26928 -26929 -26930 -26931 -26932 -26933 -26934 -26935 -26936 -26937 -26938 -26939 -26940 -26941 -26942 -26943 -26944 -26945 -26946 -26947 -26948 -26949 -26950 -26951 -26952 -26953 -26954 -26955 -26956 -26957 -26958 -26959 -26960 -26961 -26962 -26963 -26964 -26965 -26966 -26967 -26968 -26969 -26970 -26971 -26972 -26973 -26974 -26975 -26976 -26977 -26978 -26979 -26980 -26981 -26982 -26983 -26984 -26985 -26986 -26987 -26988 -26989 -26990 -26991 -26992 -26993 -26994 -26995 -26996 -26997 -26998 -26999 -27000 -27001 -27002 -27003 -27004 -27005 -27006 -27007 -27008 -27009 -27010 -27011 -27012 -27013 -27014 -27015 -27016 -27017 -27018 -27019 -27020 -27021 -27022 -27023 -27024 -27025 -27026 -27027 -27028 -27029 -27030 -27031 -27032 -27033 -27034 -27035 -27036 -27037 -27038 -27039 -27040 -27041 -27042 -27043 -27044 -27045 -27046 -27047 -27048 -27049 -27050 -27051 -27052 -27053 -27054 -27055 -27056 -27057 -27058 -27059 -27060 -27061 -27062 -27063 -27064 -27065 -27066 -27067 -27068 -27069 -27070 -27071 -27072 -27073 -27074 -27075 -27076 -27077 -27078 -27079 -27080 -27081 -27082 -27083 -27084 -27085 -27086 -27087 -27088 -27089 -27090 -27091 -27092 -27093 -27094 -27095 -27096 -27097 -27098 -27099 -27100 -27101 -27102 -27103 -27104 -27105 -27106 -27107 -27108 -27109 -27110 -27111 -27112 -27113 -27114 -27115 -27116 -27117 -27118 -27119 -27120 -27121 -27122 -27123 -27124 -27125 -27126 -27127 -27128 -27129 -27130 -27131 -27132 -27133 -27134 -27135 -27136 -27137 -27138 -27139 -27140 -27141 -27142 -27143 -27144 -27145 -27146 -27147 -27148 -27149 -27150 -27151 -27152 -27153 -27154 -27155 -27156 -27157 -27158 -27159 -27160 -27161 -27162 -27163 -27164 -27165 -27166 -27167 -27168 -27169 -27170 -27171 -27172 -27173 -27174 -27175 -27176 -27177 -27178 -27179 -27180 -27181 -27182 -27183 -27184 -27185 -27186 -27187 -27188 -27189 -27190 -27191 -27192 -27193 -27194 -27195 -27196 -27197 -27198 -27199 -27200 -27201 -27202 -27203 -27204 -27205 -27206 -27207 -27208 -27209 -27210 -27211 -27212 -27213 -27214 -27215 -27216 -27217 -27218 -27219 -27220 -27221 -27222 -27223 -27224 -27225 -27226 -27227 -27228 -27229 -27230 -27231 -27232 -27233 -27234 -27235 -27236 -27237 -27238 -27239 -27240 -27241 -27242 -27243 -27244 -27245 -27246 -27247 -27248 -27249 -27250 -27251 -27252 -27253 -27254 -27255 -27256 -27257 -27258 -27259 -27260 -27261 -27262 -27263 -27264 -27265 -27266 -27267 -27268 -27269 -27270 -27271 -27272 -27273 -27274 -27275 -27276 -27277 -27278 -27279 -27280 -27281 -27282 -27283 -27284 -27285 -27286 -27287 -27288 -27289 -27290 -27291 -27292 -27293 -27294 -27295 -27296 -27297 -27298 -27299 -27300 -27301 -27302 -27303 -27304 -27305 -27306 -27307 -27308 -27309 -27310 -27311 -27312 -27313 -27314 -27315 -27316 -27317 -27318 -27319 -27320 -27321 -27322 -27323 -27324 -27325 -27326 -27327 -27328 -27329 -27330 -27331 -27332 -27333 -27334 -27335 -27336 -27337 -27338 -27339 -27340 -27341 -27342 -27343 -27344 -27345 -27346 -27347 -27348 -27349 -27350 -27351 -27352 -27353 -27354 -27355 -27356 -27357 -27358 -27359 -27360 -27361 -27362 -27363 -27364 -27365 -27366 -27367 -27368 -27369 -27370 -27371 -27372 -27373 -27374 -27375 -27376 -27377 -27378 -27379 -27380 -27381 -27382 -27383 -27384 -27385 -27386 -27387 -27388 -27389 -27390 -27391 -27392 -27393 -27394 -27395 -27396 -27397 -27398 -27399 -27400 -27401 -27402 -27403 -27404 -27405 -27406 -27407 -27408 -27409 -27410 -27411 -27412 -27413 -27414 -27415 -27416 -27417 -27418 -27419 -27420 -27421 -27422 -27423 -27424 -27425 -27426 -27427 -27428 -27429 -27430 -27431 -27432 -27433 -27434 -27435 -27436 -27437 -27438 -27439 -27440 -27441 -27442 -27443 -27444 -27445 -27446 -27447 -27448 -27449 -27450 -27451 -27452 -27453 -27454 -27455 -27456 -27457 -27458 -27459 -27460 -27461 -27462 -27463 -27464 -27465 -27466 -27467 -27468 -27469 -27470 -27471 -27472 -27473 -27474 -27475 -27476 -27477 -27478 -27479 -27480 -27481 -27482 -27483 -27484 -27485 -27486 -27487 -27488 -27489 -27490 -27491 -27492 -27493 -27494 -27495 -27496 -27497 -27498 -27499 -27500 -27501 -27502 -27503 -27504 -27505 -27506 -27507 -27508 -27509 -27510 -27511 -27512 -27513 -27514 -27515 -27516 -27517 -27518 -27519 -27520 -27521 -27522 -27523 -27524 -27525 -27526 -27527 -27528 -27529 -27530 -27531 -27532 -27533 -27534 -27535 -27536 -27537 -27538 -27539 -27540 -27541 -27542 -27543 -27544 -27545 -27546 -27547 -27548 -27549 -27550 -27551 -27552 -27553 -27554 -27555 -27556 -27557 -27558 -27559 -27560 -27561 -27562 -27563 -27564 -27565 -27566 -27567 -27568 -27569 -27570 -27571 -27572 -27573 -27574 -27575 -27576 -27577 -27578 -27579 -27580 -27581 -27582 -27583 -27584 -27585 -27586 -27587 -27588 -27589 -27590 -27591 -27592 -27593 -27594 -27595 -27596 -27597 -27598 -27599 -27600 -27601 -27602 -27603 -27604 -27605 -27606 -27607 -27608 -27609 -27610 -27611 -27612 -27613 -27614 -27615 -27616 -27617 -27618 -27619 -27620 -27621 -27622 -27623 -27624 -27625 -27626 -27627 -27628 -27629 -27630 -27631 -27632 -27633 -27634 -27635 -27636 -27637 -27638 -27639 -27640 -27641 -27642 -27643 -27644 -27645 -27646 -27647 -27648 -27649 -27650 -27651 -27652 -27653 -27654 -27655 -27656 -27657 -27658 -27659 -27660 -27661 -27662 -27663 -27664 -27665 -27666 -27667 -27668 -27669 -27670 -27671 -27672 -27673 -27674 -27675 -27676 -27677 -27678 -27679 -27680 -27681 -27682 -27683 -27684 -27685 -27686 -27687 -27688 -27689 -27690 -27691 -27692 -27693 -27694 -27695 -27696 -27697 -27698 -27699 -27700 -27701 -27702 -27703 -27704 -27705 -27706 -27707 -27708 -27709 -27710 -27711 -27712 -27713 -27714 -27715 -27716 -27717 -27718 -27719 -27720 -27721 -27722 -27723 -27724 -27725 -27726 -27727 -27728 -27729 -27730 -27731 -27732 -27733 -27734 -27735 -27736 -27737 -27738 -27739 -27740 -27741 -27742 -27743 -27744 -27745 -27746 -27747 -27748 -27749 -27750 -27751 -27752 -27753 -27754 -27755 -27756 -27757 -27758 -27759 -27760 -27761 -27762 -27763 -27764 -27765 -27766 -27767 -27768 -27769 -27770 -27771 -27772 -27773 -27774 -27775 -27776 -27777 -27778 -27779 -27780 -27781 -27782 -27783 -27784 -27785 -27786 -27787 -27788 -27789 -27790 -27791 -27792 -27793 -27794 -27795 -27796 -27797 -27798 -27799 -27800 -27801 -27802 -27803 -27804 -27805 -27806 -27807 -27808 -27809 -27810 -27811 -27812 -27813 -27814 -27815 -27816 -27817 -27818 -27819 -27820 -27821 -27822 -27823 -27824 -27825 -27826 -27827 -27828 -27829 -27830 -27831 -27832 -27833 -27834 -27835 -27836 -27837 -27838 -27839 -27840 -27841 -27842 -27843 -27844 -27845 -27846 -27847 -27848 -27849 -27850 -27851 -27852 -27853 -27854 -27855 -27856 -27857 -27858 -27859 -27860 -27861 -27862 -27863 -27864 -27865 -27866 -27867 -27868 -27869 -27870 -27871 -27872 -27873 -27874 -27875 -27876 -27877 -27878 -27879 -27880 -27881 -27882 -27883 -27884 -27885 -27886 -27887 -27888 -27889 -27890 -27891 -27892 -27893 -27894 -27895 -27896 -27897 -27898 -27899 -27900 -27901 -27902 -27903 -27904 -27905 -27906 -27907 -27908 -27909 -27910 -27911 -27912 -27913 -27914 -27915 -27916 -27917 -27918 -27919 -27920 -27921 -27922 -27923 -27924 -27925 -27926 -27927 -27928 -27929 -27930 -27931 -27932 -27933 -27934 -27935 -27936 -27937 -27938 -27939 -27940 -27941 -27942 -27943 -27944 -27945 -27946 -27947 -27948 -27949 -27950 -27951 -27952 -27953 -27954 -27955 -27956 -27957 -27958 -27959 -27960 -27961 -27962 -27963 -27964 -27965 -27966 -27967 -27968 -27969 -27970 -27971 -27972 -27973 -27974 -27975 -27976 -27977 -27978 -27979 -27980 -27981 -27982 -27983 -27984 -27985 -27986 -27987 -27988 -27989 -27990 -27991 -27992 -27993 -27994 -27995 -27996 -27997 -27998 -27999 -28000 -28001 -28002 -28003 -28004 -28005 -28006 -28007 -28008 -28009 -28010 -28011 -28012 -28013 -28014 -28015 -28016 -28017 -28018 -28019 -28020 -28021 -28022 -28023 -28024 -28025 -28026 -28027 -28028 -28029 -28030 -28031 -28032 -28033 -28034 -28035 -28036 -28037 -28038 -28039 -28040 -28041 -28042 -28043 -28044 -28045 -28046 -28047 -28048 -28049 -28050 -28051 -28052 -28053 -28054 -28055 -28056 -28057 -28058 -28059 -28060 -28061 -28062 -28063 -28064 -28065 -28066 -28067 -28068 -28069 -28070 -28071 -28072 -28073 -28074 -28075 -28076 -28077 -28078 -28079 -28080 -28081 -28082 -28083 -28084 -28085 -28086 -28087 -28088 -28089 -28090 -28091 -28092 -28093 -28094 -28095 -28096 -28097 -28098 -28099 -28100 -28101 -28102 -28103 -28104 -28105 -28106 -28107 -28108 -28109 -28110 -28111 -28112 -28113 -28114 -28115 -28116 -28117 -28118 -28119 -28120 -28121 -28122 -28123 -28124 -28125 -28126 -28127 -28128 -28129 -28130 -28131 -28132 -28133 -28134 -28135 -28136 -28137 -28138 -28139 -28140 -28141 -28142 -28143 -28144 -28145 -28146 -28147 -28148 -28149 -28150 -28151 -28152 -28153 -28154 -28155 -28156 -28157 -28158 -28159 -28160 -28161 -28162 -28163 -28164 -28165 -28166 -28167 -28168 -28169 -28170 -28171 -28172 -28173 -28174 -28175 -28176 -28177 -28178 -28179 -28180 -28181 -28182 -28183 -28184 -28185 -28186 -28187 -28188 -28189 -28190 -28191 -28192 -28193 -28194 -28195 -28196 -28197 -28198 -28199 -28200 -28201 -28202 -28203 -28204 -28205 -28206 -28207 -28208 -28209 -28210 -28211 -28212 -28213 -28214 -28215 -28216 -28217 -28218 -28219 -28220 -28221 -28222 -28223 -28224 -28225 -28226 -28227 -28228 -28229 -28230 -28231 -28232 -28233 -28234 -28235 -28236 -28237 -28238 -28239 -28240 -28241 -28242 -28243 -28244 -28245 -28246 -28247 -28248 -28249 -28250 -28251 -28252 -28253 -28254 -28255 -28256 -28257 -28258 -28259 -28260 -28261  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
-if (window){
-  window.csvtojson=require("./index.js");
-  window.csvtojson.version=require("./package.json").version;
-}
- 
-},{"./index.js":2,"./package.json":134}],2:[function(require,module,exports){
-module.exports = require("./libs/csv2json.js");
-},{"./libs/csv2json.js":24}],3:[function(require,module,exports){
-var util = require("util");
-module.exports = CSVError;
-function CSVError(err, index, extra) {
-  Error.call(this, "");
-  this.err = err;
-  this.line = index;
-  this.extra = extra;
-  this.message = "Error: " + err + ". JSON Line number: " + index + (extra ? " near: " + extra : "");
-  this.name = "CSV Error";
-}
-util.inherits(CSVError, Error);
- 
-CSVError.prototype.toString = function() {
-  return JSON.stringify([this.err, this.line, this.extra]);
-};
- 
-CSVError.column_mismatched = function(index, extra) {
-  return new CSVError("column_mismatched", index, extra);
-};
- 
-CSVError.unclosed_quote = function(index, extra) {
-  return new CSVError("unclosed_quote", index, extra);
-};
- 
-CSVError.fromArray = function(arr) {
-  return new CSVError(arr[0], arr[1], arr[2]);
-};
- 
-},{"util":73}],4:[function(require,module,exports){
-(function (process,Buffer){
-var util = require("util");
-var Transform = require("stream").Transform;
-var os = require("os");
-var stripBom = require('strip-bom');
-var eol = os.EOL;
-// var Processor = require("./Processor.js");
-var defParam = require("./defParam");
-var fileline = require("./fileline");
-var fileLineToCSVLine = require("./fileLineToCSVLine");
-var linesToJson = require("./linesToJson");
-var CSVError = require("./CSVError");
-var workerMgr = null;
-var _ = require('lodash');
-var rowSplit = require("./rowSplit");
-function Converter(params, options) {
-  Transform.call(this, options);
-  this._options = options || {};
-  this.param = defParam(params);
-  this.param._options = this._options;
-  // this.resultObject = new Result(this);
-  // this.pipe(this.resultObject); // it is important to have downstream for a transform otherwise it will stuck
-  this.started = false;//indicate if parsing has started.
-  this.recordNum = 0;
-  this.lineNumber = 0; //file line number
-  this._csvLineBuffer = "";
-  this.lastIndex = 0; // index in result json array
-  //this._pipe(this.lineParser).pipe(this.processor);
-  // this.initNoFork();
-  if (this.param.forked) {
-    this.param.forked = false;
-    this.workerNum = 2;
-  }
-  this.flushCb = null;
-  this.processEnd = false;
-  this.sequenceBuffer = [];
-  this._needJson = null;
-  this._needEmitResult = null;
-  this._needEmitFinalResult = null;
-  this._needEmitJson = null;
-  this._needPush = null;
-  this._needEmitCsv = null;
-  this._csvTransf = null;
-  this.finalResult = [];
-  // this.on("data", function() {});
-  this.on("error", emitDone(this));
-  this.on("end", emitDone(this));
-  this.initWorker();
-  process.nextTick(function () {
-    if (this._needEmitFinalResult === null) {
-      this._needEmitFinalResult = this.listeners("end_parsed").length > 0;
-    }
-    if (this._needEmitResult === null) {
-      this._needEmitResult = this.listeners("record_parsed").length > 0;
-    }
-    if (this._needEmitJson === null) {
-      this._needEmitJson = this.listeners("json").length > 0;
-    }
-    if (this._needEmitCsv === null) {
-      this._needEmitCsv = this.listeners("csv").length > 0;
-    }
-    if (this._needJson === null) {
-      this._needJson = this._needEmitJson || this._needEmitFinalResult || this._needEmitResult || this.transform || this._options.objectMode;
-    }
-    if (this._needPush === null) {
-      this._needPush = this.listeners("data").length > 0 || this.listeners("readable").length > 0;
-      // this._needPush=false;
-    }
-    this.param._needParseJson = this._needJson || this._needPush;
-  }.bind(this));
- 
-  return this;
-}
- 
-util.inherits(Converter, Transform);
-function emitDone(conv) {
-  return function (err) {
-    if (!conv._hasDone) {
-      conv._hasDone = true;
-      process.nextTick(function () {
-        conv.emit('done', err);
-      });
-    };
-  }
-}
-var useBufferFrom=process.versions.node.split(".")[0]>=6;
-function bufFromString(str){
-  return useBufferFrom?Buffer.from(str,"utf8"):new Buffer(str,"utf8");
-}
-Converter.prototype._transform = function (data, encoding, cb) {
-  data=this.prepareData(data);
-  var idx =data.length-1;
-  var left=null;
-  if ((data[idx] & 1<<7) !=0){
-    while ((data[idx] & 3<<6) === 128){
-      idx--;
-    }
-    idx--;
-  }
-  if (idx !=data.length-1){
-    left=data.slice(idx+1);
-    data=data.slice(0,idx+1)
-    var _cb=cb;
-    var self=this;
-    cb=function(){
-      if (self._csvLineBuffer){
-        self._csvLineBuffer=Buffer.concat([bufFromString(self._csvLineBuffer,"utf8"),left]);
-      }else{
-        self._csvLineBuffer=left;
-      }
-      _cb();
-    }
-  }
-  data = data.toString("utf8");
-  if (this.started === false) {
-    this.started = true;
-    data = stripBom(data);
-    if (this.param.toArrayString) {
-      if (this._needPush) {
-        this.push("[" + eol, "utf8");
-      }
-    }
-  }
-  var self = this;
-  this.preProcessRaw(data, function (d) {
-    if (d && d.length > 0) {
-      self.processData(d, cb);
-    } else {
-      cb();
-    }
-  });
-};
- 
-Converter.prototype.prepareData = function (data) {
-  if (this._csvLineBuffer && this._csvLineBuffer.length>0){
-    if (typeof this._csvLineBuffer === "string"){
-      this._csvLineBuffer=bufFromString(this._csvLineBuffer);
-    }
-    return Buffer.concat([this._csvLineBuffer,data]);
-  }else{
-    return data;
-  }
-  // return this._csvLineBuffer + data;
-};
- 
-Converter.prototype.setPartialData = function (d) {
-  this._csvLineBuffer = d;
-};
- 
-Converter.prototype.processData = function (data, cb) {
-  var params = this.param;
-  if (params.ignoreEmpty && !params._headers) {
-    data = data.trimLeft();
-  }
-  var fileLines = fileline(data, this.param);
-  if (fileLines.lines.length > 0) {
-    if (this.preProcessLine && typeof this.preProcessLine === "function") {
-      fileLines.lines = this._preProcessLines(fileLines.lines, this.lastIndex);
-    }
-    if (!params._headers) { //header is not inited. init header
-      this.processHead(fileLines, cb);
-    } else {
-      if (params.workerNum <= 1) {
-        var lines = fileLineToCSVLine(fileLines, params);
-        this.setPartialData(lines.partial);
-        var jsonArr = linesToJson(lines.lines, params, this.recordNum);
-        this.processResult(jsonArr);
-        this.lastIndex += jsonArr.length;
-        this.recordNum += jsonArr.length;
-        cb();
-      } else {
-        this.workerProcess(fileLines, cb);
-      }
-    }
-  } else {
-    this.setPartialData(fileLines.partial);
-    cb();
-  }
-};
- 
-Converter.prototype._preProcessLines = function (lines, startIdx) {
-  var rtn = [];
-  for (var i = 0, len = lines.length; i < len; i++) {
-    var result = this.preProcessLine(lines[i], startIdx + i + 1);
-    if (typeof result === "string") {
-      rtn.push(result);
-    } else {
-      rtn.push(lines[i]);
-      this.emit("error", new Error("preProcessLine should return a string but got: " + JSON.stringify(result)));
-    }
-  }
-  return rtn;
-};
- 
-Converter.prototype.initWorker = function () {
-  var workerNum = this.param.workerNum - 1;
-  if (workerNum > 0) {
-    workerMgr = require("./workerMgr");
-    this.workerMgr = workerMgr();
-    this.workerMgr.initWorker(workerNum, this.param);
-  }
-};
- 
-Converter.prototype.preRawData = function (func) {
-  this.preProcessRaw = func;
-  return this;
-};
- 
-Converter.prototype.preFileLine = function (func) {
-  this.preProcessLine = func;
-  return this;
-};
- 
-/**
- * workerpRocess does not support embeded multiple lines.
- */
-Converter.prototype.workerProcess = function (fileLine, cb) {
-  var self = this;
-  var line = fileLine;
-  var eol = this.getEol();
-  this.setPartialData(line.partial);
-  this.workerMgr.sendWorker(line.lines.join(eol) + eol, this.lastIndex, cb, function (results, lastIndex) {
-    var buf;
-    var cur = self.sequenceBuffer[0];
-    if (cur.idx === lastIndex) {
-      cur.result = results;
-      var records = [];
-      while (self.sequenceBuffer[0] && self.sequenceBuffer[0].result) {
-        buf = self.sequenceBuffer.shift();
-        records = records.concat(buf.result);
-      }
-      self.processResult(records);
-      self.recordNum += records.length;
-    } else {
-      for (var i = 0, len = self.sequenceBuffer.length; i < len; i++) {
-        buf = self.sequenceBuffer[i];
-        if (buf.idx === lastIndex) {
-          buf.result = results;
-          break;
-        }
-      }
-    }
-  });
-  this.sequenceBuffer.push({
-    idx: this.lastIndex,
-    result: null
-  });
-  this.lastIndex += line.lines.length;
-};
- 
-Converter.prototype.processHead = function (fileLine, cb) {
-  var params = this.param;
-  if (params._headers) {
-    return cb();
-  }
-  //dirty hack
-  params._needFilterRow = false;
-  // if header is not inited. init header
-  var lines = fileLine.lines;
-  var left = "";
-  var headerRow = [];
-  if (!params.noheader) {
-    while (lines.length) {
-      var line = left + lines.shift();
-      var row = rowSplit(line, params);
-      if (row.closed) {
-        headerRow = row.cols;
-        left = "";
-        break;
-      } else {
-        left = line + this.getEol();
-      }
-    }
-  }
-  params._needFilterRow = true;
-  if (!params.noheader && headerRow.length === 0) { //if one chunk of data does not complete header row.
-    this.setPartialData(left);
-    return cb();
-  }
-  if (params.noheader) {
-    if (params.headers) {
-      params._headers = params.headers;
-    } else {
-      params._headers = [];
-    }
-  } else {
-    if (params.headers) {
-      params._headers = params.headers;
-    } else {
-      params._headers = headerRow;
-    }
-  }
-  configIgnoreIncludeColumns(params);
-  params._headers = require("./filterRow")(params._headers, params);
-  var lines = fileLineToCSVLine(fileLine, params);
-  this.setPartialData(lines.partial);
-  if (this.param.workerNum > 1) {
-    this.workerMgr.setParams(params);
-  }
-  var res = linesToJson(lines.lines, params, 0);
-  this.processResult(res);
-  this.lastIndex += res.length;
-  this.recordNum += res.length;
- 
-  cb();
-};
-function configIgnoreIncludeColumns(params) {
-  if (params._postIgnoreColumns) {
-    for (var i = 0; i < params.ignoreColumns.length; i++) {
-      var ignoreCol = params.ignoreColumns[i];
-      if (typeof ignoreCol === "string") {
-        var idx = params._headers.indexOf(ignoreCol);
-        if (idx > -1) {
-          params.ignoreColumns[i] = idx;
-        } else {
-          params.ignoreColumns[i] = -1;
-        }
-      }
-    }
-    params.ignoreColumns.sort(function (a, b) { return b - a; });
-  }
-  if (params._postIncludeColumns) {
-    for (var i = 0; i < params.includeColumns.length; i++) {
-      var includeCol = params.includeColumns[i];
-      if (typeof includeCol === "string") {
-        var idx = params._headers.indexOf(includeCol);
-        if (idx > -1) {
-          params.includeColumns[i] = idx;
-        } else {
-          params.includeColumns[i] = -1;
-        }
-      }
-    }
-  }
-  params.ignoreColumns = _.uniq(params.ignoreColumns);
-  params.includeColumns = _.uniq(params.includeColumns);
-}
- 
-Converter.prototype.processResult = function (result) {
-  for (var i = 0, len = result.length; i < len; i++) {
-    var r = result[i];
-    if (r.err) {
-      this.emit("error", r.err);
-    } else {
-      this.emitResult(r);
-    }
-  }
-};
- 
-Converter.prototype.emitResult = function (r) {
-  var index = r.index;
-  var row = r.row;
-  var result = r.json;
-  var resultJson = null;
-  var resultStr = null;
-  if (typeof result === "string") {
-    resultStr = result;
-  } else {
-    resultJson = result;
-  }
-  if (resultJson === null && this._needJson) {
-    resultJson = JSON.parse(resultStr);
-    if (typeof row === "string") {
-      row = JSON.parse(row);
-    }
-  }
-  if (this.transform && typeof this.transform === "function") {
-    this.transform(resultJson, row, index);
-    resultStr = null;
-  }
-  if (this._needEmitJson) {
-    this.emit("json", resultJson, index);
-  }
-  if (this._needEmitCsv) {
-    if (typeof row === "string") {
-      row = JSON.parse(row);
-    }
-    this.emit("csv", row, index);
-  }
-  if (this.param.constructResult && this._needEmitFinalResult) {
-    this.finalResult.push(resultJson);
-  }
-  if (this._needEmitResult) {
-    this.emit("record_parsed", resultJson, row, index);
-  }
-  if (this.param.toArrayString && index > 0 && this._needPush) {
-    this.push("," + eol);
-  }
-  if (this._options && this._options.objectMode) {
-    this.push(resultJson);
-  } else {
-    if (this._needPush) {
-      if (resultStr === null) {
-        resultStr = JSON.stringify(resultJson);
-      }
-      this.push(!this.param.toArrayString ? resultStr + eol : resultStr, "utf8");
-    }
-  }
-};
- 
-Converter.prototype.preProcessRaw = function (data, cb) {
-  cb(data);
-};
- 
-// FIXME: lineNumber is not used.
-Converter.prototype.preProcessLine = function (line, lineNumber) {
-  return line;
-};
- 
-Converter.prototype._flush = function (cb) {
-  var self = this;
-  this.flushCb = function () {
-    self.emit("end_parsed", self.finalResult);
-    if (self.workerMgr) {
-      self.workerMgr.destroyWorker();
-    }
-    cb();
-    if (!self._needPush) {
-      self.emit("end");
-    }
-  };
-  if (this._csvLineBuffer.length > 0) {
-    var eol = this.getEol();
-    if (this._csvLineBuffer[this._csvLineBuffer.length - 1] !== eol) {
-      this._csvLineBuffer += eol;
-    }
-    this.processData(this._csvLineBuffer, function () {
-      this.checkAndFlush();
-    }.bind(this));
-  } else {
-    this.checkAndFlush();
-  }
-  return;
-};
- 
-Converter.prototype.checkAndFlush = function () {
-  if (this._csvLineBuffer.length !== 0) {
-    this.emit("error", CSVError.unclosed_quote(this.recordNum, this._csvLineBuffer), this._csvLineBuffer);
-  }
-  if (this.param.toArrayString && this._needPush) {
-    this.push(eol + "]", "utf8");
-  }
-  if (this.workerMgr && this.workerMgr.isRunning()) {
-    this.workerMgr.drain = function () {
-      this.flushCb();
-    }.bind(this);
-  } else {
-    this.flushCb();
-  }
-};
- 
-Converter.prototype.getEol = function (data) {
-  if (!this.param.eol && data) {
-    for (var i = 0, len = data.length; i < len; i++) {
-      if (data[i] === "\r") {
-        if (data[i + 1] === "\n") {
-          this.param.eol = "\r\n";
-        } else {
-          this.param.eol = "\r";
-        }
-        return this.param.eol;
-      } else if (data[i] === "\n") {
-        this.param.eol = "\n";
-        return this.param.eol;
-      }
-    }
-    this.param.eol = eol;
-  }
- 
-  return this.param.eol || eol;
-};
- 
-Converter.prototype.fromFile = function (filePath, cb, options) {
-  var fs = require('fs');
-  var rs = null;
-  if (typeof cb ==="object" && typeof options === "undefined"){
-    options=cb;
-    cb=null;
-  }
-  this.wrapCallback(cb, function () {
-    if (rs && rs.destroy) {
-      rs.destroy();
-    }
-  });
-  fs.exists(filePath, function (exist) {
-    if (exist) {
-      rs = fs.createReadStream(filePath,options);
-      rs.pipe(this);
-    } else {
-      this.emit('error', new Error("File not exists"));
-    }
-  }.bind(this));
-  return this;
-};
- 
-Converter.prototype.fromStream = function (readStream, cb) {
-  if (cb && typeof cb === "function") {
-    this.wrapCallback(cb);
-  }
-  readStream.pipe(this);
-  return this;
-};
- 
-Converter.prototype.transf = function (func) {
-  this.transform = func;
-  return this;
-};
- 
-Converter.prototype.fromString = function (csvString, cb) {
-  if (typeof csvString !== "string") {
-    return cb(new Error("Passed CSV Data is not a string."));
-  }
-  if (cb && typeof cb === "function") {
-    this.wrapCallback(cb, function () {
-    });
-  }
-  process.nextTick(function () {
-    this.end(csvString);
-  }.bind(this));
-  return this;
-};
- 
-Converter.prototype.wrapCallback = function (cb, clean) {
-  if (clean === undefined) {
-    clean = function () { };
-  }
-  if (cb && typeof cb === "function") {
-    this.once("end_parsed", function (res) {
-      if (!this.hasError) {
-        cb(null, res);
-      }
-    }.bind(this));
-  }
-  this.once("error", function (err) {
-    this.hasError = true;
-    if (cb && typeof cb === "function") {
-      cb(err);
-    }
-    clean();
-  }.bind(this));
-};
- 
-module.exports = Converter;
- 
-}).call(this,require('_process'),require("buffer").Buffer)
-},{"./CSVError":3,"./defParam":6,"./fileLineToCSVLine":13,"./fileline":14,"./filterRow":15,"./linesToJson":19,"./rowSplit":22,"./workerMgr":23,"_process":42,"buffer":33,"fs":31,"lodash":129,"os":41,"stream":60,"strip-bom":133,"util":73}],5:[function(require,module,exports){
-var getEol = require("./getEol");
-var rowSplit = require("./rowSplit");
-/**
- * Convert lines to csv columns
- * @param  {[type]} lines [file lines]
- * @param  {[type]} param [Converter param]
- * @return {[type]}  {lines:[[col1,col2,col3...]],partial:String}
- */
-module.exports = function(lines, param) {
-  var csvLines = [];
-  var left = "";
-  while (lines.length) {
-    var line = left + lines.shift();
-    var row = rowSplit(line, param);
-    if (row.closed) {
-      csvLines.push(row.cols);
-      left = "";
-    } else {
-      left = line + (getEol(line, param) || "\n"); // if unable to getEol from data, assume "\n"
-    }
-  }
-  return {lines: csvLines, partial: left};
-};
- 
-},{"./getEol":17,"./rowSplit":22}],6:[function(require,module,exports){
-(function (process){
-var numExp = /^[0-9]+$/;
-module.exports = function (params) {
-  var _param = {
-    constructResult: true, //set to false to not construct result in memory. suitable for big csv data
-    delimiter: ',', // change the delimiter of csv columns. It is able to use an array to specify potencial delimiters. e.g. [",","|",";"]
-    ignoreColumns: [], // columns to ignore upon input.
-    includeColumns: [], // columns to include upon input.
-    quote: '"', //quote for a column containing delimiter.
-    trim: true, //trim column's space charcters
-    checkType: false, //whether check column type
-    toArrayString: false, //stream down stringified json array instead of string of json. (useful if downstream is file writer etc)
-    ignoreEmpty: false, //Ignore empty value while parsing. if a value of the column is empty, it will be skipped parsing.
-    workerNum: getEnv("CSV_WORKER", 1), //number of parallel workers. If multi-core CPU available, increase the number will get better performance for large csv data.
-    fork: false, //use another CPU core to convert the csv stream
-    noheader: false, //indicate if first line of CSV file is header or not.
-    headers: null, //an array of header strings. If noheader is false and headers is array, csv header will be ignored.
-    flatKeys: false, // Don't interpret dots and square brackets in header fields as nested object or array identifiers at all.
-    maxRowLength: 0, //the max character a csv row could have. 0 means infinite. If max number exceeded, parser will emit "error" of "row_exceed". if a possibly corrupted csv data provided, give it a number like 65535 so the parser wont consume memory. default: 0
-    checkColumn: false, //whether check column number of a row is the same as headers. If column number mismatched headers number, an error of "mismatched_column" will be emitted.. default: false
-    escape: '"', //escape char for quoted column
-    colParser:{}, //flags on columns to alter field processing.
- 
-    /**below are internal params */
-    _columnConv:[],
-    _headerType: [],
-    _headerTitle: [],
-    _headerFlag: [],
-    _headers: null,
-    _needFilterRow: false
-  };
-  if (!params) {
-    params = {};
-  }
-  for (var key in params) {
-    if (params.hasOwnProperty(key)) {
-      _param[key] = params[key];
-    }
-  }
-  if (_param.ignoreColumns.length > 0 && !numExp.test(_param.ignoreColumns.join(""))) {
-    _param._postIgnoreColumns = true;
-  }
-  if (_param.includeColumns.length > 0 && !numExp.test(_param.includeColumns.join(""))) {
-    _param._postIncludeColumns = true;
-  }
- 
-  if (_param.ignoreColumns.length || _param.includeColumns.length) {
-    _param._needFilterRow = true;
-    if (!_param._postIgnoreColumns){
-      _param.ignoreColumns.sort(function (a, b) { return b-a;});
-    }
-  }
- 
- 
-  return _param;
-};
- 
-function getEnv(key, def) {
-  if (process.env[key]) {
-    return process.env[key];
-  } else {
-    return def;
-  }
-}
- 
-}).call(this,require('_process'))
-},{"_process":42}],7:[function(require,module,exports){
-module.exports = [
-  require('./parser_array.js'),
-  require('./parser_json.js'),
-  require('./parser_omit.js'),
-  require('./parser_jsonarray.js'),
-  require("./parser_flat.js")
-];
- 
-},{"./parser_array.js":8,"./parser_flat.js":9,"./parser_json.js":10,"./parser_jsonarray.js":11,"./parser_omit.js":12}],8:[function(require,module,exports){
-module.exports = {
-  "name": "array",
-  "processSafe":true,
-  "regExp": /^\*array\*/,
-  "parserFunc": function parser_array(params) {
-    var fieldName = params.head.replace(this.regExp, '');
-    if (params.resultRow[fieldName] === undefined) {
-      params.resultRow[fieldName] = [];
-    }
-    params.resultRow[fieldName].push(params.item);
-  }
-};
- 
-},{}],9:[function(require,module,exports){
-module.exports = {
-  "name": "flat",
-  "processSafe": true,
-  "regExp": /^\*flat\*/,
-  "parserFunc": function parser_flat (params) {
-     var key = this.getHeadStr();
-     var val = params.item;
-     params.resultRow[key] = val;
-  }
-};
- 
-},{}],10:[function(require,module,exports){
-var arrReg = /\[([0-9]*)\]/;
- 
- 
-function processHead(pointer, headArr, arrReg, flatKeys) {
-  var headStr, match, index;
-  while (headArr.length > 1) {
-    headStr = headArr.shift();
-    // match = headStr.match(arrReg);
-    match = flatKeys ? false : headStr.match(arrReg);
-    if (match) { //if its array, we need add an empty json object into specified index.
-      if (pointer[headStr.replace(match[0], '')] === undefined) {
-        pointer[headStr.replace(match[0], '')] = [];
-      }
-      index = match[1]; //get index where json object should stay
-      pointer = pointer[headStr.replace(match[0], '')];
-      if (index === '') { //if its dynamic array index, push to the end
-        index = pointer.length;
-      }
-      if (!pointer[index]) { //current index in the array is empty. we need create a new json object.
-        pointer[index] = {};
-      }
-      pointer = pointer[index];
-    } else { //not array, just normal JSON object. we get the reference of it
-      if (pointer[headStr] === undefined) {
-        pointer[headStr] = {};
-      }
-      pointer = pointer[headStr];
-    }
-  }
-  return pointer;
-}
-module.exports = {
-  "name": "json",
-  "processSafe": true,
-  "regExp": /^\*json\*/,
-  "parserFunc": function parser_json(params) {
-    var fieldStr = this.getHeadStr();
-    var headArr = (params.config && params.config.flatKeys) ? [fieldStr] : fieldStr.split('.');
-    var match, index, key;
-    //now the pointer is pointing the position to add a key/value pair.
-    var pointer = processHead(params.resultRow, headArr, arrReg, params.config && params.config.flatKeys);
-    key = headArr.shift();
-    match = (params.config && params.config.flatKeys) ? false : key.match(arrReg);
-    if (match) { // the last element is an array, we need check and treat it as an array.
-      try {
-        key = key.replace(match[0], '');
-        if (!pointer[key] || !(pointer[key] instanceof Array)) {
-          pointer[key] = [];
-        }
-        if (pointer[key]) {
-          index = match[1];
-          if (index === '') {
-            index = pointer[key].length;
-          }
-          pointer[key][index] = params.item;
-        } else {
-          params.resultRow[fieldStr] = params.item;
-        }
-      } catch (e) {
-        params.resultRow[fieldStr] = params.item;
-      }
-    } else {
-      if (typeof pointer === "string"){
-        params.resultRow[fieldStr] = params.item;
-      }else{
-        pointer[key] = params.item;
-      }
-    }
-  }
-};
- 
-},{}],11:[function(require,module,exports){
-module.exports = {
-  "name": "jsonarray",
-  "processSafe":true,
-  "regExp": /^\*jsonarray\*/,
-  "parserFunc": function parser_jsonarray (params) {
-    var fieldStr = params.head.replace(this.regExp, "");
-    var headArr = fieldStr.split('.');
-    var pointer = params.resultRow;
-    while (headArr.length > 1) {
-      var headStr = headArr.shift();
-      if (pointer[headStr] === undefined) {
-        pointer[headStr] = {};
-      }
-      pointer = pointer[headStr];
-    }
-    var arrFieldName = headArr.shift();
-    if (pointer[arrFieldName] === undefined) {
-      pointer[arrFieldName] = [];
-    }
-    pointer[arrFieldName].push(params.item);
-  }
-};
- 
-},{}],12:[function(require,module,exports){
-module.exports = {
-  "name": "omit",
-  "regExp": /^\*omit\*/,
-  "processSafe":true,
-  "parserFunc": function parser_omit() {}
-};
- 
-},{}],13:[function(require,module,exports){
-var csvline=require("./csvline");
-/**
- * Convert data chunk to csv lines with cols
- * @param  {[type]} data   [description]
- * @param  {[type]} params [description]
- * @return {[type]}    {lines:[[col1,col2,col3]],partial:String}
- */
-module.exports = function(fileLine, params) {
-  var lines = fileLine.lines;
-  var csvLines = csvline(lines,params);
-  return {
-    lines: csvLines.lines,
-    partial: csvLines.partial + fileLine.partial
-  };
-};
- 
-},{"./csvline":5}],14:[function(require,module,exports){
-var getEol = require("./getEol");
-/**
- * convert data chunk to file lines array
- * @param  {string} data  data chunk as utf8 string
- * @param  {object} param Converter param object
- * @return {Object}   {lines:[line1,line2...],partial:String}
- */
-module.exports = function(data, param) {
-  var eol = getEol(data,param);
-  var lines = data.split(eol);
-  var partial = lines.pop();
-  return {lines: lines, partial: partial};
-};
- 
-},{"./getEol":17}],15:[function(require,module,exports){
-module.exports=function filterRow(row, param) {
-  if (param.ignoreColumns instanceof Array && param.ignoreColumns.length > 0) {
-    for (var igRow = 0, igColLen = param.ignoreColumns.length; igRow < igColLen; igRow++) {
-      if (param.ignoreColumns[igRow] >= 0) {
-        row.splice(param.ignoreColumns[igRow], 1);
-      }
-    }
-  }
-  if (param.includeColumns instanceof Array && param.includeColumns.length > 0) {
-    var cleanRowArr = [];
-    for (var inRow = 0, inColLen = param.includeColumns.length; inRow < inColLen; inRow++) {
-      if (param.includeColumns[inRow] >= 0) {
-        cleanRowArr.push(row[param.includeColumns[inRow]]);
-      }
-    }
-    row = cleanRowArr;
-  }
-  return row;
-}
-},{}],16:[function(require,module,exports){
-module.exports = getDelimiter;
-var defaulDelimiters = [",", "|", "\t", ";", ":"];
-function getDelimiter(rowStr,param) {
-  var checker;
-  if (param.delimiter === "auto"){
-    checker = defaulDelimiters;
-  } else if (param.delimiter instanceof Array) {
-    checker = param.delimiter;
-  } else {
-    return param.delimiter;
-  }
-  var count = 0;
-  var rtn = ",";
-  checker.forEach(function(delim) {
-    var delimCount = rowStr.split(delim).length;
-    if (delimCount > count) {
-      rtn = delim;
-      count = delimCount;
-    }
-  });
-  return rtn;
-}
- 
-},{}],17:[function(require,module,exports){
-//return eol from a data chunk.
-var eol = require("os").EOL;
-module.exports = function(data, param) {
-  if (!param.eol && data) {
-    for (var i = 0, len = data.length; i < len; i++) {
-      if (data[i] === "\r") {
-        if (data[i + 1] === "\n") {
-          param.eol = "\r\n";
-        } else if (data[i + 1]) {
-          param.eol = "\r";
-        }
-        return param.eol;
-      } else if (data[i] === "\n") {
-        param.eol = "\n";
-        return param.eol;
-      }
-    }
-  }
-  return param.eol;
-};
- 
-},{"os":41}],18:[function(require,module,exports){
-module.exports = constructor;
-module.exports.Converter = require("./Converter.js");
- 
-function constructor(param,options) {
-  return new module.exports.Converter(param, options);
-}
- 
-},{"./Converter.js":4}],19:[function(require,module,exports){
-var parserMgr = require("./parserMgr.js");
-var CSVError = require("./CSVError");
-var numReg = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;
-/**
- * Convert lines of csv array into json
- * @param  {[type]} lines  [[col1,col2,col3]]
- * @param  {[type]} params Converter params with _headers field populated
- * @param  {[type]} idx start pos of the lines
- * @return {[type]}   [{err:null,json:obj,index:line,row:[csv row]}]
- */
-module.exports = function (lines, params, idx) {
-  if (params._needParseJson) {
-    if (!params._headers) {
-      params._headers = [];
-    }
-    if (!params.parseRules) {
-      var row = params._headers;
-      params.parseRules = parserMgr.initParsers(row, params);
-    }
-    return processRows(lines, params, idx);
-  } else {
-    return justReturnRows(lines, params, idx);
-  }
-};
- 
-function justReturnRows(lines, params, idx) {
-  var rtn = [];
-  for (var i = 0, len = lines.length; i < len; i++) {
-    rtn.push({
-      err: null,
-      json: {},
-      index: idx++,
-      row: lines[i]
-    });
-  }
-  return rtn;
-}
- 
-function processRows(csvRows, params, startIndex) {
-  var res = [];
-  for (var i = 0, len = csvRows.length; i < len; i++) {
-    var r = processRow(csvRows[i], params, startIndex++);
-    if (r) {
-      res.push(r);
-    }
-  }
-  return res;
-}
- 
-function processRow(row, param, index) {
-  var parseRules = param.parseRules;
-  if (param.checkColumn && row.length !== parseRules.length) {
-    return {
-      err: CSVError.column_mismatched(index)
-    };
-  }
- 
-  var headRow = param._headers;
-  var resultRow = convertRowToJson(row, headRow, param);
-  if (resultRow) {
-    return {
-      json: resultRow,
-      index: index,
-      row: row
-    };
-  } else {
-    return null;
-  }
-}
- 
-function convertRowToJson(row, headRow, param) {
-  var hasValue = false;
-  var resultRow = {};
- 
-  for (var i = 0, len = row.length; i < len; i++) {
-    var convertFunc, head, item;
-    item = row[i];
- 
-    if (param.ignoreEmpty && item === '') {
-      continue;
-    }
-    hasValue = true;
- 
-    head = headRow[i];
-    if (!head || head === "") {
-      head = headRow[i] = "field" + (i + 1);
-    }
-    var convFunc = getConvFunc(head, i, param);
-    if (convFunc) {
-      var convRes = convFunc(item, head, resultRow,row,i);
-      if (convRes !== undefined) {
-        setPath(resultRow, head, convRes);
-      }
-    } else {
-      var flag = getFlag(head, i, param);
-      if (flag === 'omit') {
-        continue;
-      }
-      if (param.checkType) {
-        convertFunc = checkType(item, head, i, param);
-        item = convertFunc(item);
-      }
-      var title = getTitle(head, i, param);
-      if (flag === 'flat' || param.flatKeys) {
-        resultRow[title] = item;
-      } else {
-        setPath(resultRow, title, item);
-      }
-    }
-  }
-  if (hasValue) {
-    return resultRow;
-  } else {
-    return false;
-  }
-}
- 
-var builtInConv={
-  "string":stringType,
-  "number":numberType,
-  "omit":function(){}
-}
-function getConvFunc(head,i,param){
-  if (param._columnConv[i] !== undefined){
-    return param._columnConv[i];
-  }else{
-    var flag=param.colParser[head];
-    if (flag === undefined){
-      return param._columnConv[i]=false;
-    }
-    if (typeof flag ==="string"){
-      flag=flag.trim().toLowerCase();
-      var builtInFunc=builtInConv[flag];
-      if (builtInFunc){
-        return param._columnConv[i]=builtInFunc;
-      }else{
-        return param._columnConv[i]=false;  
-      }
-    }else if (typeof flag ==="function"){
-      return param._columnConv[i]=flag;
-    }else{
-      return param._columnConv[i]=false;
-    }
-  }
-}
-function setPath(json, path, value) {
-  var _set = require('lodash/set');
-  var pathArr = path.split('.');
-  if (pathArr.length === 1) {
-    json[path] = value;
-  } else {
-    _set(json, path, value);
-  }
-}
- 
-function getFlag(head, i, param) {
-  if (typeof param._headerFlag[i] === "string") {
-    return param._headerFlag[i];
-  } else if (head.indexOf('*omit*') > -1) {
-    return param._headerFlag[i] = 'omit';
-  } else if (head.indexOf('*flat*') > -1) {
-    return param._headerFlag[i] = 'flat';
-  } else {
-    return param._headerFlag[i] = '';
-  }
-}
- 
-function getTitle(head, i, param) {
-  if (param._headerTitle[i]) {
-    return param._headerTitle[i];
-  }
- 
-  var flag = getFlag(head, i, param);
-  var str = head.replace('*flat*', '').replace('string#!', '').replace('number#!', '');
-  return param._headerTitle[i] = str;
-}
- 
-function checkType(item, head, headIdx, param) {
-  if (param._headerType[headIdx]) {
-    return param._headerType[headIdx];
-  } else if (head.indexOf('number#!') > -1) {
-    return param._headerType[headIdx] = numberType;
-  } else if (head.indexOf('string#!') > -1) {
-    return param._headerType[headIdx] = stringType;
-  } else if (param.checkType) {
-    return param._headerType[headIdx] = dynamicType;
-  } else {
-    return param._headerType[headIdx] = stringType;
-  }
-}
- 
-function numberType(item) {
-  var rtn = parseFloat(item);
-  if (isNaN(rtn)) {
-    return item;
-  }
-  return rtn;
-}
- 
-function stringType(item) {
-  return item.toString();
-}
- 
-function dynamicType(item) {
-  var trimed = item.trim();
-  if (trimed === "") {
-    return stringType(item);
-  }
-  if (numReg.test(trimed)) {
-    return numberType(item);
-  } else if (trimed.length === 5 && trimed.toLowerCase() === "false" || trimed.length === 4 && trimed.toLowerCase() === "true") {
-    return booleanType(item);
-  } else if (trimed[0] === "{" && trimed[trimed.length - 1] === "}" || trimed[0] === "[" && trimed[trimed.length - 1] === "]") {
-    return jsonType(item);
-  } else {
-    return stringType(item);
-  }
-}
- 
-function booleanType(item) {
-  var trimed = item.trim();
-  if (trimed.length === 5 && trimed.toLowerCase() === "false") {
-    return false;
-  } else {
-    return true;
-  }
-}
- 
-function jsonType(item) {
-  try {
-    return JSON.parse(item);
-  } catch (e) {
-    return item;
-  }
-}
- 
-},{"./CSVError":3,"./parserMgr.js":21,"lodash/set":131}],20:[function(require,module,exports){
-var explicitTypes = ["number", "string"];
- 
-function Parser(name, regExp, parser, processSafe) {
-  this.name = typeof name === "undefined" ? "Default" : name;
-  this.regExp = null;
-  this.type = "";
-  this.processSafe = processSafe;
-  if (typeof regExp !== "undefined") {
-    if (typeof regExp === "string") {
-      this.regExp = new RegExp(regExp);
-    } else {
-      this.regExp = regExp;
-    }
-  }
-  if (typeof parser !== "undefined") {
-    this.parse = parser;
-  }
-}
-// var numReg = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;
-Parser.prototype.convertType = function(item) {
-  var type=this.type;
-  if (type === 'number') {
-    var rtn = parseFloat(item);
-    if (isNaN(rtn)) {
-      return 0;
-    } else {
-      return rtn;
-    }
-  } else if (this.param && this.param.checkType && type === '') {
-    var trimed = item.trim();
-    if (trimed === ""){
-      return trimed;
-    }
-    if (!isNaN(trimed)) {
-      return parseFloat(trimed);
-    } else if (trimed.length === 5 && trimed.toLowerCase() === "false") {
-      return false;
-    } else if (trimed.length === 4 && trimed.toLowerCase() === "true") {
-      return true;
-    } else if (trimed[0] === "{" && trimed[trimed.length - 1] === "}" || trimed[0] === "[" && trimed[trimed.length - 1]==="]") {
-      try {
-        return JSON.parse(trimed);
-      } catch (e) {
-        return item;
-      }
-    } else {
-      return item;
-    }
-  }
-  return item;
-};
- 
-Parser.prototype.setParam = function(param) {
-  this.param = param;
-};
- 
-Parser.prototype.test = function(str) {
-  return this.regExp && this.regExp.test(str);
-};
- 
-Parser.prototype.parse = function(params) {
-  params.resultRow[params.head] = params.item;
-};
- 
-Parser.prototype.getHeadStr = function() {
-  if (this.headStr) {
-    return this.headStr;
-  } else {
-    var head = this.head;
-    this.headStr = head.replace(this.regExp, '');
-    if (!this.headStr) {
-      this.headStr = "Unknown Header";
-    }
-    return this.getHeadStr();
-  }
-};
- 
-Parser.prototype.getHead = function() {
-  return this.head;
-};
- 
-Parser.prototype.initHead = function(columnTitle) {
-  this.head = columnTitle;
-  var wholeHead = columnTitle.replace(this.regExp, '');
-  //init type && headStr
-  var splitArr = wholeHead.split("#!");
-  if (splitArr.length === 1) { //no explicit type
-    this.headStr = splitArr[0];
-  } else {
-    var type = splitArr.shift();
-    if (explicitTypes.indexOf(type.toLowerCase()) > -1) {
-      this.type = type;
-      this.headStr = splitArr.join("#!");
-    } else { //no explicit type
-      this.headStr = wholeHead;
-    }
-  }
-  if (!this.headStr) {
-    this.headStr = wholeHead ? wholeHead : "Unknown Head";
-  }
-};
- 
-Parser.prototype.clone = function() {
-  var obj = Object.create(this);
-  var newParser = new Parser();
-  for (var key in obj) {
-    newParser[key] = obj[key];
-  }
-  return newParser;
-};
- 
-Parser.prototype.getName = function() {
-  return this.name;
-};
- 
-module.exports = Parser;
- 
-},{}],21:[function(require,module,exports){
-//implementation
-var registeredParsers = [];
-var Parser = require("./parser.js");
-var defaultParser = require("./defaultParsers");
- 
-function registerParser (parser) {
-  if (parser instanceof Parser && registeredParsers.indexOf(parser) === -1) {
-    registeredParsers.push(parser); // TODO indexOf doesn't work with object references
-  }
-}
- 
-function getParser(columnTitle, param) {
-  var inst, parser;
-  function getParserByName(parserName) {
-    var parser;
-    registeredParsers.forEach(function(p){
-      if (p.getName() === parserName){
-        parser = p;
-      }
-    });
-    if (parser) {
-      var inst = parser.clone();
-      return inst;
-    }
-    return new Parser(); //TODO remove new
-  }
-  columnTitle = columnTitle ? columnTitle : '';
-  registeredParsers.forEach(function(p) {
-    if (p.test(columnTitle)) {
-      parser=p;
-    }
-  });
-  if (parser) {
-    inst = parser.clone();
-    inst.head = columnTitle;
-  } else {
-    inst = getParserByName("json", columnTitle);
-  }
-  inst.setParam(param);
-  inst.initHead(columnTitle);
-  return inst;
-}
- 
-function addParser(name, regExp, parseFunc) {
-  var parser = new Parser(name, regExp, parseFunc,false); //TODO remove new
-  registerParser(parser);
-}
- 
-function addSafeParser(parserPath) {
-  //TODO impl
-}
- 
-function initParsers(row, param) {
-  var parsers = [];
-  row.forEach(function (columnTitle) {
-    parsers.push(getParser(columnTitle, param));
-  });
-  return parsers;
-}
- 
-defaultParser.forEach(function (parserCfg){
-  //TODO refactor this
-  addParser(parserCfg.name, parserCfg.regExp, parserCfg.parserFunc, parserCfg.processSafe);
-});
- 
-//module interfaces
-module.exports.addParser = addParser;
-module.exports.initParsers = initParsers;
-module.exports.getParser = getParser;
- 
-},{"./defaultParsers":7,"./parser.js":20}],22:[function(require,module,exports){
-var getDelimiter = require("./getDelimiter");
-var filterRow=require("./filterRow");
-/**
- * Convert a line of string to csv columns according to its delimiter
- * the param._header may not be ready when this is called.
- * @param  {[type]} rowStr [description]
- * @param  {[type]} param  [Converter param]
- * @return {[type]}        {cols:["a","b","c"],closed:boolean} the closed field indicate if the row is a complete row
- */
-module.exports = function rowSplit(rowStr, param) {
-  if (rowStr === "") {
-    return { cols: [], closed: true };
-  }
-  var quote = param.quote;
-  var trim = param.trim;
-  var escape = param.escape;
-  if (param.delimiter instanceof Array || param.delimiter.toLowerCase() === "auto") {
-    param.delimiter = getDelimiter(rowStr, param);
-  }
-  var delimiter = param.delimiter;
-  var rowArr = rowStr.split(delimiter);
-  if (quote === "off") {
-    return { cols: rowArr, closed: true };
-  }
-  var row = [];
-  var inquote = false;
-  var quoteBuff = '';
-  for (var i = 0, rowLen = rowArr.length; i < rowLen; i++) {
-    var e = rowArr[i];
-    if (!inquote && trim) {
-      e = e.trim();
-    }
-    var len = e.length;
-    if (!inquote) {
-      if (isQuoteOpen(e, param)) { //quote open
-        e = e.substr(1);
-        if (isQuoteClose(e, param)) { //quote close
-          e = e.substring(0, e.length - 1);
-          e = _escapeQuote(e, quote, escape);
-          row.push(e);
-          continue;
-        } else {
-          inquote = true;
-          quoteBuff += e;
-          continue;
-        }
-      } else {
-        row.push(e);
-        continue;
-      }
-    } else { //previous quote not closed
-      if (isQuoteClose(e, param)) { //close double quote
-        inquote = false;
-        e = e.substr(0, len - 1);
-        quoteBuff += delimiter + e;
-        quoteBuff = _escapeQuote(quoteBuff, quote, escape);
-        if (trim) {
-          quoteBuff = quoteBuff.trimRight();
-        }
-        row.push(quoteBuff);
-        quoteBuff = "";
-      } else {
-        quoteBuff += delimiter + e;
-      }
-    }
-  }
- 
-  if (!inquote && param._needFilterRow) {
-    row = filterRow(row, param);
-  }
- 
-  return { cols: row, closed: !inquote };
-  // if (param.workerNum<=1){
-  // }else{
-  //   if (inquote && quoteBuff.length>0){//for multi core, quote will be closed at the end of line
-  //     quoteBuff=_escapeQuote(quoteBuff,quote,escape);;
-  //     if (trim){
-  //       quoteBuff=quoteBuff.trimRight();
-  //     }
-  //     row.push(quoteBuff);
-  //   }
-  //   return {cols:row,closed:true};
-  // }
- 
-};
- 
- 
- 
-function isQuoteOpen(str, param) {
-  var quote = param.quote;
-  var escape = param.escape;
-  return str[0] === quote && (
-    str[1] !== quote ||
-    str[1] === escape && (str[2] === quote || str.length === 2));
-}
-function isQuoteClose(str, param) {
-  var quote = param.quote;
-  var count = 0;
-  var idx = str.length - 1;
-  var escape = param.escape;
-  while (str[idx] === quote || str[idx] === escape) {
-    idx--;
-    count++;
-  }
-  return count % 2 !== 0;
-}
- 
-function twoDoubleQuote(str, quote) {
-  var twoQuote = quote + quote;
-  var curIndex = -1;
-  while ((curIndex = str.indexOf(twoQuote, curIndex)) > -1) {
-    str = str.substring(0, curIndex) + str.substring(++curIndex);
-  }
-  return str;
-}
- 
-var cachedRegExp = {};
-function _escapeQuote(segment, quote, escape) {
- 
-  var key = "es|" + quote + "|" + escape;
-  if (cachedRegExp[key] === undefined) {
-    if (escape === "\\") {
-      escape = "\\\\";
-    }
-    cachedRegExp[key] = new RegExp(escape + quote, 'g');
-  }
-  var regExp = cachedRegExp[key];
-  return segment.replace(regExp, quote);
-}
- 
-},{"./filterRow":15,"./getDelimiter":16}],23:[function(require,module,exports){
-(function (process,__dirname){
-module.exports = workerMgr;
-var spawn = require("child_process").spawn;
-var eom = "\x03";
-var eom1 = "\x0e";
-var eom2 = "\x0f";
-var CSVError = require('./CSVError');
-function workerMgr() {
- 
-  var exports = {
-    initWorker: initWorker,
-    sendWorker: sendWorker,
-    setParams: setParams,
-    drain: function(){},
-    isRunning: isRunning,
-    destroyWorker: destroyWorker
-  };
-  var workers = [];
-  var running = 0;
-  var waiting = null;
-  function initWorker(num, params) {
-    workers = [];
-    running = 0;
-    waiting = null;
-    for (var i = 0; i < num; i++) {
-      workers.push(new Worker(params));
-    }
- 
-  }
-  function isRunning() {
-    return running > 0;
-  }
-  function destroyWorker() {
-    workers.forEach(function(w) {
-      w.destroy();
-    });
-  }
- 
-  function sendWorker(data, startIdx, transformCb, cbResult) {
-    if (workers.length > 0) {
-      var worker = workers.shift();
-      running++;
-      worker.parse(data, startIdx, function(result) {
-        // var arr=JSON.parse(result);
-        // arr.forEach(function(item){
-        //   console.log('idx',item.index)
-        // })
-        workers.push(worker);
-        cbResult(result, startIdx);
-        running--;
-        if (waiting === null && running === 0) {
-          exports.drain();
-        } else if (waiting) {
-          sendWorker.apply(this, waiting);
-          waiting = null;
-        }
-      });
-      process.nextTick(transformCb);
-    } else {
-      waiting = [data, startIdx, transformCb, cbResult];
-    }
-  }
- 
-  function setParams(params) {
-    workers.forEach(function(w) {
-      w.setParams(params);
-    });
-  }
-  return exports;
-}
- 
-function Worker(params) {
-  this.cp = spawn(process.execPath, [__dirname + "/worker.js"], {
-    env: {
-      child:true
-    },
-    stdio:['pipe', 'pipe', 2, 'ipc']
-    // stdio:[0,1,2,'ipc']
-  });
-  this.setParams(params);
-  this.cp.on("message", this.onChildMsg.bind(this));
-  this.buffer = "";
-  var self = this;
-  this.cp.stdout.on("data", function(d) {
-    var str = d.toString("utf8");
-    var all = self.buffer + str;
-    var cmdArr = all.split(eom);
-    while (cmdArr.length > 1) {
-      self.onChildMsg(cmdArr.shift());
-    }
-    self.buffer = cmdArr[0];
-  });
-}
- 
-Worker.prototype.setParams = function(params) {
-  var msg = "0" + JSON.stringify(params);
-  this.sendMsg(msg);
-};
- 
-/**
- * msg is like:
- * <cmd><data>
- * cmd is from 0-9
- */
-Worker.prototype.onChildMsg = function(msg) {
-  if (msg) {
-    var cmd = msg[0];
-    var data = msg.substr(1);
-    switch (cmd) {
-      case "0": //total line number of current chunk
-        if (this.cbLine) {
-          var sp = data.split("|");
-          var len = parseInt(sp[0]);
-          var partial = sp[1];
-          this.cbLine(len, partial);
-        }
-        break;
-      case "1": // json array of current chunk
-        if (this.cbResult) {
-          var rows = data.split(eom1);
-          rows.pop();
-          var res = [];
-          rows.forEach(function(row) {
-            var sp = row.split(eom2);
-            res.push({
-              index: sp[0],
-              row: sp[1],
-              err: sp[2] ? CSVError.fromArray(JSON.parse(sp[2])) : null,
-              json: sp[3]
-            });
-          });
-          this.cbResult(res);
-        }
-        break;
-    }
-  }
-};
- 
-Worker.prototype.parse = function(data, startIdx, cbResult) {
-  this.cbResult = cbResult;
-  var msg = "1" + startIdx + "|" + data;
-  this.sendMsg(msg);
-};
- 
-Worker.prototype.destroy = function() {
-  this.cp.kill();
-};
- 
-Worker.prototype.sendMsg = function(msg) {
-  this.cp.stdin.write(msg + eom, "utf8");
-  // this.cp.send(msg)
-};
- 
-}).call(this,require('_process'),"/libs/core")
-},{"./CSVError":3,"_process":42,"child_process":31}],24:[function(require,module,exports){
-//deprecated but leave it for backword compatibility
-module.exports.core=require("./core");
- 
-//live apis
-module.exports=require("./core");
-module.exports.interfaces = require("./interfaces");
- 
-},{"./core":18,"./interfaces":27}],25:[function(require,module,exports){
-module.exports = require("./main.js");
-},{"./main.js":26}],26:[function(require,module,exports){
-(function (process){
-/**
- * Convert input to process stdout
- */
- 
-//implementation
-var Converter = require("../../core/Converter.js");
-function _initConverter(){
-    var csvConverter = new Converter();
-    var started = false;
-    var writeStream = process.stdout;
-    csvConverter.on("record_parsed",function(rowJSON){
-        if (started){
-            writeStream.write(",\n");
-        }
-        writeStream.write(JSON.stringify(rowJSON));  //write parsed JSON object one by one.
-        if (started === false){
-            started = true;
-        }
-    });
-    writeStream.write("[\n"); //write array symbol
- 
-    csvConverter.on("end_parsed",function(){
-        writeStream.write("\n]"); //end array symbol
-    });
-    csvConverter.on("error",function(err){
-        console.error(err);
-        process.exit(-1);
-    });
-    return csvConverter;
-}
-function convertFile(fileName){
-    var csvConverter=_initConverter();
-    csvConverter.from(fileName);
-}
- 
-function convertString(csvString){
-    var csvConverter=_initConverter();
-    csvConverter.from(csvString);
-}
-//module interfaces
-module.exports.convertFile = convertFile;
-module.exports.convertString = convertString;
-}).call(this,require('_process'))
-},{"../../core/Converter.js":4,"_process":42}],27:[function(require,module,exports){
-module.exports.web=require("./web");
-module.exports.cli=require("./cli");
-},{"./cli":25,"./web":28}],28:[function(require,module,exports){
-module.exports = require("./webServer.js");
-},{"./webServer.js":29}],29:[function(require,module,exports){
-var http = require("http");
-var Converter = require("../../core/Converter.js");
-function startWebServer (args) {
-    args = args || {};
-    var serverArgs = {
-        port: args.port || '8801',
-        urlpath: args.urlpath || '/parseCSV'
-    };
-    var server = http.createServer();
-    server.on("request", function(req, res){
-        if (req.url === serverArgs.urlpath && req.method === "POST"){
-            req.pipe(new Converter({constructResult:false})).pipe(res);
-        } else {
-            res.end("Please post data to: " + serverArgs.urlpath);
-        }
-    });
- 
-    server.listen(serverArgs.port);
-    console.log("CSV Web Server Listen On:" + serverArgs.port);
-    console.log("POST to " + serverArgs.urlpath + " with CSV data to get parsed.");
-    return server;
-}
-module.exports.startWebServer = startWebServer;
- 
-},{"../../core/Converter.js":4,"http":61}],30:[function(require,module,exports){
-(function (Buffer){
-'use strict';
-var util = require('util');
-var Transform = require('stream').Transform;
- 
-function ctor(options, transform) {
-	util.inherits(FirstChunk, Transform);
- 
-	if (typeof options === 'function') {
-		transform = options;
-		options = {};
-	}
- 
-	if (typeof transform !== 'function') {
-		throw new Error('transform function required');
-	}
- 
-	function FirstChunk(options2) {
-		if (!(this instanceof FirstChunk)) {
-			return new FirstChunk(options2);
-		}
- 
-		Transform.call(this, options2);
- 
-		this._firstChunk = true;
-		this._transformCalled = false;
-		this._minSize = options.minSize;
-	}
- 
-	FirstChunk.prototype._transform = function (chunk, enc, cb) {
-		this._enc = enc;
- 
-		if (this._firstChunk) {
-			this._firstChunk = false;
- 
-			if (this._minSize == null) {
-				transform.call(this, chunk, enc, cb);
-				this._transformCalled = true;
-				return;
-			}
- 
-			this._buffer = chunk;
-			cb();
-			return;
-		}
- 
-		if (this._minSize == null) {
-			this.push(chunk);
-			cb();
-			return;
-		}
- 
-		if (this._buffer.length < this._minSize) {
-			this._buffer = Buffer.concat([this._buffer, chunk]);
-			cb();
-			return;
-		}
- 
-		if (this._buffer.length >= this._minSize) {
-			transform.call(this, this._buffer.slice(), enc, function () {
-				this.push(chunk);
-				cb();
-			}.bind(this));
-			this._transformCalled = true;
-			this._buffer = false;
-			return;
-		}
- 
-		this.push(chunk);
-		cb();
-	};
- 
-	FirstChunk.prototype._flush = function (cb) {
-		if (!this._buffer) {
-			cb();
-			return;
-		}
- 
-		if (this._transformCalled) {
-			this.push(this._buffer);
-			cb();
-		} else {
-			transform.call(this, this._buffer.slice(), this._enc, cb);
-		}
-	};
- 
-	return FirstChunk;
-}
- 
-module.exports = function () {
-	return ctor.apply(ctor, arguments)();
-};
- 
-module.exports.ctor = ctor;
- 
-}).call(this,require("buffer").Buffer)
-},{"buffer":33,"stream":60,"util":73}],31:[function(require,module,exports){
- 
-},{}],32:[function(require,module,exports){
-arguments[4][31][0].apply(exports,arguments)
-},{"dup":31}],33:[function(require,module,exports){
-(function (global){
-/*!
- * The buffer module from node.js, for the browser.
- *
- * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
- * @license  MIT
- */
-/* eslint-disable no-proto */
- 
-'use strict'
- 
-var base64 = require('base64-js')
-var ieee754 = require('ieee754')
-var isArray = require('isarray')
- 
-exports.Buffer = Buffer
-exports.SlowBuffer = SlowBuffer
-exports.INSPECT_MAX_BYTES = 50
-Buffer.poolSize = 8192 // not used by this implementation
- 
-var rootParent = {}
- 
-/**
- * If `Buffer.TYPED_ARRAY_SUPPORT`:
- *   === true    Use Uint8Array implementation (fastest)
- *   === false   Use Object implementation (most compatible, even IE6)
- *
- * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
- * Opera 11.6+, iOS 4.2+.
- *
- * Due to various browser bugs, sometimes the Object implementation will be used even
- * when the browser supports typed arrays.
- *
- * Note:
- *
- *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
- *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
- *
- *   - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property
- *     on objects.
- *
- *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
- *
- *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
- *     incorrect length in some situations.
- 
- * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
- * get the Object implementation, which is slower but behaves correctly.
- */
-Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
-  ? global.TYPED_ARRAY_SUPPORT
-  : typedArraySupport()
- 
-function typedArraySupport () {
-  function Bar () {}
-  try {
-    var arr = new Uint8Array(1)
-    arr.foo = function () { return 42 }
-    arr.constructor = Bar
-    return arr.foo() === 42 && // typed array instances can be augmented
-        arr.constructor === Bar && // constructor can be set
-        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
-        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
-  } catch (e) {
-    return false
-  }
-}
- 
-function kMaxLength () {
-  return Buffer.TYPED_ARRAY_SUPPORT
-    ? 0x7fffffff
-    : 0x3fffffff
-}
- 
-/**
- * Class: Buffer
- * =============
- *
- * The Buffer constructor returns instances of `Uint8Array` that are augmented
- * with function properties for all the node `Buffer` API functions. We use
- * `Uint8Array` so that square bracket notation works as expected -- it returns
- * a single octet.
- *
- * By augmenting the instances, we can avoid modifying the `Uint8Array`
- * prototype.
- */
-function Buffer (arg) {
-  if (!(this instanceof Buffer)) {
-    // Avoid going through an ArgumentsAdaptorTrampoline in the common case.
-    if (arguments.length > 1) return new Buffer(arg, arguments[1])
-    return new Buffer(arg)
-  }
- 
-  if (!Buffer.TYPED_ARRAY_SUPPORT) {
-    this.length = 0
-    this.parent = undefined
-  }
- 
-  // Common case.
-  if (typeof arg === 'number') {
-    return fromNumber(this, arg)
-  }
- 
-  // Slightly less common case.
-  if (typeof arg === 'string') {
-    return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')
-  }
- 
-  // Unusual.
-  return fromObject(this, arg)
-}
- 
-function fromNumber (that, length) {
-  that = allocate(that, length < 0 ? 0 : checked(length) | 0)
-  if (!Buffer.TYPED_ARRAY_SUPPORT) {
-    for (var i = 0; i < length; i++) {
-      that[i] = 0
-    }
-  }
-  return that
-}
- 
-function fromString (that, string, encoding) {
-  if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'
- 
-  // Assumption: byteLength() return value is always < kMaxLength.
-  var length = byteLength(string, encoding) | 0
-  that = allocate(that, length)
- 
-  that.write(string, encoding)
-  return that
-}
- 
-function fromObject (that, object) {
-  if (Buffer.isBuffer(object)) return fromBuffer(that, object)
- 
-  if (isArray(object)) return fromArray(that, object)
- 
-  if (object == null) {
-    throw new TypeError('must start with number, buffer, array or string')
-  }
- 
-  if (typeof ArrayBuffer !== 'undefined') {
-    if (object.buffer instanceof ArrayBuffer) {
-      return fromTypedArray(that, object)
-    }
-    if (object instanceof ArrayBuffer) {
-      return fromArrayBuffer(that, object)
-    }
-  }
- 
-  if (object.length) return fromArrayLike(that, object)
- 
-  return fromJsonObject(that, object)
-}
- 
-function fromBuffer (that, buffer) {
-  var length = checked(buffer.length) | 0
-  that = allocate(that, length)
-  buffer.copy(that, 0, 0, length)
-  return that
-}
- 
-function fromArray (that, array) {
-  var length = checked(array.length) | 0
-  that = allocate(that, length)
-  for (var i = 0; i < length; i += 1) {
-    that[i] = array[i] & 255
-  }
-  return that
-}
- 
-// Duplicate of fromArray() to keep fromArray() monomorphic.
-function fromTypedArray (that, array) {
-  var length = checked(array.length) | 0
-  that = allocate(that, length)
-  // Truncating the elements is probably not what people expect from typed
-  // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior
-  // of the old Buffer constructor.
-  for (var i = 0; i < length; i += 1) {
-    that[i] = array[i] & 255
-  }
-  return that
-}
- 
-function fromArrayBuffer (that, array) {
-  if (Buffer.TYPED_ARRAY_SUPPORT) {
-    // Return an augmented `Uint8Array` instance, for best performance
-    array.byteLength
-    that = Buffer._augment(new Uint8Array(array))
-  } else {
-    // Fallback: Return an object instance of the Buffer class
-    that = fromTypedArray(that, new Uint8Array(array))
-  }
-  return that
-}
- 
-function fromArrayLike (that, array) {
-  var length = checked(array.length) | 0
-  that = allocate(that, length)
-  for (var i = 0; i < length; i += 1) {
-    that[i] = array[i] & 255
-  }
-  return that
-}
- 
-// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.
-// Returns a zero-length buffer for inputs that don't conform to the spec.
-function fromJsonObject (that, object) {
-  var array
-  var length = 0
- 
-  if (object.type === 'Buffer' && isArray(object.data)) {
-    array = object.data
-    length = checked(array.length) | 0
-  }
-  that = allocate(that, length)
- 
-  for (var i = 0; i < length; i += 1) {
-    that[i] = array[i] & 255
-  }
-  return that
-}
- 
-if (Buffer.TYPED_ARRAY_SUPPORT) {
-  Buffer.prototype.__proto__ = Uint8Array.prototype
-  Buffer.__proto__ = Uint8Array
-} else {
-  // pre-set for values that may exist in the future
-  Buffer.prototype.length = undefined
-  Buffer.prototype.parent = undefined
-}
- 
-function allocate (that, length) {
-  if (Buffer.TYPED_ARRAY_SUPPORT) {
-    // Return an augmented `Uint8Array` instance, for best performance
-    that = Buffer._augment(new Uint8Array(length))
-    that.__proto__ = Buffer.prototype
-  } else {
-    // Fallback: Return an object instance of the Buffer class
-    that.length = length
-    that._isBuffer = true
-  }
- 
-  var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1
-  if (fromPool) that.parent = rootParent
- 
-  return that
-}
- 
-function checked (length) {
-  // Note: cannot use `length < kMaxLength` here because that fails when
-  // length is NaN (which is otherwise coerced to zero.)
-  if (length >= kMaxLength()) {
-    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
-                         'size: 0x' + kMaxLength().toString(16) + ' bytes')
-  }
-  return length | 0
-}
- 
-function SlowBuffer (subject, encoding) {
-  if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)
- 
-  var buf = new Buffer(subject, encoding)
-  delete buf.parent
-  return buf
-}
- 
-Buffer.isBuffer = function isBuffer (b) {
-  return !!(b != null && b._isBuffer)
-}
- 
-Buffer.compare = function compare (a, b) {
-  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
-    throw new TypeError('Arguments must be Buffers')
-  }
- 
-  if (a === b) return 0
- 
-  var x = a.length
-  var y = b.length
- 
-  var i = 0
-  var len = Math.min(x, y)
-  while (i < len) {
-    if (a[i] !== b[i]) break
- 
-    ++i
-  }
- 
-  if (i !== len) {
-    x = a[i]
-    y = b[i]
-  }
- 
-  if (x < y) return -1
-  if (y < x) return 1
-  return 0
-}
- 
-Buffer.isEncoding = function isEncoding (encoding) {
-  switch (String(encoding).toLowerCase()) {
-    case 'hex':
-    case 'utf8':
-    case 'utf-8':
-    case 'ascii':
-    case 'binary':
-    case 'base64':
-    case 'raw':
-    case 'ucs2':
-    case 'ucs-2':
-    case 'utf16le':
-    case 'utf-16le':
-      return true
-    default:
-      return false
-  }
-}
- 
-Buffer.concat = function concat (list, length) {
-  if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')
- 
-  if (list.length === 0) {
-    return new Buffer(0)
-  }
- 
-  var i
-  if (length === undefined) {
-    length = 0
-    for (i = 0; i < list.length; i++) {
-      length += list[i].length
-    }
-  }
- 
-  var buf = new Buffer(length)
-  var pos = 0
-  for (i = 0; i < list.length; i++) {
-    var item = list[i]
-    item.copy(buf, pos)
-    pos += item.length
-  }
-  return buf
-}
- 
-function byteLength (string, encoding) {
-  if (typeof string !== 'string') string = '' + string
- 
-  var len = string.length
-  if (len === 0) return 0
- 
-  // Use a for loop to avoid recursion
-  var loweredCase = false
-  for (;;) {
-    switch (encoding) {
-      case 'ascii':
-      case 'binary':
-      // Deprecated
-      case 'raw':
-      case 'raws':
-        return len
-      case 'utf8':
-      case 'utf-8':
-        return utf8ToBytes(string).length
-      case 'ucs2':
-      case 'ucs-2':
-      case 'utf16le':
-      case 'utf-16le':
-        return len * 2
-      case 'hex':
-        return len >>> 1
-      case 'base64':
-        return base64ToBytes(string).length
-      default:
-        if (loweredCase) return utf8ToBytes(string).length // assume utf8
-        encoding = ('' + encoding).toLowerCase()
-        loweredCase = true
-    }
-  }
-}
-Buffer.byteLength = byteLength
- 
-function slowToString (encoding, start, end) {
-  var loweredCase = false
- 
-  start = start | 0
-  end = end === undefined || end === Infinity ? this.length : end | 0
- 
-  if (!encoding) encoding = 'utf8'
-  if (start < 0) start = 0
-  if (end > this.length) end = this.length
-  if (end <= start) return ''
- 
-  while (true) {
-    switch (encoding) {
-      case 'hex':
-        return hexSlice(this, start, end)
- 
-      case 'utf8':
-      case 'utf-8':
-        return utf8Slice(this, start, end)
- 
-      case 'ascii':
-        return asciiSlice(this, start, end)
- 
-      case 'binary':
-        return binarySlice(this, start, end)
- 
-      case 'base64':
-        return base64Slice(this, start, end)
- 
-      case 'ucs2':
-      case 'ucs-2':
-      case 'utf16le':
-      case 'utf-16le':
-        return utf16leSlice(this, start, end)
- 
-      default:
-        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
-        encoding = (encoding + '').toLowerCase()
-        loweredCase = true
-    }
-  }
-}
- 
-Buffer.prototype.toString = function toString () {
-  var length = this.length | 0
-  if (length === 0) return ''
-  if (arguments.length === 0) return utf8Slice(this, 0, length)
-  return slowToString.apply(this, arguments)
-}
- 
-Buffer.prototype.equals = function equals (b) {
-  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
-  if (this === b) return true
-  return Buffer.compare(this, b) === 0
-}
- 
-Buffer.prototype.inspect = function inspect () {
-  var str = ''
-  var max = exports.INSPECT_MAX_BYTES
-  if (this.length > 0) {
-    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
-    if (this.length > max) str += ' ... '
-  }
-  return '<Buffer ' + str + '>'
-}
- 
-Buffer.prototype.compare = function compare (b) {
-  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
-  if (this === b) return 0
-  return Buffer.compare(this, b)
-}
- 
-Buffer.prototype.indexOf = function indexOf (val, byteOffset) {
-  if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff
-  else if (byteOffset < -0x80000000) byteOffset = -0x80000000
-  byteOffset >>= 0
- 
-  if (this.length === 0) return -1
-  if (byteOffset >= this.length) return -1
- 
-  // Negative offsets start from the end of the buffer
-  if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)
- 
-  if (typeof val === 'string') {
-    if (val.length === 0) return -1 // special case: looking for empty string always fails
-    return String.prototype.indexOf.call(this, val, byteOffset)
-  }
-  if (Buffer.isBuffer(val)) {
-    return arrayIndexOf(this, val, byteOffset)
-  }
-  if (typeof val === 'number') {
-    if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {
-      return Uint8Array.prototype.indexOf.call(this, val, byteOffset)
-    }
-    return arrayIndexOf(this, [ val ], byteOffset)
-  }
- 
-  function arrayIndexOf (arr, val, byteOffset) {
-    var foundIndex = -1
-    for (var i = 0; byteOffset + i < arr.length; i++) {
-      if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {
-        if (foundIndex === -1) foundIndex = i
-        if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex
-      } else {
-        foundIndex = -1
-      }
-    }
-    return -1
-  }
- 
-  throw new TypeError('val must be string, number or Buffer')
-}
- 
-// `get` is deprecated
-Buffer.prototype.get = function get (offset) {
-  console.log('.get() is deprecated. Access using array indexes instead.')
-  return this.readUInt8(offset)
-}
- 
-// `set` is deprecated
-Buffer.prototype.set = function set (v, offset) {
-  console.log('.set() is deprecated. Access using array indexes instead.')
-  return this.writeUInt8(v, offset)
-}
- 
-function hexWrite (buf, string, offset, length) {
-  offset = Number(offset) || 0
-  var remaining = buf.length - offset
-  if (!length) {
-    length = remaining
-  } else {
-    length = Number(length)
-    if (length > remaining) {
-      length = remaining
-    }
-  }
- 
-  // must be an even number of digits
-  var strLen = string.length
-  if (strLen % 2 !== 0) throw new Error('Invalid hex string')
- 
-  if (length > strLen / 2) {
-    length = strLen / 2
-  }
-  for (var i = 0; i < length; i++) {
-    var parsed = parseInt(string.substr(i * 2, 2), 16)
-    if (isNaN(parsed)) throw new Error('Invalid hex string')
-    buf[offset + i] = parsed
-  }
-  return i
-}
- 
-function utf8Write (buf, string, offset, length) {
-  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
-}
- 
-function asciiWrite (buf, string, offset, length) {
-  return blitBuffer(asciiToBytes(string), buf, offset, length)
-}
- 
-function binaryWrite (buf, string, offset, length) {
-  return asciiWrite(buf, string, offset, length)
-}
- 
-function base64Write (buf, string, offset, length) {
-  return blitBuffer(base64ToBytes(string), buf, offset, length)
-}
- 
-function ucs2Write (buf, string, offset, length) {
-  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
-}
- 
-Buffer.prototype.write = function write (string, offset, length, encoding) {
-  // Buffer#write(string)
-  if (offset === undefined) {
-    encoding = 'utf8'
-    length = this.length
-    offset = 0
-  // Buffer#write(string, encoding)
-  } else if (length === undefined && typeof offset === 'string') {
-    encoding = offset
-    length = this.length
-    offset = 0
-  // Buffer#write(string, offset[, length][, encoding])
-  } else if (isFinite(offset)) {
-    offset = offset | 0
-    if (isFinite(length)) {
-      length = length | 0
-      if (encoding === undefined) encoding = 'utf8'
-    } else {
-      encoding = length
-      length = undefined
-    }
-  // legacy write(string, encoding, offset, length) - remove in v0.13
-  } else {
-    var swap = encoding
-    encoding = offset
-    offset = length | 0
-    length = swap
-  }
- 
-  var remaining = this.length - offset
-  if (length === undefined || length > remaining) length = remaining
- 
-  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
-    throw new RangeError('attempt to write outside buffer bounds')
-  }
- 
-  if (!encoding) encoding = 'utf8'
- 
-  var loweredCase = false
-  for (;;) {
-    switch (encoding) {
-      case 'hex':
-        return hexWrite(this, string, offset, length)
- 
-      case 'utf8':
-      case 'utf-8':
-        return utf8Write(this, string, offset, length)
- 
-      case 'ascii':
-        return asciiWrite(this, string, offset, length)
- 
-      case 'binary':
-        return binaryWrite(this, string, offset, length)
- 
-      case 'base64':
-        // Warning: maxLength not taken into account in base64Write
-        return base64Write(this, string, offset, length)
- 
-      case 'ucs2':
-      case 'ucs-2':
-      case 'utf16le':
-      case 'utf-16le':
-        return ucs2Write(this, string, offset, length)
- 
-      default:
-        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
-        encoding = ('' + encoding).toLowerCase()
-        loweredCase = true
-    }
-  }
-}
- 
-Buffer.prototype.toJSON = function toJSON () {
-  return {
-    type: 'Buffer',
-    data: Array.prototype.slice.call(this._arr || this, 0)
-  }
-}
- 
-function base64Slice (buf, start, end) {
-  if (start === 0 && end === buf.length) {
-    return base64.fromByteArray(buf)
-  } else {
-    return base64.fromByteArray(buf.slice(start, end))
-  }
-}
- 
-function utf8Slice (buf, start, end) {
-  end = Math.min(buf.length, end)
-  var res = []
- 
-  var i = start
-  while (i < end) {
-    var firstByte = buf[i]
-    var codePoint = null
-    var bytesPerSequence = (firstByte > 0xEF) ? 4
-      : (firstByte > 0xDF) ? 3
-      : (firstByte > 0xBF) ? 2
-      : 1
- 
-    if (i + bytesPerSequence <= end) {
-      var secondByte, thirdByte, fourthByte, tempCodePoint
- 
-      switch (bytesPerSequence) {
-        case 1:
-          if (firstByte < 0x80) {
-            codePoint = firstByte
-          }
-          break
-        case 2:
-          secondByte = buf[i + 1]
-          if ((secondByte & 0xC0) === 0x80) {
-            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
-            if (tempCodePoint > 0x7F) {
-              codePoint = tempCodePoint
-            }
-          }
-          break
-        case 3:
-          secondByte = buf[i + 1]
-          thirdByte = buf[i + 2]
-          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
-            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
-            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
-              codePoint = tempCodePoint
-            }
-          }
-          break
-        case 4:
-          secondByte = buf[i + 1]
-          thirdByte = buf[i + 2]
-          fourthByte = buf[i + 3]
-          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
-            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
-            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
-              codePoint = tempCodePoint
-            }
-          }
-      }
-    }
- 
-    if (codePoint === null) {
-      // we did not generate a valid codePoint so insert a
-      // replacement char (U+FFFD) and advance only 1 byte
-      codePoint = 0xFFFD
-      bytesPerSequence = 1
-    } else if (codePoint > 0xFFFF) {
-      // encode to utf16 (surrogate pair dance)
-      codePoint -= 0x10000
-      res.push(codePoint >>> 10 & 0x3FF | 0xD800)
-      codePoint = 0xDC00 | codePoint & 0x3FF
-    }
- 
-    res.push(codePoint)
-    i += bytesPerSequence
-  }
- 
-  return decodeCodePointsArray(res)
-}
- 
-// Based on http://stackoverflow.com/a/22747272/680742, the browser with
-// the lowest limit is Chrome, with 0x10000 args.
-// We go 1 magnitude less, for safety
-var MAX_ARGUMENTS_LENGTH = 0x1000
- 
-function decodeCodePointsArray (codePoints) {
-  var len = codePoints.length
-  if (len <= MAX_ARGUMENTS_LENGTH) {
-    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
-  }
- 
-  // Decode in chunks to avoid "call stack size exceeded".
-  var res = ''
-  var i = 0
-  while (i < len) {
-    res += String.fromCharCode.apply(
-      String,
-      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
-    )
-  }
-  return res
-}
- 
-function asciiSlice (buf, start, end) {
-  var ret = ''
-  end = Math.min(buf.length, end)
- 
-  for (var i = start; i < end; i++) {
-    ret += String.fromCharCode(buf[i] & 0x7F)
-  }
-  return ret
-}
- 
-function binarySlice (buf, start, end) {
-  var ret = ''
-  end = Math.min(buf.length, end)
- 
-  for (var i = start; i < end; i++) {
-    ret += String.fromCharCode(buf[i])
-  }
-  return ret
-}
- 
-function hexSlice (buf, start, end) {
-  var len = buf.length
- 
-  if (!start || start < 0) start = 0
-  if (!end || end < 0 || end > len) end = len
- 
-  var out = ''
-  for (var i = start; i < end; i++) {
-    out += toHex(buf[i])
-  }
-  return out
-}
- 
-function utf16leSlice (buf, start, end) {
-  var bytes = buf.slice(start, end)
-  var res = ''
-  for (var i = 0; i < bytes.length; i += 2) {
-    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
-  }
-  return res
-}
- 
-Buffer.prototype.slice = function slice (start, end) {
-  var len = this.length
-  start = ~~start
-  end = end === undefined ? len : ~~end
- 
-  if (start < 0) {
-    start += len
-    if (start < 0) start = 0
-  } else if (start > len) {
-    start = len
-  }
- 
-  if (end < 0) {
-    end += len
-    if (end < 0) end = 0
-  } else if (end > len) {
-    end = len
-  }
- 
-  if (end < start) end = start
- 
-  var newBuf
-  if (Buffer.TYPED_ARRAY_SUPPORT) {
-    newBuf = Buffer._augment(this.subarray(start, end))
-  } else {
-    var sliceLen = end - start
-    newBuf = new Buffer(sliceLen, undefined)
-    for (var i = 0; i < sliceLen; i++) {
-      newBuf[i] = this[i + start]
-    }
-  }
- 
-  if (newBuf.length) newBuf.parent = this.parent || this
- 
-  return newBuf
-}
- 
-/*
- * Need to make sure that buffer isn't trying to write out of bounds.
- */
-function checkOffset (offset, ext, length) {
-  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
-  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
-}
- 
-Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
-  offset = offset | 0
-  byteLength = byteLength | 0
-  if (!noAssert) checkOffset(offset, byteLength, this.length)
- 
-  var val = this[offset]
-  var mul = 1
-  var i = 0
-  while (++i < byteLength && (mul *= 0x100)) {
-    val += this[offset + i] * mul
-  }
- 
-  return val
-}
- 
-Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
-  offset = offset | 0
-  byteLength = byteLength | 0
-  if (!noAssert) {
-    checkOffset(offset, byteLength, this.length)
-  }
- 
-  var val = this[offset + --byteLength]
-  var mul = 1
-  while (byteLength > 0 && (mul *= 0x100)) {
-    val += this[offset + --byteLength] * mul
-  }
- 
-  return val
-}
- 
-Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
-  if (!noAssert) checkOffset(offset, 1, this.length)
-  return this[offset]
-}
- 
-Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
-  if (!noAssert) checkOffset(offset, 2, this.length)
-  return this[offset] | (this[offset + 1] << 8)
-}
- 
-Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
-  if (!noAssert) checkOffset(offset, 2, this.length)
-  return (this[offset] << 8) | this[offset + 1]
-}
- 
-Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
-  if (!noAssert) checkOffset(offset, 4, this.length)
- 
-  return ((this[offset]) |
-      (this[offset + 1] << 8) |
-      (this[offset + 2] << 16)) +
-      (this[offset + 3] * 0x1000000)
-}
- 
-Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
-  if (!noAssert) checkOffset(offset, 4, this.length)
- 
-  return (this[offset] * 0x1000000) +
-    ((this[offset + 1] << 16) |
-    (this[offset + 2] << 8) |
-    this[offset + 3])
-}
- 
-Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
-  offset = offset | 0
-  byteLength = byteLength | 0
-  if (!noAssert) checkOffset(offset, byteLength, this.length)
- 
-  var val = this[offset]
-  var mul = 1
-  var i = 0
-  while (++i < byteLength && (mul *= 0x100)) {
-    val += this[offset + i] * mul
-  }
-  mul *= 0x80
- 
-  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
- 
-  return val
-}
- 
-Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
-  offset = offset | 0
-  byteLength = byteLength | 0
-  if (!noAssert) checkOffset(offset, byteLength, this.length)
- 
-  var i = byteLength
-  var mul = 1
-  var val = this[offset + --i]
-  while (i > 0 && (mul *= 0x100)) {
-    val += this[offset + --i] * mul
-  }
-  mul *= 0x80
- 
-  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
- 
-  return val
-}
- 
-Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
-  if (!noAssert) checkOffset(offset, 1, this.length)
-  if (!(this[offset] & 0x80)) return (this[offset])
-  return ((0xff - this[offset] + 1) * -1)
-}
- 
-Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
-  if (!noAssert) checkOffset(offset, 2, this.length)
-  var val = this[offset] | (this[offset + 1] << 8)
-  return (val & 0x8000) ? val | 0xFFFF0000 : val
-}
- 
-Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
-  if (!noAssert) checkOffset(offset, 2, this.length)
-  var val = this[offset + 1] | (this[offset] << 8)
-  return (val & 0x8000) ? val | 0xFFFF0000 : val
-}
- 
-Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
-  if (!noAssert) checkOffset(offset, 4, this.length)
- 
-  return (this[offset]) |
-    (this[offset + 1] << 8) |
-    (this[offset + 2] << 16) |
-    (this[offset + 3] << 24)
-}
- 
-Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
-  if (!noAssert) checkOffset(offset, 4, this.length)
- 
-  return (this[offset] << 24) |
-    (this[offset + 1] << 16) |
-    (this[offset + 2] << 8) |
-    (this[offset + 3])
-}
- 
-Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
-  if (!noAssert) checkOffset(offset, 4, this.length)
-  return ieee754.read(this, offset, true, 23, 4)
-}
- 
-Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
-  if (!noAssert) checkOffset(offset, 4, this.length)
-  return ieee754.read(this, offset, false, 23, 4)
-}
- 
-Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
-  if (!noAssert) checkOffset(offset, 8, this.length)
-  return ieee754.read(this, offset, true, 52, 8)
-}
- 
-Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
-  if (!noAssert) checkOffset(offset, 8, this.length)
-  return ieee754.read(this, offset, false, 52, 8)
-}
- 
-function checkInt (buf, value, offset, ext, max, min) {
-  if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')
-  if (value > max || value < min) throw new RangeError('value is out of bounds')
-  if (offset + ext > buf.length) throw new RangeError('index out of range')
-}
- 
-Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
-  value = +value
-  offset = offset | 0
-  byteLength = byteLength | 0
-  if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
- 
-  var mul = 1
-  var i = 0
-  this[offset] = value & 0xFF
-  while (++i < byteLength && (mul *= 0x100)) {
-    this[offset + i] = (value / mul) & 0xFF
-  }
- 
-  return offset + byteLength
-}
- 
-Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
-  value = +value
-  offset = offset | 0
-  byteLength = byteLength | 0
-  if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
- 
-  var i = byteLength - 1
-  var mul = 1
-  this[offset + i] = value & 0xFF
-  while (--i >= 0 && (mul *= 0x100)) {
-    this[offset + i] = (value / mul) & 0xFF
-  }
- 
-  return offset + byteLength
-}
- 
-Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
-  value = +value
-  offset = offset | 0
-  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
-  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
-  this[offset] = (value & 0xff)
-  return offset + 1
-}
- 
-function objectWriteUInt16 (buf, value, offset, littleEndian) {
-  if (value < 0) value = 0xffff + value + 1
-  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {
-    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
-      (littleEndian ? i : 1 - i) * 8
-  }
-}
- 
-Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
-  value = +value
-  offset = offset | 0
-  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
-  if (Buffer.TYPED_ARRAY_SUPPORT) {
-    this[offset] = (value & 0xff)
-    this[offset + 1] = (value >>> 8)
-  } else {
-    objectWriteUInt16(this, value, offset, true)
-  }
-  return offset + 2
-}
- 
-Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
-  value = +value
-  offset = offset | 0
-  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
-  if (Buffer.TYPED_ARRAY_SUPPORT) {
-    this[offset] = (value >>> 8)
-    this[offset + 1] = (value & 0xff)
-  } else {
-    objectWriteUInt16(this, value, offset, false)
-  }
-  return offset + 2
-}
- 
-function objectWriteUInt32 (buf, value, offset, littleEndian) {
-  if (value < 0) value = 0xffffffff + value + 1
-  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {
-    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
-  }
-}
- 
-Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
-  value = +value
-  offset = offset | 0
-  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
-  if (Buffer.TYPED_ARRAY_SUPPORT) {
-    this[offset + 3] = (value >>> 24)
-    this[offset + 2] = (value >>> 16)
-    this[offset + 1] = (value >>> 8)
-    this[offset] = (value & 0xff)
-  } else {
-    objectWriteUInt32(this, value, offset, true)
-  }
-  return offset + 4
-}
- 
-Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
-  value = +value
-  offset = offset | 0
-  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
-  if (Buffer.TYPED_ARRAY_SUPPORT) {
-    this[offset] = (value >>> 24)
-    this[offset + 1] = (value >>> 16)
-    this[offset + 2] = (value >>> 8)
-    this[offset + 3] = (value & 0xff)
-  } else {
-    objectWriteUInt32(this, value, offset, false)
-  }
-  return offset + 4
-}
- 
-Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
-  value = +value
-  offset = offset | 0
-  if (!noAssert) {
-    var limit = Math.pow(2, 8 * byteLength - 1)
- 
-    checkInt(this, value, offset, byteLength, limit - 1, -limit)
-  }
- 
-  var i = 0
-  var mul = 1
-  var sub = value < 0 ? 1 : 0
-  this[offset] = value & 0xFF
-  while (++i < byteLength && (mul *= 0x100)) {
-    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
-  }
- 
-  return offset + byteLength
-}
- 
-Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
-  value = +value
-  offset = offset | 0
-  if (!noAssert) {
-    var limit = Math.pow(2, 8 * byteLength - 1)
- 
-    checkInt(this, value, offset, byteLength, limit - 1, -limit)
-  }
- 
-  var i = byteLength - 1
-  var mul = 1
-  var sub = value < 0 ? 1 : 0
-  this[offset + i] = value & 0xFF
-  while (--i >= 0 && (mul *= 0x100)) {
-    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
-  }
- 
-  return offset + byteLength
-}
- 
-Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
-  value = +value
-  offset = offset | 0
-  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
-  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
-  if (value < 0) value = 0xff + value + 1
-  this[offset] = (value & 0xff)
-  return offset + 1
-}
- 
-Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
-  value = +value
-  offset = offset | 0
-  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
-  if (Buffer.TYPED_ARRAY_SUPPORT) {
-    this[offset] = (value & 0xff)
-    this[offset + 1] = (value >>> 8)
-  } else {
-    objectWriteUInt16(this, value, offset, true)
-  }
-  return offset + 2
-}
- 
-Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
-  value = +value
-  offset = offset | 0
-  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
-  if (Buffer.TYPED_ARRAY_SUPPORT) {
-    this[offset] = (value >>> 8)
-    this[offset + 1] = (value & 0xff)
-  } else {
-    objectWriteUInt16(this, value, offset, false)
-  }
-  return offset + 2
-}
- 
-Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
-  value = +value
-  offset = offset | 0
-  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
-  if (Buffer.TYPED_ARRAY_SUPPORT) {
-    this[offset] = (value & 0xff)
-    this[offset + 1] = (value >>> 8)
-    this[offset + 2] = (value >>> 16)
-    this[offset + 3] = (value >>> 24)
-  } else {
-    objectWriteUInt32(this, value, offset, true)
-  }
-  return offset + 4
-}
- 
-Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
-  value = +value
-  offset = offset | 0
-  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
-  if (value < 0) value = 0xffffffff + value + 1
-  if (Buffer.TYPED_ARRAY_SUPPORT) {
-    this[offset] = (value >>> 24)
-    this[offset + 1] = (value >>> 16)
-    this[offset + 2] = (value >>> 8)
-    this[offset + 3] = (value & 0xff)
-  } else {
-    objectWriteUInt32(this, value, offset, false)
-  }
-  return offset + 4
-}
- 
-function checkIEEE754 (buf, value, offset, ext, max, min) {
-  if (value > max || value < min) throw new RangeError('value is out of bounds')
-  if (offset + ext > buf.length) throw new RangeError('index out of range')
-  if (offset < 0) throw new RangeError('index out of range')
-}
- 
-function writeFloat (buf, value, offset, littleEndian, noAssert) {
-  if (!noAssert) {
-    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
-  }
-  ieee754.write(buf, value, offset, littleEndian, 23, 4)
-  return offset + 4
-}
- 
-Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
-  return writeFloat(this, value, offset, true, noAssert)
-}
- 
-Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
-  return writeFloat(this, value, offset, false, noAssert)
-}
- 
-function writeDouble (buf, value, offset, littleEndian, noAssert) {
-  if (!noAssert) {
-    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
-  }
-  ieee754.write(buf, value, offset, littleEndian, 52, 8)
-  return offset + 8
-}
- 
-Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
-  return writeDouble(this, value, offset, true, noAssert)
-}
- 
-Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
-  return writeDouble(this, value, offset, false, noAssert)
-}
- 
-// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
-Buffer.prototype.copy = function copy (target, targetStart, start, end) {
-  if (!start) start = 0
-  if (!end && end !== 0) end = this.length
-  if (targetStart >= target.length) targetStart = target.length
-  if (!targetStart) targetStart = 0
-  if (end > 0 && end < start) end = start
- 
-  // Copy 0 bytes; we're done
-  if (end === start) return 0
-  if (target.length === 0 || this.length === 0) return 0
- 
-  // Fatal error conditions
-  if (targetStart < 0) {
-    throw new RangeError('targetStart out of bounds')
-  }
-  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
-  if (end < 0) throw new RangeError('sourceEnd out of bounds')
- 
-  // Are we oob?
-  if (end > this.length) end = this.length
-  if (target.length - targetStart < end - start) {
-    end = target.length - targetStart + start
-  }
- 
-  var len = end - start
-  var i
- 
-  if (this === target && start < targetStart && targetStart < end) {
-    // descending copy from end
-    for (i = len - 1; i >= 0; i--) {
-      target[i + targetStart] = this[i + start]
-    }
-  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
-    // ascending copy from start
-    for (i = 0; i < len; i++) {
-      target[i + targetStart] = this[i + start]
-    }
-  } else {
-    target._set(this.subarray(start, start + len), targetStart)
-  }
- 
-  return len
-}
- 
-// fill(value, start=0, end=buffer.length)
-Buffer.prototype.fill = function fill (value, start, end) {
-  if (!value) value = 0
-  if (!start) start = 0
-  if (!end) end = this.length
- 
-  if (end < start) throw new RangeError('end < start')
- 
-  // Fill 0 bytes; we're done
-  if (end === start) return
-  if (this.length === 0) return
- 
-  if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')
-  if (end < 0 || end > this.length) throw new RangeError('end out of bounds')
- 
-  var i
-  if (typeof value === 'number') {
-    for (i = start; i < end; i++) {
-      this[i] = value
-    }
-  } else {
-    var bytes = utf8ToBytes(value.toString())
-    var len = bytes.length
-    for (i = start; i < end; i++) {
-      this[i] = bytes[i % len]
-    }
-  }
- 
-  return this
-}
- 
-/**
- * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
- * Added in Node 0.12. Only available in browsers that support ArrayBuffer.
- */
-Buffer.prototype.toArrayBuffer = function toArrayBuffer () {
-  if (typeof Uint8Array !== 'undefined') {
-    if (Buffer.TYPED_ARRAY_SUPPORT) {
-      return (new Buffer(this)).buffer
-    } else {
-      var buf = new Uint8Array(this.length)
-      for (var i = 0, len = buf.length; i < len; i += 1) {
-        buf[i] = this[i]
-      }
-      return buf.buffer
-    }
-  } else {
-    throw new TypeError('Buffer.toArrayBuffer not supported in this browser')
-  }
-}
- 
-// HELPER FUNCTIONS
-// ================
- 
-var BP = Buffer.prototype
- 
-/**
- * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
- */
-Buffer._augment = function _augment (arr) {
-  arr.constructor = Buffer
-  arr._isBuffer = true
- 
-  // save reference to original Uint8Array set method before overwriting
-  arr._set = arr.set
- 
-  // deprecated
-  arr.get = BP.get
-  arr.set = BP.set
- 
-  arr.write = BP.write
-  arr.toString = BP.toString
-  arr.toLocaleString = BP.toString
-  arr.toJSON = BP.toJSON
-  arr.equals = BP.equals
-  arr.compare = BP.compare
-  arr.indexOf = BP.indexOf
-  arr.copy = BP.copy
-  arr.slice = BP.slice
-  arr.readUIntLE = BP.readUIntLE
-  arr.readUIntBE = BP.readUIntBE
-  arr.readUInt8 = BP.readUInt8
-  arr.readUInt16LE = BP.readUInt16LE
-  arr.readUInt16BE = BP.readUInt16BE
-  arr.readUInt32LE = BP.readUInt32LE
-  arr.readUInt32BE = BP.readUInt32BE
-  arr.readIntLE = BP.readIntLE
-  arr.readIntBE = BP.readIntBE
-  arr.readInt8 = BP.readInt8
-  arr.readInt16LE = BP.readInt16LE
-  arr.readInt16BE = BP.readInt16BE
-  arr.readInt32LE = BP.readInt32LE
-  arr.readInt32BE = BP.readInt32BE
-  arr.readFloatLE = BP.readFloatLE
-  arr.readFloatBE = BP.readFloatBE
-  arr.readDoubleLE = BP.readDoubleLE
-  arr.readDoubleBE = BP.readDoubleBE
-  arr.writeUInt8 = BP.writeUInt8
-  arr.writeUIntLE = BP.writeUIntLE
-  arr.writeUIntBE = BP.writeUIntBE
-  arr.writeUInt16LE = BP.writeUInt16LE
-  arr.writeUInt16BE = BP.writeUInt16BE
-  arr.writeUInt32LE = BP.writeUInt32LE
-  arr.writeUInt32BE = BP.writeUInt32BE
-  arr.writeIntLE = BP.writeIntLE
-  arr.writeIntBE = BP.writeIntBE
-  arr.writeInt8 = BP.writeInt8
-  arr.writeInt16LE = BP.writeInt16LE
-  arr.writeInt16BE = BP.writeInt16BE
-  arr.writeInt32LE = BP.writeInt32LE
-  arr.writeInt32BE = BP.writeInt32BE
-  arr.writeFloatLE = BP.writeFloatLE
-  arr.writeFloatBE = BP.writeFloatBE
-  arr.writeDoubleLE = BP.writeDoubleLE
-  arr.writeDoubleBE = BP.writeDoubleBE
-  arr.fill = BP.fill
-  arr.inspect = BP.inspect
-  arr.toArrayBuffer = BP.toArrayBuffer
- 
-  return arr
-}
- 
-var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
- 
-function base64clean (str) {
-  // Node strips out invalid characters like \n and \t from the string, base64-js does not
-  str = stringtrim(str).replace(INVALID_BASE64_RE, '')
-  // Node converts strings with length < 2 to ''
-  if (str.length < 2) return ''
-  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
-  while (str.length % 4 !== 0) {
-    str = str + '='
-  }
-  return str
-}
- 
-function stringtrim (str) {
-  if (str.trim) return str.trim()
-  return str.replace(/^\s+|\s+$/g, '')
-}
- 
-function toHex (n) {
-  if (n < 16) return '0' + n.toString(16)
-  return n.toString(16)
-}
- 
-function utf8ToBytes (string, units) {
-  units = units || Infinity
-  var codePoint
-  var length = string.length
-  var leadSurrogate = null
-  var bytes = []
- 
-  for (var i = 0; i < length; i++) {
-    codePoint = string.charCodeAt(i)
- 
-    // is surrogate component
-    if (codePoint > 0xD7FF && codePoint < 0xE000) {
-      // last char was a lead
-      if (!leadSurrogate) {
-        // no lead yet
-        if (codePoint > 0xDBFF) {
-          // unexpected trail
-          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-          continue
-        } else if (i + 1 === length) {
-          // unpaired lead
-          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-          continue
-        }
- 
-        // valid lead
-        leadSurrogate = codePoint
- 
-        continue
-      }
- 
-      // 2 leads in a row
-      if (codePoint < 0xDC00) {
-        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-        leadSurrogate = codePoint
-        continue
-      }
- 
-      // valid surrogate pair
-      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
-    } else if (leadSurrogate) {
-      // valid bmp char, but last char was a lead
-      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-    }
- 
-    leadSurrogate = null
- 
-    // encode utf8
-    if (codePoint < 0x80) {
-      if ((units -= 1) < 0) break
-      bytes.push(codePoint)
-    } else if (codePoint < 0x800) {
-      if ((units -= 2) < 0) break
-      bytes.push(
-        codePoint >> 0x6 | 0xC0,
-        codePoint & 0x3F | 0x80
-      )
-    } else if (codePoint < 0x10000) {
-      if ((units -= 3) < 0) break
-      bytes.push(
-        codePoint >> 0xC | 0xE0,
-        codePoint >> 0x6 & 0x3F | 0x80,
-        codePoint & 0x3F | 0x80
-      )
-    } else if (codePoint < 0x110000) {
-      if ((units -= 4) < 0) break
-      bytes.push(
-        codePoint >> 0x12 | 0xF0,
-        codePoint >> 0xC & 0x3F | 0x80,
-        codePoint >> 0x6 & 0x3F | 0x80,
-        codePoint & 0x3F | 0x80
-      )
-    } else {
-      throw new Error('Invalid code point')
-    }
-  }
- 
-  return bytes
-}
- 
-function asciiToBytes (str) {
-  var byteArray = []
-  for (var i = 0; i < str.length; i++) {
-    // Node's code seems to be doing this and not & 0x7F..
-    byteArray.push(str.charCodeAt(i) & 0xFF)
-  }
-  return byteArray
-}
- 
-function utf16leToBytes (str, units) {
-  var c, hi, lo
-  var byteArray = []
-  for (var i = 0; i < str.length; i++) {
-    if ((units -= 2) < 0) break
- 
-    c = str.charCodeAt(i)
-    hi = c >> 8
-    lo = c % 256
-    byteArray.push(lo)
-    byteArray.push(hi)
-  }
- 
-  return byteArray
-}
- 
-function base64ToBytes (str) {
-  return base64.toByteArray(base64clean(str))
-}
- 
-function blitBuffer (src, dst, offset, length) {
-  for (var i = 0; i < length; i++) {
-    if ((i + offset >= dst.length) || (i >= src.length)) break
-    dst[i + offset] = src[i]
-  }
-  return i
-}
- 
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"base64-js":34,"ieee754":35,"isarray":36}],34:[function(require,module,exports){
-var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
- 
-;(function (exports) {
-	'use strict';
- 
-  var Arr = (typeof Uint8Array !== 'undefined')
-    ? Uint8Array
-    : Array
- 
-	var PLUS   = '+'.charCodeAt(0)
-	var SLASH  = '/'.charCodeAt(0)
-	var NUMBER = '0'.charCodeAt(0)
-	var LOWER  = 'a'.charCodeAt(0)
-	var UPPER  = 'A'.charCodeAt(0)
-	var PLUS_URL_SAFE = '-'.charCodeAt(0)
-	var SLASH_URL_SAFE = '_'.charCodeAt(0)
- 
-	function decode (elt) {
-		var code = elt.charCodeAt(0)
-		if (code === PLUS ||
-		    code === PLUS_URL_SAFE)
-			return 62 // '+'
-		if (code === SLASH ||
-		    code === SLASH_URL_SAFE)
-			return 63 // '/'
-		if (code < NUMBER)
-			return -1 //no match
-		if (code < NUMBER + 10)
-			return code - NUMBER + 26 + 26
-		if (code < UPPER + 26)
-			return code - UPPER
-		if (code < LOWER + 26)
-			return code - LOWER + 26
-	}
- 
-	function b64ToByteArray (b64) {
-		var i, j, l, tmp, placeHolders, arr
- 
-		if (b64.length % 4 > 0) {
-			throw new Error('Invalid string. Length must be a multiple of 4')
-		}
- 
-		// the number of equal signs (place holders)
-		// if there are two placeholders, than the two characters before it
-		// represent one byte
-		// if there is only one, then the three characters before it represent 2 bytes
-		// this is just a cheap hack to not do indexOf twice
-		var len = b64.length
-		placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0
- 
-		// base64 is 4/3 + up to two characters of the original data
-		arr = new Arr(b64.length * 3 / 4 - placeHolders)
- 
-		// if there are placeholders, only get up to the last complete 4 chars
-		l = placeHolders > 0 ? b64.length - 4 : b64.length
- 
-		var L = 0
- 
-		function push (v) {
-			arr[L++] = v
-		}
- 
-		for (i = 0, j = 0; i < l; i += 4, j += 3) {
-			tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
-			push((tmp & 0xFF0000) >> 16)
-			push((tmp & 0xFF00) >> 8)
-			push(tmp & 0xFF)
-		}
- 
-		if (placeHolders === 2) {
-			tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
-			push(tmp & 0xFF)
-		} else if (placeHolders === 1) {
-			tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
-			push((tmp >> 8) & 0xFF)
-			push(tmp & 0xFF)
-		}
- 
-		return arr
-	}
- 
-	function uint8ToBase64 (uint8) {
-		var i,
-			extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
-			output = "",
-			temp, length
- 
-		function encode (num) {
-			return lookup.charAt(num)
-		}
- 
-		function tripletToBase64 (num) {
-			return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
-		}
- 
-		// go through the array every three bytes, we'll deal with trailing stuff later
-		for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
-			temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
-			output += tripletToBase64(temp)
-		}
- 
-		// pad the end with zeros, but make sure to not forget the extra bytes
-		switch (extraBytes) {
-			case 1:
-				temp = uint8[uint8.length - 1]
-				output += encode(temp >> 2)
-				output += encode((temp << 4) & 0x3F)
-				output += '=='
-				break
-			case 2:
-				temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
-				output += encode(temp >> 10)
-				output += encode((temp >> 4) & 0x3F)
-				output += encode((temp << 2) & 0x3F)
-				output += '='
-				break
-		}
- 
-		return output
-	}
- 
-	exports.toByteArray = b64ToByteArray
-	exports.fromByteArray = uint8ToBase64
-}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
- 
-},{}],35:[function(require,module,exports){
-exports.read = function (buffer, offset, isLE, mLen, nBytes) {
-  var e, m
-  var eLen = nBytes * 8 - mLen - 1
-  var eMax = (1 << eLen) - 1
-  var eBias = eMax >> 1
-  var nBits = -7
-  var i = isLE ? (nBytes - 1) : 0
-  var d = isLE ? -1 : 1
-  var s = buffer[offset + i]
- 
-  i += d
- 
-  e = s & ((1 << (-nBits)) - 1)
-  s >>= (-nBits)
-  nBits += eLen
-  for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
- 
-  m = e & ((1 << (-nBits)) - 1)
-  e >>= (-nBits)
-  nBits += mLen
-  for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
- 
-  if (e === 0) {
-    e = 1 - eBias
-  } else if (e === eMax) {
-    return m ? NaN : ((s ? -1 : 1) * Infinity)
-  } else {
-    m = m + Math.pow(2, mLen)
-    e = e - eBias
-  }
-  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
-}
- 
-exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
-  var e, m, c
-  var eLen = nBytes * 8 - mLen - 1
-  var eMax = (1 << eLen) - 1
-  var eBias = eMax >> 1
-  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
-  var i = isLE ? 0 : (nBytes - 1)
-  var d = isLE ? 1 : -1
-  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
- 
-  value = Math.abs(value)
- 
-  if (isNaN(value) || value === Infinity) {
-    m = isNaN(value) ? 1 : 0
-    e = eMax
-  } else {
-    e = Math.floor(Math.log(value) / Math.LN2)
-    if (value * (c = Math.pow(2, -e)) < 1) {
-      e--
-      c *= 2
-    }
-    if (e + eBias >= 1) {
-      value += rt / c
-    } else {
-      value += rt * Math.pow(2, 1 - eBias)
-    }
-    if (value * c >= 2) {
-      e++
-      c /= 2
-    }
- 
-    if (e + eBias >= eMax) {
-      m = 0
-      e = eMax
-    } else if (e + eBias >= 1) {
-      m = (value * c - 1) * Math.pow(2, mLen)
-      e = e + eBias
-    } else {
-      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
-      e = 0
-    }
-  }
- 
-  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
- 
-  e = (e << mLen) | m
-  eLen += mLen
-  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
- 
-  buffer[offset + i - d] |= s * 128
-}
- 
-},{}],36:[function(require,module,exports){
-var toString = {}.toString;
- 
-module.exports = Array.isArray || function (arr) {
-  return toString.call(arr) == '[object Array]';
-};
- 
-},{}],37:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
- 
-function EventEmitter() {
-  this._events = this._events || {};
-  this._maxListeners = this._maxListeners || undefined;
-}
-module.exports = EventEmitter;
- 
-// Backwards-compat with node 0.10.x
-EventEmitter.EventEmitter = EventEmitter;
- 
-EventEmitter.prototype._events = undefined;
-EventEmitter.prototype._maxListeners = undefined;
- 
-// By default EventEmitters will print a warning if more than 10 listeners are
-// added to it. This is a useful default which helps finding memory leaks.
-EventEmitter.defaultMaxListeners = 10;
- 
-// Obviously not all Emitters should be limited to 10. This function allows
-// that to be increased. Set to zero for unlimited.
-EventEmitter.prototype.setMaxListeners = function(n) {
-  if (!isNumber(n) || n < 0 || isNaN(n))
-    throw TypeError('n must be a positive number');
-  this._maxListeners = n;
-  return this;
-};
- 
-EventEmitter.prototype.emit = function(type) {
-  var er, handler, len, args, i, listeners;
- 
-  if (!this._events)
-    this._events = {};
- 
-  // If there is no 'error' event listener then throw.
-  if (type === 'error') {
-    if (!this._events.error ||
-        (isObject(this._events.error) && !this._events.error.length)) {
-      er = arguments[1];
-      if (er instanceof Error) {
-        throw er; // Unhandled 'error' event
-      }
-      throw TypeError('Uncaught, unspecified "error" event.');
-    }
-  }
- 
-  handler = this._events[type];
- 
-  if (isUndefined(handler))
-    return false;
- 
-  if (isFunction(handler)) {
-    switch (arguments.length) {
-      // fast cases
-      case 1:
-        handler.call(this);
-        break;
-      case 2:
-        handler.call(this, arguments[1]);
-        break;
-      case 3:
-        handler.call(this, arguments[1], arguments[2]);
-        break;
-      // slower
-      default:
-        len = arguments.length;
-        args = new Array(len - 1);
-        for (i = 1; i < len; i++)
-          args[i - 1] = arguments[i];
-        handler.apply(this, args);
-    }
-  } else if (isObject(handler)) {
-    len = arguments.length;
-    args = new Array(len - 1);
-    for (i = 1; i < len; i++)
-      args[i - 1] = arguments[i];
- 
-    listeners = handler.slice();
-    len = listeners.length;
-    for (i = 0; i < len; i++)
-      listeners[i].apply(this, args);
-  }
- 
-  return true;
-};
- 
-EventEmitter.prototype.addListener = function(type, listener) {
-  var m;
- 
-  if (!isFunction(listener))
-    throw TypeError('listener must be a function');
- 
-  if (!this._events)
-    this._events = {};
- 
-  // To avoid recursion in the case that type === "newListener"! Before
-  // adding it to the listeners, first emit "newListener".
-  if (this._events.newListener)
-    this.emit('newListener', type,
-              isFunction(listener.listener) ?
-              listener.listener : listener);
- 
-  if (!this._events[type])
-    // Optimize the case of one listener. Don't need the extra array object.
-    this._events[type] = listener;
-  else if (isObject(this._events[type]))
-    // If we've already got an array, just append.
-    this._events[type].push(listener);
-  else
-    // Adding the second element, need to change to array.
-    this._events[type] = [this._events[type], listener];
- 
-  // Check for listener leak
-  if (isObject(this._events[type]) && !this._events[type].warned) {
-    var m;
-    if (!isUndefined(this._maxListeners)) {
-      m = this._maxListeners;
-    } else {
-      m = EventEmitter.defaultMaxListeners;
-    }
- 
-    if (m && m > 0 && this._events[type].length > m) {
-      this._events[type].warned = true;
-      console.error('(node) warning: possible EventEmitter memory ' +
-                    'leak detected. %d listeners added. ' +
-                    'Use emitter.setMaxListeners() to increase limit.',
-                    this._events[type].length);
-      if (typeof console.trace === 'function') {
-        // not supported in IE 10
-        console.trace();
-      }
-    }
-  }
- 
-  return this;
-};
- 
-EventEmitter.prototype.on = EventEmitter.prototype.addListener;
- 
-EventEmitter.prototype.once = function(type, listener) {
-  if (!isFunction(listener))
-    throw TypeError('listener must be a function');
- 
-  var fired = false;
- 
-  function g() {
-    this.removeListener(type, g);
- 
-    if (!fired) {
-      fired = true;
-      listener.apply(this, arguments);
-    }
-  }
- 
-  g.listener = listener;
-  this.on(type, g);
- 
-  return this;
-};
- 
-// emits a 'removeListener' event iff the listener was removed
-EventEmitter.prototype.removeListener = function(type, listener) {
-  var list, position, length, i;
- 
-  if (!isFunction(listener))
-    throw TypeError('listener must be a function');
- 
-  if (!this._events || !this._events[type])
-    return this;
- 
-  list = this._events[type];
-  length = list.length;
-  position = -1;
- 
-  if (list === listener ||
-      (isFunction(list.listener) && list.listener === listener)) {
-    delete this._events[type];
-    if (this._events.removeListener)
-      this.emit('removeListener', type, listener);
- 
-  } else if (isObject(list)) {
-    for (i = length; i-- > 0;) {
-      if (list[i] === listener ||
-          (list[i].listener && list[i].listener === listener)) {
-        position = i;
-        break;
-      }
-    }
- 
-    if (position < 0)
-      return this;
- 
-    if (list.length === 1) {
-      list.length = 0;
-      delete this._events[type];
-    } else {
-      list.splice(position, 1);
-    }
- 
-    if (this._events.removeListener)
-      this.emit('removeListener', type, listener);
-  }
- 
-  return this;
-};
- 
-EventEmitter.prototype.removeAllListeners = function(type) {
-  var key, listeners;
- 
-  if (!this._events)
-    return this;
- 
-  // not listening for removeListener, no need to emit
-  if (!this._events.removeListener) {
-    if (arguments.length === 0)
-      this._events = {};
-    else if (this._events[type])
-      delete this._events[type];
-    return this;
-  }
- 
-  // emit removeListener for all listeners on all events
-  if (arguments.length === 0) {
-    for (key in this._events) {
-      if (key === 'removeListener') continue;
-      this.removeAllListeners(key);
-    }
-    this.removeAllListeners('removeListener');
-    this._events = {};
-    return this;
-  }
- 
-  listeners = this._events[type];
- 
-  if (isFunction(listeners)) {
-    this.removeListener(type, listeners);
-  } else {
-    // LIFO order
-    while (listeners.length)
-      this.removeListener(type, listeners[listeners.length - 1]);
-  }
-  delete this._events[type];
- 
-  return this;
-};
- 
-EventEmitter.prototype.listeners = function(type) {
-  var ret;
-  if (!this._events || !this._events[type])
-    ret = [];
-  else if (isFunction(this._events[type]))
-    ret = [this._events[type]];
-  else
-    ret = this._events[type].slice();
-  return ret;
-};
- 
-EventEmitter.listenerCount = function(emitter, type) {
-  var ret;
-  if (!emitter._events || !emitter._events[type])
-    ret = 0;
-  else if (isFunction(emitter._events[type]))
-    ret = 1;
-  else
-    ret = emitter._events[type].length;
-  return ret;
-};
- 
-function isFunction(arg) {
-  return typeof arg === 'function';
-}
- 
-function isNumber(arg) {
-  return typeof arg === 'number';
-}
- 
-function isObject(arg) {
-  return typeof arg === 'object' && arg !== null;
-}
- 
-function isUndefined(arg) {
-  return arg === void 0;
-}
- 
-},{}],38:[function(require,module,exports){
-if (typeof Object.create === 'function') {
-  // implementation from standard node.js 'util' module
-  module.exports = function inherits(ctor, superCtor) {
-    ctor.super_ = superCtor
-    ctor.prototype = Object.create(superCtor.prototype, {
-      constructor: {
-        value: ctor,
-        enumerable: false,
-        writable: true,
-        configurable: true
-      }
-    });
-  };
-} else {
-  // old school shim for old browsers
-  module.exports = function inherits(ctor, superCtor) {
-    ctor.super_ = superCtor
-    var TempCtor = function () {}
-    TempCtor.prototype = superCtor.prototype
-    ctor.prototype = new TempCtor()
-    ctor.prototype.constructor = ctor
-  }
-}
- 
-},{}],39:[function(require,module,exports){
-/**
- * Determine if an object is Buffer
- *
- * Author:   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
- * License:  MIT
- *
- * `npm install is-buffer`
- */
- 
-module.exports = function (obj) {
-  return !!(obj != null &&
-    (obj._isBuffer || // For Safari 5-7 (missing Object.prototype.constructor)
-      (obj.constructor &&
-      typeof obj.constructor.isBuffer === 'function' &&
-      obj.constructor.isBuffer(obj))
-    ))
-}
- 
-},{}],40:[function(require,module,exports){
-module.exports = Array.isArray || function (arr) {
-  return Object.prototype.toString.call(arr) == '[object Array]';
-};
- 
-},{}],41:[function(require,module,exports){
-exports.endianness = function () { return 'LE' };
- 
-exports.hostname = function () {
-    if (typeof location !== 'undefined') {
-        return location.hostname
-    }
-    else return '';
-};
- 
-exports.loadavg = function () { return [] };
- 
-exports.uptime = function () { return 0 };
- 
-exports.freemem = function () {
-    return Number.MAX_VALUE;
-};
- 
-exports.totalmem = function () {
-    return Number.MAX_VALUE;
-};
- 
-exports.cpus = function () { return [] };
- 
-exports.type = function () { return 'Browser' };
- 
-exports.release = function () {
-    if (typeof navigator !== 'undefined') {
-        return navigator.appVersion;
-    }
-    return '';
-};
- 
-exports.networkInterfaces
-= exports.getNetworkInterfaces
-= function () { return {} };
- 
-exports.arch = function () { return 'javascript' };
- 
-exports.platform = function () { return 'browser' };
- 
-exports.tmpdir = exports.tmpDir = function () {
-    return '/tmp';
-};
- 
-exports.EOL = '\n';
- 
-},{}],42:[function(require,module,exports){
-// shim for using process in browser
- 
-var process = module.exports = {};
-var queue = [];
-var draining = false;
-var currentQueue;
-var queueIndex = -1;
- 
-function cleanUpNextTick() {
-    draining = false;
-    if (currentQueue.length) {
-        queue = currentQueue.concat(queue);
-    } else {
-        queueIndex = -1;
-    }
-    if (queue.length) {
-        drainQueue();
-    }
-}
- 
-function drainQueue() {
-    if (draining) {
-        return;
-    }
-    var timeout = setTimeout(cleanUpNextTick);
-    draining = true;
- 
-    var len = queue.length;
-    while(len) {
-        currentQueue = queue;
-        queue = [];
-        while (++queueIndex < len) {
-            if (currentQueue) {
-                currentQueue[queueIndex].run();
-            }
-        }
-        queueIndex = -1;
-        len = queue.length;
-    }
-    currentQueue = null;
-    draining = false;
-    clearTimeout(timeout);
-}
- 
-process.nextTick = function (fun) {
-    var args = new Array(arguments.length - 1);
-    if (arguments.length > 1) {
-        for (var i = 1; i < arguments.length; i++) {
-            args[i - 1] = arguments[i];
-        }
-    }
-    queue.push(new Item(fun, args));
-    if (queue.length === 1 && !draining) {
-        setTimeout(drainQueue, 0);
-    }
-};
- 
-// v8 likes predictible objects
-function Item(fun, array) {
-    this.fun = fun;
-    this.array = array;
-}
-Item.prototype.run = function () {
-    this.fun.apply(null, this.array);
-};
-process.title = 'browser';
-process.browser = true;
-process.env = {};
-process.argv = [];
-process.version = ''; // empty string to avoid regexp issues
-process.versions = {};
- 
-function noop() {}
- 
-process.on = noop;
-process.addListener = noop;
-process.once = noop;
-process.off = noop;
-process.removeListener = noop;
-process.removeAllListeners = noop;
-process.emit = noop;
- 
-process.binding = function (name) {
-    throw new Error('process.binding is not supported');
-};
- 
-process.cwd = function () { return '/' };
-process.chdir = function (dir) {
-    throw new Error('process.chdir is not supported');
-};
-process.umask = function() { return 0; };
- 
-},{}],43:[function(require,module,exports){
-(function (global){
-/*! https://mths.be/punycode v1.4.0 by @mathias */
-;(function(root) {
- 
-	/** Detect free variables */
-	var freeExports = typeof exports == 'object' && exports &&
-		!exports.nodeType && exports;
-	var freeModule = typeof module == 'object' && module &&
-		!module.nodeType && module;
-	var freeGlobal = typeof global == 'object' && global;
-	if (
-		freeGlobal.global === freeGlobal ||
-		freeGlobal.window === freeGlobal ||
-		freeGlobal.self === freeGlobal
-	) {
-		root = freeGlobal;
-	}
- 
-	/**
-	 * The `punycode` object.
-	 * @name punycode
-	 * @type Object
-	 */
-	var punycode,
- 
-	/** Highest positive signed 32-bit float value */
-	maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
- 
-	/** Bootstring parameters */
-	base = 36,
-	tMin = 1,
-	tMax = 26,
-	skew = 38,
-	damp = 700,
-	initialBias = 72,
-	initialN = 128, // 0x80
-	delimiter = '-', // '\x2D'
- 
-	/** Regular expressions */
-	regexPunycode = /^xn--/,
-	regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
-	regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
- 
-	/** Error messages */
-	errors = {
-		'overflow': 'Overflow: input needs wider integers to process',
-		'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
-		'invalid-input': 'Invalid input'
-	},
- 
-	/** Convenience shortcuts */
-	baseMinusTMin = base - tMin,
-	floor = Math.floor,
-	stringFromCharCode = String.fromCharCode,
- 
-	/** Temporary variable */
-	key;
- 
-	/*--------------------------------------------------------------------------*/
- 
-	/**
-	 * A generic error utility function.
-	 * @private
-	 * @param {String} type The error type.
-	 * @returns {Error} Throws a `RangeError` with the applicable error message.
-	 */
-	function error(type) {
-		throw new RangeError(errors[type]);
-	}
- 
-	/**
-	 * A generic `Array#map` utility function.
-	 * @private
-	 * @param {Array} array The array to iterate over.
-	 * @param {Function} callback The function that gets called for every array
-	 * item.
-	 * @returns {Array} A new array of values returned by the callback function.
-	 */
-	function map(array, fn) {
-		var length = array.length;
-		var result = [];
-		while (length--) {
-			result[length] = fn(array[length]);
-		}
-		return result;
-	}
- 
-	/**
-	 * A simple `Array#map`-like wrapper to work with domain name strings or email
-	 * addresses.
-	 * @private
-	 * @param {String} domain The domain name or email address.
-	 * @param {Function} callback The function that gets called for every
-	 * character.
-	 * @returns {Array} A new string of characters returned by the callback
-	 * function.
-	 */
-	function mapDomain(string, fn) {
-		var parts = string.split('@');
-		var result = '';
-		if (parts.length > 1) {
-			// In email addresses, only the domain name should be punycoded. Leave
-			// the local part (i.e. everything up to `@`) intact.
-			result = parts[0] + '@';
-			string = parts[1];
-		}
-		// Avoid `split(regex)` for IE8 compatibility. See #17.
-		string = string.replace(regexSeparators, '\x2E');
-		var labels = string.split('.');
-		var encoded = map(labels, fn).join('.');
-		return result + encoded;
-	}
- 
-	/**
-	 * Creates an array containing the numeric code points of each Unicode
-	 * character in the string. While JavaScript uses UCS-2 internally,
-	 * this function will convert a pair of surrogate halves (each of which
-	 * UCS-2 exposes as separate characters) into a single code point,
-	 * matching UTF-16.
-	 * @see `punycode.ucs2.encode`
-	 * @see <https://mathiasbynens.be/notes/javascript-encoding>
-	 * @memberOf punycode.ucs2
-	 * @name decode
-	 * @param {String} string The Unicode input string (UCS-2).
-	 * @returns {Array} The new array of code points.
-	 */
-	function ucs2decode(string) {
-		var output = [],
-		    counter = 0,
-		    length = string.length,
-		    value,
-		    extra;
-		while (counter < length) {
-			value = string.charCodeAt(counter++);
-			if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
-				// high surrogate, and there is a next character
-				extra = string.charCodeAt(counter++);
-				if ((extra & 0xFC00) == 0xDC00) { // low surrogate
-					output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
-				} else {
-					// unmatched surrogate; only append this code unit, in case the next
-					// code unit is the high surrogate of a surrogate pair
-					output.push(value);
-					counter--;
-				}
-			} else {
-				output.push(value);
-			}
-		}
-		return output;
-	}
- 
-	/**
-	 * Creates a string based on an array of numeric code points.
-	 * @see `punycode.ucs2.decode`
-	 * @memberOf punycode.ucs2
-	 * @name encode
-	 * @param {Array} codePoints The array of numeric code points.
-	 * @returns {String} The new Unicode string (UCS-2).
-	 */
-	function ucs2encode(array) {
-		return map(array, function(value) {
-			var output = '';
-			if (value > 0xFFFF) {
-				value -= 0x10000;
-				output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
-				value = 0xDC00 | value & 0x3FF;
-			}
-			output += stringFromCharCode(value);
-			return output;
-		}).join('');
-	}
- 
-	/**
-	 * Converts a basic code point into a digit/integer.
-	 * @see `digitToBasic()`
-	 * @private
-	 * @param {Number} codePoint The basic numeric code point value.
-	 * @returns {Number} The numeric value of a basic code point (for use in
-	 * representing integers) in the range `0` to `base - 1`, or `base` if
-	 * the code point does not represent a value.
-	 */
-	function basicToDigit(codePoint) {
-		if (codePoint - 48 < 10) {
-			return codePoint - 22;
-		}
-		if (codePoint - 65 < 26) {
-			return codePoint - 65;
-		}
-		if (codePoint - 97 < 26) {
-			return codePoint - 97;
-		}
-		return base;
-	}
- 
-	/**
-	 * Converts a digit/integer into a basic code point.
-	 * @see `basicToDigit()`
-	 * @private
-	 * @param {Number} digit The numeric value of a basic code point.
-	 * @returns {Number} The basic code point whose value (when used for
-	 * representing integers) is `digit`, which needs to be in the range
-	 * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
-	 * used; else, the lowercase form is used. The behavior is undefined
-	 * if `flag` is non-zero and `digit` has no uppercase form.
-	 */
-	function digitToBasic(digit, flag) {
-		//  0..25 map to ASCII a..z or A..Z
-		// 26..35 map to ASCII 0..9
-		return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
-	}
- 
-	/**
-	 * Bias adaptation function as per section 3.4 of RFC 3492.
-	 * https://tools.ietf.org/html/rfc3492#section-3.4
-	 * @private
-	 */
-	function adapt(delta, numPoints, firstTime) {
-		var k = 0;
-		delta = firstTime ? floor(delta / damp) : delta >> 1;
-		delta += floor(delta / numPoints);
-		for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
-			delta = floor(delta / baseMinusTMin);
-		}
-		return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
-	}
- 
-	/**
-	 * Converts a Punycode string of ASCII-only symbols to a string of Unicode
-	 * symbols.
-	 * @memberOf punycode
-	 * @param {String} input The Punycode string of ASCII-only symbols.
-	 * @returns {String} The resulting string of Unicode symbols.
-	 */
-	function decode(input) {
-		// Don't use UCS-2
-		var output = [],
-		    inputLength = input.length,
-		    out,
-		    i = 0,
-		    n = initialN,
-		    bias = initialBias,
-		    basic,
-		    j,
-		    index,
-		    oldi,
-		    w,
-		    k,
-		    digit,
-		    t,
-		    /** Cached calculation results */
-		    baseMinusT;
- 
-		// Handle the basic code points: let `basic` be the number of input code
-		// points before the last delimiter, or `0` if there is none, then copy
-		// the first basic code points to the output.
- 
-		basic = input.lastIndexOf(delimiter);
-		if (basic < 0) {
-			basic = 0;
-		}
- 
-		for (j = 0; j < basic; ++j) {
-			// if it's not a basic code point
-			if (input.charCodeAt(j) >= 0x80) {
-				error('not-basic');
-			}
-			output.push(input.charCodeAt(j));
-		}
- 
-		// Main decoding loop: start just after the last delimiter if any basic code
-		// points were copied; start at the beginning otherwise.
- 
-		for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
- 
-			// `index` is the index of the next character to be consumed.
-			// Decode a generalized variable-length integer into `delta`,
-			// which gets added to `i`. The overflow checking is easier
-			// if we increase `i` as we go, then subtract off its starting
-			// value at the end to obtain `delta`.
-			for (oldi = i, w = 1, k = base; /* no condition */; k += base) {
- 
-				if (index >= inputLength) {
-					error('invalid-input');
-				}
- 
-				digit = basicToDigit(input.charCodeAt(index++));
- 
-				if (digit >= base || digit > floor((maxInt - i) / w)) {
-					error('overflow');
-				}
- 
-				i += digit * w;
-				t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
- 
-				if (digit < t) {
-					break;
-				}
- 
-				baseMinusT = base - t;
-				if (w > floor(maxInt / baseMinusT)) {
-					error('overflow');
-				}
- 
-				w *= baseMinusT;
- 
-			}
- 
-			out = output.length + 1;
-			bias = adapt(i - oldi, out, oldi == 0);
- 
-			// `i` was supposed to wrap around from `out` to `0`,
-			// incrementing `n` each time, so we'll fix that now:
-			if (floor(i / out) > maxInt - n) {
-				error('overflow');
-			}
- 
-			n += floor(i / out);
-			i %= out;
- 
-			// Insert `n` at position `i` of the output
-			output.splice(i++, 0, n);
- 
-		}
- 
-		return ucs2encode(output);
-	}
- 
-	/**
-	 * Converts a string of Unicode symbols (e.g. a domain name label) to a
-	 * Punycode string of ASCII-only symbols.
-	 * @memberOf punycode
-	 * @param {String} input The string of Unicode symbols.
-	 * @returns {String} The resulting Punycode string of ASCII-only symbols.
-	 */
-	function encode(input) {
-		var n,
-		    delta,
-		    handledCPCount,
-		    basicLength,
-		    bias,
-		    j,
-		    m,
-		    q,
-		    k,
-		    t,
-		    currentValue,
-		    output = [],
-		    /** `inputLength` will hold the number of code points in `input`. */
-		    inputLength,
-		    /** Cached calculation results */
-		    handledCPCountPlusOne,
-		    baseMinusT,
-		    qMinusT;
- 
-		// Convert the input in UCS-2 to Unicode
-		input = ucs2decode(input);
- 
-		// Cache the length
-		inputLength = input.length;
- 
-		// Initialize the state
-		n = initialN;
-		delta = 0;
-		bias = initialBias;
- 
-		// Handle the basic code points
-		for (j = 0; j < inputLength; ++j) {
-			currentValue = input[j];
-			if (currentValue < 0x80) {
-				output.push(stringFromCharCode(currentValue));
-			}
-		}
- 
-		handledCPCount = basicLength = output.length;
- 
-		// `handledCPCount` is the number of code points that have been handled;
-		// `basicLength` is the number of basic code points.
- 
-		// Finish the basic string - if it is not empty - with a delimiter
-		if (basicLength) {
-			output.push(delimiter);
-		}
- 
-		// Main encoding loop:
-		while (handledCPCount < inputLength) {
- 
-			// All non-basic code points < n have been handled already. Find the next
-			// larger one:
-			for (m = maxInt, j = 0; j < inputLength; ++j) {
-				currentValue = input[j];
-				if (currentValue >= n && currentValue < m) {
-					m = currentValue;
-				}
-			}
- 
-			// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
-			// but guard against overflow
-			handledCPCountPlusOne = handledCPCount + 1;
-			if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
-				error('overflow');
-			}
- 
-			delta += (m - n) * handledCPCountPlusOne;
-			n = m;
- 
-			for (j = 0; j < inputLength; ++j) {
-				currentValue = input[j];
- 
-				if (currentValue < n && ++delta > maxInt) {
-					error('overflow');
-				}
- 
-				if (currentValue == n) {
-					// Represent delta as a generalized variable-length integer
-					for (q = delta, k = base; /* no condition */; k += base) {
-						t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
-						if (q < t) {
-							break;
-						}
-						qMinusT = q - t;
-						baseMinusT = base - t;
-						output.push(
-							stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
-						);
-						q = floor(qMinusT / baseMinusT);
-					}
- 
-					output.push(stringFromCharCode(digitToBasic(q, 0)));
-					bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
-					delta = 0;
-					++handledCPCount;
-				}
-			}
- 
-			++delta;
-			++n;
- 
-		}
-		return output.join('');
-	}
- 
-	/**
-	 * Converts a Punycode string representing a domain name or an email address
-	 * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
-	 * it doesn't matter if you call it on a string that has already been
-	 * converted to Unicode.
-	 * @memberOf punycode
-	 * @param {String} input The Punycoded domain name or email address to
-	 * convert to Unicode.
-	 * @returns {String} The Unicode representation of the given Punycode
-	 * string.
-	 */
-	function toUnicode(input) {
-		return mapDomain(input, function(string) {
-			return regexPunycode.test(string)
-				? decode(string.slice(4).toLowerCase())
-				: string;
-		});
-	}
- 
-	/**
-	 * Converts a Unicode string representing a domain name or an email address to
-	 * Punycode. Only the non-ASCII parts of the domain name will be converted,
-	 * i.e. it doesn't matter if you call it with a domain that's already in
-	 * ASCII.
-	 * @memberOf punycode
-	 * @param {String} input The domain name or email address to convert, as a
-	 * Unicode string.
-	 * @returns {String} The Punycode representation of the given domain name or
-	 * email address.
-	 */
-	function toASCII(input) {
-		return mapDomain(input, function(string) {
-			return regexNonASCII.test(string)
-				? 'xn--' + encode(string)
-				: string;
-		});
-	}
- 
-	/*--------------------------------------------------------------------------*/
- 
-	/** Define the public API */
-	punycode = {
-		/**
-		 * A string representing the current Punycode.js version number.
-		 * @memberOf punycode
-		 * @type String
-		 */
-		'version': '1.3.2',
-		/**
-		 * An object of methods to convert from JavaScript's internal character
-		 * representation (UCS-2) to Unicode code points, and back.
-		 * @see <https://mathiasbynens.be/notes/javascript-encoding>
-		 * @memberOf punycode
-		 * @type Object
-		 */
-		'ucs2': {
-			'decode': ucs2decode,
-			'encode': ucs2encode
-		},
-		'decode': decode,
-		'encode': encode,
-		'toASCII': toASCII,
-		'toUnicode': toUnicode
-	};
- 
-	/** Expose `punycode` */
-	// Some AMD build optimizers, like r.js, check for specific condition patterns
-	// like the following:
-	if (
-		typeof define == 'function' &&
-		typeof define.amd == 'object' &&
-		define.amd
-	) {
-		define('punycode', function() {
-			return punycode;
-		});
-	} else if (freeExports && freeModule) {
-		if (module.exports == freeExports) {
-			// in Node.js, io.js, or RingoJS v0.8.0+
-			freeModule.exports = punycode;
-		} else {
-			// in Narwhal or RingoJS v0.7.0-
-			for (key in punycode) {
-				punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);
-			}
-		}
-	} else {
-		// in Rhino or a web browser
-		root.punycode = punycode;
-	}
- 
-}(this));
- 
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{}],44:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
- 
-'use strict';
- 
-// If obj.hasOwnProperty has been overridden, then calling
-// obj.hasOwnProperty(prop) will break.
-// See: https://github.com/joyent/node/issues/1707
-function hasOwnProperty(obj, prop) {
-  return Object.prototype.hasOwnProperty.call(obj, prop);
-}
- 
-module.exports = function(qs, sep, eq, options) {
-  sep = sep || '&';
-  eq = eq || '=';
-  var obj = {};
- 
-  if (typeof qs !== 'string' || qs.length === 0) {
-    return obj;
-  }
- 
-  var regexp = /\+/g;
-  qs = qs.split(sep);
- 
-  var maxKeys = 1000;
-  if (options && typeof options.maxKeys === 'number') {
-    maxKeys = options.maxKeys;
-  }
- 
-  var len = qs.length;
-  // maxKeys <= 0 means that we should not limit keys count
-  if (maxKeys > 0 && len > maxKeys) {
-    len = maxKeys;
-  }
- 
-  for (var i = 0; i < len; ++i) {
-    var x = qs[i].replace(regexp, '%20'),
-        idx = x.indexOf(eq),
-        kstr, vstr, k, v;
- 
-    if (idx >= 0) {
-      kstr = x.substr(0, idx);
-      vstr = x.substr(idx + 1);
-    } else {
-      kstr = x;
-      vstr = '';
-    }
- 
-    k = decodeURIComponent(kstr);
-    v = decodeURIComponent(vstr);
- 
-    if (!hasOwnProperty(obj, k)) {
-      obj[k] = v;
-    } else if (isArray(obj[k])) {
-      obj[k].push(v);
-    } else {
-      obj[k] = [obj[k], v];
-    }
-  }
- 
-  return obj;
-};
- 
-var isArray = Array.isArray || function (xs) {
-  return Object.prototype.toString.call(xs) === '[object Array]';
-};
- 
-},{}],45:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
- 
-'use strict';
- 
-var stringifyPrimitive = function(v) {
-  switch (typeof v) {
-    case 'string':
-      return v;
- 
-    case 'boolean':
-      return v ? 'true' : 'false';
- 
-    case 'number':
-      return isFinite(v) ? v : '';
- 
-    default:
-      return '';
-  }
-};
- 
-module.exports = function(obj, sep, eq, name) {
-  sep = sep || '&';
-  eq = eq || '=';
-  if (obj === null) {
-    obj = undefined;
-  }
- 
-  if (typeof obj === 'object') {
-    return map(objectKeys(obj), function(k) {
-      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
-      if (isArray(obj[k])) {
-        return map(obj[k], function(v) {
-          return ks + encodeURIComponent(stringifyPrimitive(v));
-        }).join(sep);
-      } else {
-        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
-      }
-    }).join(sep);
- 
-  }
- 
-  if (!name) return '';
-  return encodeURIComponent(stringifyPrimitive(name)) + eq +
-         encodeURIComponent(stringifyPrimitive(obj));
-};
- 
-var isArray = Array.isArray || function (xs) {
-  return Object.prototype.toString.call(xs) === '[object Array]';
-};
- 
-function map (xs, f) {
-  if (xs.map) return xs.map(f);
-  var res = [];
-  for (var i = 0; i < xs.length; i++) {
-    res.push(f(xs[i], i));
-  }
-  return res;
-}
- 
-var objectKeys = Object.keys || function (obj) {
-  var res = [];
-  for (var key in obj) {
-    if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
-  }
-  return res;
-};
- 
-},{}],46:[function(require,module,exports){
-'use strict';
- 
-exports.decode = exports.parse = require('./decode');
-exports.encode = exports.stringify = require('./encode');
- 
-},{"./decode":44,"./encode":45}],47:[function(require,module,exports){
-module.exports = require("./lib/_stream_duplex.js")
- 
-},{"./lib/_stream_duplex.js":48}],48:[function(require,module,exports){
-// a duplex stream is just a stream that is both readable and writable.
-// Since JS doesn't have multiple prototypal inheritance, this class
-// prototypally inherits from Readable, and then parasitically from
-// Writable.
- 
-'use strict';
- 
-/*<replacement>*/
-var objectKeys = Object.keys || function (obj) {
-  var keys = [];
-  for (var key in obj) keys.push(key);
-  return keys;
-}
-/*</replacement>*/
- 
- 
-module.exports = Duplex;
- 
-/*<replacement>*/
-var processNextTick = require('process-nextick-args');
-/*</replacement>*/
- 
- 
- 
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
- 
-var Readable = require('./_stream_readable');
-var Writable = require('./_stream_writable');
- 
-util.inherits(Duplex, Readable);
- 
-var keys = objectKeys(Writable.prototype);
-for (var v = 0; v < keys.length; v++) {
-  var method = keys[v];
-  if (!Duplex.prototype[method])
-    Duplex.prototype[method] = Writable.prototype[method];
-}
- 
-function Duplex(options) {
-  if (!(this instanceof Duplex))
-    return new Duplex(options);
- 
-  Readable.call(this, options);
-  Writable.call(this, options);
- 
-  if (options && options.readable === false)
-    this.readable = false;
- 
-  if (options && options.writable === false)
-    this.writable = false;
- 
-  this.allowHalfOpen = true;
-  if (options && options.allowHalfOpen === false)
-    this.allowHalfOpen = false;
- 
-  this.once('end', onend);
-}
- 
-// the no-half-open enforcer
-function onend() {
-  // if we allow half-open state, or if the writable side ended,
-  // then we're ok.
-  if (this.allowHalfOpen || this._writableState.ended)
-    return;
- 
-  // no more data can be written.
-  // But allow more writes to happen in this tick.
-  processNextTick(onEndNT, this);
-}
- 
-function onEndNT(self) {
-  self.end();
-}
- 
-function forEach (xs, f) {
-  for (var i = 0, l = xs.length; i < l; i++) {
-    f(xs[i], i);
-  }
-}
- 
-},{"./_stream_readable":50,"./_stream_writable":52,"core-util-is":53,"inherits":38,"process-nextick-args":54}],49:[function(require,module,exports){
-// a passthrough stream.
-// basically just the most minimal sort of Transform stream.
-// Every written chunk gets output as-is.
- 
-'use strict';
- 
-module.exports = PassThrough;
- 
-var Transform = require('./_stream_transform');
- 
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
- 
-util.inherits(PassThrough, Transform);
- 
-function PassThrough(options) {
-  if (!(this instanceof PassThrough))
-    return new PassThrough(options);
- 
-  Transform.call(this, options);
-}
- 
-PassThrough.prototype._transform = function(chunk, encoding, cb) {
-  cb(null, chunk);
-};
- 
-},{"./_stream_transform":51,"core-util-is":53,"inherits":38}],50:[function(require,module,exports){
-(function (process){
-'use strict';
- 
-module.exports = Readable;
- 
-/*<replacement>*/
-var processNextTick = require('process-nextick-args');
-/*</replacement>*/
- 
- 
-/*<replacement>*/
-var isArray = require('isarray');
-/*</replacement>*/
- 
- 
-/*<replacement>*/
-var Buffer = require('buffer').Buffer;
-/*</replacement>*/
- 
-Readable.ReadableState = ReadableState;
- 
-var EE = require('events');
- 
-/*<replacement>*/
-var EElistenerCount = function(emitter, type) {
-  return emitter.listeners(type).length;
-};
-/*</replacement>*/
- 
- 
- 
-/*<replacement>*/
-var Stream;
-(function (){try{
-  Stream = require('st' + 'ream');
-}catch(_){}finally{
-  if (!Stream)
-    Stream = require('events').EventEmitter;
-}}())
-/*</replacement>*/
- 
-var Buffer = require('buffer').Buffer;
- 
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
- 
- 
- 
-/*<replacement>*/
-var debugUtil = require('util');
-var debug;
-if (debugUtil && debugUtil.debuglog) {
-  debug = debugUtil.debuglog('stream');
-} else {
-  debug = function () {};
-}
-/*</replacement>*/
- 
-var StringDecoder;
- 
-util.inherits(Readable, Stream);
- 
-var Duplex;
-function ReadableState(options, stream) {
-  Duplex = Duplex || require('./_stream_duplex');
- 
-  options = options || {};
- 
-  // object stream flag. Used to make read(n) ignore n and to
-  // make all the buffer merging and length checks go away
-  this.objectMode = !!options.objectMode;
- 
-  if (stream instanceof Duplex)
-    this.objectMode = this.objectMode || !!options.readableObjectMode;
- 
-  // the point at which it stops calling _read() to fill the buffer
-  // Note: 0 is a valid value, means "don't call _read preemptively ever"
-  var hwm = options.highWaterMark;
-  var defaultHwm = this.objectMode ? 16 : 16 * 1024;
-  this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
- 
-  // cast to ints.
-  this.highWaterMark = ~~this.highWaterMark;
- 
-  this.buffer = [];
-  this.length = 0;
-  this.pipes = null;
-  this.pipesCount = 0;
-  this.flowing = null;
-  this.ended = false;
-  this.endEmitted = false;
-  this.reading = false;
- 
-  // a flag to be able to tell if the onwrite cb is called immediately,
-  // or on a later tick.  We set this to true at first, because any
-  // actions that shouldn't happen until "later" should generally also
-  // not happen before the first write call.
-  this.sync = true;
- 
-  // whenever we return null, then we set a flag to say
-  // that we're awaiting a 'readable' event emission.
-  this.needReadable = false;
-  this.emittedReadable = false;
-  this.readableListening = false;
- 
-  // Crypto is kind of old and crusty.  Historically, its default string
-  // encoding is 'binary' so we have to make this configurable.
-  // Everything else in the universe uses 'utf8', though.
-  this.defaultEncoding = options.defaultEncoding || 'utf8';
- 
-  // when piping, we only care about 'readable' events that happen
-  // after read()ing all the bytes and not getting any pushback.
-  this.ranOut = false;
- 
-  // the number of writers that are awaiting a drain event in .pipe()s
-  this.awaitDrain = 0;
- 
-  // if true, a maybeReadMore has been scheduled
-  this.readingMore = false;
- 
-  this.decoder = null;
-  this.encoding = null;
-  if (options.encoding) {
-    if (!StringDecoder)
-      StringDecoder = require('string_decoder/').StringDecoder;
-    this.decoder = new StringDecoder(options.encoding);
-    this.encoding = options.encoding;
-  }
-}
- 
-var Duplex;
-function Readable(options) {
-  Duplex = Duplex || require('./_stream_duplex');
- 
-  if (!(this instanceof Readable))
-    return new Readable(options);
- 
-  this._readableState = new ReadableState(options, this);
- 
-  // legacy
-  this.readable = true;
- 
-  if (options && typeof options.read === 'function')
-    this._read = options.read;
- 
-  Stream.call(this);
-}
- 
-// Manually shove something into the read() buffer.
-// This returns true if the highWaterMark has not been hit yet,
-// similar to how Writable.write() returns true if you should
-// write() some more.
-Readable.prototype.push = function(chunk, encoding) {
-  var state = this._readableState;
- 
-  if (!state.objectMode && typeof chunk === 'string') {
-    encoding = encoding || state.defaultEncoding;
-    if (encoding !== state.encoding) {
-      chunk = new Buffer(chunk, encoding);
-      encoding = '';
-    }
-  }
- 
-  return readableAddChunk(this, state, chunk, encoding, false);
-};
- 
-// Unshift should *always* be something directly out of read()
-Readable.prototype.unshift = function(chunk) {
-  var state = this._readableState;
-  return readableAddChunk(this, state, chunk, '', true);
-};
- 
-Readable.prototype.isPaused = function() {
-  return this._readableState.flowing === false;
-};
- 
-function readableAddChunk(stream, state, chunk, encoding, addToFront) {
-  var er = chunkInvalid(state, chunk);
-  if (er) {
-    stream.emit('error', er);
-  } else if (chunk === null) {
-    state.reading = false;
-    onEofChunk(stream, state);
-  } else if (state.objectMode || chunk && chunk.length > 0) {
-    if (state.ended && !addToFront) {
-      var e = new Error('stream.push() after EOF');
-      stream.emit('error', e);
-    } else if (state.endEmitted && addToFront) {
-      var e = new Error('stream.unshift() after end event');
-      stream.emit('error', e);
-    } else {
-      if (state.decoder && !addToFront && !encoding)
-        chunk = state.decoder.write(chunk);
- 
-      if (!addToFront)
-        state.reading = false;
- 
-      // if we want the data now, just emit it.
-      if (state.flowing && state.length === 0 && !state.sync) {
-        stream.emit('data', chunk);
-        stream.read(0);
-      } else {
-        // update the buffer info.
-        state.length += state.objectMode ? 1 : chunk.length;
-        if (addToFront)
-          state.buffer.unshift(chunk);
-        else
-          state.buffer.push(chunk);
- 
-        if (state.needReadable)
-          emitReadable(stream);
-      }
- 
-      maybeReadMore(stream, state);
-    }
-  } else if (!addToFront) {
-    state.reading = false;
-  }
- 
-  return needMoreData(state);
-}
- 
- 
-// if it's past the high water mark, we can push in some more.
-// Also, if we have no data yet, we can stand some
-// more bytes.  This is to work around cases where hwm=0,
-// such as the repl.  Also, if the push() triggered a
-// readable event, and the user called read(largeNumber) such that
-// needReadable was set, then we ought to push more, so that another
-// 'readable' event will be triggered.
-function needMoreData(state) {
-  return !state.ended &&
-         (state.needReadable ||
-          state.length < state.highWaterMark ||
-          state.length === 0);
-}
- 
-// backwards compatibility.
-Readable.prototype.setEncoding = function(enc) {
-  if (!StringDecoder)
-    StringDecoder = require('string_decoder/').StringDecoder;
-  this._readableState.decoder = new StringDecoder(enc);
-  this._readableState.encoding = enc;
-  return this;
-};
- 
-// Don't raise the hwm > 8MB
-var MAX_HWM = 0x800000;
-function computeNewHighWaterMark(n) {
-  if (n >= MAX_HWM) {
-    n = MAX_HWM;
-  } else {
-    // Get the next highest power of 2
-    n--;
-    n |= n >>> 1;
-    n |= n >>> 2;
-    n |= n >>> 4;
-    n |= n >>> 8;
-    n |= n >>> 16;
-    n++;
-  }
-  return n;
-}
- 
-function howMuchToRead(n, state) {
-  if (state.length === 0 && state.ended)
-    return 0;
- 
-  if (state.objectMode)
-    return n === 0 ? 0 : 1;
- 
-  if (n === null || isNaN(n)) {
-    // only flow one buffer at a time
-    if (state.flowing && state.buffer.length)
-      return state.buffer[0].length;
-    else
-      return state.length;
-  }
- 
-  if (n <= 0)
-    return 0;
- 
-  // If we're asking for more than the target buffer level,
-  // then raise the water mark.  Bump up to the next highest
-  // power of 2, to prevent increasing it excessively in tiny
-  // amounts.
-  if (n > state.highWaterMark)
-    state.highWaterMark = computeNewHighWaterMark(n);
- 
-  // don't have that much.  return null, unless we've ended.
-  if (n > state.length) {
-    if (!state.ended) {
-      state.needReadable = true;
-      return 0;
-    } else {
-      return state.length;
-    }
-  }
- 
-  return n;
-}
- 
-// you can override either this method, or the async _read(n) below.
-Readable.prototype.read = function(n) {
-  debug('read', n);
-  var state = this._readableState;
-  var nOrig = n;
- 
-  if (typeof n !== 'number' || n > 0)
-    state.emittedReadable = false;
- 
-  // if we're doing read(0) to trigger a readable event, but we
-  // already have a bunch of data in the buffer, then just trigger
-  // the 'readable' event and move on.
-  if (n === 0 &&
-      state.needReadable &&
-      (state.length >= state.highWaterMark || state.ended)) {
-    debug('read: emitReadable', state.length, state.ended);
-    if (state.length === 0 && state.ended)
-      endReadable(this);
-    else
-      emitReadable(this);
-    return null;
-  }
- 
-  n = howMuchToRead(n, state);
- 
-  // if we've ended, and we're now clear, then finish it up.
-  if (n === 0 && state.ended) {
-    if (state.length === 0)
-      endReadable(this);
-    return null;
-  }
- 
-  // All the actual chunk generation logic needs to be
-  // *below* the call to _read.  The reason is that in certain
-  // synthetic stream cases, such as passthrough streams, _read
-  // may be a completely synchronous operation which may change
-  // the state of the read buffer, providing enough data when
-  // before there was *not* enough.
-  //
-  // So, the steps are:
-  // 1. Figure out what the state of things will be after we do
-  // a read from the buffer.
-  //
-  // 2. If that resulting state will trigger a _read, then call _read.
-  // Note that this may be asynchronous, or synchronous.  Yes, it is
-  // deeply ugly to write APIs this way, but that still doesn't mean
-  // that the Readable class should behave improperly, as streams are
-  // designed to be sync/async agnostic.
-  // Take note if the _read call is sync or async (ie, if the read call
-  // has returned yet), so that we know whether or not it's safe to emit
-  // 'readable' etc.
-  //
-  // 3. Actually pull the requested chunks out of the buffer and return.
- 
-  // if we need a readable event, then we need to do some reading.
-  var doRead = state.needReadable;
-  debug('need readable', doRead);
- 
-  // if we currently have less than the highWaterMark, then also read some
-  if (state.length === 0 || state.length - n < state.highWaterMark) {
-    doRead = true;
-    debug('length less than watermark', doRead);
-  }
- 
-  // however, if we've ended, then there's no point, and if we're already
-  // reading, then it's unnecessary.
-  if (state.ended || state.reading) {
-    doRead = false;
-    debug('reading or ended', doRead);
-  }
- 
-  if (doRead) {
-    debug('do read');
-    state.reading = true;
-    state.sync = true;
-    // if the length is currently zero, then we *need* a readable event.
-    if (state.length === 0)
-      state.needReadable = true;
-    // call internal read method
-    this._read(state.highWaterMark);
-    state.sync = false;
-  }
- 
-  // If _read pushed data synchronously, then `reading` will be false,
-  // and we need to re-evaluate how much data we can return to the user.
-  if (doRead && !state.reading)
-    n = howMuchToRead(nOrig, state);
- 
-  var ret;
-  if (n > 0)
-    ret = fromList(n, state);
-  else
-    ret = null;
- 
-  if (ret === null) {
-    state.needReadable = true;
-    n = 0;
-  }
- 
-  state.length -= n;
- 
-  // If we have nothing in the buffer, then we want to know
-  // as soon as we *do* get something into the buffer.
-  if (state.length === 0 && !state.ended)
-    state.needReadable = true;
- 
-  // If we tried to read() past the EOF, then emit end on the next tick.
-  if (nOrig !== n && state.ended && state.length === 0)
-    endReadable(this);
- 
-  if (ret !== null)
-    this.emit('data', ret);
- 
-  return ret;
-};
- 
-function chunkInvalid(state, chunk) {
-  var er = null;
-  if (!(Buffer.isBuffer(chunk)) &&
-      typeof chunk !== 'string' &&
-      chunk !== null &&
-      chunk !== undefined &&
-      !state.objectMode) {
-    er = new TypeError('Invalid non-string/buffer chunk');
-  }
-  return er;
-}
- 
- 
-function onEofChunk(stream, state) {
-  if (state.ended) return;
-  if (state.decoder) {
-    var chunk = state.decoder.end();
-    if (chunk && chunk.length) {
-      state.buffer.push(chunk);
-      state.length += state.objectMode ? 1 : chunk.length;
-    }
-  }
-  state.ended = true;
- 
-  // emit 'readable' now to make sure it gets picked up.
-  emitReadable(stream);
-}
- 
-// Don't emit readable right away in sync mode, because this can trigger
-// another read() call => stack overflow.  This way, it might trigger
-// a nextTick recursion warning, but that's not so bad.
-function emitReadable(stream) {
-  var state = stream._readableState;
-  state.needReadable = false;
-  if (!state.emittedReadable) {
-    debug('emitReadable', state.flowing);
-    state.emittedReadable = true;
-    if (state.sync)
-      processNextTick(emitReadable_, stream);
-    else
-      emitReadable_(stream);
-  }
-}
- 
-function emitReadable_(stream) {
-  debug('emit readable');
-  stream.emit('readable');
-  flow(stream);
-}
- 
- 
-// at this point, the user has presumably seen the 'readable' event,
-// and called read() to consume some data.  that may have triggered
-// in turn another _read(n) call, in which case reading = true if
-// it's in progress.
-// However, if we're not ended, or reading, and the length < hwm,
-// then go ahead and try to read some more preemptively.
-function maybeReadMore(stream, state) {
-  if (!state.readingMore) {
-    state.readingMore = true;
-    processNextTick(maybeReadMore_, stream, state);
-  }
-}
- 
-function maybeReadMore_(stream, state) {
-  var len = state.length;
-  while (!state.reading && !state.flowing && !state.ended &&
-         state.length < state.highWaterMark) {
-    debug('maybeReadMore read 0');
-    stream.read(0);
-    if (len === state.length)
-      // didn't get any data, stop spinning.
-      break;
-    else
-      len = state.length;
-  }
-  state.readingMore = false;
-}
- 
-// abstract method.  to be overridden in specific implementation classes.
-// call cb(er, data) where data is <= n in length.
-// for virtual (non-string, non-buffer) streams, "length" is somewhat
-// arbitrary, and perhaps not very meaningful.
-Readable.prototype._read = function(n) {
-  this.emit('error', new Error('not implemented'));
-};
- 
-Readable.prototype.pipe = function(dest, pipeOpts) {
-  var src = this;
-  var state = this._readableState;
- 
-  switch (state.pipesCount) {
-    case 0:
-      state.pipes = dest;
-      break;
-    case 1:
-      state.pipes = [state.pipes, dest];
-      break;
-    default:
-      state.pipes.push(dest);
-      break;
-  }
-  state.pipesCount += 1;
-  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
- 
-  var doEnd = (!pipeOpts || pipeOpts.end !== false) &&
-              dest !== process.stdout &&
-              dest !== process.stderr;
- 
-  var endFn = doEnd ? onend : cleanup;
-  if (state.endEmitted)
-    processNextTick(endFn);
-  else
-    src.once('end', endFn);
- 
-  dest.on('unpipe', onunpipe);
-  function onunpipe(readable) {
-    debug('onunpipe');
-    if (readable === src) {
-      cleanup();
-    }
-  }
- 
-  function onend() {
-    debug('onend');
-    dest.end();
-  }
- 
-  // when the dest drains, it reduces the awaitDrain counter
-  // on the source.  This would be more elegant with a .once()
-  // handler in flow(), but adding and removing repeatedly is
-  // too slow.
-  var ondrain = pipeOnDrain(src);
-  dest.on('drain', ondrain);
- 
-  var cleanedUp = false;
-  function cleanup() {
-    debug('cleanup');
-    // cleanup event handlers once the pipe is broken
-    dest.removeListener('close', onclose);
-    dest.removeListener('finish', onfinish);
-    dest.removeListener('drain', ondrain);
-    dest.removeListener('error', onerror);
-    dest.removeListener('unpipe', onunpipe);
-    src.removeListener('end', onend);
-    src.removeListener('end', cleanup);
-    src.removeListener('data', ondata);
- 
-    cleanedUp = true;
- 
-    // if the reader is waiting for a drain event from this
-    // specific writer, then it would cause it to never start
-    // flowing again.
-    // So, if this is awaiting a drain, then we just call it now.
-    // If we don't know, then assume that we are waiting for one.
-    if (state.awaitDrain &&
-        (!dest._writableState || dest._writableState.needDrain))
-      ondrain();
-  }
- 
-  src.on('data', ondata);
-  function ondata(chunk) {
-    debug('ondata');
-    var ret = dest.write(chunk);
-    if (false === ret) {
-      // If the user unpiped during `dest.write()`, it is possible
-      // to get stuck in a permanently paused state if that write
-      // also returned false.
-      if (state.pipesCount === 1 &&
-          state.pipes[0] === dest &&
-          src.listenerCount('data') === 1 &&
-          !cleanedUp) {
-        debug('false write response, pause', src._readableState.awaitDrain);
-        src._readableState.awaitDrain++;
-      }
-      src.pause();
-    }
-  }
- 
-  // if the dest has an error, then stop piping into it.
-  // however, don't suppress the throwing behavior for this.
-  function onerror(er) {
-    debug('onerror', er);
-    unpipe();
-    dest.removeListener('error', onerror);
-    if (EElistenerCount(dest, 'error') === 0)
-      dest.emit('error', er);
-  }
-  // This is a brutally ugly hack to make sure that our error handler
-  // is attached before any userland ones.  NEVER DO THIS.
-  if (!dest._events || !dest._events.error)
-    dest.on('error', onerror);
-  else if (isArray(dest._events.error))
-    dest._events.error.unshift(onerror);
-  else
-    dest._events.error = [onerror, dest._events.error];
- 
- 
-  // Both close and finish should trigger unpipe, but only once.
-  function onclose() {
-    dest.removeListener('finish', onfinish);
-    unpipe();
-  }
-  dest.once('close', onclose);
-  function onfinish() {
-    debug('onfinish');
-    dest.removeListener('close', onclose);
-    unpipe();
-  }
-  dest.once('finish', onfinish);
- 
-  function unpipe() {
-    debug('unpipe');
-    src.unpipe(dest);
-  }
- 
-  // tell the dest that it's being piped to
-  dest.emit('pipe', src);
- 
-  // start the flow if it hasn't been started already.
-  if (!state.flowing) {
-    debug('pipe resume');
-    src.resume();
-  }
- 
-  return dest;
-};
- 
-function pipeOnDrain(src) {
-  return function() {
-    var state = src._readableState;
-    debug('pipeOnDrain', state.awaitDrain);
-    if (state.awaitDrain)
-      state.awaitDrain--;
-    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
-      state.flowing = true;
-      flow(src);
-    }
-  };
-}
- 
- 
-Readable.prototype.unpipe = function(dest) {
-  var state = this._readableState;
- 
-  // if we're not piping anywhere, then do nothing.
-  if (state.pipesCount === 0)
-    return this;
- 
-  // just one destination.  most common case.
-  if (state.pipesCount === 1) {
-    // passed in one, but it's not the right one.
-    if (dest && dest !== state.pipes)
-      return this;
- 
-    if (!dest)
-      dest = state.pipes;
- 
-    // got a match.
-    state.pipes = null;
-    state.pipesCount = 0;
-    state.flowing = false;
-    if (dest)
-      dest.emit('unpipe', this);
-    return this;
-  }
- 
-  // slow case. multiple pipe destinations.
- 
-  if (!dest) {
-    // remove all.
-    var dests = state.pipes;
-    var len = state.pipesCount;
-    state.pipes = null;
-    state.pipesCount = 0;
-    state.flowing = false;
- 
-    for (var i = 0; i < len; i++)
-      dests[i].emit('unpipe', this);
-    return this;
-  }
- 
-  // try to find the right one.
-  var i = indexOf(state.pipes, dest);
-  if (i === -1)
-    return this;
- 
-  state.pipes.splice(i, 1);
-  state.pipesCount -= 1;
-  if (state.pipesCount === 1)
-    state.pipes = state.pipes[0];
- 
-  dest.emit('unpipe', this);
- 
-  return this;
-};
- 
-// set up data events if they are asked for
-// Ensure readable listeners eventually get something
-Readable.prototype.on = function(ev, fn) {
-  var res = Stream.prototype.on.call(this, ev, fn);
- 
-  // If listening to data, and it has not explicitly been paused,
-  // then call resume to start the flow of data on the next tick.
-  if (ev === 'data' && false !== this._readableState.flowing) {
-    this.resume();
-  }
- 
-  if (ev === 'readable' && this.readable) {
-    var state = this._readableState;
-    if (!state.readableListening) {
-      state.readableListening = true;
-      state.emittedReadable = false;
-      state.needReadable = true;
-      if (!state.reading) {
-        processNextTick(nReadingNextTick, this);
-      } else if (state.length) {
-        emitReadable(this, state);
-      }
-    }
-  }
- 
-  return res;
-};
-Readable.prototype.addListener = Readable.prototype.on;
- 
-function nReadingNextTick(self) {
-  debug('readable nexttick read 0');
-  self.read(0);
-}
- 
-// pause() and resume() are remnants of the legacy readable stream API
-// If the user uses them, then switch into old mode.
-Readable.prototype.resume = function() {
-  var state = this._readableState;
-  if (!state.flowing) {
-    debug('resume');
-    state.flowing = true;
-    resume(this, state);
-  }
-  return this;
-};
- 
-function resume(stream, state) {
-  if (!state.resumeScheduled) {
-    state.resumeScheduled = true;
-    processNextTick(resume_, stream, state);
-  }
-}
- 
-function resume_(stream, state) {
-  if (!state.reading) {
-    debug('resume read 0');
-    stream.read(0);
-  }
- 
-  state.resumeScheduled = false;
-  stream.emit('resume');
-  flow(stream);
-  if (state.flowing && !state.reading)
-    stream.read(0);
-}
- 
-Readable.prototype.pause = function() {
-  debug('call pause flowing=%j', this._readableState.flowing);
-  if (false !== this._readableState.flowing) {
-    debug('pause');
-    this._readableState.flowing = false;
-    this.emit('pause');
-  }
-  return this;
-};
- 
-function flow(stream) {
-  var state = stream._readableState;
-  debug('flow', state.flowing);
-  if (state.flowing) {
-    do {
-      var chunk = stream.read();
-    } while (null !== chunk && state.flowing);
-  }
-}
- 
-// wrap an old-style stream as the async data source.
-// This is *not* part of the readable stream interface.
-// It is an ugly unfortunate mess of history.
-Readable.prototype.wrap = function(stream) {
-  var state = this._readableState;
-  var paused = false;
- 
-  var self = this;
-  stream.on('end', function() {
-    debug('wrapped end');
-    if (state.decoder && !state.ended) {
-      var chunk = state.decoder.end();
-      if (chunk && chunk.length)
-        self.push(chunk);
-    }
- 
-    self.push(null);
-  });
- 
-  stream.on('data', function(chunk) {
-    debug('wrapped data');
-    if (state.decoder)
-      chunk = state.decoder.write(chunk);
- 
-    // don't skip over falsy values in objectMode
-    if (state.objectMode && (chunk === null || chunk === undefined))
-      return;
-    else if (!state.objectMode && (!chunk || !chunk.length))
-      return;
- 
-    var ret = self.push(chunk);
-    if (!ret) {
-      paused = true;
-      stream.pause();
-    }
-  });
- 
-  // proxy all the other methods.
-  // important when wrapping filters and duplexes.
-  for (var i in stream) {
-    if (this[i] === undefined && typeof stream[i] === 'function') {
-      this[i] = function(method) { return function() {
-        return stream[method].apply(stream, arguments);
-      }; }(i);
-    }
-  }
- 
-  // proxy certain important events.
-  var events = ['error', 'close', 'destroy', 'pause', 'resume'];
-  forEach(events, function(ev) {
-    stream.on(ev, self.emit.bind(self, ev));
-  });
- 
-  // when we try to consume some more bytes, simply unpause the
-  // underlying stream.
-  self._read = function(n) {
-    debug('wrapped _read', n);
-    if (paused) {
-      paused = false;
-      stream.resume();
-    }
-  };
- 
-  return self;
-};
- 
- 
-// exposed for testing purposes only.
-Readable._fromList = fromList;
- 
-// Pluck off n bytes from an array of buffers.
-// Length is the combined lengths of all the buffers in the list.
-function fromList(n, state) {
-  var list = state.buffer;
-  var length = state.length;
-  var stringMode = !!state.decoder;
-  var objectMode = !!state.objectMode;
-  var ret;
- 
-  // nothing in the list, definitely empty.
-  if (list.length === 0)
-    return null;
- 
-  if (length === 0)
-    ret = null;
-  else if (objectMode)
-    ret = list.shift();
-  else if (!n || n >= length) {
-    // read it all, truncate the array.
-    if (stringMode)
-      ret = list.join('');
-    else if (list.length === 1)
-      ret = list[0];
-    else
-      ret = Buffer.concat(list, length);
-    list.length = 0;
-  } else {
-    // read just some of it.
-    if (n < list[0].length) {
-      // just take a part of the first list item.
-      // slice is the same for buffers and strings.
-      var buf = list[0];
-      ret = buf.slice(0, n);
-      list[0] = buf.slice(n);
-    } else if (n === list[0].length) {
-      // first list is a perfect match
-      ret = list.shift();
-    } else {
-      // complex case.
-      // we have enough to cover it, but it spans past the first buffer.
-      if (stringMode)
-        ret = '';
-      else
-        ret = new Buffer(n);
- 
-      var c = 0;
-      for (var i = 0, l = list.length; i < l && c < n; i++) {
-        var buf = list[0];
-        var cpy = Math.min(n - c, buf.length);
- 
-        if (stringMode)
-          ret += buf.slice(0, cpy);
-        else
-          buf.copy(ret, c, 0, cpy);
- 
-        if (cpy < buf.length)
-          list[0] = buf.slice(cpy);
-        else
-          list.shift();
- 
-        c += cpy;
-      }
-    }
-  }
- 
-  return ret;
-}
- 
-function endReadable(stream) {
-  var state = stream._readableState;
- 
-  // If we get here before consuming all the bytes, then that is a
-  // bug in node.  Should never happen.
-  if (state.length > 0)
-    throw new Error('endReadable called on non-empty stream');
- 
-  if (!state.endEmitted) {
-    state.ended = true;
-    processNextTick(endReadableNT, state, stream);
-  }
-}
- 
-function endReadableNT(state, stream) {
-  // Check that we didn't get one last unshift.
-  if (!state.endEmitted && state.length === 0) {
-    state.endEmitted = true;
-    stream.readable = false;
-    stream.emit('end');
-  }
-}
- 
-function forEach (xs, f) {
-  for (var i = 0, l = xs.length; i < l; i++) {
-    f(xs[i], i);
-  }
-}
- 
-function indexOf (xs, x) {
-  for (var i = 0, l = xs.length; i < l; i++) {
-    if (xs[i] === x) return i;
-  }
-  return -1;
-}
- 
-}).call(this,require('_process'))
-},{"./_stream_duplex":48,"_process":42,"buffer":33,"core-util-is":53,"events":37,"inherits":38,"isarray":40,"process-nextick-args":54,"string_decoder/":70,"util":32}],51:[function(require,module,exports){
-// a transform stream is a readable/writable stream where you do
-// something with the data.  Sometimes it's called a "filter",
-// but that's not a great name for it, since that implies a thing where
-// some bits pass through, and others are simply ignored.  (That would
-// be a valid example of a transform, of course.)
-//
-// While the output is causally related to the input, it's not a
-// necessarily symmetric or synchronous transformation.  For example,
-// a zlib stream might take multiple plain-text writes(), and then
-// emit a single compressed chunk some time in the future.
-//
-// Here's how this works:
-//
-// The Transform stream has all the aspects of the readable and writable
-// stream classes.  When you write(chunk), that calls _write(chunk,cb)
-// internally, and returns false if there's a lot of pending writes
-// buffered up.  When you call read(), that calls _read(n) until
-// there's enough pending readable data buffered up.
-//
-// In a transform stream, the written data is placed in a buffer.  When
-// _read(n) is called, it transforms the queued up data, calling the
-// buffered _write cb's as it consumes chunks.  If consuming a single
-// written chunk would result in multiple output chunks, then the first
-// outputted bit calls the readcb, and subsequent chunks just go into
-// the read buffer, and will cause it to emit 'readable' if necessary.
-//
-// This way, back-pressure is actually determined by the reading side,
-// since _read has to be called to start processing a new chunk.  However,
-// a pathological inflate type of transform can cause excessive buffering
-// here.  For example, imagine a stream where every byte of input is
-// interpreted as an integer from 0-255, and then results in that many
-// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in
-// 1kb of data being output.  In this case, you could write a very small
-// amount of input, and end up with a very large amount of output.  In
-// such a pathological inflating mechanism, there'd be no way to tell
-// the system to stop doing the transform.  A single 4MB write could
-// cause the system to run out of memory.
-//
-// However, even in such a pathological case, only a single written chunk
-// would be consumed, and then the rest would wait (un-transformed) until
-// the results of the previous transformed chunk were consumed.
- 
-'use strict';
- 
-module.exports = Transform;
- 
-var Duplex = require('./_stream_duplex');
- 
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
- 
-util.inherits(Transform, Duplex);
- 
- 
-function TransformState(stream) {
-  this.afterTransform = function(er, data) {
-    return afterTransform(stream, er, data);
-  };
- 
-  this.needTransform = false;
-  this.transforming = false;
-  this.writecb = null;
-  this.writechunk = null;
-}
- 
-function afterTransform(stream, er, data) {
-  var ts = stream._transformState;
-  ts.transforming = false;
- 
-  var cb = ts.writecb;
- 
-  if (!cb)
-    return stream.emit('error', new Error('no writecb in Transform class'));
- 
-  ts.writechunk = null;
-  ts.writecb = null;
- 
-  if (data !== null && data !== undefined)
-    stream.push(data);
- 
-  if (cb)
-    cb(er);
- 
-  var rs = stream._readableState;
-  rs.reading = false;
-  if (rs.needReadable || rs.length < rs.highWaterMark) {
-    stream._read(rs.highWaterMark);
-  }
-}
- 
- 
-function Transform(options) {
-  if (!(this instanceof Transform))
-    return new Transform(options);
- 
-  Duplex.call(this, options);
- 
-  this._transformState = new TransformState(this);
- 
-  // when the writable side finishes, then flush out anything remaining.
-  var stream = this;
- 
-  // start out asking for a readable event once data is transformed.
-  this._readableState.needReadable = true;
- 
-  // we have implemented the _read method, and done the other things
-  // that Readable wants before the first _read call, so unset the
-  // sync guard flag.
-  this._readableState.sync = false;
- 
-  if (options) {
-    if (typeof options.transform === 'function')
-      this._transform = options.transform;
- 
-    if (typeof options.flush === 'function')
-      this._flush = options.flush;
-  }
- 
-  this.once('prefinish', function() {
-    if (typeof this._flush === 'function')
-      this._flush(function(er) {
-        done(stream, er);
-      });
-    else
-      done(stream);
-  });
-}
- 
-Transform.prototype.push = function(chunk, encoding) {
-  this._transformState.needTransform = false;
-  return Duplex.prototype.push.call(this, chunk, encoding);
-};
- 
-// This is the part where you do stuff!
-// override this function in implementation classes.
-// 'chunk' is an input chunk.
-//
-// Call `push(newChunk)` to pass along transformed output
-// to the readable side.  You may call 'push' zero or more times.
-//
-// Call `cb(err)` when you are done with this chunk.  If you pass
-// an error, then that'll put the hurt on the whole operation.  If you
-// never call cb(), then you'll never get another chunk.
-Transform.prototype._transform = function(chunk, encoding, cb) {
-  throw new Error('not implemented');
-};
- 
-Transform.prototype._write = function(chunk, encoding, cb) {
-  var ts = this._transformState;
-  ts.writecb = cb;
-  ts.writechunk = chunk;
-  ts.writeencoding = encoding;
-  if (!ts.transforming) {
-    var rs = this._readableState;
-    if (ts.needTransform ||
-        rs.needReadable ||
-        rs.length < rs.highWaterMark)
-      this._read(rs.highWaterMark);
-  }
-};
- 
-// Doesn't matter what the args are here.
-// _transform does all the work.
-// That we got here means that the readable side wants more data.
-Transform.prototype._read = function(n) {
-  var ts = this._transformState;
- 
-  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
-    ts.transforming = true;
-    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
-  } else {
-    // mark that we need a transform, so that any data that comes in
-    // will get processed, now that we've asked for it.
-    ts.needTransform = true;
-  }
-};
- 
- 
-function done(stream, er) {
-  if (er)
-    return stream.emit('error', er);
- 
-  // if there's nothing in the write buffer, then that means
-  // that nothing more will ever be provided
-  var ws = stream._writableState;
-  var ts = stream._transformState;
- 
-  if (ws.length)
-    throw new Error('calling transform done when ws.length != 0');
- 
-  if (ts.transforming)
-    throw new Error('calling transform done when still transforming');
- 
-  return stream.push(null);
-}
- 
-},{"./_stream_duplex":48,"core-util-is":53,"inherits":38}],52:[function(require,module,exports){
-// A bit simpler than readable streams.
-// Implement an async ._write(chunk, encoding, cb), and it'll handle all
-// the drain event emission and buffering.
- 
-'use strict';
- 
-module.exports = Writable;
- 
-/*<replacement>*/
-var processNextTick = require('process-nextick-args');
-/*</replacement>*/
- 
- 
-/*<replacement>*/
-var Buffer = require('buffer').Buffer;
-/*</replacement>*/
- 
-Writable.WritableState = WritableState;
- 
- 
-/*<replacement>*/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/*</replacement>*/
- 
- 
-/*<replacement>*/
-var internalUtil = {
-  deprecate: require('util-deprecate')
-};
-/*</replacement>*/
- 
- 
- 
-/*<replacement>*/
-var Stream;
-(function (){try{
-  Stream = require('st' + 'ream');
-}catch(_){}finally{
-  if (!Stream)
-    Stream = require('events').EventEmitter;
-}}())
-/*</replacement>*/
- 
-var Buffer = require('buffer').Buffer;
- 
-util.inherits(Writable, Stream);
- 
-function nop() {}
- 
-function WriteReq(chunk, encoding, cb) {
-  this.chunk = chunk;
-  this.encoding = encoding;
-  this.callback = cb;
-  this.next = null;
-}
- 
-var Duplex;
-function WritableState(options, stream) {
-  Duplex = Duplex || require('./_stream_duplex');
- 
-  options = options || {};
- 
-  // object stream flag to indicate whether or not this stream
-  // contains buffers or objects.
-  this.objectMode = !!options.objectMode;
- 
-  if (stream instanceof Duplex)
-    this.objectMode = this.objectMode || !!options.writableObjectMode;
- 
-  // the point at which write() starts returning false
-  // Note: 0 is a valid value, means that we always return false if
-  // the entire buffer is not flushed immediately on write()
-  var hwm = options.highWaterMark;
-  var defaultHwm = this.objectMode ? 16 : 16 * 1024;
-  this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;
- 
-  // cast to ints.
-  this.highWaterMark = ~~this.highWaterMark;
- 
-  this.needDrain = false;
-  // at the start of calling end()
-  this.ending = false;
-  // when end() has been called, and returned
-  this.ended = false;
-  // when 'finish' is emitted
-  this.finished = false;
- 
-  // should we decode strings into buffers before passing to _write?
-  // this is here so that some node-core streams can optimize string
-  // handling at a lower level.
-  var noDecode = options.decodeStrings === false;
-  this.decodeStrings = !noDecode;
- 
-  // Crypto is kind of old and crusty.  Historically, its default string
-  // encoding is 'binary' so we have to make this configurable.
-  // Everything else in the universe uses 'utf8', though.
-  this.defaultEncoding = options.defaultEncoding || 'utf8';
- 
-  // not an actual buffer we keep track of, but a measurement
-  // of how much we're waiting to get pushed to some underlying
-  // socket or file.
-  this.length = 0;
- 
-  // a flag to see when we're in the middle of a write.
-  this.writing = false;
- 
-  // when true all writes will be buffered until .uncork() call
-  this.corked = 0;
- 
-  // a flag to be able to tell if the onwrite cb is called immediately,
-  // or on a later tick.  We set this to true at first, because any
-  // actions that shouldn't happen until "later" should generally also
-  // not happen before the first write call.
-  this.sync = true;
- 
-  // a flag to know if we're processing previously buffered items, which
-  // may call the _write() callback in the same tick, so that we don't
-  // end up in an overlapped onwrite situation.
-  this.bufferProcessing = false;
- 
-  // the callback that's passed to _write(chunk,cb)
-  this.onwrite = function(er) {
-    onwrite(stream, er);
-  };
- 
-  // the callback that the user supplies to write(chunk,encoding,cb)
-  this.writecb = null;
- 
-  // the amount that is being written when _write is called.
-  this.writelen = 0;
- 
-  this.bufferedRequest = null;
-  this.lastBufferedRequest = null;
- 
-  // number of pending user-supplied write callbacks
-  // this must be 0 before 'finish' can be emitted
-  this.pendingcb = 0;
- 
-  // emit prefinish if the only thing we're waiting for is _write cbs
-  // This is relevant for synchronous Transform streams
-  this.prefinished = false;
- 
-  // True if the error was already emitted and should not be thrown again
-  this.errorEmitted = false;
-}
- 
-WritableState.prototype.getBuffer = function writableStateGetBuffer() {
-  var current = this.bufferedRequest;
-  var out = [];
-  while (current) {
-    out.push(current);
-    current = current.next;
-  }
-  return out;
-};
- 
-(function (){try {
-Object.defineProperty(WritableState.prototype, 'buffer', {
-  get: internalUtil.deprecate(function() {
-    return this.getBuffer();
-  }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' +
-     'instead.')
-});
-}catch(_){}}());
- 
- 
-var Duplex;
-function Writable(options) {
-  Duplex = Duplex || require('./_stream_duplex');
- 
-  // Writable ctor is applied to Duplexes, though they're not
-  // instanceof Writable, they're instanceof Readable.
-  if (!(this instanceof Writable) && !(this instanceof Duplex))
-    return new Writable(options);
- 
-  this._writableState = new WritableState(options, this);
- 
-  // legacy.
-  this.writable = true;
- 
-  if (options) {
-    if (typeof options.write === 'function')
-      this._write = options.write;
- 
-    if (typeof options.writev === 'function')
-      this._writev = options.writev;
-  }
- 
-  Stream.call(this);
-}
- 
-// Otherwise people can pipe Writable streams, which is just wrong.
-Writable.prototype.pipe = function() {
-  this.emit('error', new Error('Cannot pipe. Not readable.'));
-};
- 
- 
-function writeAfterEnd(stream, cb) {
-  var er = new Error('write after end');
-  // TODO: defer error events consistently everywhere, not just the cb
-  stream.emit('error', er);
-  processNextTick(cb, er);
-}
- 
-// If we get something that is not a buffer, string, null, or undefined,
-// and we're not in objectMode, then that's an error.
-// Otherwise stream chunks are all considered to be of length=1, and the
-// watermarks determine how many objects to keep in the buffer, rather than
-// how many bytes or characters.
-function validChunk(stream, state, chunk, cb) {
-  var valid = true;
- 
-  if (!(Buffer.isBuffer(chunk)) &&
-      typeof chunk !== 'string' &&
-      chunk !== null &&
-      chunk !== undefined &&
-      !state.objectMode) {
-    var er = new TypeError('Invalid non-string/buffer chunk');
-    stream.emit('error', er);
-    processNextTick(cb, er);
-    valid = false;
-  }
-  return valid;
-}
- 
-Writable.prototype.write = function(chunk, encoding, cb) {
-  var state = this._writableState;
-  var ret = false;
- 
-  if (typeof encoding === 'function') {
-    cb = encoding;
-    encoding = null;
-  }
- 
-  if (Buffer.isBuffer(chunk))
-    encoding = 'buffer';
-  else if (!encoding)
-    encoding = state.defaultEncoding;
- 
-  if (typeof cb !== 'function')
-    cb = nop;
- 
-  if (state.ended)
-    writeAfterEnd(this, cb);
-  else if (validChunk(this, state, chunk, cb)) {
-    state.pendingcb++;
-    ret = writeOrBuffer(this, state, chunk, encoding, cb);
-  }
- 
-  return ret;
-};
- 
-Writable.prototype.cork = function() {
-  var state = this._writableState;
- 
-  state.corked++;
-};
- 
-Writable.prototype.uncork = function() {
-  var state = this._writableState;
- 
-  if (state.corked) {
-    state.corked--;
- 
-    if (!state.writing &&
-        !state.corked &&
-        !state.finished &&
-        !state.bufferProcessing &&
-        state.bufferedRequest)
-      clearBuffer(this, state);
-  }
-};
- 
-Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
-  // node::ParseEncoding() requires lower case.
-  if (typeof encoding === 'string')
-    encoding = encoding.toLowerCase();
-  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64',
-'ucs2', 'ucs-2','utf16le', 'utf-16le', 'raw']
-.indexOf((encoding + '').toLowerCase()) > -1))
-    throw new TypeError('Unknown encoding: ' + encoding);
-  this._writableState.defaultEncoding = encoding;
-};
- 
-function decodeChunk(state, chunk, encoding) {
-  if (!state.objectMode &&
-      state.decodeStrings !== false &&
-      typeof chunk === 'string') {
-    chunk = new Buffer(chunk, encoding);
-  }
-  return chunk;
-}
- 
-// if we're already writing something, then just put this
-// in the queue, and wait our turn.  Otherwise, call _write
-// If we return false, then we need a drain event, so set that flag.
-function writeOrBuffer(stream, state, chunk, encoding, cb) {
-  chunk = decodeChunk(state, chunk, encoding);
- 
-  if (Buffer.isBuffer(chunk))
-    encoding = 'buffer';
-  var len = state.objectMode ? 1 : chunk.length;
- 
-  state.length += len;
- 
-  var ret = state.length < state.highWaterMark;
-  // we must ensure that previous needDrain will not be reset to false.
-  if (!ret)
-    state.needDrain = true;
- 
-  if (state.writing || state.corked) {
-    var last = state.lastBufferedRequest;
-    state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
-    if (last) {
-      last.next = state.lastBufferedRequest;
-    } else {
-      state.bufferedRequest = state.lastBufferedRequest;
-    }
-  } else {
-    doWrite(stream, state, false, len, chunk, encoding, cb);
-  }
- 
-  return ret;
-}
- 
-function doWrite(stream, state, writev, len, chunk, encoding, cb) {
-  state.writelen = len;
-  state.writecb = cb;
-  state.writing = true;
-  state.sync = true;
-  if (writev)
-    stream._writev(chunk, state.onwrite);
-  else
-    stream._write(chunk, encoding, state.onwrite);
-  state.sync = false;
-}
- 
-function onwriteError(stream, state, sync, er, cb) {
-  --state.pendingcb;
-  if (sync)
-    processNextTick(cb, er);
-  else
-    cb(er);
- 
-  stream._writableState.errorEmitted = true;
-  stream.emit('error', er);
-}
- 
-function onwriteStateUpdate(state) {
-  state.writing = false;
-  state.writecb = null;
-  state.length -= state.writelen;
-  state.writelen = 0;
-}
- 
-function onwrite(stream, er) {
-  var state = stream._writableState;
-  var sync = state.sync;
-  var cb = state.writecb;
- 
-  onwriteStateUpdate(state);
- 
-  if (er)
-    onwriteError(stream, state, sync, er, cb);
-  else {
-    // Check if we're actually ready to finish, but don't emit yet
-    var finished = needFinish(state);
- 
-    if (!finished &&
-        !state.corked &&
-        !state.bufferProcessing &&
-        state.bufferedRequest) {
-      clearBuffer(stream, state);
-    }
- 
-    if (sync) {
-      processNextTick(afterWrite, stream, state, finished, cb);
-    } else {
-      afterWrite(stream, state, finished, cb);
-    }
-  }
-}
- 
-function afterWrite(stream, state, finished, cb) {
-  if (!finished)
-    onwriteDrain(stream, state);
-  state.pendingcb--;
-  cb();
-  finishMaybe(stream, state);
-}
- 
-// Must force callback to be called on nextTick, so that we don't
-// emit 'drain' before the write() consumer gets the 'false' return
-// value, and has a chance to attach a 'drain' listener.
-function onwriteDrain(stream, state) {
-  if (state.length === 0 && state.needDrain) {
-    state.needDrain = false;
-    stream.emit('drain');
-  }
-}
- 
- 
-// if there's something in the buffer waiting, then process it
-function clearBuffer(stream, state) {
-  state.bufferProcessing = true;
-  var entry = state.bufferedRequest;
- 
-  if (stream._writev && entry && entry.next) {
-    // Fast case, write everything using _writev()
-    var buffer = [];
-    var cbs = [];
-    while (entry) {
-      cbs.push(entry.callback);
-      buffer.push(entry);
-      entry = entry.next;
-    }
- 
-    // count the one we are adding, as well.
-    // TODO(isaacs) clean this up
-    state.pendingcb++;
-    state.lastBufferedRequest = null;
-    doWrite(stream, state, true, state.length, buffer, '', function(err) {
-      for (var i = 0; i < cbs.length; i++) {
-        state.pendingcb--;
-        cbs[i](err);
-      }
-    });
- 
-    // Clear buffer
-  } else {
-    // Slow case, write chunks one-by-one
-    while (entry) {
-      var chunk = entry.chunk;
-      var encoding = entry.encoding;
-      var cb = entry.callback;
-      var len = state.objectMode ? 1 : chunk.length;
- 
-      doWrite(stream, state, false, len, chunk, encoding, cb);
-      entry = entry.next;
-      // if we didn't call the onwrite immediately, then
-      // it means that we need to wait until it does.
-      // also, that means that the chunk and cb are currently
-      // being processed, so move the buffer counter past them.
-      if (state.writing) {
-        break;
-      }
-    }
- 
-    if (entry === null)
-      state.lastBufferedRequest = null;
-  }
-  state.bufferedRequest = entry;
-  state.bufferProcessing = false;
-}
- 
-Writable.prototype._write = function(chunk, encoding, cb) {
-  cb(new Error('not implemented'));
-};
- 
-Writable.prototype._writev = null;
- 
-Writable.prototype.end = function(chunk, encoding, cb) {
-  var state = this._writableState;
- 
-  if (typeof chunk === 'function') {
-    cb = chunk;
-    chunk = null;
-    encoding = null;
-  } else if (typeof encoding === 'function') {
-    cb = encoding;
-    encoding = null;
-  }
- 
-  if (chunk !== null && chunk !== undefined)
-    this.write(chunk, encoding);
- 
-  // .end() fully uncorks
-  if (state.corked) {
-    state.corked = 1;
-    this.uncork();
-  }
- 
-  // ignore unnecessary end() calls.
-  if (!state.ending && !state.finished)
-    endWritable(this, state, cb);
-};
- 
- 
-function needFinish(state) {
-  return (state.ending &&
-          state.length === 0 &&
-          state.bufferedRequest === null &&
-          !state.finished &&
-          !state.writing);
-}
- 
-function prefinish(stream, state) {
-  if (!state.prefinished) {
-    state.prefinished = true;
-    stream.emit('prefinish');
-  }
-}
- 
-function finishMaybe(stream, state) {
-  var need = needFinish(state);
-  if (need) {
-    if (state.pendingcb === 0) {
-      prefinish(stream, state);
-      state.finished = true;
-      stream.emit('finish');
-    } else {
-      prefinish(stream, state);
-    }
-  }
-  return need;
-}
- 
-function endWritable(stream, state, cb) {
-  state.ending = true;
-  finishMaybe(stream, state);
-  if (cb) {
-    if (state.finished)
-      processNextTick(cb);
-    else
-      stream.once('finish', cb);
-  }
-  state.ended = true;
-}
- 
-},{"./_stream_duplex":48,"buffer":33,"core-util-is":53,"events":37,"inherits":38,"process-nextick-args":54,"util-deprecate":55}],53:[function(require,module,exports){
-(function (Buffer){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
- 
-// NOTE: These type checking functions intentionally don't use `instanceof`
-// because it is fragile and can be easily faked with `Object.create()`.
- 
-function isArray(arg) {
-  if (Array.isArray) {
-    return Array.isArray(arg);
-  }
-  return objectToString(arg) === '[object Array]';
-}
-exports.isArray = isArray;
- 
-function isBoolean(arg) {
-  return typeof arg === 'boolean';
-}
-exports.isBoolean = isBoolean;
- 
-function isNull(arg) {
-  return arg === null;
-}
-exports.isNull = isNull;
- 
-function isNullOrUndefined(arg) {
-  return arg == null;
-}
-exports.isNullOrUndefined = isNullOrUndefined;
- 
-function isNumber(arg) {
-  return typeof arg === 'number';
-}
-exports.isNumber = isNumber;
- 
-function isString(arg) {
-  return typeof arg === 'string';
-}
-exports.isString = isString;
- 
-function isSymbol(arg) {
-  return typeof arg === 'symbol';
-}
-exports.isSymbol = isSymbol;
- 
-function isUndefined(arg) {
-  return arg === void 0;
-}
-exports.isUndefined = isUndefined;
- 
-function isRegExp(re) {
-  return objectToString(re) === '[object RegExp]';
-}
-exports.isRegExp = isRegExp;
- 
-function isObject(arg) {
-  return typeof arg === 'object' && arg !== null;
-}
-exports.isObject = isObject;
- 
-function isDate(d) {
-  return objectToString(d) === '[object Date]';
-}
-exports.isDate = isDate;
- 
-function isError(e) {
-  return (objectToString(e) === '[object Error]' || e instanceof Error);
-}
-exports.isError = isError;
- 
-function isFunction(arg) {
-  return typeof arg === 'function';
-}
-exports.isFunction = isFunction;
- 
-function isPrimitive(arg) {
-  return arg === null ||
-         typeof arg === 'boolean' ||
-         typeof arg === 'number' ||
-         typeof arg === 'string' ||
-         typeof arg === 'symbol' ||  // ES6 symbol
-         typeof arg === 'undefined';
-}
-exports.isPrimitive = isPrimitive;
- 
-exports.isBuffer = Buffer.isBuffer;
- 
-function objectToString(o) {
-  return Object.prototype.toString.call(o);
-}
- 
-}).call(this,{"isBuffer":require("../../../../insert-module-globals/node_modules/is-buffer/index.js")})
-},{"../../../../insert-module-globals/node_modules/is-buffer/index.js":39}],54:[function(require,module,exports){
-(function (process){
-'use strict';
- 
-if (!process.version ||
-    process.version.indexOf('v0.') === 0 ||
-    process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
-  module.exports = nextTick;
-} else {
-  module.exports = process.nextTick;
-}
- 
-function nextTick(fn) {
-  var args = new Array(arguments.length - 1);
-  var i = 0;
-  while (i < args.length) {
-    args[i++] = arguments[i];
-  }
-  process.nextTick(function afterTick() {
-    fn.apply(null, args);
-  });
-}
- 
-}).call(this,require('_process'))
-},{"_process":42}],55:[function(require,module,exports){
-(function (global){
- 
-/**
- * Module exports.
- */
- 
-module.exports = deprecate;
- 
-/**
- * Mark that a method should not be used.
- * Returns a modified function which warns once by default.
- *
- * If `localStorage.noDeprecation = true` is set, then it is a no-op.
- *
- * If `localStorage.throwDeprecation = true` is set, then deprecated functions
- * will throw an Error when invoked.
- *
- * If `localStorage.traceDeprecation = true` is set, then deprecated functions
- * will invoke `console.trace()` instead of `console.error()`.
- *
- * @param {Function} fn - the function to deprecate
- * @param {String} msg - the string to print to the console when `fn` is invoked
- * @returns {Function} a new "deprecated" version of `fn`
- * @api public
- */
- 
-function deprecate (fn, msg) {
-  if (config('noDeprecation')) {
-    return fn;
-  }
- 
-  var warned = false;
-  function deprecated() {
-    if (!warned) {
-      if (config('throwDeprecation')) {
-        throw new Error(msg);
-      } else if (config('traceDeprecation')) {
-        console.trace(msg);
-      } else {
-        console.warn(msg);
-      }
-      warned = true;
-    }
-    return fn.apply(this, arguments);
-  }
- 
-  return deprecated;
-}
- 
-/**
- * Checks `localStorage` for boolean values for the given `name`.
- *
- * @param {String} name
- * @returns {Boolean}
- * @api private
- */
- 
-function config (name) {
-  // accessing global.localStorage can trigger a DOMException in sandboxed iframes
-  try {
-    if (!global.localStorage) return false;
-  } catch (_) {
-    return false;
-  }
-  var val = global.localStorage[name];
-  if (null == val) return false;
-  return String(val).toLowerCase() === 'true';
-}
- 
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{}],56:[function(require,module,exports){
-module.exports = require("./lib/_stream_passthrough.js")
- 
-},{"./lib/_stream_passthrough.js":49}],57:[function(require,module,exports){
-var Stream = (function (){
-  try {
-    return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
-  } catch(_){}
-}());
-exports = module.exports = require('./lib/_stream_readable.js');
-exports.Stream = Stream || exports;
-exports.Readable = exports;
-exports.Writable = require('./lib/_stream_writable.js');
-exports.Duplex = require('./lib/_stream_duplex.js');
-exports.Transform = require('./lib/_stream_transform.js');
-exports.PassThrough = require('./lib/_stream_passthrough.js');
- 
-},{"./lib/_stream_duplex.js":48,"./lib/_stream_passthrough.js":49,"./lib/_stream_readable.js":50,"./lib/_stream_transform.js":51,"./lib/_stream_writable.js":52}],58:[function(require,module,exports){
-module.exports = require("./lib/_stream_transform.js")
- 
-},{"./lib/_stream_transform.js":51}],59:[function(require,module,exports){
-module.exports = require("./lib/_stream_writable.js")
- 
-},{"./lib/_stream_writable.js":52}],60:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
- 
-module.exports = Stream;
- 
-var EE = require('events').EventEmitter;
-var inherits = require('inherits');
- 
-inherits(Stream, EE);
-Stream.Readable = require('readable-stream/readable.js');
-Stream.Writable = require('readable-stream/writable.js');
-Stream.Duplex = require('readable-stream/duplex.js');
-Stream.Transform = require('readable-stream/transform.js');
-Stream.PassThrough = require('readable-stream/passthrough.js');
- 
-// Backwards-compat with node 0.4.x
-Stream.Stream = Stream;
- 
- 
- 
-// old-style streams.  Note that the pipe method (the only relevant
-// part of this class) is overridden in the Readable class.
- 
-function Stream() {
-  EE.call(this);
-}
- 
-Stream.prototype.pipe = function(dest, options) {
-  var source = this;
- 
-  function ondata(chunk) {
-    if (dest.writable) {
-      if (false === dest.write(chunk) && source.pause) {
-        source.pause();
-      }
-    }
-  }
- 
-  source.on('data', ondata);
- 
-  function ondrain() {
-    if (source.readable && source.resume) {
-      source.resume();
-    }
-  }
- 
-  dest.on('drain', ondrain);
- 
-  // If the 'end' option is not supplied, dest.end() will be called when
-  // source gets the 'end' or 'close' events.  Only dest.end() once.
-  if (!dest._isStdio && (!options || options.end !== false)) {
-    source.on('end', onend);
-    source.on('close', onclose);
-  }
- 
-  var didOnEnd = false;
-  function onend() {
-    if (didOnEnd) return;
-    didOnEnd = true;
- 
-    dest.end();
-  }
- 
- 
-  function onclose() {
-    if (didOnEnd) return;
-    didOnEnd = true;
- 
-    if (typeof dest.destroy === 'function') dest.destroy();
-  }
- 
-  // don't leave dangling pipes when there are errors.
-  function onerror(er) {
-    cleanup();
-    if (EE.listenerCount(this, 'error') === 0) {
-      throw er; // Unhandled stream error in pipe.
-    }
-  }
- 
-  source.on('error', onerror);
-  dest.on('error', onerror);
- 
-  // remove all the event listeners that were added.
-  function cleanup() {
-    source.removeListener('data', ondata);
-    dest.removeListener('drain', ondrain);
- 
-    source.removeListener('end', onend);
-    source.removeListener('close', onclose);
- 
-    source.removeListener('error', onerror);
-    dest.removeListener('error', onerror);
- 
-    source.removeListener('end', cleanup);
-    source.removeListener('close', cleanup);
- 
-    dest.removeListener('close', cleanup);
-  }
- 
-  source.on('end', cleanup);
-  source.on('close', cleanup);
- 
-  dest.on('close', cleanup);
- 
-  dest.emit('pipe', source);
- 
-  // Allow for unix-like usage: A.pipe(B).pipe(C)
-  return dest;
-};
- 
-},{"events":37,"inherits":38,"readable-stream/duplex.js":47,"readable-stream/passthrough.js":56,"readable-stream/readable.js":57,"readable-stream/transform.js":58,"readable-stream/writable.js":59}],61:[function(require,module,exports){
-var ClientRequest = require('./lib/request')
-var extend = require('xtend')
-var statusCodes = require('builtin-status-codes')
-var url = require('url')
- 
-var http = exports
- 
-http.request = function (opts, cb) {
-	if (typeof opts === 'string')
-		opts = url.parse(opts)
-	else
-		opts = extend(opts)
- 
-	var protocol = opts.protocol || ''
-	var host = opts.hostname || opts.host
-	var port = opts.port
-	var path = opts.path || '/'
- 
-	// Necessary for IPv6 addresses
-	if (host && host.indexOf(':') !== -1)
-		host = '[' + host + ']'
- 
-	// This may be a relative url. The browser should always be able to interpret it correctly.
-	opts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path
-	opts.method = (opts.method || 'GET').toUpperCase()
-	opts.headers = opts.headers || {}
- 
-	// Also valid opts.auth, opts.mode
- 
-	var req = new ClientRequest(opts)
-	if (cb)
-		req.on('response', cb)
-	return req
-}
- 
-http.get = function get (opts, cb) {
-	var req = http.request(opts, cb)
-	req.end()
-	return req
-}
- 
-http.Agent = function () {}
-http.Agent.defaultMaxSockets = 4
- 
-http.STATUS_CODES = statusCodes
- 
-http.METHODS = [
-	'CHECKOUT',
-	'CONNECT',
-	'COPY',
-	'DELETE',
-	'GET',
-	'HEAD',
-	'LOCK',
-	'M-SEARCH',
-	'MERGE',
-	'MKACTIVITY',
-	'MKCOL',
-	'MOVE',
-	'NOTIFY',
-	'OPTIONS',
-	'PATCH',
-	'POST',
-	'PROPFIND',
-	'PROPPATCH',
-	'PURGE',
-	'PUT',
-	'REPORT',
-	'SEARCH',
-	'SUBSCRIBE',
-	'TRACE',
-	'UNLOCK',
-	'UNSUBSCRIBE'
-]
-},{"./lib/request":63,"builtin-status-codes":65,"url":71,"xtend":74}],62:[function(require,module,exports){
-(function (global){
-exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableByteStream)
- 
-exports.blobConstructor = false
-try {
-	new Blob([new ArrayBuffer(1)])
-	exports.blobConstructor = true
-} catch (e) {}
- 
-var xhr = new global.XMLHttpRequest()
-// If location.host is empty, e.g. if this page/worker was loaded
-// from a Blob, then use example.com to avoid an error
-xhr.open('GET', global.location.host ? '/' : 'https://example.com')
- 
-function checkTypeSupport (type) {
-	try {
-		xhr.responseType = type
-		return xhr.responseType === type
-	} catch (e) {}
-	return false
-}
- 
-// For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === 'object'.
-// Safari 7.1 appears to have fixed this bug.
-var haveArrayBuffer = typeof global.ArrayBuffer !== 'undefined'
-var haveSlice = haveArrayBuffer && isFunction(global.ArrayBuffer.prototype.slice)
- 
-exports.arraybuffer = haveArrayBuffer && checkTypeSupport('arraybuffer')
-// These next two tests unavoidably show warnings in Chrome. Since fetch will always
-// be used if it's available, just return false for these to avoid the warnings.
-exports.msstream = !exports.fetch && haveSlice && checkTypeSupport('ms-stream')
-exports.mozchunkedarraybuffer = !exports.fetch && haveArrayBuffer &&
-	checkTypeSupport('moz-chunked-arraybuffer')
-exports.overrideMimeType = isFunction(xhr.overrideMimeType)
-exports.vbArray = isFunction(global.VBArray)
- 
-function isFunction (value) {
-  return typeof value === 'function'
-}
- 
-xhr = null // Help gc
- 
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{}],63:[function(require,module,exports){
-(function (process,global,Buffer){
-// var Base64 = require('Base64')
-var capability = require('./capability')
-var foreach = require('foreach')
-var indexOf = require('indexof')
-var inherits = require('inherits')
-var keys = require('object-keys')
-var response = require('./response')
-var stream = require('stream')
- 
-var IncomingMessage = response.IncomingMessage
-var rStates = response.readyStates
- 
-function decideMode (preferBinary) {
-	if (capability.fetch) {
-		return 'fetch'
-	} else if (capability.mozchunkedarraybuffer) {
-		return 'moz-chunked-arraybuffer'
-	} else if (capability.msstream) {
-		return 'ms-stream'
-	} else if (capability.arraybuffer && preferBinary) {
-		return 'arraybuffer'
-	} else if (capability.vbArray && preferBinary) {
-		return 'text:vbarray'
-	} else {
-		return 'text'
-	}
-}
- 
-var ClientRequest = module.exports = function (opts) {
-	var self = this
-	stream.Writable.call(self)
- 
-	self._opts = opts
-	self._body = []
-	self._headers = {}
-	if (opts.auth)
-		self.setHeader('Authorization', 'Basic ' + new Buffer(opts.auth).toString('base64'))
-	foreach(keys(opts.headers), function (name) {
-		self.setHeader(name, opts.headers[name])
-	})
- 
-	var preferBinary
-	if (opts.mode === 'prefer-streaming') {
-		// If streaming is a high priority but binary compatibility and
-		// the accuracy of the 'content-type' header aren't
-		preferBinary = false
-	} else if (opts.mode === 'allow-wrong-content-type') {
-		// If streaming is more important than preserving the 'content-type' header
-		preferBinary = !capability.overrideMimeType
-	} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {
-		// Use binary if text streaming may corrupt data or the content-type header, or for speed
-		preferBinary = true
-	} else {
-		throw new Error('Invalid value for opts.mode')
-	}
-	self._mode = decideMode(preferBinary)
- 
-	self.on('finish', function () {
-		self._onFinish()
-	})
-}
- 
-inherits(ClientRequest, stream.Writable)
- 
-ClientRequest.prototype.setHeader = function (name, value) {
-	var self = this
-	var lowerName = name.toLowerCase()
-	// This check is not necessary, but it prevents warnings from browsers about setting unsafe
-	// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but
-	// http-browserify did it, so I will too.
-	if (indexOf(unsafeHeaders, lowerName) !== -1)
-		return
- 
-	self._headers[lowerName] = {
-		name: name,
-		value: value
-	}
-}
- 
-ClientRequest.prototype.getHeader = function (name) {
-	var self = this
-	return self._headers[name.toLowerCase()].value
-}
- 
-ClientRequest.prototype.removeHeader = function (name) {
-	var self = this
-	delete self._headers[name.toLowerCase()]
-}
- 
-ClientRequest.prototype._onFinish = function () {
-	var self = this
- 
-	if (self._destroyed)
-		return
-	var opts = self._opts
- 
-	var headersObj = self._headers
-	var body
-	if (opts.method === 'POST' || opts.method === 'PUT') {
-		if (capability.blobConstructor) {
-			body = new global.Blob(self._body.map(function (buffer) {
-				return buffer.toArrayBuffer()
-			}), {
-				type: (headersObj['content-type'] || {}).value || ''
-			})
-		} else {
-			// get utf8 string
-			body = Buffer.concat(self._body).toString()
-		}
-	}
- 
-	if (self._mode === 'fetch') {
-		var headers = keys(headersObj).map(function (name) {
-			return [headersObj[name].name, headersObj[name].value]
-		})
- 
-		global.fetch(self._opts.url, {
-			method: self._opts.method,
-			headers: headers,
-			body: body,
-			mode: 'cors',
-			credentials: opts.withCredentials ? 'include' : 'same-origin'
-		}).then(function (response) {
-			self._fetchResponse = response
-			self._connect()
-		}).then(undefined, function (reason) {
-			self.emit('error', reason)
-		})
-	} else {
-		var xhr = self._xhr = new global.XMLHttpRequest()
-		try {
-			xhr.open(self._opts.method, self._opts.url, true)
-		} catch (err) {
-			process.nextTick(function () {
-				self.emit('error', err)
-			})
-			return
-		}
- 
-		// Can't set responseType on really old browsers
-		if ('responseType' in xhr)
-			xhr.responseType = self._mode.split(':')[0]
- 
-		if ('withCredentials' in xhr)
-			xhr.withCredentials = !!opts.withCredentials
- 
-		if (self._mode === 'text' && 'overrideMimeType' in xhr)
-			xhr.overrideMimeType('text/plain; charset=x-user-defined')
- 
-		foreach(keys(headersObj), function (name) {
-			xhr.setRequestHeader(headersObj[name].name, headersObj[name].value)
-		})
- 
-		self._response = null
-		xhr.onreadystatechange = function () {
-			switch (xhr.readyState) {
-				case rStates.LOADING:
-				case rStates.DONE:
-					self._onXHRProgress()
-					break
-			}
-		}
-		// Necessary for streaming in Firefox, since xhr.response is ONLY defined
-		// in onprogress, not in onreadystatechange with xhr.readyState = 3
-		if (self._mode === 'moz-chunked-arraybuffer') {
-			xhr.onprogress = function () {
-				self._onXHRProgress()
-			}
-		}
- 
-		xhr.onerror = function () {
-			if (self._destroyed)
-				return
-			self.emit('error', new Error('XHR error'))
-		}
- 
-		try {
-			xhr.send(body)
-		} catch (err) {
-			process.nextTick(function () {
-				self.emit('error', err)
-			})
-			return
-		}
-	}
-}
- 
-/**
- * Checks if xhr.status is readable. Even though the spec says it should
- * be available in readyState 3, accessing it throws an exception in IE8
- */
-function statusValid (xhr) {
-	try {
-		return (xhr.status !== null)
-	} catch (e) {
-		return false
-	}
-}
- 
-ClientRequest.prototype._onXHRProgress = function () {
-	var self = this
- 
-	if (!statusValid(self._xhr) || self._destroyed)
-		return
- 
-	if (!self._response)
-		self._connect()
- 
-	self._response._onXHRProgress()
-}
- 
-ClientRequest.prototype._connect = function () {
-	var self = this
- 
-	if (self._destroyed)
-		return
- 
-	self._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode)
-	self.emit('response', self._response)
-}
- 
-ClientRequest.prototype._write = function (chunk, encoding, cb) {
-	var self = this
- 
-	self._body.push(chunk)
-	cb()
-}
- 
-ClientRequest.prototype.abort = ClientRequest.prototype.destroy = function () {
-	var self = this
-	self._destroyed = true
-	if (self._response)
-		self._response._destroyed = true
-	if (self._xhr)
-		self._xhr.abort()
-	// Currently, there isn't a way to truly abort a fetch.
-	// If you like bikeshedding, see https://github.com/whatwg/fetch/issues/27
-}
- 
-ClientRequest.prototype.end = function (data, encoding, cb) {
-	var self = this
-	if (typeof data === 'function') {
-		cb = data
-		data = undefined
-	}
- 
-	stream.Writable.prototype.end.call(self, data, encoding, cb)
-}
- 
-ClientRequest.prototype.flushHeaders = function () {}
-ClientRequest.prototype.setTimeout = function () {}
-ClientRequest.prototype.setNoDelay = function () {}
-ClientRequest.prototype.setSocketKeepAlive = function () {}
- 
-// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method
-var unsafeHeaders = [
-	'accept-charset',
-	'accept-encoding',
-	'access-control-request-headers',
-	'access-control-request-method',
-	'connection',
-	'content-length',
-	'cookie',
-	'cookie2',
-	'date',
-	'dnt',
-	'expect',
-	'host',
-	'keep-alive',
-	'origin',
-	'referer',
-	'te',
-	'trailer',
-	'transfer-encoding',
-	'upgrade',
-	'user-agent',
-	'via'
-]
- 
-}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
-},{"./capability":62,"./response":64,"_process":42,"buffer":33,"foreach":66,"indexof":67,"inherits":38,"object-keys":68,"stream":60}],64:[function(require,module,exports){
-(function (process,global,Buffer){
-var capability = require('./capability')
-var foreach = require('foreach')
-var inherits = require('inherits')
-var stream = require('stream')
- 
-var rStates = exports.readyStates = {
-	UNSENT: 0,
-	OPENED: 1,
-	HEADERS_RECEIVED: 2,
-	LOADING: 3,
-	DONE: 4
-}
- 
-var IncomingMessage = exports.IncomingMessage = function (xhr, response, mode) {
-	var self = this
-	stream.Readable.call(self)
- 
-	self._mode = mode
-	self.headers = {}
-	self.rawHeaders = []
-	self.trailers = {}
-	self.rawTrailers = []
- 
-	// Fake the 'close' event, but only once 'end' fires
-	self.on('end', function () {
-		// The nextTick is necessary to prevent the 'request' module from causing an infinite loop
-		process.nextTick(function () {
-			self.emit('close')
-		})
-	})
- 
-	if (mode === 'fetch') {
-		self._fetchResponse = response
- 
-		self.statusCode = response.status
-		self.statusMessage = response.statusText
-		// backwards compatible version of for (<item> of <iterable>):
-		// for (var <item>,_i,_it = <iterable>[Symbol.iterator](); <item> = (_i = _it.next()).value,!_i.done;)
-		for (var header, _i, _it = response.headers[Symbol.iterator](); header = (_i = _it.next()).value, !_i.done;) {
-			self.headers[header[0].toLowerCase()] = header[1]
-			self.rawHeaders.push(header[0], header[1])
-		}
- 
-		// TODO: this doesn't respect backpressure. Once WritableStream is available, this can be fixed
-		var reader = response.body.getReader()
-		function read () {
-			reader.read().then(function (result) {
-				if (self._destroyed)
-					return
-				if (result.done) {
-					self.push(null)
-					return
-				}
-				self.push(new Buffer(result.value))
-				read()
-			})
-		}
-		read()
- 
-	} else {
-		self._xhr = xhr
-		self._pos = 0
- 
-		self.statusCode = xhr.status
-		self.statusMessage = xhr.statusText
-		var headers = xhr.getAllResponseHeaders().split(/\r?\n/)
-		foreach(headers, function (header) {
-			var matches = header.match(/^([^:]+):\s*(.*)/)
-			if (matches) {
-				var key = matches[1].toLowerCase()
-				if (self.headers[key] !== undefined)
-					self.headers[key] += ', ' + matches[2]
-				else
-					self.headers[key] = matches[2]
-				self.rawHeaders.push(matches[1], matches[2])
-			}
-		})
- 
-		self._charset = 'x-user-defined'
-		if (!capability.overrideMimeType) {
-			var mimeType = self.rawHeaders['mime-type']
-			if (mimeType) {
-				var charsetMatch = mimeType.match(/;\s*charset=([^;])(;|$)/)
-				if (charsetMatch) {
-					self._charset = charsetMatch[1].toLowerCase()
-				}
-			}
-			if (!self._charset)
-				self._charset = 'utf-8' // best guess
-		}
-	}
-}
- 
-inherits(IncomingMessage, stream.Readable)
- 
-IncomingMessage.prototype._read = function () {}
- 
-IncomingMessage.prototype._onXHRProgress = function () {
-	var self = this
- 
-	var xhr = self._xhr
- 
-	var response = null
-	switch (self._mode) {
-		case 'text:vbarray': // For IE9
-			if (xhr.readyState !== rStates.DONE)
-				break
-			try {
-				// This fails in IE8
-				response = new global.VBArray(xhr.responseBody).toArray()
-			} catch (e) {}
-			if (response !== null) {
-				self.push(new Buffer(response))
-				break
-			}
-			// Falls through in IE8	
-		case 'text':
-			try { // This will fail when readyState = 3 in IE9. Switch mode and wait for readyState = 4
-				response = xhr.responseText
-			} catch (e) {
-				self._mode = 'text:vbarray'
-				break
-			}
-			if (response.length > self._pos) {
-				var newData = response.substr(self._pos)
-				if (self._charset === 'x-user-defined') {
-					var buffer = new Buffer(newData.length)
-					for (var i = 0; i < newData.length; i++)
-						buffer[i] = newData.charCodeAt(i) & 0xff
- 
-					self.push(buffer)
-				} else {
-					self.push(newData, self._charset)
-				}
-				self._pos = response.length
-			}
-			break
-		case 'arraybuffer':
-			if (xhr.readyState !== rStates.DONE)
-				break
-			response = xhr.response
-			self.push(new Buffer(new Uint8Array(response)))
-			break
-		case 'moz-chunked-arraybuffer': // take whole
-			response = xhr.response
-			if (xhr.readyState !== rStates.LOADING || !response)
-				break
-			self.push(new Buffer(new Uint8Array(response)))
-			break
-		case 'ms-stream':
-			response = xhr.response
-			if (xhr.readyState !== rStates.LOADING)
-				break
-			var reader = new global.MSStreamReader()
-			reader.onprogress = function () {
-				if (reader.result.byteLength > self._pos) {
-					self.push(new Buffer(new Uint8Array(reader.result.slice(self._pos))))
-					self._pos = reader.result.byteLength
-				}
-			}
-			reader.onload = function () {
-				self.push(null)
-			}
-			// reader.onerror = ??? // TODO: this
-			reader.readAsArrayBuffer(response)
-			break
-	}
- 
-	// The ms-stream case handles end separately in reader.onload()
-	if (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {
-		self.push(null)
-	}
-}
- 
-}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer)
-},{"./capability":62,"_process":42,"buffer":33,"foreach":66,"inherits":38,"stream":60}],65:[function(require,module,exports){
-module.exports = {
-  "100": "Continue",
-  "101": "Switching Protocols",
-  "102": "Processing",
-  "200": "OK",
-  "201": "Created",
-  "202": "Accepted",
-  "203": "Non-Authoritative Information",
-  "204": "No Content",
-  "205": "Reset Content",
-  "206": "Partial Content",
-  "207": "Multi-Status",
-  "300": "Multiple Choices",
-  "301": "Moved Permanently",
-  "302": "Moved Temporarily",
-  "303": "See Other",
-  "304": "Not Modified",
-  "305": "Use Proxy",
-  "307": "Temporary Redirect",
-  "308": "Permanent Redirect",
-  "400": "Bad Request",
-  "401": "Unauthorized",
-  "402": "Payment Required",
-  "403": "Forbidden",
-  "404": "Not Found",
-  "405": "Method Not Allowed",
-  "406": "Not Acceptable",
-  "407": "Proxy Authentication Required",
-  "408": "Request Time-out",
-  "409": "Conflict",
-  "410": "Gone",
-  "411": "Length Required",
-  "412": "Precondition Failed",
-  "413": "Request Entity Too Large",
-  "414": "Request-URI Too Large",
-  "415": "Unsupported Media Type",
-  "416": "Requested Range Not Satisfiable",
-  "417": "Expectation Failed",
-  "418": "I'm a teapot",
-  "422": "Unprocessable Entity",
-  "423": "Locked",
-  "424": "Failed Dependency",
-  "425": "Unordered Collection",
-  "426": "Upgrade Required",
-  "428": "Precondition Required",
-  "429": "Too Many Requests",
-  "431": "Request Header Fields Too Large",
-  "500": "Internal Server Error",
-  "501": "Not Implemented",
-  "502": "Bad Gateway",
-  "503": "Service Unavailable",
-  "504": "Gateway Time-out",
-  "505": "HTTP Version Not Supported",
-  "506": "Variant Also Negotiates",
-  "507": "Insufficient Storage",
-  "509": "Bandwidth Limit Exceeded",
-  "510": "Not Extended",
-  "511": "Network Authentication Required"
-}
- 
-},{}],66:[function(require,module,exports){
- 
-var hasOwn = Object.prototype.hasOwnProperty;
-var toString = Object.prototype.toString;
- 
-module.exports = function forEach (obj, fn, ctx) {
-    if (toString.call(fn) !== '[object Function]') {
-        throw new TypeError('iterator must be a function');
-    }
-    var l = obj.length;
-    if (l === +l) {
-        for (var i = 0; i < l; i++) {
-            fn.call(ctx, obj[i], i, obj);
-        }
-    } else {
-        for (var k in obj) {
-            if (hasOwn.call(obj, k)) {
-                fn.call(ctx, obj[k], k, obj);
-            }
-        }
-    }
-};
- 
- 
-},{}],67:[function(require,module,exports){
- 
-var indexOf = [].indexOf;
- 
-module.exports = function(arr, obj){
-  if (indexOf) return arr.indexOf(obj);
-  for (var i = 0; i < arr.length; ++i) {
-    if (arr[i] === obj) return i;
-  }
-  return -1;
-};
-},{}],68:[function(require,module,exports){
-'use strict';
- 
-// modified from https://github.com/es-shims/es5-shim
-var has = Object.prototype.hasOwnProperty;
-var toStr = Object.prototype.toString;
-var slice = Array.prototype.slice;
-var isArgs = require('./isArguments');
-var hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString');
-var hasProtoEnumBug = function () {}.propertyIsEnumerable('prototype');
-var dontEnums = [
-	'toString',
-	'toLocaleString',
-	'valueOf',
-	'hasOwnProperty',
-	'isPrototypeOf',
-	'propertyIsEnumerable',
-	'constructor'
-];
-var equalsConstructorPrototype = function (o) {
-	var ctor = o.constructor;
-	return ctor && ctor.prototype === o;
-};
-var blacklistedKeys = {
-	$console: true,
-	$frame: true,
-	$frameElement: true,
-	$frames: true,
-	$parent: true,
-	$self: true,
-	$webkitIndexedDB: true,
-	$webkitStorageInfo: true,
-	$window: true
-};
-var hasAutomationEqualityBug = (function () {
-	/* global window */
-	if (typeof window === 'undefined') { return false; }
-	for (var k in window) {
-		try {
-			if (!blacklistedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {
-				try {
-					equalsConstructorPrototype(window[k]);
-				} catch (e) {
-					return true;
-				}
-			}
-		} catch (e) {
-			return true;
-		}
-	}
-	return false;
-}());
-var equalsConstructorPrototypeIfNotBuggy = function (o) {
-	/* global window */
-	if (typeof window === 'undefined' || !hasAutomationEqualityBug) {
-		return equalsConstructorPrototype(o);
-	}
-	try {
-		return equalsConstructorPrototype(o);
-	} catch (e) {
-		return false;
-	}
-};
- 
-var keysShim = function keys(object) {
-	var isObject = object !== null && typeof object === 'object';
-	var isFunction = toStr.call(object) === '[object Function]';
-	var isArguments = isArgs(object);
-	var isString = isObject && toStr.call(object) === '[object String]';
-	var theKeys = [];
- 
-	if (!isObject && !isFunction && !isArguments) {
-		throw new TypeError('Object.keys called on a non-object');
-	}
- 
-	var skipProto = hasProtoEnumBug && isFunction;
-	if (isString && object.length > 0 && !has.call(object, 0)) {
-		for (var i = 0; i < object.length; ++i) {
-			theKeys.push(String(i));
-		}
-	}
- 
-	if (isArguments && object.length > 0) {
-		for (var j = 0; j < object.length; ++j) {
-			theKeys.push(String(j));
-		}
-	} else {
-		for (var name in object) {
-			if (!(skipProto && name === 'prototype') && has.call(object, name)) {
-				theKeys.push(String(name));
-			}
-		}
-	}
- 
-	if (hasDontEnumBug) {
-		var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);
- 
-		for (var k = 0; k < dontEnums.length; ++k) {
-			if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {
-				theKeys.push(dontEnums[k]);
-			}
-		}
-	}
-	return theKeys;
-};
- 
-keysShim.shim = function shimObjectKeys() {
-	if (Object.keys) {
-		var keysWorksWithArguments = (function () {
-			// Safari 5.0 bug
-			return (Object.keys(arguments) || '').length === 2;
-		}(1, 2));
-		if (!keysWorksWithArguments) {
-			var originalKeys = Object.keys;
-			Object.keys = function keys(object) {
-				if (isArgs(object)) {
-					return originalKeys(slice.call(object));
-				} else {
-					return originalKeys(object);
-				}
-			};
-		}
-	} else {
-		Object.keys = keysShim;
-	}
-	return Object.keys || keysShim;
-};
- 
-module.exports = keysShim;
- 
-},{"./isArguments":69}],69:[function(require,module,exports){
-'use strict';
- 
-var toStr = Object.prototype.toString;
- 
-module.exports = function isArguments(value) {
-	var str = toStr.call(value);
-	var isArgs = str === '[object Arguments]';
-	if (!isArgs) {
-		isArgs = str !== '[object Array]' &&
-			value !== null &&
-			typeof value === 'object' &&
-			typeof value.length === 'number' &&
-			value.length >= 0 &&
-			toStr.call(value.callee) === '[object Function]';
-	}
-	return isArgs;
-};
- 
-},{}],70:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
- 
-var Buffer = require('buffer').Buffer;
- 
-var isBufferEncoding = Buffer.isEncoding
-  || function(encoding) {
-       switch (encoding && encoding.toLowerCase()) {
-         case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;
-         default: return false;
-       }
-     }
- 
- 
-function assertEncoding(encoding) {
-  if (encoding && !isBufferEncoding(encoding)) {
-    throw new Error('Unknown encoding: ' + encoding);
-  }
-}
- 
-// StringDecoder provides an interface for efficiently splitting a series of
-// buffers into a series of JS strings without breaking apart multi-byte
-// characters. CESU-8 is handled as part of the UTF-8 encoding.
-//
-// @TODO Handling all encodings inside a single object makes it very difficult
-// to reason about this code, so it should be split up in the future.
-// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
-// points as used by CESU-8.
-var StringDecoder = exports.StringDecoder = function(encoding) {
-  this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
-  assertEncoding(encoding);
-  switch (this.encoding) {
-    case 'utf8':
-      // CESU-8 represents each of Surrogate Pair by 3-bytes
-      this.surrogateSize = 3;
-      break;
-    case 'ucs2':
-    case 'utf16le':
-      // UTF-16 represents each of Surrogate Pair by 2-bytes
-      this.surrogateSize = 2;
-      this.detectIncompleteChar = utf16DetectIncompleteChar;
-      break;
-    case 'base64':
-      // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
-      this.surrogateSize = 3;
-      this.detectIncompleteChar = base64DetectIncompleteChar;
-      break;
-    default:
-      this.write = passThroughWrite;
-      return;
-  }
- 
-  // Enough space to store all bytes of a single character. UTF-8 needs 4
-  // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
-  this.charBuffer = new Buffer(6);
-  // Number of bytes received for the current incomplete multi-byte character.
-  this.charReceived = 0;
-  // Number of bytes expected for the current incomplete multi-byte character.
-  this.charLength = 0;
-};
- 
- 
-// write decodes the given buffer and returns it as JS string that is
-// guaranteed to not contain any partial multi-byte characters. Any partial
-// character found at the end of the buffer is buffered up, and will be
-// returned when calling write again with the remaining bytes.
-//
-// Note: Converting a Buffer containing an orphan surrogate to a String
-// currently works, but converting a String to a Buffer (via `new Buffer`, or
-// Buffer#write) will replace incomplete surrogates with the unicode
-// replacement character. See https://codereview.chromium.org/121173009/ .
-StringDecoder.prototype.write = function(buffer) {
-  var charStr = '';
-  // if our last write ended with an incomplete multibyte character
-  while (this.charLength) {
-    // determine how many remaining bytes this buffer has to offer for this char
-    var available = (buffer.length >= this.charLength - this.charReceived) ?
-        this.charLength - this.charReceived :
-        buffer.length;
- 
-    // add the new bytes to the char buffer
-    buffer.copy(this.charBuffer, this.charReceived, 0, available);
-    this.charReceived += available;
- 
-    if (this.charReceived < this.charLength) {
-      // still not enough chars in this buffer? wait for more ...
-      return '';
-    }
- 
-    // remove bytes belonging to the current character from the buffer
-    buffer = buffer.slice(available, buffer.length);
- 
-    // get the character that was split
-    charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
- 
-    // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
-    var charCode = charStr.charCodeAt(charStr.length - 1);
-    if (charCode >= 0xD800 && charCode <= 0xDBFF) {
-      this.charLength += this.surrogateSize;
-      charStr = '';
-      continue;
-    }
-    this.charReceived = this.charLength = 0;
- 
-    // if there are no more bytes in this buffer, just emit our char
-    if (buffer.length === 0) {
-      return charStr;
-    }
-    break;
-  }
- 
-  // determine and set charLength / charReceived
-  this.detectIncompleteChar(buffer);
- 
-  var end = buffer.length;
-  if (this.charLength) {
-    // buffer the incomplete character bytes we got
-    buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
-    end -= this.charReceived;
-  }
- 
-  charStr += buffer.toString(this.encoding, 0, end);
- 
-  var end = charStr.length - 1;
-  var charCode = charStr.charCodeAt(end);
-  // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
-  if (charCode >= 0xD800 && charCode <= 0xDBFF) {
-    var size = this.surrogateSize;
-    this.charLength += size;
-    this.charReceived += size;
-    this.charBuffer.copy(this.charBuffer, size, 0, size);
-    buffer.copy(this.charBuffer, 0, 0, size);
-    return charStr.substring(0, end);
-  }
- 
-  // or just emit the charStr
-  return charStr;
-};
- 
-// detectIncompleteChar determines if there is an incomplete UTF-8 character at
-// the end of the given buffer. If so, it sets this.charLength to the byte
-// length that character, and sets this.charReceived to the number of bytes
-// that are available for this character.
-StringDecoder.prototype.detectIncompleteChar = function(buffer) {
-  // determine how many bytes we have to check at the end of this buffer
-  var i = (buffer.length >= 3) ? 3 : buffer.length;
- 
-  // Figure out if one of the last i bytes of our buffer announces an
-  // incomplete char.
-  for (; i > 0; i--) {
-    var c = buffer[buffer.length - i];
- 
-    // See http://en.wikipedia.org/wiki/UTF-8#Description
- 
-    // 110XXXXX
-    if (i == 1 && c >> 5 == 0x06) {
-      this.charLength = 2;
-      break;
-    }
- 
-    // 1110XXXX
-    if (i <= 2 && c >> 4 == 0x0E) {
-      this.charLength = 3;
-      break;
-    }
- 
-    // 11110XXX
-    if (i <= 3 && c >> 3 == 0x1E) {
-      this.charLength = 4;
-      break;
-    }
-  }
-  this.charReceived = i;
-};
- 
-StringDecoder.prototype.end = function(buffer) {
-  var res = '';
-  if (buffer && buffer.length)
-    res = this.write(buffer);
- 
-  if (this.charReceived) {
-    var cr = this.charReceived;
-    var buf = this.charBuffer;
-    var enc = this.encoding;
-    res += buf.slice(0, cr).toString(enc);
-  }
- 
-  return res;
-};
- 
-function passThroughWrite(buffer) {
-  return buffer.toString(this.encoding);
-}
- 
-function utf16DetectIncompleteChar(buffer) {
-  this.charReceived = buffer.length % 2;
-  this.charLength = this.charReceived ? 2 : 0;
-}
- 
-function base64DetectIncompleteChar(buffer) {
-  this.charReceived = buffer.length % 3;
-  this.charLength = this.charReceived ? 3 : 0;
-}
- 
-},{"buffer":33}],71:[function(require,module,exports){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
- 
-var punycode = require('punycode');
- 
-exports.parse = urlParse;
-exports.resolve = urlResolve;
-exports.resolveObject = urlResolveObject;
-exports.format = urlFormat;
- 
-exports.Url = Url;
- 
-function Url() {
-  this.protocol = null;
-  this.slashes = null;
-  this.auth = null;
-  this.host = null;
-  this.port = null;
-  this.hostname = null;
-  this.hash = null;
-  this.search = null;
-  this.query = null;
-  this.pathname = null;
-  this.path = null;
-  this.href = null;
-}
- 
-// Reference: RFC 3986, RFC 1808, RFC 2396
- 
-// define these here so at least they only have to be
-// compiled once on the first module load.
-var protocolPattern = /^([a-z0-9.+-]+:)/i,
-    portPattern = /:[0-9]*$/,
- 
-    // RFC 2396: characters reserved for delimiting URLs.
-    // We actually just auto-escape these.
-    delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'],
- 
-    // RFC 2396: characters not allowed for various reasons.
-    unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims),
- 
-    // Allowed by RFCs, but cause of XSS attacks.  Always escape these.
-    autoEscape = ['\''].concat(unwise),
-    // Characters that are never ever allowed in a hostname.
-    // Note that any invalid chars are also handled, but these
-    // are the ones that are *expected* to be seen, so we fast-path
-    // them.
-    nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),
-    hostEndingChars = ['/', '?', '#'],
-    hostnameMaxLen = 255,
-    hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,
-    hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,
-    // protocols that can allow "unsafe" and "unwise" chars.
-    unsafeProtocol = {
-      'javascript': true,
-      'javascript:': true
-    },
-    // protocols that never have a hostname.
-    hostlessProtocol = {
-      'javascript': true,
-      'javascript:': true
-    },
-    // protocols that always contain a // bit.
-    slashedProtocol = {
-      'http': true,
-      'https': true,
-      'ftp': true,
-      'gopher': true,
-      'file': true,
-      'http:': true,
-      'https:': true,
-      'ftp:': true,
-      'gopher:': true,
-      'file:': true
-    },
-    querystring = require('querystring');
- 
-function urlParse(url, parseQueryString, slashesDenoteHost) {
-  if (url && isObject(url) && url instanceof Url) return url;
- 
-  var u = new Url;
-  u.parse(url, parseQueryString, slashesDenoteHost);
-  return u;
-}
- 
-Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {
-  if (!isString(url)) {
-    throw new TypeError("Parameter 'url' must be a string, not " + typeof url);
-  }
- 
-  var rest = url;
- 
-  // trim before proceeding.
-  // This is to support parse stuff like "  http://foo.com  \n"
-  rest = rest.trim();
- 
-  var proto = protocolPattern.exec(rest);
-  if (proto) {
-    proto = proto[0];
-    var lowerProto = proto.toLowerCase();
-    this.protocol = lowerProto;
-    rest = rest.substr(proto.length);
-  }
- 
-  // figure out if it's got a host
-  // user@server is *always* interpreted as a hostname, and url
-  // resolution will treat //foo/bar as host=foo,path=bar because that's
-  // how the browser resolves relative URLs.
-  if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) {
-    var slashes = rest.substr(0, 2) === '//';
-    if (slashes && !(proto && hostlessProtocol[proto])) {
-      rest = rest.substr(2);
-      this.slashes = true;
-    }
-  }
- 
-  if (!hostlessProtocol[proto] &&
-      (slashes || (proto && !slashedProtocol[proto]))) {
- 
-    // there's a hostname.
-    // the first instance of /, ?, ;, or # ends the host.
-    //
-    // If there is an @ in the hostname, then non-host chars *are* allowed
-    // to the left of the last @ sign, unless some host-ending character
-    // comes *before* the @-sign.
-    // URLs are obnoxious.
-    //
-    // ex:
-    // http://a@b@c/ => user:a@b host:c
-    // http://a@b?@c => user:a host:c path:/?@c
- 
-    // v0.12 TODO(isaacs): This is not quite how Chrome does things.
-    // Review our test case against browsers more comprehensively.
- 
-    // find the first instance of any hostEndingChars
-    var hostEnd = -1;
-    for (var i = 0; i < hostEndingChars.length; i++) {
-      var hec = rest.indexOf(hostEndingChars[i]);
-      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))
-        hostEnd = hec;
-    }
- 
-    // at this point, either we have an explicit point where the
-    // auth portion cannot go past, or the last @ char is the decider.
-    var auth, atSign;
-    if (hostEnd === -1) {
-      // atSign can be anywhere.
-      atSign = rest.lastIndexOf('@');
-    } else {
-      // atSign must be in auth portion.
-      // http://a@b/c@d => host:b auth:a path:/c@d
-      atSign = rest.lastIndexOf('@', hostEnd);
-    }
- 
-    // Now we have a portion which is definitely the auth.
-    // Pull that off.
-    if (atSign !== -1) {
-      auth = rest.slice(0, atSign);
-      rest = rest.slice(atSign + 1);
-      this.auth = decodeURIComponent(auth);
-    }
- 
-    // the host is the remaining to the left of the first non-host char
-    hostEnd = -1;
-    for (var i = 0; i < nonHostChars.length; i++) {
-      var hec = rest.indexOf(nonHostChars[i]);
-      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))
-        hostEnd = hec;
-    }
-    // if we still have not hit it, then the entire thing is a host.
-    if (hostEnd === -1)
-      hostEnd = rest.length;
- 
-    this.host = rest.slice(0, hostEnd);
-    rest = rest.slice(hostEnd);
- 
-    // pull out port.
-    this.parseHost();
- 
-    // we've indicated that there is a hostname,
-    // so even if it's empty, it has to be present.
-    this.hostname = this.hostname || '';
- 
-    // if hostname begins with [ and ends with ]
-    // assume that it's an IPv6 address.
-    var ipv6Hostname = this.hostname[0] === '[' &&
-        this.hostname[this.hostname.length - 1] === ']';
- 
-    // validate a little.
-    if (!ipv6Hostname) {
-      var hostparts = this.hostname.split(/\./);
-      for (var i = 0, l = hostparts.length; i < l; i++) {
-        var part = hostparts[i];
-        if (!part) continue;
-        if (!part.match(hostnamePartPattern)) {
-          var newpart = '';
-          for (var j = 0, k = part.length; j < k; j++) {
-            if (part.charCodeAt(j) > 127) {
-              // we replace non-ASCII char with a temporary placeholder
-              // we need this to make sure size of hostname is not
-              // broken by replacing non-ASCII by nothing
-              newpart += 'x';
-            } else {
-              newpart += part[j];
-            }
-          }
-          // we test again with ASCII char only
-          if (!newpart.match(hostnamePartPattern)) {
-            var validParts = hostparts.slice(0, i);
-            var notHost = hostparts.slice(i + 1);
-            var bit = part.match(hostnamePartStart);
-            if (bit) {
-              validParts.push(bit[1]);
-              notHost.unshift(bit[2]);
-            }
-            if (notHost.length) {
-              rest = '/' + notHost.join('.') + rest;
-            }
-            this.hostname = validParts.join('.');
-            break;
-          }
-        }
-      }
-    }
- 
-    if (this.hostname.length > hostnameMaxLen) {
-      this.hostname = '';
-    } else {
-      // hostnames are always lower case.
-      this.hostname = this.hostname.toLowerCase();
-    }
- 
-    if (!ipv6Hostname) {
-      // IDNA Support: Returns a puny coded representation of "domain".
-      // It only converts the part of the domain name that
-      // has non ASCII characters. I.e. it dosent matter if
-      // you call it with a domain that already is in ASCII.
-      var domainArray = this.hostname.split('.');
-      var newOut = [];
-      for (var i = 0; i < domainArray.length; ++i) {
-        var s = domainArray[i];
-        newOut.push(s.match(/[^A-Za-z0-9_-]/) ?
-            'xn--' + punycode.encode(s) : s);
-      }
-      this.hostname = newOut.join('.');
-    }
- 
-    var p = this.port ? ':' + this.port : '';
-    var h = this.hostname || '';
-    this.host = h + p;
-    this.href += this.host;
- 
-    // strip [ and ] from the hostname
-    // the host field still retains them, though
-    if (ipv6Hostname) {
-      this.hostname = this.hostname.substr(1, this.hostname.length - 2);
-      if (rest[0] !== '/') {
-        rest = '/' + rest;
-      }
-    }
-  }
- 
-  // now rest is set to the post-host stuff.
-  // chop off any delim chars.
-  if (!unsafeProtocol[lowerProto]) {
- 
-    // First, make 100% sure that any "autoEscape" chars get
-    // escaped, even if encodeURIComponent doesn't think they
-    // need to be.
-    for (var i = 0, l = autoEscape.length; i < l; i++) {
-      var ae = autoEscape[i];
-      var esc = encodeURIComponent(ae);
-      if (esc === ae) {
-        esc = escape(ae);
-      }
-      rest = rest.split(ae).join(esc);
-    }
-  }
- 
- 
-  // chop off from the tail first.
-  var hash = rest.indexOf('#');
-  if (hash !== -1) {
-    // got a fragment string.
-    this.hash = rest.substr(hash);
-    rest = rest.slice(0, hash);
-  }
-  var qm = rest.indexOf('?');
-  if (qm !== -1) {
-    this.search = rest.substr(qm);
-    this.query = rest.substr(qm + 1);
-    if (parseQueryString) {
-      this.query = querystring.parse(this.query);
-    }
-    rest = rest.slice(0, qm);
-  } else if (parseQueryString) {
-    // no query string, but parseQueryString still requested
-    this.search = '';
-    this.query = {};
-  }
-  if (rest) this.pathname = rest;
-  if (slashedProtocol[lowerProto] &&
-      this.hostname && !this.pathname) {
-    this.pathname = '/';
-  }
- 
-  //to support http.request
-  if (this.pathname || this.search) {
-    var p = this.pathname || '';
-    var s = this.search || '';
-    this.path = p + s;
-  }
- 
-  // finally, reconstruct the href based on what has been validated.
-  this.href = this.format();
-  return this;
-};
- 
-// format a parsed object into a url string
-function urlFormat(obj) {
-  // ensure it's an object, and not a string url.
-  // If it's an obj, this is a no-op.
-  // this way, you can call url_format() on strings
-  // to clean up potentially wonky urls.
-  if (isString(obj)) obj = urlParse(obj);
-  if (!(obj instanceof Url)) return Url.prototype.format.call(obj);
-  return obj.format();
-}
- 
-Url.prototype.format = function() {
-  var auth = this.auth || '';
-  if (auth) {
-    auth = encodeURIComponent(auth);
-    auth = auth.replace(/%3A/i, ':');
-    auth += '@';
-  }
- 
-  var protocol = this.protocol || '',
-      pathname = this.pathname || '',
-      hash = this.hash || '',
-      host = false,
-      query = '';
- 
-  if (this.host) {
-    host = auth + this.host;
-  } else if (this.hostname) {
-    host = auth + (this.hostname.indexOf(':') === -1 ?
-        this.hostname :
-        '[' + this.hostname + ']');
-    if (this.port) {
-      host += ':' + this.port;
-    }
-  }
- 
-  if (this.query &&
-      isObject(this.query) &&
-      Object.keys(this.query).length) {
-    query = querystring.stringify(this.query);
-  }
- 
-  var search = this.search || (query && ('?' + query)) || '';
- 
-  if (protocol && protocol.substr(-1) !== ':') protocol += ':';
- 
-  // only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.
-  // unless they had them to begin with.
-  if (this.slashes ||
-      (!protocol || slashedProtocol[protocol]) && host !== false) {
-    host = '//' + (host || '');
-    if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;
-  } else if (!host) {
-    host = '';
-  }
- 
-  if (hash && hash.charAt(0) !== '#') hash = '#' + hash;
-  if (search && search.charAt(0) !== '?') search = '?' + search;
- 
-  pathname = pathname.replace(/[?#]/g, function(match) {
-    return encodeURIComponent(match);
-  });
-  search = search.replace('#', '%23');
- 
-  return protocol + host + pathname + search + hash;
-};
- 
-function urlResolve(source, relative) {
-  return urlParse(source, false, true).resolve(relative);
-}
- 
-Url.prototype.resolve = function(relative) {
-  return this.resolveObject(urlParse(relative, false, true)).format();
-};
- 
-function urlResolveObject(source, relative) {
-  if (!source) return relative;
-  return urlParse(source, false, true).resolveObject(relative);
-}
- 
-Url.prototype.resolveObject = function(relative) {
-  if (isString(relative)) {
-    var rel = new Url();
-    rel.parse(relative, false, true);
-    relative = rel;
-  }
- 
-  var result = new Url();
-  Object.keys(this).forEach(function(k) {
-    result[k] = this[k];
-  }, this);
- 
-  // hash is always overridden, no matter what.
-  // even href="" will remove it.
-  result.hash = relative.hash;
- 
-  // if the relative url is empty, then there's nothing left to do here.
-  if (relative.href === '') {
-    result.href = result.format();
-    return result;
-  }
- 
-  // hrefs like //foo/bar always cut to the protocol.
-  if (relative.slashes && !relative.protocol) {
-    // take everything except the protocol from relative
-    Object.keys(relative).forEach(function(k) {
-      if (k !== 'protocol')
-        result[k] = relative[k];
-    });
- 
-    //urlParse appends trailing / to urls like http://www.example.com
-    if (slashedProtocol[result.protocol] &&
-        result.hostname && !result.pathname) {
-      result.path = result.pathname = '/';
-    }
- 
-    result.href = result.format();
-    return result;
-  }
- 
-  if (relative.protocol && relative.protocol !== result.protocol) {
-    // if it's a known url protocol, then changing
-    // the protocol does weird things
-    // first, if it's not file:, then we MUST have a host,
-    // and if there was a path
-    // to begin with, then we MUST have a path.
-    // if it is file:, then the host is dropped,
-    // because that's known to be hostless.
-    // anything else is assumed to be absolute.
-    if (!slashedProtocol[relative.protocol]) {
-      Object.keys(relative).forEach(function(k) {
-        result[k] = relative[k];
-      });
-      result.href = result.format();
-      return result;
-    }
- 
-    result.protocol = relative.protocol;
-    if (!relative.host && !hostlessProtocol[relative.protocol]) {
-      var relPath = (relative.pathname || '').split('/');
-      while (relPath.length && !(relative.host = relPath.shift()));
-      if (!relative.host) relative.host = '';
-      if (!relative.hostname) relative.hostname = '';
-      if (relPath[0] !== '') relPath.unshift('');
-      if (relPath.length < 2) relPath.unshift('');
-      result.pathname = relPath.join('/');
-    } else {
-      result.pathname = relative.pathname;
-    }
-    result.search = relative.search;
-    result.query = relative.query;
-    result.host = relative.host || '';
-    result.auth = relative.auth;
-    result.hostname = relative.hostname || relative.host;
-    result.port = relative.port;
-    // to support http.request
-    if (result.pathname || result.search) {
-      var p = result.pathname || '';
-      var s = result.search || '';
-      result.path = p + s;
-    }
-    result.slashes = result.slashes || relative.slashes;
-    result.href = result.format();
-    return result;
-  }
- 
-  var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),
-      isRelAbs = (
-          relative.host ||
-          relative.pathname && relative.pathname.charAt(0) === '/'
-      ),
-      mustEndAbs = (isRelAbs || isSourceAbs ||
-                    (result.host && relative.pathname)),
-      removeAllDots = mustEndAbs,
-      srcPath = result.pathname && result.pathname.split('/') || [],
-      relPath = relative.pathname && relative.pathname.split('/') || [],
-      psychotic = result.protocol && !slashedProtocol[result.protocol];
- 
-  // if the url is a non-slashed url, then relative
-  // links like ../.. should be able
-  // to crawl up to the hostname, as well.  This is strange.
-  // result.protocol has already been set by now.
-  // Later on, put the first path part into the host field.
-  if (psychotic) {
-    result.hostname = '';
-    result.port = null;
-    if (result.host) {
-      if (srcPath[0] === '') srcPath[0] = result.host;
-      else srcPath.unshift(result.host);
-    }
-    result.host = '';
-    if (relative.protocol) {
-      relative.hostname = null;
-      relative.port = null;
-      if (relative.host) {
-        if (relPath[0] === '') relPath[0] = relative.host;
-        else relPath.unshift(relative.host);
-      }
-      relative.host = null;
-    }
-    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');
-  }
- 
-  if (isRelAbs) {
-    // it's absolute.
-    result.host = (relative.host || relative.host === '') ?
-                  relative.host : result.host;
-    result.hostname = (relative.hostname || relative.hostname === '') ?
-                      relative.hostname : result.hostname;
-    result.search = relative.search;
-    result.query = relative.query;
-    srcPath = relPath;
-    // fall through to the dot-handling below.
-  } else if (relPath.length) {
-    // it's relative
-    // throw away the existing file, and take the new path instead.
-    if (!srcPath) srcPath = [];
-    srcPath.pop();
-    srcPath = srcPath.concat(relPath);
-    result.search = relative.search;
-    result.query = relative.query;
-  } else if (!isNullOrUndefined(relative.search)) {
-    // just pull out the search.
-    // like href='?foo'.
-    // Put this after the other two cases because it simplifies the booleans
-    if (psychotic) {
-      result.hostname = result.host = srcPath.shift();
-      //occationaly the auth can get stuck only in host
-      //this especialy happens in cases like
-      //url.resolveObject('mailto:local1@domain1', 'local2@domain2')
-      var authInHost = result.host && result.host.indexOf('@') > 0 ?
-                       result.host.split('@') : false;
-      if (authInHost) {
-        result.auth = authInHost.shift();
-        result.host = result.hostname = authInHost.shift();
-      }
-    }
-    result.search = relative.search;
-    result.query = relative.query;
-    //to support http.request
-    if (!isNull(result.pathname) || !isNull(result.search)) {
-      result.path = (result.pathname ? result.pathname : '') +
-                    (result.search ? result.search : '');
-    }
-    result.href = result.format();
-    return result;
-  }
- 
-  if (!srcPath.length) {
-    // no path at all.  easy.
-    // we've already handled the other stuff above.
-    result.pathname = null;
-    //to support http.request
-    if (result.search) {
-      result.path = '/' + result.search;
-    } else {
-      result.path = null;
-    }
-    result.href = result.format();
-    return result;
-  }
- 
-  // if a url ENDs in . or .., then it must get a trailing slash.
-  // however, if it ends in anything else non-slashy,
-  // then it must NOT get a trailing slash.
-  var last = srcPath.slice(-1)[0];
-  var hasTrailingSlash = (
-      (result.host || relative.host) && (last === '.' || last === '..') ||
-      last === '');
- 
-  // strip single dots, resolve double dots to parent dir
-  // if the path tries to go above the root, `up` ends up > 0
-  var up = 0;
-  for (var i = srcPath.length; i >= 0; i--) {
-    last = srcPath[i];
-    if (last == '.') {
-      srcPath.splice(i, 1);
-    } else if (last === '..') {
-      srcPath.splice(i, 1);
-      up++;
-    } else if (up) {
-      srcPath.splice(i, 1);
-      up--;
-    }
-  }
- 
-  // if the path is allowed to go above the root, restore leading ..s
-  if (!mustEndAbs && !removeAllDots) {
-    for (; up--; up) {
-      srcPath.unshift('..');
-    }
-  }
- 
-  if (mustEndAbs && srcPath[0] !== '' &&
-      (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {
-    srcPath.unshift('');
-  }
- 
-  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {
-    srcPath.push('');
-  }
- 
-  var isAbsolute = srcPath[0] === '' ||
-      (srcPath[0] && srcPath[0].charAt(0) === '/');
- 
-  // put the host back
-  if (psychotic) {
-    result.hostname = result.host = isAbsolute ? '' :
-                                    srcPath.length ? srcPath.shift() : '';
-    //occationaly the auth can get stuck only in host
-    //this especialy happens in cases like
-    //url.resolveObject('mailto:local1@domain1', 'local2@domain2')
-    var authInHost = result.host && result.host.indexOf('@') > 0 ?
-                     result.host.split('@') : false;
-    if (authInHost) {
-      result.auth = authInHost.shift();
-      result.host = result.hostname = authInHost.shift();
-    }
-  }
- 
-  mustEndAbs = mustEndAbs || (result.host && srcPath.length);
- 
-  if (mustEndAbs && !isAbsolute) {
-    srcPath.unshift('');
-  }
- 
-  if (!srcPath.length) {
-    result.pathname = null;
-    result.path = null;
-  } else {
-    result.pathname = srcPath.join('/');
-  }
- 
-  //to support request.http
-  if (!isNull(result.pathname) || !isNull(result.search)) {
-    result.path = (result.pathname ? result.pathname : '') +
-                  (result.search ? result.search : '');
-  }
-  result.auth = relative.auth || result.auth;
-  result.slashes = result.slashes || relative.slashes;
-  result.href = result.format();
-  return result;
-};
- 
-Url.prototype.parseHost = function() {
-  var host = this.host;
-  var port = portPattern.exec(host);
-  if (port) {
-    port = port[0];
-    if (port !== ':') {
-      this.port = port.substr(1);
-    }
-    host = host.substr(0, host.length - port.length);
-  }
-  if (host) this.hostname = host;
-};
- 
-function isString(arg) {
-  return typeof arg === "string";
-}
- 
-function isObject(arg) {
-  return typeof arg === 'object' && arg !== null;
-}
- 
-function isNull(arg) {
-  return arg === null;
-}
-function isNullOrUndefined(arg) {
-  return  arg == null;
-}
- 
-},{"punycode":43,"querystring":46}],72:[function(require,module,exports){
-module.exports = function isBuffer(arg) {
-  return arg && typeof arg === 'object'
-    && typeof arg.copy === 'function'
-    && typeof arg.fill === 'function'
-    && typeof arg.readUInt8 === 'function';
-}
-},{}],73:[function(require,module,exports){
-(function (process,global){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
- 
-var formatRegExp = /%[sdj%]/g;
-exports.format = function(f) {
-  if (!isString(f)) {
-    var objects = [];
-    for (var i = 0; i < arguments.length; i++) {
-      objects.push(inspect(arguments[i]));
-    }
-    return objects.join(' ');
-  }
- 
-  var i = 1;
-  var args = arguments;
-  var len = args.length;
-  var str = String(f).replace(formatRegExp, function(x) {
-    if (x === '%%') return '%';
-    if (i >= len) return x;
-    switch (x) {
-      case '%s': return String(args[i++]);
-      case '%d': return Number(args[i++]);
-      case '%j':
-        try {
-          return JSON.stringify(args[i++]);
-        } catch (_) {
-          return '[Circular]';
-        }
-      default:
-        return x;
-    }
-  });
-  for (var x = args[i]; i < len; x = args[++i]) {
-    if (isNull(x) || !isObject(x)) {
-      str += ' ' + x;
-    } else {
-      str += ' ' + inspect(x);
-    }
-  }
-  return str;
-};
- 
- 
-// Mark that a method should not be used.
-// Returns a modified function which warns once by default.
-// If --no-deprecation is set, then it is a no-op.
-exports.deprecate = function(fn, msg) {
-  // Allow for deprecating things in the process of starting up.
-  if (isUndefined(global.process)) {
-    return function() {
-      return exports.deprecate(fn, msg).apply(this, arguments);
-    };
-  }
- 
-  if (process.noDeprecation === true) {
-    return fn;
-  }
- 
-  var warned = false;
-  function deprecated() {
-    if (!warned) {
-      if (process.throwDeprecation) {
-        throw new Error(msg);
-      } else if (process.traceDeprecation) {
-        console.trace(msg);
-      } else {
-        console.error(msg);
-      }
-      warned = true;
-    }
-    return fn.apply(this, arguments);
-  }
- 
-  return deprecated;
-};
- 
- 
-var debugs = {};
-var debugEnviron;
-exports.debuglog = function(set) {
-  if (isUndefined(debugEnviron))
-    debugEnviron = process.env.NODE_DEBUG || '';
-  set = set.toUpperCase();
-  if (!debugs[set]) {
-    if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
-      var pid = process.pid;
-      debugs[set] = function() {
-        var msg = exports.format.apply(exports, arguments);
-        console.error('%s %d: %s', set, pid, msg);
-      };
-    } else {
-      debugs[set] = function() {};
-    }
-  }
-  return debugs[set];
-};
- 
- 
-/**
- * Echos the value of a value. Trys to print the value out
- * in the best way possible given the different types.
- *
- * @param {Object} obj The object to print out.
- * @param {Object} opts Optional options object that alters the output.
- */
-/* legacy: obj, showHidden, depth, colors*/
-function inspect(obj, opts) {
-  // default options
-  var ctx = {
-    seen: [],
-    stylize: stylizeNoColor
-  };
-  // legacy...
-  if (arguments.length >= 3) ctx.depth = arguments[2];
-  if (arguments.length >= 4) ctx.colors = arguments[3];
-  if (isBoolean(opts)) {
-    // legacy...
-    ctx.showHidden = opts;
-  } else if (opts) {
-    // got an "options" object
-    exports._extend(ctx, opts);
-  }
-  // set default options
-  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
-  if (isUndefined(ctx.depth)) ctx.depth = 2;
-  if (isUndefined(ctx.colors)) ctx.colors = false;
-  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
-  if (ctx.colors) ctx.stylize = stylizeWithColor;
-  return formatValue(ctx, obj, ctx.depth);
-}
-exports.inspect = inspect;
- 
- 
-// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
-inspect.colors = {
-  'bold' : [1, 22],
-  'italic' : [3, 23],
-  'underline' : [4, 24],
-  'inverse' : [7, 27],
-  'white' : [37, 39],
-  'grey' : [90, 39],
-  'black' : [30, 39],
-  'blue' : [34, 39],
-  'cyan' : [36, 39],
-  'green' : [32, 39],
-  'magenta' : [35, 39],
-  'red' : [31, 39],
-  'yellow' : [33, 39]
-};
- 
-// Don't use 'blue' not visible on cmd.exe
-inspect.styles = {
-  'special': 'cyan',
-  'number': 'yellow',
-  'boolean': 'yellow',
-  'undefined': 'grey',
-  'null': 'bold',
-  'string': 'green',
-  'date': 'magenta',
-  // "name": intentionally not styling
-  'regexp': 'red'
-};
- 
- 
-function stylizeWithColor(str, styleType) {
-  var style = inspect.styles[styleType];
- 
-  if (style) {
-    return '\u001b[' + inspect.colors[style][0] + 'm' + str +
-           '\u001b[' + inspect.colors[style][1] + 'm';
-  } else {
-    return str;
-  }
-}
- 
- 
-function stylizeNoColor(str, styleType) {
-  return str;
-}
- 
- 
-function arrayToHash(array) {
-  var hash = {};
- 
-  array.forEach(function(val, idx) {
-    hash[val] = true;
-  });
- 
-  return hash;
-}
- 
- 
-function formatValue(ctx, value, recurseTimes) {
-  // Provide a hook for user-specified inspect functions.
-  // Check that value is an object with an inspect function on it
-  if (ctx.customInspect &&
-      value &&
-      isFunction(value.inspect) &&
-      // Filter out the util module, it's inspect function is special
-      value.inspect !== exports.inspect &&
-      // Also filter out any prototype objects using the circular check.
-      !(value.constructor && value.constructor.prototype === value)) {
-    var ret = value.inspect(recurseTimes, ctx);
-    if (!isString(ret)) {
-      ret = formatValue(ctx, ret, recurseTimes);
-    }
-    return ret;
-  }
- 
-  // Primitive types cannot have properties
-  var primitive = formatPrimitive(ctx, value);
-  if (primitive) {
-    return primitive;
-  }
- 
-  // Look up the keys of the object.
-  var keys = Object.keys(value);
-  var visibleKeys = arrayToHash(keys);
- 
-  if (ctx.showHidden) {
-    keys = Object.getOwnPropertyNames(value);
-  }
- 
-  // IE doesn't make error fields non-enumerable
-  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
-  if (isError(value)
-      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
-    return formatError(value);
-  }
- 
-  // Some type of object without properties can be shortcutted.
-  if (keys.length === 0) {
-    if (isFunction(value)) {
-      var name = value.name ? ': ' + value.name : '';
-      return ctx.stylize('[Function' + name + ']', 'special');
-    }
-    if (isRegExp(value)) {
-      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
-    }
-    if (isDate(value)) {
-      return ctx.stylize(Date.prototype.toString.call(value), 'date');
-    }
-    if (isError(value)) {
-      return formatError(value);
-    }
-  }
- 
-  var base = '', array = false, braces = ['{', '}'];
- 
-  // Make Array say that they are Array
-  if (isArray(value)) {
-    array = true;
-    braces = ['[', ']'];
-  }
- 
-  // Make functions say that they are functions
-  if (isFunction(value)) {
-    var n = value.name ? ': ' + value.name : '';
-    base = ' [Function' + n + ']';
-  }
- 
-  // Make RegExps say that they are RegExps
-  if (isRegExp(value)) {
-    base = ' ' + RegExp.prototype.toString.call(value);
-  }
- 
-  // Make dates with properties first say the date
-  if (isDate(value)) {
-    base = ' ' + Date.prototype.toUTCString.call(value);
-  }
- 
-  // Make error with message first say the error
-  if (isError(value)) {
-    base = ' ' + formatError(value);
-  }
- 
-  if (keys.length === 0 && (!array || value.length == 0)) {
-    return braces[0] + base + braces[1];
-  }
- 
-  if (recurseTimes < 0) {
-    if (isRegExp(value)) {
-      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
-    } else {
-      return ctx.stylize('[Object]', 'special');
-    }
-  }
- 
-  ctx.seen.push(value);
- 
-  var output;
-  if (array) {
-    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
-  } else {
-    output = keys.map(function(key) {
-      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
-    });
-  }
- 
-  ctx.seen.pop();
- 
-  return reduceToSingleString(output, base, braces);
-}
- 
- 
-function formatPrimitive(ctx, value) {
-  if (isUndefined(value))
-    return ctx.stylize('undefined', 'undefined');
-  if (isString(value)) {
-    var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
-                                             .replace(/'/g, "\\'")
-                                             .replace(/\\"/g, '"') + '\'';
-    return ctx.stylize(simple, 'string');
-  }
-  if (isNumber(value))
-    return ctx.stylize('' + value, 'number');
-  if (isBoolean(value))
-    return ctx.stylize('' + value, 'boolean');
-  // For some reason typeof null is "object", so special case here.
-  if (isNull(value))
-    return ctx.stylize('null', 'null');
-}
- 
- 
-function formatError(value) {
-  return '[' + Error.prototype.toString.call(value) + ']';
-}
- 
- 
-function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
-  var output = [];
-  for (var i = 0, l = value.length; i < l; ++i) {
-    if (hasOwnProperty(value, String(i))) {
-      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
-          String(i), true));
-    } else {
-      output.push('');
-    }
-  }
-  keys.forEach(function(key) {
-    if (!key.match(/^\d+$/)) {
-      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
-          key, true));
-    }
-  });
-  return output;
-}
- 
- 
-function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
-  var name, str, desc;
-  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
-  if (desc.get) {
-    if (desc.set) {
-      str = ctx.stylize('[Getter/Setter]', 'special');
-    } else {
-      str = ctx.stylize('[Getter]', 'special');
-    }
-  } else {
-    if (desc.set) {
-      str = ctx.stylize('[Setter]', 'special');
-    }
-  }
-  if (!hasOwnProperty(visibleKeys, key)) {
-    name = '[' + key + ']';
-  }
-  if (!str) {
-    if (ctx.seen.indexOf(desc.value) < 0) {
-      if (isNull(recurseTimes)) {
-        str = formatValue(ctx, desc.value, null);
-      } else {
-        str = formatValue(ctx, desc.value, recurseTimes - 1);
-      }
-      if (str.indexOf('\n') > -1) {
-        if (array) {
-          str = str.split('\n').map(function(line) {
-            return '  ' + line;
-          }).join('\n').substr(2);
-        } else {
-          str = '\n' + str.split('\n').map(function(line) {
-            return '   ' + line;
-          }).join('\n');
-        }
-      }
-    } else {
-      str = ctx.stylize('[Circular]', 'special');
-    }
-  }
-  if (isUndefined(name)) {
-    if (array && key.match(/^\d+$/)) {
-      return str;
-    }
-    name = JSON.stringify('' + key);
-    if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
-      name = name.substr(1, name.length - 2);
-      name = ctx.stylize(name, 'name');
-    } else {
-      name = name.replace(/'/g, "\\'")
-                 .replace(/\\"/g, '"')
-                 .replace(/(^"|"$)/g, "'");
-      name = ctx.stylize(name, 'string');
-    }
-  }
- 
-  return name + ': ' + str;
-}
- 
- 
-function reduceToSingleString(output, base, braces) {
-  var numLinesEst = 0;
-  var length = output.reduce(function(prev, cur) {
-    numLinesEst++;
-    if (cur.indexOf('\n') >= 0) numLinesEst++;
-    return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
-  }, 0);
- 
-  if (length > 60) {
-    return braces[0] +
-           (base === '' ? '' : base + '\n ') +
-           ' ' +
-           output.join(',\n  ') +
-           ' ' +
-           braces[1];
-  }
- 
-  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
-}
- 
- 
-// NOTE: These type checking functions intentionally don't use `instanceof`
-// because it is fragile and can be easily faked with `Object.create()`.
-function isArray(ar) {
-  return Array.isArray(ar);
-}
-exports.isArray = isArray;
- 
-function isBoolean(arg) {
-  return typeof arg === 'boolean';
-}
-exports.isBoolean = isBoolean;
- 
-function isNull(arg) {
-  return arg === null;
-}
-exports.isNull = isNull;
- 
-function isNullOrUndefined(arg) {
-  return arg == null;
-}
-exports.isNullOrUndefined = isNullOrUndefined;
- 
-function isNumber(arg) {
-  return typeof arg === 'number';
-}
-exports.isNumber = isNumber;
- 
-function isString(arg) {
-  return typeof arg === 'string';
-}
-exports.isString = isString;
- 
-function isSymbol(arg) {
-  return typeof arg === 'symbol';
-}
-exports.isSymbol = isSymbol;
- 
-function isUndefined(arg) {
-  return arg === void 0;
-}
-exports.isUndefined = isUndefined;
- 
-function isRegExp(re) {
-  return isObject(re) && objectToString(re) === '[object RegExp]';
-}
-exports.isRegExp = isRegExp;
- 
-function isObject(arg) {
-  return typeof arg === 'object' && arg !== null;
-}
-exports.isObject = isObject;
- 
-function isDate(d) {
-  return isObject(d) && objectToString(d) === '[object Date]';
-}
-exports.isDate = isDate;
- 
-function isError(e) {
-  return isObject(e) &&
-      (objectToString(e) === '[object Error]' || e instanceof Error);
-}
-exports.isError = isError;
- 
-function isFunction(arg) {
-  return typeof arg === 'function';
-}
-exports.isFunction = isFunction;
- 
-function isPrimitive(arg) {
-  return arg === null ||
-         typeof arg === 'boolean' ||
-         typeof arg === 'number' ||
-         typeof arg === 'string' ||
-         typeof arg === 'symbol' ||  // ES6 symbol
-         typeof arg === 'undefined';
-}
-exports.isPrimitive = isPrimitive;
- 
-exports.isBuffer = require('./support/isBuffer');
- 
-function objectToString(o) {
-  return Object.prototype.toString.call(o);
-}
- 
- 
-function pad(n) {
-  return n < 10 ? '0' + n.toString(10) : n.toString(10);
-}
- 
- 
-var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
-              'Oct', 'Nov', 'Dec'];
- 
-// 26 Feb 16:19:34
-function timestamp() {
-  var d = new Date();
-  var time = [pad(d.getHours()),
-              pad(d.getMinutes()),
-              pad(d.getSeconds())].join(':');
-  return [d.getDate(), months[d.getMonth()], time].join(' ');
-}
- 
- 
-// log is just a thin wrapper to console.log that prepends a timestamp
-exports.log = function() {
-  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
-};
- 
- 
-/**
- * Inherit the prototype methods from one constructor into another.
- *
- * The Function.prototype.inherits from lang.js rewritten as a standalone
- * function (not on Function.prototype). NOTE: If this file is to be loaded
- * during bootstrapping this function needs to be rewritten using some native
- * functions as prototype setup using normal JavaScript does not work as
- * expected during bootstrapping (see mirror.js in r114903).
- *
- * @param {function} ctor Constructor function which needs to inherit the
- *     prototype.
- * @param {function} superCtor Constructor function to inherit prototype from.
- */
-exports.inherits = require('inherits');
- 
-exports._extend = function(origin, add) {
-  // Don't do anything if add isn't an object
-  if (!add || !isObject(add)) return origin;
- 
-  var keys = Object.keys(add);
-  var i = keys.length;
-  while (i--) {
-    origin[keys[i]] = add[keys[i]];
-  }
-  return origin;
-};
- 
-function hasOwnProperty(obj, prop) {
-  return Object.prototype.hasOwnProperty.call(obj, prop);
-}
- 
-}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"./support/isBuffer":72,"_process":42,"inherits":38}],74:[function(require,module,exports){
-module.exports = extend
- 
-var hasOwnProperty = Object.prototype.hasOwnProperty;
- 
-function extend() {
-    var target = {}
- 
-    for (var i = 0; i < arguments.length; i++) {
-        var source = arguments[i]
- 
-        for (var key in source) {
-            if (hasOwnProperty.call(source, key)) {
-                target[key] = source[key]
-            }
-        }
-    }
- 
-    return target
-}
- 
-},{}],75:[function(require,module,exports){
- 
-exports = module.exports = function(bytes)
-{
-    var i = 0;
-    while(i < bytes.length)
-    {
-        if(     (// ASCII
-                    bytes[i] == 0x09 ||
-                    bytes[i] == 0x0A ||
-                    bytes[i] == 0x0D ||
-                    (0x20 <= bytes[i] && bytes[i] <= 0x7E)
-                )
-          ) {
-              i += 1;
-              continue;
-          }
- 
-        if(     (// non-overlong 2-byte
-                    (0xC2 <= bytes[i] && bytes[i] <= 0xDF) &&
-                    (0x80 <= bytes[i+1] && bytes[i+1] <= 0xBF)
-                )
-          ) {
-              i += 2;
-              continue;
-          }
- 
-        if(     (// excluding overlongs
-                    bytes[i] == 0xE0 &&
-                    (0xA0 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) &&
-                    (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF)
-                ) ||
-                (// straight 3-byte
-                 ((0xE1 <= bytes[i] && bytes[i] <= 0xEC) ||
-                  bytes[i] == 0xEE ||
-                  bytes[i] == 0xEF) &&
-                 (0x80 <= bytes[i + 1] && bytes[i+1] <= 0xBF) &&
-                 (0x80 <= bytes[i+2] && bytes[i+2] <= 0xBF)
-                ) ||
-                (// excluding surrogates
-                 bytes[i] == 0xED &&
-                 (0x80 <= bytes[i+1] && bytes[i+1] <= 0x9F) &&
-                 (0x80 <= bytes[i+2] && bytes[i+2] <= 0xBF)
-                )
-          ) {
-              i += 3;
-              continue;
-          }
- 
-        if(     (// planes 1-3
-                    bytes[i] == 0xF0 &&
-                    (0x90 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) &&
-                    (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) &&
-                    (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF)
-                ) ||
-                (// planes 4-15
-                 (0xF1 <= bytes[i] && bytes[i] <= 0xF3) &&
-                 (0x80 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) &&
-                 (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) &&
-                 (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF)
-                ) ||
-                (// plane 16
-                 bytes[i] == 0xF4 &&
-                 (0x80 <= bytes[i + 1] && bytes[i + 1] <= 0x8F) &&
-                 (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) &&
-                 (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF)
-                )
-          ) {
-              i += 4;
-              continue;
-          }
- 
-        return false;
-    }
- 
-    return true;
-}
- 
-},{}],76:[function(require,module,exports){
-var hashClear = require('./_hashClear'),
-    hashDelete = require('./_hashDelete'),
-    hashGet = require('./_hashGet'),
-    hashHas = require('./_hashHas'),
-    hashSet = require('./_hashSet');
- 
-/**
- * Creates a hash object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function Hash(entries) {
-  var index = -1,
-      length = entries == null ? 0 : entries.length;
- 
-  this.clear();
-  while (++index < length) {
-    var entry = entries[index];
-    this.set(entry[0], entry[1]);
-  }
-}
- 
-// Add methods to `Hash`.
-Hash.prototype.clear = hashClear;
-Hash.prototype['delete'] = hashDelete;
-Hash.prototype.get = hashGet;
-Hash.prototype.has = hashHas;
-Hash.prototype.set = hashSet;
- 
-module.exports = Hash;
- 
-},{"./_hashClear":97,"./_hashDelete":98,"./_hashGet":99,"./_hashHas":100,"./_hashSet":101}],77:[function(require,module,exports){
-var listCacheClear = require('./_listCacheClear'),
-    listCacheDelete = require('./_listCacheDelete'),
-    listCacheGet = require('./_listCacheGet'),
-    listCacheHas = require('./_listCacheHas'),
-    listCacheSet = require('./_listCacheSet');
- 
-/**
- * Creates an list cache object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function ListCache(entries) {
-  var index = -1,
-      length = entries == null ? 0 : entries.length;
- 
-  this.clear();
-  while (++index < length) {
-    var entry = entries[index];
-    this.set(entry[0], entry[1]);
-  }
-}
- 
-// Add methods to `ListCache`.
-ListCache.prototype.clear = listCacheClear;
-ListCache.prototype['delete'] = listCacheDelete;
-ListCache.prototype.get = listCacheGet;
-ListCache.prototype.has = listCacheHas;
-ListCache.prototype.set = listCacheSet;
- 
-module.exports = ListCache;
- 
-},{"./_listCacheClear":106,"./_listCacheDelete":107,"./_listCacheGet":108,"./_listCacheHas":109,"./_listCacheSet":110}],78:[function(require,module,exports){
-var getNative = require('./_getNative'),
-    root = require('./_root');
- 
-/* Built-in method references that are verified to be native. */
-var Map = getNative(root, 'Map');
- 
-module.exports = Map;
- 
-},{"./_getNative":94,"./_root":119}],79:[function(require,module,exports){
-var mapCacheClear = require('./_mapCacheClear'),
-    mapCacheDelete = require('./_mapCacheDelete'),
-    mapCacheGet = require('./_mapCacheGet'),
-    mapCacheHas = require('./_mapCacheHas'),
-    mapCacheSet = require('./_mapCacheSet');
- 
-/**
- * Creates a map cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function MapCache(entries) {
-  var index = -1,
-      length = entries == null ? 0 : entries.length;
- 
-  this.clear();
-  while (++index < length) {
-    var entry = entries[index];
-    this.set(entry[0], entry[1]);
-  }
-}
- 
-// Add methods to `MapCache`.
-MapCache.prototype.clear = mapCacheClear;
-MapCache.prototype['delete'] = mapCacheDelete;
-MapCache.prototype.get = mapCacheGet;
-MapCache.prototype.has = mapCacheHas;
-MapCache.prototype.set = mapCacheSet;
- 
-module.exports = MapCache;
- 
-},{"./_mapCacheClear":111,"./_mapCacheDelete":112,"./_mapCacheGet":113,"./_mapCacheHas":114,"./_mapCacheSet":115}],80:[function(require,module,exports){
-var root = require('./_root');
- 
-/** Built-in value references. */
-var Symbol = root.Symbol;
- 
-module.exports = Symbol;
- 
-},{"./_root":119}],81:[function(require,module,exports){
-/**
- * A specialized version of `_.map` for arrays without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
- */
-function arrayMap(array, iteratee) {
-  var index = -1,
-      length = array == null ? 0 : array.length,
-      result = Array(length);
- 
-  while (++index < length) {
-    result[index] = iteratee(array[index], index, array);
-  }
-  return result;
-}
- 
-module.exports = arrayMap;
- 
-},{}],82:[function(require,module,exports){
-var baseAssignValue = require('./_baseAssignValue'),
-    eq = require('./eq');
- 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
- 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
- 
-/**
- * Assigns `value` to `key` of `object` if the existing value is not equivalent
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
- */
-function assignValue(object, key, value) {
-  var objValue = object[key];
-  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
-      (value === undefined && !(key in object))) {
-    baseAssignValue(object, key, value);
-  }
-}
- 
-module.exports = assignValue;
- 
-},{"./_baseAssignValue":84,"./eq":123}],83:[function(require,module,exports){
-var eq = require('./eq');
- 
-/**
- * Gets the index at which the `key` is found in `array` of key-value pairs.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} key The key to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function assocIndexOf(array, key) {
-  var length = array.length;
-  while (length--) {
-    if (eq(array[length][0], key)) {
-      return length;
-    }
-  }
-  return -1;
-}
- 
-module.exports = assocIndexOf;
- 
-},{"./eq":123}],84:[function(require,module,exports){
-var defineProperty = require('./_defineProperty');
- 
-/**
- * The base implementation of `assignValue` and `assignMergeValue` without
- * value checks.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
- */
-function baseAssignValue(object, key, value) {
-  if (key == '__proto__' && defineProperty) {
-    defineProperty(object, key, {
-      'configurable': true,
-      'enumerable': true,
-      'value': value,
-      'writable': true
-    });
-  } else {
-    object[key] = value;
-  }
-}
- 
-module.exports = baseAssignValue;
- 
-},{"./_defineProperty":91}],85:[function(require,module,exports){
-var Symbol = require('./_Symbol'),
-    getRawTag = require('./_getRawTag'),
-    objectToString = require('./_objectToString');
- 
-/** `Object#toString` result references. */
-var nullTag = '[object Null]',
-    undefinedTag = '[object Undefined]';
- 
-/** Built-in value references. */
-var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
- 
-/**
- * The base implementation of `getTag` without fallbacks for buggy environments.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */
-function baseGetTag(value) {
-  if (value == null) {
-    return value === undefined ? undefinedTag : nullTag;
-  }
-  return (symToStringTag && symToStringTag in Object(value))
-    ? getRawTag(value)
-    : objectToString(value);
-}
- 
-module.exports = baseGetTag;
- 
-},{"./_Symbol":80,"./_getRawTag":95,"./_objectToString":118}],86:[function(require,module,exports){
-var isFunction = require('./isFunction'),
-    isMasked = require('./_isMasked'),
-    isObject = require('./isObject'),
-    toSource = require('./_toSource');
- 
-/**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
- */
-var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
- 
-/** Used to detect host constructors (Safari). */
-var reIsHostCtor = /^\[object .+?Constructor\]$/;
- 
-/** Used for built-in method references. */
-var funcProto = Function.prototype,
-    objectProto = Object.prototype;
- 
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
- 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
- 
-/** Used to detect if a method is native. */
-var reIsNative = RegExp('^' +
-  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
-  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-);
- 
-/**
- * The base implementation of `_.isNative` without bad shim checks.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- *  else `false`.
- */
-function baseIsNative(value) {
-  if (!isObject(value) || isMasked(value)) {
-    return false;
-  }
-  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
-  return pattern.test(toSource(value));
-}
- 
-module.exports = baseIsNative;
- 
-},{"./_isMasked":105,"./_toSource":122,"./isFunction":125,"./isObject":126}],87:[function(require,module,exports){
-var assignValue = require('./_assignValue'),
-    castPath = require('./_castPath'),
-    isIndex = require('./_isIndex'),
-    isObject = require('./isObject'),
-    toKey = require('./_toKey');
- 
-/**
- * The base implementation of `_.set`.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {*} value The value to set.
- * @param {Function} [customizer] The function to customize path creation.
- * @returns {Object} Returns `object`.
- */
-function baseSet(object, path, value, customizer) {
-  if (!isObject(object)) {
-    return object;
-  }
-  path = castPath(path, object);
- 
-  var index = -1,
-      length = path.length,
-      lastIndex = length - 1,
-      nested = object;
- 
-  while (nested != null && ++index < length) {
-    var key = toKey(path[index]),
-        newValue = value;
- 
-    if (index != lastIndex) {
-      var objValue = nested[key];
-      newValue = customizer ? customizer(objValue, key, nested) : undefined;
-      if (newValue === undefined) {
-        newValue = isObject(objValue)
-          ? objValue
-          : (isIndex(path[index + 1]) ? [] : {});
-      }
-    }
-    assignValue(nested, key, newValue);
-    nested = nested[key];
-  }
-  return object;
-}
- 
-module.exports = baseSet;
- 
-},{"./_assignValue":82,"./_castPath":89,"./_isIndex":102,"./_toKey":121,"./isObject":126}],88:[function(require,module,exports){
-var Symbol = require('./_Symbol'),
-    arrayMap = require('./_arrayMap'),
-    isArray = require('./isArray'),
-    isSymbol = require('./isSymbol');
- 
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
- 
-/** Used to convert symbols to primitives and strings. */
-var symbolProto = Symbol ? Symbol.prototype : undefined,
-    symbolToString = symbolProto ? symbolProto.toString : undefined;
- 
-/**
- * The base implementation of `_.toString` which doesn't convert nullish
- * values to empty strings.
- *
- * @private
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- */
-function baseToString(value) {
-  // Exit early for strings to avoid a performance hit in some environments.
-  if (typeof value == 'string') {
-    return value;
-  }
-  if (isArray(value)) {
-    // Recursively convert values (susceptible to call stack limits).
-    return arrayMap(value, baseToString) + '';
-  }
-  if (isSymbol(value)) {
-    return symbolToString ? symbolToString.call(value) : '';
-  }
-  var result = (value + '');
-  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
-}
- 
-module.exports = baseToString;
- 
-},{"./_Symbol":80,"./_arrayMap":81,"./isArray":124,"./isSymbol":128}],89:[function(require,module,exports){
-var isArray = require('./isArray'),
-    isKey = require('./_isKey'),
-    stringToPath = require('./_stringToPath'),
-    toString = require('./toString');
- 
-/**
- * Casts `value` to a path array if it's not one.
- *
- * @private
- * @param {*} value The value to inspect.
- * @param {Object} [object] The object to query keys on.
- * @returns {Array} Returns the cast property path array.
- */
-function castPath(value, object) {
-  if (isArray(value)) {
-    return value;
-  }
-  return isKey(value, object) ? [value] : stringToPath(toString(value));
-}
- 
-module.exports = castPath;
- 
-},{"./_isKey":103,"./_stringToPath":120,"./isArray":124,"./toString":132}],90:[function(require,module,exports){
-var root = require('./_root');
- 
-/** Used to detect overreaching core-js shims. */
-var coreJsData = root['__core-js_shared__'];
- 
-module.exports = coreJsData;
- 
-},{"./_root":119}],91:[function(require,module,exports){
-var getNative = require('./_getNative');
- 
-var defineProperty = (function() {
-  try {
-    var func = getNative(Object, 'defineProperty');
-    func({}, '', {});
-    return func;
-  } catch (e) {}
-}());
- 
-module.exports = defineProperty;
- 
-},{"./_getNative":94}],92:[function(require,module,exports){
-(function (global){
-/** Detect free variable `global` from Node.js. */
-var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
- 
-module.exports = freeGlobal;
- 
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{}],93:[function(require,module,exports){
-var isKeyable = require('./_isKeyable');
- 
-/**
- * Gets the data for `map`.
- *
- * @private
- * @param {Object} map The map to query.
- * @param {string} key The reference key.
- * @returns {*} Returns the map data.
- */
-function getMapData(map, key) {
-  var data = map.__data__;
-  return isKeyable(key)
-    ? data[typeof key == 'string' ? 'string' : 'hash']
-    : data.map;
-}
- 
-module.exports = getMapData;
- 
-},{"./_isKeyable":104}],94:[function(require,module,exports){
-var baseIsNative = require('./_baseIsNative'),
-    getValue = require('./_getValue');
- 
-/**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */
-function getNative(object, key) {
-  var value = getValue(object, key);
-  return baseIsNative(value) ? value : undefined;
-}
- 
-module.exports = getNative;
- 
-},{"./_baseIsNative":86,"./_getValue":96}],95:[function(require,module,exports){
-var Symbol = require('./_Symbol');
- 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
- 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
- 
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var nativeObjectToString = objectProto.toString;
- 
-/** Built-in value references. */
-var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
- 
-/**
- * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the raw `toStringTag`.
- */
-function getRawTag(value) {
-  var isOwn = hasOwnProperty.call(value, symToStringTag),
-      tag = value[symToStringTag];
- 
-  try {
-    value[symToStringTag] = undefined;
-    var unmasked = true;
-  } catch (e) {}
- 
-  var result = nativeObjectToString.call(value);
-  if (unmasked) {
-    if (isOwn) {
-      value[symToStringTag] = tag;
-    } else {
-      delete value[symToStringTag];
-    }
-  }
-  return result;
-}
- 
-module.exports = getRawTag;
- 
-},{"./_Symbol":80}],96:[function(require,module,exports){
-/**
- * Gets the value at `key` of `object`.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */
-function getValue(object, key) {
-  return object == null ? undefined : object[key];
-}
- 
-module.exports = getValue;
- 
-},{}],97:[function(require,module,exports){
-var nativeCreate = require('./_nativeCreate');
- 
-/**
- * Removes all key-value entries from the hash.
- *
- * @private
- * @name clear
- * @memberOf Hash
- */
-function hashClear() {
-  this.__data__ = nativeCreate ? nativeCreate(null) : {};
-  this.size = 0;
-}
- 
-module.exports = hashClear;
- 
-},{"./_nativeCreate":117}],98:[function(require,module,exports){
-/**
- * Removes `key` and its value from the hash.
- *
- * @private
- * @name delete
- * @memberOf Hash
- * @param {Object} hash The hash to modify.
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function hashDelete(key) {
-  var result = this.has(key) && delete this.__data__[key];
-  this.size -= result ? 1 : 0;
-  return result;
-}
- 
-module.exports = hashDelete;
- 
-},{}],99:[function(require,module,exports){
-var nativeCreate = require('./_nativeCreate');
- 
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
- 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
- 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
- 
-/**
- * Gets the hash value for `key`.
- *
- * @private
- * @name get
- * @memberOf Hash
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function hashGet(key) {
-  var data = this.__data__;
-  if (nativeCreate) {
-    var result = data[key];
-    return result === HASH_UNDEFINED ? undefined : result;
-  }
-  return hasOwnProperty.call(data, key) ? data[key] : undefined;
-}
- 
-module.exports = hashGet;
- 
-},{"./_nativeCreate":117}],100:[function(require,module,exports){
-var nativeCreate = require('./_nativeCreate');
- 
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
- 
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
- 
-/**
- * Checks if a hash value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Hash
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function hashHas(key) {
-  var data = this.__data__;
-  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
-}
- 
-module.exports = hashHas;
- 
-},{"./_nativeCreate":117}],101:[function(require,module,exports){
-var nativeCreate = require('./_nativeCreate');
- 
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
- 
-/**
- * Sets the hash `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Hash
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the hash instance.
- */
-function hashSet(key, value) {
-  var data = this.__data__;
-  this.size += this.has(key) ? 0 : 1;
-  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
-  return this;
-}
- 
-module.exports = hashSet;
- 
-},{"./_nativeCreate":117}],102:[function(require,module,exports){
-/** Used as references for various `Number` constants. */
-var MAX_SAFE_INTEGER = 9007199254740991;
- 
-/** Used to detect unsigned integer values. */
-var reIsUint = /^(?:0|[1-9]\d*)$/;
- 
-/**
- * Checks if `value` is a valid array-like index.
- *
- * @private
- * @param {*} value The value to check.
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
- */
-function isIndex(value, length) {
-  length = length == null ? MAX_SAFE_INTEGER : length;
-  return !!length &&
-    (typeof value == 'number' || reIsUint.test(value)) &&
-    (value > -1 && value % 1 == 0 && value < length);
-}
- 
-module.exports = isIndex;
- 
-},{}],103:[function(require,module,exports){
-var isArray = require('./isArray'),
-    isSymbol = require('./isSymbol');
- 
-/** Used to match property names within property paths. */
-var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
-    reIsPlainProp = /^\w*$/;
- 
-/**
- * Checks if `value` is a property name and not a property path.
- *
- * @private
- * @param {*} value The value to check.
- * @param {Object} [object] The object to query keys on.
- * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
- */
-function isKey(value, object) {
-  if (isArray(value)) {
-    return false;
-  }
-  var type = typeof value;
-  if (type == 'number' || type == 'symbol' || type == 'boolean' ||
-      value == null || isSymbol(value)) {
-    return true;
-  }
-  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
-    (object != null && value in Object(object));
-}
- 
-module.exports = isKey;
- 
-},{"./isArray":124,"./isSymbol":128}],104:[function(require,module,exports){
-/**
- * Checks if `value` is suitable for use as unique object key.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
- */
-function isKeyable(value) {
-  var type = typeof value;
-  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
-    ? (value !== '__proto__')
-    : (value === null);
-}
- 
-module.exports = isKeyable;
- 
-},{}],105:[function(require,module,exports){
-var coreJsData = require('./_coreJsData');
- 
-/** Used to detect methods masquerading as native. */
-var maskSrcKey = (function() {
-  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
-  return uid ? ('Symbol(src)_1.' + uid) : '';
-}());
- 
-/**
- * Checks if `func` has its source masked.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
- */
-function isMasked(func) {
-  return !!maskSrcKey && (maskSrcKey in func);
-}
- 
-module.exports = isMasked;
- 
-},{"./_coreJsData":90}],106:[function(require,module,exports){
-/**
- * Removes all key-value entries from the list cache.
- *
- * @private
- * @name clear
- * @memberOf ListCache
- */
-function listCacheClear() {
-  this.__data__ = [];
-  this.size = 0;
-}
- 
-module.exports = listCacheClear;
- 
-},{}],107:[function(require,module,exports){
-var assocIndexOf = require('./_assocIndexOf');
- 
-/** Used for built-in method references. */
-var arrayProto = Array.prototype;
- 
-/** Built-in value references. */
-var splice = arrayProto.splice;
- 
-/**
- * Removes `key` and its value from the list cache.
- *
- * @private
- * @name delete
- * @memberOf ListCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function listCacheDelete(key) {
-  var data = this.__data__,
-      index = assocIndexOf(data, key);
- 
-  if (index < 0) {
-    return false;
-  }
-  var lastIndex = data.length - 1;
-  if (index == lastIndex) {
-    data.pop();
-  } else {
-    splice.call(data, index, 1);
-  }
-  --this.size;
-  return true;
-}
- 
-module.exports = listCacheDelete;
- 
-},{"./_assocIndexOf":83}],108:[function(require,module,exports){
-var assocIndexOf = require('./_assocIndexOf');
- 
-/**
- * Gets the list cache value for `key`.
- *
- * @private
- * @name get
- * @memberOf ListCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function listCacheGet(key) {
-  var data = this.__data__,
-      index = assocIndexOf(data, key);
- 
-  return index < 0 ? undefined : data[index][1];
-}
- 
-module.exports = listCacheGet;
- 
-},{"./_assocIndexOf":83}],109:[function(require,module,exports){
-var assocIndexOf = require('./_assocIndexOf');
- 
-/**
- * Checks if a list cache value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf ListCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function listCacheHas(key) {
-  return assocIndexOf(this.__data__, key) > -1;
-}
- 
-module.exports = listCacheHas;
- 
-},{"./_assocIndexOf":83}],110:[function(require,module,exports){
-var assocIndexOf = require('./_assocIndexOf');
- 
-/**
- * Sets the list cache `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf ListCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the list cache instance.
- */
-function listCacheSet(key, value) {
-  var data = this.__data__,
-      index = assocIndexOf(data, key);
- 
-  if (index < 0) {
-    ++this.size;
-    data.push([key, value]);
-  } else {
-    data[index][1] = value;
-  }
-  return this;
-}
- 
-module.exports = listCacheSet;
- 
-},{"./_assocIndexOf":83}],111:[function(require,module,exports){
-var Hash = require('./_Hash'),
-    ListCache = require('./_ListCache'),
-    Map = require('./_Map');
- 
-/**
- * Removes all key-value entries from the map.
- *
- * @private
- * @name clear
- * @memberOf MapCache
- */
-function mapCacheClear() {
-  this.size = 0;
-  this.__data__ = {
-    'hash': new Hash,
-    'map': new (Map || ListCache),
-    'string': new Hash
-  };
-}
- 
-module.exports = mapCacheClear;
- 
-},{"./_Hash":76,"./_ListCache":77,"./_Map":78}],112:[function(require,module,exports){
-var getMapData = require('./_getMapData');
- 
-/**
- * Removes `key` and its value from the map.
- *
- * @private
- * @name delete
- * @memberOf MapCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function mapCacheDelete(key) {
-  var result = getMapData(this, key)['delete'](key);
-  this.size -= result ? 1 : 0;
-  return result;
-}
- 
-module.exports = mapCacheDelete;
- 
-},{"./_getMapData":93}],113:[function(require,module,exports){
-var getMapData = require('./_getMapData');
- 
-/**
- * Gets the map value for `key`.
- *
- * @private
- * @name get
- * @memberOf MapCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function mapCacheGet(key) {
-  return getMapData(this, key).get(key);
-}
- 
-module.exports = mapCacheGet;
- 
-},{"./_getMapData":93}],114:[function(require,module,exports){
-var getMapData = require('./_getMapData');
- 
-/**
- * Checks if a map value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf MapCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function mapCacheHas(key) {
-  return getMapData(this, key).has(key);
-}
- 
-module.exports = mapCacheHas;
- 
-},{"./_getMapData":93}],115:[function(require,module,exports){
-var getMapData = require('./_getMapData');
- 
-/**
- * Sets the map `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf MapCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the map cache instance.
- */
-function mapCacheSet(key, value) {
-  var data = getMapData(this, key),
-      size = data.size;
- 
-  data.set(key, value);
-  this.size += data.size == size ? 0 : 1;
-  return this;
-}
- 
-module.exports = mapCacheSet;
- 
-},{"./_getMapData":93}],116:[function(require,module,exports){
-var memoize = require('./memoize');
- 
-/** Used as the maximum memoize cache size. */
-var MAX_MEMOIZE_SIZE = 500;
- 
-/**
- * A specialized version of `_.memoize` which clears the memoized function's
- * cache when it exceeds `MAX_MEMOIZE_SIZE`.
- *
- * @private
- * @param {Function} func The function to have its output memoized.
- * @returns {Function} Returns the new memoized function.
- */
-function memoizeCapped(func) {
-  var result = memoize(func, function(key) {
-    if (cache.size === MAX_MEMOIZE_SIZE) {
-      cache.clear();
-    }
-    return key;
-  });
- 
-  var cache = result.cache;
-  return result;
-}
- 
-module.exports = memoizeCapped;
- 
-},{"./memoize":130}],117:[function(require,module,exports){
-var getNative = require('./_getNative');
- 
-/* Built-in method references that are verified to be native. */
-var nativeCreate = getNative(Object, 'create');
- 
-module.exports = nativeCreate;
- 
-},{"./_getNative":94}],118:[function(require,module,exports){
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
- 
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var nativeObjectToString = objectProto.toString;
- 
-/**
- * Converts `value` to a string using `Object.prototype.toString`.
- *
- * @private
- * @param {*} value The value to convert.
- * @returns {string} Returns the converted string.
- */
-function objectToString(value) {
-  return nativeObjectToString.call(value);
-}
- 
-module.exports = objectToString;
- 
-},{}],119:[function(require,module,exports){
-var freeGlobal = require('./_freeGlobal');
- 
-/** Detect free variable `self`. */
-var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
- 
-/** Used as a reference to the global object. */
-var root = freeGlobal || freeSelf || Function('return this')();
- 
-module.exports = root;
- 
-},{"./_freeGlobal":92}],120:[function(require,module,exports){
-var memoizeCapped = require('./_memoizeCapped');
- 
-/** Used to match property names within property paths. */
-var reLeadingDot = /^\./,
-    rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
- 
-/** Used to match backslashes in property paths. */
-var reEscapeChar = /\\(\\)?/g;
- 
-/**
- * Converts `string` to a property path array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the property path array.
- */
-var stringToPath = memoizeCapped(function(string) {
-  var result = [];
-  if (reLeadingDot.test(string)) {
-    result.push('');
-  }
-  string.replace(rePropName, function(match, number, quote, string) {
-    result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
-  });
-  return result;
-});
- 
-module.exports = stringToPath;
- 
-},{"./_memoizeCapped":116}],121:[function(require,module,exports){
-var isSymbol = require('./isSymbol');
- 
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
- 
-/**
- * Converts `value` to a string key if it's not a string or symbol.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {string|symbol} Returns the key.
- */
-function toKey(value) {
-  if (typeof value == 'string' || isSymbol(value)) {
-    return value;
-  }
-  var result = (value + '');
-  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
-}
- 
-module.exports = toKey;
- 
-},{"./isSymbol":128}],122:[function(require,module,exports){
-/** Used for built-in method references. */
-var funcProto = Function.prototype;
- 
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
- 
-/**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to convert.
- * @returns {string} Returns the source code.
- */
-function toSource(func) {
-  if (func != null) {
-    try {
-      return funcToString.call(func);
-    } catch (e) {}
-    try {
-      return (func + '');
-    } catch (e) {}
-  }
-  return '';
-}
- 
-module.exports = toSource;
- 
-},{}],123:[function(require,module,exports){
-/**
- * Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * comparison between two values to determine if they are equivalent.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.eq(object, object);
- * // => true
- *
- * _.eq(object, other);
- * // => false
- *
- * _.eq('a', 'a');
- * // => true
- *
- * _.eq('a', Object('a'));
- * // => false
- *
- * _.eq(NaN, NaN);
- * // => true
- */
-function eq(value, other) {
-  return value === other || (value !== value && other !== other);
-}
- 
-module.exports = eq;
- 
-},{}],124:[function(require,module,exports){
-/**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */
-var isArray = Array.isArray;
- 
-module.exports = isArray;
- 
-},{}],125:[function(require,module,exports){
-var baseGetTag = require('./_baseGetTag'),
-    isObject = require('./isObject');
- 
-/** `Object#toString` result references. */
-var asyncTag = '[object AsyncFunction]',
-    funcTag = '[object Function]',
-    genTag = '[object GeneratorFunction]',
-    proxyTag = '[object Proxy]';
- 
-/**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
-function isFunction(value) {
-  if (!isObject(value)) {
-    return false;
-  }
-  // The use of `Object#toString` avoids issues with the `typeof` operator
-  // in Safari 9 which returns 'object' for typed arrays and other constructors.
-  var tag = baseGetTag(value);
-  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
-}
- 
-module.exports = isFunction;
- 
-},{"./_baseGetTag":85,"./isObject":126}],126:[function(require,module,exports){
-/**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
-function isObject(value) {
-  var type = typeof value;
-  return value != null && (type == 'object' || type == 'function');
-}
- 
-module.exports = isObject;
- 
-},{}],127:[function(require,module,exports){
-/**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
-function isObjectLike(value) {
-  return value != null && typeof value == 'object';
-}
- 
-module.exports = isObjectLike;
- 
-},{}],128:[function(require,module,exports){
-var baseGetTag = require('./_baseGetTag'),
-    isObjectLike = require('./isObjectLike');
- 
-/** `Object#toString` result references. */
-var symbolTag = '[object Symbol]';
- 
-/**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
- */
-function isSymbol(value) {
-  return typeof value == 'symbol' ||
-    (isObjectLike(value) && baseGetTag(value) == symbolTag);
-}
- 
-module.exports = isSymbol;
- 
-},{"./_baseGetTag":85,"./isObjectLike":127}],129:[function(require,module,exports){
-(function (global){
-/**
- * @license
- * Lodash <https://lodash.com/>
- * Copyright JS Foundation and other contributors <https://js.foundation/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-;(function() {
- 
-  /** Used as a safe reference for `undefined` in pre-ES5 environments. */
-  var undefined;
- 
-  /** Used as the semantic version number. */
-  var VERSION = '4.17.3';
- 
-  /** Used as the size to enable large array optimizations. */
-  var LARGE_ARRAY_SIZE = 200;
- 
-  /** Error message constants. */
-  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',
-      FUNC_ERROR_TEXT = 'Expected a function';
- 
-  /** Used to stand-in for `undefined` hash values. */
-  var HASH_UNDEFINED = '__lodash_hash_undefined__';
- 
-  /** Used as the maximum memoize cache size. */
-  var MAX_MEMOIZE_SIZE = 500;
- 
-  /** Used as the internal argument placeholder. */
-  var PLACEHOLDER = '__lodash_placeholder__';
- 
-  /** Used to compose bitmasks for cloning. */
-  var CLONE_DEEP_FLAG = 1,
-      CLONE_FLAT_FLAG = 2,
-      CLONE_SYMBOLS_FLAG = 4;
- 
-  /** Used to compose bitmasks for value comparisons. */
-  var COMPARE_PARTIAL_FLAG = 1,
-      COMPARE_UNORDERED_FLAG = 2;
- 
-  /** Used to compose bitmasks for function metadata. */
-  var WRAP_BIND_FLAG = 1,
-      WRAP_BIND_KEY_FLAG = 2,
-      WRAP_CURRY_BOUND_FLAG = 4,
-      WRAP_CURRY_FLAG = 8,
-      WRAP_CURRY_RIGHT_FLAG = 16,
-      WRAP_PARTIAL_FLAG = 32,
-      WRAP_PARTIAL_RIGHT_FLAG = 64,
-      WRAP_ARY_FLAG = 128,
-      WRAP_REARG_FLAG = 256,
-      WRAP_FLIP_FLAG = 512;
- 
-  /** Used as default options for `_.truncate`. */
-  var DEFAULT_TRUNC_LENGTH = 30,
-      DEFAULT_TRUNC_OMISSION = '...';
- 
-  /** Used to detect hot functions by number of calls within a span of milliseconds. */
-  var HOT_COUNT = 800,
-      HOT_SPAN = 16;
- 
-  /** Used to indicate the type of lazy iteratees. */
-  var LAZY_FILTER_FLAG = 1,
-      LAZY_MAP_FLAG = 2,
-      LAZY_WHILE_FLAG = 3;
- 
-  /** Used as references for various `Number` constants. */
-  var INFINITY = 1 / 0,
-      MAX_SAFE_INTEGER = 9007199254740991,
-      MAX_INTEGER = 1.7976931348623157e+308,
-      NAN = 0 / 0;
- 
-  /** Used as references for the maximum length and index of an array. */
-  var MAX_ARRAY_LENGTH = 4294967295,
-      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
-      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
- 
-  /** Used to associate wrap methods with their bit flags. */
-  var wrapFlags = [
-    ['ary', WRAP_ARY_FLAG],
-    ['bind', WRAP_BIND_FLAG],
-    ['bindKey', WRAP_BIND_KEY_FLAG],
-    ['curry', WRAP_CURRY_FLAG],
-    ['curryRight', WRAP_CURRY_RIGHT_FLAG],
-    ['flip', WRAP_FLIP_FLAG],
-    ['partial', WRAP_PARTIAL_FLAG],
-    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],
-    ['rearg', WRAP_REARG_FLAG]
-  ];
- 
-  /** `Object#toString` result references. */
-  var argsTag = '[object Arguments]',
-      arrayTag = '[object Array]',
-      asyncTag = '[object AsyncFunction]',
-      boolTag = '[object Boolean]',
-      dateTag = '[object Date]',
-      domExcTag = '[object DOMException]',
-      errorTag = '[object Error]',
-      funcTag = '[object Function]',
-      genTag = '[object GeneratorFunction]',
-      mapTag = '[object Map]',
-      numberTag = '[object Number]',
-      nullTag = '[object Null]',
-      objectTag = '[object Object]',
-      promiseTag = '[object Promise]',
-      proxyTag = '[object Proxy]',
-      regexpTag = '[object RegExp]',
-      setTag = '[object Set]',
-      stringTag = '[object String]',
-      symbolTag = '[object Symbol]',
-      undefinedTag = '[object Undefined]',
-      weakMapTag = '[object WeakMap]',
-      weakSetTag = '[object WeakSet]';
- 
-  var arrayBufferTag = '[object ArrayBuffer]',
-      dataViewTag = '[object DataView]',
-      float32Tag = '[object Float32Array]',
-      float64Tag = '[object Float64Array]',
-      int8Tag = '[object Int8Array]',
-      int16Tag = '[object Int16Array]',
-      int32Tag = '[object Int32Array]',
-      uint8Tag = '[object Uint8Array]',
-      uint8ClampedTag = '[object Uint8ClampedArray]',
-      uint16Tag = '[object Uint16Array]',
-      uint32Tag = '[object Uint32Array]';
- 
-  /** Used to match empty string literals in compiled template source. */
-  var reEmptyStringLeading = /\b__p \+= '';/g,
-      reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
-      reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
- 
-  /** Used to match HTML entities and HTML characters. */
-  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,
-      reUnescapedHtml = /[&<>"']/g,
-      reHasEscapedHtml = RegExp(reEscapedHtml.source),
-      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
- 
-  /** Used to match template delimiters. */
-  var reEscape = /<%-([\s\S]+?)%>/g,
-      reEvaluate = /<%([\s\S]+?)%>/g,
-      reInterpolate = /<%=([\s\S]+?)%>/g;
- 
-  /** Used to match property names within property paths. */
-  var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
-      reIsPlainProp = /^\w*$/,
-      reLeadingDot = /^\./,
-      rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
- 
-  /**
-   * Used to match `RegExp`
-   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
-   */
-  var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
-      reHasRegExpChar = RegExp(reRegExpChar.source);
- 
-  /** Used to match leading and trailing whitespace. */
-  var reTrim = /^\s+|\s+$/g,
-      reTrimStart = /^\s+/,
-      reTrimEnd = /\s+$/;
- 
-  /** Used to match wrap detail comments. */
-  var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
-      reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
-      reSplitDetails = /,? & /;
- 
-  /** Used to match words composed of alphanumeric characters. */
-  var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
- 
-  /** Used to match backslashes in property paths. */
-  var reEscapeChar = /\\(\\)?/g;
- 
-  /**
-   * Used to match
-   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
-   */
-  var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
- 
-  /** Used to match `RegExp` flags from their coerced string values. */
-  var reFlags = /\w*$/;
- 
-  /** Used to detect bad signed hexadecimal string values. */
-  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
- 
-  /** Used to detect binary string values. */
-  var reIsBinary = /^0b[01]+$/i;
- 
-  /** Used to detect host constructors (Safari). */
-  var reIsHostCtor = /^\[object .+?Constructor\]$/;
- 
-  /** Used to detect octal string values. */
-  var reIsOctal = /^0o[0-7]+$/i;
- 
-  /** Used to detect unsigned integer values. */
-  var reIsUint = /^(?:0|[1-9]\d*)$/;
- 
-  /** Used to match Latin Unicode letters (excluding mathematical operators). */
-  var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
- 
-  /** Used to ensure capturing order of template delimiters. */
-  var reNoMatch = /($^)/;
- 
-  /** Used to match unescaped characters in compiled string literals. */
-  var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
- 
-  /** Used to compose unicode character classes. */
-  var rsAstralRange = '\\ud800-\\udfff',
-      rsComboMarksRange = '\\u0300-\\u036f',
-      reComboHalfMarksRange = '\\ufe20-\\ufe2f',
-      rsComboSymbolsRange = '\\u20d0-\\u20ff',
-      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
-      rsDingbatRange = '\\u2700-\\u27bf',
-      rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
-      rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
-      rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
-      rsPunctuationRange = '\\u2000-\\u206f',
-      rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000',
-      rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
-      rsVarRange = '\\ufe0e\\ufe0f',
-      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
- 
-  /** Used to compose unicode capture groups. */
-  var rsApos = "['\u2019]",
-      rsAstral = '[' + rsAstralRange + ']',
-      rsBreak = '[' + rsBreakRange + ']',
-      rsCombo = '[' + rsComboRange + ']',
-      rsDigits = '\\d+',
-      rsDingbat = '[' + rsDingbatRange + ']',
-      rsLower = '[' + rsLowerRange + ']',
-      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',
-      rsFitz = '\\ud83c[\\udffb-\\udfff]',
-      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
-      rsNonAstral = '[^' + rsAstralRange + ']',
-      rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
-      rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
-      rsUpper = '[' + rsUpperRange + ']',
-      rsZWJ = '\\u200d';
- 
-  /** Used to compose unicode regexes. */
-  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
-      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
-      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
-      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
-      reOptMod = rsModifier + '?',
-      rsOptVar = '[' + rsVarRange + ']?',
-      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
-      rsOrdLower = '\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)',
-      rsOrdUpper = '\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)',
-      rsSeq = rsOptVar + reOptMod + rsOptJoin,
-      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,
-      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
- 
-  /** Used to match apostrophes. */
-  var reApos = RegExp(rsApos, 'g');
- 
-  /**
-   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
-   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
-   */
-  var reComboMark = RegExp(rsCombo, 'g');
- 
-  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
-  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
- 
-  /** Used to match complex or compound words. */
-  var reUnicodeWord = RegExp([
-    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
-    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',
-    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
-    rsUpper + '+' + rsOptContrUpper,
-    rsOrdUpper,
-    rsOrdLower,
-    rsDigits,
-    rsEmoji
-  ].join('|'), 'g');
- 
-  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
-  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
- 
-  /** Used to detect strings that need a more robust regexp to match words. */
-  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
- 
-  /** Used to assign default `context` object properties. */
-  var contextProps = [
-    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',
-    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',
-    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',
-    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',
-    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'
-  ];
- 
-  /** Used to make template sourceURLs easier to identify. */
-  var templateCounter = -1;
- 
-  /** Used to identify `toStringTag` values of typed arrays. */
-  var typedArrayTags = {};
-  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
-  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
-  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
-  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
-  typedArrayTags[uint32Tag] = true;
-  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
-  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
-  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
-  typedArrayTags[errorTag] = typedArrayTags[funcTag] =
-  typedArrayTags[mapTag] = typedArrayTags[numberTag] =
-  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
-  typedArrayTags[setTag] = typedArrayTags[stringTag] =
-  typedArrayTags[weakMapTag] = false;
- 
-  /** Used to identify `toStringTag` values supported by `_.clone`. */
-  var cloneableTags = {};
-  cloneableTags[argsTag] = cloneableTags[arrayTag] =
-  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
-  cloneableTags[boolTag] = cloneableTags[dateTag] =
-  cloneableTags[float32Tag] = cloneableTags[float64Tag] =
-  cloneableTags[int8Tag] = cloneableTags[int16Tag] =
-  cloneableTags[int32Tag] = cloneableTags[mapTag] =
-  cloneableTags[numberTag] = cloneableTags[objectTag] =
-  cloneableTags[regexpTag] = cloneableTags[setTag] =
-  cloneableTags[stringTag] = cloneableTags[symbolTag] =
-  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
-  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
-  cloneableTags[errorTag] = cloneableTags[funcTag] =
-  cloneableTags[weakMapTag] = false;
- 
-  /** Used to map Latin Unicode letters to basic Latin letters. */
-  var deburredLetters = {
-    // Latin-1 Supplement block.
-    '\xc0': 'A',  '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
-    '\xe0': 'a',  '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
-    '\xc7': 'C',  '\xe7': 'c',
-    '\xd0': 'D',  '\xf0': 'd',
-    '\xc8': 'E',  '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
-    '\xe8': 'e',  '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
-    '\xcc': 'I',  '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
-    '\xec': 'i',  '\xed': 'i', '\xee': 'i', '\xef': 'i',
-    '\xd1': 'N',  '\xf1': 'n',
-    '\xd2': 'O',  '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
-    '\xf2': 'o',  '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
-    '\xd9': 'U',  '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
-    '\xf9': 'u',  '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
-    '\xdd': 'Y',  '\xfd': 'y', '\xff': 'y',
-    '\xc6': 'Ae', '\xe6': 'ae',
-    '\xde': 'Th', '\xfe': 'th',
-    '\xdf': 'ss',
-    // Latin Extended-A block.
-    '\u0100': 'A',  '\u0102': 'A', '\u0104': 'A',
-    '\u0101': 'a',  '\u0103': 'a', '\u0105': 'a',
-    '\u0106': 'C',  '\u0108': 'C', '\u010a': 'C', '\u010c': 'C',
-    '\u0107': 'c',  '\u0109': 'c', '\u010b': 'c', '\u010d': 'c',
-    '\u010e': 'D',  '\u0110': 'D', '\u010f': 'd', '\u0111': 'd',
-    '\u0112': 'E',  '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E',
-    '\u0113': 'e',  '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e',
-    '\u011c': 'G',  '\u011e': 'G', '\u0120': 'G', '\u0122': 'G',
-    '\u011d': 'g',  '\u011f': 'g', '\u0121': 'g', '\u0123': 'g',
-    '\u0124': 'H',  '\u0126': 'H', '\u0125': 'h', '\u0127': 'h',
-    '\u0128': 'I',  '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I',
-    '\u0129': 'i',  '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i',
-    '\u0134': 'J',  '\u0135': 'j',
-    '\u0136': 'K',  '\u0137': 'k', '\u0138': 'k',
-    '\u0139': 'L',  '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L',
-    '\u013a': 'l',  '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l',
-    '\u0143': 'N',  '\u0145': 'N', '\u0147': 'N', '\u014a': 'N',
-    '\u0144': 'n',  '\u0146': 'n', '\u0148': 'n', '\u014b': 'n',
-    '\u014c': 'O',  '\u014e': 'O', '\u0150': 'O',
-    '\u014d': 'o',  '\u014f': 'o', '\u0151': 'o',
-    '\u0154': 'R',  '\u0156': 'R', '\u0158': 'R',
-    '\u0155': 'r',  '\u0157': 'r', '\u0159': 'r',
-    '\u015a': 'S',  '\u015c': 'S', '\u015e': 'S', '\u0160': 'S',
-    '\u015b': 's',  '\u015d': 's', '\u015f': 's', '\u0161': 's',
-    '\u0162': 'T',  '\u0164': 'T', '\u0166': 'T',
-    '\u0163': 't',  '\u0165': 't', '\u0167': 't',
-    '\u0168': 'U',  '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U',
-    '\u0169': 'u',  '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u',
-    '\u0174': 'W',  '\u0175': 'w',
-    '\u0176': 'Y',  '\u0177': 'y', '\u0178': 'Y',
-    '\u0179': 'Z',  '\u017b': 'Z', '\u017d': 'Z',
-    '\u017a': 'z',  '\u017c': 'z', '\u017e': 'z',
-    '\u0132': 'IJ', '\u0133': 'ij',
-    '\u0152': 'Oe', '\u0153': 'oe',
-    '\u0149': "'n", '\u017f': 's'
-  };
- 
-  /** Used to map characters to HTML entities. */
-  var htmlEscapes = {
-    '&': '&amp;',
-    '<': '&lt;',
-    '>': '&gt;',
-    '"': '&quot;',
-    "'": '&#39;'
-  };
- 
-  /** Used to map HTML entities to characters. */
-  var htmlUnescapes = {
-    '&amp;': '&',
-    '&lt;': '<',
-    '&gt;': '>',
-    '&quot;': '"',
-    '&#39;': "'"
-  };
- 
-  /** Used to escape characters for inclusion in compiled string literals. */
-  var stringEscapes = {
-    '\\': '\\',
-    "'": "'",
-    '\n': 'n',
-    '\r': 'r',
-    '\u2028': 'u2028',
-    '\u2029': 'u2029'
-  };
- 
-  /** Built-in method references without a dependency on `root`. */
-  var freeParseFloat = parseFloat,
-      freeParseInt = parseInt;
- 
-  /** Detect free variable `global` from Node.js. */
-  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
- 
-  /** Detect free variable `self`. */
-  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
- 
-  /** Used as a reference to the global object. */
-  var root = freeGlobal || freeSelf || Function('return this')();
- 
-  /** Detect free variable `exports`. */
-  var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
- 
-  /** Detect free variable `module`. */
-  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
- 
-  /** Detect the popular CommonJS extension `module.exports`. */
-  var moduleExports = freeModule && freeModule.exports === freeExports;
- 
-  /** Detect free variable `process` from Node.js. */
-  var freeProcess = moduleExports && freeGlobal.process;
- 
-  /** Used to access faster Node.js helpers. */
-  var nodeUtil = (function() {
-    try {
-      return freeProcess && freeProcess.binding && freeProcess.binding('util');
-    } catch (e) {}
-  }());
- 
-  /* Node.js helper references. */
-  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,
-      nodeIsDate = nodeUtil && nodeUtil.isDate,
-      nodeIsMap = nodeUtil && nodeUtil.isMap,
-      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,
-      nodeIsSet = nodeUtil && nodeUtil.isSet,
-      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
- 
-  /*--------------------------------------------------------------------------*/
- 
-  /**
-   * Adds the key-value `pair` to `map`.
-   *
-   * @private
-   * @param {Object} map The map to modify.
-   * @param {Array} pair The key-value pair to add.
-   * @returns {Object} Returns `map`.
-   */
-  function addMapEntry(map, pair) {
-    // Don't return `map.set` because it's not chainable in IE 11.
-    map.set(pair[0], pair[1]);
-    return map;
-  }
- 
-  /**
-   * Adds `value` to `set`.
-   *
-   * @private
-   * @param {Object} set The set to modify.
-   * @param {*} value The value to add.
-   * @returns {Object} Returns `set`.
-   */
-  function addSetEntry(set, value) {
-    // Don't return `set.add` because it's not chainable in IE 11.
-    set.add(value);
-    return set;
-  }
- 
-  /**
-   * A faster alternative to `Function#apply`, this function invokes `func`
-   * with the `this` binding of `thisArg` and the arguments of `args`.
-   *
-   * @private
-   * @param {Function} func The function to invoke.
-   * @param {*} thisArg The `this` binding of `func`.
-   * @param {Array} args The arguments to invoke `func` with.
-   * @returns {*} Returns the result of `func`.
-   */
-  function apply(func, thisArg, args) {
-    switch (args.length) {
-      case 0: return func.call(thisArg);
-      case 1: return func.call(thisArg, args[0]);
-      case 2: return func.call(thisArg, args[0], args[1]);
-      case 3: return func.call(thisArg, args[0], args[1], args[2]);
-    }
-    return func.apply(thisArg, args);
-  }
- 
-  /**
-   * A specialized version of `baseAggregator` for arrays.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} setter The function to set `accumulator` values.
-   * @param {Function} iteratee The iteratee to transform keys.
-   * @param {Object} accumulator The initial aggregated object.
-   * @returns {Function} Returns `accumulator`.
-   */
-  function arrayAggregator(array, setter, iteratee, accumulator) {
-    var index = -1,
-        length = array == null ? 0 : array.length;
- 
-    while (++index < length) {
-      var value = array[index];
-      setter(accumulator, value, iteratee(value), array);
-    }
-    return accumulator;
-  }
- 
-  /**
-   * A specialized version of `_.forEach` for arrays without support for
-   * iteratee shorthands.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @returns {Array} Returns `array`.
-   */
-  function arrayEach(array, iteratee) {
-    var index = -1,
-        length = array == null ? 0 : array.length;
- 
-    while (++index < length) {
-      if (iteratee(array[index], index, array) === false) {
-        break;
-      }
-    }
-    return array;
-  }
- 
-  /**
-   * A specialized version of `_.forEachRight` for arrays without support for
-   * iteratee shorthands.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @returns {Array} Returns `array`.
-   */
-  function arrayEachRight(array, iteratee) {
-    var length = array == null ? 0 : array.length;
- 
-    while (length--) {
-      if (iteratee(array[length], length, array) === false) {
-        break;
-      }
-    }
-    return array;
-  }
- 
-  /**
-   * A specialized version of `_.every` for arrays without support for
-   * iteratee shorthands.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} predicate The function invoked per iteration.
-   * @returns {boolean} Returns `true` if all elements pass the predicate check,
-   *  else `false`.
-   */
-  function arrayEvery(array, predicate) {
-    var index = -1,
-        length = array == null ? 0 : array.length;
- 
-    while (++index < length) {
-      if (!predicate(array[index], index, array)) {
-        return false;
-      }
-    }
-    return true;
-  }
- 
-  /**
-   * A specialized version of `_.filter` for arrays without support for
-   * iteratee shorthands.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} predicate The function invoked per iteration.
-   * @returns {Array} Returns the new filtered array.
-   */
-  function arrayFilter(array, predicate) {
-    var index = -1,
-        length = array == null ? 0 : array.length,
-        resIndex = 0,
-        result = [];
- 
-    while (++index < length) {
-      var value = array[index];
-      if (predicate(value, index, array)) {
-        result[resIndex++] = value;
-      }
-    }
-    return result;
-  }
- 
-  /**
-   * A specialized version of `_.includes` for arrays without support for
-   * specifying an index to search from.
-   *
-   * @private
-   * @param {Array} [array] The array to inspect.
-   * @param {*} target The value to search for.
-   * @returns {boolean} Returns `true` if `target` is found, else `false`.
-   */
-  function arrayIncludes(array, value) {
-    var length = array == null ? 0 : array.length;
-    return !!length && baseIndexOf(array, value, 0) > -1;
-  }
- 
-  /**
-   * This function is like `arrayIncludes` except that it accepts a comparator.
-   *
-   * @private
-   * @param {Array} [array] The array to inspect.
-   * @param {*} target The value to search for.
-   * @param {Function} comparator The comparator invoked per element.
-   * @returns {boolean} Returns `true` if `target` is found, else `false`.
-   */
-  function arrayIncludesWith(array, value, comparator) {
-    var index = -1,
-        length = array == null ? 0 : array.length;
- 
-    while (++index < length) {
-      if (comparator(value, array[index])) {
-        return true;
-      }
-    }
-    return false;
-  }
- 
-  /**
-   * A specialized version of `_.map` for arrays without support for iteratee
-   * shorthands.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @returns {Array} Returns the new mapped array.
-   */
-  function arrayMap(array, iteratee) {
-    var index = -1,
-        length = array == null ? 0 : array.length,
-        result = Array(length);
- 
-    while (++index < length) {
-      result[index] = iteratee(array[index], index, array);
-    }
-    return result;
-  }
- 
-  /**
-   * Appends the elements of `values` to `array`.
-   *
-   * @private
-   * @param {Array} array The array to modify.
-   * @param {Array} values The values to append.
-   * @returns {Array} Returns `array`.
-   */
-  function arrayPush(array, values) {
-    var index = -1,
-        length = values.length,
-        offset = array.length;
- 
-    while (++index < length) {
-      array[offset + index] = values[index];
-    }
-    return array;
-  }
- 
-  /**
-   * A specialized version of `_.reduce` for arrays without support for
-   * iteratee shorthands.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @param {*} [accumulator] The initial value.
-   * @param {boolean} [initAccum] Specify using the first element of `array` as
-   *  the initial value.
-   * @returns {*} Returns the accumulated value.
-   */
-  function arrayReduce(array, iteratee, accumulator, initAccum) {
-    var index = -1,
-        length = array == null ? 0 : array.length;
- 
-    if (initAccum && length) {
-      accumulator = array[++index];
-    }
-    while (++index < length) {
-      accumulator = iteratee(accumulator, array[index], index, array);
-    }
-    return accumulator;
-  }
- 
-  /**
-   * A specialized version of `_.reduceRight` for arrays without support for
-   * iteratee shorthands.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @param {*} [accumulator] The initial value.
-   * @param {boolean} [initAccum] Specify using the last element of `array` as
-   *  the initial value.
-   * @returns {*} Returns the accumulated value.
-   */
-  function arrayReduceRight(array, iteratee, accumulator, initAccum) {
-    var length = array == null ? 0 : array.length;
-    if (initAccum && length) {
-      accumulator = array[--length];
-    }
-    while (length--) {
-      accumulator = iteratee(accumulator, array[length], length, array);
-    }
-    return accumulator;
-  }
- 
-  /**
-   * A specialized version of `_.some` for arrays without support for iteratee
-   * shorthands.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} predicate The function invoked per iteration.
-   * @returns {boolean} Returns `true` if any element passes the predicate check,
-   *  else `false`.
-   */
-  function arraySome(array, predicate) {
-    var index = -1,
-        length = array == null ? 0 : array.length;
- 
-    while (++index < length) {
-      if (predicate(array[index], index, array)) {
-        return true;
-      }
-    }
-    return false;
-  }
- 
-  /**
-   * Gets the size of an ASCII `string`.
-   *
-   * @private
-   * @param {string} string The string inspect.
-   * @returns {number} Returns the string size.
-   */
-  var asciiSize = baseProperty('length');
- 
-  /**
-   * Converts an ASCII `string` to an array.
-   *
-   * @private
-   * @param {string} string The string to convert.
-   * @returns {Array} Returns the converted array.
-   */
-  function asciiToArray(string) {
-    return string.split('');
-  }
- 
-  /**
-   * Splits an ASCII `string` into an array of its words.
-   *
-   * @private
-   * @param {string} The string to inspect.
-   * @returns {Array} Returns the words of `string`.
-   */
-  function asciiWords(string) {
-    return string.match(reAsciiWord) || [];
-  }
- 
-  /**
-   * The base implementation of methods like `_.findKey` and `_.findLastKey`,
-   * without support for iteratee shorthands, which iterates over `collection`
-   * using `eachFunc`.
-   *
-   * @private
-   * @param {Array|Object} collection The collection to inspect.
-   * @param {Function} predicate The function invoked per iteration.
-   * @param {Function} eachFunc The function to iterate over `collection`.
-   * @returns {*} Returns the found element or its key, else `undefined`.
-   */
-  function baseFindKey(collection, predicate, eachFunc) {
-    var result;
-    eachFunc(collection, function(value, key, collection) {
-      if (predicate(value, key, collection)) {
-        result = key;
-        return false;
-      }
-    });
-    return result;
-  }
- 
-  /**
-   * The base implementation of `_.findIndex` and `_.findLastIndex` without
-   * support for iteratee shorthands.
-   *
-   * @private
-   * @param {Array} array The array to inspect.
-   * @param {Function} predicate The function invoked per iteration.
-   * @param {number} fromIndex The index to search from.
-   * @param {boolean} [fromRight] Specify iterating from right to left.
-   * @returns {number} Returns the index of the matched value, else `-1`.
-   */
-  function baseFindIndex(array, predicate, fromIndex, fromRight) {
-    var length = array.length,
-        index = fromIndex + (fromRight ? 1 : -1);
- 
-    while ((fromRight ? index-- : ++index < length)) {
-      if (predicate(array[index], index, array)) {
-        return index;
-      }
-    }
-    return -1;
-  }
- 
-  /**
-   * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
-   *
-   * @private
-   * @param {Array} array The array to inspect.
-   * @param {*} value The value to search for.
-   * @param {number} fromIndex The index to search from.
-   * @returns {number} Returns the index of the matched value, else `-1`.
-   */
-  function baseIndexOf(array, value, fromIndex) {
-    return value === value
-      ? strictIndexOf(array, value, fromIndex)
-      : baseFindIndex(array, baseIsNaN, fromIndex);
-  }
- 
-  /**
-   * This function is like `baseIndexOf` except that it accepts a comparator.
-   *
-   * @private
-   * @param {Array} array The array to inspect.
-   * @param {*} value The value to search for.
-   * @param {number} fromIndex The index to search from.
-   * @param {Function} comparator The comparator invoked per element.
-   * @returns {number} Returns the index of the matched value, else `-1`.
-   */
-  function baseIndexOfWith(array, value, fromIndex, comparator) {
-    var index = fromIndex - 1,
-        length = array.length;
- 
-    while (++index < length) {
-      if (comparator(array[index], value)) {
-        return index;
-      }
-    }
-    return -1;
-  }
- 
-  /**
-   * The base implementation of `_.isNaN` without support for number objects.
-   *
-   * @private
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
-   */
-  function baseIsNaN(value) {
-    return value !== value;
-  }
- 
-  /**
-   * The base implementation of `_.mean` and `_.meanBy` without support for
-   * iteratee shorthands.
-   *
-   * @private
-   * @param {Array} array The array to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @returns {number} Returns the mean.
-   */
-  function baseMean(array, iteratee) {
-    var length = array == null ? 0 : array.length;
-    return length ? (baseSum(array, iteratee) / length) : NAN;
-  }
- 
-  /**
-   * The base implementation of `_.property` without support for deep paths.
-   *
-   * @private
-   * @param {string} key The key of the property to get.
-   * @returns {Function} Returns the new accessor function.
-   */
-  function baseProperty(key) {
-    return function(object) {
-      return object == null ? undefined : object[key];
-    };
-  }
- 
-  /**
-   * The base implementation of `_.propertyOf` without support for deep paths.
-   *
-   * @private
-   * @param {Object} object The object to query.
-   * @returns {Function} Returns the new accessor function.
-   */
-  function basePropertyOf(object) {
-    return function(key) {
-      return object == null ? undefined : object[key];
-    };
-  }
- 
-  /**
-   * The base implementation of `_.reduce` and `_.reduceRight`, without support
-   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
-   *
-   * @private
-   * @param {Array|Object} collection The collection to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @param {*} accumulator The initial value.
-   * @param {boolean} initAccum Specify using the first or last element of
-   *  `collection` as the initial value.
-   * @param {Function} eachFunc The function to iterate over `collection`.
-   * @returns {*} Returns the accumulated value.
-   */
-  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
-    eachFunc(collection, function(value, index, collection) {
-      accumulator = initAccum
-        ? (initAccum = false, value)
-        : iteratee(accumulator, value, index, collection);
-    });
-    return accumulator;
-  }
- 
-  /**
-   * The base implementation of `_.sortBy` which uses `comparer` to define the
-   * sort order of `array` and replaces criteria objects with their corresponding
-   * values.
-   *
-   * @private
-   * @param {Array} array The array to sort.
-   * @param {Function} comparer The function to define sort order.
-   * @returns {Array} Returns `array`.
-   */
-  function baseSortBy(array, comparer) {
-    var length = array.length;
- 
-    array.sort(comparer);
-    while (length--) {
-      array[length] = array[length].value;
-    }
-    return array;
-  }
- 
-  /**
-   * The base implementation of `_.sum` and `_.sumBy` without support for
-   * iteratee shorthands.
-   *
-   * @private
-   * @param {Array} array The array to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @returns {number} Returns the sum.
-   */
-  function baseSum(array, iteratee) {
-    var result,
-        index = -1,
-        length = array.length;
- 
-    while (++index < length) {
-      var current = iteratee(array[index]);
-      if (current !== undefined) {
-        result = result === undefined ? current : (result + current);
-      }
-    }
-    return result;
-  }
- 
-  /**
-   * The base implementation of `_.times` without support for iteratee shorthands
-   * or max array length checks.
-   *
-   * @private
-   * @param {number} n The number of times to invoke `iteratee`.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @returns {Array} Returns the array of results.
-   */
-  function baseTimes(n, iteratee) {
-    var index = -1,
-        result = Array(n);
- 
-    while (++index < n) {
-      result[index] = iteratee(index);
-    }
-    return result;
-  }
- 
-  /**
-   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
-   * of key-value pairs for `object` corresponding to the property names of `props`.
-   *
-   * @private
-   * @param {Object} object The object to query.
-   * @param {Array} props The property names to get values for.
-   * @returns {Object} Returns the key-value pairs.
-   */
-  function baseToPairs(object, props) {
-    return arrayMap(props, function(key) {
-      return [key, object[key]];
-    });
-  }
- 
-  /**
-   * The base implementation of `_.unary` without support for storing metadata.
-   *
-   * @private
-   * @param {Function} func The function to cap arguments for.
-   * @returns {Function} Returns the new capped function.
-   */
-  function baseUnary(func) {
-    return function(value) {
-      return func(value);
-    };
-  }
- 
-  /**
-   * The base implementation of `_.values` and `_.valuesIn` which creates an
-   * array of `object` property values corresponding to the property names
-   * of `props`.
-   *
-   * @private
-   * @param {Object} object The object to query.
-   * @param {Array} props The property names to get values for.
-   * @returns {Object} Returns the array of property values.
-   */
-  function baseValues(object, props) {
-    return arrayMap(props, function(key) {
-      return object[key];
-    });
-  }
- 
-  /**
-   * Checks if a `cache` value for `key` exists.
-   *
-   * @private
-   * @param {Object} cache The cache to query.
-   * @param {string} key The key of the entry to check.
-   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
-   */
-  function cacheHas(cache, key) {
-    return cache.has(key);
-  }
- 
-  /**
-   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol
-   * that is not found in the character symbols.
-   *
-   * @private
-   * @param {Array} strSymbols The string symbols to inspect.
-   * @param {Array} chrSymbols The character symbols to find.
-   * @returns {number} Returns the index of the first unmatched string symbol.
-   */
-  function charsStartIndex(strSymbols, chrSymbols) {
-    var index = -1,
-        length = strSymbols.length;
- 
-    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
-    return index;
-  }
- 
-  /**
-   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
-   * that is not found in the character symbols.
-   *
-   * @private
-   * @param {Array} strSymbols The string symbols to inspect.
-   * @param {Array} chrSymbols The character symbols to find.
-   * @returns {number} Returns the index of the last unmatched string symbol.
-   */
-  function charsEndIndex(strSymbols, chrSymbols) {
-    var index = strSymbols.length;
- 
-    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
-    return index;
-  }
- 
-  /**
-   * Gets the number of `placeholder` occurrences in `array`.
-   *
-   * @private
-   * @param {Array} array The array to inspect.
-   * @param {*} placeholder The placeholder to search for.
-   * @returns {number} Returns the placeholder count.
-   */
-  function countHolders(array, placeholder) {
-    var length = array.length,
-        result = 0;
- 
-    while (length--) {
-      if (array[length] === placeholder) {
-        ++result;
-      }
-    }
-    return result;
-  }
- 
-  /**
-   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A
-   * letters to basic Latin letters.
-   *
-   * @private
-   * @param {string} letter The matched letter to deburr.
-   * @returns {string} Returns the deburred letter.
-   */
-  var deburrLetter = basePropertyOf(deburredLetters);
- 
-  /**
-   * Used by `_.escape` to convert characters to HTML entities.
-   *
-   * @private
-   * @param {string} chr The matched character to escape.
-   * @returns {string} Returns the escaped character.
-   */
-  var escapeHtmlChar = basePropertyOf(htmlEscapes);
- 
-  /**
-   * Used by `_.template` to escape characters for inclusion in compiled string literals.
-   *
-   * @private
-   * @param {string} chr The matched character to escape.
-   * @returns {string} Returns the escaped character.
-   */
-  function escapeStringChar(chr) {
-    return '\\' + stringEscapes[chr];
-  }
- 
-  /**
-   * Gets the value at `key` of `object`.
-   *
-   * @private
-   * @param {Object} [object] The object to query.
-   * @param {string} key The key of the property to get.
-   * @returns {*} Returns the property value.
-   */
-  function getValue(object, key) {
-    return object == null ? undefined : object[key];
-  }
- 
-  /**
-   * Checks if `string` contains Unicode symbols.
-   *
-   * @private
-   * @param {string} string The string to inspect.
-   * @returns {boolean} Returns `true` if a symbol is found, else `false`.
-   */
-  function hasUnicode(string) {
-    return reHasUnicode.test(string);
-  }
- 
-  /**
-   * Checks if `string` contains a word composed of Unicode symbols.
-   *
-   * @private
-   * @param {string} string The string to inspect.
-   * @returns {boolean} Returns `true` if a word is found, else `false`.
-   */
-  function hasUnicodeWord(string) {
-    return reHasUnicodeWord.test(string);
-  }
- 
-  /**
-   * Converts `iterator` to an array.
-   *
-   * @private
-   * @param {Object} iterator The iterator to convert.
-   * @returns {Array} Returns the converted array.
-   */
-  function iteratorToArray(iterator) {
-    var data,
-        result = [];
- 
-    while (!(data = iterator.next()).done) {
-      result.push(data.value);
-    }
-    return result;
-  }
- 
-  /**
-   * Converts `map` to its key-value pairs.
-   *
-   * @private
-   * @param {Object} map The map to convert.
-   * @returns {Array} Returns the key-value pairs.
-   */
-  function mapToArray(map) {
-    var index = -1,
-        result = Array(map.size);
- 
-    map.forEach(function(value, key) {
-      result[++index] = [key, value];
-    });
-    return result;
-  }
- 
-  /**
-   * Creates a unary function that invokes `func` with its argument transformed.
-   *
-   * @private
-   * @param {Function} func The function to wrap.
-   * @param {Function} transform The argument transform.
-   * @returns {Function} Returns the new function.
-   */
-  function overArg(func, transform) {
-    return function(arg) {
-      return func(transform(arg));
-    };
-  }
- 
-  /**
-   * Replaces all `placeholder` elements in `array` with an internal placeholder
-   * and returns an array of their indexes.
-   *
-   * @private
-   * @param {Array} array The array to modify.
-   * @param {*} placeholder The placeholder to replace.
-   * @returns {Array} Returns the new array of placeholder indexes.
-   */
-  function replaceHolders(array, placeholder) {
-    var index = -1,
-        length = array.length,
-        resIndex = 0,
-        result = [];
- 
-    while (++index < length) {
-      var value = array[index];
-      if (value === placeholder || value === PLACEHOLDER) {
-        array[index] = PLACEHOLDER;
-        result[resIndex++] = index;
-      }
-    }
-    return result;
-  }
- 
-  /**
-   * Converts `set` to an array of its values.
-   *
-   * @private
-   * @param {Object} set The set to convert.
-   * @returns {Array} Returns the values.
-   */
-  function setToArray(set) {
-    var index = -1,
-        result = Array(set.size);
- 
-    set.forEach(function(value) {
-      result[++index] = value;
-    });
-    return result;
-  }
- 
-  /**
-   * Converts `set` to its value-value pairs.
-   *
-   * @private
-   * @param {Object} set The set to convert.
-   * @returns {Array} Returns the value-value pairs.
-   */
-  function setToPairs(set) {
-    var index = -1,
-        result = Array(set.size);
- 
-    set.forEach(function(value) {
-      result[++index] = [value, value];
-    });
-    return result;
-  }
- 
-  /**
-   * A specialized version of `_.indexOf` which performs strict equality
-   * comparisons of values, i.e. `===`.
-   *
-   * @private
-   * @param {Array} array The array to inspect.
-   * @param {*} value The value to search for.
-   * @param {number} fromIndex The index to search from.
-   * @returns {number} Returns the index of the matched value, else `-1`.
-   */
-  function strictIndexOf(array, value, fromIndex) {
-    var index = fromIndex - 1,
-        length = array.length;
- 
-    while (++index < length) {
-      if (array[index] === value) {
-        return index;
-      }
-    }
-    return -1;
-  }
- 
-  /**
-   * A specialized version of `_.lastIndexOf` which performs strict equality
-   * comparisons of values, i.e. `===`.
-   *
-   * @private
-   * @param {Array} array The array to inspect.
-   * @param {*} value The value to search for.
-   * @param {number} fromIndex The index to search from.
-   * @returns {number} Returns the index of the matched value, else `-1`.
-   */
-  function strictLastIndexOf(array, value, fromIndex) {
-    var index = fromIndex + 1;
-    while (index--) {
-      if (array[index] === value) {
-        return index;
-      }
-    }
-    return index;
-  }
- 
-  /**
-   * Gets the number of symbols in `string`.
-   *
-   * @private
-   * @param {string} string The string to inspect.
-   * @returns {number} Returns the string size.
-   */
-  function stringSize(string) {
-    return hasUnicode(string)
-      ? unicodeSize(string)
-      : asciiSize(string);
-  }
- 
-  /**
-   * Converts `string` to an array.
-   *
-   * @private
-   * @param {string} string The string to convert.
-   * @returns {Array} Returns the converted array.
-   */
-  function stringToArray(string) {
-    return hasUnicode(string)
-      ? unicodeToArray(string)
-      : asciiToArray(string);
-  }
- 
-  /**
-   * Used by `_.unescape` to convert HTML entities to characters.
-   *
-   * @private
-   * @param {string} chr The matched character to unescape.
-   * @returns {string} Returns the unescaped character.
-   */
-  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
- 
-  /**
-   * Gets the size of a Unicode `string`.
-   *
-   * @private
-   * @param {string} string The string inspect.
-   * @returns {number} Returns the string size.
-   */
-  function unicodeSize(string) {
-    var result = reUnicode.lastIndex = 0;
-    while (reUnicode.test(string)) {
-      ++result;
-    }
-    return result;
-  }
- 
-  /**
-   * Converts a Unicode `string` to an array.
-   *
-   * @private
-   * @param {string} string The string to convert.
-   * @returns {Array} Returns the converted array.
-   */
-  function unicodeToArray(string) {
-    return string.match(reUnicode) || [];
-  }
- 
-  /**
-   * Splits a Unicode `string` into an array of its words.
-   *
-   * @private
-   * @param {string} The string to inspect.
-   * @returns {Array} Returns the words of `string`.
-   */
-  function unicodeWords(string) {
-    return string.match(reUnicodeWord) || [];
-  }
- 
-  /*--------------------------------------------------------------------------*/
- 
-  /**
-   * Create a new pristine `lodash` function using the `context` object.
-   *
-   * @static
-   * @memberOf _
-   * @since 1.1.0
-   * @category Util
-   * @param {Object} [context=root] The context object.
-   * @returns {Function} Returns a new `lodash` function.
-   * @example
-   *
-   * _.mixin({ 'foo': _.constant('foo') });
-   *
-   * var lodash = _.runInContext();
-   * lodash.mixin({ 'bar': lodash.constant('bar') });
-   *
-   * _.isFunction(_.foo);
-   * // => true
-   * _.isFunction(_.bar);
-   * // => false
-   *
-   * lodash.isFunction(lodash.foo);
-   * // => false
-   * lodash.isFunction(lodash.bar);
-   * // => true
-   *
-   * // Create a suped-up `defer` in Node.js.
-   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
-   */
-  var runInContext = (function runInContext(context) {
-    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
- 
-    /** Built-in constructor references. */
-    var Array = context.Array,
-        Date = context.Date,
-        Error = context.Error,
-        Function = context.Function,
-        Math = context.Math,
-        Object = context.Object,
-        RegExp = context.RegExp,
-        String = context.String,
-        TypeError = context.TypeError;
- 
-    /** Used for built-in method references. */
-    var arrayProto = Array.prototype,
-        funcProto = Function.prototype,
-        objectProto = Object.prototype;
- 
-    /** Used to detect overreaching core-js shims. */
-    var coreJsData = context['__core-js_shared__'];
- 
-    /** Used to resolve the decompiled source of functions. */
-    var funcToString = funcProto.toString;
- 
-    /** Used to check objects for own properties. */
-    var hasOwnProperty = objectProto.hasOwnProperty;
- 
-    /** Used to generate unique IDs. */
-    var idCounter = 0;
- 
-    /** Used to detect methods masquerading as native. */
-    var maskSrcKey = (function() {
-      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
-      return uid ? ('Symbol(src)_1.' + uid) : '';
-    }());
- 
-    /**
-     * Used to resolve the
-     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
-     * of values.
-     */
-    var nativeObjectToString = objectProto.toString;
- 
-    /** Used to infer the `Object` constructor. */
-    var objectCtorString = funcToString.call(Object);
- 
-    /** Used to restore the original `_` reference in `_.noConflict`. */
-    var oldDash = root._;
- 
-    /** Used to detect if a method is native. */
-    var reIsNative = RegExp('^' +
-      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
-      .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-    );
- 
-    /** Built-in value references. */
-    var Buffer = moduleExports ? context.Buffer : undefined,
-        Symbol = context.Symbol,
-        Uint8Array = context.Uint8Array,
-        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,
-        getPrototype = overArg(Object.getPrototypeOf, Object),
-        objectCreate = Object.create,
-        propertyIsEnumerable = objectProto.propertyIsEnumerable,
-        splice = arrayProto.splice,
-        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,
-        symIterator = Symbol ? Symbol.iterator : undefined,
-        symToStringTag = Symbol ? Symbol.toStringTag : undefined;
- 
-    var defineProperty = (function() {
-      try {
-        var func = getNative(Object, 'defineProperty');
-        func({}, '', {});
-        return func;
-      } catch (e) {}
-    }());
- 
-    /** Mocked built-ins. */
-    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,
-        ctxNow = Date && Date.now !== root.Date.now && Date.now,
-        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
- 
-    /* Built-in method references for those with the same name as other `lodash` methods. */
-    var nativeCeil = Math.ceil,
-        nativeFloor = Math.floor,
-        nativeGetSymbols = Object.getOwnPropertySymbols,
-        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
-        nativeIsFinite = context.isFinite,
-        nativeJoin = arrayProto.join,
-        nativeKeys = overArg(Object.keys, Object),
-        nativeMax = Math.max,
-        nativeMin = Math.min,
-        nativeNow = Date.now,
-        nativeParseInt = context.parseInt,
-        nativeRandom = Math.random,
-        nativeReverse = arrayProto.reverse;
- 
-    /* Built-in method references that are verified to be native. */
-    var DataView = getNative(context, 'DataView'),
-        Map = getNative(context, 'Map'),
-        Promise = getNative(context, 'Promise'),
-        Set = getNative(context, 'Set'),
-        WeakMap = getNative(context, 'WeakMap'),
-        nativeCreate = getNative(Object, 'create');
- 
-    /** Used to store function metadata. */
-    var metaMap = WeakMap && new WeakMap;
- 
-    /** Used to lookup unminified function names. */
-    var realNames = {};
- 
-    /** Used to detect maps, sets, and weakmaps. */
-    var dataViewCtorString = toSource(DataView),
-        mapCtorString = toSource(Map),
-        promiseCtorString = toSource(Promise),
-        setCtorString = toSource(Set),
-        weakMapCtorString = toSource(WeakMap);
- 
-    /** Used to convert symbols to primitives and strings. */
-    var symbolProto = Symbol ? Symbol.prototype : undefined,
-        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,
-        symbolToString = symbolProto ? symbolProto.toString : undefined;
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * Creates a `lodash` object which wraps `value` to enable implicit method
-     * chain sequences. Methods that operate on and return arrays, collections,
-     * and functions can be chained together. Methods that retrieve a single value
-     * or may return a primitive value will automatically end the chain sequence
-     * and return the unwrapped value. Otherwise, the value must be unwrapped
-     * with `_#value`.
-     *
-     * Explicit chain sequences, which must be unwrapped with `_#value`, may be
-     * enabled using `_.chain`.
-     *
-     * The execution of chained methods is lazy, that is, it's deferred until
-     * `_#value` is implicitly or explicitly called.
-     *
-     * Lazy evaluation allows several methods to support shortcut fusion.
-     * Shortcut fusion is an optimization to merge iteratee calls; this avoids
-     * the creation of intermediate arrays and can greatly reduce the number of
-     * iteratee executions. Sections of a chain sequence qualify for shortcut
-     * fusion if the section is applied to an array and iteratees accept only
-     * one argument. The heuristic for whether a section qualifies for shortcut
-     * fusion is subject to change.
-     *
-     * Chaining is supported in custom builds as long as the `_#value` method is
-     * directly or indirectly included in the build.
-     *
-     * In addition to lodash methods, wrappers have `Array` and `String` methods.
-     *
-     * The wrapper `Array` methods are:
-     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
-     *
-     * The wrapper `String` methods are:
-     * `replace` and `split`
-     *
-     * The wrapper methods that support shortcut fusion are:
-     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
-     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
-     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
-     *
-     * The chainable wrapper methods are:
-     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
-     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
-     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
-     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
-     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
-     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
-     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
-     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
-     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
-     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
-     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
-     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
-     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
-     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
-     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
-     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
-     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
-     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
-     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
-     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
-     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
-     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
-     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
-     * `zipObject`, `zipObjectDeep`, and `zipWith`
-     *
-     * The wrapper methods that are **not** chainable by default are:
-     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
-     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
-     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
-     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
-     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
-     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
-     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
-     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
-     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
-     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
-     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
-     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
-     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
-     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
-     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
-     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
-     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
-     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
-     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
-     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
-     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
-     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
-     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
-     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
-     * `upperFirst`, `value`, and `words`
-     *
-     * @name _
-     * @constructor
-     * @category Seq
-     * @param {*} value The value to wrap in a `lodash` instance.
-     * @returns {Object} Returns the new `lodash` wrapper instance.
-     * @example
-     *
-     * function square(n) {
-     *   return n * n;
-     * }
-     *
-     * var wrapped = _([1, 2, 3]);
-     *
-     * // Returns an unwrapped value.
-     * wrapped.reduce(_.add);
-     * // => 6
-     *
-     * // Returns a wrapped value.
-     * var squares = wrapped.map(square);
-     *
-     * _.isArray(squares);
-     * // => false
-     *
-     * _.isArray(squares.value());
-     * // => true
-     */
-    function lodash(value) {
-      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
-        if (value instanceof LodashWrapper) {
-          return value;
-        }
-        if (hasOwnProperty.call(value, '__wrapped__')) {
-          return wrapperClone(value);
-        }
-      }
-      return new LodashWrapper(value);
-    }
- 
-    /**
-     * The base implementation of `_.create` without support for assigning
-     * properties to the created object.
-     *
-     * @private
-     * @param {Object} proto The object to inherit from.
-     * @returns {Object} Returns the new object.
-     */
-    var baseCreate = (function() {
-      function object() {}
-      return function(proto) {
-        if (!isObject(proto)) {
-          return {};
-        }
-        if (objectCreate) {
-          return objectCreate(proto);
-        }
-        object.prototype = proto;
-        var result = new object;
-        object.prototype = undefined;
-        return result;
-      };
-    }());
- 
-    /**
-     * The function whose prototype chain sequence wrappers inherit from.
-     *
-     * @private
-     */
-    function baseLodash() {
-      // No operation performed.
-    }
- 
-    /**
-     * The base constructor for creating `lodash` wrapper objects.
-     *
-     * @private
-     * @param {*} value The value to wrap.
-     * @param {boolean} [chainAll] Enable explicit method chain sequences.
-     */
-    function LodashWrapper(value, chainAll) {
-      this.__wrapped__ = value;
-      this.__actions__ = [];
-      this.__chain__ = !!chainAll;
-      this.__index__ = 0;
-      this.__values__ = undefined;
-    }
- 
-    /**
-     * By default, the template delimiters used by lodash are like those in
-     * embedded Ruby (ERB) as well as ES2015 template strings. Change the
-     * following template settings to use alternative delimiters.
-     *
-     * @static
-     * @memberOf _
-     * @type {Object}
-     */
-    lodash.templateSettings = {
- 
-      /**
-       * Used to detect `data` property values to be HTML-escaped.
-       *
-       * @memberOf _.templateSettings
-       * @type {RegExp}
-       */
-      'escape': reEscape,
- 
-      /**
-       * Used to detect code to be evaluated.
-       *
-       * @memberOf _.templateSettings
-       * @type {RegExp}
-       */
-      'evaluate': reEvaluate,
- 
-      /**
-       * Used to detect `data` property values to inject.
-       *
-       * @memberOf _.templateSettings
-       * @type {RegExp}
-       */
-      'interpolate': reInterpolate,
- 
-      /**
-       * Used to reference the data object in the template text.
-       *
-       * @memberOf _.templateSettings
-       * @type {string}
-       */
-      'variable': '',
- 
-      /**
-       * Used to import variables into the compiled template.
-       *
-       * @memberOf _.templateSettings
-       * @type {Object}
-       */
-      'imports': {
- 
-        /**
-         * A reference to the `lodash` function.
-         *
-         * @memberOf _.templateSettings.imports
-         * @type {Function}
-         */
-        '_': lodash
-      }
-    };
- 
-    // Ensure wrappers are instances of `baseLodash`.
-    lodash.prototype = baseLodash.prototype;
-    lodash.prototype.constructor = lodash;
- 
-    LodashWrapper.prototype = baseCreate(baseLodash.prototype);
-    LodashWrapper.prototype.constructor = LodashWrapper;
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
-     *
-     * @private
-     * @constructor
-     * @param {*} value The value to wrap.
-     */
-    function LazyWrapper(value) {
-      this.__wrapped__ = value;
-      this.__actions__ = [];
-      this.__dir__ = 1;
-      this.__filtered__ = false;
-      this.__iteratees__ = [];
-      this.__takeCount__ = MAX_ARRAY_LENGTH;
-      this.__views__ = [];
-    }
- 
-    /**
-     * Creates a clone of the lazy wrapper object.
-     *
-     * @private
-     * @name clone
-     * @memberOf LazyWrapper
-     * @returns {Object} Returns the cloned `LazyWrapper` object.
-     */
-    function lazyClone() {
-      var result = new LazyWrapper(this.__wrapped__);
-      result.__actions__ = copyArray(this.__actions__);
-      result.__dir__ = this.__dir__;
-      result.__filtered__ = this.__filtered__;
-      result.__iteratees__ = copyArray(this.__iteratees__);
-      result.__takeCount__ = this.__takeCount__;
-      result.__views__ = copyArray(this.__views__);
-      return result;
-    }
- 
-    /**
-     * Reverses the direction of lazy iteration.
-     *
-     * @private
-     * @name reverse
-     * @memberOf LazyWrapper
-     * @returns {Object} Returns the new reversed `LazyWrapper` object.
-     */
-    function lazyReverse() {
-      if (this.__filtered__) {
-        var result = new LazyWrapper(this);
-        result.__dir__ = -1;
-        result.__filtered__ = true;
-      } else {
-        result = this.clone();
-        result.__dir__ *= -1;
-      }
-      return result;
-    }
- 
-    /**
-     * Extracts the unwrapped value from its lazy wrapper.
-     *
-     * @private
-     * @name value
-     * @memberOf LazyWrapper
-     * @returns {*} Returns the unwrapped value.
-     */
-    function lazyValue() {
-      var array = this.__wrapped__.value(),
-          dir = this.__dir__,
-          isArr = isArray(array),
-          isRight = dir < 0,
-          arrLength = isArr ? array.length : 0,
-          view = getView(0, arrLength, this.__views__),
-          start = view.start,
-          end = view.end,
-          length = end - start,
-          index = isRight ? end : (start - 1),
-          iteratees = this.__iteratees__,
-          iterLength = iteratees.length,
-          resIndex = 0,
-          takeCount = nativeMin(length, this.__takeCount__);
- 
-      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {
-        return baseWrapperValue(array, this.__actions__);
-      }
-      var result = [];
- 
-      outer:
-      while (length-- && resIndex < takeCount) {
-        index += dir;
- 
-        var iterIndex = -1,
-            value = array[index];
- 
-        while (++iterIndex < iterLength) {
-          var data = iteratees[iterIndex],
-              iteratee = data.iteratee,
-              type = data.type,
-              computed = iteratee(value);
- 
-          if (type == LAZY_MAP_FLAG) {
-            value = computed;
-          } else if (!computed) {
-            if (type == LAZY_FILTER_FLAG) {
-              continue outer;
-            } else {
-              break outer;
-            }
-          }
-        }
-        result[resIndex++] = value;
-      }
-      return result;
-    }
- 
-    // Ensure `LazyWrapper` is an instance of `baseLodash`.
-    LazyWrapper.prototype = baseCreate(baseLodash.prototype);
-    LazyWrapper.prototype.constructor = LazyWrapper;
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * Creates a hash object.
-     *
-     * @private
-     * @constructor
-     * @param {Array} [entries] The key-value pairs to cache.
-     */
-    function Hash(entries) {
-      var index = -1,
-          length = entries == null ? 0 : entries.length;
- 
-      this.clear();
-      while (++index < length) {
-        var entry = entries[index];
-        this.set(entry[0], entry[1]);
-      }
-    }
- 
-    /**
-     * Removes all key-value entries from the hash.
-     *
-     * @private
-     * @name clear
-     * @memberOf Hash
-     */
-    function hashClear() {
-      this.__data__ = nativeCreate ? nativeCreate(null) : {};
-      this.size = 0;
-    }
- 
-    /**
-     * Removes `key` and its value from the hash.
-     *
-     * @private
-     * @name delete
-     * @memberOf Hash
-     * @param {Object} hash The hash to modify.
-     * @param {string} key The key of the value to remove.
-     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
-     */
-    function hashDelete(key) {
-      var result = this.has(key) && delete this.__data__[key];
-      this.size -= result ? 1 : 0;
-      return result;
-    }
- 
-    /**
-     * Gets the hash value for `key`.
-     *
-     * @private
-     * @name get
-     * @memberOf Hash
-     * @param {string} key The key of the value to get.
-     * @returns {*} Returns the entry value.
-     */
-    function hashGet(key) {
-      var data = this.__data__;
-      if (nativeCreate) {
-        var result = data[key];
-        return result === HASH_UNDEFINED ? undefined : result;
-      }
-      return hasOwnProperty.call(data, key) ? data[key] : undefined;
-    }
- 
-    /**
-     * Checks if a hash value for `key` exists.
-     *
-     * @private
-     * @name has
-     * @memberOf Hash
-     * @param {string} key The key of the entry to check.
-     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
-     */
-    function hashHas(key) {
-      var data = this.__data__;
-      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
-    }
- 
-    /**
-     * Sets the hash `key` to `value`.
-     *
-     * @private
-     * @name set
-     * @memberOf Hash
-     * @param {string} key The key of the value to set.
-     * @param {*} value The value to set.
-     * @returns {Object} Returns the hash instance.
-     */
-    function hashSet(key, value) {
-      var data = this.__data__;
-      this.size += this.has(key) ? 0 : 1;
-      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
-      return this;
-    }
- 
-    // Add methods to `Hash`.
-    Hash.prototype.clear = hashClear;
-    Hash.prototype['delete'] = hashDelete;
-    Hash.prototype.get = hashGet;
-    Hash.prototype.has = hashHas;
-    Hash.prototype.set = hashSet;
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * Creates an list cache object.
-     *
-     * @private
-     * @constructor
-     * @param {Array} [entries] The key-value pairs to cache.
-     */
-    function ListCache(entries) {
-      var index = -1,
-          length = entries == null ? 0 : entries.length;
- 
-      this.clear();
-      while (++index < length) {
-        var entry = entries[index];
-        this.set(entry[0], entry[1]);
-      }
-    }
- 
-    /**
-     * Removes all key-value entries from the list cache.
-     *
-     * @private
-     * @name clear
-     * @memberOf ListCache
-     */
-    function listCacheClear() {
-      this.__data__ = [];
-      this.size = 0;
-    }
- 
-    /**
-     * Removes `key` and its value from the list cache.
-     *
-     * @private
-     * @name delete
-     * @memberOf ListCache
-     * @param {string} key The key of the value to remove.
-     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
-     */
-    function listCacheDelete(key) {
-      var data = this.__data__,
-          index = assocIndexOf(data, key);
- 
-      if (index < 0) {
-        return false;
-      }
-      var lastIndex = data.length - 1;
-      if (index == lastIndex) {
-        data.pop();
-      } else {
-        splice.call(data, index, 1);
-      }
-      --this.size;
-      return true;
-    }
- 
-    /**
-     * Gets the list cache value for `key`.
-     *
-     * @private
-     * @name get
-     * @memberOf ListCache
-     * @param {string} key The key of the value to get.
-     * @returns {*} Returns the entry value.
-     */
-    function listCacheGet(key) {
-      var data = this.__data__,
-          index = assocIndexOf(data, key);
- 
-      return index < 0 ? undefined : data[index][1];
-    }
- 
-    /**
-     * Checks if a list cache value for `key` exists.
-     *
-     * @private
-     * @name has
-     * @memberOf ListCache
-     * @param {string} key The key of the entry to check.
-     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
-     */
-    function listCacheHas(key) {
-      return assocIndexOf(this.__data__, key) > -1;
-    }
- 
-    /**
-     * Sets the list cache `key` to `value`.
-     *
-     * @private
-     * @name set
-     * @memberOf ListCache
-     * @param {string} key The key of the value to set.
-     * @param {*} value The value to set.
-     * @returns {Object} Returns the list cache instance.
-     */
-    function listCacheSet(key, value) {
-      var data = this.__data__,
-          index = assocIndexOf(data, key);
- 
-      if (index < 0) {
-        ++this.size;
-        data.push([key, value]);
-      } else {
-        data[index][1] = value;
-      }
-      return this;
-    }
- 
-    // Add methods to `ListCache`.
-    ListCache.prototype.clear = listCacheClear;
-    ListCache.prototype['delete'] = listCacheDelete;
-    ListCache.prototype.get = listCacheGet;
-    ListCache.prototype.has = listCacheHas;
-    ListCache.prototype.set = listCacheSet;
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * Creates a map cache object to store key-value pairs.
-     *
-     * @private
-     * @constructor
-     * @param {Array} [entries] The key-value pairs to cache.
-     */
-    function MapCache(entries) {
-      var index = -1,
-          length = entries == null ? 0 : entries.length;
- 
-      this.clear();
-      while (++index < length) {
-        var entry = entries[index];
-        this.set(entry[0], entry[1]);
-      }
-    }
- 
-    /**
-     * Removes all key-value entries from the map.
-     *
-     * @private
-     * @name clear
-     * @memberOf MapCache
-     */
-    function mapCacheClear() {
-      this.size = 0;
-      this.__data__ = {
-        'hash': new Hash,
-        'map': new (Map || ListCache),
-        'string': new Hash
-      };
-    }
- 
-    /**
-     * Removes `key` and its value from the map.
-     *
-     * @private
-     * @name delete
-     * @memberOf MapCache
-     * @param {string} key The key of the value to remove.
-     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
-     */
-    function mapCacheDelete(key) {
-      var result = getMapData(this, key)['delete'](key);
-      this.size -= result ? 1 : 0;
-      return result;
-    }
- 
-    /**
-     * Gets the map value for `key`.
-     *
-     * @private
-     * @name get
-     * @memberOf MapCache
-     * @param {string} key The key of the value to get.
-     * @returns {*} Returns the entry value.
-     */
-    function mapCacheGet(key) {
-      return getMapData(this, key).get(key);
-    }
- 
-    /**
-     * Checks if a map value for `key` exists.
-     *
-     * @private
-     * @name has
-     * @memberOf MapCache
-     * @param {string} key The key of the entry to check.
-     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
-     */
-    function mapCacheHas(key) {
-      return getMapData(this, key).has(key);
-    }
- 
-    /**
-     * Sets the map `key` to `value`.
-     *
-     * @private
-     * @name set
-     * @memberOf MapCache
-     * @param {string} key The key of the value to set.
-     * @param {*} value The value to set.
-     * @returns {Object} Returns the map cache instance.
-     */
-    function mapCacheSet(key, value) {
-      var data = getMapData(this, key),
-          size = data.size;
- 
-      data.set(key, value);
-      this.size += data.size == size ? 0 : 1;
-      return this;
-    }
- 
-    // Add methods to `MapCache`.
-    MapCache.prototype.clear = mapCacheClear;
-    MapCache.prototype['delete'] = mapCacheDelete;
-    MapCache.prototype.get = mapCacheGet;
-    MapCache.prototype.has = mapCacheHas;
-    MapCache.prototype.set = mapCacheSet;
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     *
-     * Creates an array cache object to store unique values.
-     *
-     * @private
-     * @constructor
-     * @param {Array} [values] The values to cache.
-     */
-    function SetCache(values) {
-      var index = -1,
-          length = values == null ? 0 : values.length;
- 
-      this.__data__ = new MapCache;
-      while (++index < length) {
-        this.add(values[index]);
-      }
-    }
- 
-    /**
-     * Adds `value` to the array cache.
-     *
-     * @private
-     * @name add
-     * @memberOf SetCache
-     * @alias push
-     * @param {*} value The value to cache.
-     * @returns {Object} Returns the cache instance.
-     */
-    function setCacheAdd(value) {
-      this.__data__.set(value, HASH_UNDEFINED);
-      return this;
-    }
- 
-    /**
-     * Checks if `value` is in the array cache.
-     *
-     * @private
-     * @name has
-     * @memberOf SetCache
-     * @param {*} value The value to search for.
-     * @returns {number} Returns `true` if `value` is found, else `false`.
-     */
-    function setCacheHas(value) {
-      return this.__data__.has(value);
-    }
- 
-    // Add methods to `SetCache`.
-    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
-    SetCache.prototype.has = setCacheHas;
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * Creates a stack cache object to store key-value pairs.
-     *
-     * @private
-     * @constructor
-     * @param {Array} [entries] The key-value pairs to cache.
-     */
-    function Stack(entries) {
-      var data = this.__data__ = new ListCache(entries);
-      this.size = data.size;
-    }
- 
-    /**
-     * Removes all key-value entries from the stack.
-     *
-     * @private
-     * @name clear
-     * @memberOf Stack
-     */
-    function stackClear() {
-      this.__data__ = new ListCache;
-      this.size = 0;
-    }
- 
-    /**
-     * Removes `key` and its value from the stack.
-     *
-     * @private
-     * @name delete
-     * @memberOf Stack
-     * @param {string} key The key of the value to remove.
-     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
-     */
-    function stackDelete(key) {
-      var data = this.__data__,
-          result = data['delete'](key);
- 
-      this.size = data.size;
-      return result;
-    }
- 
-    /**
-     * Gets the stack value for `key`.
-     *
-     * @private
-     * @name get
-     * @memberOf Stack
-     * @param {string} key The key of the value to get.
-     * @returns {*} Returns the entry value.
-     */
-    function stackGet(key) {
-      return this.__data__.get(key);
-    }
- 
-    /**
-     * Checks if a stack value for `key` exists.
-     *
-     * @private
-     * @name has
-     * @memberOf Stack
-     * @param {string} key The key of the entry to check.
-     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
-     */
-    function stackHas(key) {
-      return this.__data__.has(key);
-    }
- 
-    /**
-     * Sets the stack `key` to `value`.
-     *
-     * @private
-     * @name set
-     * @memberOf Stack
-     * @param {string} key The key of the value to set.
-     * @param {*} value The value to set.
-     * @returns {Object} Returns the stack cache instance.
-     */
-    function stackSet(key, value) {
-      var data = this.__data__;
-      if (data instanceof ListCache) {
-        var pairs = data.__data__;
-        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
-          pairs.push([key, value]);
-          this.size = ++data.size;
-          return this;
-        }
-        data = this.__data__ = new MapCache(pairs);
-      }
-      data.set(key, value);
-      this.size = data.size;
-      return this;
-    }
- 
-    // Add methods to `Stack`.
-    Stack.prototype.clear = stackClear;
-    Stack.prototype['delete'] = stackDelete;
-    Stack.prototype.get = stackGet;
-    Stack.prototype.has = stackHas;
-    Stack.prototype.set = stackSet;
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * Creates an array of the enumerable property names of the array-like `value`.
-     *
-     * @private
-     * @param {*} value The value to query.
-     * @param {boolean} inherited Specify returning inherited property names.
-     * @returns {Array} Returns the array of property names.
-     */
-    function arrayLikeKeys(value, inherited) {
-      var isArr = isArray(value),
-          isArg = !isArr && isArguments(value),
-          isBuff = !isArr && !isArg && isBuffer(value),
-          isType = !isArr && !isArg && !isBuff && isTypedArray(value),
-          skipIndexes = isArr || isArg || isBuff || isType,
-          result = skipIndexes ? baseTimes(value.length, String) : [],
-          length = result.length;
- 
-      for (var key in value) {
-        if ((inherited || hasOwnProperty.call(value, key)) &&
-            !(skipIndexes && (
-               // Safari 9 has enumerable `arguments.length` in strict mode.
-               key == 'length' ||
-               // Node.js 0.10 has enumerable non-index properties on buffers.
-               (isBuff && (key == 'offset' || key == 'parent')) ||
-               // PhantomJS 2 has enumerable non-index properties on typed arrays.
-               (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
-               // Skip index properties.
-               isIndex(key, length)
-            ))) {
-          result.push(key);
-        }
-      }
-      return result;
-    }
- 
-    /**
-     * A specialized version of `_.sample` for arrays.
-     *
-     * @private
-     * @param {Array} array The array to sample.
-     * @returns {*} Returns the random element.
-     */
-    function arraySample(array) {
-      var length = array.length;
-      return length ? array[baseRandom(0, length - 1)] : undefined;
-    }
- 
-    /**
-     * A specialized version of `_.sampleSize` for arrays.
-     *
-     * @private
-     * @param {Array} array The array to sample.
-     * @param {number} n The number of elements to sample.
-     * @returns {Array} Returns the random elements.
-     */
-    function arraySampleSize(array, n) {
-      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
-    }
- 
-    /**
-     * A specialized version of `_.shuffle` for arrays.
-     *
-     * @private
-     * @param {Array} array The array to shuffle.
-     * @returns {Array} Returns the new shuffled array.
-     */
-    function arrayShuffle(array) {
-      return shuffleSelf(copyArray(array));
-    }
- 
-    /**
-     * This function is like `assignValue` except that it doesn't assign
-     * `undefined` values.
-     *
-     * @private
-     * @param {Object} object The object to modify.
-     * @param {string} key The key of the property to assign.
-     * @param {*} value The value to assign.
-     */
-    function assignMergeValue(object, key, value) {
-      if ((value !== undefined && !eq(object[key], value)) ||
-          (value === undefined && !(key in object))) {
-        baseAssignValue(object, key, value);
-      }
-    }
- 
-    /**
-     * Assigns `value` to `key` of `object` if the existing value is not equivalent
-     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * for equality comparisons.
-     *
-     * @private
-     * @param {Object} object The object to modify.
-     * @param {string} key The key of the property to assign.
-     * @param {*} value The value to assign.
-     */
-    function assignValue(object, key, value) {
-      var objValue = object[key];
-      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
-          (value === undefined && !(key in object))) {
-        baseAssignValue(object, key, value);
-      }
-    }
- 
-    /**
-     * Gets the index at which the `key` is found in `array` of key-value pairs.
-     *
-     * @private
-     * @param {Array} array The array to inspect.
-     * @param {*} key The key to search for.
-     * @returns {number} Returns the index of the matched value, else `-1`.
-     */
-    function assocIndexOf(array, key) {
-      var length = array.length;
-      while (length--) {
-        if (eq(array[length][0], key)) {
-          return length;
-        }
-      }
-      return -1;
-    }
- 
-    /**
-     * Aggregates elements of `collection` on `accumulator` with keys transformed
-     * by `iteratee` and values set by `setter`.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} setter The function to set `accumulator` values.
-     * @param {Function} iteratee The iteratee to transform keys.
-     * @param {Object} accumulator The initial aggregated object.
-     * @returns {Function} Returns `accumulator`.
-     */
-    function baseAggregator(collection, setter, iteratee, accumulator) {
-      baseEach(collection, function(value, key, collection) {
-        setter(accumulator, value, iteratee(value), collection);
-      });
-      return accumulator;
-    }
- 
-    /**
-     * The base implementation of `_.assign` without support for multiple sources
-     * or `customizer` functions.
-     *
-     * @private
-     * @param {Object} object The destination object.
-     * @param {Object} source The source object.
-     * @returns {Object} Returns `object`.
-     */
-    function baseAssign(object, source) {
-      return object && copyObject(source, keys(source), object);
-    }
- 
-    /**
-     * The base implementation of `_.assignIn` without support for multiple sources
-     * or `customizer` functions.
-     *
-     * @private
-     * @param {Object} object The destination object.
-     * @param {Object} source The source object.
-     * @returns {Object} Returns `object`.
-     */
-    function baseAssignIn(object, source) {
-      return object && copyObject(source, keysIn(source), object);
-    }
- 
-    /**
-     * The base implementation of `assignValue` and `assignMergeValue` without
-     * value checks.
-     *
-     * @private
-     * @param {Object} object The object to modify.
-     * @param {string} key The key of the property to assign.
-     * @param {*} value The value to assign.
-     */
-    function baseAssignValue(object, key, value) {
-      if (key == '__proto__' && defineProperty) {
-        defineProperty(object, key, {
-          'configurable': true,
-          'enumerable': true,
-          'value': value,
-          'writable': true
-        });
-      } else {
-        object[key] = value;
-      }
-    }
- 
-    /**
-     * The base implementation of `_.at` without support for individual paths.
-     *
-     * @private
-     * @param {Object} object The object to iterate over.
-     * @param {string[]} paths The property paths to pick.
-     * @returns {Array} Returns the picked elements.
-     */
-    function baseAt(object, paths) {
-      var index = -1,
-          length = paths.length,
-          result = Array(length),
-          skip = object == null;
- 
-      while (++index < length) {
-        result[index] = skip ? undefined : get(object, paths[index]);
-      }
-      return result;
-    }
- 
-    /**
-     * The base implementation of `_.clamp` which doesn't coerce arguments.
-     *
-     * @private
-     * @param {number} number The number to clamp.
-     * @param {number} [lower] The lower bound.
-     * @param {number} upper The upper bound.
-     * @returns {number} Returns the clamped number.
-     */
-    function baseClamp(number, lower, upper) {
-      if (number === number) {
-        if (upper !== undefined) {
-          number = number <= upper ? number : upper;
-        }
-        if (lower !== undefined) {
-          number = number >= lower ? number : lower;
-        }
-      }
-      return number;
-    }
- 
-    /**
-     * The base implementation of `_.clone` and `_.cloneDeep` which tracks
-     * traversed objects.
-     *
-     * @private
-     * @param {*} value The value to clone.
-     * @param {boolean} bitmask The bitmask flags.
-     *  1 - Deep clone
-     *  2 - Flatten inherited properties
-     *  4 - Clone symbols
-     * @param {Function} [customizer] The function to customize cloning.
-     * @param {string} [key] The key of `value`.
-     * @param {Object} [object] The parent object of `value`.
-     * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
-     * @returns {*} Returns the cloned value.
-     */
-    function baseClone(value, bitmask, customizer, key, object, stack) {
-      var result,
-          isDeep = bitmask & CLONE_DEEP_FLAG,
-          isFlat = bitmask & CLONE_FLAT_FLAG,
-          isFull = bitmask & CLONE_SYMBOLS_FLAG;
- 
-      if (customizer) {
-        result = object ? customizer(value, key, object, stack) : customizer(value);
-      }
-      if (result !== undefined) {
-        return result;
-      }
-      if (!isObject(value)) {
-        return value;
-      }
-      var isArr = isArray(value);
-      if (isArr) {
-        result = initCloneArray(value);
-        if (!isDeep) {
-          return copyArray(value, result);
-        }
-      } else {
-        var tag = getTag(value),
-            isFunc = tag == funcTag || tag == genTag;
- 
-        if (isBuffer(value)) {
-          return cloneBuffer(value, isDeep);
-        }
-        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
-          result = (isFlat || isFunc) ? {} : initCloneObject(value);
-          if (!isDeep) {
-            return isFlat
-              ? copySymbolsIn(value, baseAssignIn(result, value))
-              : copySymbols(value, baseAssign(result, value));
-          }
-        } else {
-          if (!cloneableTags[tag]) {
-            return object ? value : {};
-          }
-          result = initCloneByTag(value, tag, baseClone, isDeep);
-        }
-      }
-      // Check for circular references and return its corresponding clone.
-      stack || (stack = new Stack);
-      var stacked = stack.get(value);
-      if (stacked) {
-        return stacked;
-      }
-      stack.set(value, result);
- 
-      var keysFunc = isFull
-        ? (isFlat ? getAllKeysIn : getAllKeys)
-        : (isFlat ? keysIn : keys);
- 
-      var props = isArr ? undefined : keysFunc(value);
-      arrayEach(props || value, function(subValue, key) {
-        if (props) {
-          key = subValue;
-          subValue = value[key];
-        }
-        // Recursively populate clone (susceptible to call stack limits).
-        assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
-      });
-      return result;
-    }
- 
-    /**
-     * The base implementation of `_.conforms` which doesn't clone `source`.
-     *
-     * @private
-     * @param {Object} source The object of property predicates to conform to.
-     * @returns {Function} Returns the new spec function.
-     */
-    function baseConforms(source) {
-      var props = keys(source);
-      return function(object) {
-        return baseConformsTo(object, source, props);
-      };
-    }
- 
-    /**
-     * The base implementation of `_.conformsTo` which accepts `props` to check.
-     *
-     * @private
-     * @param {Object} object The object to inspect.
-     * @param {Object} source The object of property predicates to conform to.
-     * @returns {boolean} Returns `true` if `object` conforms, else `false`.
-     */
-    function baseConformsTo(object, source, props) {
-      var length = props.length;
-      if (object == null) {
-        return !length;
-      }
-      object = Object(object);
-      while (length--) {
-        var key = props[length],
-            predicate = source[key],
-            value = object[key];
- 
-        if ((value === undefined && !(key in object)) || !predicate(value)) {
-          return false;
-        }
-      }
-      return true;
-    }
- 
-    /**
-     * The base implementation of `_.delay` and `_.defer` which accepts `args`
-     * to provide to `func`.
-     *
-     * @private
-     * @param {Function} func The function to delay.
-     * @param {number} wait The number of milliseconds to delay invocation.
-     * @param {Array} args The arguments to provide to `func`.
-     * @returns {number|Object} Returns the timer id or timeout object.
-     */
-    function baseDelay(func, wait, args) {
-      if (typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      return setTimeout(function() { func.apply(undefined, args); }, wait);
-    }
- 
-    /**
-     * The base implementation of methods like `_.difference` without support
-     * for excluding multiple arrays or iteratee shorthands.
-     *
-     * @private
-     * @param {Array} array The array to inspect.
-     * @param {Array} values The values to exclude.
-     * @param {Function} [iteratee] The iteratee invoked per element.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new array of filtered values.
-     */
-    function baseDifference(array, values, iteratee, comparator) {
-      var index = -1,
-          includes = arrayIncludes,
-          isCommon = true,
-          length = array.length,
-          result = [],
-          valuesLength = values.length;
- 
-      if (!length) {
-        return result;
-      }
-      if (iteratee) {
-        values = arrayMap(values, baseUnary(iteratee));
-      }
-      if (comparator) {
-        includes = arrayIncludesWith;
-        isCommon = false;
-      }
-      else if (values.length >= LARGE_ARRAY_SIZE) {
-        includes = cacheHas;
-        isCommon = false;
-        values = new SetCache(values);
-      }
-      outer:
-      while (++index < length) {
-        var value = array[index],
-            computed = iteratee == null ? value : iteratee(value);
- 
-        value = (comparator || value !== 0) ? value : 0;
-        if (isCommon && computed === computed) {
-          var valuesIndex = valuesLength;
-          while (valuesIndex--) {
-            if (values[valuesIndex] === computed) {
-              continue outer;
-            }
-          }
-          result.push(value);
-        }
-        else if (!includes(values, computed, comparator)) {
-          result.push(value);
-        }
-      }
-      return result;
-    }
- 
-    /**
-     * The base implementation of `_.forEach` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @returns {Array|Object} Returns `collection`.
-     */
-    var baseEach = createBaseEach(baseForOwn);
- 
-    /**
-     * The base implementation of `_.forEachRight` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @returns {Array|Object} Returns `collection`.
-     */
-    var baseEachRight = createBaseEach(baseForOwnRight, true);
- 
-    /**
-     * The base implementation of `_.every` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} predicate The function invoked per iteration.
-     * @returns {boolean} Returns `true` if all elements pass the predicate check,
-     *  else `false`
-     */
-    function baseEvery(collection, predicate) {
-      var result = true;
-      baseEach(collection, function(value, index, collection) {
-        result = !!predicate(value, index, collection);
-        return result;
-      });
-      return result;
-    }
- 
-    /**
-     * The base implementation of methods like `_.max` and `_.min` which accepts a
-     * `comparator` to determine the extremum value.
-     *
-     * @private
-     * @param {Array} array The array to iterate over.
-     * @param {Function} iteratee The iteratee invoked per iteration.
-     * @param {Function} comparator The comparator used to compare values.
-     * @returns {*} Returns the extremum value.
-     */
-    function baseExtremum(array, iteratee, comparator) {
-      var index = -1,
-          length = array.length;
- 
-      while (++index < length) {
-        var value = array[index],
-            current = iteratee(value);
- 
-        if (current != null && (computed === undefined
-              ? (current === current && !isSymbol(current))
-              : comparator(current, computed)
-            )) {
-          var computed = current,
-              result = value;
-        }
-      }
-      return result;
-    }
- 
-    /**
-     * The base implementation of `_.fill` without an iteratee call guard.
-     *
-     * @private
-     * @param {Array} array The array to fill.
-     * @param {*} value The value to fill `array` with.
-     * @param {number} [start=0] The start position.
-     * @param {number} [end=array.length] The end position.
-     * @returns {Array} Returns `array`.
-     */
-    function baseFill(array, value, start, end) {
-      var length = array.length;
- 
-      start = toInteger(start);
-      if (start < 0) {
-        start = -start > length ? 0 : (length + start);
-      }
-      end = (end === undefined || end > length) ? length : toInteger(end);
-      if (end < 0) {
-        end += length;
-      }
-      end = start > end ? 0 : toLength(end);
-      while (start < end) {
-        array[start++] = value;
-      }
-      return array;
-    }
- 
-    /**
-     * The base implementation of `_.filter` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} predicate The function invoked per iteration.
-     * @returns {Array} Returns the new filtered array.
-     */
-    function baseFilter(collection, predicate) {
-      var result = [];
-      baseEach(collection, function(value, index, collection) {
-        if (predicate(value, index, collection)) {
-          result.push(value);
-        }
-      });
-      return result;
-    }
- 
-    /**
-     * The base implementation of `_.flatten` with support for restricting flattening.
-     *
-     * @private
-     * @param {Array} array The array to flatten.
-     * @param {number} depth The maximum recursion depth.
-     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
-     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
-     * @param {Array} [result=[]] The initial result value.
-     * @returns {Array} Returns the new flattened array.
-     */
-    function baseFlatten(array, depth, predicate, isStrict, result) {
-      var index = -1,
-          length = array.length;
- 
-      predicate || (predicate = isFlattenable);
-      result || (result = []);
- 
-      while (++index < length) {
-        var value = array[index];
-        if (depth > 0 && predicate(value)) {
-          if (depth > 1) {
-            // Recursively flatten arrays (susceptible to call stack limits).
-            baseFlatten(value, depth - 1, predicate, isStrict, result);
-          } else {
-            arrayPush(result, value);
-          }
-        } else if (!isStrict) {
-          result[result.length] = value;
-        }
-      }
-      return result;
-    }
- 
-    /**
-     * The base implementation of `baseForOwn` which iterates over `object`
-     * properties returned by `keysFunc` and invokes `iteratee` for each property.
-     * Iteratee functions may exit iteration early by explicitly returning `false`.
-     *
-     * @private
-     * @param {Object} object The object to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @param {Function} keysFunc The function to get the keys of `object`.
-     * @returns {Object} Returns `object`.
-     */
-    var baseFor = createBaseFor();
- 
-    /**
-     * This function is like `baseFor` except that it iterates over properties
-     * in the opposite order.
-     *
-     * @private
-     * @param {Object} object The object to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @param {Function} keysFunc The function to get the keys of `object`.
-     * @returns {Object} Returns `object`.
-     */
-    var baseForRight = createBaseFor(true);
- 
-    /**
-     * The base implementation of `_.forOwn` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Object} object The object to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @returns {Object} Returns `object`.
-     */
-    function baseForOwn(object, iteratee) {
-      return object && baseFor(object, iteratee, keys);
-    }
- 
-    /**
-     * The base implementation of `_.forOwnRight` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Object} object The object to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @returns {Object} Returns `object`.
-     */
-    function baseForOwnRight(object, iteratee) {
-      return object && baseForRight(object, iteratee, keys);
-    }
- 
-    /**
-     * The base implementation of `_.functions` which creates an array of
-     * `object` function property names filtered from `props`.
-     *
-     * @private
-     * @param {Object} object The object to inspect.
-     * @param {Array} props The property names to filter.
-     * @returns {Array} Returns the function names.
-     */
-    function baseFunctions(object, props) {
-      return arrayFilter(props, function(key) {
-        return isFunction(object[key]);
-      });
-    }
- 
-    /**
-     * The base implementation of `_.get` without support for default values.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @param {Array|string} path The path of the property to get.
-     * @returns {*} Returns the resolved value.
-     */
-    function baseGet(object, path) {
-      path = castPath(path, object);
- 
-      var index = 0,
-          length = path.length;
- 
-      while (object != null && index < length) {
-        object = object[toKey(path[index++])];
-      }
-      return (index && index == length) ? object : undefined;
-    }
- 
-    /**
-     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
-     * `keysFunc` and `symbolsFunc` to get the enumerable property names and
-     * symbols of `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @param {Function} keysFunc The function to get the keys of `object`.
-     * @param {Function} symbolsFunc The function to get the symbols of `object`.
-     * @returns {Array} Returns the array of property names and symbols.
-     */
-    function baseGetAllKeys(object, keysFunc, symbolsFunc) {
-      var result = keysFunc(object);
-      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
-    }
- 
-    /**
-     * The base implementation of `getTag` without fallbacks for buggy environments.
-     *
-     * @private
-     * @param {*} value The value to query.
-     * @returns {string} Returns the `toStringTag`.
-     */
-    function baseGetTag(value) {
-      if (value == null) {
-        return value === undefined ? undefinedTag : nullTag;
-      }
-      return (symToStringTag && symToStringTag in Object(value))
-        ? getRawTag(value)
-        : objectToString(value);
-    }
- 
-    /**
-     * The base implementation of `_.gt` which doesn't coerce arguments.
-     *
-     * @private
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {boolean} Returns `true` if `value` is greater than `other`,
-     *  else `false`.
-     */
-    function baseGt(value, other) {
-      return value > other;
-    }
- 
-    /**
-     * The base implementation of `_.has` without support for deep paths.
-     *
-     * @private
-     * @param {Object} [object] The object to query.
-     * @param {Array|string} key The key to check.
-     * @returns {boolean} Returns `true` if `key` exists, else `false`.
-     */
-    function baseHas(object, key) {
-      return object != null && hasOwnProperty.call(object, key);
-    }
- 
-    /**
-     * The base implementation of `_.hasIn` without support for deep paths.
-     *
-     * @private
-     * @param {Object} [object] The object to query.
-     * @param {Array|string} key The key to check.
-     * @returns {boolean} Returns `true` if `key` exists, else `false`.
-     */
-    function baseHasIn(object, key) {
-      return object != null && key in Object(object);
-    }
- 
-    /**
-     * The base implementation of `_.inRange` which doesn't coerce arguments.
-     *
-     * @private
-     * @param {number} number The number to check.
-     * @param {number} start The start of the range.
-     * @param {number} end The end of the range.
-     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
-     */
-    function baseInRange(number, start, end) {
-      return number >= nativeMin(start, end) && number < nativeMax(start, end);
-    }
- 
-    /**
-     * The base implementation of methods like `_.intersection`, without support
-     * for iteratee shorthands, that accepts an array of arrays to inspect.
-     *
-     * @private
-     * @param {Array} arrays The arrays to inspect.
-     * @param {Function} [iteratee] The iteratee invoked per element.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new array of shared values.
-     */
-    function baseIntersection(arrays, iteratee, comparator) {
-      var includes = comparator ? arrayIncludesWith : arrayIncludes,
-          length = arrays[0].length,
-          othLength = arrays.length,
-          othIndex = othLength,
-          caches = Array(othLength),
-          maxLength = Infinity,
-          result = [];
- 
-      while (othIndex--) {
-        var array = arrays[othIndex];
-        if (othIndex && iteratee) {
-          array = arrayMap(array, baseUnary(iteratee));
-        }
-        maxLength = nativeMin(array.length, maxLength);
-        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
-          ? new SetCache(othIndex && array)
-          : undefined;
-      }
-      array = arrays[0];
- 
-      var index = -1,
-          seen = caches[0];
- 
-      outer:
-      while (++index < length && result.length < maxLength) {
-        var value = array[index],
-            computed = iteratee ? iteratee(value) : value;
- 
-        value = (comparator || value !== 0) ? value : 0;
-        if (!(seen
-              ? cacheHas(seen, computed)
-              : includes(result, computed, comparator)
-            )) {
-          othIndex = othLength;
-          while (--othIndex) {
-            var cache = caches[othIndex];
-            if (!(cache
-                  ? cacheHas(cache, computed)
-                  : includes(arrays[othIndex], computed, comparator))
-                ) {
-              continue outer;
-            }
-          }
-          if (seen) {
-            seen.push(computed);
-          }
-          result.push(value);
-        }
-      }
-      return result;
-    }
- 
-    /**
-     * The base implementation of `_.invert` and `_.invertBy` which inverts
-     * `object` with values transformed by `iteratee` and set by `setter`.
-     *
-     * @private
-     * @param {Object} object The object to iterate over.
-     * @param {Function} setter The function to set `accumulator` values.
-     * @param {Function} iteratee The iteratee to transform values.
-     * @param {Object} accumulator The initial inverted object.
-     * @returns {Function} Returns `accumulator`.
-     */
-    function baseInverter(object, setter, iteratee, accumulator) {
-      baseForOwn(object, function(value, key, object) {
-        setter(accumulator, iteratee(value), key, object);
-      });
-      return accumulator;
-    }
- 
-    /**
-     * The base implementation of `_.invoke` without support for individual
-     * method arguments.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @param {Array|string} path The path of the method to invoke.
-     * @param {Array} args The arguments to invoke the method with.
-     * @returns {*} Returns the result of the invoked method.
-     */
-    function baseInvoke(object, path, args) {
-      path = castPath(path, object);
-      object = parent(object, path);
-      var func = object == null ? object : object[toKey(last(path))];
-      return func == null ? undefined : apply(func, object, args);
-    }
- 
-    /**
-     * The base implementation of `_.isArguments`.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an `arguments` object,
-     */
-    function baseIsArguments(value) {
-      return isObjectLike(value) && baseGetTag(value) == argsTag;
-    }
- 
-    /**
-     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
-     */
-    function baseIsArrayBuffer(value) {
-      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
-    }
- 
-    /**
-     * The base implementation of `_.isDate` without Node.js optimizations.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
-     */
-    function baseIsDate(value) {
-      return isObjectLike(value) && baseGetTag(value) == dateTag;
-    }
- 
-    /**
-     * The base implementation of `_.isEqual` which supports partial comparisons
-     * and tracks traversed objects.
-     *
-     * @private
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @param {boolean} bitmask The bitmask flags.
-     *  1 - Unordered comparison
-     *  2 - Partial comparison
-     * @param {Function} [customizer] The function to customize comparisons.
-     * @param {Object} [stack] Tracks traversed `value` and `other` objects.
-     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
-     */
-    function baseIsEqual(value, other, bitmask, customizer, stack) {
-      if (value === other) {
-        return true;
-      }
-      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
-        return value !== value && other !== other;
-      }
-      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
-    }
- 
-    /**
-     * A specialized version of `baseIsEqual` for arrays and objects which performs
-     * deep comparisons and tracks traversed objects enabling objects with circular
-     * references to be compared.
-     *
-     * @private
-     * @param {Object} object The object to compare.
-     * @param {Object} other The other object to compare.
-     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
-     * @param {Function} customizer The function to customize comparisons.
-     * @param {Function} equalFunc The function to determine equivalents of values.
-     * @param {Object} [stack] Tracks traversed `object` and `other` objects.
-     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
-     */
-    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
-      var objIsArr = isArray(object),
-          othIsArr = isArray(other),
-          objTag = objIsArr ? arrayTag : getTag(object),
-          othTag = othIsArr ? arrayTag : getTag(other);
- 
-      objTag = objTag == argsTag ? objectTag : objTag;
-      othTag = othTag == argsTag ? objectTag : othTag;
- 
-      var objIsObj = objTag == objectTag,
-          othIsObj = othTag == objectTag,
-          isSameTag = objTag == othTag;
- 
-      if (isSameTag && isBuffer(object)) {
-        if (!isBuffer(other)) {
-          return false;
-        }
-        objIsArr = true;
-        objIsObj = false;
-      }
-      if (isSameTag && !objIsObj) {
-        stack || (stack = new Stack);
-        return (objIsArr || isTypedArray(object))
-          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
-          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
-      }
-      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
-        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
-            othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
- 
-        if (objIsWrapped || othIsWrapped) {
-          var objUnwrapped = objIsWrapped ? object.value() : object,
-              othUnwrapped = othIsWrapped ? other.value() : other;
- 
-          stack || (stack = new Stack);
-          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
-        }
-      }
-      if (!isSameTag) {
-        return false;
-      }
-      stack || (stack = new Stack);
-      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
-    }
- 
-    /**
-     * The base implementation of `_.isMap` without Node.js optimizations.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a map, else `false`.
-     */
-    function baseIsMap(value) {
-      return isObjectLike(value) && getTag(value) == mapTag;
-    }
- 
-    /**
-     * The base implementation of `_.isMatch` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Object} object The object to inspect.
-     * @param {Object} source The object of property values to match.
-     * @param {Array} matchData The property names, values, and compare flags to match.
-     * @param {Function} [customizer] The function to customize comparisons.
-     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
-     */
-    function baseIsMatch(object, source, matchData, customizer) {
-      var index = matchData.length,
-          length = index,
-          noCustomizer = !customizer;
- 
-      if (object == null) {
-        return !length;
-      }
-      object = Object(object);
-      while (index--) {
-        var data = matchData[index];
-        if ((noCustomizer && data[2])
-              ? data[1] !== object[data[0]]
-              : !(data[0] in object)
-            ) {
-          return false;
-        }
-      }
-      while (++index < length) {
-        data = matchData[index];
-        var key = data[0],
-            objValue = object[key],
-            srcValue = data[1];
- 
-        if (noCustomizer && data[2]) {
-          if (objValue === undefined && !(key in object)) {
-            return false;
-          }
-        } else {
-          var stack = new Stack;
-          if (customizer) {
-            var result = customizer(objValue, srcValue, key, object, source, stack);
-          }
-          if (!(result === undefined
-                ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
-                : result
-              )) {
-            return false;
-          }
-        }
-      }
-      return true;
-    }
- 
-    /**
-     * The base implementation of `_.isNative` without bad shim checks.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a native function,
-     *  else `false`.
-     */
-    function baseIsNative(value) {
-      if (!isObject(value) || isMasked(value)) {
-        return false;
-      }
-      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
-      return pattern.test(toSource(value));
-    }
- 
-    /**
-     * The base implementation of `_.isRegExp` without Node.js optimizations.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
-     */
-    function baseIsRegExp(value) {
-      return isObjectLike(value) && baseGetTag(value) == regexpTag;
-    }
- 
-    /**
-     * The base implementation of `_.isSet` without Node.js optimizations.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a set, else `false`.
-     */
-    function baseIsSet(value) {
-      return isObjectLike(value) && getTag(value) == setTag;
-    }
- 
-    /**
-     * The base implementation of `_.isTypedArray` without Node.js optimizations.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
-     */
-    function baseIsTypedArray(value) {
-      return isObjectLike(value) &&
-        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
-    }
- 
-    /**
-     * The base implementation of `_.iteratee`.
-     *
-     * @private
-     * @param {*} [value=_.identity] The value to convert to an iteratee.
-     * @returns {Function} Returns the iteratee.
-     */
-    function baseIteratee(value) {
-      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
-      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
-      if (typeof value == 'function') {
-        return value;
-      }
-      if (value == null) {
-        return identity;
-      }
-      if (typeof value == 'object') {
-        return isArray(value)
-          ? baseMatchesProperty(value[0], value[1])
-          : baseMatches(value);
-      }
-      return property(value);
-    }
- 
-    /**
-     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property names.
-     */
-    function baseKeys(object) {
-      if (!isPrototype(object)) {
-        return nativeKeys(object);
-      }
-      var result = [];
-      for (var key in Object(object)) {
-        if (hasOwnProperty.call(object, key) && key != 'constructor') {
-          result.push(key);
-        }
-      }
-      return result;
-    }
- 
-    /**
-     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property names.
-     */
-    function baseKeysIn(object) {
-      if (!isObject(object)) {
-        return nativeKeysIn(object);
-      }
-      var isProto = isPrototype(object),
-          result = [];
- 
-      for (var key in object) {
-        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
-          result.push(key);
-        }
-      }
-      return result;
-    }
- 
-    /**
-     * The base implementation of `_.lt` which doesn't coerce arguments.
-     *
-     * @private
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {boolean} Returns `true` if `value` is less than `other`,
-     *  else `false`.
-     */
-    function baseLt(value, other) {
-      return value < other;
-    }
- 
-    /**
-     * The base implementation of `_.map` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @returns {Array} Returns the new mapped array.
-     */
-    function baseMap(collection, iteratee) {
-      var index = -1,
-          result = isArrayLike(collection) ? Array(collection.length) : [];
- 
-      baseEach(collection, function(value, key, collection) {
-        result[++index] = iteratee(value, key, collection);
-      });
-      return result;
-    }
- 
-    /**
-     * The base implementation of `_.matches` which doesn't clone `source`.
-     *
-     * @private
-     * @param {Object} source The object of property values to match.
-     * @returns {Function} Returns the new spec function.
-     */
-    function baseMatches(source) {
-      var matchData = getMatchData(source);
-      if (matchData.length == 1 && matchData[0][2]) {
-        return matchesStrictComparable(matchData[0][0], matchData[0][1]);
-      }
-      return function(object) {
-        return object === source || baseIsMatch(object, source, matchData);
-      };
-    }
- 
-    /**
-     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
-     *
-     * @private
-     * @param {string} path The path of the property to get.
-     * @param {*} srcValue The value to match.
-     * @returns {Function} Returns the new spec function.
-     */
-    function baseMatchesProperty(path, srcValue) {
-      if (isKey(path) && isStrictComparable(srcValue)) {
-        return matchesStrictComparable(toKey(path), srcValue);
-      }
-      return function(object) {
-        var objValue = get(object, path);
-        return (objValue === undefined && objValue === srcValue)
-          ? hasIn(object, path)
-          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
-      };
-    }
- 
-    /**
-     * The base implementation of `_.merge` without support for multiple sources.
-     *
-     * @private
-     * @param {Object} object The destination object.
-     * @param {Object} source The source object.
-     * @param {number} srcIndex The index of `source`.
-     * @param {Function} [customizer] The function to customize merged values.
-     * @param {Object} [stack] Tracks traversed source values and their merged
-     *  counterparts.
-     */
-    function baseMerge(object, source, srcIndex, customizer, stack) {
-      if (object === source) {
-        return;
-      }
-      baseFor(source, function(srcValue, key) {
-        if (isObject(srcValue)) {
-          stack || (stack = new Stack);
-          baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
-        }
-        else {
-          var newValue = customizer
-            ? customizer(object[key], srcValue, (key + ''), object, source, stack)
-            : undefined;
- 
-          if (newValue === undefined) {
-            newValue = srcValue;
-          }
-          assignMergeValue(object, key, newValue);
-        }
-      }, keysIn);
-    }
- 
-    /**
-     * A specialized version of `baseMerge` for arrays and objects which performs
-     * deep merges and tracks traversed objects enabling objects with circular
-     * references to be merged.
-     *
-     * @private
-     * @param {Object} object The destination object.
-     * @param {Object} source The source object.
-     * @param {string} key The key of the value to merge.
-     * @param {number} srcIndex The index of `source`.
-     * @param {Function} mergeFunc The function to merge values.
-     * @param {Function} [customizer] The function to customize assigned values.
-     * @param {Object} [stack] Tracks traversed source values and their merged
-     *  counterparts.
-     */
-    function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
-      var objValue = object[key],
-          srcValue = source[key],
-          stacked = stack.get(srcValue);
- 
-      if (stacked) {
-        assignMergeValue(object, key, stacked);
-        return;
-      }
-      var newValue = customizer
-        ? customizer(objValue, srcValue, (key + ''), object, source, stack)
-        : undefined;
- 
-      var isCommon = newValue === undefined;
- 
-      if (isCommon) {
-        var isArr = isArray(srcValue),
-            isBuff = !isArr && isBuffer(srcValue),
-            isTyped = !isArr && !isBuff && isTypedArray(srcValue);
- 
-        newValue = srcValue;
-        if (isArr || isBuff || isTyped) {
-          if (isArray(objValue)) {
-            newValue = objValue;
-          }
-          else if (isArrayLikeObject(objValue)) {
-            newValue = copyArray(objValue);
-          }
-          else if (isBuff) {
-            isCommon = false;
-            newValue = cloneBuffer(srcValue, true);
-          }
-          else if (isTyped) {
-            isCommon = false;
-            newValue = cloneTypedArray(srcValue, true);
-          }
-          else {
-            newValue = [];
-          }
-        }
-        else if (isPlainObject(srcValue) || isArguments(srcValue)) {
-          newValue = objValue;
-          if (isArguments(objValue)) {
-            newValue = toPlainObject(objValue);
-          }
-          else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {
-            newValue = initCloneObject(srcValue);
-          }
-        }
-        else {
-          isCommon = false;
-        }
-      }
-      if (isCommon) {
-        // Recursively merge objects and arrays (susceptible to call stack limits).
-        stack.set(srcValue, newValue);
-        mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
-        stack['delete'](srcValue);
-      }
-      assignMergeValue(object, key, newValue);
-    }
- 
-    /**
-     * The base implementation of `_.nth` which doesn't coerce arguments.
-     *
-     * @private
-     * @param {Array} array The array to query.
-     * @param {number} n The index of the element to return.
-     * @returns {*} Returns the nth element of `array`.
-     */
-    function baseNth(array, n) {
-      var length = array.length;
-      if (!length) {
-        return;
-      }
-      n += n < 0 ? length : 0;
-      return isIndex(n, length) ? array[n] : undefined;
-    }
- 
-    /**
-     * The base implementation of `_.orderBy` without param guards.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
-     * @param {string[]} orders The sort orders of `iteratees`.
-     * @returns {Array} Returns the new sorted array.
-     */
-    function baseOrderBy(collection, iteratees, orders) {
-      var index = -1;
-      iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));
- 
-      var result = baseMap(collection, function(value, key, collection) {
-        var criteria = arrayMap(iteratees, function(iteratee) {
-          return iteratee(value);
-        });
-        return { 'criteria': criteria, 'index': ++index, 'value': value };
-      });
- 
-      return baseSortBy(result, function(object, other) {
-        return compareMultiple(object, other, orders);
-      });
-    }
- 
-    /**
-     * The base implementation of `_.pick` without support for individual
-     * property identifiers.
-     *
-     * @private
-     * @param {Object} object The source object.
-     * @param {string[]} paths The property paths to pick.
-     * @returns {Object} Returns the new object.
-     */
-    function basePick(object, paths) {
-      return basePickBy(object, paths, function(value, path) {
-        return hasIn(object, path);
-      });
-    }
- 
-    /**
-     * The base implementation of  `_.pickBy` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Object} object The source object.
-     * @param {string[]} paths The property paths to pick.
-     * @param {Function} predicate The function invoked per property.
-     * @returns {Object} Returns the new object.
-     */
-    function basePickBy(object, paths, predicate) {
-      var index = -1,
-          length = paths.length,
-          result = {};
- 
-      while (++index < length) {
-        var path = paths[index],
-            value = baseGet(object, path);
- 
-        if (predicate(value, path)) {
-          baseSet(result, castPath(path, object), value);
-        }
-      }
-      return result;
-    }
- 
-    /**
-     * A specialized version of `baseProperty` which supports deep paths.
-     *
-     * @private
-     * @param {Array|string} path The path of the property to get.
-     * @returns {Function} Returns the new accessor function.
-     */
-    function basePropertyDeep(path) {
-      return function(object) {
-        return baseGet(object, path);
-      };
-    }
- 
-    /**
-     * The base implementation of `_.pullAllBy` without support for iteratee
-     * shorthands.
-     *
-     * @private
-     * @param {Array} array The array to modify.
-     * @param {Array} values The values to remove.
-     * @param {Function} [iteratee] The iteratee invoked per element.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns `array`.
-     */
-    function basePullAll(array, values, iteratee, comparator) {
-      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,
-          index = -1,
-          length = values.length,
-          seen = array;
- 
-      if (array === values) {
-        values = copyArray(values);
-      }
-      if (iteratee) {
-        seen = arrayMap(array, baseUnary(iteratee));
-      }
-      while (++index < length) {
-        var fromIndex = 0,
-            value = values[index],
-            computed = iteratee ? iteratee(value) : value;
- 
-        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
-          if (seen !== array) {
-            splice.call(seen, fromIndex, 1);
-          }
-          splice.call(array, fromIndex, 1);
-        }
-      }
-      return array;
-    }
- 
-    /**
-     * The base implementation of `_.pullAt` without support for individual
-     * indexes or capturing the removed elements.
-     *
-     * @private
-     * @param {Array} array The array to modify.
-     * @param {number[]} indexes The indexes of elements to remove.
-     * @returns {Array} Returns `array`.
-     */
-    function basePullAt(array, indexes) {
-      var length = array ? indexes.length : 0,
-          lastIndex = length - 1;
- 
-      while (length--) {
-        var index = indexes[length];
-        if (length == lastIndex || index !== previous) {
-          var previous = index;
-          if (isIndex(index)) {
-            splice.call(array, index, 1);
-          } else {
-            baseUnset(array, index);
-          }
-        }
-      }
-      return array;
-    }
- 
-    /**
-     * The base implementation of `_.random` without support for returning
-     * floating-point numbers.
-     *
-     * @private
-     * @param {number} lower The lower bound.
-     * @param {number} upper The upper bound.
-     * @returns {number} Returns the random number.
-     */
-    function baseRandom(lower, upper) {
-      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
-    }
- 
-    /**
-     * The base implementation of `_.range` and `_.rangeRight` which doesn't
-     * coerce arguments.
-     *
-     * @private
-     * @param {number} start The start of the range.
-     * @param {number} end The end of the range.
-     * @param {number} step The value to increment or decrement by.
-     * @param {boolean} [fromRight] Specify iterating from right to left.
-     * @returns {Array} Returns the range of numbers.
-     */
-    function baseRange(start, end, step, fromRight) {
-      var index = -1,
-          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
-          result = Array(length);
- 
-      while (length--) {
-        result[fromRight ? length : ++index] = start;
-        start += step;
-      }
-      return result;
-    }
- 
-    /**
-     * The base implementation of `_.repeat` which doesn't coerce arguments.
-     *
-     * @private
-     * @param {string} string The string to repeat.
-     * @param {number} n The number of times to repeat the string.
-     * @returns {string} Returns the repeated string.
-     */
-    function baseRepeat(string, n) {
-      var result = '';
-      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
-        return result;
-      }
-      // Leverage the exponentiation by squaring algorithm for a faster repeat.
-      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.
-      do {
-        if (n % 2) {
-          result += string;
-        }
-        n = nativeFloor(n / 2);
-        if (n) {
-          string += string;
-        }
-      } while (n);
- 
-      return result;
-    }
- 
-    /**
-     * The base implementation of `_.rest` which doesn't validate or coerce arguments.
-     *
-     * @private
-     * @param {Function} func The function to apply a rest parameter to.
-     * @param {number} [start=func.length-1] The start position of the rest parameter.
-     * @returns {Function} Returns the new function.
-     */
-    function baseRest(func, start) {
-      return setToString(overRest(func, start, identity), func + '');
-    }
- 
-    /**
-     * The base implementation of `_.sample`.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to sample.
-     * @returns {*} Returns the random element.
-     */
-    function baseSample(collection) {
-      return arraySample(values(collection));
-    }
- 
-    /**
-     * The base implementation of `_.sampleSize` without param guards.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to sample.
-     * @param {number} n The number of elements to sample.
-     * @returns {Array} Returns the random elements.
-     */
-    function baseSampleSize(collection, n) {
-      var array = values(collection);
-      return shuffleSelf(array, baseClamp(n, 0, array.length));
-    }
- 
-    /**
-     * The base implementation of `_.set`.
-     *
-     * @private
-     * @param {Object} object The object to modify.
-     * @param {Array|string} path The path of the property to set.
-     * @param {*} value The value to set.
-     * @param {Function} [customizer] The function to customize path creation.
-     * @returns {Object} Returns `object`.
-     */
-    function baseSet(object, path, value, customizer) {
-      if (!isObject(object)) {
-        return object;
-      }
-      path = castPath(path, object);
- 
-      var index = -1,
-          length = path.length,
-          lastIndex = length - 1,
-          nested = object;
- 
-      while (nested != null && ++index < length) {
-        var key = toKey(path[index]),
-            newValue = value;
- 
-        if (index != lastIndex) {
-          var objValue = nested[key];
-          newValue = customizer ? customizer(objValue, key, nested) : undefined;
-          if (newValue === undefined) {
-            newValue = isObject(objValue)
-              ? objValue
-              : (isIndex(path[index + 1]) ? [] : {});
-          }
-        }
-        assignValue(nested, key, newValue);
-        nested = nested[key];
-      }
-      return object;
-    }
- 
-    /**
-     * The base implementation of `setData` without support for hot loop shorting.
-     *
-     * @private
-     * @param {Function} func The function to associate metadata with.
-     * @param {*} data The metadata.
-     * @returns {Function} Returns `func`.
-     */
-    var baseSetData = !metaMap ? identity : function(func, data) {
-      metaMap.set(func, data);
-      return func;
-    };
- 
-    /**
-     * The base implementation of `setToString` without support for hot loop shorting.
-     *
-     * @private
-     * @param {Function} func The function to modify.
-     * @param {Function} string The `toString` result.
-     * @returns {Function} Returns `func`.
-     */
-    var baseSetToString = !defineProperty ? identity : function(func, string) {
-      return defineProperty(func, 'toString', {
-        'configurable': true,
-        'enumerable': false,
-        'value': constant(string),
-        'writable': true
-      });
-    };
- 
-    /**
-     * The base implementation of `_.shuffle`.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to shuffle.
-     * @returns {Array} Returns the new shuffled array.
-     */
-    function baseShuffle(collection) {
-      return shuffleSelf(values(collection));
-    }
- 
-    /**
-     * The base implementation of `_.slice` without an iteratee call guard.
-     *
-     * @private
-     * @param {Array} array The array to slice.
-     * @param {number} [start=0] The start position.
-     * @param {number} [end=array.length] The end position.
-     * @returns {Array} Returns the slice of `array`.
-     */
-    function baseSlice(array, start, end) {
-      var index = -1,
-          length = array.length;
- 
-      if (start < 0) {
-        start = -start > length ? 0 : (length + start);
-      }
-      end = end > length ? length : end;
-      if (end < 0) {
-        end += length;
-      }
-      length = start > end ? 0 : ((end - start) >>> 0);
-      start >>>= 0;
- 
-      var result = Array(length);
-      while (++index < length) {
-        result[index] = array[index + start];
-      }
-      return result;
-    }
- 
-    /**
-     * The base implementation of `_.some` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} predicate The function invoked per iteration.
-     * @returns {boolean} Returns `true` if any element passes the predicate check,
-     *  else `false`.
-     */
-    function baseSome(collection, predicate) {
-      var result;
- 
-      baseEach(collection, function(value, index, collection) {
-        result = predicate(value, index, collection);
-        return !result;
-      });
-      return !!result;
-    }
- 
-    /**
-     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which
-     * performs a binary search of `array` to determine the index at which `value`
-     * should be inserted into `array` in order to maintain its sort order.
-     *
-     * @private
-     * @param {Array} array The sorted array to inspect.
-     * @param {*} value The value to evaluate.
-     * @param {boolean} [retHighest] Specify returning the highest qualified index.
-     * @returns {number} Returns the index at which `value` should be inserted
-     *  into `array`.
-     */
-    function baseSortedIndex(array, value, retHighest) {
-      var low = 0,
-          high = array == null ? low : array.length;
- 
-      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
-        while (low < high) {
-          var mid = (low + high) >>> 1,
-              computed = array[mid];
- 
-          if (computed !== null && !isSymbol(computed) &&
-              (retHighest ? (computed <= value) : (computed < value))) {
-            low = mid + 1;
-          } else {
-            high = mid;
-          }
-        }
-        return high;
-      }
-      return baseSortedIndexBy(array, value, identity, retHighest);
-    }
- 
-    /**
-     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`
-     * which invokes `iteratee` for `value` and each element of `array` to compute
-     * their sort ranking. The iteratee is invoked with one argument; (value).
-     *
-     * @private
-     * @param {Array} array The sorted array to inspect.
-     * @param {*} value The value to evaluate.
-     * @param {Function} iteratee The iteratee invoked per element.
-     * @param {boolean} [retHighest] Specify returning the highest qualified index.
-     * @returns {number} Returns the index at which `value` should be inserted
-     *  into `array`.
-     */
-    function baseSortedIndexBy(array, value, iteratee, retHighest) {
-      value = iteratee(value);
- 
-      var low = 0,
-          high = array == null ? 0 : array.length,
-          valIsNaN = value !== value,
-          valIsNull = value === null,
-          valIsSymbol = isSymbol(value),
-          valIsUndefined = value === undefined;
- 
-      while (low < high) {
-        var mid = nativeFloor((low + high) / 2),
-            computed = iteratee(array[mid]),
-            othIsDefined = computed !== undefined,
-            othIsNull = computed === null,
-            othIsReflexive = computed === computed,
-            othIsSymbol = isSymbol(computed);
- 
-        if (valIsNaN) {
-          var setLow = retHighest || othIsReflexive;
-        } else if (valIsUndefined) {
-          setLow = othIsReflexive && (retHighest || othIsDefined);
-        } else if (valIsNull) {
-          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
-        } else if (valIsSymbol) {
-          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
-        } else if (othIsNull || othIsSymbol) {
-          setLow = false;
-        } else {
-          setLow = retHighest ? (computed <= value) : (computed < value);
-        }
-        if (setLow) {
-          low = mid + 1;
-        } else {
-          high = mid;
-        }
-      }
-      return nativeMin(high, MAX_ARRAY_INDEX);
-    }
- 
-    /**
-     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without
-     * support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array} array The array to inspect.
-     * @param {Function} [iteratee] The iteratee invoked per element.
-     * @returns {Array} Returns the new duplicate free array.
-     */
-    function baseSortedUniq(array, iteratee) {
-      var index = -1,
-          length = array.length,
-          resIndex = 0,
-          result = [];
- 
-      while (++index < length) {
-        var value = array[index],
-            computed = iteratee ? iteratee(value) : value;
- 
-        if (!index || !eq(computed, seen)) {
-          var seen = computed;
-          result[resIndex++] = value === 0 ? 0 : value;
-        }
-      }
-      return result;
-    }
- 
-    /**
-     * The base implementation of `_.toNumber` which doesn't ensure correct
-     * conversions of binary, hexadecimal, or octal string values.
-     *
-     * @private
-     * @param {*} value The value to process.
-     * @returns {number} Returns the number.
-     */
-    function baseToNumber(value) {
-      if (typeof value == 'number') {
-        return value;
-      }
-      if (isSymbol(value)) {
-        return NAN;
-      }
-      return +value;
-    }
- 
-    /**
-     * The base implementation of `_.toString` which doesn't convert nullish
-     * values to empty strings.
-     *
-     * @private
-     * @param {*} value The value to process.
-     * @returns {string} Returns the string.
-     */
-    function baseToString(value) {
-      // Exit early for strings to avoid a performance hit in some environments.
-      if (typeof value == 'string') {
-        return value;
-      }
-      if (isArray(value)) {
-        // Recursively convert values (susceptible to call stack limits).
-        return arrayMap(value, baseToString) + '';
-      }
-      if (isSymbol(value)) {
-        return symbolToString ? symbolToString.call(value) : '';
-      }
-      var result = (value + '');
-      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
-    }
- 
-    /**
-     * The base implementation of `_.uniqBy` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array} array The array to inspect.
-     * @param {Function} [iteratee] The iteratee invoked per element.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new duplicate free array.
-     */
-    function baseUniq(array, iteratee, comparator) {
-      var index = -1,
-          includes = arrayIncludes,
-          length = array.length,
-          isCommon = true,
-          result = [],
-          seen = result;
- 
-      if (comparator) {
-        isCommon = false;
-        includes = arrayIncludesWith;
-      }
-      else if (length >= LARGE_ARRAY_SIZE) {
-        var set = iteratee ? null : createSet(array);
-        if (set) {
-          return setToArray(set);
-        }
-        isCommon = false;
-        includes = cacheHas;
-        seen = new SetCache;
-      }
-      else {
-        seen = iteratee ? [] : result;
-      }
-      outer:
-      while (++index < length) {
-        var value = array[index],
-            computed = iteratee ? iteratee(value) : value;
- 
-        value = (comparator || value !== 0) ? value : 0;
-        if (isCommon && computed === computed) {
-          var seenIndex = seen.length;
-          while (seenIndex--) {
-            if (seen[seenIndex] === computed) {
-              continue outer;
-            }
-          }
-          if (iteratee) {
-            seen.push(computed);
-          }
-          result.push(value);
-        }
-        else if (!includes(seen, computed, comparator)) {
-          if (seen !== result) {
-            seen.push(computed);
-          }
-          result.push(value);
-        }
-      }
-      return result;
-    }
- 
-    /**
-     * The base implementation of `_.unset`.
-     *
-     * @private
-     * @param {Object} object The object to modify.
-     * @param {Array|string} path The property path to unset.
-     * @returns {boolean} Returns `true` if the property is deleted, else `false`.
-     */
-    function baseUnset(object, path) {
-      path = castPath(path, object);
-      object = parent(object, path);
-      return object == null || delete object[toKey(last(path))];
-    }
- 
-    /**
-     * The base implementation of `_.update`.
-     *
-     * @private
-     * @param {Object} object The object to modify.
-     * @param {Array|string} path The path of the property to update.
-     * @param {Function} updater The function to produce the updated value.
-     * @param {Function} [customizer] The function to customize path creation.
-     * @returns {Object} Returns `object`.
-     */
-    function baseUpdate(object, path, updater, customizer) {
-      return baseSet(object, path, updater(baseGet(object, path)), customizer);
-    }
- 
-    /**
-     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`
-     * without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array} array The array to query.
-     * @param {Function} predicate The function invoked per iteration.
-     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.
-     * @param {boolean} [fromRight] Specify iterating from right to left.
-     * @returns {Array} Returns the slice of `array`.
-     */
-    function baseWhile(array, predicate, isDrop, fromRight) {
-      var length = array.length,
-          index = fromRight ? length : -1;
- 
-      while ((fromRight ? index-- : ++index < length) &&
-        predicate(array[index], index, array)) {}
- 
-      return isDrop
-        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))
-        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));
-    }
- 
-    /**
-     * The base implementation of `wrapperValue` which returns the result of
-     * performing a sequence of actions on the unwrapped `value`, where each
-     * successive action is supplied the return value of the previous.
-     *
-     * @private
-     * @param {*} value The unwrapped value.
-     * @param {Array} actions Actions to perform to resolve the unwrapped value.
-     * @returns {*} Returns the resolved value.
-     */
-    function baseWrapperValue(value, actions) {
-      var result = value;
-      if (result instanceof LazyWrapper) {
-        result = result.value();
-      }
-      return arrayReduce(actions, function(result, action) {
-        return action.func.apply(action.thisArg, arrayPush([result], action.args));
-      }, result);
-    }
- 
-    /**
-     * The base implementation of methods like `_.xor`, without support for
-     * iteratee shorthands, that accepts an array of arrays to inspect.
-     *
-     * @private
-     * @param {Array} arrays The arrays to inspect.
-     * @param {Function} [iteratee] The iteratee invoked per element.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new array of values.
-     */
-    function baseXor(arrays, iteratee, comparator) {
-      var length = arrays.length;
-      if (length < 2) {
-        return length ? baseUniq(arrays[0]) : [];
-      }
-      var index = -1,
-          result = Array(length);
- 
-      while (++index < length) {
-        var array = arrays[index],
-            othIndex = -1;
- 
-        while (++othIndex < length) {
-          if (othIndex != index) {
-            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
-          }
-        }
-      }
-      return baseUniq(baseFlatten(result, 1), iteratee, comparator);
-    }
- 
-    /**
-     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
-     *
-     * @private
-     * @param {Array} props The property identifiers.
-     * @param {Array} values The property values.
-     * @param {Function} assignFunc The function to assign values.
-     * @returns {Object} Returns the new object.
-     */
-    function baseZipObject(props, values, assignFunc) {
-      var index = -1,
-          length = props.length,
-          valsLength = values.length,
-          result = {};
- 
-      while (++index < length) {
-        var value = index < valsLength ? values[index] : undefined;
-        assignFunc(result, props[index], value);
-      }
-      return result;
-    }
- 
-    /**
-     * Casts `value` to an empty array if it's not an array like object.
-     *
-     * @private
-     * @param {*} value The value to inspect.
-     * @returns {Array|Object} Returns the cast array-like object.
-     */
-    function castArrayLikeObject(value) {
-      return isArrayLikeObject(value) ? value : [];
-    }
- 
-    /**
-     * Casts `value` to `identity` if it's not a function.
-     *
-     * @private
-     * @param {*} value The value to inspect.
-     * @returns {Function} Returns cast function.
-     */
-    function castFunction(value) {
-      return typeof value == 'function' ? value : identity;
-    }
- 
-    /**
-     * Casts `value` to a path array if it's not one.
-     *
-     * @private
-     * @param {*} value The value to inspect.
-     * @param {Object} [object] The object to query keys on.
-     * @returns {Array} Returns the cast property path array.
-     */
-    function castPath(value, object) {
-      if (isArray(value)) {
-        return value;
-      }
-      return isKey(value, object) ? [value] : stringToPath(toString(value));
-    }
- 
-    /**
-     * A `baseRest` alias which can be replaced with `identity` by module
-     * replacement plugins.
-     *
-     * @private
-     * @type {Function}
-     * @param {Function} func The function to apply a rest parameter to.
-     * @returns {Function} Returns the new function.
-     */
-    var castRest = baseRest;
- 
-    /**
-     * Casts `array` to a slice if it's needed.
-     *
-     * @private
-     * @param {Array} array The array to inspect.
-     * @param {number} start The start position.
-     * @param {number} [end=array.length] The end position.
-     * @returns {Array} Returns the cast slice.
-     */
-    function castSlice(array, start, end) {
-      var length = array.length;
-      end = end === undefined ? length : end;
-      return (!start && end >= length) ? array : baseSlice(array, start, end);
-    }
- 
-    /**
-     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).
-     *
-     * @private
-     * @param {number|Object} id The timer id or timeout object of the timer to clear.
-     */
-    var clearTimeout = ctxClearTimeout || function(id) {
-      return root.clearTimeout(id);
-    };
- 
-    /**
-     * Creates a clone of  `buffer`.
-     *
-     * @private
-     * @param {Buffer} buffer The buffer to clone.
-     * @param {boolean} [isDeep] Specify a deep clone.
-     * @returns {Buffer} Returns the cloned buffer.
-     */
-    function cloneBuffer(buffer, isDeep) {
-      if (isDeep) {
-        return buffer.slice();
-      }
-      var length = buffer.length,
-          result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
- 
-      buffer.copy(result);
-      return result;
-    }
- 
-    /**
-     * Creates a clone of `arrayBuffer`.
-     *
-     * @private
-     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
-     * @returns {ArrayBuffer} Returns the cloned array buffer.
-     */
-    function cloneArrayBuffer(arrayBuffer) {
-      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
-      new Uint8Array(result).set(new Uint8Array(arrayBuffer));
-      return result;
-    }
- 
-    /**
-     * Creates a clone of `dataView`.
-     *
-     * @private
-     * @param {Object} dataView The data view to clone.
-     * @param {boolean} [isDeep] Specify a deep clone.
-     * @returns {Object} Returns the cloned data view.
-     */
-    function cloneDataView(dataView, isDeep) {
-      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
-      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
-    }
- 
-    /**
-     * Creates a clone of `map`.
-     *
-     * @private
-     * @param {Object} map The map to clone.
-     * @param {Function} cloneFunc The function to clone values.
-     * @param {boolean} [isDeep] Specify a deep clone.
-     * @returns {Object} Returns the cloned map.
-     */
-    function cloneMap(map, isDeep, cloneFunc) {
-      var array = isDeep ? cloneFunc(mapToArray(map), CLONE_DEEP_FLAG) : mapToArray(map);
-      return arrayReduce(array, addMapEntry, new map.constructor);
-    }
- 
-    /**
-     * Creates a clone of `regexp`.
-     *
-     * @private
-     * @param {Object} regexp The regexp to clone.
-     * @returns {Object} Returns the cloned regexp.
-     */
-    function cloneRegExp(regexp) {
-      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
-      result.lastIndex = regexp.lastIndex;
-      return result;
-    }
- 
-    /**
-     * Creates a clone of `set`.
-     *
-     * @private
-     * @param {Object} set The set to clone.
-     * @param {Function} cloneFunc The function to clone values.
-     * @param {boolean} [isDeep] Specify a deep clone.
-     * @returns {Object} Returns the cloned set.
-     */
-    function cloneSet(set, isDeep, cloneFunc) {
-      var array = isDeep ? cloneFunc(setToArray(set), CLONE_DEEP_FLAG) : setToArray(set);
-      return arrayReduce(array, addSetEntry, new set.constructor);
-    }
- 
-    /**
-     * Creates a clone of the `symbol` object.
-     *
-     * @private
-     * @param {Object} symbol The symbol object to clone.
-     * @returns {Object} Returns the cloned symbol object.
-     */
-    function cloneSymbol(symbol) {
-      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
-    }
- 
-    /**
-     * Creates a clone of `typedArray`.
-     *
-     * @private
-     * @param {Object} typedArray The typed array to clone.
-     * @param {boolean} [isDeep] Specify a deep clone.
-     * @returns {Object} Returns the cloned typed array.
-     */
-    function cloneTypedArray(typedArray, isDeep) {
-      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
-      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
-    }
- 
-    /**
-     * Compares values to sort them in ascending order.
-     *
-     * @private
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {number} Returns the sort order indicator for `value`.
-     */
-    function compareAscending(value, other) {
-      if (value !== other) {
-        var valIsDefined = value !== undefined,
-            valIsNull = value === null,
-            valIsReflexive = value === value,
-            valIsSymbol = isSymbol(value);
- 
-        var othIsDefined = other !== undefined,
-            othIsNull = other === null,
-            othIsReflexive = other === other,
-            othIsSymbol = isSymbol(other);
- 
-        if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
-            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
-            (valIsNull && othIsDefined && othIsReflexive) ||
-            (!valIsDefined && othIsReflexive) ||
-            !valIsReflexive) {
-          return 1;
-        }
-        if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
-            (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
-            (othIsNull && valIsDefined && valIsReflexive) ||
-            (!othIsDefined && valIsReflexive) ||
-            !othIsReflexive) {
-          return -1;
-        }
-      }
-      return 0;
-    }
- 
-    /**
-     * Used by `_.orderBy` to compare multiple properties of a value to another
-     * and stable sort them.
-     *
-     * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
-     * specify an order of "desc" for descending or "asc" for ascending sort order
-     * of corresponding values.
-     *
-     * @private
-     * @param {Object} object The object to compare.
-     * @param {Object} other The other object to compare.
-     * @param {boolean[]|string[]} orders The order to sort by for each property.
-     * @returns {number} Returns the sort order indicator for `object`.
-     */
-    function compareMultiple(object, other, orders) {
-      var index = -1,
-          objCriteria = object.criteria,
-          othCriteria = other.criteria,
-          length = objCriteria.length,
-          ordersLength = orders.length;
- 
-      while (++index < length) {
-        var result = compareAscending(objCriteria[index], othCriteria[index]);
-        if (result) {
-          if (index >= ordersLength) {
-            return result;
-          }
-          var order = orders[index];
-          return result * (order == 'desc' ? -1 : 1);
-        }
-      }
-      // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
-      // that causes it, under certain circumstances, to provide the same value for
-      // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
-      // for more details.
-      //
-      // This also ensures a stable sort in V8 and other engines.
-      // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
-      return object.index - other.index;
-    }
- 
-    /**
-     * Creates an array that is the composition of partially applied arguments,
-     * placeholders, and provided arguments into a single array of arguments.
-     *
-     * @private
-     * @param {Array} args The provided arguments.
-     * @param {Array} partials The arguments to prepend to those provided.
-     * @param {Array} holders The `partials` placeholder indexes.
-     * @params {boolean} [isCurried] Specify composing for a curried function.
-     * @returns {Array} Returns the new array of composed arguments.
-     */
-    function composeArgs(args, partials, holders, isCurried) {
-      var argsIndex = -1,
-          argsLength = args.length,
-          holdersLength = holders.length,
-          leftIndex = -1,
-          leftLength = partials.length,
-          rangeLength = nativeMax(argsLength - holdersLength, 0),
-          result = Array(leftLength + rangeLength),
-          isUncurried = !isCurried;
- 
-      while (++leftIndex < leftLength) {
-        result[leftIndex] = partials[leftIndex];
-      }
-      while (++argsIndex < holdersLength) {
-        if (isUncurried || argsIndex < argsLength) {
-          result[holders[argsIndex]] = args[argsIndex];
-        }
-      }
-      while (rangeLength--) {
-        result[leftIndex++] = args[argsIndex++];
-      }
-      return result;
-    }
- 
-    /**
-     * This function is like `composeArgs` except that the arguments composition
-     * is tailored for `_.partialRight`.
-     *
-     * @private
-     * @param {Array} args The provided arguments.
-     * @param {Array} partials The arguments to append to those provided.
-     * @param {Array} holders The `partials` placeholder indexes.
-     * @params {boolean} [isCurried] Specify composing for a curried function.
-     * @returns {Array} Returns the new array of composed arguments.
-     */
-    function composeArgsRight(args, partials, holders, isCurried) {
-      var argsIndex = -1,
-          argsLength = args.length,
-          holdersIndex = -1,
-          holdersLength = holders.length,
-          rightIndex = -1,
-          rightLength = partials.length,
-          rangeLength = nativeMax(argsLength - holdersLength, 0),
-          result = Array(rangeLength + rightLength),
-          isUncurried = !isCurried;
- 
-      while (++argsIndex < rangeLength) {
-        result[argsIndex] = args[argsIndex];
-      }
-      var offset = argsIndex;
-      while (++rightIndex < rightLength) {
-        result[offset + rightIndex] = partials[rightIndex];
-      }
-      while (++holdersIndex < holdersLength) {
-        if (isUncurried || argsIndex < argsLength) {
-          result[offset + holders[holdersIndex]] = args[argsIndex++];
-        }
-      }
-      return result;
-    }
- 
-    /**
-     * Copies the values of `source` to `array`.
-     *
-     * @private
-     * @param {Array} source The array to copy values from.
-     * @param {Array} [array=[]] The array to copy values to.
-     * @returns {Array} Returns `array`.
-     */
-    function copyArray(source, array) {
-      var index = -1,
-          length = source.length;
- 
-      array || (array = Array(length));
-      while (++index < length) {
-        array[index] = source[index];
-      }
-      return array;
-    }
- 
-    /**
-     * Copies properties of `source` to `object`.
-     *
-     * @private
-     * @param {Object} source The object to copy properties from.
-     * @param {Array} props The property identifiers to copy.
-     * @param {Object} [object={}] The object to copy properties to.
-     * @param {Function} [customizer] The function to customize copied values.
-     * @returns {Object} Returns `object`.
-     */
-    function copyObject(source, props, object, customizer) {
-      var isNew = !object;
-      object || (object = {});
- 
-      var index = -1,
-          length = props.length;
- 
-      while (++index < length) {
-        var key = props[index];
- 
-        var newValue = customizer
-          ? customizer(object[key], source[key], key, object, source)
-          : undefined;
- 
-        if (newValue === undefined) {
-          newValue = source[key];
-        }
-        if (isNew) {
-          baseAssignValue(object, key, newValue);
-        } else {
-          assignValue(object, key, newValue);
-        }
-      }
-      return object;
-    }
- 
-    /**
-     * Copies own symbols of `source` to `object`.
-     *
-     * @private
-     * @param {Object} source The object to copy symbols from.
-     * @param {Object} [object={}] The object to copy symbols to.
-     * @returns {Object} Returns `object`.
-     */
-    function copySymbols(source, object) {
-      return copyObject(source, getSymbols(source), object);
-    }
- 
-    /**
-     * Copies own and inherited symbols of `source` to `object`.
-     *
-     * @private
-     * @param {Object} source The object to copy symbols from.
-     * @param {Object} [object={}] The object to copy symbols to.
-     * @returns {Object} Returns `object`.
-     */
-    function copySymbolsIn(source, object) {
-      return copyObject(source, getSymbolsIn(source), object);
-    }
- 
-    /**
-     * Creates a function like `_.groupBy`.
-     *
-     * @private
-     * @param {Function} setter The function to set accumulator values.
-     * @param {Function} [initializer] The accumulator object initializer.
-     * @returns {Function} Returns the new aggregator function.
-     */
-    function createAggregator(setter, initializer) {
-      return function(collection, iteratee) {
-        var func = isArray(collection) ? arrayAggregator : baseAggregator,
-            accumulator = initializer ? initializer() : {};
- 
-        return func(collection, setter, getIteratee(iteratee, 2), accumulator);
-      };
-    }
- 
-    /**
-     * Creates a function like `_.assign`.
-     *
-     * @private
-     * @param {Function} assigner The function to assign values.
-     * @returns {Function} Returns the new assigner function.
-     */
-    function createAssigner(assigner) {
-      return baseRest(function(object, sources) {
-        var index = -1,
-            length = sources.length,
-            customizer = length > 1 ? sources[length - 1] : undefined,
-            guard = length > 2 ? sources[2] : undefined;
- 
-        customizer = (assigner.length > 3 && typeof customizer == 'function')
-          ? (length--, customizer)
-          : undefined;
- 
-        if (guard && isIterateeCall(sources[0], sources[1], guard)) {
-          customizer = length < 3 ? undefined : customizer;
-          length = 1;
-        }
-        object = Object(object);
-        while (++index < length) {
-          var source = sources[index];
-          if (source) {
-            assigner(object, source, index, customizer);
-          }
-        }
-        return object;
-      });
-    }
- 
-    /**
-     * Creates a `baseEach` or `baseEachRight` function.
-     *
-     * @private
-     * @param {Function} eachFunc The function to iterate over a collection.
-     * @param {boolean} [fromRight] Specify iterating from right to left.
-     * @returns {Function} Returns the new base function.
-     */
-    function createBaseEach(eachFunc, fromRight) {
-      return function(collection, iteratee) {
-        if (collection == null) {
-          return collection;
-        }
-        if (!isArrayLike(collection)) {
-          return eachFunc(collection, iteratee);
-        }
-        var length = collection.length,
-            index = fromRight ? length : -1,
-            iterable = Object(collection);
- 
-        while ((fromRight ? index-- : ++index < length)) {
-          if (iteratee(iterable[index], index, iterable) === false) {
-            break;
-          }
-        }
-        return collection;
-      };
-    }
- 
-    /**
-     * Creates a base function for methods like `_.forIn` and `_.forOwn`.
-     *
-     * @private
-     * @param {boolean} [fromRight] Specify iterating from right to left.
-     * @returns {Function} Returns the new base function.
-     */
-    function createBaseFor(fromRight) {
-      return function(object, iteratee, keysFunc) {
-        var index = -1,
-            iterable = Object(object),
-            props = keysFunc(object),
-            length = props.length;
- 
-        while (length--) {
-          var key = props[fromRight ? length : ++index];
-          if (iteratee(iterable[key], key, iterable) === false) {
-            break;
-          }
-        }
-        return object;
-      };
-    }
- 
-    /**
-     * Creates a function that wraps `func` to invoke it with the optional `this`
-     * binding of `thisArg`.
-     *
-     * @private
-     * @param {Function} func The function to wrap.
-     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-     * @param {*} [thisArg] The `this` binding of `func`.
-     * @returns {Function} Returns the new wrapped function.
-     */
-    function createBind(func, bitmask, thisArg) {
-      var isBind = bitmask & WRAP_BIND_FLAG,
-          Ctor = createCtor(func);
- 
-      function wrapper() {
-        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
-        return fn.apply(isBind ? thisArg : this, arguments);
-      }
-      return wrapper;
-    }
- 
-    /**
-     * Creates a function like `_.lowerFirst`.
-     *
-     * @private
-     * @param {string} methodName The name of the `String` case method to use.
-     * @returns {Function} Returns the new case function.
-     */
-    function createCaseFirst(methodName) {
-      return function(string) {
-        string = toString(string);
- 
-        var strSymbols = hasUnicode(string)
-          ? stringToArray(string)
-          : undefined;
- 
-        var chr = strSymbols
-          ? strSymbols[0]
-          : string.charAt(0);
- 
-        var trailing = strSymbols
-          ? castSlice(strSymbols, 1).join('')
-          : string.slice(1);
- 
-        return chr[methodName]() + trailing;
-      };
-    }
- 
-    /**
-     * Creates a function like `_.camelCase`.
-     *
-     * @private
-     * @param {Function} callback The function to combine each word.
-     * @returns {Function} Returns the new compounder function.
-     */
-    function createCompounder(callback) {
-      return function(string) {
-        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
-      };
-    }
- 
-    /**
-     * Creates a function that produces an instance of `Ctor` regardless of
-     * whether it was invoked as part of a `new` expression or by `call` or `apply`.
-     *
-     * @private
-     * @param {Function} Ctor The constructor to wrap.
-     * @returns {Function} Returns the new wrapped function.
-     */
-    function createCtor(Ctor) {
-      return function() {
-        // Use a `switch` statement to work with class constructors. See
-        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
-        // for more details.
-        var args = arguments;
-        switch (args.length) {
-          case 0: return new Ctor;
-          case 1: return new Ctor(args[0]);
-          case 2: return new Ctor(args[0], args[1]);
-          case 3: return new Ctor(args[0], args[1], args[2]);
-          case 4: return new Ctor(args[0], args[1], args[2], args[3]);
-          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
-          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
-          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
-        }
-        var thisBinding = baseCreate(Ctor.prototype),
-            result = Ctor.apply(thisBinding, args);
- 
-        // Mimic the constructor's `return` behavior.
-        // See https://es5.github.io/#x13.2.2 for more details.
-        return isObject(result) ? result : thisBinding;
-      };
-    }
- 
-    /**
-     * Creates a function that wraps `func` to enable currying.
-     *
-     * @private
-     * @param {Function} func The function to wrap.
-     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-     * @param {number} arity The arity of `func`.
-     * @returns {Function} Returns the new wrapped function.
-     */
-    function createCurry(func, bitmask, arity) {
-      var Ctor = createCtor(func);
- 
-      function wrapper() {
-        var length = arguments.length,
-            args = Array(length),
-            index = length,
-            placeholder = getHolder(wrapper);
- 
-        while (index--) {
-          args[index] = arguments[index];
-        }
-        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)
-          ? []
-          : replaceHolders(args, placeholder);
- 
-        length -= holders.length;
-        if (length < arity) {
-          return createRecurry(
-            func, bitmask, createHybrid, wrapper.placeholder, undefined,
-            args, holders, undefined, undefined, arity - length);
-        }
-        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
-        return apply(fn, this, args);
-      }
-      return wrapper;
-    }
- 
-    /**
-     * Creates a `_.find` or `_.findLast` function.
-     *
-     * @private
-     * @param {Function} findIndexFunc The function to find the collection index.
-     * @returns {Function} Returns the new find function.
-     */
-    function createFind(findIndexFunc) {
-      return function(collection, predicate, fromIndex) {
-        var iterable = Object(collection);
-        if (!isArrayLike(collection)) {
-          var iteratee = getIteratee(predicate, 3);
-          collection = keys(collection);
-          predicate = function(key) { return iteratee(iterable[key], key, iterable); };
-        }
-        var index = findIndexFunc(collection, predicate, fromIndex);
-        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
-      };
-    }
- 
-    /**
-     * Creates a `_.flow` or `_.flowRight` function.
-     *
-     * @private
-     * @param {boolean} [fromRight] Specify iterating from right to left.
-     * @returns {Function} Returns the new flow function.
-     */
-    function createFlow(fromRight) {
-      return flatRest(function(funcs) {
-        var length = funcs.length,
-            index = length,
-            prereq = LodashWrapper.prototype.thru;
- 
-        if (fromRight) {
-          funcs.reverse();
-        }
-        while (index--) {
-          var func = funcs[index];
-          if (typeof func != 'function') {
-            throw new TypeError(FUNC_ERROR_TEXT);
-          }
-          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
-            var wrapper = new LodashWrapper([], true);
-          }
-        }
-        index = wrapper ? index : length;
-        while (++index < length) {
-          func = funcs[index];
- 
-          var funcName = getFuncName(func),
-              data = funcName == 'wrapper' ? getData(func) : undefined;
- 
-          if (data && isLaziable(data[0]) &&
-                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
-                !data[4].length && data[9] == 1
-              ) {
-            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
-          } else {
-            wrapper = (func.length == 1 && isLaziable(func))
-              ? wrapper[funcName]()
-              : wrapper.thru(func);
-          }
-        }
-        return function() {
-          var args = arguments,
-              value = args[0];
- 
-          if (wrapper && args.length == 1 && isArray(value)) {
-            return wrapper.plant(value).value();
-          }
-          var index = 0,
-              result = length ? funcs[index].apply(this, args) : value;
- 
-          while (++index < length) {
-            result = funcs[index].call(this, result);
-          }
-          return result;
-        };
-      });
-    }
- 
-    /**
-     * Creates a function that wraps `func` to invoke it with optional `this`
-     * binding of `thisArg`, partial application, and currying.
-     *
-     * @private
-     * @param {Function|string} func The function or method name to wrap.
-     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-     * @param {*} [thisArg] The `this` binding of `func`.
-     * @param {Array} [partials] The arguments to prepend to those provided to
-     *  the new function.
-     * @param {Array} [holders] The `partials` placeholder indexes.
-     * @param {Array} [partialsRight] The arguments to append to those provided
-     *  to the new function.
-     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
-     * @param {Array} [argPos] The argument positions of the new function.
-     * @param {number} [ary] The arity cap of `func`.
-     * @param {number} [arity] The arity of `func`.
-     * @returns {Function} Returns the new wrapped function.
-     */
-    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
-      var isAry = bitmask & WRAP_ARY_FLAG,
-          isBind = bitmask & WRAP_BIND_FLAG,
-          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,
-          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),
-          isFlip = bitmask & WRAP_FLIP_FLAG,
-          Ctor = isBindKey ? undefined : createCtor(func);
- 
-      function wrapper() {
-        var length = arguments.length,
-            args = Array(length),
-            index = length;
- 
-        while (index--) {
-          args[index] = arguments[index];
-        }
-        if (isCurried) {
-          var placeholder = getHolder(wrapper),
-              holdersCount = countHolders(args, placeholder);
-        }
-        if (partials) {
-          args = composeArgs(args, partials, holders, isCurried);
-        }
-        if (partialsRight) {
-          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
-        }
-        length -= holdersCount;
-        if (isCurried && length < arity) {
-          var newHolders = replaceHolders(args, placeholder);
-          return createRecurry(
-            func, bitmask, createHybrid, wrapper.placeholder, thisArg,
-            args, newHolders, argPos, ary, arity - length
-          );
-        }
-        var thisBinding = isBind ? thisArg : this,
-            fn = isBindKey ? thisBinding[func] : func;
- 
-        length = args.length;
-        if (argPos) {
-          args = reorder(args, argPos);
-        } else if (isFlip && length > 1) {
-          args.reverse();
-        }
-        if (isAry && ary < length) {
-          args.length = ary;
-        }
-        if (this && this !== root && this instanceof wrapper) {
-          fn = Ctor || createCtor(fn);
-        }
-        return fn.apply(thisBinding, args);
-      }
-      return wrapper;
-    }
- 
-    /**
-     * Creates a function like `_.invertBy`.
-     *
-     * @private
-     * @param {Function} setter The function to set accumulator values.
-     * @param {Function} toIteratee The function to resolve iteratees.
-     * @returns {Function} Returns the new inverter function.
-     */
-    function createInverter(setter, toIteratee) {
-      return function(object, iteratee) {
-        return baseInverter(object, setter, toIteratee(iteratee), {});
-      };
-    }
- 
-    /**
-     * Creates a function that performs a mathematical operation on two values.
-     *
-     * @private
-     * @param {Function} operator The function to perform the operation.
-     * @param {number} [defaultValue] The value used for `undefined` arguments.
-     * @returns {Function} Returns the new mathematical operation function.
-     */
-    function createMathOperation(operator, defaultValue) {
-      return function(value, other) {
-        var result;
-        if (value === undefined && other === undefined) {
-          return defaultValue;
-        }
-        if (value !== undefined) {
-          result = value;
-        }
-        if (other !== undefined) {
-          if (result === undefined) {
-            return other;
-          }
-          if (typeof value == 'string' || typeof other == 'string') {
-            value = baseToString(value);
-            other = baseToString(other);
-          } else {
-            value = baseToNumber(value);
-            other = baseToNumber(other);
-          }
-          result = operator(value, other);
-        }
-        return result;
-      };
-    }
- 
-    /**
-     * Creates a function like `_.over`.
-     *
-     * @private
-     * @param {Function} arrayFunc The function to iterate over iteratees.
-     * @returns {Function} Returns the new over function.
-     */
-    function createOver(arrayFunc) {
-      return flatRest(function(iteratees) {
-        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
-        return baseRest(function(args) {
-          var thisArg = this;
-          return arrayFunc(iteratees, function(iteratee) {
-            return apply(iteratee, thisArg, args);
-          });
-        });
-      });
-    }
- 
-    /**
-     * Creates the padding for `string` based on `length`. The `chars` string
-     * is truncated if the number of characters exceeds `length`.
-     *
-     * @private
-     * @param {number} length The padding length.
-     * @param {string} [chars=' '] The string used as padding.
-     * @returns {string} Returns the padding for `string`.
-     */
-    function createPadding(length, chars) {
-      chars = chars === undefined ? ' ' : baseToString(chars);
- 
-      var charsLength = chars.length;
-      if (charsLength < 2) {
-        return charsLength ? baseRepeat(chars, length) : chars;
-      }
-      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
-      return hasUnicode(chars)
-        ? castSlice(stringToArray(result), 0, length).join('')
-        : result.slice(0, length);
-    }
- 
-    /**
-     * Creates a function that wraps `func` to invoke it with the `this` binding
-     * of `thisArg` and `partials` prepended to the arguments it receives.
-     *
-     * @private
-     * @param {Function} func The function to wrap.
-     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-     * @param {*} thisArg The `this` binding of `func`.
-     * @param {Array} partials The arguments to prepend to those provided to
-     *  the new function.
-     * @returns {Function} Returns the new wrapped function.
-     */
-    function createPartial(func, bitmask, thisArg, partials) {
-      var isBind = bitmask & WRAP_BIND_FLAG,
-          Ctor = createCtor(func);
- 
-      function wrapper() {
-        var argsIndex = -1,
-            argsLength = arguments.length,
-            leftIndex = -1,
-            leftLength = partials.length,
-            args = Array(leftLength + argsLength),
-            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
- 
-        while (++leftIndex < leftLength) {
-          args[leftIndex] = partials[leftIndex];
-        }
-        while (argsLength--) {
-          args[leftIndex++] = arguments[++argsIndex];
-        }
-        return apply(fn, isBind ? thisArg : this, args);
-      }
-      return wrapper;
-    }
- 
-    /**
-     * Creates a `_.range` or `_.rangeRight` function.
-     *
-     * @private
-     * @param {boolean} [fromRight] Specify iterating from right to left.
-     * @returns {Function} Returns the new range function.
-     */
-    function createRange(fromRight) {
-      return function(start, end, step) {
-        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {
-          end = step = undefined;
-        }
-        // Ensure the sign of `-0` is preserved.
-        start = toFinite(start);
-        if (end === undefined) {
-          end = start;
-          start = 0;
-        } else {
-          end = toFinite(end);
-        }
-        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
-        return baseRange(start, end, step, fromRight);
-      };
-    }
- 
-    /**
-     * Creates a function that performs a relational operation on two values.
-     *
-     * @private
-     * @param {Function} operator The function to perform the operation.
-     * @returns {Function} Returns the new relational operation function.
-     */
-    function createRelationalOperation(operator) {
-      return function(value, other) {
-        if (!(typeof value == 'string' && typeof other == 'string')) {
-          value = toNumber(value);
-          other = toNumber(other);
-        }
-        return operator(value, other);
-      };
-    }
- 
-    /**
-     * Creates a function that wraps `func` to continue currying.
-     *
-     * @private
-     * @param {Function} func The function to wrap.
-     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-     * @param {Function} wrapFunc The function to create the `func` wrapper.
-     * @param {*} placeholder The placeholder value.
-     * @param {*} [thisArg] The `this` binding of `func`.
-     * @param {Array} [partials] The arguments to prepend to those provided to
-     *  the new function.
-     * @param {Array} [holders] The `partials` placeholder indexes.
-     * @param {Array} [argPos] The argument positions of the new function.
-     * @param {number} [ary] The arity cap of `func`.
-     * @param {number} [arity] The arity of `func`.
-     * @returns {Function} Returns the new wrapped function.
-     */
-    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
-      var isCurry = bitmask & WRAP_CURRY_FLAG,
-          newHolders = isCurry ? holders : undefined,
-          newHoldersRight = isCurry ? undefined : holders,
-          newPartials = isCurry ? partials : undefined,
-          newPartialsRight = isCurry ? undefined : partials;
- 
-      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);
-      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
- 
-      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
-        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
-      }
-      var newData = [
-        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,
-        newHoldersRight, argPos, ary, arity
-      ];
- 
-      var result = wrapFunc.apply(undefined, newData);
-      if (isLaziable(func)) {
-        setData(result, newData);
-      }
-      result.placeholder = placeholder;
-      return setWrapToString(result, func, bitmask);
-    }
- 
-    /**
-     * Creates a function like `_.round`.
-     *
-     * @private
-     * @param {string} methodName The name of the `Math` method to use when rounding.
-     * @returns {Function} Returns the new round function.
-     */
-    function createRound(methodName) {
-      var func = Math[methodName];
-      return function(number, precision) {
-        number = toNumber(number);
-        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
-        if (precision) {
-          // Shift with exponential notation to avoid floating-point issues.
-          // See [MDN](https://mdn.io/round#Examples) for more details.
-          var pair = (toString(number) + 'e').split('e'),
-              value = func(pair[0] + 'e' + (+pair[1] + precision));
- 
-          pair = (toString(value) + 'e').split('e');
-          return +(pair[0] + 'e' + (+pair[1] - precision));
-        }
-        return func(number);
-      };
-    }
- 
-    /**
-     * Creates a set object of `values`.
-     *
-     * @private
-     * @param {Array} values The values to add to the set.
-     * @returns {Object} Returns the new set.
-     */
-    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
-      return new Set(values);
-    };
- 
-    /**
-     * Creates a `_.toPairs` or `_.toPairsIn` function.
-     *
-     * @private
-     * @param {Function} keysFunc The function to get the keys of a given object.
-     * @returns {Function} Returns the new pairs function.
-     */
-    function createToPairs(keysFunc) {
-      return function(object) {
-        var tag = getTag(object);
-        if (tag == mapTag) {
-          return mapToArray(object);
-        }
-        if (tag == setTag) {
-          return setToPairs(object);
-        }
-        return baseToPairs(object, keysFunc(object));
-      };
-    }
- 
-    /**
-     * Creates a function that either curries or invokes `func` with optional
-     * `this` binding and partially applied arguments.
-     *
-     * @private
-     * @param {Function|string} func The function or method name to wrap.
-     * @param {number} bitmask The bitmask flags.
-     *    1 - `_.bind`
-     *    2 - `_.bindKey`
-     *    4 - `_.curry` or `_.curryRight` of a bound function
-     *    8 - `_.curry`
-     *   16 - `_.curryRight`
-     *   32 - `_.partial`
-     *   64 - `_.partialRight`
-     *  128 - `_.rearg`
-     *  256 - `_.ary`
-     *  512 - `_.flip`
-     * @param {*} [thisArg] The `this` binding of `func`.
-     * @param {Array} [partials] The arguments to be partially applied.
-     * @param {Array} [holders] The `partials` placeholder indexes.
-     * @param {Array} [argPos] The argument positions of the new function.
-     * @param {number} [ary] The arity cap of `func`.
-     * @param {number} [arity] The arity of `func`.
-     * @returns {Function} Returns the new wrapped function.
-     */
-    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
-      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
-      if (!isBindKey && typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      var length = partials ? partials.length : 0;
-      if (!length) {
-        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
-        partials = holders = undefined;
-      }
-      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
-      arity = arity === undefined ? arity : toInteger(arity);
-      length -= holders ? holders.length : 0;
- 
-      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
-        var partialsRight = partials,
-            holdersRight = holders;
- 
-        partials = holders = undefined;
-      }
-      var data = isBindKey ? undefined : getData(func);
- 
-      var newData = [
-        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,
-        argPos, ary, arity
-      ];
- 
-      if (data) {
-        mergeData(newData, data);
-      }
-      func = newData[0];
-      bitmask = newData[1];
-      thisArg = newData[2];
-      partials = newData[3];
-      holders = newData[4];
-      arity = newData[9] = newData[9] === undefined
-        ? (isBindKey ? 0 : func.length)
-        : nativeMax(newData[9] - length, 0);
- 
-      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
-        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
-      }
-      if (!bitmask || bitmask == WRAP_BIND_FLAG) {
-        var result = createBind(func, bitmask, thisArg);
-      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
-        result = createCurry(func, bitmask, arity);
-      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
-        result = createPartial(func, bitmask, thisArg, partials);
-      } else {
-        result = createHybrid.apply(undefined, newData);
-      }
-      var setter = data ? baseSetData : setData;
-      return setWrapToString(setter(result, newData), func, bitmask);
-    }
- 
-    /**
-     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties
-     * of source objects to the destination object for all destination properties
-     * that resolve to `undefined`.
-     *
-     * @private
-     * @param {*} objValue The destination value.
-     * @param {*} srcValue The source value.
-     * @param {string} key The key of the property to assign.
-     * @param {Object} object The parent object of `objValue`.
-     * @returns {*} Returns the value to assign.
-     */
-    function customDefaultsAssignIn(objValue, srcValue, key, object) {
-      if (objValue === undefined ||
-          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
-        return srcValue;
-      }
-      return objValue;
-    }
- 
-    /**
-     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source
-     * objects into destination objects that are passed thru.
-     *
-     * @private
-     * @param {*} objValue The destination value.
-     * @param {*} srcValue The source value.
-     * @param {string} key The key of the property to merge.
-     * @param {Object} object The parent object of `objValue`.
-     * @param {Object} source The parent object of `srcValue`.
-     * @param {Object} [stack] Tracks traversed source values and their merged
-     *  counterparts.
-     * @returns {*} Returns the value to assign.
-     */
-    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
-      if (isObject(objValue) && isObject(srcValue)) {
-        // Recursively merge objects and arrays (susceptible to call stack limits).
-        stack.set(srcValue, objValue);
-        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
-        stack['delete'](srcValue);
-      }
-      return objValue;
-    }
- 
-    /**
-     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
-     * objects.
-     *
-     * @private
-     * @param {*} value The value to inspect.
-     * @param {string} key The key of the property to inspect.
-     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
-     */
-    function customOmitClone(value, key) {
-      return (key !== undefined && isPlainObject(value)) ? undefined : value;
-    }
- 
-    /**
-     * A specialized version of `baseIsEqualDeep` for arrays with support for
-     * partial deep comparisons.
-     *
-     * @private
-     * @param {Array} array The array to compare.
-     * @param {Array} other The other array to compare.
-     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
-     * @param {Function} customizer The function to customize comparisons.
-     * @param {Function} equalFunc The function to determine equivalents of values.
-     * @param {Object} stack Tracks traversed `array` and `other` objects.
-     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
-     */
-    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
-      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
-          arrLength = array.length,
-          othLength = other.length;
- 
-      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
-        return false;
-      }
-      // Assume cyclic values are equal.
-      var stacked = stack.get(array);
-      if (stacked && stack.get(other)) {
-        return stacked == other;
-      }
-      var index = -1,
-          result = true,
-          seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
- 
-      stack.set(array, other);
-      stack.set(other, array);
- 
-      // Ignore non-index properties.
-      while (++index < arrLength) {
-        var arrValue = array[index],
-            othValue = other[index];
- 
-        if (customizer) {
-          var compared = isPartial
-            ? customizer(othValue, arrValue, index, other, array, stack)
-            : customizer(arrValue, othValue, index, array, other, stack);
-        }
-        if (compared !== undefined) {
-          if (compared) {
-            continue;
-          }
-          result = false;
-          break;
-        }
-        // Recursively compare arrays (susceptible to call stack limits).
-        if (seen) {
-          if (!arraySome(other, function(othValue, othIndex) {
-                if (!cacheHas(seen, othIndex) &&
-                    (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
-                  return seen.push(othIndex);
-                }
-              })) {
-            result = false;
-            break;
-          }
-        } else if (!(
-              arrValue === othValue ||
-                equalFunc(arrValue, othValue, bitmask, customizer, stack)
-            )) {
-          result = false;
-          break;
-        }
-      }
-      stack['delete'](array);
-      stack['delete'](other);
-      return result;
-    }
- 
-    /**
-     * A specialized version of `baseIsEqualDeep` for comparing objects of
-     * the same `toStringTag`.
-     *
-     * **Note:** This function only supports comparing values with tags of
-     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
-     *
-     * @private
-     * @param {Object} object The object to compare.
-     * @param {Object} other The other object to compare.
-     * @param {string} tag The `toStringTag` of the objects to compare.
-     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
-     * @param {Function} customizer The function to customize comparisons.
-     * @param {Function} equalFunc The function to determine equivalents of values.
-     * @param {Object} stack Tracks traversed `object` and `other` objects.
-     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
-     */
-    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
-      switch (tag) {
-        case dataViewTag:
-          if ((object.byteLength != other.byteLength) ||
-              (object.byteOffset != other.byteOffset)) {
-            return false;
-          }
-          object = object.buffer;
-          other = other.buffer;
- 
-        case arrayBufferTag:
-          if ((object.byteLength != other.byteLength) ||
-              !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
-            return false;
-          }
-          return true;
- 
-        case boolTag:
-        case dateTag:
-        case numberTag:
-          // Coerce booleans to `1` or `0` and dates to milliseconds.
-          // Invalid dates are coerced to `NaN`.
-          return eq(+object, +other);
- 
-        case errorTag:
-          return object.name == other.name && object.message == other.message;
- 
-        case regexpTag:
-        case stringTag:
-          // Coerce regexes to strings and treat strings, primitives and objects,
-          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
-          // for more details.
-          return object == (other + '');
- 
-        case mapTag:
-          var convert = mapToArray;
- 
-        case setTag:
-          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
-          convert || (convert = setToArray);
- 
-          if (object.size != other.size && !isPartial) {
-            return false;
-          }
-          // Assume cyclic values are equal.
-          var stacked = stack.get(object);
-          if (stacked) {
-            return stacked == other;
-          }
-          bitmask |= COMPARE_UNORDERED_FLAG;
- 
-          // Recursively compare objects (susceptible to call stack limits).
-          stack.set(object, other);
-          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
-          stack['delete'](object);
-          return result;
- 
-        case symbolTag:
-          if (symbolValueOf) {
-            return symbolValueOf.call(object) == symbolValueOf.call(other);
-          }
-      }
-      return false;
-    }
- 
-    /**
-     * A specialized version of `baseIsEqualDeep` for objects with support for
-     * partial deep comparisons.
-     *
-     * @private
-     * @param {Object} object The object to compare.
-     * @param {Object} other The other object to compare.
-     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
-     * @param {Function} customizer The function to customize comparisons.
-     * @param {Function} equalFunc The function to determine equivalents of values.
-     * @param {Object} stack Tracks traversed `object` and `other` objects.
-     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
-     */
-    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
-      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
-          objProps = getAllKeys(object),
-          objLength = objProps.length,
-          othProps = getAllKeys(other),
-          othLength = othProps.length;
- 
-      if (objLength != othLength && !isPartial) {
-        return false;
-      }
-      var index = objLength;
-      while (index--) {
-        var key = objProps[index];
-        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
-          return false;
-        }
-      }
-      // Assume cyclic values are equal.
-      var stacked = stack.get(object);
-      if (stacked && stack.get(other)) {
-        return stacked == other;
-      }
-      var result = true;
-      stack.set(object, other);
-      stack.set(other, object);
- 
-      var skipCtor = isPartial;
-      while (++index < objLength) {
-        key = objProps[index];
-        var objValue = object[key],
-            othValue = other[key];
- 
-        if (customizer) {
-          var compared = isPartial
-            ? customizer(othValue, objValue, key, other, object, stack)
-            : customizer(objValue, othValue, key, object, other, stack);
-        }
-        // Recursively compare objects (susceptible to call stack limits).
-        if (!(compared === undefined
-              ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
-              : compared
-            )) {
-          result = false;
-          break;
-        }
-        skipCtor || (skipCtor = key == 'constructor');
-      }
-      if (result && !skipCtor) {
-        var objCtor = object.constructor,
-            othCtor = other.constructor;
- 
-        // Non `Object` object instances with different constructors are not equal.
-        if (objCtor != othCtor &&
-            ('constructor' in object && 'constructor' in other) &&
-            !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
-              typeof othCtor == 'function' && othCtor instanceof othCtor)) {
-          result = false;
-        }
-      }
-      stack['delete'](object);
-      stack['delete'](other);
-      return result;
-    }
- 
-    /**
-     * A specialized version of `baseRest` which flattens the rest array.
-     *
-     * @private
-     * @param {Function} func The function to apply a rest parameter to.
-     * @returns {Function} Returns the new function.
-     */
-    function flatRest(func) {
-      return setToString(overRest(func, undefined, flatten), func + '');
-    }
- 
-    /**
-     * Creates an array of own enumerable property names and symbols of `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property names and symbols.
-     */
-    function getAllKeys(object) {
-      return baseGetAllKeys(object, keys, getSymbols);
-    }
- 
-    /**
-     * Creates an array of own and inherited enumerable property names and
-     * symbols of `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property names and symbols.
-     */
-    function getAllKeysIn(object) {
-      return baseGetAllKeys(object, keysIn, getSymbolsIn);
-    }
- 
-    /**
-     * Gets metadata for `func`.
-     *
-     * @private
-     * @param {Function} func The function to query.
-     * @returns {*} Returns the metadata for `func`.
-     */
-    var getData = !metaMap ? noop : function(func) {
-      return metaMap.get(func);
-    };
- 
-    /**
-     * Gets the name of `func`.
-     *
-     * @private
-     * @param {Function} func The function to query.
-     * @returns {string} Returns the function name.
-     */
-    function getFuncName(func) {
-      var result = (func.name + ''),
-          array = realNames[result],
-          length = hasOwnProperty.call(realNames, result) ? array.length : 0;
- 
-      while (length--) {
-        var data = array[length],
-            otherFunc = data.func;
-        if (otherFunc == null || otherFunc == func) {
-          return data.name;
-        }
-      }
-      return result;
-    }
- 
-    /**
-     * Gets the argument placeholder value for `func`.
-     *
-     * @private
-     * @param {Function} func The function to inspect.
-     * @returns {*} Returns the placeholder value.
-     */
-    function getHolder(func) {
-      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;
-      return object.placeholder;
-    }
- 
-    /**
-     * Gets the appropriate "iteratee" function. If `_.iteratee` is customized,
-     * this function returns the custom method, otherwise it returns `baseIteratee`.
-     * If arguments are provided, the chosen function is invoked with them and
-     * its result is returned.
-     *
-     * @private
-     * @param {*} [value] The value to convert to an iteratee.
-     * @param {number} [arity] The arity of the created iteratee.
-     * @returns {Function} Returns the chosen function or its result.
-     */
-    function getIteratee() {
-      var result = lodash.iteratee || iteratee;
-      result = result === iteratee ? baseIteratee : result;
-      return arguments.length ? result(arguments[0], arguments[1]) : result;
-    }
- 
-    /**
-     * Gets the data for `map`.
-     *
-     * @private
-     * @param {Object} map The map to query.
-     * @param {string} key The reference key.
-     * @returns {*} Returns the map data.
-     */
-    function getMapData(map, key) {
-      var data = map.__data__;
-      return isKeyable(key)
-        ? data[typeof key == 'string' ? 'string' : 'hash']
-        : data.map;
-    }
- 
-    /**
-     * Gets the property names, values, and compare flags of `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the match data of `object`.
-     */
-    function getMatchData(object) {
-      var result = keys(object),
-          length = result.length;
- 
-      while (length--) {
-        var key = result[length],
-            value = object[key];
- 
-        result[length] = [key, value, isStrictComparable(value)];
-      }
-      return result;
-    }
- 
-    /**
-     * Gets the native function at `key` of `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @param {string} key The key of the method to get.
-     * @returns {*} Returns the function if it's native, else `undefined`.
-     */
-    function getNative(object, key) {
-      var value = getValue(object, key);
-      return baseIsNative(value) ? value : undefined;
-    }
- 
-    /**
-     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
-     *
-     * @private
-     * @param {*} value The value to query.
-     * @returns {string} Returns the raw `toStringTag`.
-     */
-    function getRawTag(value) {
-      var isOwn = hasOwnProperty.call(value, symToStringTag),
-          tag = value[symToStringTag];
- 
-      try {
-        value[symToStringTag] = undefined;
-        var unmasked = true;
-      } catch (e) {}
- 
-      var result = nativeObjectToString.call(value);
-      if (unmasked) {
-        if (isOwn) {
-          value[symToStringTag] = tag;
-        } else {
-          delete value[symToStringTag];
-        }
-      }
-      return result;
-    }
- 
-    /**
-     * Creates an array of the own enumerable symbols of `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of symbols.
-     */
-    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
-      if (object == null) {
-        return [];
-      }
-      object = Object(object);
-      return arrayFilter(nativeGetSymbols(object), function(symbol) {
-        return propertyIsEnumerable.call(object, symbol);
-      });
-    };
- 
-    /**
-     * Creates an array of the own and inherited enumerable symbols of `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of symbols.
-     */
-    var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
-      var result = [];
-      while (object) {
-        arrayPush(result, getSymbols(object));
-        object = getPrototype(object);
-      }
-      return result;
-    };
- 
-    /**
-     * Gets the `toStringTag` of `value`.
-     *
-     * @private
-     * @param {*} value The value to query.
-     * @returns {string} Returns the `toStringTag`.
-     */
-    var getTag = baseGetTag;
- 
-    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
-    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
-        (Map && getTag(new Map) != mapTag) ||
-        (Promise && getTag(Promise.resolve()) != promiseTag) ||
-        (Set && getTag(new Set) != setTag) ||
-        (WeakMap && getTag(new WeakMap) != weakMapTag)) {
-      getTag = function(value) {
-        var result = baseGetTag(value),
-            Ctor = result == objectTag ? value.constructor : undefined,
-            ctorString = Ctor ? toSource(Ctor) : '';
- 
-        if (ctorString) {
-          switch (ctorString) {
-            case dataViewCtorString: return dataViewTag;
-            case mapCtorString: return mapTag;
-            case promiseCtorString: return promiseTag;
-            case setCtorString: return setTag;
-            case weakMapCtorString: return weakMapTag;
-          }
-        }
-        return result;
-      };
-    }
- 
-    /**
-     * Gets the view, applying any `transforms` to the `start` and `end` positions.
-     *
-     * @private
-     * @param {number} start The start of the view.
-     * @param {number} end The end of the view.
-     * @param {Array} transforms The transformations to apply to the view.
-     * @returns {Object} Returns an object containing the `start` and `end`
-     *  positions of the view.
-     */
-    function getView(start, end, transforms) {
-      var index = -1,
-          length = transforms.length;
- 
-      while (++index < length) {
-        var data = transforms[index],
-            size = data.size;
- 
-        switch (data.type) {
-          case 'drop':      start += size; break;
-          case 'dropRight': end -= size; break;
-          case 'take':      end = nativeMin(end, start + size); break;
-          case 'takeRight': start = nativeMax(start, end - size); break;
-        }
-      }
-      return { 'start': start, 'end': end };
-    }
- 
-    /**
-     * Extracts wrapper details from the `source` body comment.
-     *
-     * @private
-     * @param {string} source The source to inspect.
-     * @returns {Array} Returns the wrapper details.
-     */
-    function getWrapDetails(source) {
-      var match = source.match(reWrapDetails);
-      return match ? match[1].split(reSplitDetails) : [];
-    }
- 
-    /**
-     * Checks if `path` exists on `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @param {Array|string} path The path to check.
-     * @param {Function} hasFunc The function to check properties.
-     * @returns {boolean} Returns `true` if `path` exists, else `false`.
-     */
-    function hasPath(object, path, hasFunc) {
-      path = castPath(path, object);
- 
-      var index = -1,
-          length = path.length,
-          result = false;
- 
-      while (++index < length) {
-        var key = toKey(path[index]);
-        if (!(result = object != null && hasFunc(object, key))) {
-          break;
-        }
-        object = object[key];
-      }
-      if (result || ++index != length) {
-        return result;
-      }
-      length = object == null ? 0 : object.length;
-      return !!length && isLength(length) && isIndex(key, length) &&
-        (isArray(object) || isArguments(object));
-    }
- 
-    /**
-     * Initializes an array clone.
-     *
-     * @private
-     * @param {Array} array The array to clone.
-     * @returns {Array} Returns the initialized clone.
-     */
-    function initCloneArray(array) {
-      var length = array.length,
-          result = array.constructor(length);
- 
-      // Add properties assigned by `RegExp#exec`.
-      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
-        result.index = array.index;
-        result.input = array.input;
-      }
-      return result;
-    }
- 
-    /**
-     * Initializes an object clone.
-     *
-     * @private
-     * @param {Object} object The object to clone.
-     * @returns {Object} Returns the initialized clone.
-     */
-    function initCloneObject(object) {
-      return (typeof object.constructor == 'function' && !isPrototype(object))
-        ? baseCreate(getPrototype(object))
-        : {};
-    }
- 
-    /**
-     * Initializes an object clone based on its `toStringTag`.
-     *
-     * **Note:** This function only supports cloning values with tags of
-     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
-     *
-     * @private
-     * @param {Object} object The object to clone.
-     * @param {string} tag The `toStringTag` of the object to clone.
-     * @param {Function} cloneFunc The function to clone values.
-     * @param {boolean} [isDeep] Specify a deep clone.
-     * @returns {Object} Returns the initialized clone.
-     */
-    function initCloneByTag(object, tag, cloneFunc, isDeep) {
-      var Ctor = object.constructor;
-      switch (tag) {
-        case arrayBufferTag:
-          return cloneArrayBuffer(object);
- 
-        case boolTag:
-        case dateTag:
-          return new Ctor(+object);
- 
-        case dataViewTag:
-          return cloneDataView(object, isDeep);
- 
-        case float32Tag: case float64Tag:
-        case int8Tag: case int16Tag: case int32Tag:
-        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
-          return cloneTypedArray(object, isDeep);
- 
-        case mapTag:
-          return cloneMap(object, isDeep, cloneFunc);
- 
-        case numberTag:
-        case stringTag:
-          return new Ctor(object);
- 
-        case regexpTag:
-          return cloneRegExp(object);
- 
-        case setTag:
-          return cloneSet(object, isDeep, cloneFunc);
- 
-        case symbolTag:
-          return cloneSymbol(object);
-      }
-    }
- 
-    /**
-     * Inserts wrapper `details` in a comment at the top of the `source` body.
-     *
-     * @private
-     * @param {string} source The source to modify.
-     * @returns {Array} details The details to insert.
-     * @returns {string} Returns the modified source.
-     */
-    function insertWrapDetails(source, details) {
-      var length = details.length;
-      if (!length) {
-        return source;
-      }
-      var lastIndex = length - 1;
-      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];
-      details = details.join(length > 2 ? ', ' : ' ');
-      return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n');
-    }
- 
-    /**
-     * Checks if `value` is a flattenable `arguments` object or array.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
-     */
-    function isFlattenable(value) {
-      return isArray(value) || isArguments(value) ||
-        !!(spreadableSymbol && value && value[spreadableSymbol]);
-    }
- 
-    /**
-     * Checks if `value` is a valid array-like index.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
-     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
-     */
-    function isIndex(value, length) {
-      length = length == null ? MAX_SAFE_INTEGER : length;
-      return !!length &&
-        (typeof value == 'number' || reIsUint.test(value)) &&
-        (value > -1 && value % 1 == 0 && value < length);
-    }
- 
-    /**
-     * Checks if the given arguments are from an iteratee call.
-     *
-     * @private
-     * @param {*} value The potential iteratee value argument.
-     * @param {*} index The potential iteratee index or key argument.
-     * @param {*} object The potential iteratee object argument.
-     * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
-     *  else `false`.
-     */
-    function isIterateeCall(value, index, object) {
-      if (!isObject(object)) {
-        return false;
-      }
-      var type = typeof index;
-      if (type == 'number'
-            ? (isArrayLike(object) && isIndex(index, object.length))
-            : (type == 'string' && index in object)
-          ) {
-        return eq(object[index], value);
-      }
-      return false;
-    }
- 
-    /**
-     * Checks if `value` is a property name and not a property path.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @param {Object} [object] The object to query keys on.
-     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
-     */
-    function isKey(value, object) {
-      if (isArray(value)) {
-        return false;
-      }
-      var type = typeof value;
-      if (type == 'number' || type == 'symbol' || type == 'boolean' ||
-          value == null || isSymbol(value)) {
-        return true;
-      }
-      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
-        (object != null && value in Object(object));
-    }
- 
-    /**
-     * Checks if `value` is suitable for use as unique object key.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
-     */
-    function isKeyable(value) {
-      var type = typeof value;
-      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
-        ? (value !== '__proto__')
-        : (value === null);
-    }
- 
-    /**
-     * Checks if `func` has a lazy counterpart.
-     *
-     * @private
-     * @param {Function} func The function to check.
-     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
-     *  else `false`.
-     */
-    function isLaziable(func) {
-      var funcName = getFuncName(func),
-          other = lodash[funcName];
- 
-      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
-        return false;
-      }
-      if (func === other) {
-        return true;
-      }
-      var data = getData(other);
-      return !!data && func === data[0];
-    }
- 
-    /**
-     * Checks if `func` has its source masked.
-     *
-     * @private
-     * @param {Function} func The function to check.
-     * @returns {boolean} Returns `true` if `func` is masked, else `false`.
-     */
-    function isMasked(func) {
-      return !!maskSrcKey && (maskSrcKey in func);
-    }
- 
-    /**
-     * Checks if `func` is capable of being masked.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.
-     */
-    var isMaskable = coreJsData ? isFunction : stubFalse;
- 
-    /**
-     * Checks if `value` is likely a prototype object.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
-     */
-    function isPrototype(value) {
-      var Ctor = value && value.constructor,
-          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
- 
-      return value === proto;
-    }
- 
-    /**
-     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` if suitable for strict
-     *  equality comparisons, else `false`.
-     */
-    function isStrictComparable(value) {
-      return value === value && !isObject(value);
-    }
- 
-    /**
-     * A specialized version of `matchesProperty` for source values suitable
-     * for strict equality comparisons, i.e. `===`.
-     *
-     * @private
-     * @param {string} key The key of the property to get.
-     * @param {*} srcValue The value to match.
-     * @returns {Function} Returns the new spec function.
-     */
-    function matchesStrictComparable(key, srcValue) {
-      return function(object) {
-        if (object == null) {
-          return false;
-        }
-        return object[key] === srcValue &&
-          (srcValue !== undefined || (key in Object(object)));
-      };
-    }
- 
-    /**
-     * A specialized version of `_.memoize` which clears the memoized function's
-     * cache when it exceeds `MAX_MEMOIZE_SIZE`.
-     *
-     * @private
-     * @param {Function} func The function to have its output memoized.
-     * @returns {Function} Returns the new memoized function.
-     */
-    function memoizeCapped(func) {
-      var result = memoize(func, function(key) {
-        if (cache.size === MAX_MEMOIZE_SIZE) {
-          cache.clear();
-        }
-        return key;
-      });
- 
-      var cache = result.cache;
-      return result;
-    }
- 
-    /**
-     * Merges the function metadata of `source` into `data`.
-     *
-     * Merging metadata reduces the number of wrappers used to invoke a function.
-     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
-     * may be applied regardless of execution order. Methods like `_.ary` and
-     * `_.rearg` modify function arguments, making the order in which they are
-     * executed important, preventing the merging of metadata. However, we make
-     * an exception for a safe combined case where curried functions have `_.ary`
-     * and or `_.rearg` applied.
-     *
-     * @private
-     * @param {Array} data The destination metadata.
-     * @param {Array} source The source metadata.
-     * @returns {Array} Returns `data`.
-     */
-    function mergeData(data, source) {
-      var bitmask = data[1],
-          srcBitmask = source[1],
-          newBitmask = bitmask | srcBitmask,
-          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
- 
-      var isCombo =
-        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||
-        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||
-        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));
- 
-      // Exit early if metadata can't be merged.
-      if (!(isCommon || isCombo)) {
-        return data;
-      }
-      // Use source `thisArg` if available.
-      if (srcBitmask & WRAP_BIND_FLAG) {
-        data[2] = source[2];
-        // Set when currying a bound function.
-        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
-      }
-      // Compose partial arguments.
-      var value = source[3];
-      if (value) {
-        var partials = data[3];
-        data[3] = partials ? composeArgs(partials, value, source[4]) : value;
-        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
-      }
-      // Compose partial right arguments.
-      value = source[5];
-      if (value) {
-        partials = data[5];
-        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
-        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
-      }
-      // Use source `argPos` if available.
-      value = source[7];
-      if (value) {
-        data[7] = value;
-      }
-      // Use source `ary` if it's smaller.
-      if (srcBitmask & WRAP_ARY_FLAG) {
-        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
-      }
-      // Use source `arity` if one is not provided.
-      if (data[9] == null) {
-        data[9] = source[9];
-      }
-      // Use source `func` and merge bitmasks.
-      data[0] = source[0];
-      data[1] = newBitmask;
- 
-      return data;
-    }
- 
-    /**
-     * This function is like
-     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
-     * except that it includes inherited enumerable properties.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property names.
-     */
-    function nativeKeysIn(object) {
-      var result = [];
-      if (object != null) {
-        for (var key in Object(object)) {
-          result.push(key);
-        }
-      }
-      return result;
-    }
- 
-    /**
-     * Converts `value` to a string using `Object.prototype.toString`.
-     *
-     * @private
-     * @param {*} value The value to convert.
-     * @returns {string} Returns the converted string.
-     */
-    function objectToString(value) {
-      return nativeObjectToString.call(value);
-    }
- 
-    /**
-     * A specialized version of `baseRest` which transforms the rest array.
-     *
-     * @private
-     * @param {Function} func The function to apply a rest parameter to.
-     * @param {number} [start=func.length-1] The start position of the rest parameter.
-     * @param {Function} transform The rest array transform.
-     * @returns {Function} Returns the new function.
-     */
-    function overRest(func, start, transform) {
-      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
-      return function() {
-        var args = arguments,
-            index = -1,
-            length = nativeMax(args.length - start, 0),
-            array = Array(length);
- 
-        while (++index < length) {
-          array[index] = args[start + index];
-        }
-        index = -1;
-        var otherArgs = Array(start + 1);
-        while (++index < start) {
-          otherArgs[index] = args[index];
-        }
-        otherArgs[start] = transform(array);
-        return apply(func, this, otherArgs);
-      };
-    }
- 
-    /**
-     * Gets the parent value at `path` of `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @param {Array} path The path to get the parent value of.
-     * @returns {*} Returns the parent value.
-     */
-    function parent(object, path) {
-      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
-    }
- 
-    /**
-     * Reorder `array` according to the specified indexes where the element at
-     * the first index is assigned as the first element, the element at
-     * the second index is assigned as the second element, and so on.
-     *
-     * @private
-     * @param {Array} array The array to reorder.
-     * @param {Array} indexes The arranged array indexes.
-     * @returns {Array} Returns `array`.
-     */
-    function reorder(array, indexes) {
-      var arrLength = array.length,
-          length = nativeMin(indexes.length, arrLength),
-          oldArray = copyArray(array);
- 
-      while (length--) {
-        var index = indexes[length];
-        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
-      }
-      return array;
-    }
- 
-    /**
-     * Sets metadata for `func`.
-     *
-     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
-     * period of time, it will trip its breaker and transition to an identity
-     * function to avoid garbage collection pauses in V8. See
-     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)
-     * for more details.
-     *
-     * @private
-     * @param {Function} func The function to associate metadata with.
-     * @param {*} data The metadata.
-     * @returns {Function} Returns `func`.
-     */
-    var setData = shortOut(baseSetData);
- 
-    /**
-     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).
-     *
-     * @private
-     * @param {Function} func The function to delay.
-     * @param {number} wait The number of milliseconds to delay invocation.
-     * @returns {number|Object} Returns the timer id or timeout object.
-     */
-    var setTimeout = ctxSetTimeout || function(func, wait) {
-      return root.setTimeout(func, wait);
-    };
- 
-    /**
-     * Sets the `toString` method of `func` to return `string`.
-     *
-     * @private
-     * @param {Function} func The function to modify.
-     * @param {Function} string The `toString` result.
-     * @returns {Function} Returns `func`.
-     */
-    var setToString = shortOut(baseSetToString);
- 
-    /**
-     * Sets the `toString` method of `wrapper` to mimic the source of `reference`
-     * with wrapper details in a comment at the top of the source body.
-     *
-     * @private
-     * @param {Function} wrapper The function to modify.
-     * @param {Function} reference The reference function.
-     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-     * @returns {Function} Returns `wrapper`.
-     */
-    function setWrapToString(wrapper, reference, bitmask) {
-      var source = (reference + '');
-      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
-    }
- 
-    /**
-     * Creates a function that'll short out and invoke `identity` instead
-     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
-     * milliseconds.
-     *
-     * @private
-     * @param {Function} func The function to restrict.
-     * @returns {Function} Returns the new shortable function.
-     */
-    function shortOut(func) {
-      var count = 0,
-          lastCalled = 0;
- 
-      return function() {
-        var stamp = nativeNow(),
-            remaining = HOT_SPAN - (stamp - lastCalled);
- 
-        lastCalled = stamp;
-        if (remaining > 0) {
-          if (++count >= HOT_COUNT) {
-            return arguments[0];
-          }
-        } else {
-          count = 0;
-        }
-        return func.apply(undefined, arguments);
-      };
-    }
- 
-    /**
-     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.
-     *
-     * @private
-     * @param {Array} array The array to shuffle.
-     * @param {number} [size=array.length] The size of `array`.
-     * @returns {Array} Returns `array`.
-     */
-    function shuffleSelf(array, size) {
-      var index = -1,
-          length = array.length,
-          lastIndex = length - 1;
- 
-      size = size === undefined ? length : size;
-      while (++index < size) {
-        var rand = baseRandom(index, lastIndex),
-            value = array[rand];
- 
-        array[rand] = array[index];
-        array[index] = value;
-      }
-      array.length = size;
-      return array;
-    }
- 
-    /**
-     * Converts `string` to a property path array.
-     *
-     * @private
-     * @param {string} string The string to convert.
-     * @returns {Array} Returns the property path array.
-     */
-    var stringToPath = memoizeCapped(function(string) {
-      var result = [];
-      if (reLeadingDot.test(string)) {
-        result.push('');
-      }
-      string.replace(rePropName, function(match, number, quote, string) {
-        result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
-      });
-      return result;
-    });
- 
-    /**
-     * Converts `value` to a string key if it's not a string or symbol.
-     *
-     * @private
-     * @param {*} value The value to inspect.
-     * @returns {string|symbol} Returns the key.
-     */
-    function toKey(value) {
-      if (typeof value == 'string' || isSymbol(value)) {
-        return value;
-      }
-      var result = (value + '');
-      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
-    }
- 
-    /**
-     * Converts `func` to its source code.
-     *
-     * @private
-     * @param {Function} func The function to convert.
-     * @returns {string} Returns the source code.
-     */
-    function toSource(func) {
-      if (func != null) {
-        try {
-          return funcToString.call(func);
-        } catch (e) {}
-        try {
-          return (func + '');
-        } catch (e) {}
-      }
-      return '';
-    }
- 
-    /**
-     * Updates wrapper `details` based on `bitmask` flags.
-     *
-     * @private
-     * @returns {Array} details The details to modify.
-     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-     * @returns {Array} Returns `details`.
-     */
-    function updateWrapDetails(details, bitmask) {
-      arrayEach(wrapFlags, function(pair) {
-        var value = '_.' + pair[0];
-        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {
-          details.push(value);
-        }
-      });
-      return details.sort();
-    }
- 
-    /**
-     * Creates a clone of `wrapper`.
-     *
-     * @private
-     * @param {Object} wrapper The wrapper to clone.
-     * @returns {Object} Returns the cloned wrapper.
-     */
-    function wrapperClone(wrapper) {
-      if (wrapper instanceof LazyWrapper) {
-        return wrapper.clone();
-      }
-      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
-      result.__actions__ = copyArray(wrapper.__actions__);
-      result.__index__  = wrapper.__index__;
-      result.__values__ = wrapper.__values__;
-      return result;
-    }
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * Creates an array of elements split into groups the length of `size`.
-     * If `array` can't be split evenly, the final chunk will be the remaining
-     * elements.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to process.
-     * @param {number} [size=1] The length of each chunk
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Array} Returns the new array of chunks.
-     * @example
-     *
-     * _.chunk(['a', 'b', 'c', 'd'], 2);
-     * // => [['a', 'b'], ['c', 'd']]
-     *
-     * _.chunk(['a', 'b', 'c', 'd'], 3);
-     * // => [['a', 'b', 'c'], ['d']]
-     */
-    function chunk(array, size, guard) {
-      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
-        size = 1;
-      } else {
-        size = nativeMax(toInteger(size), 0);
-      }
-      var length = array == null ? 0 : array.length;
-      if (!length || size < 1) {
-        return [];
-      }
-      var index = 0,
-          resIndex = 0,
-          result = Array(nativeCeil(length / size));
- 
-      while (index < length) {
-        result[resIndex++] = baseSlice(array, index, (index += size));
-      }
-      return result;
-    }
- 
-    /**
-     * Creates an array with all falsey values removed. The values `false`, `null`,
-     * `0`, `""`, `undefined`, and `NaN` are falsey.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to compact.
-     * @returns {Array} Returns the new array of filtered values.
-     * @example
-     *
-     * _.compact([0, 1, false, 2, '', 3]);
-     * // => [1, 2, 3]
-     */
-    function compact(array) {
-      var index = -1,
-          length = array == null ? 0 : array.length,
-          resIndex = 0,
-          result = [];
- 
-      while (++index < length) {
-        var value = array[index];
-        if (value) {
-          result[resIndex++] = value;
-        }
-      }
-      return result;
-    }
- 
-    /**
-     * Creates a new array concatenating `array` with any additional arrays
-     * and/or values.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to concatenate.
-     * @param {...*} [values] The values to concatenate.
-     * @returns {Array} Returns the new concatenated array.
-     * @example
-     *
-     * var array = [1];
-     * var other = _.concat(array, 2, [3], [[4]]);
-     *
-     * console.log(other);
-     * // => [1, 2, 3, [4]]
-     *
-     * console.log(array);
-     * // => [1]
-     */
-    function concat() {
-      var length = arguments.length;
-      if (!length) {
-        return [];
-      }
-      var args = Array(length - 1),
-          array = arguments[0],
-          index = length;
- 
-      while (index--) {
-        args[index - 1] = arguments[index];
-      }
-      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
-    }
- 
-    /**
-     * Creates an array of `array` values not included in the other given arrays
-     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * for equality comparisons. The order and references of result values are
-     * determined by the first array.
-     *
-     * **Note:** Unlike `_.pullAll`, this method returns a new array.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {...Array} [values] The values to exclude.
-     * @returns {Array} Returns the new array of filtered values.
-     * @see _.without, _.xor
-     * @example
-     *
-     * _.difference([2, 1], [2, 3]);
-     * // => [1]
-     */
-    var difference = baseRest(function(array, values) {
-      return isArrayLikeObject(array)
-        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))
-        : [];
-    });
- 
-    /**
-     * This method is like `_.difference` except that it accepts `iteratee` which
-     * is invoked for each element of `array` and `values` to generate the criterion
-     * by which they're compared. The order and references of result values are
-     * determined by the first array. The iteratee is invoked with one argument:
-     * (value).
-     *
-     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {...Array} [values] The values to exclude.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {Array} Returns the new array of filtered values.
-     * @example
-     *
-     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
-     * // => [1.2]
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
-     * // => [{ 'x': 2 }]
-     */
-    var differenceBy = baseRest(function(array, values) {
-      var iteratee = last(values);
-      if (isArrayLikeObject(iteratee)) {
-        iteratee = undefined;
-      }
-      return isArrayLikeObject(array)
-        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))
-        : [];
-    });
- 
-    /**
-     * This method is like `_.difference` except that it accepts `comparator`
-     * which is invoked to compare elements of `array` to `values`. The order and
-     * references of result values are determined by the first array. The comparator
-     * is invoked with two arguments: (arrVal, othVal).
-     *
-     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {...Array} [values] The values to exclude.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new array of filtered values.
-     * @example
-     *
-     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
-     *
-     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
-     * // => [{ 'x': 2, 'y': 1 }]
-     */
-    var differenceWith = baseRest(function(array, values) {
-      var comparator = last(values);
-      if (isArrayLikeObject(comparator)) {
-        comparator = undefined;
-      }
-      return isArrayLikeObject(array)
-        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)
-        : [];
-    });
- 
-    /**
-     * Creates a slice of `array` with `n` elements dropped from the beginning.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.5.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {number} [n=1] The number of elements to drop.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * _.drop([1, 2, 3]);
-     * // => [2, 3]
-     *
-     * _.drop([1, 2, 3], 2);
-     * // => [3]
-     *
-     * _.drop([1, 2, 3], 5);
-     * // => []
-     *
-     * _.drop([1, 2, 3], 0);
-     * // => [1, 2, 3]
-     */
-    function drop(array, n, guard) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return [];
-      }
-      n = (guard || n === undefined) ? 1 : toInteger(n);
-      return baseSlice(array, n < 0 ? 0 : n, length);
-    }
- 
-    /**
-     * Creates a slice of `array` with `n` elements dropped from the end.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {number} [n=1] The number of elements to drop.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * _.dropRight([1, 2, 3]);
-     * // => [1, 2]
-     *
-     * _.dropRight([1, 2, 3], 2);
-     * // => [1]
-     *
-     * _.dropRight([1, 2, 3], 5);
-     * // => []
-     *
-     * _.dropRight([1, 2, 3], 0);
-     * // => [1, 2, 3]
-     */
-    function dropRight(array, n, guard) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return [];
-      }
-      n = (guard || n === undefined) ? 1 : toInteger(n);
-      n = length - n;
-      return baseSlice(array, 0, n < 0 ? 0 : n);
-    }
- 
-    /**
-     * Creates a slice of `array` excluding elements dropped from the end.
-     * Elements are dropped until `predicate` returns falsey. The predicate is
-     * invoked with three arguments: (value, index, array).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'active': true },
-     *   { 'user': 'fred',    'active': false },
-     *   { 'user': 'pebbles', 'active': false }
-     * ];
-     *
-     * _.dropRightWhile(users, function(o) { return !o.active; });
-     * // => objects for ['barney']
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
-     * // => objects for ['barney', 'fred']
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.dropRightWhile(users, ['active', false]);
-     * // => objects for ['barney']
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.dropRightWhile(users, 'active');
-     * // => objects for ['barney', 'fred', 'pebbles']
-     */
-    function dropRightWhile(array, predicate) {
-      return (array && array.length)
-        ? baseWhile(array, getIteratee(predicate, 3), true, true)
-        : [];
-    }
- 
-    /**
-     * Creates a slice of `array` excluding elements dropped from the beginning.
-     * Elements are dropped until `predicate` returns falsey. The predicate is
-     * invoked with three arguments: (value, index, array).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'active': false },
-     *   { 'user': 'fred',    'active': false },
-     *   { 'user': 'pebbles', 'active': true }
-     * ];
-     *
-     * _.dropWhile(users, function(o) { return !o.active; });
-     * // => objects for ['pebbles']
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.dropWhile(users, { 'user': 'barney', 'active': false });
-     * // => objects for ['fred', 'pebbles']
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.dropWhile(users, ['active', false]);
-     * // => objects for ['pebbles']
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.dropWhile(users, 'active');
-     * // => objects for ['barney', 'fred', 'pebbles']
-     */
-    function dropWhile(array, predicate) {
-      return (array && array.length)
-        ? baseWhile(array, getIteratee(predicate, 3), true)
-        : [];
-    }
- 
-    /**
-     * Fills elements of `array` with `value` from `start` up to, but not
-     * including, `end`.
-     *
-     * **Note:** This method mutates `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.2.0
-     * @category Array
-     * @param {Array} array The array to fill.
-     * @param {*} value The value to fill `array` with.
-     * @param {number} [start=0] The start position.
-     * @param {number} [end=array.length] The end position.
-     * @returns {Array} Returns `array`.
-     * @example
-     *
-     * var array = [1, 2, 3];
-     *
-     * _.fill(array, 'a');
-     * console.log(array);
-     * // => ['a', 'a', 'a']
-     *
-     * _.fill(Array(3), 2);
-     * // => [2, 2, 2]
-     *
-     * _.fill([4, 6, 8, 10], '*', 1, 3);
-     * // => [4, '*', '*', 10]
-     */
-    function fill(array, value, start, end) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return [];
-      }
-      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {
-        start = 0;
-        end = length;
-      }
-      return baseFill(array, value, start, end);
-    }
- 
-    /**
-     * This method is like `_.find` except that it returns the index of the first
-     * element `predicate` returns truthy for instead of the element itself.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.1.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @param {number} [fromIndex=0] The index to search from.
-     * @returns {number} Returns the index of the found element, else `-1`.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'active': false },
-     *   { 'user': 'fred',    'active': false },
-     *   { 'user': 'pebbles', 'active': true }
-     * ];
-     *
-     * _.findIndex(users, function(o) { return o.user == 'barney'; });
-     * // => 0
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.findIndex(users, { 'user': 'fred', 'active': false });
-     * // => 1
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.findIndex(users, ['active', false]);
-     * // => 0
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.findIndex(users, 'active');
-     * // => 2
-     */
-    function findIndex(array, predicate, fromIndex) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return -1;
-      }
-      var index = fromIndex == null ? 0 : toInteger(fromIndex);
-      if (index < 0) {
-        index = nativeMax(length + index, 0);
-      }
-      return baseFindIndex(array, getIteratee(predicate, 3), index);
-    }
- 
-    /**
-     * This method is like `_.findIndex` except that it iterates over elements
-     * of `collection` from right to left.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @param {number} [fromIndex=array.length-1] The index to search from.
-     * @returns {number} Returns the index of the found element, else `-1`.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'active': true },
-     *   { 'user': 'fred',    'active': false },
-     *   { 'user': 'pebbles', 'active': false }
-     * ];
-     *
-     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
-     * // => 2
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.findLastIndex(users, { 'user': 'barney', 'active': true });
-     * // => 0
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.findLastIndex(users, ['active', false]);
-     * // => 2
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.findLastIndex(users, 'active');
-     * // => 0
-     */
-    function findLastIndex(array, predicate, fromIndex) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return -1;
-      }
-      var index = length - 1;
-      if (fromIndex !== undefined) {
-        index = toInteger(fromIndex);
-        index = fromIndex < 0
-          ? nativeMax(length + index, 0)
-          : nativeMin(index, length - 1);
-      }
-      return baseFindIndex(array, getIteratee(predicate, 3), index, true);
-    }
- 
-    /**
-     * Flattens `array` a single level deep.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to flatten.
-     * @returns {Array} Returns the new flattened array.
-     * @example
-     *
-     * _.flatten([1, [2, [3, [4]], 5]]);
-     * // => [1, 2, [3, [4]], 5]
-     */
-    function flatten(array) {
-      var length = array == null ? 0 : array.length;
-      return length ? baseFlatten(array, 1) : [];
-    }
- 
-    /**
-     * Recursively flattens `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to flatten.
-     * @returns {Array} Returns the new flattened array.
-     * @example
-     *
-     * _.flattenDeep([1, [2, [3, [4]], 5]]);
-     * // => [1, 2, 3, 4, 5]
-     */
-    function flattenDeep(array) {
-      var length = array == null ? 0 : array.length;
-      return length ? baseFlatten(array, INFINITY) : [];
-    }
- 
-    /**
-     * Recursively flatten `array` up to `depth` times.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.4.0
-     * @category Array
-     * @param {Array} array The array to flatten.
-     * @param {number} [depth=1] The maximum recursion depth.
-     * @returns {Array} Returns the new flattened array.
-     * @example
-     *
-     * var array = [1, [2, [3, [4]], 5]];
-     *
-     * _.flattenDepth(array, 1);
-     * // => [1, 2, [3, [4]], 5]
-     *
-     * _.flattenDepth(array, 2);
-     * // => [1, 2, 3, [4], 5]
-     */
-    function flattenDepth(array, depth) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return [];
-      }
-      depth = depth === undefined ? 1 : toInteger(depth);
-      return baseFlatten(array, depth);
-    }
- 
-    /**
-     * The inverse of `_.toPairs`; this method returns an object composed
-     * from key-value `pairs`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} pairs The key-value pairs.
-     * @returns {Object} Returns the new object.
-     * @example
-     *
-     * _.fromPairs([['a', 1], ['b', 2]]);
-     * // => { 'a': 1, 'b': 2 }
-     */
-    function fromPairs(pairs) {
-      var index = -1,
-          length = pairs == null ? 0 : pairs.length,
-          result = {};
- 
-      while (++index < length) {
-        var pair = pairs[index];
-        result[pair[0]] = pair[1];
-      }
-      return result;
-    }
- 
-    /**
-     * Gets the first element of `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @alias first
-     * @category Array
-     * @param {Array} array The array to query.
-     * @returns {*} Returns the first element of `array`.
-     * @example
-     *
-     * _.head([1, 2, 3]);
-     * // => 1
-     *
-     * _.head([]);
-     * // => undefined
-     */
-    function head(array) {
-      return (array && array.length) ? array[0] : undefined;
-    }
- 
-    /**
-     * Gets the index at which the first occurrence of `value` is found in `array`
-     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * for equality comparisons. If `fromIndex` is negative, it's used as the
-     * offset from the end of `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {*} value The value to search for.
-     * @param {number} [fromIndex=0] The index to search from.
-     * @returns {number} Returns the index of the matched value, else `-1`.
-     * @example
-     *
-     * _.indexOf([1, 2, 1, 2], 2);
-     * // => 1
-     *
-     * // Search from the `fromIndex`.
-     * _.indexOf([1, 2, 1, 2], 2, 2);
-     * // => 3
-     */
-    function indexOf(array, value, fromIndex) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return -1;
-      }
-      var index = fromIndex == null ? 0 : toInteger(fromIndex);
-      if (index < 0) {
-        index = nativeMax(length + index, 0);
-      }
-      return baseIndexOf(array, value, index);
-    }
- 
-    /**
-     * Gets all but the last element of `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * _.initial([1, 2, 3]);
-     * // => [1, 2]
-     */
-    function initial(array) {
-      var length = array == null ? 0 : array.length;
-      return length ? baseSlice(array, 0, -1) : [];
-    }
- 
-    /**
-     * Creates an array of unique values that are included in all given arrays
-     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * for equality comparisons. The order and references of result values are
-     * determined by the first array.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @returns {Array} Returns the new array of intersecting values.
-     * @example
-     *
-     * _.intersection([2, 1], [2, 3]);
-     * // => [2]
-     */
-    var intersection = baseRest(function(arrays) {
-      var mapped = arrayMap(arrays, castArrayLikeObject);
-      return (mapped.length && mapped[0] === arrays[0])
-        ? baseIntersection(mapped)
-        : [];
-    });
- 
-    /**
-     * This method is like `_.intersection` except that it accepts `iteratee`
-     * which is invoked for each element of each `arrays` to generate the criterion
-     * by which they're compared. The order and references of result values are
-     * determined by the first array. The iteratee is invoked with one argument:
-     * (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {Array} Returns the new array of intersecting values.
-     * @example
-     *
-     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
-     * // => [2.1]
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
-     * // => [{ 'x': 1 }]
-     */
-    var intersectionBy = baseRest(function(arrays) {
-      var iteratee = last(arrays),
-          mapped = arrayMap(arrays, castArrayLikeObject);
- 
-      if (iteratee === last(mapped)) {
-        iteratee = undefined;
-      } else {
-        mapped.pop();
-      }
-      return (mapped.length && mapped[0] === arrays[0])
-        ? baseIntersection(mapped, getIteratee(iteratee, 2))
-        : [];
-    });
- 
-    /**
-     * This method is like `_.intersection` except that it accepts `comparator`
-     * which is invoked to compare elements of `arrays`. The order and references
-     * of result values are determined by the first array. The comparator is
-     * invoked with two arguments: (arrVal, othVal).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new array of intersecting values.
-     * @example
-     *
-     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
-     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
-     *
-     * _.intersectionWith(objects, others, _.isEqual);
-     * // => [{ 'x': 1, 'y': 2 }]
-     */
-    var intersectionWith = baseRest(function(arrays) {
-      var comparator = last(arrays),
-          mapped = arrayMap(arrays, castArrayLikeObject);
- 
-      comparator = typeof comparator == 'function' ? comparator : undefined;
-      if (comparator) {
-        mapped.pop();
-      }
-      return (mapped.length && mapped[0] === arrays[0])
-        ? baseIntersection(mapped, undefined, comparator)
-        : [];
-    });
- 
-    /**
-     * Converts all elements in `array` into a string separated by `separator`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to convert.
-     * @param {string} [separator=','] The element separator.
-     * @returns {string} Returns the joined string.
-     * @example
-     *
-     * _.join(['a', 'b', 'c'], '~');
-     * // => 'a~b~c'
-     */
-    function join(array, separator) {
-      return array == null ? '' : nativeJoin.call(array, separator);
-    }
- 
-    /**
-     * Gets the last element of `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @returns {*} Returns the last element of `array`.
-     * @example
-     *
-     * _.last([1, 2, 3]);
-     * // => 3
-     */
-    function last(array) {
-      var length = array == null ? 0 : array.length;
-      return length ? array[length - 1] : undefined;
-    }
- 
-    /**
-     * This method is like `_.indexOf` except that it iterates over elements of
-     * `array` from right to left.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {*} value The value to search for.
-     * @param {number} [fromIndex=array.length-1] The index to search from.
-     * @returns {number} Returns the index of the matched value, else `-1`.
-     * @example
-     *
-     * _.lastIndexOf([1, 2, 1, 2], 2);
-     * // => 3
-     *
-     * // Search from the `fromIndex`.
-     * _.lastIndexOf([1, 2, 1, 2], 2, 2);
-     * // => 1
-     */
-    function lastIndexOf(array, value, fromIndex) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return -1;
-      }
-      var index = length;
-      if (fromIndex !== undefined) {
-        index = toInteger(fromIndex);
-        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
-      }
-      return value === value
-        ? strictLastIndexOf(array, value, index)
-        : baseFindIndex(array, baseIsNaN, index, true);
-    }
- 
-    /**
-     * Gets the element at index `n` of `array`. If `n` is negative, the nth
-     * element from the end is returned.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.11.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {number} [n=0] The index of the element to return.
-     * @returns {*} Returns the nth element of `array`.
-     * @example
-     *
-     * var array = ['a', 'b', 'c', 'd'];
-     *
-     * _.nth(array, 1);
-     * // => 'b'
-     *
-     * _.nth(array, -2);
-     * // => 'c';
-     */
-    function nth(array, n) {
-      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;
-    }
- 
-    /**
-     * Removes all given values from `array` using
-     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * for equality comparisons.
-     *
-     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`
-     * to remove elements from an array by predicate.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Array
-     * @param {Array} array The array to modify.
-     * @param {...*} [values] The values to remove.
-     * @returns {Array} Returns `array`.
-     * @example
-     *
-     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
-     *
-     * _.pull(array, 'a', 'c');
-     * console.log(array);
-     * // => ['b', 'b']
-     */
-    var pull = baseRest(pullAll);
- 
-    /**
-     * This method is like `_.pull` except that it accepts an array of values to remove.
-     *
-     * **Note:** Unlike `_.difference`, this method mutates `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to modify.
-     * @param {Array} values The values to remove.
-     * @returns {Array} Returns `array`.
-     * @example
-     *
-     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
-     *
-     * _.pullAll(array, ['a', 'c']);
-     * console.log(array);
-     * // => ['b', 'b']
-     */
-    function pullAll(array, values) {
-      return (array && array.length && values && values.length)
-        ? basePullAll(array, values)
-        : array;
-    }
- 
-    /**
-     * This method is like `_.pullAll` except that it accepts `iteratee` which is
-     * invoked for each element of `array` and `values` to generate the criterion
-     * by which they're compared. The iteratee is invoked with one argument: (value).
-     *
-     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to modify.
-     * @param {Array} values The values to remove.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {Array} Returns `array`.
-     * @example
-     *
-     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];
-     *
-     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');
-     * console.log(array);
-     * // => [{ 'x': 2 }]
-     */
-    function pullAllBy(array, values, iteratee) {
-      return (array && array.length && values && values.length)
-        ? basePullAll(array, values, getIteratee(iteratee, 2))
-        : array;
-    }
- 
-    /**
-     * This method is like `_.pullAll` except that it accepts `comparator` which
-     * is invoked to compare elements of `array` to `values`. The comparator is
-     * invoked with two arguments: (arrVal, othVal).
-     *
-     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.6.0
-     * @category Array
-     * @param {Array} array The array to modify.
-     * @param {Array} values The values to remove.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns `array`.
-     * @example
-     *
-     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];
-     *
-     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);
-     * console.log(array);
-     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]
-     */
-    function pullAllWith(array, values, comparator) {
-      return (array && array.length && values && values.length)
-        ? basePullAll(array, values, undefined, comparator)
-        : array;
-    }
- 
-    /**
-     * Removes elements from `array` corresponding to `indexes` and returns an
-     * array of removed elements.
-     *
-     * **Note:** Unlike `_.at`, this method mutates `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to modify.
-     * @param {...(number|number[])} [indexes] The indexes of elements to remove.
-     * @returns {Array} Returns the new array of removed elements.
-     * @example
-     *
-     * var array = ['a', 'b', 'c', 'd'];
-     * var pulled = _.pullAt(array, [1, 3]);
-     *
-     * console.log(array);
-     * // => ['a', 'c']
-     *
-     * console.log(pulled);
-     * // => ['b', 'd']
-     */
-    var pullAt = flatRest(function(array, indexes) {
-      var length = array == null ? 0 : array.length,
-          result = baseAt(array, indexes);
- 
-      basePullAt(array, arrayMap(indexes, function(index) {
-        return isIndex(index, length) ? +index : index;
-      }).sort(compareAscending));
- 
-      return result;
-    });
- 
-    /**
-     * Removes all elements from `array` that `predicate` returns truthy for
-     * and returns an array of the removed elements. The predicate is invoked
-     * with three arguments: (value, index, array).
-     *
-     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`
-     * to pull elements from an array by value.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Array
-     * @param {Array} array The array to modify.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the new array of removed elements.
-     * @example
-     *
-     * var array = [1, 2, 3, 4];
-     * var evens = _.remove(array, function(n) {
-     *   return n % 2 == 0;
-     * });
-     *
-     * console.log(array);
-     * // => [1, 3]
-     *
-     * console.log(evens);
-     * // => [2, 4]
-     */
-    function remove(array, predicate) {
-      var result = [];
-      if (!(array && array.length)) {
-        return result;
-      }
-      var index = -1,
-          indexes = [],
-          length = array.length;
- 
-      predicate = getIteratee(predicate, 3);
-      while (++index < length) {
-        var value = array[index];
-        if (predicate(value, index, array)) {
-          result.push(value);
-          indexes.push(index);
-        }
-      }
-      basePullAt(array, indexes);
-      return result;
-    }
- 
-    /**
-     * Reverses `array` so that the first element becomes the last, the second
-     * element becomes the second to last, and so on.
-     *
-     * **Note:** This method mutates `array` and is based on
-     * [`Array#reverse`](https://mdn.io/Array/reverse).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to modify.
-     * @returns {Array} Returns `array`.
-     * @example
-     *
-     * var array = [1, 2, 3];
-     *
-     * _.reverse(array);
-     * // => [3, 2, 1]
-     *
-     * console.log(array);
-     * // => [3, 2, 1]
-     */
-    function reverse(array) {
-      return array == null ? array : nativeReverse.call(array);
-    }
- 
-    /**
-     * Creates a slice of `array` from `start` up to, but not including, `end`.
-     *
-     * **Note:** This method is used instead of
-     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
-     * returned.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to slice.
-     * @param {number} [start=0] The start position.
-     * @param {number} [end=array.length] The end position.
-     * @returns {Array} Returns the slice of `array`.
-     */
-    function slice(array, start, end) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return [];
-      }
-      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {
-        start = 0;
-        end = length;
-      }
-      else {
-        start = start == null ? 0 : toInteger(start);
-        end = end === undefined ? length : toInteger(end);
-      }
-      return baseSlice(array, start, end);
-    }
- 
-    /**
-     * Uses a binary search to determine the lowest index at which `value`
-     * should be inserted into `array` in order to maintain its sort order.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The sorted array to inspect.
-     * @param {*} value The value to evaluate.
-     * @returns {number} Returns the index at which `value` should be inserted
-     *  into `array`.
-     * @example
-     *
-     * _.sortedIndex([30, 50], 40);
-     * // => 1
-     */
-    function sortedIndex(array, value) {
-      return baseSortedIndex(array, value);
-    }
- 
-    /**
-     * This method is like `_.sortedIndex` except that it accepts `iteratee`
-     * which is invoked for `value` and each element of `array` to compute their
-     * sort ranking. The iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The sorted array to inspect.
-     * @param {*} value The value to evaluate.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {number} Returns the index at which `value` should be inserted
-     *  into `array`.
-     * @example
-     *
-     * var objects = [{ 'x': 4 }, { 'x': 5 }];
-     *
-     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
-     * // => 0
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');
-     * // => 0
-     */
-    function sortedIndexBy(array, value, iteratee) {
-      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));
-    }
- 
-    /**
-     * This method is like `_.indexOf` except that it performs a binary
-     * search on a sorted `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {*} value The value to search for.
-     * @returns {number} Returns the index of the matched value, else `-1`.
-     * @example
-     *
-     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);
-     * // => 1
-     */
-    function sortedIndexOf(array, value) {
-      var length = array == null ? 0 : array.length;
-      if (length) {
-        var index = baseSortedIndex(array, value);
-        if (index < length && eq(array[index], value)) {
-          return index;
-        }
-      }
-      return -1;
-    }
- 
-    /**
-     * This method is like `_.sortedIndex` except that it returns the highest
-     * index at which `value` should be inserted into `array` in order to
-     * maintain its sort order.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The sorted array to inspect.
-     * @param {*} value The value to evaluate.
-     * @returns {number} Returns the index at which `value` should be inserted
-     *  into `array`.
-     * @example
-     *
-     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);
-     * // => 4
-     */
-    function sortedLastIndex(array, value) {
-      return baseSortedIndex(array, value, true);
-    }
- 
-    /**
-     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`
-     * which is invoked for `value` and each element of `array` to compute their
-     * sort ranking. The iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The sorted array to inspect.
-     * @param {*} value The value to evaluate.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {number} Returns the index at which `value` should be inserted
-     *  into `array`.
-     * @example
-     *
-     * var objects = [{ 'x': 4 }, { 'x': 5 }];
-     *
-     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
-     * // => 1
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');
-     * // => 1
-     */
-    function sortedLastIndexBy(array, value, iteratee) {
-      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);
-    }
- 
-    /**
-     * This method is like `_.lastIndexOf` except that it performs a binary
-     * search on a sorted `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {*} value The value to search for.
-     * @returns {number} Returns the index of the matched value, else `-1`.
-     * @example
-     *
-     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);
-     * // => 3
-     */
-    function sortedLastIndexOf(array, value) {
-      var length = array == null ? 0 : array.length;
-      if (length) {
-        var index = baseSortedIndex(array, value, true) - 1;
-        if (eq(array[index], value)) {
-          return index;
-        }
-      }
-      return -1;
-    }
- 
-    /**
-     * This method is like `_.uniq` except that it's designed and optimized
-     * for sorted arrays.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @returns {Array} Returns the new duplicate free array.
-     * @example
-     *
-     * _.sortedUniq([1, 1, 2]);
-     * // => [1, 2]
-     */
-    function sortedUniq(array) {
-      return (array && array.length)
-        ? baseSortedUniq(array)
-        : [];
-    }
- 
-    /**
-     * This method is like `_.uniqBy` except that it's designed and optimized
-     * for sorted arrays.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {Function} [iteratee] The iteratee invoked per element.
-     * @returns {Array} Returns the new duplicate free array.
-     * @example
-     *
-     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);
-     * // => [1.1, 2.3]
-     */
-    function sortedUniqBy(array, iteratee) {
-      return (array && array.length)
-        ? baseSortedUniq(array, getIteratee(iteratee, 2))
-        : [];
-    }
- 
-    /**
-     * Gets all but the first element of `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * _.tail([1, 2, 3]);
-     * // => [2, 3]
-     */
-    function tail(array) {
-      var length = array == null ? 0 : array.length;
-      return length ? baseSlice(array, 1, length) : [];
-    }
- 
-    /**
-     * Creates a slice of `array` with `n` elements taken from the beginning.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {number} [n=1] The number of elements to take.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * _.take([1, 2, 3]);
-     * // => [1]
-     *
-     * _.take([1, 2, 3], 2);
-     * // => [1, 2]
-     *
-     * _.take([1, 2, 3], 5);
-     * // => [1, 2, 3]
-     *
-     * _.take([1, 2, 3], 0);
-     * // => []
-     */
-    function take(array, n, guard) {
-      if (!(array && array.length)) {
-        return [];
-      }
-      n = (guard || n === undefined) ? 1 : toInteger(n);
-      return baseSlice(array, 0, n < 0 ? 0 : n);
-    }
- 
-    /**
-     * Creates a slice of `array` with `n` elements taken from the end.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {number} [n=1] The number of elements to take.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * _.takeRight([1, 2, 3]);
-     * // => [3]
-     *
-     * _.takeRight([1, 2, 3], 2);
-     * // => [2, 3]
-     *
-     * _.takeRight([1, 2, 3], 5);
-     * // => [1, 2, 3]
-     *
-     * _.takeRight([1, 2, 3], 0);
-     * // => []
-     */
-    function takeRight(array, n, guard) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return [];
-      }
-      n = (guard || n === undefined) ? 1 : toInteger(n);
-      n = length - n;
-      return baseSlice(array, n < 0 ? 0 : n, length);
-    }
- 
-    /**
-     * Creates a slice of `array` with elements taken from the end. Elements are
-     * taken until `predicate` returns falsey. The predicate is invoked with
-     * three arguments: (value, index, array).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'active': true },
-     *   { 'user': 'fred',    'active': false },
-     *   { 'user': 'pebbles', 'active': false }
-     * ];
-     *
-     * _.takeRightWhile(users, function(o) { return !o.active; });
-     * // => objects for ['fred', 'pebbles']
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });
-     * // => objects for ['pebbles']
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.takeRightWhile(users, ['active', false]);
-     * // => objects for ['fred', 'pebbles']
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.takeRightWhile(users, 'active');
-     * // => []
-     */
-    function takeRightWhile(array, predicate) {
-      return (array && array.length)
-        ? baseWhile(array, getIteratee(predicate, 3), false, true)
-        : [];
-    }
- 
-    /**
-     * Creates a slice of `array` with elements taken from the beginning. Elements
-     * are taken until `predicate` returns falsey. The predicate is invoked with
-     * three arguments: (value, index, array).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'active': false },
-     *   { 'user': 'fred',    'active': false },
-     *   { 'user': 'pebbles', 'active': true }
-     * ];
-     *
-     * _.takeWhile(users, function(o) { return !o.active; });
-     * // => objects for ['barney', 'fred']
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.takeWhile(users, { 'user': 'barney', 'active': false });
-     * // => objects for ['barney']
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.takeWhile(users, ['active', false]);
-     * // => objects for ['barney', 'fred']
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.takeWhile(users, 'active');
-     * // => []
-     */
-    function takeWhile(array, predicate) {
-      return (array && array.length)
-        ? baseWhile(array, getIteratee(predicate, 3))
-        : [];
-    }
- 
-    /**
-     * Creates an array of unique values, in order, from all given arrays using
-     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * for equality comparisons.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @returns {Array} Returns the new array of combined values.
-     * @example
-     *
-     * _.union([2], [1, 2]);
-     * // => [2, 1]
-     */
-    var union = baseRest(function(arrays) {
-      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
-    });
- 
-    /**
-     * This method is like `_.union` except that it accepts `iteratee` which is
-     * invoked for each element of each `arrays` to generate the criterion by
-     * which uniqueness is computed. Result values are chosen from the first
-     * array in which the value occurs. The iteratee is invoked with one argument:
-     * (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {Array} Returns the new array of combined values.
-     * @example
-     *
-     * _.unionBy([2.1], [1.2, 2.3], Math.floor);
-     * // => [2.1, 1.2]
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
-     * // => [{ 'x': 1 }, { 'x': 2 }]
-     */
-    var unionBy = baseRest(function(arrays) {
-      var iteratee = last(arrays);
-      if (isArrayLikeObject(iteratee)) {
-        iteratee = undefined;
-      }
-      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));
-    });
- 
-    /**
-     * This method is like `_.union` except that it accepts `comparator` which
-     * is invoked to compare elements of `arrays`. Result values are chosen from
-     * the first array in which the value occurs. The comparator is invoked
-     * with two arguments: (arrVal, othVal).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new array of combined values.
-     * @example
-     *
-     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
-     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
-     *
-     * _.unionWith(objects, others, _.isEqual);
-     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
-     */
-    var unionWith = baseRest(function(arrays) {
-      var comparator = last(arrays);
-      comparator = typeof comparator == 'function' ? comparator : undefined;
-      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);
-    });
- 
-    /**
-     * Creates a duplicate-free version of an array, using
-     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * for equality comparisons, in which only the first occurrence of each element
-     * is kept. The order of result values is determined by the order they occur
-     * in the array.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @returns {Array} Returns the new duplicate free array.
-     * @example
-     *
-     * _.uniq([2, 1, 2]);
-     * // => [2, 1]
-     */
-    function uniq(array) {
-      return (array && array.length) ? baseUniq(array) : [];
-    }
- 
-    /**
-     * This method is like `_.uniq` except that it accepts `iteratee` which is
-     * invoked for each element in `array` to generate the criterion by which
-     * uniqueness is computed. The order of result values is determined by the
-     * order they occur in the array. The iteratee is invoked with one argument:
-     * (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {Array} Returns the new duplicate free array.
-     * @example
-     *
-     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
-     * // => [2.1, 1.2]
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
-     * // => [{ 'x': 1 }, { 'x': 2 }]
-     */
-    function uniqBy(array, iteratee) {
-      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];
-    }
- 
-    /**
-     * This method is like `_.uniq` except that it accepts `comparator` which
-     * is invoked to compare elements of `array`. The order of result values is
-     * determined by the order they occur in the array.The comparator is invoked
-     * with two arguments: (arrVal, othVal).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new duplicate free array.
-     * @example
-     *
-     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
-     *
-     * _.uniqWith(objects, _.isEqual);
-     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
-     */
-    function uniqWith(array, comparator) {
-      comparator = typeof comparator == 'function' ? comparator : undefined;
-      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];
-    }
- 
-    /**
-     * This method is like `_.zip` except that it accepts an array of grouped
-     * elements and creates an array regrouping the elements to their pre-zip
-     * configuration.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.2.0
-     * @category Array
-     * @param {Array} array The array of grouped elements to process.
-     * @returns {Array} Returns the new array of regrouped elements.
-     * @example
-     *
-     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);
-     * // => [['a', 1, true], ['b', 2, false]]
-     *
-     * _.unzip(zipped);
-     * // => [['a', 'b'], [1, 2], [true, false]]
-     */
-    function unzip(array) {
-      if (!(array && array.length)) {
-        return [];
-      }
-      var length = 0;
-      array = arrayFilter(array, function(group) {
-        if (isArrayLikeObject(group)) {
-          length = nativeMax(group.length, length);
-          return true;
-        }
-      });
-      return baseTimes(length, function(index) {
-        return arrayMap(array, baseProperty(index));
-      });
-    }
- 
-    /**
-     * This method is like `_.unzip` except that it accepts `iteratee` to specify
-     * how regrouped values should be combined. The iteratee is invoked with the
-     * elements of each group: (...group).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.8.0
-     * @category Array
-     * @param {Array} array The array of grouped elements to process.
-     * @param {Function} [iteratee=_.identity] The function to combine
-     *  regrouped values.
-     * @returns {Array} Returns the new array of regrouped elements.
-     * @example
-     *
-     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);
-     * // => [[1, 10, 100], [2, 20, 200]]
-     *
-     * _.unzipWith(zipped, _.add);
-     * // => [3, 30, 300]
-     */
-    function unzipWith(array, iteratee) {
-      if (!(array && array.length)) {
-        return [];
-      }
-      var result = unzip(array);
-      if (iteratee == null) {
-        return result;
-      }
-      return arrayMap(result, function(group) {
-        return apply(iteratee, undefined, group);
-      });
-    }
- 
-    /**
-     * Creates an array excluding all given values using
-     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * for equality comparisons.
-     *
-     * **Note:** Unlike `_.pull`, this method returns a new array.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {...*} [values] The values to exclude.
-     * @returns {Array} Returns the new array of filtered values.
-     * @see _.difference, _.xor
-     * @example
-     *
-     * _.without([2, 1, 2, 3], 1, 2);
-     * // => [3]
-     */
-    var without = baseRest(function(array, values) {
-      return isArrayLikeObject(array)
-        ? baseDifference(array, values)
-        : [];
-    });
- 
-    /**
-     * Creates an array of unique values that is the
-     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)
-     * of the given arrays. The order of result values is determined by the order
-     * they occur in the arrays.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.4.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @returns {Array} Returns the new array of filtered values.
-     * @see _.difference, _.without
-     * @example
-     *
-     * _.xor([2, 1], [2, 3]);
-     * // => [1, 3]
-     */
-    var xor = baseRest(function(arrays) {
-      return baseXor(arrayFilter(arrays, isArrayLikeObject));
-    });
- 
-    /**
-     * This method is like `_.xor` except that it accepts `iteratee` which is
-     * invoked for each element of each `arrays` to generate the criterion by
-     * which by which they're compared. The order of result values is determined
-     * by the order they occur in the arrays. The iteratee is invoked with one
-     * argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {Array} Returns the new array of filtered values.
-     * @example
-     *
-     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);
-     * // => [1.2, 3.4]
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
-     * // => [{ 'x': 2 }]
-     */
-    var xorBy = baseRest(function(arrays) {
-      var iteratee = last(arrays);
-      if (isArrayLikeObject(iteratee)) {
-        iteratee = undefined;
-      }
-      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));
-    });
- 
-    /**
-     * This method is like `_.xor` except that it accepts `comparator` which is
-     * invoked to compare elements of `arrays`. The order of result values is
-     * determined by the order they occur in the arrays. The comparator is invoked
-     * with two arguments: (arrVal, othVal).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new array of filtered values.
-     * @example
-     *
-     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
-     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
-     *
-     * _.xorWith(objects, others, _.isEqual);
-     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
-     */
-    var xorWith = baseRest(function(arrays) {
-      var comparator = last(arrays);
-      comparator = typeof comparator == 'function' ? comparator : undefined;
-      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);
-    });
- 
-    /**
-     * Creates an array of grouped elements, the first of which contains the
-     * first elements of the given arrays, the second of which contains the
-     * second elements of the given arrays, and so on.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to process.
-     * @returns {Array} Returns the new array of grouped elements.
-     * @example
-     *
-     * _.zip(['a', 'b'], [1, 2], [true, false]);
-     * // => [['a', 1, true], ['b', 2, false]]
-     */
-    var zip = baseRest(unzip);
- 
-    /**
-     * This method is like `_.fromPairs` except that it accepts two arrays,
-     * one of property identifiers and one of corresponding values.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.4.0
-     * @category Array
-     * @param {Array} [props=[]] The property identifiers.
-     * @param {Array} [values=[]] The property values.
-     * @returns {Object} Returns the new object.
-     * @example
-     *
-     * _.zipObject(['a', 'b'], [1, 2]);
-     * // => { 'a': 1, 'b': 2 }
-     */
-    function zipObject(props, values) {
-      return baseZipObject(props || [], values || [], assignValue);
-    }
- 
-    /**
-     * This method is like `_.zipObject` except that it supports property paths.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.1.0
-     * @category Array
-     * @param {Array} [props=[]] The property identifiers.
-     * @param {Array} [values=[]] The property values.
-     * @returns {Object} Returns the new object.
-     * @example
-     *
-     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);
-     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }
-     */
-    function zipObjectDeep(props, values) {
-      return baseZipObject(props || [], values || [], baseSet);
-    }
- 
-    /**
-     * This method is like `_.zip` except that it accepts `iteratee` to specify
-     * how grouped values should be combined. The iteratee is invoked with the
-     * elements of each group: (...group).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.8.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to process.
-     * @param {Function} [iteratee=_.identity] The function to combine
-     *  grouped values.
-     * @returns {Array} Returns the new array of grouped elements.
-     * @example
-     *
-     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {
-     *   return a + b + c;
-     * });
-     * // => [111, 222]
-     */
-    var zipWith = baseRest(function(arrays) {
-      var length = arrays.length,
-          iteratee = length > 1 ? arrays[length - 1] : undefined;
- 
-      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;
-      return unzipWith(arrays, iteratee);
-    });
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * Creates a `lodash` wrapper instance that wraps `value` with explicit method
-     * chain sequences enabled. The result of such sequences must be unwrapped
-     * with `_#value`.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.3.0
-     * @category Seq
-     * @param {*} value The value to wrap.
-     * @returns {Object} Returns the new `lodash` wrapper instance.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'age': 36 },
-     *   { 'user': 'fred',    'age': 40 },
-     *   { 'user': 'pebbles', 'age': 1 }
-     * ];
-     *
-     * var youngest = _
-     *   .chain(users)
-     *   .sortBy('age')
-     *   .map(function(o) {
-     *     return o.user + ' is ' + o.age;
-     *   })
-     *   .head()
-     *   .value();
-     * // => 'pebbles is 1'
-     */
-    function chain(value) {
-      var result = lodash(value);
-      result.__chain__ = true;
-      return result;
-    }
- 
-    /**
-     * This method invokes `interceptor` and returns `value`. The interceptor
-     * is invoked with one argument; (value). The purpose of this method is to
-     * "tap into" a method chain sequence in order to modify intermediate results.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Seq
-     * @param {*} value The value to provide to `interceptor`.
-     * @param {Function} interceptor The function to invoke.
-     * @returns {*} Returns `value`.
-     * @example
-     *
-     * _([1, 2, 3])
-     *  .tap(function(array) {
-     *    // Mutate input array.
-     *    array.pop();
-     *  })
-     *  .reverse()
-     *  .value();
-     * // => [2, 1]
-     */
-    function tap(value, interceptor) {
-      interceptor(value);
-      return value;
-    }
- 
-    /**
-     * This method is like `_.tap` except that it returns the result of `interceptor`.
-     * The purpose of this method is to "pass thru" values replacing intermediate
-     * results in a method chain sequence.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Seq
-     * @param {*} value The value to provide to `interceptor`.
-     * @param {Function} interceptor The function to invoke.
-     * @returns {*} Returns the result of `interceptor`.
-     * @example
-     *
-     * _('  abc  ')
-     *  .chain()
-     *  .trim()
-     *  .thru(function(value) {
-     *    return [value];
-     *  })
-     *  .value();
-     * // => ['abc']
-     */
-    function thru(value, interceptor) {
-      return interceptor(value);
-    }
- 
-    /**
-     * This method is the wrapper version of `_.at`.
-     *
-     * @name at
-     * @memberOf _
-     * @since 1.0.0
-     * @category Seq
-     * @param {...(string|string[])} [paths] The property paths to pick.
-     * @returns {Object} Returns the new `lodash` wrapper instance.
-     * @example
-     *
-     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
-     *
-     * _(object).at(['a[0].b.c', 'a[1]']).value();
-     * // => [3, 4]
-     */
-    var wrapperAt = flatRest(function(paths) {
-      var length = paths.length,
-          start = length ? paths[0] : 0,
-          value = this.__wrapped__,
-          interceptor = function(object) { return baseAt(object, paths); };
- 
-      if (length > 1 || this.__actions__.length ||
-          !(value instanceof LazyWrapper) || !isIndex(start)) {
-        return this.thru(interceptor);
-      }
-      value = value.slice(start, +start + (length ? 1 : 0));
-      value.__actions__.push({
-        'func': thru,
-        'args': [interceptor],
-        'thisArg': undefined
-      });
-      return new LodashWrapper(value, this.__chain__).thru(function(array) {
-        if (length && !array.length) {
-          array.push(undefined);
-        }
-        return array;
-      });
-    });
- 
-    /**
-     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.
-     *
-     * @name chain
-     * @memberOf _
-     * @since 0.1.0
-     * @category Seq
-     * @returns {Object} Returns the new `lodash` wrapper instance.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney', 'age': 36 },
-     *   { 'user': 'fred',   'age': 40 }
-     * ];
-     *
-     * // A sequence without explicit chaining.
-     * _(users).head();
-     * // => { 'user': 'barney', 'age': 36 }
-     *
-     * // A sequence with explicit chaining.
-     * _(users)
-     *   .chain()
-     *   .head()
-     *   .pick('user')
-     *   .value();
-     * // => { 'user': 'barney' }
-     */
-    function wrapperChain() {
-      return chain(this);
-    }
- 
-    /**
-     * Executes the chain sequence and returns the wrapped result.
-     *
-     * @name commit
-     * @memberOf _
-     * @since 3.2.0
-     * @category Seq
-     * @returns {Object} Returns the new `lodash` wrapper instance.
-     * @example
-     *
-     * var array = [1, 2];
-     * var wrapped = _(array).push(3);
-     *
-     * console.log(array);
-     * // => [1, 2]
-     *
-     * wrapped = wrapped.commit();
-     * console.log(array);
-     * // => [1, 2, 3]
-     *
-     * wrapped.last();
-     * // => 3
-     *
-     * console.log(array);
-     * // => [1, 2, 3]
-     */
-    function wrapperCommit() {
-      return new LodashWrapper(this.value(), this.__chain__);
-    }
- 
-    /**
-     * Gets the next value on a wrapped object following the
-     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).
-     *
-     * @name next
-     * @memberOf _
-     * @since 4.0.0
-     * @category Seq
-     * @returns {Object} Returns the next iterator value.
-     * @example
-     *
-     * var wrapped = _([1, 2]);
-     *
-     * wrapped.next();
-     * // => { 'done': false, 'value': 1 }
-     *
-     * wrapped.next();
-     * // => { 'done': false, 'value': 2 }
-     *
-     * wrapped.next();
-     * // => { 'done': true, 'value': undefined }
-     */
-    function wrapperNext() {
-      if (this.__values__ === undefined) {
-        this.__values__ = toArray(this.value());
-      }
-      var done = this.__index__ >= this.__values__.length,
-          value = done ? undefined : this.__values__[this.__index__++];
- 
-      return { 'done': done, 'value': value };
-    }
- 
-    /**
-     * Enables the wrapper to be iterable.
-     *
-     * @name Symbol.iterator
-     * @memberOf _
-     * @since 4.0.0
-     * @category Seq
-     * @returns {Object} Returns the wrapper object.
-     * @example
-     *
-     * var wrapped = _([1, 2]);
-     *
-     * wrapped[Symbol.iterator]() === wrapped;
-     * // => true
-     *
-     * Array.from(wrapped);
-     * // => [1, 2]
-     */
-    function wrapperToIterator() {
-      return this;
-    }
- 
-    /**
-     * Creates a clone of the chain sequence planting `value` as the wrapped value.
-     *
-     * @name plant
-     * @memberOf _
-     * @since 3.2.0
-     * @category Seq
-     * @param {*} value The value to plant.
-     * @returns {Object} Returns the new `lodash` wrapper instance.
-     * @example
-     *
-     * function square(n) {
-     *   return n * n;
-     * }
-     *
-     * var wrapped = _([1, 2]).map(square);
-     * var other = wrapped.plant([3, 4]);
-     *
-     * other.value();
-     * // => [9, 16]
-     *
-     * wrapped.value();
-     * // => [1, 4]
-     */
-    function wrapperPlant(value) {
-      var result,
-          parent = this;
- 
-      while (parent instanceof baseLodash) {
-        var clone = wrapperClone(parent);
-        clone.__index__ = 0;
-        clone.__values__ = undefined;
-        if (result) {
-          previous.__wrapped__ = clone;
-        } else {
-          result = clone;
-        }
-        var previous = clone;
-        parent = parent.__wrapped__;
-      }
-      previous.__wrapped__ = value;
-      return result;
-    }
- 
-    /**
-     * This method is the wrapper version of `_.reverse`.
-     *
-     * **Note:** This method mutates the wrapped array.
-     *
-     * @name reverse
-     * @memberOf _
-     * @since 0.1.0
-     * @category Seq
-     * @returns {Object} Returns the new `lodash` wrapper instance.
-     * @example
-     *
-     * var array = [1, 2, 3];
-     *
-     * _(array).reverse().value()
-     * // => [3, 2, 1]
-     *
-     * console.log(array);
-     * // => [3, 2, 1]
-     */
-    function wrapperReverse() {
-      var value = this.__wrapped__;
-      if (value instanceof LazyWrapper) {
-        var wrapped = value;
-        if (this.__actions__.length) {
-          wrapped = new LazyWrapper(this);
-        }
-        wrapped = wrapped.reverse();
-        wrapped.__actions__.push({
-          'func': thru,
-          'args': [reverse],
-          'thisArg': undefined
-        });
-        return new LodashWrapper(wrapped, this.__chain__);
-      }
-      return this.thru(reverse);
-    }
- 
-    /**
-     * Executes the chain sequence to resolve the unwrapped value.
-     *
-     * @name value
-     * @memberOf _
-     * @since 0.1.0
-     * @alias toJSON, valueOf
-     * @category Seq
-     * @returns {*} Returns the resolved unwrapped value.
-     * @example
-     *
-     * _([1, 2, 3]).value();
-     * // => [1, 2, 3]
-     */
-    function wrapperValue() {
-      return baseWrapperValue(this.__wrapped__, this.__actions__);
-    }
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * Creates an object composed of keys generated from the results of running
-     * each element of `collection` thru `iteratee`. The corresponding value of
-     * each key is the number of times the key was returned by `iteratee`. The
-     * iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.5.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
-     * @returns {Object} Returns the composed aggregate object.
-     * @example
-     *
-     * _.countBy([6.1, 4.2, 6.3], Math.floor);
-     * // => { '4': 1, '6': 2 }
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.countBy(['one', 'two', 'three'], 'length');
-     * // => { '3': 2, '5': 1 }
-     */
-    var countBy = createAggregator(function(result, value, key) {
-      if (hasOwnProperty.call(result, key)) {
-        ++result[key];
-      } else {
-        baseAssignValue(result, key, 1);
-      }
-    });
- 
-    /**
-     * Checks if `predicate` returns truthy for **all** elements of `collection`.
-     * Iteration is stopped once `predicate` returns falsey. The predicate is
-     * invoked with three arguments: (value, index|key, collection).
-     *
-     * **Note:** This method returns `true` for
-     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
-     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
-     * elements of empty collections.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {boolean} Returns `true` if all elements pass the predicate check,
-     *  else `false`.
-     * @example
-     *
-     * _.every([true, 1, null, 'yes'], Boolean);
-     * // => false
-     *
-     * var users = [
-     *   { 'user': 'barney', 'age': 36, 'active': false },
-     *   { 'user': 'fred',   'age': 40, 'active': false }
-     * ];
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.every(users, { 'user': 'barney', 'active': false });
-     * // => false
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.every(users, ['active', false]);
-     * // => true
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.every(users, 'active');
-     * // => false
-     */
-    function every(collection, predicate, guard) {
-      var func = isArray(collection) ? arrayEvery : baseEvery;
-      if (guard && isIterateeCall(collection, predicate, guard)) {
-        predicate = undefined;
-      }
-      return func(collection, getIteratee(predicate, 3));
-    }
- 
-    /**
-     * Iterates over elements of `collection`, returning an array of all elements
-     * `predicate` returns truthy for. The predicate is invoked with three
-     * arguments: (value, index|key, collection).
-     *
-     * **Note:** Unlike `_.remove`, this method returns a new array.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the new filtered array.
-     * @see _.reject
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney', 'age': 36, 'active': true },
-     *   { 'user': 'fred',   'age': 40, 'active': false }
-     * ];
-     *
-     * _.filter(users, function(o) { return !o.active; });
-     * // => objects for ['fred']
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.filter(users, { 'age': 36, 'active': true });
-     * // => objects for ['barney']
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.filter(users, ['active', false]);
-     * // => objects for ['fred']
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.filter(users, 'active');
-     * // => objects for ['barney']
-     */
-    function filter(collection, predicate) {
-      var func = isArray(collection) ? arrayFilter : baseFilter;
-      return func(collection, getIteratee(predicate, 3));
-    }
- 
-    /**
-     * Iterates over elements of `collection`, returning the first element
-     * `predicate` returns truthy for. The predicate is invoked with three
-     * arguments: (value, index|key, collection).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to inspect.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @param {number} [fromIndex=0] The index to search from.
-     * @returns {*} Returns the matched element, else `undefined`.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'age': 36, 'active': true },
-     *   { 'user': 'fred',    'age': 40, 'active': false },
-     *   { 'user': 'pebbles', 'age': 1,  'active': true }
-     * ];
-     *
-     * _.find(users, function(o) { return o.age < 40; });
-     * // => object for 'barney'
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.find(users, { 'age': 1, 'active': true });
-     * // => object for 'pebbles'
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.find(users, ['active', false]);
-     * // => object for 'fred'
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.find(users, 'active');
-     * // => object for 'barney'
-     */
-    var find = createFind(findIndex);
- 
-    /**
-     * This method is like `_.find` except that it iterates over elements of
-     * `collection` from right to left.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to inspect.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @param {number} [fromIndex=collection.length-1] The index to search from.
-     * @returns {*} Returns the matched element, else `undefined`.
-     * @example
-     *
-     * _.findLast([1, 2, 3, 4], function(n) {
-     *   return n % 2 == 1;
-     * });
-     * // => 3
-     */
-    var findLast = createFind(findLastIndex);
- 
-    /**
-     * Creates a flattened array of values by running each element in `collection`
-     * thru `iteratee` and flattening the mapped results. The iteratee is invoked
-     * with three arguments: (value, index|key, collection).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the new flattened array.
-     * @example
-     *
-     * function duplicate(n) {
-     *   return [n, n];
-     * }
-     *
-     * _.flatMap([1, 2], duplicate);
-     * // => [1, 1, 2, 2]
-     */
-    function flatMap(collection, iteratee) {
-      return baseFlatten(map(collection, iteratee), 1);
-    }
- 
-    /**
-     * This method is like `_.flatMap` except that it recursively flattens the
-     * mapped results.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.7.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the new flattened array.
-     * @example
-     *
-     * function duplicate(n) {
-     *   return [[[n, n]]];
-     * }
-     *
-     * _.flatMapDeep([1, 2], duplicate);
-     * // => [1, 1, 2, 2]
-     */
-    function flatMapDeep(collection, iteratee) {
-      return baseFlatten(map(collection, iteratee), INFINITY);
-    }
- 
-    /**
-     * This method is like `_.flatMap` except that it recursively flattens the
-     * mapped results up to `depth` times.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.7.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @param {number} [depth=1] The maximum recursion depth.
-     * @returns {Array} Returns the new flattened array.
-     * @example
-     *
-     * function duplicate(n) {
-     *   return [[[n, n]]];
-     * }
-     *
-     * _.flatMapDepth([1, 2], duplicate, 2);
-     * // => [[1, 1], [2, 2]]
-     */
-    function flatMapDepth(collection, iteratee, depth) {
-      depth = depth === undefined ? 1 : toInteger(depth);
-      return baseFlatten(map(collection, iteratee), depth);
-    }
- 
-    /**
-     * Iterates over elements of `collection` and invokes `iteratee` for each element.
-     * The iteratee is invoked with three arguments: (value, index|key, collection).
-     * Iteratee functions may exit iteration early by explicitly returning `false`.
-     *
-     * **Note:** As with other "Collections" methods, objects with a "length"
-     * property are iterated like arrays. To avoid this behavior use `_.forIn`
-     * or `_.forOwn` for object iteration.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @alias each
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Array|Object} Returns `collection`.
-     * @see _.forEachRight
-     * @example
-     *
-     * _.forEach([1, 2], function(value) {
-     *   console.log(value);
-     * });
-     * // => Logs `1` then `2`.
-     *
-     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
-     *   console.log(key);
-     * });
-     * // => Logs 'a' then 'b' (iteration order is not guaranteed).
-     */
-    function forEach(collection, iteratee) {
-      var func = isArray(collection) ? arrayEach : baseEach;
-      return func(collection, getIteratee(iteratee, 3));
-    }
- 
-    /**
-     * This method is like `_.forEach` except that it iterates over elements of
-     * `collection` from right to left.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @alias eachRight
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Array|Object} Returns `collection`.
-     * @see _.forEach
-     * @example
-     *
-     * _.forEachRight([1, 2], function(value) {
-     *   console.log(value);
-     * });
-     * // => Logs `2` then `1`.
-     */
-    function forEachRight(collection, iteratee) {
-      var func = isArray(collection) ? arrayEachRight : baseEachRight;
-      return func(collection, getIteratee(iteratee, 3));
-    }
- 
-    /**
-     * Creates an object composed of keys generated from the results of running
-     * each element of `collection` thru `iteratee`. The order of grouped values
-     * is determined by the order they occur in `collection`. The corresponding
-     * value of each key is an array of elements responsible for generating the
-     * key. The iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
-     * @returns {Object} Returns the composed aggregate object.
-     * @example
-     *
-     * _.groupBy([6.1, 4.2, 6.3], Math.floor);
-     * // => { '4': [4.2], '6': [6.1, 6.3] }
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.groupBy(['one', 'two', 'three'], 'length');
-     * // => { '3': ['one', 'two'], '5': ['three'] }
-     */
-    var groupBy = createAggregator(function(result, value, key) {
-      if (hasOwnProperty.call(result, key)) {
-        result[key].push(value);
-      } else {
-        baseAssignValue(result, key, [value]);
-      }
-    });
- 
-    /**
-     * Checks if `value` is in `collection`. If `collection` is a string, it's
-     * checked for a substring of `value`, otherwise
-     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * is used for equality comparisons. If `fromIndex` is negative, it's used as
-     * the offset from the end of `collection`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object|string} collection The collection to inspect.
-     * @param {*} value The value to search for.
-     * @param {number} [fromIndex=0] The index to search from.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
-     * @returns {boolean} Returns `true` if `value` is found, else `false`.
-     * @example
-     *
-     * _.includes([1, 2, 3], 1);
-     * // => true
-     *
-     * _.includes([1, 2, 3], 1, 2);
-     * // => false
-     *
-     * _.includes({ 'a': 1, 'b': 2 }, 1);
-     * // => true
-     *
-     * _.includes('abcd', 'bc');
-     * // => true
-     */
-    function includes(collection, value, fromIndex, guard) {
-      collection = isArrayLike(collection) ? collection : values(collection);
-      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;
- 
-      var length = collection.length;
-      if (fromIndex < 0) {
-        fromIndex = nativeMax(length + fromIndex, 0);
-      }
-      return isString(collection)
-        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)
-        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);
-    }
- 
-    /**
-     * Invokes the method at `path` of each element in `collection`, returning
-     * an array of the results of each invoked method. Any additional arguments
-     * are provided to each invoked method. If `path` is a function, it's invoked
-     * for, and `this` bound to, each element in `collection`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Array|Function|string} path The path of the method to invoke or
-     *  the function invoked per iteration.
-     * @param {...*} [args] The arguments to invoke each method with.
-     * @returns {Array} Returns the array of results.
-     * @example
-     *
-     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');
-     * // => [[1, 5, 7], [1, 2, 3]]
-     *
-     * _.invokeMap([123, 456], String.prototype.split, '');
-     * // => [['1', '2', '3'], ['4', '5', '6']]
-     */
-    var invokeMap = baseRest(function(collection, path, args) {
-      var index = -1,
-          isFunc = typeof path == 'function',
-          result = isArrayLike(collection) ? Array(collection.length) : [];
- 
-      baseEach(collection, function(value) {
-        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
-      });
-      return result;
-    });
- 
-    /**
-     * Creates an object composed of keys generated from the results of running
-     * each element of `collection` thru `iteratee`. The corresponding value of
-     * each key is the last element responsible for generating the key. The
-     * iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
-     * @returns {Object} Returns the composed aggregate object.
-     * @example
-     *
-     * var array = [
-     *   { 'dir': 'left', 'code': 97 },
-     *   { 'dir': 'right', 'code': 100 }
-     * ];
-     *
-     * _.keyBy(array, function(o) {
-     *   return String.fromCharCode(o.code);
-     * });
-     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
-     *
-     * _.keyBy(array, 'dir');
-     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
-     */
-    var keyBy = createAggregator(function(result, value, key) {
-      baseAssignValue(result, key, value);
-    });
- 
-    /**
-     * Creates an array of values by running each element in `collection` thru
-     * `iteratee`. The iteratee is invoked with three arguments:
-     * (value, index|key, collection).
-     *
-     * Many lodash methods are guarded to work as iteratees for methods like
-     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
-     *
-     * The guarded methods are:
-     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
-     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
-     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
-     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the new mapped array.
-     * @example
-     *
-     * function square(n) {
-     *   return n * n;
-     * }
-     *
-     * _.map([4, 8], square);
-     * // => [16, 64]
-     *
-     * _.map({ 'a': 4, 'b': 8 }, square);
-     * // => [16, 64] (iteration order is not guaranteed)
-     *
-     * var users = [
-     *   { 'user': 'barney' },
-     *   { 'user': 'fred' }
-     * ];
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.map(users, 'user');
-     * // => ['barney', 'fred']
-     */
-    function map(collection, iteratee) {
-      var func = isArray(collection) ? arrayMap : baseMap;
-      return func(collection, getIteratee(iteratee, 3));
-    }
- 
-    /**
-     * This method is like `_.sortBy` except that it allows specifying the sort
-     * orders of the iteratees to sort by. If `orders` is unspecified, all values
-     * are sorted in ascending order. Otherwise, specify an order of "desc" for
-     * descending or "asc" for ascending sort order of corresponding values.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]
-     *  The iteratees to sort by.
-     * @param {string[]} [orders] The sort orders of `iteratees`.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
-     * @returns {Array} Returns the new sorted array.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'fred',   'age': 48 },
-     *   { 'user': 'barney', 'age': 34 },
-     *   { 'user': 'fred',   'age': 40 },
-     *   { 'user': 'barney', 'age': 36 }
-     * ];
-     *
-     * // Sort by `user` in ascending order and by `age` in descending order.
-     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
-     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
-     */
-    function orderBy(collection, iteratees, orders, guard) {
-      if (collection == null) {
-        return [];
-      }
-      if (!isArray(iteratees)) {
-        iteratees = iteratees == null ? [] : [iteratees];
-      }
-      orders = guard ? undefined : orders;
-      if (!isArray(orders)) {
-        orders = orders == null ? [] : [orders];
-      }
-      return baseOrderBy(collection, iteratees, orders);
-    }
- 
-    /**
-     * Creates an array of elements split into two groups, the first of which
-     * contains elements `predicate` returns truthy for, the second of which
-     * contains elements `predicate` returns falsey for. The predicate is
-     * invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the array of grouped elements.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'age': 36, 'active': false },
-     *   { 'user': 'fred',    'age': 40, 'active': true },
-     *   { 'user': 'pebbles', 'age': 1,  'active': false }
-     * ];
-     *
-     * _.partition(users, function(o) { return o.active; });
-     * // => objects for [['fred'], ['barney', 'pebbles']]
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.partition(users, { 'age': 1, 'active': false });
-     * // => objects for [['pebbles'], ['barney', 'fred']]
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.partition(users, ['active', false]);
-     * // => objects for [['barney', 'pebbles'], ['fred']]
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.partition(users, 'active');
-     * // => objects for [['fred'], ['barney', 'pebbles']]
-     */
-    var partition = createAggregator(function(result, value, key) {
-      result[key ? 0 : 1].push(value);
-    }, function() { return [[], []]; });
- 
-    /**
-     * Reduces `collection` to a value which is the accumulated result of running
-     * each element in `collection` thru `iteratee`, where each successive
-     * invocation is supplied the return value of the previous. If `accumulator`
-     * is not given, the first element of `collection` is used as the initial
-     * value. The iteratee is invoked with four arguments:
-     * (accumulator, value, index|key, collection).
-     *
-     * Many lodash methods are guarded to work as iteratees for methods like
-     * `_.reduce`, `_.reduceRight`, and `_.transform`.
-     *
-     * The guarded methods are:
-     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
-     * and `sortBy`
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @param {*} [accumulator] The initial value.
-     * @returns {*} Returns the accumulated value.
-     * @see _.reduceRight
-     * @example
-     *
-     * _.reduce([1, 2], function(sum, n) {
-     *   return sum + n;
-     * }, 0);
-     * // => 3
-     *
-     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
-     *   (result[value] || (result[value] = [])).push(key);
-     *   return result;
-     * }, {});
-     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
-     */
-    function reduce(collection, iteratee, accumulator) {
-      var func = isArray(collection) ? arrayReduce : baseReduce,
-          initAccum = arguments.length < 3;
- 
-      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);
-    }
- 
-    /**
-     * This method is like `_.reduce` except that it iterates over elements of
-     * `collection` from right to left.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @param {*} [accumulator] The initial value.
-     * @returns {*} Returns the accumulated value.
-     * @see _.reduce
-     * @example
-     *
-     * var array = [[0, 1], [2, 3], [4, 5]];
-     *
-     * _.reduceRight(array, function(flattened, other) {
-     *   return flattened.concat(other);
-     * }, []);
-     * // => [4, 5, 2, 3, 0, 1]
-     */
-    function reduceRight(collection, iteratee, accumulator) {
-      var func = isArray(collection) ? arrayReduceRight : baseReduce,
-          initAccum = arguments.length < 3;
- 
-      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);
-    }
- 
-    /**
-     * The opposite of `_.filter`; this method returns the elements of `collection`
-     * that `predicate` does **not** return truthy for.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the new filtered array.
-     * @see _.filter
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney', 'age': 36, 'active': false },
-     *   { 'user': 'fred',   'age': 40, 'active': true }
-     * ];
-     *
-     * _.reject(users, function(o) { return !o.active; });
-     * // => objects for ['fred']
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.reject(users, { 'age': 40, 'active': true });
-     * // => objects for ['barney']
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.reject(users, ['active', false]);
-     * // => objects for ['fred']
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.reject(users, 'active');
-     * // => objects for ['barney']
-     */
-    function reject(collection, predicate) {
-      var func = isArray(collection) ? arrayFilter : baseFilter;
-      return func(collection, negate(getIteratee(predicate, 3)));
-    }
- 
-    /**
-     * Gets a random element from `collection`.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to sample.
-     * @returns {*} Returns the random element.
-     * @example
-     *
-     * _.sample([1, 2, 3, 4]);
-     * // => 2
-     */
-    function sample(collection) {
-      var func = isArray(collection) ? arraySample : baseSample;
-      return func(collection);
-    }
- 
-    /**
-     * Gets `n` random elements at unique keys from `collection` up to the
-     * size of `collection`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to sample.
-     * @param {number} [n=1] The number of elements to sample.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Array} Returns the random elements.
-     * @example
-     *
-     * _.sampleSize([1, 2, 3], 2);
-     * // => [3, 1]
-     *
-     * _.sampleSize([1, 2, 3], 4);
-     * // => [2, 3, 1]
-     */
-    function sampleSize(collection, n, guard) {
-      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {
-        n = 1;
-      } else {
-        n = toInteger(n);
-      }
-      var func = isArray(collection) ? arraySampleSize : baseSampleSize;
-      return func(collection, n);
-    }
- 
-    /**
-     * Creates an array of shuffled values, using a version of the
-     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to shuffle.
-     * @returns {Array} Returns the new shuffled array.
-     * @example
-     *
-     * _.shuffle([1, 2, 3, 4]);
-     * // => [4, 1, 3, 2]
-     */
-    function shuffle(collection) {
-      var func = isArray(collection) ? arrayShuffle : baseShuffle;
-      return func(collection);
-    }
- 
-    /**
-     * Gets the size of `collection` by returning its length for array-like
-     * values or the number of own enumerable string keyed properties for objects.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object|string} collection The collection to inspect.
-     * @returns {number} Returns the collection size.
-     * @example
-     *
-     * _.size([1, 2, 3]);
-     * // => 3
-     *
-     * _.size({ 'a': 1, 'b': 2 });
-     * // => 2
-     *
-     * _.size('pebbles');
-     * // => 7
-     */
-    function size(collection) {
-      if (collection == null) {
-        return 0;
-      }
-      if (isArrayLike(collection)) {
-        return isString(collection) ? stringSize(collection) : collection.length;
-      }
-      var tag = getTag(collection);
-      if (tag == mapTag || tag == setTag) {
-        return collection.size;
-      }
-      return baseKeys(collection).length;
-    }
- 
-    /**
-     * Checks if `predicate` returns truthy for **any** element of `collection`.
-     * Iteration is stopped once `predicate` returns truthy. The predicate is
-     * invoked with three arguments: (value, index|key, collection).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {boolean} Returns `true` if any element passes the predicate check,
-     *  else `false`.
-     * @example
-     *
-     * _.some([null, 0, 'yes', false], Boolean);
-     * // => true
-     *
-     * var users = [
-     *   { 'user': 'barney', 'active': true },
-     *   { 'user': 'fred',   'active': false }
-     * ];
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.some(users, { 'user': 'barney', 'active': false });
-     * // => false
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.some(users, ['active', false]);
-     * // => true
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.some(users, 'active');
-     * // => true
-     */
-    function some(collection, predicate, guard) {
-      var func = isArray(collection) ? arraySome : baseSome;
-      if (guard && isIterateeCall(collection, predicate, guard)) {
-        predicate = undefined;
-      }
-      return func(collection, getIteratee(predicate, 3));
-    }
- 
-    /**
-     * Creates an array of elements, sorted in ascending order by the results of
-     * running each element in a collection thru each iteratee. This method
-     * performs a stable sort, that is, it preserves the original sort order of
-     * equal elements. The iteratees are invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {...(Function|Function[])} [iteratees=[_.identity]]
-     *  The iteratees to sort by.
-     * @returns {Array} Returns the new sorted array.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'fred',   'age': 48 },
-     *   { 'user': 'barney', 'age': 36 },
-     *   { 'user': 'fred',   'age': 40 },
-     *   { 'user': 'barney', 'age': 34 }
-     * ];
-     *
-     * _.sortBy(users, [function(o) { return o.user; }]);
-     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
-     *
-     * _.sortBy(users, ['user', 'age']);
-     * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]
-     */
-    var sortBy = baseRest(function(collection, iteratees) {
-      if (collection == null) {
-        return [];
-      }
-      var length = iteratees.length;
-      if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
-        iteratees = [];
-      } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
-        iteratees = [iteratees[0]];
-      }
-      return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
-    });
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * Gets the timestamp of the number of milliseconds that have elapsed since
-     * the Unix epoch (1 January 1970 00:00:00 UTC).
-     *
-     * @static
-     * @memberOf _
-     * @since 2.4.0
-     * @category Date
-     * @returns {number} Returns the timestamp.
-     * @example
-     *
-     * _.defer(function(stamp) {
-     *   console.log(_.now() - stamp);
-     * }, _.now());
-     * // => Logs the number of milliseconds it took for the deferred invocation.
-     */
-    var now = ctxNow || function() {
-      return root.Date.now();
-    };
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * The opposite of `_.before`; this method creates a function that invokes
-     * `func` once it's called `n` or more times.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {number} n The number of calls before `func` is invoked.
-     * @param {Function} func The function to restrict.
-     * @returns {Function} Returns the new restricted function.
-     * @example
-     *
-     * var saves = ['profile', 'settings'];
-     *
-     * var done = _.after(saves.length, function() {
-     *   console.log('done saving!');
-     * });
-     *
-     * _.forEach(saves, function(type) {
-     *   asyncSave({ 'type': type, 'complete': done });
-     * });
-     * // => Logs 'done saving!' after the two async saves have completed.
-     */
-    function after(n, func) {
-      if (typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      n = toInteger(n);
-      return function() {
-        if (--n < 1) {
-          return func.apply(this, arguments);
-        }
-      };
-    }
- 
-    /**
-     * Creates a function that invokes `func`, with up to `n` arguments,
-     * ignoring any additional arguments.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Function
-     * @param {Function} func The function to cap arguments for.
-     * @param {number} [n=func.length] The arity cap.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Function} Returns the new capped function.
-     * @example
-     *
-     * _.map(['6', '8', '10'], _.ary(parseInt, 1));
-     * // => [6, 8, 10]
-     */
-    function ary(func, n, guard) {
-      n = guard ? undefined : n;
-      n = (func && n == null) ? func.length : n;
-      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);
-    }
- 
-    /**
-     * Creates a function that invokes `func`, with the `this` binding and arguments
-     * of the created function, while it's called less than `n` times. Subsequent
-     * calls to the created function return the result of the last `func` invocation.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Function
-     * @param {number} n The number of calls at which `func` is no longer invoked.
-     * @param {Function} func The function to restrict.
-     * @returns {Function} Returns the new restricted function.
-     * @example
-     *
-     * jQuery(element).on('click', _.before(5, addContactToList));
-     * // => Allows adding up to 4 contacts to the list.
-     */
-    function before(n, func) {
-      var result;
-      if (typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      n = toInteger(n);
-      return function() {
-        if (--n > 0) {
-          result = func.apply(this, arguments);
-        }
-        if (n <= 1) {
-          func = undefined;
-        }
-        return result;
-      };
-    }
- 
-    /**
-     * Creates a function that invokes `func` with the `this` binding of `thisArg`
-     * and `partials` prepended to the arguments it receives.
-     *
-     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
-     * may be used as a placeholder for partially applied arguments.
-     *
-     * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
-     * property of bound functions.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {Function} func The function to bind.
-     * @param {*} thisArg The `this` binding of `func`.
-     * @param {...*} [partials] The arguments to be partially applied.
-     * @returns {Function} Returns the new bound function.
-     * @example
-     *
-     * function greet(greeting, punctuation) {
-     *   return greeting + ' ' + this.user + punctuation;
-     * }
-     *
-     * var object = { 'user': 'fred' };
-     *
-     * var bound = _.bind(greet, object, 'hi');
-     * bound('!');
-     * // => 'hi fred!'
-     *
-     * // Bound with placeholders.
-     * var bound = _.bind(greet, object, _, '!');
-     * bound('hi');
-     * // => 'hi fred!'
-     */
-    var bind = baseRest(function(func, thisArg, partials) {
-      var bitmask = WRAP_BIND_FLAG;
-      if (partials.length) {
-        var holders = replaceHolders(partials, getHolder(bind));
-        bitmask |= WRAP_PARTIAL_FLAG;
-      }
-      return createWrap(func, bitmask, thisArg, partials, holders);
-    });
- 
-    /**
-     * Creates a function that invokes the method at `object[key]` with `partials`
-     * prepended to the arguments it receives.
-     *
-     * This method differs from `_.bind` by allowing bound functions to reference
-     * methods that may be redefined or don't yet exist. See
-     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)
-     * for more details.
-     *
-     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
-     * builds, may be used as a placeholder for partially applied arguments.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.10.0
-     * @category Function
-     * @param {Object} object The object to invoke the method on.
-     * @param {string} key The key of the method.
-     * @param {...*} [partials] The arguments to be partially applied.
-     * @returns {Function} Returns the new bound function.
-     * @example
-     *
-     * var object = {
-     *   'user': 'fred',
-     *   'greet': function(greeting, punctuation) {
-     *     return greeting + ' ' + this.user + punctuation;
-     *   }
-     * };
-     *
-     * var bound = _.bindKey(object, 'greet', 'hi');
-     * bound('!');
-     * // => 'hi fred!'
-     *
-     * object.greet = function(greeting, punctuation) {
-     *   return greeting + 'ya ' + this.user + punctuation;
-     * };
-     *
-     * bound('!');
-     * // => 'hiya fred!'
-     *
-     * // Bound with placeholders.
-     * var bound = _.bindKey(object, 'greet', _, '!');
-     * bound('hi');
-     * // => 'hiya fred!'
-     */
-    var bindKey = baseRest(function(object, key, partials) {
-      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
-      if (partials.length) {
-        var holders = replaceHolders(partials, getHolder(bindKey));
-        bitmask |= WRAP_PARTIAL_FLAG;
-      }
-      return createWrap(key, bitmask, object, partials, holders);
-    });
- 
-    /**
-     * Creates a function that accepts arguments of `func` and either invokes
-     * `func` returning its result, if at least `arity` number of arguments have
-     * been provided, or returns a function that accepts the remaining `func`
-     * arguments, and so on. The arity of `func` may be specified if `func.length`
-     * is not sufficient.
-     *
-     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
-     * may be used as a placeholder for provided arguments.
-     *
-     * **Note:** This method doesn't set the "length" property of curried functions.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Function
-     * @param {Function} func The function to curry.
-     * @param {number} [arity=func.length] The arity of `func`.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Function} Returns the new curried function.
-     * @example
-     *
-     * var abc = function(a, b, c) {
-     *   return [a, b, c];
-     * };
-     *
-     * var curried = _.curry(abc);
-     *
-     * curried(1)(2)(3);
-     * // => [1, 2, 3]
-     *
-     * curried(1, 2)(3);
-     * // => [1, 2, 3]
-     *
-     * curried(1, 2, 3);
-     * // => [1, 2, 3]
-     *
-     * // Curried with placeholders.
-     * curried(1)(_, 3)(2);
-     * // => [1, 2, 3]
-     */
-    function curry(func, arity, guard) {
-      arity = guard ? undefined : arity;
-      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
-      result.placeholder = curry.placeholder;
-      return result;
-    }
- 
-    /**
-     * This method is like `_.curry` except that arguments are applied to `func`
-     * in the manner of `_.partialRight` instead of `_.partial`.
-     *
-     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
-     * builds, may be used as a placeholder for provided arguments.
-     *
-     * **Note:** This method doesn't set the "length" property of curried functions.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Function
-     * @param {Function} func The function to curry.
-     * @param {number} [arity=func.length] The arity of `func`.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Function} Returns the new curried function.
-     * @example
-     *
-     * var abc = function(a, b, c) {
-     *   return [a, b, c];
-     * };
-     *
-     * var curried = _.curryRight(abc);
-     *
-     * curried(3)(2)(1);
-     * // => [1, 2, 3]
-     *
-     * curried(2, 3)(1);
-     * // => [1, 2, 3]
-     *
-     * curried(1, 2, 3);
-     * // => [1, 2, 3]
-     *
-     * // Curried with placeholders.
-     * curried(3)(1, _)(2);
-     * // => [1, 2, 3]
-     */
-    function curryRight(func, arity, guard) {
-      arity = guard ? undefined : arity;
-      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
-      result.placeholder = curryRight.placeholder;
-      return result;
-    }
- 
-    /**
-     * Creates a debounced function that delays invoking `func` until after `wait`
-     * milliseconds have elapsed since the last time the debounced function was
-     * invoked. The debounced function comes with a `cancel` method to cancel
-     * delayed `func` invocations and a `flush` method to immediately invoke them.
-     * Provide `options` to indicate whether `func` should be invoked on the
-     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
-     * with the last arguments provided to the debounced function. Subsequent
-     * calls to the debounced function return the result of the last `func`
-     * invocation.
-     *
-     * **Note:** If `leading` and `trailing` options are `true`, `func` is
-     * invoked on the trailing edge of the timeout only if the debounced function
-     * is invoked more than once during the `wait` timeout.
-     *
-     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
-     * until to the next tick, similar to `setTimeout` with a timeout of `0`.
-     *
-     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
-     * for details over the differences between `_.debounce` and `_.throttle`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {Function} func The function to debounce.
-     * @param {number} [wait=0] The number of milliseconds to delay.
-     * @param {Object} [options={}] The options object.
-     * @param {boolean} [options.leading=false]
-     *  Specify invoking on the leading edge of the timeout.
-     * @param {number} [options.maxWait]
-     *  The maximum time `func` is allowed to be delayed before it's invoked.
-     * @param {boolean} [options.trailing=true]
-     *  Specify invoking on the trailing edge of the timeout.
-     * @returns {Function} Returns the new debounced function.
-     * @example
-     *
-     * // Avoid costly calculations while the window size is in flux.
-     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
-     *
-     * // Invoke `sendMail` when clicked, debouncing subsequent calls.
-     * jQuery(element).on('click', _.debounce(sendMail, 300, {
-     *   'leading': true,
-     *   'trailing': false
-     * }));
-     *
-     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
-     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
-     * var source = new EventSource('/stream');
-     * jQuery(source).on('message', debounced);
-     *
-     * // Cancel the trailing debounced invocation.
-     * jQuery(window).on('popstate', debounced.cancel);
-     */
-    function debounce(func, wait, options) {
-      var lastArgs,
-          lastThis,
-          maxWait,
-          result,
-          timerId,
-          lastCallTime,
-          lastInvokeTime = 0,
-          leading = false,
-          maxing = false,
-          trailing = true;
- 
-      if (typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      wait = toNumber(wait) || 0;
-      if (isObject(options)) {
-        leading = !!options.leading;
-        maxing = 'maxWait' in options;
-        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
-        trailing = 'trailing' in options ? !!options.trailing : trailing;
-      }
- 
-      function invokeFunc(time) {
-        var args = lastArgs,
-            thisArg = lastThis;
- 
-        lastArgs = lastThis = undefined;
-        lastInvokeTime = time;
-        result = func.apply(thisArg, args);
-        return result;
-      }
- 
-      function leadingEdge(time) {
-        // Reset any `maxWait` timer.
-        lastInvokeTime = time;
-        // Start the timer for the trailing edge.
-        timerId = setTimeout(timerExpired, wait);
-        // Invoke the leading edge.
-        return leading ? invokeFunc(time) : result;
-      }
- 
-      function remainingWait(time) {
-        var timeSinceLastCall = time - lastCallTime,
-            timeSinceLastInvoke = time - lastInvokeTime,
-            result = wait - timeSinceLastCall;
- 
-        return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;
-      }
- 
-      function shouldInvoke(time) {
-        var timeSinceLastCall = time - lastCallTime,
-            timeSinceLastInvoke = time - lastInvokeTime;
- 
-        // Either this is the first call, activity has stopped and we're at the
-        // trailing edge, the system time has gone backwards and we're treating
-        // it as the trailing edge, or we've hit the `maxWait` limit.
-        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
-          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
-      }
- 
-      function timerExpired() {
-        var time = now();
-        if (shouldInvoke(time)) {
-          return trailingEdge(time);
-        }
-        // Restart the timer.
-        timerId = setTimeout(timerExpired, remainingWait(time));
-      }
- 
-      function trailingEdge(time) {
-        timerId = undefined;
- 
-        // Only invoke if we have `lastArgs` which means `func` has been
-        // debounced at least once.
-        if (trailing && lastArgs) {
-          return invokeFunc(time);
-        }
-        lastArgs = lastThis = undefined;
-        return result;
-      }
- 
-      function cancel() {
-        if (timerId !== undefined) {
-          clearTimeout(timerId);
-        }
-        lastInvokeTime = 0;
-        lastArgs = lastCallTime = lastThis = timerId = undefined;
-      }
- 
-      function flush() {
-        return timerId === undefined ? result : trailingEdge(now());
-      }
- 
-      function debounced() {
-        var time = now(),
-            isInvoking = shouldInvoke(time);
- 
-        lastArgs = arguments;
-        lastThis = this;
-        lastCallTime = time;
- 
-        if (isInvoking) {
-          if (timerId === undefined) {
-            return leadingEdge(lastCallTime);
-          }
-          if (maxing) {
-            // Handle invocations in a tight loop.
-            timerId = setTimeout(timerExpired, wait);
-            return invokeFunc(lastCallTime);
-          }
-        }
-        if (timerId === undefined) {
-          timerId = setTimeout(timerExpired, wait);
-        }
-        return result;
-      }
-      debounced.cancel = cancel;
-      debounced.flush = flush;
-      return debounced;
-    }
- 
-    /**
-     * Defers invoking the `func` until the current call stack has cleared. Any
-     * additional arguments are provided to `func` when it's invoked.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {Function} func The function to defer.
-     * @param {...*} [args] The arguments to invoke `func` with.
-     * @returns {number} Returns the timer id.
-     * @example
-     *
-     * _.defer(function(text) {
-     *   console.log(text);
-     * }, 'deferred');
-     * // => Logs 'deferred' after one millisecond.
-     */
-    var defer = baseRest(function(func, args) {
-      return baseDelay(func, 1, args);
-    });
- 
-    /**
-     * Invokes `func` after `wait` milliseconds. Any additional arguments are
-     * provided to `func` when it's invoked.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {Function} func The function to delay.
-     * @param {number} wait The number of milliseconds to delay invocation.
-     * @param {...*} [args] The arguments to invoke `func` with.
-     * @returns {number} Returns the timer id.
-     * @example
-     *
-     * _.delay(function(text) {
-     *   console.log(text);
-     * }, 1000, 'later');
-     * // => Logs 'later' after one second.
-     */
-    var delay = baseRest(function(func, wait, args) {
-      return baseDelay(func, toNumber(wait) || 0, args);
-    });
- 
-    /**
-     * Creates a function that invokes `func` with arguments reversed.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Function
-     * @param {Function} func The function to flip arguments for.
-     * @returns {Function} Returns the new flipped function.
-     * @example
-     *
-     * var flipped = _.flip(function() {
-     *   return _.toArray(arguments);
-     * });
-     *
-     * flipped('a', 'b', 'c', 'd');
-     * // => ['d', 'c', 'b', 'a']
-     */
-    function flip(func) {
-      return createWrap(func, WRAP_FLIP_FLAG);
-    }
- 
-    /**
-     * Creates a function that memoizes the result of `func`. If `resolver` is
-     * provided, it determines the cache key for storing the result based on the
-     * arguments provided to the memoized function. By default, the first argument
-     * provided to the memoized function is used as the map cache key. The `func`
-     * is invoked with the `this` binding of the memoized function.
-     *
-     * **Note:** The cache is exposed as the `cache` property on the memoized
-     * function. Its creation may be customized by replacing the `_.memoize.Cache`
-     * constructor with one whose instances implement the
-     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
-     * method interface of `clear`, `delete`, `get`, `has`, and `set`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {Function} func The function to have its output memoized.
-     * @param {Function} [resolver] The function to resolve the cache key.
-     * @returns {Function} Returns the new memoized function.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': 2 };
-     * var other = { 'c': 3, 'd': 4 };
-     *
-     * var values = _.memoize(_.values);
-     * values(object);
-     * // => [1, 2]
-     *
-     * values(other);
-     * // => [3, 4]
-     *
-     * object.a = 2;
-     * values(object);
-     * // => [1, 2]
-     *
-     * // Modify the result cache.
-     * values.cache.set(object, ['a', 'b']);
-     * values(object);
-     * // => ['a', 'b']
-     *
-     * // Replace `_.memoize.Cache`.
-     * _.memoize.Cache = WeakMap;
-     */
-    function memoize(func, resolver) {
-      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      var memoized = function() {
-        var args = arguments,
-            key = resolver ? resolver.apply(this, args) : args[0],
-            cache = memoized.cache;
- 
-        if (cache.has(key)) {
-          return cache.get(key);
-        }
-        var result = func.apply(this, args);
-        memoized.cache = cache.set(key, result) || cache;
-        return result;
-      };
-      memoized.cache = new (memoize.Cache || MapCache);
-      return memoized;
-    }
- 
-    // Expose `MapCache`.
-    memoize.Cache = MapCache;
- 
-    /**
-     * Creates a function that negates the result of the predicate `func`. The
-     * `func` predicate is invoked with the `this` binding and arguments of the
-     * created function.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Function
-     * @param {Function} predicate The predicate to negate.
-     * @returns {Function} Returns the new negated function.
-     * @example
-     *
-     * function isEven(n) {
-     *   return n % 2 == 0;
-     * }
-     *
-     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
-     * // => [1, 3, 5]
-     */
-    function negate(predicate) {
-      if (typeof predicate != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      return function() {
-        var args = arguments;
-        switch (args.length) {
-          case 0: return !predicate.call(this);
-          case 1: return !predicate.call(this, args[0]);
-          case 2: return !predicate.call(this, args[0], args[1]);
-          case 3: return !predicate.call(this, args[0], args[1], args[2]);
-        }
-        return !predicate.apply(this, args);
-      };
-    }
- 
-    /**
-     * Creates a function that is restricted to invoking `func` once. Repeat calls
-     * to the function return the value of the first invocation. The `func` is
-     * invoked with the `this` binding and arguments of the created function.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {Function} func The function to restrict.
-     * @returns {Function} Returns the new restricted function.
-     * @example
-     *
-     * var initialize = _.once(createApplication);
-     * initialize();
-     * initialize();
-     * // => `createApplication` is invoked once
-     */
-    function once(func) {
-      return before(2, func);
-    }
- 
-    /**
-     * Creates a function that invokes `func` with its arguments transformed.
-     *
-     * @static
-     * @since 4.0.0
-     * @memberOf _
-     * @category Function
-     * @param {Function} func The function to wrap.
-     * @param {...(Function|Function[])} [transforms=[_.identity]]
-     *  The argument transforms.
-     * @returns {Function} Returns the new function.
-     * @example
-     *
-     * function doubled(n) {
-     *   return n * 2;
-     * }
-     *
-     * function square(n) {
-     *   return n * n;
-     * }
-     *
-     * var func = _.overArgs(function(x, y) {
-     *   return [x, y];
-     * }, [square, doubled]);
-     *
-     * func(9, 3);
-     * // => [81, 6]
-     *
-     * func(10, 5);
-     * // => [100, 10]
-     */
-    var overArgs = castRest(function(func, transforms) {
-      transforms = (transforms.length == 1 && isArray(transforms[0]))
-        ? arrayMap(transforms[0], baseUnary(getIteratee()))
-        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
- 
-      var funcsLength = transforms.length;
-      return baseRest(function(args) {
-        var index = -1,
-            length = nativeMin(args.length, funcsLength);
- 
-        while (++index < length) {
-          args[index] = transforms[index].call(this, args[index]);
-        }
-        return apply(func, this, args);
-      });
-    });
- 
-    /**
-     * Creates a function that invokes `func` with `partials` prepended to the
-     * arguments it receives. This method is like `_.bind` except it does **not**
-     * alter the `this` binding.
-     *
-     * The `_.partial.placeholder` value, which defaults to `_` in monolithic
-     * builds, may be used as a placeholder for partially applied arguments.
-     *
-     * **Note:** This method doesn't set the "length" property of partially
-     * applied functions.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.2.0
-     * @category Function
-     * @param {Function} func The function to partially apply arguments to.
-     * @param {...*} [partials] The arguments to be partially applied.
-     * @returns {Function} Returns the new partially applied function.
-     * @example
-     *
-     * function greet(greeting, name) {
-     *   return greeting + ' ' + name;
-     * }
-     *
-     * var sayHelloTo = _.partial(greet, 'hello');
-     * sayHelloTo('fred');
-     * // => 'hello fred'
-     *
-     * // Partially applied with placeholders.
-     * var greetFred = _.partial(greet, _, 'fred');
-     * greetFred('hi');
-     * // => 'hi fred'
-     */
-    var partial = baseRest(function(func, partials) {
-      var holders = replaceHolders(partials, getHolder(partial));
-      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);
-    });
- 
-    /**
-     * This method is like `_.partial` except that partially applied arguments
-     * are appended to the arguments it receives.
-     *
-     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
-     * builds, may be used as a placeholder for partially applied arguments.
-     *
-     * **Note:** This method doesn't set the "length" property of partially
-     * applied functions.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.0.0
-     * @category Function
-     * @param {Function} func The function to partially apply arguments to.
-     * @param {...*} [partials] The arguments to be partially applied.
-     * @returns {Function} Returns the new partially applied function.
-     * @example
-     *
-     * function greet(greeting, name) {
-     *   return greeting + ' ' + name;
-     * }
-     *
-     * var greetFred = _.partialRight(greet, 'fred');
-     * greetFred('hi');
-     * // => 'hi fred'
-     *
-     * // Partially applied with placeholders.
-     * var sayHelloTo = _.partialRight(greet, 'hello', _);
-     * sayHelloTo('fred');
-     * // => 'hello fred'
-     */
-    var partialRight = baseRest(function(func, partials) {
-      var holders = replaceHolders(partials, getHolder(partialRight));
-      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);
-    });
- 
-    /**
-     * Creates a function that invokes `func` with arguments arranged according
-     * to the specified `indexes` where the argument value at the first index is
-     * provided as the first argument, the argument value at the second index is
-     * provided as the second argument, and so on.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Function
-     * @param {Function} func The function to rearrange arguments for.
-     * @param {...(number|number[])} indexes The arranged argument indexes.
-     * @returns {Function} Returns the new function.
-     * @example
-     *
-     * var rearged = _.rearg(function(a, b, c) {
-     *   return [a, b, c];
-     * }, [2, 0, 1]);
-     *
-     * rearged('b', 'c', 'a')
-     * // => ['a', 'b', 'c']
-     */
-    var rearg = flatRest(function(func, indexes) {
-      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);
-    });
- 
-    /**
-     * Creates a function that invokes `func` with the `this` binding of the
-     * created function and arguments from `start` and beyond provided as
-     * an array.
-     *
-     * **Note:** This method is based on the
-     * [rest parameter](https://mdn.io/rest_parameters).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Function
-     * @param {Function} func The function to apply a rest parameter to.
-     * @param {number} [start=func.length-1] The start position of the rest parameter.
-     * @returns {Function} Returns the new function.
-     * @example
-     *
-     * var say = _.rest(function(what, names) {
-     *   return what + ' ' + _.initial(names).join(', ') +
-     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);
-     * });
-     *
-     * say('hello', 'fred', 'barney', 'pebbles');
-     * // => 'hello fred, barney, & pebbles'
-     */
-    function rest(func, start) {
-      if (typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      start = start === undefined ? start : toInteger(start);
-      return baseRest(func, start);
-    }
- 
-    /**
-     * Creates a function that invokes `func` with the `this` binding of the
-     * create function and an array of arguments much like
-     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).
-     *
-     * **Note:** This method is based on the
-     * [spread operator](https://mdn.io/spread_operator).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.2.0
-     * @category Function
-     * @param {Function} func The function to spread arguments over.
-     * @param {number} [start=0] The start position of the spread.
-     * @returns {Function} Returns the new function.
-     * @example
-     *
-     * var say = _.spread(function(who, what) {
-     *   return who + ' says ' + what;
-     * });
-     *
-     * say(['fred', 'hello']);
-     * // => 'fred says hello'
-     *
-     * var numbers = Promise.all([
-     *   Promise.resolve(40),
-     *   Promise.resolve(36)
-     * ]);
-     *
-     * numbers.then(_.spread(function(x, y) {
-     *   return x + y;
-     * }));
-     * // => a Promise of 76
-     */
-    function spread(func, start) {
-      if (typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      start = start == null ? 0 : nativeMax(toInteger(start), 0);
-      return baseRest(function(args) {
-        var array = args[start],
-            otherArgs = castSlice(args, 0, start);
- 
-        if (array) {
-          arrayPush(otherArgs, array);
-        }
-        return apply(func, this, otherArgs);
-      });
-    }
- 
-    /**
-     * Creates a throttled function that only invokes `func` at most once per
-     * every `wait` milliseconds. The throttled function comes with a `cancel`
-     * method to cancel delayed `func` invocations and a `flush` method to
-     * immediately invoke them. Provide `options` to indicate whether `func`
-     * should be invoked on the leading and/or trailing edge of the `wait`
-     * timeout. The `func` is invoked with the last arguments provided to the
-     * throttled function. Subsequent calls to the throttled function return the
-     * result of the last `func` invocation.
-     *
-     * **Note:** If `leading` and `trailing` options are `true`, `func` is
-     * invoked on the trailing edge of the timeout only if the throttled function
-     * is invoked more than once during the `wait` timeout.
-     *
-     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
-     * until to the next tick, similar to `setTimeout` with a timeout of `0`.
-     *
-     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
-     * for details over the differences between `_.throttle` and `_.debounce`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {Function} func The function to throttle.
-     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
-     * @param {Object} [options={}] The options object.
-     * @param {boolean} [options.leading=true]
-     *  Specify invoking on the leading edge of the timeout.
-     * @param {boolean} [options.trailing=true]
-     *  Specify invoking on the trailing edge of the timeout.
-     * @returns {Function} Returns the new throttled function.
-     * @example
-     *
-     * // Avoid excessively updating the position while scrolling.
-     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
-     *
-     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
-     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
-     * jQuery(element).on('click', throttled);
-     *
-     * // Cancel the trailing throttled invocation.
-     * jQuery(window).on('popstate', throttled.cancel);
-     */
-    function throttle(func, wait, options) {
-      var leading = true,
-          trailing = true;
- 
-      if (typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      if (isObject(options)) {
-        leading = 'leading' in options ? !!options.leading : leading;
-        trailing = 'trailing' in options ? !!options.trailing : trailing;
-      }
-      return debounce(func, wait, {
-        'leading': leading,
-        'maxWait': wait,
-        'trailing': trailing
-      });
-    }
- 
-    /**
-     * Creates a function that accepts up to one argument, ignoring any
-     * additional arguments.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Function
-     * @param {Function} func The function to cap arguments for.
-     * @returns {Function} Returns the new capped function.
-     * @example
-     *
-     * _.map(['6', '8', '10'], _.unary(parseInt));
-     * // => [6, 8, 10]
-     */
-    function unary(func) {
-      return ary(func, 1);
-    }
- 
-    /**
-     * Creates a function that provides `value` to `wrapper` as its first
-     * argument. Any additional arguments provided to the function are appended
-     * to those provided to the `wrapper`. The wrapper is invoked with the `this`
-     * binding of the created function.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {*} value The value to wrap.
-     * @param {Function} [wrapper=identity] The wrapper function.
-     * @returns {Function} Returns the new function.
-     * @example
-     *
-     * var p = _.wrap(_.escape, function(func, text) {
-     *   return '<p>' + func(text) + '</p>';
-     * });
-     *
-     * p('fred, barney, & pebbles');
-     * // => '<p>fred, barney, &amp; pebbles</p>'
-     */
-    function wrap(value, wrapper) {
-      return partial(castFunction(wrapper), value);
-    }
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * Casts `value` as an array if it's not one.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.4.0
-     * @category Lang
-     * @param {*} value The value to inspect.
-     * @returns {Array} Returns the cast array.
-     * @example
-     *
-     * _.castArray(1);
-     * // => [1]
-     *
-     * _.castArray({ 'a': 1 });
-     * // => [{ 'a': 1 }]
-     *
-     * _.castArray('abc');
-     * // => ['abc']
-     *
-     * _.castArray(null);
-     * // => [null]
-     *
-     * _.castArray(undefined);
-     * // => [undefined]
-     *
-     * _.castArray();
-     * // => []
-     *
-     * var array = [1, 2, 3];
-     * console.log(_.castArray(array) === array);
-     * // => true
-     */
-    function castArray() {
-      if (!arguments.length) {
-        return [];
-      }
-      var value = arguments[0];
-      return isArray(value) ? value : [value];
-    }
- 
-    /**
-     * Creates a shallow clone of `value`.
-     *
-     * **Note:** This method is loosely based on the
-     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
-     * and supports cloning arrays, array buffers, booleans, date objects, maps,
-     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
-     * arrays. The own enumerable properties of `arguments` objects are cloned
-     * as plain objects. An empty object is returned for uncloneable values such
-     * as error objects, functions, DOM nodes, and WeakMaps.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to clone.
-     * @returns {*} Returns the cloned value.
-     * @see _.cloneDeep
-     * @example
-     *
-     * var objects = [{ 'a': 1 }, { 'b': 2 }];
-     *
-     * var shallow = _.clone(objects);
-     * console.log(shallow[0] === objects[0]);
-     * // => true
-     */
-    function clone(value) {
-      return baseClone(value, CLONE_SYMBOLS_FLAG);
-    }
- 
-    /**
-     * This method is like `_.clone` except that it accepts `customizer` which
-     * is invoked to produce the cloned value. If `customizer` returns `undefined`,
-     * cloning is handled by the method instead. The `customizer` is invoked with
-     * up to four arguments; (value [, index|key, object, stack]).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to clone.
-     * @param {Function} [customizer] The function to customize cloning.
-     * @returns {*} Returns the cloned value.
-     * @see _.cloneDeepWith
-     * @example
-     *
-     * function customizer(value) {
-     *   if (_.isElement(value)) {
-     *     return value.cloneNode(false);
-     *   }
-     * }
-     *
-     * var el = _.cloneWith(document.body, customizer);
-     *
-     * console.log(el === document.body);
-     * // => false
-     * console.log(el.nodeName);
-     * // => 'BODY'
-     * console.log(el.childNodes.length);
-     * // => 0
-     */
-    function cloneWith(value, customizer) {
-      customizer = typeof customizer == 'function' ? customizer : undefined;
-      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
-    }
- 
-    /**
-     * This method is like `_.clone` except that it recursively clones `value`.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.0.0
-     * @category Lang
-     * @param {*} value The value to recursively clone.
-     * @returns {*} Returns the deep cloned value.
-     * @see _.clone
-     * @example
-     *
-     * var objects = [{ 'a': 1 }, { 'b': 2 }];
-     *
-     * var deep = _.cloneDeep(objects);
-     * console.log(deep[0] === objects[0]);
-     * // => false
-     */
-    function cloneDeep(value) {
-      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
-    }
- 
-    /**
-     * This method is like `_.cloneWith` except that it recursively clones `value`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to recursively clone.
-     * @param {Function} [customizer] The function to customize cloning.
-     * @returns {*} Returns the deep cloned value.
-     * @see _.cloneWith
-     * @example
-     *
-     * function customizer(value) {
-     *   if (_.isElement(value)) {
-     *     return value.cloneNode(true);
-     *   }
-     * }
-     *
-     * var el = _.cloneDeepWith(document.body, customizer);
-     *
-     * console.log(el === document.body);
-     * // => false
-     * console.log(el.nodeName);
-     * // => 'BODY'
-     * console.log(el.childNodes.length);
-     * // => 20
-     */
-    function cloneDeepWith(value, customizer) {
-      customizer = typeof customizer == 'function' ? customizer : undefined;
-      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
-    }
- 
-    /**
-     * Checks if `object` conforms to `source` by invoking the predicate
-     * properties of `source` with the corresponding property values of `object`.
-     *
-     * **Note:** This method is equivalent to `_.conforms` when `source` is
-     * partially applied.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.14.0
-     * @category Lang
-     * @param {Object} object The object to inspect.
-     * @param {Object} source The object of property predicates to conform to.
-     * @returns {boolean} Returns `true` if `object` conforms, else `false`.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': 2 };
-     *
-     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });
-     * // => true
-     *
-     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });
-     * // => false
-     */
-    function conformsTo(object, source) {
-      return source == null || baseConformsTo(object, source, keys(source));
-    }
- 
-    /**
-     * Performs a
-     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * comparison between two values to determine if they are equivalent.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
-     * @example
-     *
-     * var object = { 'a': 1 };
-     * var other = { 'a': 1 };
-     *
-     * _.eq(object, object);
-     * // => true
-     *
-     * _.eq(object, other);
-     * // => false
-     *
-     * _.eq('a', 'a');
-     * // => true
-     *
-     * _.eq('a', Object('a'));
-     * // => false
-     *
-     * _.eq(NaN, NaN);
-     * // => true
-     */
-    function eq(value, other) {
-      return value === other || (value !== value && other !== other);
-    }
- 
-    /**
-     * Checks if `value` is greater than `other`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.9.0
-     * @category Lang
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {boolean} Returns `true` if `value` is greater than `other`,
-     *  else `false`.
-     * @see _.lt
-     * @example
-     *
-     * _.gt(3, 1);
-     * // => true
-     *
-     * _.gt(3, 3);
-     * // => false
-     *
-     * _.gt(1, 3);
-     * // => false
-     */
-    var gt = createRelationalOperation(baseGt);
- 
-    /**
-     * Checks if `value` is greater than or equal to `other`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.9.0
-     * @category Lang
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {boolean} Returns `true` if `value` is greater than or equal to
-     *  `other`, else `false`.
-     * @see _.lte
-     * @example
-     *
-     * _.gte(3, 1);
-     * // => true
-     *
-     * _.gte(3, 3);
-     * // => true
-     *
-     * _.gte(1, 3);
-     * // => false
-     */
-    var gte = createRelationalOperation(function(value, other) {
-      return value >= other;
-    });
- 
-    /**
-     * Checks if `value` is likely an `arguments` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an `arguments` object,
-     *  else `false`.
-     * @example
-     *
-     * _.isArguments(function() { return arguments; }());
-     * // => true
-     *
-     * _.isArguments([1, 2, 3]);
-     * // => false
-     */
-    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
-      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
-        !propertyIsEnumerable.call(value, 'callee');
-    };
- 
-    /**
-     * Checks if `value` is classified as an `Array` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an array, else `false`.
-     * @example
-     *
-     * _.isArray([1, 2, 3]);
-     * // => true
-     *
-     * _.isArray(document.body.children);
-     * // => false
-     *
-     * _.isArray('abc');
-     * // => false
-     *
-     * _.isArray(_.noop);
-     * // => false
-     */
-    var isArray = Array.isArray;
- 
-    /**
-     * Checks if `value` is classified as an `ArrayBuffer` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.3.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
-     * @example
-     *
-     * _.isArrayBuffer(new ArrayBuffer(2));
-     * // => true
-     *
-     * _.isArrayBuffer(new Array(2));
-     * // => false
-     */
-    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
- 
-    /**
-     * Checks if `value` is array-like. A value is considered array-like if it's
-     * not a function and has a `value.length` that's an integer greater than or
-     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
-     * @example
-     *
-     * _.isArrayLike([1, 2, 3]);
-     * // => true
-     *
-     * _.isArrayLike(document.body.children);
-     * // => true
-     *
-     * _.isArrayLike('abc');
-     * // => true
-     *
-     * _.isArrayLike(_.noop);
-     * // => false
-     */
-    function isArrayLike(value) {
-      return value != null && isLength(value.length) && !isFunction(value);
-    }
- 
-    /**
-     * This method is like `_.isArrayLike` except that it also checks if `value`
-     * is an object.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an array-like object,
-     *  else `false`.
-     * @example
-     *
-     * _.isArrayLikeObject([1, 2, 3]);
-     * // => true
-     *
-     * _.isArrayLikeObject(document.body.children);
-     * // => true
-     *
-     * _.isArrayLikeObject('abc');
-     * // => false
-     *
-     * _.isArrayLikeObject(_.noop);
-     * // => false
-     */
-    function isArrayLikeObject(value) {
-      return isObjectLike(value) && isArrayLike(value);
-    }
- 
-    /**
-     * Checks if `value` is classified as a boolean primitive or object.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
-     * @example
-     *
-     * _.isBoolean(false);
-     * // => true
-     *
-     * _.isBoolean(null);
-     * // => false
-     */
-    function isBoolean(value) {
-      return value === true || value === false ||
-        (isObjectLike(value) && baseGetTag(value) == boolTag);
-    }
- 
-    /**
-     * Checks if `value` is a buffer.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.3.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
-     * @example
-     *
-     * _.isBuffer(new Buffer(2));
-     * // => true
-     *
-     * _.isBuffer(new Uint8Array(2));
-     * // => false
-     */
-    var isBuffer = nativeIsBuffer || stubFalse;
- 
-    /**
-     * Checks if `value` is classified as a `Date` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
-     * @example
-     *
-     * _.isDate(new Date);
-     * // => true
-     *
-     * _.isDate('Mon April 23 2012');
-     * // => false
-     */
-    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
- 
-    /**
-     * Checks if `value` is likely a DOM element.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
-     * @example
-     *
-     * _.isElement(document.body);
-     * // => true
-     *
-     * _.isElement('<body>');
-     * // => false
-     */
-    function isElement(value) {
-      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
-    }
- 
-    /**
-     * Checks if `value` is an empty object, collection, map, or set.
-     *
-     * Objects are considered empty if they have no own enumerable string keyed
-     * properties.
-     *
-     * Array-like values such as `arguments` objects, arrays, buffers, strings, or
-     * jQuery-like collections are considered empty if they have a `length` of `0`.
-     * Similarly, maps and sets are considered empty if they have a `size` of `0`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is empty, else `false`.
-     * @example
-     *
-     * _.isEmpty(null);
-     * // => true
-     *
-     * _.isEmpty(true);
-     * // => true
-     *
-     * _.isEmpty(1);
-     * // => true
-     *
-     * _.isEmpty([1, 2, 3]);
-     * // => false
-     *
-     * _.isEmpty({ 'a': 1 });
-     * // => false
-     */
-    function isEmpty(value) {
-      if (value == null) {
-        return true;
-      }
-      if (isArrayLike(value) &&
-          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
-            isBuffer(value) || isTypedArray(value) || isArguments(value))) {
-        return !value.length;
-      }
-      var tag = getTag(value);
-      if (tag == mapTag || tag == setTag) {
-        return !value.size;
-      }
-      if (isPrototype(value)) {
-        return !baseKeys(value).length;
-      }
-      for (var key in value) {
-        if (hasOwnProperty.call(value, key)) {
-          return false;
-        }
-      }
-      return true;
-    }
- 
-    /**
-     * Performs a deep comparison between two values to determine if they are
-     * equivalent.
-     *
-     * **Note:** This method supports comparing arrays, array buffers, booleans,
-     * date objects, error objects, maps, numbers, `Object` objects, regexes,
-     * sets, strings, symbols, and typed arrays. `Object` objects are compared
-     * by their own, not inherited, enumerable properties. Functions and DOM
-     * nodes are compared by strict equality, i.e. `===`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
-     * @example
-     *
-     * var object = { 'a': 1 };
-     * var other = { 'a': 1 };
-     *
-     * _.isEqual(object, other);
-     * // => true
-     *
-     * object === other;
-     * // => false
-     */
-    function isEqual(value, other) {
-      return baseIsEqual(value, other);
-    }
- 
-    /**
-     * This method is like `_.isEqual` except that it accepts `customizer` which
-     * is invoked to compare values. If `customizer` returns `undefined`, comparisons
-     * are handled by the method instead. The `customizer` is invoked with up to
-     * six arguments: (objValue, othValue [, index|key, object, other, stack]).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @param {Function} [customizer] The function to customize comparisons.
-     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
-     * @example
-     *
-     * function isGreeting(value) {
-     *   return /^h(?:i|ello)$/.test(value);
-     * }
-     *
-     * function customizer(objValue, othValue) {
-     *   if (isGreeting(objValue) && isGreeting(othValue)) {
-     *     return true;
-     *   }
-     * }
-     *
-     * var array = ['hello', 'goodbye'];
-     * var other = ['hi', 'goodbye'];
-     *
-     * _.isEqualWith(array, other, customizer);
-     * // => true
-     */
-    function isEqualWith(value, other, customizer) {
-      customizer = typeof customizer == 'function' ? customizer : undefined;
-      var result = customizer ? customizer(value, other) : undefined;
-      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;
-    }
- 
-    /**
-     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
-     * `SyntaxError`, `TypeError`, or `URIError` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
-     * @example
-     *
-     * _.isError(new Error);
-     * // => true
-     *
-     * _.isError(Error);
-     * // => false
-     */
-    function isError(value) {
-      if (!isObjectLike(value)) {
-        return false;
-      }
-      var tag = baseGetTag(value);
-      return tag == errorTag || tag == domExcTag ||
-        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
-    }
- 
-    /**
-     * Checks if `value` is a finite primitive number.
-     *
-     * **Note:** This method is based on
-     * [`Number.isFinite`](https://mdn.io/Number/isFinite).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
-     * @example
-     *
-     * _.isFinite(3);
-     * // => true
-     *
-     * _.isFinite(Number.MIN_VALUE);
-     * // => true
-     *
-     * _.isFinite(Infinity);
-     * // => false
-     *
-     * _.isFinite('3');
-     * // => false
-     */
-    function isFinite(value) {
-      return typeof value == 'number' && nativeIsFinite(value);
-    }
- 
-    /**
-     * Checks if `value` is classified as a `Function` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a function, else `false`.
-     * @example
-     *
-     * _.isFunction(_);
-     * // => true
-     *
-     * _.isFunction(/abc/);
-     * // => false
-     */
-    function isFunction(value) {
-      if (!isObject(value)) {
-        return false;
-      }
-      // The use of `Object#toString` avoids issues with the `typeof` operator
-      // in Safari 9 which returns 'object' for typed arrays and other constructors.
-      var tag = baseGetTag(value);
-      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
-    }
- 
-    /**
-     * Checks if `value` is an integer.
-     *
-     * **Note:** This method is based on
-     * [`Number.isInteger`](https://mdn.io/Number/isInteger).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
-     * @example
-     *
-     * _.isInteger(3);
-     * // => true
-     *
-     * _.isInteger(Number.MIN_VALUE);
-     * // => false
-     *
-     * _.isInteger(Infinity);
-     * // => false
-     *
-     * _.isInteger('3');
-     * // => false
-     */
-    function isInteger(value) {
-      return typeof value == 'number' && value == toInteger(value);
-    }
- 
-    /**
-     * Checks if `value` is a valid array-like length.
-     *
-     * **Note:** This method is loosely based on
-     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
-     * @example
-     *
-     * _.isLength(3);
-     * // => true
-     *
-     * _.isLength(Number.MIN_VALUE);
-     * // => false
-     *
-     * _.isLength(Infinity);
-     * // => false
-     *
-     * _.isLength('3');
-     * // => false
-     */
-    function isLength(value) {
-      return typeof value == 'number' &&
-        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
-    }
- 
-    /**
-     * Checks if `value` is the
-     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
-     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an object, else `false`.
-     * @example
-     *
-     * _.isObject({});
-     * // => true
-     *
-     * _.isObject([1, 2, 3]);
-     * // => true
-     *
-     * _.isObject(_.noop);
-     * // => true
-     *
-     * _.isObject(null);
-     * // => false
-     */
-    function isObject(value) {
-      var type = typeof value;
-      return value != null && (type == 'object' || type == 'function');
-    }
- 
-    /**
-     * Checks if `value` is object-like. A value is object-like if it's not `null`
-     * and has a `typeof` result of "object".
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
-     * @example
-     *
-     * _.isObjectLike({});
-     * // => true
-     *
-     * _.isObjectLike([1, 2, 3]);
-     * // => true
-     *
-     * _.isObjectLike(_.noop);
-     * // => false
-     *
-     * _.isObjectLike(null);
-     * // => false
-     */
-    function isObjectLike(value) {
-      return value != null && typeof value == 'object';
-    }
- 
-    /**
-     * Checks if `value` is classified as a `Map` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.3.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a map, else `false`.
-     * @example
-     *
-     * _.isMap(new Map);
-     * // => true
-     *
-     * _.isMap(new WeakMap);
-     * // => false
-     */
-    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
- 
-    /**
-     * Performs a partial deep comparison between `object` and `source` to
-     * determine if `object` contains equivalent property values.
-     *
-     * **Note:** This method is equivalent to `_.matches` when `source` is
-     * partially applied.
-     *
-     * Partial comparisons will match empty array and empty object `source`
-     * values against any array or object value, respectively. See `_.isEqual`
-     * for a list of supported value comparisons.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Lang
-     * @param {Object} object The object to inspect.
-     * @param {Object} source The object of property values to match.
-     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': 2 };
-     *
-     * _.isMatch(object, { 'b': 2 });
-     * // => true
-     *
-     * _.isMatch(object, { 'b': 1 });
-     * // => false
-     */
-    function isMatch(object, source) {
-      return object === source || baseIsMatch(object, source, getMatchData(source));
-    }
- 
-    /**
-     * This method is like `_.isMatch` except that it accepts `customizer` which
-     * is invoked to compare values. If `customizer` returns `undefined`, comparisons
-     * are handled by the method instead. The `customizer` is invoked with five
-     * arguments: (objValue, srcValue, index|key, object, source).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {Object} object The object to inspect.
-     * @param {Object} source The object of property values to match.
-     * @param {Function} [customizer] The function to customize comparisons.
-     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
-     * @example
-     *
-     * function isGreeting(value) {
-     *   return /^h(?:i|ello)$/.test(value);
-     * }
-     *
-     * function customizer(objValue, srcValue) {
-     *   if (isGreeting(objValue) && isGreeting(srcValue)) {
-     *     return true;
-     *   }
-     * }
-     *
-     * var object = { 'greeting': 'hello' };
-     * var source = { 'greeting': 'hi' };
-     *
-     * _.isMatchWith(object, source, customizer);
-     * // => true
-     */
-    function isMatchWith(object, source, customizer) {
-      customizer = typeof customizer == 'function' ? customizer : undefined;
-      return baseIsMatch(object, source, getMatchData(source), customizer);
-    }
- 
-    /**
-     * Checks if `value` is `NaN`.
-     *
-     * **Note:** This method is based on
-     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
-     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
-     * `undefined` and other non-number values.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
-     * @example
-     *
-     * _.isNaN(NaN);
-     * // => true
-     *
-     * _.isNaN(new Number(NaN));
-     * // => true
-     *
-     * isNaN(undefined);
-     * // => true
-     *
-     * _.isNaN(undefined);
-     * // => false
-     */
-    function isNaN(value) {
-      // An `NaN` primitive is the only value that is not equal to itself.
-      // Perform the `toStringTag` check first to avoid errors with some
-      // ActiveX objects in IE.
-      return isNumber(value) && value != +value;
-    }
- 
-    /**
-     * Checks if `value` is a pristine native function.
-     *
-     * **Note:** This method can't reliably detect native functions in the presence
-     * of the core-js package because core-js circumvents this kind of detection.
-     * Despite multiple requests, the core-js maintainer has made it clear: any
-     * attempt to fix the detection will be obstructed. As a result, we're left
-     * with little choice but to throw an error. Unfortunately, this also affects
-     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),
-     * which rely on core-js.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a native function,
-     *  else `false`.
-     * @example
-     *
-     * _.isNative(Array.prototype.push);
-     * // => true
-     *
-     * _.isNative(_);
-     * // => false
-     */
-    function isNative(value) {
-      if (isMaskable(value)) {
-        throw new Error(CORE_ERROR_TEXT);
-      }
-      return baseIsNative(value);
-    }
- 
-    /**
-     * Checks if `value` is `null`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
-     * @example
-     *
-     * _.isNull(null);
-     * // => true
-     *
-     * _.isNull(void 0);
-     * // => false
-     */
-    function isNull(value) {
-      return value === null;
-    }
- 
-    /**
-     * Checks if `value` is `null` or `undefined`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
-     * @example
-     *
-     * _.isNil(null);
-     * // => true
-     *
-     * _.isNil(void 0);
-     * // => true
-     *
-     * _.isNil(NaN);
-     * // => false
-     */
-    function isNil(value) {
-      return value == null;
-    }
- 
-    /**
-     * Checks if `value` is classified as a `Number` primitive or object.
-     *
-     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
-     * classified as numbers, use the `_.isFinite` method.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a number, else `false`.
-     * @example
-     *
-     * _.isNumber(3);
-     * // => true
-     *
-     * _.isNumber(Number.MIN_VALUE);
-     * // => true
-     *
-     * _.isNumber(Infinity);
-     * // => true
-     *
-     * _.isNumber('3');
-     * // => false
-     */
-    function isNumber(value) {
-      return typeof value == 'number' ||
-        (isObjectLike(value) && baseGetTag(value) == numberTag);
-    }
- 
-    /**
-     * Checks if `value` is a plain object, that is, an object created by the
-     * `Object` constructor or one with a `[[Prototype]]` of `null`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.8.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     * }
-     *
-     * _.isPlainObject(new Foo);
-     * // => false
-     *
-     * _.isPlainObject([1, 2, 3]);
-     * // => false
-     *
-     * _.isPlainObject({ 'x': 0, 'y': 0 });
-     * // => true
-     *
-     * _.isPlainObject(Object.create(null));
-     * // => true
-     */
-    function isPlainObject(value) {
-      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
-        return false;
-      }
-      var proto = getPrototype(value);
-      if (proto === null) {
-        return true;
-      }
-      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
-      return typeof Ctor == 'function' && Ctor instanceof Ctor &&
-        funcToString.call(Ctor) == objectCtorString;
-    }
- 
-    /**
-     * Checks if `value` is classified as a `RegExp` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
-     * @example
-     *
-     * _.isRegExp(/abc/);
-     * // => true
-     *
-     * _.isRegExp('/abc/');
-     * // => false
-     */
-    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
- 
-    /**
-     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754
-     * double precision number which isn't the result of a rounded unsafe integer.
-     *
-     * **Note:** This method is based on
-     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.
-     * @example
-     *
-     * _.isSafeInteger(3);
-     * // => true
-     *
-     * _.isSafeInteger(Number.MIN_VALUE);
-     * // => false
-     *
-     * _.isSafeInteger(Infinity);
-     * // => false
-     *
-     * _.isSafeInteger('3');
-     * // => false
-     */
-    function isSafeInteger(value) {
-      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
-    }
- 
-    /**
-     * Checks if `value` is classified as a `Set` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.3.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a set, else `false`.
-     * @example
-     *
-     * _.isSet(new Set);
-     * // => true
-     *
-     * _.isSet(new WeakSet);
-     * // => false
-     */
-    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
- 
-    /**
-     * Checks if `value` is classified as a `String` primitive or object.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a string, else `false`.
-     * @example
-     *
-     * _.isString('abc');
-     * // => true
-     *
-     * _.isString(1);
-     * // => false
-     */
-    function isString(value) {
-      return typeof value == 'string' ||
-        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
-    }
- 
-    /**
-     * Checks if `value` is classified as a `Symbol` primitive or object.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
-     * @example
-     *
-     * _.isSymbol(Symbol.iterator);
-     * // => true
-     *
-     * _.isSymbol('abc');
-     * // => false
-     */
-    function isSymbol(value) {
-      return typeof value == 'symbol' ||
-        (isObjectLike(value) && baseGetTag(value) == symbolTag);
-    }
- 
-    /**
-     * Checks if `value` is classified as a typed array.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
-     * @example
-     *
-     * _.isTypedArray(new Uint8Array);
-     * // => true
-     *
-     * _.isTypedArray([]);
-     * // => false
-     */
-    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
- 
-    /**
-     * Checks if `value` is `undefined`.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
-     * @example
-     *
-     * _.isUndefined(void 0);
-     * // => true
-     *
-     * _.isUndefined(null);
-     * // => false
-     */
-    function isUndefined(value) {
-      return value === undefined;
-    }
- 
-    /**
-     * Checks if `value` is classified as a `WeakMap` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.3.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.
-     * @example
-     *
-     * _.isWeakMap(new WeakMap);
-     * // => true
-     *
-     * _.isWeakMap(new Map);
-     * // => false
-     */
-    function isWeakMap(value) {
-      return isObjectLike(value) && getTag(value) == weakMapTag;
-    }
- 
-    /**
-     * Checks if `value` is classified as a `WeakSet` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.3.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.
-     * @example
-     *
-     * _.isWeakSet(new WeakSet);
-     * // => true
-     *
-     * _.isWeakSet(new Set);
-     * // => false
-     */
-    function isWeakSet(value) {
-      return isObjectLike(value) && baseGetTag(value) == weakSetTag;
-    }
- 
-    /**
-     * Checks if `value` is less than `other`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.9.0
-     * @category Lang
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {boolean} Returns `true` if `value` is less than `other`,
-     *  else `false`.
-     * @see _.gt
-     * @example
-     *
-     * _.lt(1, 3);
-     * // => true
-     *
-     * _.lt(3, 3);
-     * // => false
-     *
-     * _.lt(3, 1);
-     * // => false
-     */
-    var lt = createRelationalOperation(baseLt);
- 
-    /**
-     * Checks if `value` is less than or equal to `other`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.9.0
-     * @category Lang
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {boolean} Returns `true` if `value` is less than or equal to
-     *  `other`, else `false`.
-     * @see _.gte
-     * @example
-     *
-     * _.lte(1, 3);
-     * // => true
-     *
-     * _.lte(3, 3);
-     * // => true
-     *
-     * _.lte(3, 1);
-     * // => false
-     */
-    var lte = createRelationalOperation(function(value, other) {
-      return value <= other;
-    });
- 
-    /**
-     * Converts `value` to an array.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Lang
-     * @param {*} value The value to convert.
-     * @returns {Array} Returns the converted array.
-     * @example
-     *
-     * _.toArray({ 'a': 1, 'b': 2 });
-     * // => [1, 2]
-     *
-     * _.toArray('abc');
-     * // => ['a', 'b', 'c']
-     *
-     * _.toArray(1);
-     * // => []
-     *
-     * _.toArray(null);
-     * // => []
-     */
-    function toArray(value) {
-      if (!value) {
-        return [];
-      }
-      if (isArrayLike(value)) {
-        return isString(value) ? stringToArray(value) : copyArray(value);
-      }
-      if (symIterator && value[symIterator]) {
-        return iteratorToArray(value[symIterator]());
-      }
-      var tag = getTag(value),
-          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);
- 
-      return func(value);
-    }
- 
-    /**
-     * Converts `value` to a finite number.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.12.0
-     * @category Lang
-     * @param {*} value The value to convert.
-     * @returns {number} Returns the converted number.
-     * @example
-     *
-     * _.toFinite(3.2);
-     * // => 3.2
-     *
-     * _.toFinite(Number.MIN_VALUE);
-     * // => 5e-324
-     *
-     * _.toFinite(Infinity);
-     * // => 1.7976931348623157e+308
-     *
-     * _.toFinite('3.2');
-     * // => 3.2
-     */
-    function toFinite(value) {
-      if (!value) {
-        return value === 0 ? value : 0;
-      }
-      value = toNumber(value);
-      if (value === INFINITY || value === -INFINITY) {
-        var sign = (value < 0 ? -1 : 1);
-        return sign * MAX_INTEGER;
-      }
-      return value === value ? value : 0;
-    }
- 
-    /**
-     * Converts `value` to an integer.
-     *
-     * **Note:** This method is loosely based on
-     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to convert.
-     * @returns {number} Returns the converted integer.
-     * @example
-     *
-     * _.toInteger(3.2);
-     * // => 3
-     *
-     * _.toInteger(Number.MIN_VALUE);
-     * // => 0
-     *
-     * _.toInteger(Infinity);
-     * // => 1.7976931348623157e+308
-     *
-     * _.toInteger('3.2');
-     * // => 3
-     */
-    function toInteger(value) {
-      var result = toFinite(value),
-          remainder = result % 1;
- 
-      return result === result ? (remainder ? result - remainder : result) : 0;
-    }
- 
-    /**
-     * Converts `value` to an integer suitable for use as the length of an
-     * array-like object.
-     *
-     * **Note:** This method is based on
-     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to convert.
-     * @returns {number} Returns the converted integer.
-     * @example
-     *
-     * _.toLength(3.2);
-     * // => 3
-     *
-     * _.toLength(Number.MIN_VALUE);
-     * // => 0
-     *
-     * _.toLength(Infinity);
-     * // => 4294967295
-     *
-     * _.toLength('3.2');
-     * // => 3
-     */
-    function toLength(value) {
-      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
-    }
- 
-    /**
-     * Converts `value` to a number.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to process.
-     * @returns {number} Returns the number.
-     * @example
-     *
-     * _.toNumber(3.2);
-     * // => 3.2
-     *
-     * _.toNumber(Number.MIN_VALUE);
-     * // => 5e-324
-     *
-     * _.toNumber(Infinity);
-     * // => Infinity
-     *
-     * _.toNumber('3.2');
-     * // => 3.2
-     */
-    function toNumber(value) {
-      if (typeof value == 'number') {
-        return value;
-      }
-      if (isSymbol(value)) {
-        return NAN;
-      }
-      if (isObject(value)) {
-        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
-        value = isObject(other) ? (other + '') : other;
-      }
-      if (typeof value != 'string') {
-        return value === 0 ? value : +value;
-      }
-      value = value.replace(reTrim, '');
-      var isBinary = reIsBinary.test(value);
-      return (isBinary || reIsOctal.test(value))
-        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
-        : (reIsBadHex.test(value) ? NAN : +value);
-    }
- 
-    /**
-     * Converts `value` to a plain object flattening inherited enumerable string
-     * keyed properties of `value` to own properties of the plain object.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Lang
-     * @param {*} value The value to convert.
-     * @returns {Object} Returns the converted plain object.
-     * @example
-     *
-     * function Foo() {
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.assign({ 'a': 1 }, new Foo);
-     * // => { 'a': 1, 'b': 2 }
-     *
-     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
-     * // => { 'a': 1, 'b': 2, 'c': 3 }
-     */
-    function toPlainObject(value) {
-      return copyObject(value, keysIn(value));
-    }
- 
-    /**
-     * Converts `value` to a safe integer. A safe integer can be compared and
-     * represented correctly.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to convert.
-     * @returns {number} Returns the converted integer.
-     * @example
-     *
-     * _.toSafeInteger(3.2);
-     * // => 3
-     *
-     * _.toSafeInteger(Number.MIN_VALUE);
-     * // => 0
-     *
-     * _.toSafeInteger(Infinity);
-     * // => 9007199254740991
-     *
-     * _.toSafeInteger('3.2');
-     * // => 3
-     */
-    function toSafeInteger(value) {
-      return value
-        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)
-        : (value === 0 ? value : 0);
-    }
- 
-    /**
-     * Converts `value` to a string. An empty string is returned for `null`
-     * and `undefined` values. The sign of `-0` is preserved.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to convert.
-     * @returns {string} Returns the converted string.
-     * @example
-     *
-     * _.toString(null);
-     * // => ''
-     *
-     * _.toString(-0);
-     * // => '-0'
-     *
-     * _.toString([1, 2, 3]);
-     * // => '1,2,3'
-     */
-    function toString(value) {
-      return value == null ? '' : baseToString(value);
-    }
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * Assigns own enumerable string keyed properties of source objects to the
-     * destination object. Source objects are applied from left to right.
-     * Subsequent sources overwrite property assignments of previous sources.
-     *
-     * **Note:** This method mutates `object` and is loosely based on
-     * [`Object.assign`](https://mdn.io/Object/assign).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.10.0
-     * @category Object
-     * @param {Object} object The destination object.
-     * @param {...Object} [sources] The source objects.
-     * @returns {Object} Returns `object`.
-     * @see _.assignIn
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     * }
-     *
-     * function Bar() {
-     *   this.c = 3;
-     * }
-     *
-     * Foo.prototype.b = 2;
-     * Bar.prototype.d = 4;
-     *
-     * _.assign({ 'a': 0 }, new Foo, new Bar);
-     * // => { 'a': 1, 'c': 3 }
-     */
-    var assign = createAssigner(function(object, source) {
-      if (isPrototype(source) || isArrayLike(source)) {
-        copyObject(source, keys(source), object);
-        return;
-      }
-      for (var key in source) {
-        if (hasOwnProperty.call(source, key)) {
-          assignValue(object, key, source[key]);
-        }
-      }
-    });
- 
-    /**
-     * This method is like `_.assign` except that it iterates over own and
-     * inherited source properties.
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @alias extend
-     * @category Object
-     * @param {Object} object The destination object.
-     * @param {...Object} [sources] The source objects.
-     * @returns {Object} Returns `object`.
-     * @see _.assign
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     * }
-     *
-     * function Bar() {
-     *   this.c = 3;
-     * }
-     *
-     * Foo.prototype.b = 2;
-     * Bar.prototype.d = 4;
-     *
-     * _.assignIn({ 'a': 0 }, new Foo, new Bar);
-     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
-     */
-    var assignIn = createAssigner(function(object, source) {
-      copyObject(source, keysIn(source), object);
-    });
- 
-    /**
-     * This method is like `_.assignIn` except that it accepts `customizer`
-     * which is invoked to produce the assigned values. If `customizer` returns
-     * `undefined`, assignment is handled by the method instead. The `customizer`
-     * is invoked with five arguments: (objValue, srcValue, key, object, source).
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @alias extendWith
-     * @category Object
-     * @param {Object} object The destination object.
-     * @param {...Object} sources The source objects.
-     * @param {Function} [customizer] The function to customize assigned values.
-     * @returns {Object} Returns `object`.
-     * @see _.assignWith
-     * @example
-     *
-     * function customizer(objValue, srcValue) {
-     *   return _.isUndefined(objValue) ? srcValue : objValue;
-     * }
-     *
-     * var defaults = _.partialRight(_.assignInWith, customizer);
-     *
-     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
-     * // => { 'a': 1, 'b': 2 }
-     */
-    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
-      copyObject(source, keysIn(source), object, customizer);
-    });
- 
-    /**
-     * This method is like `_.assign` except that it accepts `customizer`
-     * which is invoked to produce the assigned values. If `customizer` returns
-     * `undefined`, assignment is handled by the method instead. The `customizer`
-     * is invoked with five arguments: (objValue, srcValue, key, object, source).
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The destination object.
-     * @param {...Object} sources The source objects.
-     * @param {Function} [customizer] The function to customize assigned values.
-     * @returns {Object} Returns `object`.
-     * @see _.assignInWith
-     * @example
-     *
-     * function customizer(objValue, srcValue) {
-     *   return _.isUndefined(objValue) ? srcValue : objValue;
-     * }
-     *
-     * var defaults = _.partialRight(_.assignWith, customizer);
-     *
-     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
-     * // => { 'a': 1, 'b': 2 }
-     */
-    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
-      copyObject(source, keys(source), object, customizer);
-    });
- 
-    /**
-     * Creates an array of values corresponding to `paths` of `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.0.0
-     * @category Object
-     * @param {Object} object The object to iterate over.
-     * @param {...(string|string[])} [paths] The property paths to pick.
-     * @returns {Array} Returns the picked values.
-     * @example
-     *
-     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
-     *
-     * _.at(object, ['a[0].b.c', 'a[1]']);
-     * // => [3, 4]
-     */
-    var at = flatRest(baseAt);
- 
-    /**
-     * Creates an object that inherits from the `prototype` object. If a
-     * `properties` object is given, its own enumerable string keyed properties
-     * are assigned to the created object.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.3.0
-     * @category Object
-     * @param {Object} prototype The object to inherit from.
-     * @param {Object} [properties] The properties to assign to the object.
-     * @returns {Object} Returns the new object.
-     * @example
-     *
-     * function Shape() {
-     *   this.x = 0;
-     *   this.y = 0;
-     * }
-     *
-     * function Circle() {
-     *   Shape.call(this);
-     * }
-     *
-     * Circle.prototype = _.create(Shape.prototype, {
-     *   'constructor': Circle
-     * });
-     *
-     * var circle = new Circle;
-     * circle instanceof Circle;
-     * // => true
-     *
-     * circle instanceof Shape;
-     * // => true
-     */
-    function create(prototype, properties) {
-      var result = baseCreate(prototype);
-      return properties == null ? result : baseAssign(result, properties);
-    }
- 
-    /**
-     * Assigns own and inherited enumerable string keyed properties of source
-     * objects to the destination object for all destination properties that
-     * resolve to `undefined`. Source objects are applied from left to right.
-     * Once a property is set, additional values of the same property are ignored.
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Object
-     * @param {Object} object The destination object.
-     * @param {...Object} [sources] The source objects.
-     * @returns {Object} Returns `object`.
-     * @see _.defaultsDeep
-     * @example
-     *
-     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
-     * // => { 'a': 1, 'b': 2 }
-     */
-    var defaults = baseRest(function(args) {
-      args.push(undefined, customDefaultsAssignIn);
-      return apply(assignInWith, undefined, args);
-    });
- 
-    /**
-     * This method is like `_.defaults` except that it recursively assigns
-     * default properties.
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.10.0
-     * @category Object
-     * @param {Object} object The destination object.
-     * @param {...Object} [sources] The source objects.
-     * @returns {Object} Returns `object`.
-     * @see _.defaults
-     * @example
-     *
-     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
-     * // => { 'a': { 'b': 2, 'c': 3 } }
-     */
-    var defaultsDeep = baseRest(function(args) {
-      args.push(undefined, customDefaultsMerge);
-      return apply(mergeWith, undefined, args);
-    });
- 
-    /**
-     * This method is like `_.find` except that it returns the key of the first
-     * element `predicate` returns truthy for instead of the element itself.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.1.0
-     * @category Object
-     * @param {Object} object The object to inspect.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {string|undefined} Returns the key of the matched element,
-     *  else `undefined`.
-     * @example
-     *
-     * var users = {
-     *   'barney':  { 'age': 36, 'active': true },
-     *   'fred':    { 'age': 40, 'active': false },
-     *   'pebbles': { 'age': 1,  'active': true }
-     * };
-     *
-     * _.findKey(users, function(o) { return o.age < 40; });
-     * // => 'barney' (iteration order is not guaranteed)
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.findKey(users, { 'age': 1, 'active': true });
-     * // => 'pebbles'
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.findKey(users, ['active', false]);
-     * // => 'fred'
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.findKey(users, 'active');
-     * // => 'barney'
-     */
-    function findKey(object, predicate) {
-      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
-    }
- 
-    /**
-     * This method is like `_.findKey` except that it iterates over elements of
-     * a collection in the opposite order.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Object
-     * @param {Object} object The object to inspect.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {string|undefined} Returns the key of the matched element,
-     *  else `undefined`.
-     * @example
-     *
-     * var users = {
-     *   'barney':  { 'age': 36, 'active': true },
-     *   'fred':    { 'age': 40, 'active': false },
-     *   'pebbles': { 'age': 1,  'active': true }
-     * };
-     *
-     * _.findLastKey(users, function(o) { return o.age < 40; });
-     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.findLastKey(users, { 'age': 36, 'active': true });
-     * // => 'barney'
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.findLastKey(users, ['active', false]);
-     * // => 'fred'
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.findLastKey(users, 'active');
-     * // => 'pebbles'
-     */
-    function findLastKey(object, predicate) {
-      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
-    }
- 
-    /**
-     * Iterates over own and inherited enumerable string keyed properties of an
-     * object and invokes `iteratee` for each property. The iteratee is invoked
-     * with three arguments: (value, key, object). Iteratee functions may exit
-     * iteration early by explicitly returning `false`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.3.0
-     * @category Object
-     * @param {Object} object The object to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Object} Returns `object`.
-     * @see _.forInRight
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.forIn(new Foo, function(value, key) {
-     *   console.log(key);
-     * });
-     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
-     */
-    function forIn(object, iteratee) {
-      return object == null
-        ? object
-        : baseFor(object, getIteratee(iteratee, 3), keysIn);
-    }
- 
-    /**
-     * This method is like `_.forIn` except that it iterates over properties of
-     * `object` in the opposite order.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Object
-     * @param {Object} object The object to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Object} Returns `object`.
-     * @see _.forIn
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.forInRight(new Foo, function(value, key) {
-     *   console.log(key);
-     * });
-     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.
-     */
-    function forInRight(object, iteratee) {
-      return object == null
-        ? object
-        : baseForRight(object, getIteratee(iteratee, 3), keysIn);
-    }
- 
-    /**
-     * Iterates over own enumerable string keyed properties of an object and
-     * invokes `iteratee` for each property. The iteratee is invoked with three
-     * arguments: (value, key, object). Iteratee functions may exit iteration
-     * early by explicitly returning `false`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.3.0
-     * @category Object
-     * @param {Object} object The object to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Object} Returns `object`.
-     * @see _.forOwnRight
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.forOwn(new Foo, function(value, key) {
-     *   console.log(key);
-     * });
-     * // => Logs 'a' then 'b' (iteration order is not guaranteed).
-     */
-    function forOwn(object, iteratee) {
-      return object && baseForOwn(object, getIteratee(iteratee, 3));
-    }
- 
-    /**
-     * This method is like `_.forOwn` except that it iterates over properties of
-     * `object` in the opposite order.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Object
-     * @param {Object} object The object to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Object} Returns `object`.
-     * @see _.forOwn
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.forOwnRight(new Foo, function(value, key) {
-     *   console.log(key);
-     * });
-     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.
-     */
-    function forOwnRight(object, iteratee) {
-      return object && baseForOwnRight(object, getIteratee(iteratee, 3));
-    }
- 
-    /**
-     * Creates an array of function property names from own enumerable properties
-     * of `object`.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Object
-     * @param {Object} object The object to inspect.
-     * @returns {Array} Returns the function names.
-     * @see _.functionsIn
-     * @example
-     *
-     * function Foo() {
-     *   this.a = _.constant('a');
-     *   this.b = _.constant('b');
-     * }
-     *
-     * Foo.prototype.c = _.constant('c');
-     *
-     * _.functions(new Foo);
-     * // => ['a', 'b']
-     */
-    function functions(object) {
-      return object == null ? [] : baseFunctions(object, keys(object));
-    }
- 
-    /**
-     * Creates an array of function property names from own and inherited
-     * enumerable properties of `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The object to inspect.
-     * @returns {Array} Returns the function names.
-     * @see _.functions
-     * @example
-     *
-     * function Foo() {
-     *   this.a = _.constant('a');
-     *   this.b = _.constant('b');
-     * }
-     *
-     * Foo.prototype.c = _.constant('c');
-     *
-     * _.functionsIn(new Foo);
-     * // => ['a', 'b', 'c']
-     */
-    function functionsIn(object) {
-      return object == null ? [] : baseFunctions(object, keysIn(object));
-    }
- 
-    /**
-     * Gets the value at `path` of `object`. If the resolved value is
-     * `undefined`, the `defaultValue` is returned in its place.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.7.0
-     * @category Object
-     * @param {Object} object The object to query.
-     * @param {Array|string} path The path of the property to get.
-     * @param {*} [defaultValue] The value returned for `undefined` resolved values.
-     * @returns {*} Returns the resolved value.
-     * @example
-     *
-     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
-     *
-     * _.get(object, 'a[0].b.c');
-     * // => 3
-     *
-     * _.get(object, ['a', '0', 'b', 'c']);
-     * // => 3
-     *
-     * _.get(object, 'a.b.c', 'default');
-     * // => 'default'
-     */
-    function get(object, path, defaultValue) {
-      var result = object == null ? undefined : baseGet(object, path);
-      return result === undefined ? defaultValue : result;
-    }
- 
-    /**
-     * Checks if `path` is a direct property of `object`.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Object
-     * @param {Object} object The object to query.
-     * @param {Array|string} path The path to check.
-     * @returns {boolean} Returns `true` if `path` exists, else `false`.
-     * @example
-     *
-     * var object = { 'a': { 'b': 2 } };
-     * var other = _.create({ 'a': _.create({ 'b': 2 }) });
-     *
-     * _.has(object, 'a');
-     * // => true
-     *
-     * _.has(object, 'a.b');
-     * // => true
-     *
-     * _.has(object, ['a', 'b']);
-     * // => true
-     *
-     * _.has(other, 'a');
-     * // => false
-     */
-    function has(object, path) {
-      return object != null && hasPath(object, path, baseHas);
-    }
- 
-    /**
-     * Checks if `path` is a direct or inherited property of `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The object to query.
-     * @param {Array|string} path The path to check.
-     * @returns {boolean} Returns `true` if `path` exists, else `false`.
-     * @example
-     *
-     * var object = _.create({ 'a': _.create({ 'b': 2 }) });
-     *
-     * _.hasIn(object, 'a');
-     * // => true
-     *
-     * _.hasIn(object, 'a.b');
-     * // => true
-     *
-     * _.hasIn(object, ['a', 'b']);
-     * // => true
-     *
-     * _.hasIn(object, 'b');
-     * // => false
-     */
-    function hasIn(object, path) {
-      return object != null && hasPath(object, path, baseHasIn);
-    }
- 
-    /**
-     * Creates an object composed of the inverted keys and values of `object`.
-     * If `object` contains duplicate values, subsequent values overwrite
-     * property assignments of previous values.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.7.0
-     * @category Object
-     * @param {Object} object The object to invert.
-     * @returns {Object} Returns the new inverted object.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': 2, 'c': 1 };
-     *
-     * _.invert(object);
-     * // => { '1': 'c', '2': 'b' }
-     */
-    var invert = createInverter(function(result, value, key) {
-      result[value] = key;
-    }, constant(identity));
- 
-    /**
-     * This method is like `_.invert` except that the inverted object is generated
-     * from the results of running each element of `object` thru `iteratee`. The
-     * corresponding inverted value of each inverted key is an array of keys
-     * responsible for generating the inverted value. The iteratee is invoked
-     * with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.1.0
-     * @category Object
-     * @param {Object} object The object to invert.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {Object} Returns the new inverted object.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': 2, 'c': 1 };
-     *
-     * _.invertBy(object);
-     * // => { '1': ['a', 'c'], '2': ['b'] }
-     *
-     * _.invertBy(object, function(value) {
-     *   return 'group' + value;
-     * });
-     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }
-     */
-    var invertBy = createInverter(function(result, value, key) {
-      if (hasOwnProperty.call(result, value)) {
-        result[value].push(key);
-      } else {
-        result[value] = [key];
-      }
-    }, getIteratee);
- 
-    /**
-     * Invokes the method at `path` of `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The object to query.
-     * @param {Array|string} path The path of the method to invoke.
-     * @param {...*} [args] The arguments to invoke the method with.
-     * @returns {*} Returns the result of the invoked method.
-     * @example
-     *
-     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };
-     *
-     * _.invoke(object, 'a[0].b.c.slice', 1, 3);
-     * // => [2, 3]
-     */
-    var invoke = baseRest(baseInvoke);
- 
-    /**
-     * Creates an array of the own enumerable property names of `object`.
-     *
-     * **Note:** Non-object values are coerced to objects. See the
-     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
-     * for more details.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Object
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property names.
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.keys(new Foo);
-     * // => ['a', 'b'] (iteration order is not guaranteed)
-     *
-     * _.keys('hi');
-     * // => ['0', '1']
-     */
-    function keys(object) {
-      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
-    }
- 
-    /**
-     * Creates an array of the own and inherited enumerable property names of `object`.
-     *
-     * **Note:** Non-object values are coerced to objects.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Object
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property names.
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.keysIn(new Foo);
-     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
-     */
-    function keysIn(object) {
-      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
-    }
- 
-    /**
-     * The opposite of `_.mapValues`; this method creates an object with the
-     * same values as `object` and keys generated by running each own enumerable
-     * string keyed property of `object` thru `iteratee`. The iteratee is invoked
-     * with three arguments: (value, key, object).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.8.0
-     * @category Object
-     * @param {Object} object The object to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Object} Returns the new mapped object.
-     * @see _.mapValues
-     * @example
-     *
-     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {
-     *   return key + value;
-     * });
-     * // => { 'a1': 1, 'b2': 2 }
-     */
-    function mapKeys(object, iteratee) {
-      var result = {};
-      iteratee = getIteratee(iteratee, 3);
- 
-      baseForOwn(object, function(value, key, object) {
-        baseAssignValue(result, iteratee(value, key, object), value);
-      });
-      return result;
-    }
- 
-    /**
-     * Creates an object with the same keys as `object` and values generated
-     * by running each own enumerable string keyed property of `object` thru
-     * `iteratee`. The iteratee is invoked with three arguments:
-     * (value, key, object).
-     *
-     * @static
-     * @memberOf _
-     * @since 2.4.0
-     * @category Object
-     * @param {Object} object The object to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Object} Returns the new mapped object.
-     * @see _.mapKeys
-     * @example
-     *
-     * var users = {
-     *   'fred':    { 'user': 'fred',    'age': 40 },
-     *   'pebbles': { 'user': 'pebbles', 'age': 1 }
-     * };
-     *
-     * _.mapValues(users, function(o) { return o.age; });
-     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.mapValues(users, 'age');
-     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
-     */
-    function mapValues(object, iteratee) {
-      var result = {};
-      iteratee = getIteratee(iteratee, 3);
- 
-      baseForOwn(object, function(value, key, object) {
-        baseAssignValue(result, key, iteratee(value, key, object));
-      });
-      return result;
-    }
- 
-    /**
-     * This method is like `_.assign` except that it recursively merges own and
-     * inherited enumerable string keyed properties of source objects into the
-     * destination object. Source properties that resolve to `undefined` are
-     * skipped if a destination value exists. Array and plain object properties
-     * are merged recursively. Other objects and value types are overridden by
-     * assignment. Source objects are applied from left to right. Subsequent
-     * sources overwrite property assignments of previous sources.
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.5.0
-     * @category Object
-     * @param {Object} object The destination object.
-     * @param {...Object} [sources] The source objects.
-     * @returns {Object} Returns `object`.
-     * @example
-     *
-     * var object = {
-     *   'a': [{ 'b': 2 }, { 'd': 4 }]
-     * };
-     *
-     * var other = {
-     *   'a': [{ 'c': 3 }, { 'e': 5 }]
-     * };
-     *
-     * _.merge(object, other);
-     * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
-     */
-    var merge = createAssigner(function(object, source, srcIndex) {
-      baseMerge(object, source, srcIndex);
-    });
- 
-    /**
-     * This method is like `_.merge` except that it accepts `customizer` which
-     * is invoked to produce the merged values of the destination and source
-     * properties. If `customizer` returns `undefined`, merging is handled by the
-     * method instead. The `customizer` is invoked with six arguments:
-     * (objValue, srcValue, key, object, source, stack).
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The destination object.
-     * @param {...Object} sources The source objects.
-     * @param {Function} customizer The function to customize assigned values.
-     * @returns {Object} Returns `object`.
-     * @example
-     *
-     * function customizer(objValue, srcValue) {
-     *   if (_.isArray(objValue)) {
-     *     return objValue.concat(srcValue);
-     *   }
-     * }
-     *
-     * var object = { 'a': [1], 'b': [2] };
-     * var other = { 'a': [3], 'b': [4] };
-     *
-     * _.mergeWith(object, other, customizer);
-     * // => { 'a': [1, 3], 'b': [2, 4] }
-     */
-    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
-      baseMerge(object, source, srcIndex, customizer);
-    });
- 
-    /**
-     * The opposite of `_.pick`; this method creates an object composed of the
-     * own and inherited enumerable property paths of `object` that are not omitted.
-     *
-     * **Note:** This method is considerably slower than `_.pick`.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Object
-     * @param {Object} object The source object.
-     * @param {...(string|string[])} [paths] The property paths to omit.
-     * @returns {Object} Returns the new object.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': '2', 'c': 3 };
-     *
-     * _.omit(object, ['a', 'c']);
-     * // => { 'b': '2' }
-     */
-    var omit = flatRest(function(object, paths) {
-      var result = {};
-      if (object == null) {
-        return result;
-      }
-      var isDeep = false;
-      paths = arrayMap(paths, function(path) {
-        path = castPath(path, object);
-        isDeep || (isDeep = path.length > 1);
-        return path;
-      });
-      copyObject(object, getAllKeysIn(object), result);
-      if (isDeep) {
-        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
-      }
-      var length = paths.length;
-      while (length--) {
-        baseUnset(result, paths[length]);
-      }
-      return result;
-    });
- 
-    /**
-     * The opposite of `_.pickBy`; this method creates an object composed of
-     * the own and inherited enumerable string keyed properties of `object` that
-     * `predicate` doesn't return truthy for. The predicate is invoked with two
-     * arguments: (value, key).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The source object.
-     * @param {Function} [predicate=_.identity] The function invoked per property.
-     * @returns {Object} Returns the new object.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': '2', 'c': 3 };
-     *
-     * _.omitBy(object, _.isNumber);
-     * // => { 'b': '2' }
-     */
-    function omitBy(object, predicate) {
-      return pickBy(object, negate(getIteratee(predicate)));
-    }
- 
-    /**
-     * Creates an object composed of the picked `object` properties.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Object
-     * @param {Object} object The source object.
-     * @param {...(string|string[])} [paths] The property paths to pick.
-     * @returns {Object} Returns the new object.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': '2', 'c': 3 };
-     *
-     * _.pick(object, ['a', 'c']);
-     * // => { 'a': 1, 'c': 3 }
-     */
-    var pick = flatRest(function(object, paths) {
-      return object == null ? {} : basePick(object, paths);
-    });
- 
-    /**
-     * Creates an object composed of the `object` properties `predicate` returns
-     * truthy for. The predicate is invoked with two arguments: (value, key).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The source object.
-     * @param {Function} [predicate=_.identity] The function invoked per property.
-     * @returns {Object} Returns the new object.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': '2', 'c': 3 };
-     *
-     * _.pickBy(object, _.isNumber);
-     * // => { 'a': 1, 'c': 3 }
-     */
-    function pickBy(object, predicate) {
-      if (object == null) {
-        return {};
-      }
-      var props = arrayMap(getAllKeysIn(object), function(prop) {
-        return [prop];
-      });
-      predicate = getIteratee(predicate);
-      return basePickBy(object, props, function(value, path) {
-        return predicate(value, path[0]);
-      });
-    }
- 
-    /**
-     * This method is like `_.get` except that if the resolved value is a
-     * function it's invoked with the `this` binding of its parent object and
-     * its result is returned.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Object
-     * @param {Object} object The object to query.
-     * @param {Array|string} path The path of the property to resolve.
-     * @param {*} [defaultValue] The value returned for `undefined` resolved values.
-     * @returns {*} Returns the resolved value.
-     * @example
-     *
-     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
-     *
-     * _.result(object, 'a[0].b.c1');
-     * // => 3
-     *
-     * _.result(object, 'a[0].b.c2');
-     * // => 4
-     *
-     * _.result(object, 'a[0].b.c3', 'default');
-     * // => 'default'
-     *
-     * _.result(object, 'a[0].b.c3', _.constant('default'));
-     * // => 'default'
-     */
-    function result(object, path, defaultValue) {
-      path = castPath(path, object);
- 
-      var index = -1,
-          length = path.length;
- 
-      // Ensure the loop is entered when path is empty.
-      if (!length) {
-        length = 1;
-        object = undefined;
-      }
-      while (++index < length) {
-        var value = object == null ? undefined : object[toKey(path[index])];
-        if (value === undefined) {
-          index = length;
-          value = defaultValue;
-        }
-        object = isFunction(value) ? value.call(object) : value;
-      }
-      return object;
-    }
- 
-    /**
-     * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
-     * it's created. Arrays are created for missing index properties while objects
-     * are created for all other missing properties. Use `_.setWith` to customize
-     * `path` creation.
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.7.0
-     * @category Object
-     * @param {Object} object The object to modify.
-     * @param {Array|string} path The path of the property to set.
-     * @param {*} value The value to set.
-     * @returns {Object} Returns `object`.
-     * @example
-     *
-     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
-     *
-     * _.set(object, 'a[0].b.c', 4);
-     * console.log(object.a[0].b.c);
-     * // => 4
-     *
-     * _.set(object, ['x', '0', 'y', 'z'], 5);
-     * console.log(object.x[0].y.z);
-     * // => 5
-     */
-    function set(object, path, value) {
-      return object == null ? object : baseSet(object, path, value);
-    }
- 
-    /**
-     * This method is like `_.set` except that it accepts `customizer` which is
-     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
-     * path creation is handled by the method instead. The `customizer` is invoked
-     * with three arguments: (nsValue, key, nsObject).
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The object to modify.
-     * @param {Array|string} path The path of the property to set.
-     * @param {*} value The value to set.
-     * @param {Function} [customizer] The function to customize assigned values.
-     * @returns {Object} Returns `object`.
-     * @example
-     *
-     * var object = {};
-     *
-     * _.setWith(object, '[0][1]', 'a', Object);
-     * // => { '0': { '1': 'a' } }
-     */
-    function setWith(object, path, value, customizer) {
-      customizer = typeof customizer == 'function' ? customizer : undefined;
-      return object == null ? object : baseSet(object, path, value, customizer);
-    }
- 
-    /**
-     * Creates an array of own enumerable string keyed-value pairs for `object`
-     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
-     * entries are returned.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @alias entries
-     * @category Object
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the key-value pairs.
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.toPairs(new Foo);
-     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
-     */
-    var toPairs = createToPairs(keys);
- 
-    /**
-     * Creates an array of own and inherited enumerable string keyed-value pairs
-     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map
-     * or set, its entries are returned.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @alias entriesIn
-     * @category Object
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the key-value pairs.
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.toPairsIn(new Foo);
-     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)
-     */
-    var toPairsIn = createToPairs(keysIn);
- 
-    /**
-     * An alternative to `_.reduce`; this method transforms `object` to a new
-     * `accumulator` object which is the result of running each of its own
-     * enumerable string keyed properties thru `iteratee`, with each invocation
-     * potentially mutating the `accumulator` object. If `accumulator` is not
-     * provided, a new object with the same `[[Prototype]]` will be used. The
-     * iteratee is invoked with four arguments: (accumulator, value, key, object).
-     * Iteratee functions may exit iteration early by explicitly returning `false`.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.3.0
-     * @category Object
-     * @param {Object} object The object to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @param {*} [accumulator] The custom accumulator value.
-     * @returns {*} Returns the accumulated value.
-     * @example
-     *
-     * _.transform([2, 3, 4], function(result, n) {
-     *   result.push(n *= n);
-     *   return n % 2 == 0;
-     * }, []);
-     * // => [4, 9]
-     *
-     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
-     *   (result[value] || (result[value] = [])).push(key);
-     * }, {});
-     * // => { '1': ['a', 'c'], '2': ['b'] }
-     */
-    function transform(object, iteratee, accumulator) {
-      var isArr = isArray(object),
-          isArrLike = isArr || isBuffer(object) || isTypedArray(object);
- 
-      iteratee = getIteratee(iteratee, 4);
-      if (accumulator == null) {
-        var Ctor = object && object.constructor;
-        if (isArrLike) {
-          accumulator = isArr ? new Ctor : [];
-        }
-        else if (isObject(object)) {
-          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
-        }
-        else {
-          accumulator = {};
-        }
-      }
-      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
-        return iteratee(accumulator, value, index, object);
-      });
-      return accumulator;
-    }
- 
-    /**
-     * Removes the property at `path` of `object`.
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The object to modify.
-     * @param {Array|string} path The path of the property to unset.
-     * @returns {boolean} Returns `true` if the property is deleted, else `false`.
-     * @example
-     *
-     * var object = { 'a': [{ 'b': { 'c': 7 } }] };
-     * _.unset(object, 'a[0].b.c');
-     * // => true
-     *
-     * console.log(object);
-     * // => { 'a': [{ 'b': {} }] };
-     *
-     * _.unset(object, ['a', '0', 'b', 'c']);
-     * // => true
-     *
-     * console.log(object);
-     * // => { 'a': [{ 'b': {} }] };
-     */
-    function unset(object, path) {
-      return object == null ? true : baseUnset(object, path);
-    }
- 
-    /**
-     * This method is like `_.set` except that accepts `updater` to produce the
-     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`
-     * is invoked with one argument: (value).
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.6.0
-     * @category Object
-     * @param {Object} object The object to modify.
-     * @param {Array|string} path The path of the property to set.
-     * @param {Function} updater The function to produce the updated value.
-     * @returns {Object} Returns `object`.
-     * @example
-     *
-     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
-     *
-     * _.update(object, 'a[0].b.c', function(n) { return n * n; });
-     * console.log(object.a[0].b.c);
-     * // => 9
-     *
-     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });
-     * console.log(object.x[0].y.z);
-     * // => 0
-     */
-    function update(object, path, updater) {
-      return object == null ? object : baseUpdate(object, path, castFunction(updater));
-    }
- 
-    /**
-     * This method is like `_.update` except that it accepts `customizer` which is
-     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
-     * path creation is handled by the method instead. The `customizer` is invoked
-     * with three arguments: (nsValue, key, nsObject).
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.6.0
-     * @category Object
-     * @param {Object} object The object to modify.
-     * @param {Array|string} path The path of the property to set.
-     * @param {Function} updater The function to produce the updated value.
-     * @param {Function} [customizer] The function to customize assigned values.
-     * @returns {Object} Returns `object`.
-     * @example
-     *
-     * var object = {};
-     *
-     * _.updateWith(object, '[0][1]', _.constant('a'), Object);
-     * // => { '0': { '1': 'a' } }
-     */
-    function updateWith(object, path, updater, customizer) {
-      customizer = typeof customizer == 'function' ? customizer : undefined;
-      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
-    }
- 
-    /**
-     * Creates an array of the own enumerable string keyed property values of `object`.
-     *
-     * **Note:** Non-object values are coerced to objects.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Object
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property values.
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.values(new Foo);
-     * // => [1, 2] (iteration order is not guaranteed)
-     *
-     * _.values('hi');
-     * // => ['h', 'i']
-     */
-    function values(object) {
-      return object == null ? [] : baseValues(object, keys(object));
-    }
- 
-    /**
-     * Creates an array of the own and inherited enumerable string keyed property
-     * values of `object`.
-     *
-     * **Note:** Non-object values are coerced to objects.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Object
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property values.
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.valuesIn(new Foo);
-     * // => [1, 2, 3] (iteration order is not guaranteed)
-     */
-    function valuesIn(object) {
-      return object == null ? [] : baseValues(object, keysIn(object));
-    }
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * Clamps `number` within the inclusive `lower` and `upper` bounds.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Number
-     * @param {number} number The number to clamp.
-     * @param {number} [lower] The lower bound.
-     * @param {number} upper The upper bound.
-     * @returns {number} Returns the clamped number.
-     * @example
-     *
-     * _.clamp(-10, -5, 5);
-     * // => -5
-     *
-     * _.clamp(10, -5, 5);
-     * // => 5
-     */
-    function clamp(number, lower, upper) {
-      if (upper === undefined) {
-        upper = lower;
-        lower = undefined;
-      }
-      if (upper !== undefined) {
-        upper = toNumber(upper);
-        upper = upper === upper ? upper : 0;
-      }
-      if (lower !== undefined) {
-        lower = toNumber(lower);
-        lower = lower === lower ? lower : 0;
-      }
-      return baseClamp(toNumber(number), lower, upper);
-    }
- 
-    /**
-     * Checks if `n` is between `start` and up to, but not including, `end`. If
-     * `end` is not specified, it's set to `start` with `start` then set to `0`.
-     * If `start` is greater than `end` the params are swapped to support
-     * negative ranges.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.3.0
-     * @category Number
-     * @param {number} number The number to check.
-     * @param {number} [start=0] The start of the range.
-     * @param {number} end The end of the range.
-     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
-     * @see _.range, _.rangeRight
-     * @example
-     *
-     * _.inRange(3, 2, 4);
-     * // => true
-     *
-     * _.inRange(4, 8);
-     * // => true
-     *
-     * _.inRange(4, 2);
-     * // => false
-     *
-     * _.inRange(2, 2);
-     * // => false
-     *
-     * _.inRange(1.2, 2);
-     * // => true
-     *
-     * _.inRange(5.2, 4);
-     * // => false
-     *
-     * _.inRange(-3, -2, -6);
-     * // => true
-     */
-    function inRange(number, start, end) {
-      start = toFinite(start);
-      if (end === undefined) {
-        end = start;
-        start = 0;
-      } else {
-        end = toFinite(end);
-      }
-      number = toNumber(number);
-      return baseInRange(number, start, end);
-    }
- 
-    /**
-     * Produces a random number between the inclusive `lower` and `upper` bounds.
-     * If only one argument is provided a number between `0` and the given number
-     * is returned. If `floating` is `true`, or either `lower` or `upper` are
-     * floats, a floating-point number is returned instead of an integer.
-     *
-     * **Note:** JavaScript follows the IEEE-754 standard for resolving
-     * floating-point values which can produce unexpected results.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.7.0
-     * @category Number
-     * @param {number} [lower=0] The lower bound.
-     * @param {number} [upper=1] The upper bound.
-     * @param {boolean} [floating] Specify returning a floating-point number.
-     * @returns {number} Returns the random number.
-     * @example
-     *
-     * _.random(0, 5);
-     * // => an integer between 0 and 5
-     *
-     * _.random(5);
-     * // => also an integer between 0 and 5
-     *
-     * _.random(5, true);
-     * // => a floating-point number between 0 and 5
-     *
-     * _.random(1.2, 5.2);
-     * // => a floating-point number between 1.2 and 5.2
-     */
-    function random(lower, upper, floating) {
-      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {
-        upper = floating = undefined;
-      }
-      if (floating === undefined) {
-        if (typeof upper == 'boolean') {
-          floating = upper;
-          upper = undefined;
-        }
-        else if (typeof lower == 'boolean') {
-          floating = lower;
-          lower = undefined;
-        }
-      }
-      if (lower === undefined && upper === undefined) {
-        lower = 0;
-        upper = 1;
-      }
-      else {
-        lower = toFinite(lower);
-        if (upper === undefined) {
-          upper = lower;
-          lower = 0;
-        } else {
-          upper = toFinite(upper);
-        }
-      }
-      if (lower > upper) {
-        var temp = lower;
-        lower = upper;
-        upper = temp;
-      }
-      if (floating || lower % 1 || upper % 1) {
-        var rand = nativeRandom();
-        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);
-      }
-      return baseRandom(lower, upper);
-    }
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the camel cased string.
-     * @example
-     *
-     * _.camelCase('Foo Bar');
-     * // => 'fooBar'
-     *
-     * _.camelCase('--foo-bar--');
-     * // => 'fooBar'
-     *
-     * _.camelCase('__FOO_BAR__');
-     * // => 'fooBar'
-     */
-    var camelCase = createCompounder(function(result, word, index) {
-      word = word.toLowerCase();
-      return result + (index ? capitalize(word) : word);
-    });
- 
-    /**
-     * Converts the first character of `string` to upper case and the remaining
-     * to lower case.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to capitalize.
-     * @returns {string} Returns the capitalized string.
-     * @example
-     *
-     * _.capitalize('FRED');
-     * // => 'Fred'
-     */
-    function capitalize(string) {
-      return upperFirst(toString(string).toLowerCase());
-    }
- 
-    /**
-     * Deburrs `string` by converting
-     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
-     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)
-     * letters to basic Latin letters and removing
-     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to deburr.
-     * @returns {string} Returns the deburred string.
-     * @example
-     *
-     * _.deburr('déjà vu');
-     * // => 'deja vu'
-     */
-    function deburr(string) {
-      string = toString(string);
-      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');
-    }
- 
-    /**
-     * Checks if `string` ends with the given target string.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to inspect.
-     * @param {string} [target] The string to search for.
-     * @param {number} [position=string.length] The position to search up to.
-     * @returns {boolean} Returns `true` if `string` ends with `target`,
-     *  else `false`.
-     * @example
-     *
-     * _.endsWith('abc', 'c');
-     * // => true
-     *
-     * _.endsWith('abc', 'b');
-     * // => false
-     *
-     * _.endsWith('abc', 'b', 2);
-     * // => true
-     */
-    function endsWith(string, target, position) {
-      string = toString(string);
-      target = baseToString(target);
- 
-      var length = string.length;
-      position = position === undefined
-        ? length
-        : baseClamp(toInteger(position), 0, length);
- 
-      var end = position;
-      position -= target.length;
-      return position >= 0 && string.slice(position, end) == target;
-    }
- 
-    /**
-     * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
-     * corresponding HTML entities.
-     *
-     * **Note:** No other characters are escaped. To escape additional
-     * characters use a third-party library like [_he_](https://mths.be/he).
-     *
-     * Though the ">" character is escaped for symmetry, characters like
-     * ">" and "/" don't need escaping in HTML and have no special meaning
-     * unless they're part of a tag or unquoted attribute value. See
-     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
-     * (under "semi-related fun fact") for more details.
-     *
-     * When working with HTML you should always
-     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
-     * XSS vectors.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category String
-     * @param {string} [string=''] The string to escape.
-     * @returns {string} Returns the escaped string.
-     * @example
-     *
-     * _.escape('fred, barney, & pebbles');
-     * // => 'fred, barney, &amp; pebbles'
-     */
-    function escape(string) {
-      string = toString(string);
-      return (string && reHasUnescapedHtml.test(string))
-        ? string.replace(reUnescapedHtml, escapeHtmlChar)
-        : string;
-    }
- 
-    /**
-     * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+",
-     * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to escape.
-     * @returns {string} Returns the escaped string.
-     * @example
-     *
-     * _.escapeRegExp('[lodash](https://lodash.com/)');
-     * // => '\[lodash\]\(https://lodash\.com/\)'
-     */
-    function escapeRegExp(string) {
-      string = toString(string);
-      return (string && reHasRegExpChar.test(string))
-        ? string.replace(reRegExpChar, '\\$&')
-        : string;
-    }
- 
-    /**
-     * Converts `string` to
-     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the kebab cased string.
-     * @example
-     *
-     * _.kebabCase('Foo Bar');
-     * // => 'foo-bar'
-     *
-     * _.kebabCase('fooBar');
-     * // => 'foo-bar'
-     *
-     * _.kebabCase('__FOO_BAR__');
-     * // => 'foo-bar'
-     */
-    var kebabCase = createCompounder(function(result, word, index) {
-      return result + (index ? '-' : '') + word.toLowerCase();
-    });
- 
-    /**
-     * Converts `string`, as space separated words, to lower case.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the lower cased string.
-     * @example
-     *
-     * _.lowerCase('--Foo-Bar--');
-     * // => 'foo bar'
-     *
-     * _.lowerCase('fooBar');
-     * // => 'foo bar'
-     *
-     * _.lowerCase('__FOO_BAR__');
-     * // => 'foo bar'
-     */
-    var lowerCase = createCompounder(function(result, word, index) {
-      return result + (index ? ' ' : '') + word.toLowerCase();
-    });
- 
-    /**
-     * Converts the first character of `string` to lower case.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the converted string.
-     * @example
-     *
-     * _.lowerFirst('Fred');
-     * // => 'fred'
-     *
-     * _.lowerFirst('FRED');
-     * // => 'fRED'
-     */
-    var lowerFirst = createCaseFirst('toLowerCase');
- 
-    /**
-     * Pads `string` on the left and right sides if it's shorter than `length`.
-     * Padding characters are truncated if they can't be evenly divided by `length`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to pad.
-     * @param {number} [length=0] The padding length.
-     * @param {string} [chars=' '] The string used as padding.
-     * @returns {string} Returns the padded string.
-     * @example
-     *
-     * _.pad('abc', 8);
-     * // => '  abc   '
-     *
-     * _.pad('abc', 8, '_-');
-     * // => '_-abc_-_'
-     *
-     * _.pad('abc', 3);
-     * // => 'abc'
-     */
-    function pad(string, length, chars) {
-      string = toString(string);
-      length = toInteger(length);
- 
-      var strLength = length ? stringSize(string) : 0;
-      if (!length || strLength >= length) {
-        return string;
-      }
-      var mid = (length - strLength) / 2;
-      return (
-        createPadding(nativeFloor(mid), chars) +
-        string +
-        createPadding(nativeCeil(mid), chars)
-      );
-    }
- 
-    /**
-     * Pads `string` on the right side if it's shorter than `length`. Padding
-     * characters are truncated if they exceed `length`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to pad.
-     * @param {number} [length=0] The padding length.
-     * @param {string} [chars=' '] The string used as padding.
-     * @returns {string} Returns the padded string.
-     * @example
-     *
-     * _.padEnd('abc', 6);
-     * // => 'abc   '
-     *
-     * _.padEnd('abc', 6, '_-');
-     * // => 'abc_-_'
-     *
-     * _.padEnd('abc', 3);
-     * // => 'abc'
-     */
-    function padEnd(string, length, chars) {
-      string = toString(string);
-      length = toInteger(length);
- 
-      var strLength = length ? stringSize(string) : 0;
-      return (length && strLength < length)
-        ? (string + createPadding(length - strLength, chars))
-        : string;
-    }
- 
-    /**
-     * Pads `string` on the left side if it's shorter than `length`. Padding
-     * characters are truncated if they exceed `length`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to pad.
-     * @param {number} [length=0] The padding length.
-     * @param {string} [chars=' '] The string used as padding.
-     * @returns {string} Returns the padded string.
-     * @example
-     *
-     * _.padStart('abc', 6);
-     * // => '   abc'
-     *
-     * _.padStart('abc', 6, '_-');
-     * // => '_-_abc'
-     *
-     * _.padStart('abc', 3);
-     * // => 'abc'
-     */
-    function padStart(string, length, chars) {
-      string = toString(string);
-      length = toInteger(length);
- 
-      var strLength = length ? stringSize(string) : 0;
-      return (length && strLength < length)
-        ? (createPadding(length - strLength, chars) + string)
-        : string;
-    }
- 
-    /**
-     * Converts `string` to an integer of the specified radix. If `radix` is
-     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a
-     * hexadecimal, in which case a `radix` of `16` is used.
-     *
-     * **Note:** This method aligns with the
-     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.1.0
-     * @category String
-     * @param {string} string The string to convert.
-     * @param {number} [radix=10] The radix to interpret `value` by.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {number} Returns the converted integer.
-     * @example
-     *
-     * _.parseInt('08');
-     * // => 8
-     *
-     * _.map(['6', '08', '10'], _.parseInt);
-     * // => [6, 8, 10]
-     */
-    function parseInt(string, radix, guard) {
-      if (guard || radix == null) {
-        radix = 0;
-      } else if (radix) {
-        radix = +radix;
-      }
-      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);
-    }
- 
-    /**
-     * Repeats the given string `n` times.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to repeat.
-     * @param {number} [n=1] The number of times to repeat the string.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {string} Returns the repeated string.
-     * @example
-     *
-     * _.repeat('*', 3);
-     * // => '***'
-     *
-     * _.repeat('abc', 2);
-     * // => 'abcabc'
-     *
-     * _.repeat('abc', 0);
-     * // => ''
-     */
-    function repeat(string, n, guard) {
-      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {
-        n = 1;
-      } else {
-        n = toInteger(n);
-      }
-      return baseRepeat(toString(string), n);
-    }
- 
-    /**
-     * Replaces matches for `pattern` in `string` with `replacement`.
-     *
-     * **Note:** This method is based on
-     * [`String#replace`](https://mdn.io/String/replace).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to modify.
-     * @param {RegExp|string} pattern The pattern to replace.
-     * @param {Function|string} replacement The match replacement.
-     * @returns {string} Returns the modified string.
-     * @example
-     *
-     * _.replace('Hi Fred', 'Fred', 'Barney');
-     * // => 'Hi Barney'
-     */
-    function replace() {
-      var args = arguments,
-          string = toString(args[0]);
- 
-      return args.length < 3 ? string : string.replace(args[1], args[2]);
-    }
- 
-    /**
-     * Converts `string` to
-     * [snake case](https://en.wikipedia.org/wiki/Snake_case).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the snake cased string.
-     * @example
-     *
-     * _.snakeCase('Foo Bar');
-     * // => 'foo_bar'
-     *
-     * _.snakeCase('fooBar');
-     * // => 'foo_bar'
-     *
-     * _.snakeCase('--FOO-BAR--');
-     * // => 'foo_bar'
-     */
-    var snakeCase = createCompounder(function(result, word, index) {
-      return result + (index ? '_' : '') + word.toLowerCase();
-    });
- 
-    /**
-     * Splits `string` by `separator`.
-     *
-     * **Note:** This method is based on
-     * [`String#split`](https://mdn.io/String/split).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to split.
-     * @param {RegExp|string} separator The separator pattern to split by.
-     * @param {number} [limit] The length to truncate results to.
-     * @returns {Array} Returns the string segments.
-     * @example
-     *
-     * _.split('a-b-c', '-', 2);
-     * // => ['a', 'b']
-     */
-    function split(string, separator, limit) {
-      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {
-        separator = limit = undefined;
-      }
-      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;
-      if (!limit) {
-        return [];
-      }
-      string = toString(string);
-      if (string && (
-            typeof separator == 'string' ||
-            (separator != null && !isRegExp(separator))
-          )) {
-        separator = baseToString(separator);
-        if (!separator && hasUnicode(string)) {
-          return castSlice(stringToArray(string), 0, limit);
-        }
-      }
-      return string.split(separator, limit);
-    }
- 
-    /**
-     * Converts `string` to
-     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.1.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the start cased string.
-     * @example
-     *
-     * _.startCase('--foo-bar--');
-     * // => 'Foo Bar'
-     *
-     * _.startCase('fooBar');
-     * // => 'Foo Bar'
-     *
-     * _.startCase('__FOO_BAR__');
-     * // => 'FOO BAR'
-     */
-    var startCase = createCompounder(function(result, word, index) {
-      return result + (index ? ' ' : '') + upperFirst(word);
-    });
- 
-    /**
-     * Checks if `string` starts with the given target string.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to inspect.
-     * @param {string} [target] The string to search for.
-     * @param {number} [position=0] The position to search from.
-     * @returns {boolean} Returns `true` if `string` starts with `target`,
-     *  else `false`.
-     * @example
-     *
-     * _.startsWith('abc', 'a');
-     * // => true
-     *
-     * _.startsWith('abc', 'b');
-     * // => false
-     *
-     * _.startsWith('abc', 'b', 1);
-     * // => true
-     */
-    function startsWith(string, target, position) {
-      string = toString(string);
-      position = position == null
-        ? 0
-        : baseClamp(toInteger(position), 0, string.length);
- 
-      target = baseToString(target);
-      return string.slice(position, position + target.length) == target;
-    }
- 
-    /**
-     * Creates a compiled template function that can interpolate data properties
-     * in "interpolate" delimiters, HTML-escape interpolated data properties in
-     * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
-     * properties may be accessed as free variables in the template. If a setting
-     * object is given, it takes precedence over `_.templateSettings` values.
-     *
-     * **Note:** In the development build `_.template` utilizes
-     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)
-     * for easier debugging.
-     *
-     * For more information on precompiling templates see
-     * [lodash's custom builds documentation](https://lodash.com/custom-builds).
-     *
-     * For more information on Chrome extension sandboxes see
-     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category String
-     * @param {string} [string=''] The template string.
-     * @param {Object} [options={}] The options object.
-     * @param {RegExp} [options.escape=_.templateSettings.escape]
-     *  The HTML "escape" delimiter.
-     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]
-     *  The "evaluate" delimiter.
-     * @param {Object} [options.imports=_.templateSettings.imports]
-     *  An object to import into the template as free variables.
-     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]
-     *  The "interpolate" delimiter.
-     * @param {string} [options.sourceURL='lodash.templateSources[n]']
-     *  The sourceURL of the compiled template.
-     * @param {string} [options.variable='obj']
-     *  The data object variable name.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Function} Returns the compiled template function.
-     * @example
-     *
-     * // Use the "interpolate" delimiter to create a compiled template.
-     * var compiled = _.template('hello <%= user %>!');
-     * compiled({ 'user': 'fred' });
-     * // => 'hello fred!'
-     *
-     * // Use the HTML "escape" delimiter to escape data property values.
-     * var compiled = _.template('<b><%- value %></b>');
-     * compiled({ 'value': '<script>' });
-     * // => '<b>&lt;script&gt;</b>'
-     *
-     * // Use the "evaluate" delimiter to execute JavaScript and generate HTML.
-     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
-     * compiled({ 'users': ['fred', 'barney'] });
-     * // => '<li>fred</li><li>barney</li>'
-     *
-     * // Use the internal `print` function in "evaluate" delimiters.
-     * var compiled = _.template('<% print("hello " + user); %>!');
-     * compiled({ 'user': 'barney' });
-     * // => 'hello barney!'
-     *
-     * // Use the ES template literal delimiter as an "interpolate" delimiter.
-     * // Disable support by replacing the "interpolate" delimiter.
-     * var compiled = _.template('hello ${ user }!');
-     * compiled({ 'user': 'pebbles' });
-     * // => 'hello pebbles!'
-     *
-     * // Use backslashes to treat delimiters as plain text.
-     * var compiled = _.template('<%= "\\<%- value %\\>" %>');
-     * compiled({ 'value': 'ignored' });
-     * // => '<%- value %>'
-     *
-     * // Use the `imports` option to import `jQuery` as `jq`.
-     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
-     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
-     * compiled({ 'users': ['fred', 'barney'] });
-     * // => '<li>fred</li><li>barney</li>'
-     *
-     * // Use the `sourceURL` option to specify a custom sourceURL for the template.
-     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
-     * compiled(data);
-     * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector.
-     *
-     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.
-     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
-     * compiled.source;
-     * // => function(data) {
-     * //   var __t, __p = '';
-     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
-     * //   return __p;
-     * // }
-     *
-     * // Use custom template delimiters.
-     * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
-     * var compiled = _.template('hello {{ user }}!');
-     * compiled({ 'user': 'mustache' });
-     * // => 'hello mustache!'
-     *
-     * // Use the `source` property to inline compiled templates for meaningful
-     * // line numbers in error messages and stack traces.
-     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\
-     *   var JST = {\
-     *     "main": ' + _.template(mainText).source + '\
-     *   };\
-     * ');
-     */
-    function template(string, options, guard) {
-      // Based on John Resig's `tmpl` implementation
-      // (http://ejohn.org/blog/javascript-micro-templating/)
-      // and Laura Doktorova's doT.js (https://github.com/olado/doT).
-      var settings = lodash.templateSettings;
- 
-      if (guard && isIterateeCall(string, options, guard)) {
-        options = undefined;
-      }
-      string = toString(string);
-      options = assignInWith({}, options, settings, customDefaultsAssignIn);
- 
-      var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),
-          importsKeys = keys(imports),
-          importsValues = baseValues(imports, importsKeys);
- 
-      var isEscaping,
-          isEvaluating,
-          index = 0,
-          interpolate = options.interpolate || reNoMatch,
-          source = "__p += '";
- 
-      // Compile the regexp to match each delimiter.
-      var reDelimiters = RegExp(
-        (options.escape || reNoMatch).source + '|' +
-        interpolate.source + '|' +
-        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +
-        (options.evaluate || reNoMatch).source + '|$'
-      , 'g');
- 
-      // Use a sourceURL for easier debugging.
-      var sourceURL = '//# sourceURL=' +
-        ('sourceURL' in options
-          ? options.sourceURL
-          : ('lodash.templateSources[' + (++templateCounter) + ']')
-        ) + '\n';
- 
-      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
-        interpolateValue || (interpolateValue = esTemplateValue);
- 
-        // Escape characters that can't be included in string literals.
-        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
- 
-        // Replace delimiters with snippets.
-        if (escapeValue) {
-          isEscaping = true;
-          source += "' +\n__e(" + escapeValue + ") +\n'";
-        }
-        if (evaluateValue) {
-          isEvaluating = true;
-          source += "';\n" + evaluateValue + ";\n__p += '";
-        }
-        if (interpolateValue) {
-          source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
-        }
-        index = offset + match.length;
- 
-        // The JS engine embedded in Adobe products needs `match` returned in
-        // order to produce the correct `offset` value.
-        return match;
-      });
- 
-      source += "';\n";
- 
-      // If `variable` is not specified wrap a with-statement around the generated
-      // code to add the data object to the top of the scope chain.
-      var variable = options.variable;
-      if (!variable) {
-        source = 'with (obj) {\n' + source + '\n}\n';
-      }
-      // Cleanup code by stripping empty strings.
-      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)
-        .replace(reEmptyStringMiddle, '$1')
-        .replace(reEmptyStringTrailing, '$1;');
- 
-      // Frame code as the function body.
-      source = 'function(' + (variable || 'obj') + ') {\n' +
-        (variable
-          ? ''
-          : 'obj || (obj = {});\n'
-        ) +
-        "var __t, __p = ''" +
-        (isEscaping
-           ? ', __e = _.escape'
-           : ''
-        ) +
-        (isEvaluating
-          ? ', __j = Array.prototype.join;\n' +
-            "function print() { __p += __j.call(arguments, '') }\n"
-          : ';\n'
-        ) +
-        source +
-        'return __p\n}';
- 
-      var result = attempt(function() {
-        return Function(importsKeys, sourceURL + 'return ' + source)
-          .apply(undefined, importsValues);
-      });
- 
-      // Provide the compiled function's source by its `toString` method or
-      // the `source` property as a convenience for inlining compiled templates.
-      result.source = source;
-      if (isError(result)) {
-        throw result;
-      }
-      return result;
-    }
- 
-    /**
-     * Converts `string`, as a whole, to lower case just like
-     * [String#toLowerCase](https://mdn.io/toLowerCase).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the lower cased string.
-     * @example
-     *
-     * _.toLower('--Foo-Bar--');
-     * // => '--foo-bar--'
-     *
-     * _.toLower('fooBar');
-     * // => 'foobar'
-     *
-     * _.toLower('__FOO_BAR__');
-     * // => '__foo_bar__'
-     */
-    function toLower(value) {
-      return toString(value).toLowerCase();
-    }
- 
-    /**
-     * Converts `string`, as a whole, to upper case just like
-     * [String#toUpperCase](https://mdn.io/toUpperCase).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the upper cased string.
-     * @example
-     *
-     * _.toUpper('--foo-bar--');
-     * // => '--FOO-BAR--'
-     *
-     * _.toUpper('fooBar');
-     * // => 'FOOBAR'
-     *
-     * _.toUpper('__foo_bar__');
-     * // => '__FOO_BAR__'
-     */
-    function toUpper(value) {
-      return toString(value).toUpperCase();
-    }
- 
-    /**
-     * Removes leading and trailing whitespace or specified characters from `string`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to trim.
-     * @param {string} [chars=whitespace] The characters to trim.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {string} Returns the trimmed string.
-     * @example
-     *
-     * _.trim('  abc  ');
-     * // => 'abc'
-     *
-     * _.trim('-_-abc-_-', '_-');
-     * // => 'abc'
-     *
-     * _.map(['  foo  ', '  bar  '], _.trim);
-     * // => ['foo', 'bar']
-     */
-    function trim(string, chars, guard) {
-      string = toString(string);
-      if (string && (guard || chars === undefined)) {
-        return string.replace(reTrim, '');
-      }
-      if (!string || !(chars = baseToString(chars))) {
-        return string;
-      }
-      var strSymbols = stringToArray(string),
-          chrSymbols = stringToArray(chars),
-          start = charsStartIndex(strSymbols, chrSymbols),
-          end = charsEndIndex(strSymbols, chrSymbols) + 1;
- 
-      return castSlice(strSymbols, start, end).join('');
-    }
- 
-    /**
-     * Removes trailing whitespace or specified characters from `string`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to trim.
-     * @param {string} [chars=whitespace] The characters to trim.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {string} Returns the trimmed string.
-     * @example
-     *
-     * _.trimEnd('  abc  ');
-     * // => '  abc'
-     *
-     * _.trimEnd('-_-abc-_-', '_-');
-     * // => '-_-abc'
-     */
-    function trimEnd(string, chars, guard) {
-      string = toString(string);
-      if (string && (guard || chars === undefined)) {
-        return string.replace(reTrimEnd, '');
-      }
-      if (!string || !(chars = baseToString(chars))) {
-        return string;
-      }
-      var strSymbols = stringToArray(string),
-          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
- 
-      return castSlice(strSymbols, 0, end).join('');
-    }
- 
-    /**
-     * Removes leading whitespace or specified characters from `string`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to trim.
-     * @param {string} [chars=whitespace] The characters to trim.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {string} Returns the trimmed string.
-     * @example
-     *
-     * _.trimStart('  abc  ');
-     * // => 'abc  '
-     *
-     * _.trimStart('-_-abc-_-', '_-');
-     * // => 'abc-_-'
-     */
-    function trimStart(string, chars, guard) {
-      string = toString(string);
-      if (string && (guard || chars === undefined)) {
-        return string.replace(reTrimStart, '');
-      }
-      if (!string || !(chars = baseToString(chars))) {
-        return string;
-      }
-      var strSymbols = stringToArray(string),
-          start = charsStartIndex(strSymbols, stringToArray(chars));
- 
-      return castSlice(strSymbols, start).join('');
-    }
- 
-    /**
-     * Truncates `string` if it's longer than the given maximum string length.
-     * The last characters of the truncated string are replaced with the omission
-     * string which defaults to "...".
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to truncate.
-     * @param {Object} [options={}] The options object.
-     * @param {number} [options.length=30] The maximum string length.
-     * @param {string} [options.omission='...'] The string to indicate text is omitted.
-     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.
-     * @returns {string} Returns the truncated string.
-     * @example
-     *
-     * _.truncate('hi-diddly-ho there, neighborino');
-     * // => 'hi-diddly-ho there, neighbo...'
-     *
-     * _.truncate('hi-diddly-ho there, neighborino', {
-     *   'length': 24,
-     *   'separator': ' '
-     * });
-     * // => 'hi-diddly-ho there,...'
-     *
-     * _.truncate('hi-diddly-ho there, neighborino', {
-     *   'length': 24,
-     *   'separator': /,? +/
-     * });
-     * // => 'hi-diddly-ho there...'
-     *
-     * _.truncate('hi-diddly-ho there, neighborino', {
-     *   'omission': ' [...]'
-     * });
-     * // => 'hi-diddly-ho there, neig [...]'
-     */
-    function truncate(string, options) {
-      var length = DEFAULT_TRUNC_LENGTH,
-          omission = DEFAULT_TRUNC_OMISSION;
- 
-      if (isObject(options)) {
-        var separator = 'separator' in options ? options.separator : separator;
-        length = 'length' in options ? toInteger(options.length) : length;
-        omission = 'omission' in options ? baseToString(options.omission) : omission;
-      }
-      string = toString(string);
- 
-      var strLength = string.length;
-      if (hasUnicode(string)) {
-        var strSymbols = stringToArray(string);
-        strLength = strSymbols.length;
-      }
-      if (length >= strLength) {
-        return string;
-      }
-      var end = length - stringSize(omission);
-      if (end < 1) {
-        return omission;
-      }
-      var result = strSymbols
-        ? castSlice(strSymbols, 0, end).join('')
-        : string.slice(0, end);
- 
-      if (separator === undefined) {
-        return result + omission;
-      }
-      if (strSymbols) {
-        end += (result.length - end);
-      }
-      if (isRegExp(separator)) {
-        if (string.slice(end).search(separator)) {
-          var match,
-              substring = result;
- 
-          if (!separator.global) {
-            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');
-          }
-          separator.lastIndex = 0;
-          while ((match = separator.exec(substring))) {
-            var newEnd = match.index;
-          }
-          result = result.slice(0, newEnd === undefined ? end : newEnd);
-        }
-      } else if (string.indexOf(baseToString(separator), end) != end) {
-        var index = result.lastIndexOf(separator);
-        if (index > -1) {
-          result = result.slice(0, index);
-        }
-      }
-      return result + omission;
-    }
- 
-    /**
-     * The inverse of `_.escape`; this method converts the HTML entities
-     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to
-     * their corresponding characters.
-     *
-     * **Note:** No other HTML entities are unescaped. To unescape additional
-     * HTML entities use a third-party library like [_he_](https://mths.be/he).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.6.0
-     * @category String
-     * @param {string} [string=''] The string to unescape.
-     * @returns {string} Returns the unescaped string.
-     * @example
-     *
-     * _.unescape('fred, barney, &amp; pebbles');
-     * // => 'fred, barney, & pebbles'
-     */
-    function unescape(string) {
-      string = toString(string);
-      return (string && reHasEscapedHtml.test(string))
-        ? string.replace(reEscapedHtml, unescapeHtmlChar)
-        : string;
-    }
- 
-    /**
-     * Converts `string`, as space separated words, to upper case.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the upper cased string.
-     * @example
-     *
-     * _.upperCase('--foo-bar');
-     * // => 'FOO BAR'
-     *
-     * _.upperCase('fooBar');
-     * // => 'FOO BAR'
-     *
-     * _.upperCase('__foo_bar__');
-     * // => 'FOO BAR'
-     */
-    var upperCase = createCompounder(function(result, word, index) {
-      return result + (index ? ' ' : '') + word.toUpperCase();
-    });
- 
-    /**
-     * Converts the first character of `string` to upper case.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the converted string.
-     * @example
-     *
-     * _.upperFirst('fred');
-     * // => 'Fred'
-     *
-     * _.upperFirst('FRED');
-     * // => 'FRED'
-     */
-    var upperFirst = createCaseFirst('toUpperCase');
- 
-    /**
-     * Splits `string` into an array of its words.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to inspect.
-     * @param {RegExp|string} [pattern] The pattern to match words.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Array} Returns the words of `string`.
-     * @example
-     *
-     * _.words('fred, barney, & pebbles');
-     * // => ['fred', 'barney', 'pebbles']
-     *
-     * _.words('fred, barney, & pebbles', /[^, ]+/g);
-     * // => ['fred', 'barney', '&', 'pebbles']
-     */
-    function words(string, pattern, guard) {
-      string = toString(string);
-      pattern = guard ? undefined : pattern;
- 
-      if (pattern === undefined) {
-        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
-      }
-      return string.match(pattern) || [];
-    }
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * Attempts to invoke `func`, returning either the result or the caught error
-     * object. Any additional arguments are provided to `func` when it's invoked.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Util
-     * @param {Function} func The function to attempt.
-     * @param {...*} [args] The arguments to invoke `func` with.
-     * @returns {*} Returns the `func` result or error object.
-     * @example
-     *
-     * // Avoid throwing errors for invalid selectors.
-     * var elements = _.attempt(function(selector) {
-     *   return document.querySelectorAll(selector);
-     * }, '>_>');
-     *
-     * if (_.isError(elements)) {
-     *   elements = [];
-     * }
-     */
-    var attempt = baseRest(function(func, args) {
-      try {
-        return apply(func, undefined, args);
-      } catch (e) {
-        return isError(e) ? e : new Error(e);
-      }
-    });
- 
-    /**
-     * Binds methods of an object to the object itself, overwriting the existing
-     * method.
-     *
-     * **Note:** This method doesn't set the "length" property of bound functions.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Util
-     * @param {Object} object The object to bind and assign the bound methods to.
-     * @param {...(string|string[])} methodNames The object method names to bind.
-     * @returns {Object} Returns `object`.
-     * @example
-     *
-     * var view = {
-     *   'label': 'docs',
-     *   'click': function() {
-     *     console.log('clicked ' + this.label);
-     *   }
-     * };
-     *
-     * _.bindAll(view, ['click']);
-     * jQuery(element).on('click', view.click);
-     * // => Logs 'clicked docs' when clicked.
-     */
-    var bindAll = flatRest(function(object, methodNames) {
-      arrayEach(methodNames, function(key) {
-        key = toKey(key);
-        baseAssignValue(object, key, bind(object[key], object));
-      });
-      return object;
-    });
- 
-    /**
-     * Creates a function that iterates over `pairs` and invokes the corresponding
-     * function of the first predicate to return truthy. The predicate-function
-     * pairs are invoked with the `this` binding and arguments of the created
-     * function.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Util
-     * @param {Array} pairs The predicate-function pairs.
-     * @returns {Function} Returns the new composite function.
-     * @example
-     *
-     * var func = _.cond([
-     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],
-     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],
-     *   [_.stubTrue,                      _.constant('no match')]
-     * ]);
-     *
-     * func({ 'a': 1, 'b': 2 });
-     * // => 'matches A'
-     *
-     * func({ 'a': 0, 'b': 1 });
-     * // => 'matches B'
-     *
-     * func({ 'a': '1', 'b': '2' });
-     * // => 'no match'
-     */
-    function cond(pairs) {
-      var length = pairs == null ? 0 : pairs.length,
-          toIteratee = getIteratee();
- 
-      pairs = !length ? [] : arrayMap(pairs, function(pair) {
-        if (typeof pair[1] != 'function') {
-          throw new TypeError(FUNC_ERROR_TEXT);
-        }
-        return [toIteratee(pair[0]), pair[1]];
-      });
- 
-      return baseRest(function(args) {
-        var index = -1;
-        while (++index < length) {
-          var pair = pairs[index];
-          if (apply(pair[0], this, args)) {
-            return apply(pair[1], this, args);
-          }
-        }
-      });
-    }
- 
-    /**
-     * Creates a function that invokes the predicate properties of `source` with
-     * the corresponding property values of a given object, returning `true` if
-     * all predicates return truthy, else `false`.
-     *
-     * **Note:** The created function is equivalent to `_.conformsTo` with
-     * `source` partially applied.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Util
-     * @param {Object} source The object of property predicates to conform to.
-     * @returns {Function} Returns the new spec function.
-     * @example
-     *
-     * var objects = [
-     *   { 'a': 2, 'b': 1 },
-     *   { 'a': 1, 'b': 2 }
-     * ];
-     *
-     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));
-     * // => [{ 'a': 1, 'b': 2 }]
-     */
-    function conforms(source) {
-      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
-    }
- 
-    /**
-     * Creates a function that returns `value`.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.4.0
-     * @category Util
-     * @param {*} value The value to return from the new function.
-     * @returns {Function} Returns the new constant function.
-     * @example
-     *
-     * var objects = _.times(2, _.constant({ 'a': 1 }));
-     *
-     * console.log(objects);
-     * // => [{ 'a': 1 }, { 'a': 1 }]
-     *
-     * console.log(objects[0] === objects[1]);
-     * // => true
-     */
-    function constant(value) {
-      return function() {
-        return value;
-      };
-    }
- 
-    /**
-     * Checks `value` to determine whether a default value should be returned in
-     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
-     * or `undefined`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.14.0
-     * @category Util
-     * @param {*} value The value to check.
-     * @param {*} defaultValue The default value.
-     * @returns {*} Returns the resolved value.
-     * @example
-     *
-     * _.defaultTo(1, 10);
-     * // => 1
-     *
-     * _.defaultTo(undefined, 10);
-     * // => 10
-     */
-    function defaultTo(value, defaultValue) {
-      return (value == null || value !== value) ? defaultValue : value;
-    }
- 
-    /**
-     * Creates a function that returns the result of invoking the given functions
-     * with the `this` binding of the created function, where each successive
-     * invocation is supplied the return value of the previous.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Util
-     * @param {...(Function|Function[])} [funcs] The functions to invoke.
-     * @returns {Function} Returns the new composite function.
-     * @see _.flowRight
-     * @example
-     *
-     * function square(n) {
-     *   return n * n;
-     * }
-     *
-     * var addSquare = _.flow([_.add, square]);
-     * addSquare(1, 2);
-     * // => 9
-     */
-    var flow = createFlow();
- 
-    /**
-     * This method is like `_.flow` except that it creates a function that
-     * invokes the given functions from right to left.
-     *
-     * @static
-     * @since 3.0.0
-     * @memberOf _
-     * @category Util
-     * @param {...(Function|Function[])} [funcs] The functions to invoke.
-     * @returns {Function} Returns the new composite function.
-     * @see _.flow
-     * @example
-     *
-     * function square(n) {
-     *   return n * n;
-     * }
-     *
-     * var addSquare = _.flowRight([square, _.add]);
-     * addSquare(1, 2);
-     * // => 9
-     */
-    var flowRight = createFlow(true);
- 
-    /**
-     * This method returns the first argument it receives.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Util
-     * @param {*} value Any value.
-     * @returns {*} Returns `value`.
-     * @example
-     *
-     * var object = { 'a': 1 };
-     *
-     * console.log(_.identity(object) === object);
-     * // => true
-     */
-    function identity(value) {
-      return value;
-    }
- 
-    /**
-     * Creates a function that invokes `func` with the arguments of the created
-     * function. If `func` is a property name, the created function returns the
-     * property value for a given element. If `func` is an array or object, the
-     * created function returns `true` for elements that contain the equivalent
-     * source properties, otherwise it returns `false`.
-     *
-     * @static
-     * @since 4.0.0
-     * @memberOf _
-     * @category Util
-     * @param {*} [func=_.identity] The value to convert to a callback.
-     * @returns {Function} Returns the callback.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney', 'age': 36, 'active': true },
-     *   { 'user': 'fred',   'age': 40, 'active': false }
-     * ];
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
-     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.filter(users, _.iteratee(['user', 'fred']));
-     * // => [{ 'user': 'fred', 'age': 40 }]
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.map(users, _.iteratee('user'));
-     * // => ['barney', 'fred']
-     *
-     * // Create custom iteratee shorthands.
-     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
-     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {
-     *     return func.test(string);
-     *   };
-     * });
-     *
-     * _.filter(['abc', 'def'], /ef/);
-     * // => ['def']
-     */
-    function iteratee(func) {
-      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));
-    }
- 
-    /**
-     * Creates a function that performs a partial deep comparison between a given
-     * object and `source`, returning `true` if the given object has equivalent
-     * property values, else `false`.
-     *
-     * **Note:** The created function is equivalent to `_.isMatch` with `source`
-     * partially applied.
-     *
-     * Partial comparisons will match empty array and empty object `source`
-     * values against any array or object value, respectively. See `_.isEqual`
-     * for a list of supported value comparisons.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Util
-     * @param {Object} source The object of property values to match.
-     * @returns {Function} Returns the new spec function.
-     * @example
-     *
-     * var objects = [
-     *   { 'a': 1, 'b': 2, 'c': 3 },
-     *   { 'a': 4, 'b': 5, 'c': 6 }
-     * ];
-     *
-     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
-     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
-     */
-    function matches(source) {
-      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
-    }
- 
-    /**
-     * Creates a function that performs a partial deep comparison between the
-     * value at `path` of a given object to `srcValue`, returning `true` if the
-     * object value is equivalent, else `false`.
-     *
-     * **Note:** Partial comparisons will match empty array and empty object
-     * `srcValue` values against any array or object value, respectively. See
-     * `_.isEqual` for a list of supported value comparisons.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.2.0
-     * @category Util
-     * @param {Array|string} path The path of the property to get.
-     * @param {*} srcValue The value to match.
-     * @returns {Function} Returns the new spec function.
-     * @example
-     *
-     * var objects = [
-     *   { 'a': 1, 'b': 2, 'c': 3 },
-     *   { 'a': 4, 'b': 5, 'c': 6 }
-     * ];
-     *
-     * _.find(objects, _.matchesProperty('a', 4));
-     * // => { 'a': 4, 'b': 5, 'c': 6 }
-     */
-    function matchesProperty(path, srcValue) {
-      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
-    }
- 
-    /**
-     * Creates a function that invokes the method at `path` of a given object.
-     * Any additional arguments are provided to the invoked method.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.7.0
-     * @category Util
-     * @param {Array|string} path The path of the method to invoke.
-     * @param {...*} [args] The arguments to invoke the method with.
-     * @returns {Function} Returns the new invoker function.
-     * @example
-     *
-     * var objects = [
-     *   { 'a': { 'b': _.constant(2) } },
-     *   { 'a': { 'b': _.constant(1) } }
-     * ];
-     *
-     * _.map(objects, _.method('a.b'));
-     * // => [2, 1]
-     *
-     * _.map(objects, _.method(['a', 'b']));
-     * // => [2, 1]
-     */
-    var method = baseRest(function(path, args) {
-      return function(object) {
-        return baseInvoke(object, path, args);
-      };
-    });
- 
-    /**
-     * The opposite of `_.method`; this method creates a function that invokes
-     * the method at a given path of `object`. Any additional arguments are
-     * provided to the invoked method.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.7.0
-     * @category Util
-     * @param {Object} object The object to query.
-     * @param {...*} [args] The arguments to invoke the method with.
-     * @returns {Function} Returns the new invoker function.
-     * @example
-     *
-     * var array = _.times(3, _.constant),
-     *     object = { 'a': array, 'b': array, 'c': array };
-     *
-     * _.map(['a[2]', 'c[0]'], _.methodOf(object));
-     * // => [2, 0]
-     *
-     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));
-     * // => [2, 0]
-     */
-    var methodOf = baseRest(function(object, args) {
-      return function(path) {
-        return baseInvoke(object, path, args);
-      };
-    });
- 
-    /**
-     * Adds all own enumerable string keyed function properties of a source
-     * object to the destination object. If `object` is a function, then methods
-     * are added to its prototype as well.
-     *
-     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
-     * avoid conflicts caused by modifying the original.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Util
-     * @param {Function|Object} [object=lodash] The destination object.
-     * @param {Object} source The object of functions to add.
-     * @param {Object} [options={}] The options object.
-     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.
-     * @returns {Function|Object} Returns `object`.
-     * @example
-     *
-     * function vowels(string) {
-     *   return _.filter(string, function(v) {
-     *     return /[aeiou]/i.test(v);
-     *   });
-     * }
-     *
-     * _.mixin({ 'vowels': vowels });
-     * _.vowels('fred');
-     * // => ['e']
-     *
-     * _('fred').vowels().value();
-     * // => ['e']
-     *
-     * _.mixin({ 'vowels': vowels }, { 'chain': false });
-     * _('fred').vowels();
-     * // => ['e']
-     */
-    function mixin(object, source, options) {
-      var props = keys(source),
-          methodNames = baseFunctions(source, props);
- 
-      if (options == null &&
-          !(isObject(source) && (methodNames.length || !props.length))) {
-        options = source;
-        source = object;
-        object = this;
-        methodNames = baseFunctions(source, keys(source));
-      }
-      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,
-          isFunc = isFunction(object);
- 
-      arrayEach(methodNames, function(methodName) {
-        var func = source[methodName];
-        object[methodName] = func;
-        if (isFunc) {
-          object.prototype[methodName] = function() {
-            var chainAll = this.__chain__;
-            if (chain || chainAll) {
-              var result = object(this.__wrapped__),
-                  actions = result.__actions__ = copyArray(this.__actions__);
- 
-              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
-              result.__chain__ = chainAll;
-              return result;
-            }
-            return func.apply(object, arrayPush([this.value()], arguments));
-          };
-        }
-      });
- 
-      return object;
-    }
- 
-    /**
-     * Reverts the `_` variable to its previous value and returns a reference to
-     * the `lodash` function.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Util
-     * @returns {Function} Returns the `lodash` function.
-     * @example
-     *
-     * var lodash = _.noConflict();
-     */
-    function noConflict() {
-      if (root._ === this) {
-        root._ = oldDash;
-      }
-      return this;
-    }
- 
-    /**
-     * This method returns `undefined`.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.3.0
-     * @category Util
-     * @example
-     *
-     * _.times(2, _.noop);
-     * // => [undefined, undefined]
-     */
-    function noop() {
-      // No operation performed.
-    }
- 
-    /**
-     * Creates a function that gets the argument at index `n`. If `n` is negative,
-     * the nth argument from the end is returned.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Util
-     * @param {number} [n=0] The index of the argument to return.
-     * @returns {Function} Returns the new pass-thru function.
-     * @example
-     *
-     * var func = _.nthArg(1);
-     * func('a', 'b', 'c', 'd');
-     * // => 'b'
-     *
-     * var func = _.nthArg(-2);
-     * func('a', 'b', 'c', 'd');
-     * // => 'c'
-     */
-    function nthArg(n) {
-      n = toInteger(n);
-      return baseRest(function(args) {
-        return baseNth(args, n);
-      });
-    }
- 
-    /**
-     * Creates a function that invokes `iteratees` with the arguments it receives
-     * and returns their results.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Util
-     * @param {...(Function|Function[])} [iteratees=[_.identity]]
-     *  The iteratees to invoke.
-     * @returns {Function} Returns the new function.
-     * @example
-     *
-     * var func = _.over([Math.max, Math.min]);
-     *
-     * func(1, 2, 3, 4);
-     * // => [4, 1]
-     */
-    var over = createOver(arrayMap);
- 
-    /**
-     * Creates a function that checks if **all** of the `predicates` return
-     * truthy when invoked with the arguments it receives.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Util
-     * @param {...(Function|Function[])} [predicates=[_.identity]]
-     *  The predicates to check.
-     * @returns {Function} Returns the new function.
-     * @example
-     *
-     * var func = _.overEvery([Boolean, isFinite]);
-     *
-     * func('1');
-     * // => true
-     *
-     * func(null);
-     * // => false
-     *
-     * func(NaN);
-     * // => false
-     */
-    var overEvery = createOver(arrayEvery);
- 
-    /**
-     * Creates a function that checks if **any** of the `predicates` return
-     * truthy when invoked with the arguments it receives.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Util
-     * @param {...(Function|Function[])} [predicates=[_.identity]]
-     *  The predicates to check.
-     * @returns {Function} Returns the new function.
-     * @example
-     *
-     * var func = _.overSome([Boolean, isFinite]);
-     *
-     * func('1');
-     * // => true
-     *
-     * func(null);
-     * // => true
-     *
-     * func(NaN);
-     * // => false
-     */
-    var overSome = createOver(arraySome);
- 
-    /**
-     * Creates a function that returns the value at `path` of a given object.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.4.0
-     * @category Util
-     * @param {Array|string} path The path of the property to get.
-     * @returns {Function} Returns the new accessor function.
-     * @example
-     *
-     * var objects = [
-     *   { 'a': { 'b': 2 } },
-     *   { 'a': { 'b': 1 } }
-     * ];
-     *
-     * _.map(objects, _.property('a.b'));
-     * // => [2, 1]
-     *
-     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
-     * // => [1, 2]
-     */
-    function property(path) {
-      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
-    }
- 
-    /**
-     * The opposite of `_.property`; this method creates a function that returns
-     * the value at a given path of `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Util
-     * @param {Object} object The object to query.
-     * @returns {Function} Returns the new accessor function.
-     * @example
-     *
-     * var array = [0, 1, 2],
-     *     object = { 'a': array, 'b': array, 'c': array };
-     *
-     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));
-     * // => [2, 0]
-     *
-     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));
-     * // => [2, 0]
-     */
-    function propertyOf(object) {
-      return function(path) {
-        return object == null ? undefined : baseGet(object, path);
-      };
-    }
- 
-    /**
-     * Creates an array of numbers (positive and/or negative) progressing from
-     * `start` up to, but not including, `end`. A step of `-1` is used if a negative
-     * `start` is specified without an `end` or `step`. If `end` is not specified,
-     * it's set to `start` with `start` then set to `0`.
-     *
-     * **Note:** JavaScript follows the IEEE-754 standard for resolving
-     * floating-point values which can produce unexpected results.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Util
-     * @param {number} [start=0] The start of the range.
-     * @param {number} end The end of the range.
-     * @param {number} [step=1] The value to increment or decrement by.
-     * @returns {Array} Returns the range of numbers.
-     * @see _.inRange, _.rangeRight
-     * @example
-     *
-     * _.range(4);
-     * // => [0, 1, 2, 3]
-     *
-     * _.range(-4);
-     * // => [0, -1, -2, -3]
-     *
-     * _.range(1, 5);
-     * // => [1, 2, 3, 4]
-     *
-     * _.range(0, 20, 5);
-     * // => [0, 5, 10, 15]
-     *
-     * _.range(0, -4, -1);
-     * // => [0, -1, -2, -3]
-     *
-     * _.range(1, 4, 0);
-     * // => [1, 1, 1]
-     *
-     * _.range(0);
-     * // => []
-     */
-    var range = createRange();
- 
-    /**
-     * This method is like `_.range` except that it populates values in
-     * descending order.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Util
-     * @param {number} [start=0] The start of the range.
-     * @param {number} end The end of the range.
-     * @param {number} [step=1] The value to increment or decrement by.
-     * @returns {Array} Returns the range of numbers.
-     * @see _.inRange, _.range
-     * @example
-     *
-     * _.rangeRight(4);
-     * // => [3, 2, 1, 0]
-     *
-     * _.rangeRight(-4);
-     * // => [-3, -2, -1, 0]
-     *
-     * _.rangeRight(1, 5);
-     * // => [4, 3, 2, 1]
-     *
-     * _.rangeRight(0, 20, 5);
-     * // => [15, 10, 5, 0]
-     *
-     * _.rangeRight(0, -4, -1);
-     * // => [-3, -2, -1, 0]
-     *
-     * _.rangeRight(1, 4, 0);
-     * // => [1, 1, 1]
-     *
-     * _.rangeRight(0);
-     * // => []
-     */
-    var rangeRight = createRange(true);
- 
-    /**
-     * This method returns a new empty array.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.13.0
-     * @category Util
-     * @returns {Array} Returns the new empty array.
-     * @example
-     *
-     * var arrays = _.times(2, _.stubArray);
-     *
-     * console.log(arrays);
-     * // => [[], []]
-     *
-     * console.log(arrays[0] === arrays[1]);
-     * // => false
-     */
-    function stubArray() {
-      return [];
-    }
- 
-    /**
-     * This method returns `false`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.13.0
-     * @category Util
-     * @returns {boolean} Returns `false`.
-     * @example
-     *
-     * _.times(2, _.stubFalse);
-     * // => [false, false]
-     */
-    function stubFalse() {
-      return false;
-    }
- 
-    /**
-     * This method returns a new empty object.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.13.0
-     * @category Util
-     * @returns {Object} Returns the new empty object.
-     * @example
-     *
-     * var objects = _.times(2, _.stubObject);
-     *
-     * console.log(objects);
-     * // => [{}, {}]
-     *
-     * console.log(objects[0] === objects[1]);
-     * // => false
-     */
-    function stubObject() {
-      return {};
-    }
- 
-    /**
-     * This method returns an empty string.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.13.0
-     * @category Util
-     * @returns {string} Returns the empty string.
-     * @example
-     *
-     * _.times(2, _.stubString);
-     * // => ['', '']
-     */
-    function stubString() {
-      return '';
-    }
- 
-    /**
-     * This method returns `true`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.13.0
-     * @category Util
-     * @returns {boolean} Returns `true`.
-     * @example
-     *
-     * _.times(2, _.stubTrue);
-     * // => [true, true]
-     */
-    function stubTrue() {
-      return true;
-    }
- 
-    /**
-     * Invokes the iteratee `n` times, returning an array of the results of
-     * each invocation. The iteratee is invoked with one argument; (index).
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Util
-     * @param {number} n The number of times to invoke `iteratee`.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the array of results.
-     * @example
-     *
-     * _.times(3, String);
-     * // => ['0', '1', '2']
-     *
-     *  _.times(4, _.constant(0));
-     * // => [0, 0, 0, 0]
-     */
-    function times(n, iteratee) {
-      n = toInteger(n);
-      if (n < 1 || n > MAX_SAFE_INTEGER) {
-        return [];
-      }
-      var index = MAX_ARRAY_LENGTH,
-          length = nativeMin(n, MAX_ARRAY_LENGTH);
- 
-      iteratee = getIteratee(iteratee);
-      n -= MAX_ARRAY_LENGTH;
- 
-      var result = baseTimes(length, iteratee);
-      while (++index < n) {
-        iteratee(index);
-      }
-      return result;
-    }
- 
-    /**
-     * Converts `value` to a property path array.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Util
-     * @param {*} value The value to convert.
-     * @returns {Array} Returns the new property path array.
-     * @example
-     *
-     * _.toPath('a.b.c');
-     * // => ['a', 'b', 'c']
-     *
-     * _.toPath('a[0].b.c');
-     * // => ['a', '0', 'b', 'c']
-     */
-    function toPath(value) {
-      if (isArray(value)) {
-        return arrayMap(value, toKey);
-      }
-      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
-    }
- 
-    /**
-     * Generates a unique ID. If `prefix` is given, the ID is appended to it.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Util
-     * @param {string} [prefix=''] The value to prefix the ID with.
-     * @returns {string} Returns the unique ID.
-     * @example
-     *
-     * _.uniqueId('contact_');
-     * // => 'contact_104'
-     *
-     * _.uniqueId();
-     * // => '105'
-     */
-    function uniqueId(prefix) {
-      var id = ++idCounter;
-      return toString(prefix) + id;
-    }
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * Adds two numbers.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.4.0
-     * @category Math
-     * @param {number} augend The first number in an addition.
-     * @param {number} addend The second number in an addition.
-     * @returns {number} Returns the total.
-     * @example
-     *
-     * _.add(6, 4);
-     * // => 10
-     */
-    var add = createMathOperation(function(augend, addend) {
-      return augend + addend;
-    }, 0);
- 
-    /**
-     * Computes `number` rounded up to `precision`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.10.0
-     * @category Math
-     * @param {number} number The number to round up.
-     * @param {number} [precision=0] The precision to round up to.
-     * @returns {number} Returns the rounded up number.
-     * @example
-     *
-     * _.ceil(4.006);
-     * // => 5
-     *
-     * _.ceil(6.004, 2);
-     * // => 6.01
-     *
-     * _.ceil(6040, -2);
-     * // => 6100
-     */
-    var ceil = createRound('ceil');
- 
-    /**
-     * Divide two numbers.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.7.0
-     * @category Math
-     * @param {number} dividend The first number in a division.
-     * @param {number} divisor The second number in a division.
-     * @returns {number} Returns the quotient.
-     * @example
-     *
-     * _.divide(6, 4);
-     * // => 1.5
-     */
-    var divide = createMathOperation(function(dividend, divisor) {
-      return dividend / divisor;
-    }, 1);
- 
-    /**
-     * Computes `number` rounded down to `precision`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.10.0
-     * @category Math
-     * @param {number} number The number to round down.
-     * @param {number} [precision=0] The precision to round down to.
-     * @returns {number} Returns the rounded down number.
-     * @example
-     *
-     * _.floor(4.006);
-     * // => 4
-     *
-     * _.floor(0.046, 2);
-     * // => 0.04
-     *
-     * _.floor(4060, -2);
-     * // => 4000
-     */
-    var floor = createRound('floor');
- 
-    /**
-     * Computes the maximum value of `array`. If `array` is empty or falsey,
-     * `undefined` is returned.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Math
-     * @param {Array} array The array to iterate over.
-     * @returns {*} Returns the maximum value.
-     * @example
-     *
-     * _.max([4, 2, 8, 6]);
-     * // => 8
-     *
-     * _.max([]);
-     * // => undefined
-     */
-    function max(array) {
-      return (array && array.length)
-        ? baseExtremum(array, identity, baseGt)
-        : undefined;
-    }
- 
-    /**
-     * This method is like `_.max` except that it accepts `iteratee` which is
-     * invoked for each element in `array` to generate the criterion by which
-     * the value is ranked. The iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Math
-     * @param {Array} array The array to iterate over.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {*} Returns the maximum value.
-     * @example
-     *
-     * var objects = [{ 'n': 1 }, { 'n': 2 }];
-     *
-     * _.maxBy(objects, function(o) { return o.n; });
-     * // => { 'n': 2 }
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.maxBy(objects, 'n');
-     * // => { 'n': 2 }
-     */
-    function maxBy(array, iteratee) {
-      return (array && array.length)
-        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)
-        : undefined;
-    }
- 
-    /**
-     * Computes the mean of the values in `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Math
-     * @param {Array} array The array to iterate over.
-     * @returns {number} Returns the mean.
-     * @example
-     *
-     * _.mean([4, 2, 8, 6]);
-     * // => 5
-     */
-    function mean(array) {
-      return baseMean(array, identity);
-    }
- 
-    /**
-     * This method is like `_.mean` except that it accepts `iteratee` which is
-     * invoked for each element in `array` to generate the value to be averaged.
-     * The iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.7.0
-     * @category Math
-     * @param {Array} array The array to iterate over.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {number} Returns the mean.
-     * @example
-     *
-     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
-     *
-     * _.meanBy(objects, function(o) { return o.n; });
-     * // => 5
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.meanBy(objects, 'n');
-     * // => 5
-     */
-    function meanBy(array, iteratee) {
-      return baseMean(array, getIteratee(iteratee, 2));
-    }
- 
-    /**
-     * Computes the minimum value of `array`. If `array` is empty or falsey,
-     * `undefined` is returned.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Math
-     * @param {Array} array The array to iterate over.
-     * @returns {*} Returns the minimum value.
-     * @example
-     *
-     * _.min([4, 2, 8, 6]);
-     * // => 2
-     *
-     * _.min([]);
-     * // => undefined
-     */
-    function min(array) {
-      return (array && array.length)
-        ? baseExtremum(array, identity, baseLt)
-        : undefined;
-    }
- 
-    /**
-     * This method is like `_.min` except that it accepts `iteratee` which is
-     * invoked for each element in `array` to generate the criterion by which
-     * the value is ranked. The iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Math
-     * @param {Array} array The array to iterate over.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {*} Returns the minimum value.
-     * @example
-     *
-     * var objects = [{ 'n': 1 }, { 'n': 2 }];
-     *
-     * _.minBy(objects, function(o) { return o.n; });
-     * // => { 'n': 1 }
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.minBy(objects, 'n');
-     * // => { 'n': 1 }
-     */
-    function minBy(array, iteratee) {
-      return (array && array.length)
-        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)
-        : undefined;
-    }
- 
-    /**
-     * Multiply two numbers.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.7.0
-     * @category Math
-     * @param {number} multiplier The first number in a multiplication.
-     * @param {number} multiplicand The second number in a multiplication.
-     * @returns {number} Returns the product.
-     * @example
-     *
-     * _.multiply(6, 4);
-     * // => 24
-     */
-    var multiply = createMathOperation(function(multiplier, multiplicand) {
-      return multiplier * multiplicand;
-    }, 1);
- 
-    /**
-     * Computes `number` rounded to `precision`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.10.0
-     * @category Math
-     * @param {number} number The number to round.
-     * @param {number} [precision=0] The precision to round to.
-     * @returns {number} Returns the rounded number.
-     * @example
-     *
-     * _.round(4.006);
-     * // => 4
-     *
-     * _.round(4.006, 2);
-     * // => 4.01
-     *
-     * _.round(4060, -2);
-     * // => 4100
-     */
-    var round = createRound('round');
- 
-    /**
-     * Subtract two numbers.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Math
-     * @param {number} minuend The first number in a subtraction.
-     * @param {number} subtrahend The second number in a subtraction.
-     * @returns {number} Returns the difference.
-     * @example
-     *
-     * _.subtract(6, 4);
-     * // => 2
-     */
-    var subtract = createMathOperation(function(minuend, subtrahend) {
-      return minuend - subtrahend;
-    }, 0);
- 
-    /**
-     * Computes the sum of the values in `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.4.0
-     * @category Math
-     * @param {Array} array The array to iterate over.
-     * @returns {number} Returns the sum.
-     * @example
-     *
-     * _.sum([4, 2, 8, 6]);
-     * // => 20
-     */
-    function sum(array) {
-      return (array && array.length)
-        ? baseSum(array, identity)
-        : 0;
-    }
- 
-    /**
-     * This method is like `_.sum` except that it accepts `iteratee` which is
-     * invoked for each element in `array` to generate the value to be summed.
-     * The iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Math
-     * @param {Array} array The array to iterate over.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {number} Returns the sum.
-     * @example
-     *
-     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
-     *
-     * _.sumBy(objects, function(o) { return o.n; });
-     * // => 20
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.sumBy(objects, 'n');
-     * // => 20
-     */
-    function sumBy(array, iteratee) {
-      return (array && array.length)
-        ? baseSum(array, getIteratee(iteratee, 2))
-        : 0;
-    }
- 
-    /*------------------------------------------------------------------------*/
- 
-    // Add methods that return wrapped values in chain sequences.
-    lodash.after = after;
-    lodash.ary = ary;
-    lodash.assign = assign;
-    lodash.assignIn = assignIn;
-    lodash.assignInWith = assignInWith;
-    lodash.assignWith = assignWith;
-    lodash.at = at;
-    lodash.before = before;
-    lodash.bind = bind;
-    lodash.bindAll = bindAll;
-    lodash.bindKey = bindKey;
-    lodash.castArray = castArray;
-    lodash.chain = chain;
-    lodash.chunk = chunk;
-    lodash.compact = compact;
-    lodash.concat = concat;
-    lodash.cond = cond;
-    lodash.conforms = conforms;
-    lodash.constant = constant;
-    lodash.countBy = countBy;
-    lodash.create = create;
-    lodash.curry = curry;
-    lodash.curryRight = curryRight;
-    lodash.debounce = debounce;
-    lodash.defaults = defaults;
-    lodash.defaultsDeep = defaultsDeep;
-    lodash.defer = defer;
-    lodash.delay = delay;
-    lodash.difference = difference;
-    lodash.differenceBy = differenceBy;
-    lodash.differenceWith = differenceWith;
-    lodash.drop = drop;
-    lodash.dropRight = dropRight;
-    lodash.dropRightWhile = dropRightWhile;
-    lodash.dropWhile = dropWhile;
-    lodash.fill = fill;
-    lodash.filter = filter;
-    lodash.flatMap = flatMap;
-    lodash.flatMapDeep = flatMapDeep;
-    lodash.flatMapDepth = flatMapDepth;
-    lodash.flatten = flatten;
-    lodash.flattenDeep = flattenDeep;
-    lodash.flattenDepth = flattenDepth;
-    lodash.flip = flip;
-    lodash.flow = flow;
-    lodash.flowRight = flowRight;
-    lodash.fromPairs = fromPairs;
-    lodash.functions = functions;
-    lodash.functionsIn = functionsIn;
-    lodash.groupBy = groupBy;
-    lodash.initial = initial;
-    lodash.intersection = intersection;
-    lodash.intersectionBy = intersectionBy;
-    lodash.intersectionWith = intersectionWith;
-    lodash.invert = invert;
-    lodash.invertBy = invertBy;
-    lodash.invokeMap = invokeMap;
-    lodash.iteratee = iteratee;
-    lodash.keyBy = keyBy;
-    lodash.keys = keys;
-    lodash.keysIn = keysIn;
-    lodash.map = map;
-    lodash.mapKeys = mapKeys;
-    lodash.mapValues = mapValues;
-    lodash.matches = matches;
-    lodash.matchesProperty = matchesProperty;
-    lodash.memoize = memoize;
-    lodash.merge = merge;
-    lodash.mergeWith = mergeWith;
-    lodash.method = method;
-    lodash.methodOf = methodOf;
-    lodash.mixin = mixin;
-    lodash.negate = negate;
-    lodash.nthArg = nthArg;
-    lodash.omit = omit;
-    lodash.omitBy = omitBy;
-    lodash.once = once;
-    lodash.orderBy = orderBy;
-    lodash.over = over;
-    lodash.overArgs = overArgs;
-    lodash.overEvery = overEvery;
-    lodash.overSome = overSome;
-    lodash.partial = partial;
-    lodash.partialRight = partialRight;
-    lodash.partition = partition;
-    lodash.pick = pick;
-    lodash.pickBy = pickBy;
-    lodash.property = property;
-    lodash.propertyOf = propertyOf;
-    lodash.pull = pull;
-    lodash.pullAll = pullAll;
-    lodash.pullAllBy = pullAllBy;
-    lodash.pullAllWith = pullAllWith;
-    lodash.pullAt = pullAt;
-    lodash.range = range;
-    lodash.rangeRight = rangeRight;
-    lodash.rearg = rearg;
-    lodash.reject = reject;
-    lodash.remove = remove;
-    lodash.rest = rest;
-    lodash.reverse = reverse;
-    lodash.sampleSize = sampleSize;
-    lodash.set = set;
-    lodash.setWith = setWith;
-    lodash.shuffle = shuffle;
-    lodash.slice = slice;
-    lodash.sortBy = sortBy;
-    lodash.sortedUniq = sortedUniq;
-    lodash.sortedUniqBy = sortedUniqBy;
-    lodash.split = split;
-    lodash.spread = spread;
-    lodash.tail = tail;
-    lodash.take = take;
-    lodash.takeRight = takeRight;
-    lodash.takeRightWhile = takeRightWhile;
-    lodash.takeWhile = takeWhile;
-    lodash.tap = tap;
-    lodash.throttle = throttle;
-    lodash.thru = thru;
-    lodash.toArray = toArray;
-    lodash.toPairs = toPairs;
-    lodash.toPairsIn = toPairsIn;
-    lodash.toPath = toPath;
-    lodash.toPlainObject = toPlainObject;
-    lodash.transform = transform;
-    lodash.unary = unary;
-    lodash.union = union;
-    lodash.unionBy = unionBy;
-    lodash.unionWith = unionWith;
-    lodash.uniq = uniq;
-    lodash.uniqBy = uniqBy;
-    lodash.uniqWith = uniqWith;
-    lodash.unset = unset;
-    lodash.unzip = unzip;
-    lodash.unzipWith = unzipWith;
-    lodash.update = update;
-    lodash.updateWith = updateWith;
-    lodash.values = values;
-    lodash.valuesIn = valuesIn;
-    lodash.without = without;
-    lodash.words = words;
-    lodash.wrap = wrap;
-    lodash.xor = xor;
-    lodash.xorBy = xorBy;
-    lodash.xorWith = xorWith;
-    lodash.zip = zip;
-    lodash.zipObject = zipObject;
-    lodash.zipObjectDeep = zipObjectDeep;
-    lodash.zipWith = zipWith;
- 
-    // Add aliases.
-    lodash.entries = toPairs;
-    lodash.entriesIn = toPairsIn;
-    lodash.extend = assignIn;
-    lodash.extendWith = assignInWith;
- 
-    // Add methods to `lodash.prototype`.
-    mixin(lodash, lodash);
- 
-    /*------------------------------------------------------------------------*/
- 
-    // Add methods that return unwrapped values in chain sequences.
-    lodash.add = add;
-    lodash.attempt = attempt;
-    lodash.camelCase = camelCase;
-    lodash.capitalize = capitalize;
-    lodash.ceil = ceil;
-    lodash.clamp = clamp;
-    lodash.clone = clone;
-    lodash.cloneDeep = cloneDeep;
-    lodash.cloneDeepWith = cloneDeepWith;
-    lodash.cloneWith = cloneWith;
-    lodash.conformsTo = conformsTo;
-    lodash.deburr = deburr;
-    lodash.defaultTo = defaultTo;
-    lodash.divide = divide;
-    lodash.endsWith = endsWith;
-    lodash.eq = eq;
-    lodash.escape = escape;
-    lodash.escapeRegExp = escapeRegExp;
-    lodash.every = every;
-    lodash.find = find;
-    lodash.findIndex = findIndex;
-    lodash.findKey = findKey;
-    lodash.findLast = findLast;
-    lodash.findLastIndex = findLastIndex;
-    lodash.findLastKey = findLastKey;
-    lodash.floor = floor;
-    lodash.forEach = forEach;
-    lodash.forEachRight = forEachRight;
-    lodash.forIn = forIn;
-    lodash.forInRight = forInRight;
-    lodash.forOwn = forOwn;
-    lodash.forOwnRight = forOwnRight;
-    lodash.get = get;
-    lodash.gt = gt;
-    lodash.gte = gte;
-    lodash.has = has;
-    lodash.hasIn = hasIn;
-    lodash.head = head;
-    lodash.identity = identity;
-    lodash.includes = includes;
-    lodash.indexOf = indexOf;
-    lodash.inRange = inRange;
-    lodash.invoke = invoke;
-    lodash.isArguments = isArguments;
-    lodash.isArray = isArray;
-    lodash.isArrayBuffer = isArrayBuffer;
-    lodash.isArrayLike = isArrayLike;
-    lodash.isArrayLikeObject = isArrayLikeObject;
-    lodash.isBoolean = isBoolean;
-    lodash.isBuffer = isBuffer;
-    lodash.isDate = isDate;
-    lodash.isElement = isElement;
-    lodash.isEmpty = isEmpty;
-    lodash.isEqual = isEqual;
-    lodash.isEqualWith = isEqualWith;
-    lodash.isError = isError;
-    lodash.isFinite = isFinite;
-    lodash.isFunction = isFunction;
-    lodash.isInteger = isInteger;
-    lodash.isLength = isLength;
-    lodash.isMap = isMap;
-    lodash.isMatch = isMatch;
-    lodash.isMatchWith = isMatchWith;
-    lodash.isNaN = isNaN;
-    lodash.isNative = isNative;
-    lodash.isNil = isNil;
-    lodash.isNull = isNull;
-    lodash.isNumber = isNumber;
-    lodash.isObject = isObject;
-    lodash.isObjectLike = isObjectLike;
-    lodash.isPlainObject = isPlainObject;
-    lodash.isRegExp = isRegExp;
-    lodash.isSafeInteger = isSafeInteger;
-    lodash.isSet = isSet;
-    lodash.isString = isString;
-    lodash.isSymbol = isSymbol;
-    lodash.isTypedArray = isTypedArray;
-    lodash.isUndefined = isUndefined;
-    lodash.isWeakMap = isWeakMap;
-    lodash.isWeakSet = isWeakSet;
-    lodash.join = join;
-    lodash.kebabCase = kebabCase;
-    lodash.last = last;
-    lodash.lastIndexOf = lastIndexOf;
-    lodash.lowerCase = lowerCase;
-    lodash.lowerFirst = lowerFirst;
-    lodash.lt = lt;
-    lodash.lte = lte;
-    lodash.max = max;
-    lodash.maxBy = maxBy;
-    lodash.mean = mean;
-    lodash.meanBy = meanBy;
-    lodash.min = min;
-    lodash.minBy = minBy;
-    lodash.stubArray = stubArray;
-    lodash.stubFalse = stubFalse;
-    lodash.stubObject = stubObject;
-    lodash.stubString = stubString;
-    lodash.stubTrue = stubTrue;
-    lodash.multiply = multiply;
-    lodash.nth = nth;
-    lodash.noConflict = noConflict;
-    lodash.noop = noop;
-    lodash.now = now;
-    lodash.pad = pad;
-    lodash.padEnd = padEnd;
-    lodash.padStart = padStart;
-    lodash.parseInt = parseInt;
-    lodash.random = random;
-    lodash.reduce = reduce;
-    lodash.reduceRight = reduceRight;
-    lodash.repeat = repeat;
-    lodash.replace = replace;
-    lodash.result = result;
-    lodash.round = round;
-    lodash.runInContext = runInContext;
-    lodash.sample = sample;
-    lodash.size = size;
-    lodash.snakeCase = snakeCase;
-    lodash.some = some;
-    lodash.sortedIndex = sortedIndex;
-    lodash.sortedIndexBy = sortedIndexBy;
-    lodash.sortedIndexOf = sortedIndexOf;
-    lodash.sortedLastIndex = sortedLastIndex;
-    lodash.sortedLastIndexBy = sortedLastIndexBy;
-    lodash.sortedLastIndexOf = sortedLastIndexOf;
-    lodash.startCase = startCase;
-    lodash.startsWith = startsWith;
-    lodash.subtract = subtract;
-    lodash.sum = sum;
-    lodash.sumBy = sumBy;
-    lodash.template = template;
-    lodash.times = times;
-    lodash.toFinite = toFinite;
-    lodash.toInteger = toInteger;
-    lodash.toLength = toLength;
-    lodash.toLower = toLower;
-    lodash.toNumber = toNumber;
-    lodash.toSafeInteger = toSafeInteger;
-    lodash.toString = toString;
-    lodash.toUpper = toUpper;
-    lodash.trim = trim;
-    lodash.trimEnd = trimEnd;
-    lodash.trimStart = trimStart;
-    lodash.truncate = truncate;
-    lodash.unescape = unescape;
-    lodash.uniqueId = uniqueId;
-    lodash.upperCase = upperCase;
-    lodash.upperFirst = upperFirst;
- 
-    // Add aliases.
-    lodash.each = forEach;
-    lodash.eachRight = forEachRight;
-    lodash.first = head;
- 
-    mixin(lodash, (function() {
-      var source = {};
-      baseForOwn(lodash, function(func, methodName) {
-        if (!hasOwnProperty.call(lodash.prototype, methodName)) {
-          source[methodName] = func;
-        }
-      });
-      return source;
-    }()), { 'chain': false });
- 
-    /*------------------------------------------------------------------------*/
- 
-    /**
-     * The semantic version number.
-     *
-     * @static
-     * @memberOf _
-     * @type {string}
-     */
-    lodash.VERSION = VERSION;
- 
-    // Assign default placeholders.
-    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {
-      lodash[methodName].placeholder = lodash;
-    });
- 
-    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
-    arrayEach(['drop', 'take'], function(methodName, index) {
-      LazyWrapper.prototype[methodName] = function(n) {
-        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);
- 
-        var result = (this.__filtered__ && !index)
-          ? new LazyWrapper(this)
-          : this.clone();
- 
-        if (result.__filtered__) {
-          result.__takeCount__ = nativeMin(n, result.__takeCount__);
-        } else {
-          result.__views__.push({
-            'size': nativeMin(n, MAX_ARRAY_LENGTH),
-            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')
-          });
-        }
-        return result;
-      };
- 
-      LazyWrapper.prototype[methodName + 'Right'] = function(n) {
-        return this.reverse()[methodName](n).reverse();
-      };
-    });
- 
-    // Add `LazyWrapper` methods that accept an `iteratee` value.
-    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {
-      var type = index + 1,
-          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;
- 
-      LazyWrapper.prototype[methodName] = function(iteratee) {
-        var result = this.clone();
-        result.__iteratees__.push({
-          'iteratee': getIteratee(iteratee, 3),
-          'type': type
-        });
-        result.__filtered__ = result.__filtered__ || isFilter;
-        return result;
-      };
-    });
- 
-    // Add `LazyWrapper` methods for `_.head` and `_.last`.
-    arrayEach(['head', 'last'], function(methodName, index) {
-      var takeName = 'take' + (index ? 'Right' : '');
- 
-      LazyWrapper.prototype[methodName] = function() {
-        return this[takeName](1).value()[0];
-      };
-    });
- 
-    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.
-    arrayEach(['initial', 'tail'], function(methodName, index) {
-      var dropName = 'drop' + (index ? '' : 'Right');
- 
-      LazyWrapper.prototype[methodName] = function() {
-        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
-      };
-    });
- 
-    LazyWrapper.prototype.compact = function() {
-      return this.filter(identity);
-    };
- 
-    LazyWrapper.prototype.find = function(predicate) {
-      return this.filter(predicate).head();
-    };
- 
-    LazyWrapper.prototype.findLast = function(predicate) {
-      return this.reverse().find(predicate);
-    };
- 
-    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
-      if (typeof path == 'function') {
-        return new LazyWrapper(this);
-      }
-      return this.map(function(value) {
-        return baseInvoke(value, path, args);
-      });
-    });
- 
-    LazyWrapper.prototype.reject = function(predicate) {
-      return this.filter(negate(getIteratee(predicate)));
-    };
- 
-    LazyWrapper.prototype.slice = function(start, end) {
-      start = toInteger(start);
- 
-      var result = this;
-      if (result.__filtered__ && (start > 0 || end < 0)) {
-        return new LazyWrapper(result);
-      }
-      if (start < 0) {
-        result = result.takeRight(-start);
-      } else if (start) {
-        result = result.drop(start);
-      }
-      if (end !== undefined) {
-        end = toInteger(end);
-        result = end < 0 ? result.dropRight(-end) : result.take(end - start);
-      }
-      return result;
-    };
- 
-    LazyWrapper.prototype.takeRightWhile = function(predicate) {
-      return this.reverse().takeWhile(predicate).reverse();
-    };
- 
-    LazyWrapper.prototype.toArray = function() {
-      return this.take(MAX_ARRAY_LENGTH);
-    };
- 
-    // Add `LazyWrapper` methods to `lodash.prototype`.
-    baseForOwn(LazyWrapper.prototype, function(func, methodName) {
-      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),
-          isTaker = /^(?:head|last)$/.test(methodName),
-          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],
-          retUnwrapped = isTaker || /^find/.test(methodName);
- 
-      if (!lodashFunc) {
-        return;
-      }
-      lodash.prototype[methodName] = function() {
-        var value = this.__wrapped__,
-            args = isTaker ? [1] : arguments,
-            isLazy = value instanceof LazyWrapper,
-            iteratee = args[0],
-            useLazy = isLazy || isArray(value);
- 
-        var interceptor = function(value) {
-          var result = lodashFunc.apply(lodash, arrayPush([value], args));
-          return (isTaker && chainAll) ? result[0] : result;
-        };
- 
-        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
-          // Avoid lazy use if the iteratee has a "length" value other than `1`.
-          isLazy = useLazy = false;
-        }
-        var chainAll = this.__chain__,
-            isHybrid = !!this.__actions__.length,
-            isUnwrapped = retUnwrapped && !chainAll,
-            onlyLazy = isLazy && !isHybrid;
- 
-        if (!retUnwrapped && useLazy) {
-          value = onlyLazy ? value : new LazyWrapper(this);
-          var result = func.apply(value, args);
-          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });
-          return new LodashWrapper(result, chainAll);
-        }
-        if (isUnwrapped && onlyLazy) {
-          return func.apply(this, args);
-        }
-        result = this.thru(interceptor);
-        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;
-      };
-    });
- 
-    // Add `Array` methods to `lodash.prototype`.
-    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {
-      var func = arrayProto[methodName],
-          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
-          retUnwrapped = /^(?:pop|shift)$/.test(methodName);
- 
-      lodash.prototype[methodName] = function() {
-        var args = arguments;
-        if (retUnwrapped && !this.__chain__) {
-          var value = this.value();
-          return func.apply(isArray(value) ? value : [], args);
-        }
-        return this[chainName](function(value) {
-          return func.apply(isArray(value) ? value : [], args);
-        });
-      };
-    });
- 
-    // Map minified method names to their real names.
-    baseForOwn(LazyWrapper.prototype, function(func, methodName) {
-      var lodashFunc = lodash[methodName];
-      if (lodashFunc) {
-        var key = (lodashFunc.name + ''),
-            names = realNames[key] || (realNames[key] = []);
- 
-        names.push({ 'name': methodName, 'func': lodashFunc });
-      }
-    });
- 
-    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{
-      'name': 'wrapper',
-      'func': undefined
-    }];
- 
-    // Add methods to `LazyWrapper`.
-    LazyWrapper.prototype.clone = lazyClone;
-    LazyWrapper.prototype.reverse = lazyReverse;
-    LazyWrapper.prototype.value = lazyValue;
- 
-    // Add chain sequence methods to the `lodash` wrapper.
-    lodash.prototype.at = wrapperAt;
-    lodash.prototype.chain = wrapperChain;
-    lodash.prototype.commit = wrapperCommit;
-    lodash.prototype.next = wrapperNext;
-    lodash.prototype.plant = wrapperPlant;
-    lodash.prototype.reverse = wrapperReverse;
-    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
- 
-    // Add lazy aliases.
-    lodash.prototype.first = lodash.prototype.head;
- 
-    if (symIterator) {
-      lodash.prototype[symIterator] = wrapperToIterator;
-    }
-    return lodash;
-  });
- 
-  /*--------------------------------------------------------------------------*/
- 
-  // Export lodash.
-  var _ = runInContext();
- 
-  // Some AMD build optimizers, like r.js, check for condition patterns like:
-  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
-    // Expose Lodash on the global object to prevent errors when Lodash is
-    // loaded by a script tag in the presence of an AMD loader.
-    // See http://requirejs.org/docs/errors.html#mismatch for more details.
-    // Use `_.noConflict` to remove Lodash from the global object.
-    root._ = _;
- 
-    // Define as an anonymous module so, through path mapping, it can be
-    // referenced as the "underscore" module.
-    define(function() {
-      return _;
-    });
-  }
-  // Check for `exports` after `define` in case a build optimizer adds it.
-  else if (freeModule) {
-    // Export for Node.js.
-    (freeModule.exports = _)._ = _;
-    // Export for CommonJS support.
-    freeExports._ = _;
-  }
-  else {
-    // Export to the global object.
-    root._ = _;
-  }
-}.call(this));
- 
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{}],130:[function(require,module,exports){
-var MapCache = require('./_MapCache');
- 
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
- 
-/**
- * Creates a function that memoizes the result of `func`. If `resolver` is
- * provided, it determines the cache key for storing the result based on the
- * arguments provided to the memoized function. By default, the first argument
- * provided to the memoized function is used as the map cache key. The `func`
- * is invoked with the `this` binding of the memoized function.
- *
- * **Note:** The cache is exposed as the `cache` property on the memoized
- * function. Its creation may be customized by replacing the `_.memoize.Cache`
- * constructor with one whose instances implement the
- * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
- * method interface of `clear`, `delete`, `get`, `has`, and `set`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to have its output memoized.
- * @param {Function} [resolver] The function to resolve the cache key.
- * @returns {Function} Returns the new memoized function.
- * @example
- *
- * var object = { 'a': 1, 'b': 2 };
- * var other = { 'c': 3, 'd': 4 };
- *
- * var values = _.memoize(_.values);
- * values(object);
- * // => [1, 2]
- *
- * values(other);
- * // => [3, 4]
- *
- * object.a = 2;
- * values(object);
- * // => [1, 2]
- *
- * // Modify the result cache.
- * values.cache.set(object, ['a', 'b']);
- * values(object);
- * // => ['a', 'b']
- *
- * // Replace `_.memoize.Cache`.
- * _.memoize.Cache = WeakMap;
- */
-function memoize(func, resolver) {
-  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  var memoized = function() {
-    var args = arguments,
-        key = resolver ? resolver.apply(this, args) : args[0],
-        cache = memoized.cache;
- 
-    if (cache.has(key)) {
-      return cache.get(key);
-    }
-    var result = func.apply(this, args);
-    memoized.cache = cache.set(key, result) || cache;
-    return result;
-  };
-  memoized.cache = new (memoize.Cache || MapCache);
-  return memoized;
-}
- 
-// Expose `MapCache`.
-memoize.Cache = MapCache;
- 
-module.exports = memoize;
- 
-},{"./_MapCache":79}],131:[function(require,module,exports){
-var baseSet = require('./_baseSet');
- 
-/**
- * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
- * it's created. Arrays are created for missing index properties while objects
- * are created for all other missing properties. Use `_.setWith` to customize
- * `path` creation.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
- *
- * _.set(object, 'a[0].b.c', 4);
- * console.log(object.a[0].b.c);
- * // => 4
- *
- * _.set(object, ['x', '0', 'y', 'z'], 5);
- * console.log(object.x[0].y.z);
- * // => 5
- */
-function set(object, path, value) {
-  return object == null ? object : baseSet(object, path, value);
-}
- 
-module.exports = set;
- 
-},{"./_baseSet":87}],132:[function(require,module,exports){
-var baseToString = require('./_baseToString');
- 
-/**
- * Converts `value` to a string. An empty string is returned for `null`
- * and `undefined` values. The sign of `-0` is preserved.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {string} Returns the converted string.
- * @example
- *
- * _.toString(null);
- * // => ''
- *
- * _.toString(-0);
- * // => '-0'
- *
- * _.toString([1, 2, 3]);
- * // => '1,2,3'
- */
-function toString(value) {
-  return value == null ? '' : baseToString(value);
-}
- 
-module.exports = toString;
- 
-},{"./_baseToString":88}],133:[function(require,module,exports){
-(function (Buffer){
-'use strict';
-var isUtf8 = require('is-utf8');
- 
-var stripBom = module.exports = function (arg) {
-	if (typeof arg === 'string') {
-		return arg.replace(/^\ufeff/g, '');
-	}
- 
-	if (Buffer.isBuffer(arg) && isUtf8(arg) &&
-		arg[0] === 0xef && arg[1] === 0xbb && arg[2] === 0xbf) {
-		return arg.slice(3);
-	}
- 
-	return arg;
-};
- 
-stripBom.stream = function () {
-	var firstChunk = require('first-chunk-stream');
- 
-	return firstChunk({minSize: 3}, function (chunk, enc, cb) {
-		this.push(stripBom(chunk));
-		cb();
-	});
-};
- 
-}).call(this,{"isBuffer":require("../grunt-browserify/node_modules/browserify/node_modules/insert-module-globals/node_modules/is-buffer/index.js")})
-},{"../grunt-browserify/node_modules/browserify/node_modules/insert-module-globals/node_modules/is-buffer/index.js":39,"first-chunk-stream":30,"is-utf8":75}],134:[function(require,module,exports){
-module.exports={
-  "name": "csvtojson",
-  "description": "A tool concentrating on converting csv data to JSON with customised parser supporting",
-  "author": "Keyang Xiang <keyang.xiang@gmail.com>",
-  "homepage": "https://github.com/Keyang/node-csvtojson",
-  "bugs": "https://github.com/Keyang/node-csvtojson/issues",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/Keyang/node-csvtojson.git"
-  },
-  "contributors": [
-    {
-      "name": "Daniel Cohen",
-      "email": "dcohenb@gmail.com",
-      "url": "https://github.com/dcohenb",
-      "contributions": 1,
-      "additions": 1,
-      "deletions": 6,
-      "hireable": true
-    },
-    {
-      "name": "Trang",
-      "email": "trangtungn@gmail.com",
-      "url": "https://github.com/trangtungn",
-      "contributions": 1,
-      "additions": 6,
-      "deletions": 1,
-      "hireable": true
-    },
-    {
-      "name": "Matthias Lienau",
-      "email": "matthias@mlienau.de",
-      "url": "https://github.com/atufkas",
-      "contributions": 9,
-      "additions": 74,
-      "deletions": 45,
-      "hireable": null
-    },
-    {
-      "name": "Alec Fenichel",
-      "email": "alec.fenichel@gmail.com",
-      "url": "https://github.com/fenichelar",
-      "contributions": 1,
-      "additions": 1,
-      "deletions": 1,
-      "hireable": true
-    },
-    {
-      "name": "Blake Blackshear",
-      "email": null,
-      "url": "https://github.com/blakeblackshear",
-      "contributions": 2,
-      "additions": 8,
-      "deletions": 8,
-      "hireable": null
-    },
-    {
-      "name": "Dimitri Kennedy",
-      "email": "dimitrikennedy@gmail.com",
-      "url": "https://github.com/roodboi",
-      "contributions": 2,
-      "additions": 3,
-      "deletions": 3,
-      "hireable": null
-    },
-    {
-      "name": null,
-      "email": null,
-      "url": "https://github.com/markwithers",
-      "contributions": 1,
-      "additions": 1,
-      "deletions": 1,
-      "hireable": null
-    },
-    {
-      "name": "Robert Porter",
-      "email": null,
-      "url": "https://github.com/colarob",
-      "contributions": 1,
-      "additions": 64,
-      "deletions": 21,
-      "hireable": null
-    },
-    {
-      "name": "Jessica Good",
-      "email": null,
-      "url": "https://github.com/jessicagood",
-      "contributions": 1,
-      "additions": 8,
-      "deletions": 5,
-      "hireable": null
-    },
-    {
-      "name": null,
-      "email": null,
-      "url": "https://github.com/jondayft",
-      "contributions": 1,
-      "additions": 18,
-      "deletions": 0,
-      "hireable": null
-    },
-    {
-      "name": "Dane Petersen",
-      "email": null,
-      "url": "https://github.com/thegreatsunra",
-      "contributions": 1,
-      "additions": 18920,
-      "deletions": 8429,
-      "hireable": null
-    },
-    {
-      "name": "Jimi Ford",
-      "email": null,
-      "url": "https://github.com/JimiHFord",
-      "contributions": 1,
-      "additions": 5,
-      "deletions": 5,
-      "hireable": null
-    },
-    {
-      "name": "Hocine Moukaideche",
-      "email": null,
-      "url": "https://github.com/Off76",
-      "contributions": 1,
-      "additions": 1,
-      "deletions": 1,
-      "hireable": true
-    },
-    {
-      "name": "Keyang Xiang",
-      "email": "keyang.xiang@gmail.com",
-      "url": "https://github.com/Keyang",
-      "contributions": 122,
-      "additions": 46304,
-      "deletions": 65397,
-      "hireable": null
-    },
-    {
-      "name": "Ionică Bizău",
-      "email": "contact@ionicabizau.net",
-      "url": "https://github.com/IonicaBizau",
-      "contributions": 1,
-      "additions": 98,
-      "deletions": 86,
-      "hireable": null
-    },
-    {
-      "name": "Sean Lang",
-      "email": "slang800@gmail.com",
-      "url": "https://github.com/slang800",
-      "contributions": 2,
-      "additions": 2,
-      "deletions": 1,
-      "hireable": true
-    },
-    {
-      "name": "Tom Dodson",
-      "email": "t3.dodson@gmail.com",
-      "url": "https://github.com/t3dodson",
-      "contributions": 25,
-      "additions": 1485,
-      "deletions": 1414,
-      "hireable": null
-    },
-    {
-      "name": "Jeff Johnson",
-      "email": null,
-      "url": "https://github.com/jeffcjohnson",
-      "contributions": 1,
-      "additions": 1,
-      "deletions": 1,
-      "hireable": null
-    },
-    {
-      "name": "Amila Welihinda",
-      "email": "amilajack@gmail.com",
-      "url": "https://github.com/amilajack",
-      "contributions": 1,
-      "additions": 2,
-      "deletions": 1,
-      "hireable": true
-    },
-    {
-      "name": "Zsolt R. Molnar",
-      "email": null,
-      "url": "https://github.com/molnarzs",
-      "contributions": 1,
-      "additions": 40,
-      "deletions": 2,
-      "hireable": true
-    }
-  ],
-  "version": "1.1.7",
-  "keywords": [
-    "csv",
-    "csv parser",
-    "parse csv",
-    "csvtojson",
-    "json",
-    "csv to json",
-    "csv convert",
-    "tojson",
-    "convert csv to json",
-    "csv-json"
-  ],
-  "bin": {
-    "csvtojson": "./bin/csvtojson"
-  },
-  "license": "MIT",
-  "engines": {
-    "node": ">=0.10"
-  },
-  "devDependencies": {
-    "grunt": "^0.4.5",
-    "grunt-browserify": "^4.0.1",
-    "grunt-contrib-jshint": "^0.11.2",
-    "grunt-contrib-uglify": "^0.11.0",
-    "grunt-contrib-watch": "^0.6.1",
-    "grunt-git": "^0.3.5",
-    "grunt-madge": "0.0.6",
-    "grunt-mocha-test": "^0.12.7",
-    "grunt-newer": "^1.1.0",
-    "imgur": "^0.1.5",
-    "load-grunt-tasks": "^3.4.0",
-    "minimist": "^1.2.0",
-    "mocha": "^2.4.5",
-    "request": "^2.81.0"
-  },
-  "dependencies": {
-    "lodash": "^4.17.3",
-    "strip-bom": "1.0.0"
-  },
-  "scripts": {
-    "test": "mocha ./test -R spec",
-    "test-debug": "mocha debug ./test -R spec",
-    "test-all": "mocha  ./test -R spec && CSV_WORKER=3 mocha ./test -R spec "
-  }
-}
- 
-},{}]},{},[1]);
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/dist/csvtojson.min.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/dist/csvtojson.min.js.html deleted file mode 100644 index 6ef84fc..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/dist/csvtojson.min.js.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - Code coverage report for csv2json/dist/csvtojson.min.js - - - - - - - -
-
-

- All files / csv2json/dist csvtojson.min.js -

-
-
- 0% - Statements - 0/5007 -
-
- 0% - Branches - 0/5826 -
-
- 0% - Functions - 0/1473 -
-
- 0% - Lines - 0/6 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8  -  -  -  -  -  -  - 
/*Automatically Generated. Do not modify.*/
-!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){window&&(window.csvtojson=a("./index.js"),window.csvtojson.version=a("./package.json").version)},{"./index.js":2,"./package.json":134}],2:[function(a,b,c){b.exports=a("./libs/csv2json.js")},{"./libs/csv2json.js":24}],3:[function(a,b,c){function d(a,b,c){Error.call(this,""),this.err=a,this.line=b,this.extra=c,this.message="Error: "+a+". JSON Line number: "+b+(c?" near: "+c:""),this.name="CSV Error"}var e=a("util");b.exports=d,e.inherits(d,Error),d.prototype.toString=function(){return JSON.stringify([this.err,this.line,this.extra])},d.column_mismatched=function(a,b){return new d("column_mismatched",a,b)},d.unclosed_quote=function(a,b){return new d("unclosed_quote",a,b)},d.fromArray=function(a){return new d(a[0],a[1],a[2])}},{util:73}],4:[function(a,b,c){(function(c,d){function e(a,b){return j.call(this,b),this._options=b||{},this.param=n(a),this.param._options=this._options,this.started=!1,this.recordNum=0,this.lineNumber=0,this._csvLineBuffer="",this.lastIndex=0,this.param.forked&&(this.param.forked=!1,this.workerNum=2),this.flushCb=null,this.processEnd=!1,this.sequenceBuffer=[],this._needJson=null,this._needEmitResult=null,this._needEmitFinalResult=null,this._needEmitJson=null,this._needPush=null,this._needEmitCsv=null,this._csvTransf=null,this.finalResult=[],this.on("error",f(this)),this.on("end",f(this)),this.initWorker(),c.nextTick(function(){null===this._needEmitFinalResult&&(this._needEmitFinalResult=this.listeners("end_parsed").length>0),null===this._needEmitResult&&(this._needEmitResult=this.listeners("record_parsed").length>0),null===this._needEmitJson&&(this._needEmitJson=this.listeners("json").length>0),null===this._needEmitCsv&&(this._needEmitCsv=this.listeners("csv").length>0),null===this._needJson&&(this._needJson=this._needEmitJson||this._needEmitFinalResult||this._needEmitResult||this.transform||this._options.objectMode),null===this._needPush&&(this._needPush=this.listeners("data").length>0||this.listeners("readable").length>0),this.param._needParseJson=this._needJson||this._needPush}.bind(this)),this}function f(a){return function(b){a._hasDone||(a._hasDone=!0,c.nextTick(function(){a.emit("done",b)}))}}function g(a){return v?d.from(a,"utf8"):new d(a,"utf8")}function h(a){if(a._postIgnoreColumns){for(var b=0;b<a.ignoreColumns.length;b++){var c=a.ignoreColumns[b];if("string"==typeof c){var d=a._headers.indexOf(c);d>-1?a.ignoreColumns[b]=d:a.ignoreColumns[b]=-1}}a.ignoreColumns.sort(function(a,b){return b-a})}if(a._postIncludeColumns)for(var b=0;b<a.includeColumns.length;b++){var e=a.includeColumns[b];if("string"==typeof e){var d=a._headers.indexOf(e);d>-1?a.includeColumns[b]=d:a.includeColumns[b]=-1}}a.ignoreColumns=t.uniq(a.ignoreColumns),a.includeColumns=t.uniq(a.includeColumns)}var i=a("util"),j=a("stream").Transform,k=a("os"),l=a("strip-bom"),m=k.EOL,n=a("./defParam"),o=a("./fileline"),p=a("./fileLineToCSVLine"),q=a("./linesToJson"),r=a("./CSVError"),s=null,t=a("lodash"),u=a("./rowSplit");i.inherits(e,j);var v=c.versions.node.split(".")[0]>=6;e.prototype._transform=function(a,b,c){a=this.prepareData(a);var e=a.length-1,f=null;if(0!=(128&a[e])){for(;128===(192&a[e]);)e--;e--}if(e!=a.length-1){f=a.slice(e+1),a=a.slice(0,e+1);var h=c,i=this;c=function(){i._csvLineBuffer?i._csvLineBuffer=d.concat([g(i._csvLineBuffer,"utf8"),f]):i._csvLineBuffer=f,h()}}a=a.toString("utf8"),this.started===!1&&(this.started=!0,a=l(a),this.param.toArrayString&&this._needPush&&this.push("["+m,"utf8"));var i=this;this.preProcessRaw(a,function(a){a&&a.length>0?i.processData(a,c):c()})},e.prototype.prepareData=function(a){return this._csvLineBuffer&&this._csvLineBuffer.length>0?("string"==typeof this._csvLineBuffer&&(this._csvLineBuffer=g(this._csvLineBuffer)),d.concat([this._csvLineBuffer,a])):a},e.prototype.setPartialData=function(a){this._csvLineBuffer=a},e.prototype.processData=function(a,b){var c=this.param;c.ignoreEmpty&&!c._headers&&(a=a.trimLeft());var d=o(a,this.param);if(d.lines.length>0)if(this.preProcessLine&&"function"==typeof this.preProcessLine&&(d.lines=this._preProcessLines(d.lines,this.lastIndex)),c._headers)if(c.workerNum<=1){var e=p(d,c);this.setPartialData(e.partial);var f=q(e.lines,c,this.recordNum);this.processResult(f),this.lastIndex+=f.length,this.recordNum+=f.length,b()}else this.workerProcess(d,b);else this.processHead(d,b);else this.setPartialData(d.partial),b()},e.prototype._preProcessLines=function(a,b){for(var c=[],d=0,e=a.length;e>d;d++){var f=this.preProcessLine(a[d],b+d+1);"string"==typeof f?c.push(f):(c.push(a[d]),this.emit("error",new Error("preProcessLine should return a string but got: "+JSON.stringify(f))))}return c},e.prototype.initWorker=function(){var b=this.param.workerNum-1;b>0&&(s=a("./workerMgr"),this.workerMgr=s(),this.workerMgr.initWorker(b,this.param))},e.prototype.preRawData=function(a){return this.preProcessRaw=a,this},e.prototype.preFileLine=function(a){return this.preProcessLine=a,this},e.prototype.workerProcess=function(a,b){var c=this,d=a,e=this.getEol();this.setPartialData(d.partial),this.workerMgr.sendWorker(d.lines.join(e)+e,this.lastIndex,b,function(a,b){var d,e=c.sequenceBuffer[0];if(e.idx===b){e.result=a;for(var f=[];c.sequenceBuffer[0]&&c.sequenceBuffer[0].result;)d=c.sequenceBuffer.shift(),f=f.concat(d.result);c.processResult(f),c.recordNum+=f.length}else for(var g=0,h=c.sequenceBuffer.length;h>g;g++)if(d=c.sequenceBuffer[g],d.idx===b){d.result=a;break}}),this.sequenceBuffer.push({idx:this.lastIndex,result:null}),this.lastIndex+=d.lines.length},e.prototype.processHead=function(b,c){var d=this.param;if(d._headers)return c();d._needFilterRow=!1;var e=b.lines,f="",g=[];if(!d.noheader)for(;e.length;){var i=f+e.shift(),j=u(i,d);if(j.closed){g=j.cols,f="";break}f=i+this.getEol()}if(d._needFilterRow=!0,!d.noheader&&0===g.length)return this.setPartialData(f),c();d.noheader?d.headers?d._headers=d.headers:d._headers=[]:d.headers?d._headers=d.headers:d._headers=g,h(d),d._headers=a("./filterRow")(d._headers,d);var e=p(b,d);this.setPartialData(e.partial),this.param.workerNum>1&&this.workerMgr.setParams(d);var k=q(e.lines,d,0);this.processResult(k),this.lastIndex+=k.length,this.recordNum+=k.length,c()},e.prototype.processResult=function(a){for(var b=0,c=a.length;c>b;b++){var d=a[b];d.err?this.emit("error",d.err):this.emitResult(d)}},e.prototype.emitResult=function(a){var b=a.index,c=a.row,d=a.json,e=null,f=null;"string"==typeof d?f=d:e=d,null===e&&this._needJson&&(e=JSON.parse(f),"string"==typeof c&&(c=JSON.parse(c))),this.transform&&"function"==typeof this.transform&&(this.transform(e,c,b),f=null),this._needEmitJson&&this.emit("json",e,b),this._needEmitCsv&&("string"==typeof c&&(c=JSON.parse(c)),this.emit("csv",c,b)),this.param.constructResult&&this._needEmitFinalResult&&this.finalResult.push(e),this._needEmitResult&&this.emit("record_parsed",e,c,b),this.param.toArrayString&&b>0&&this._needPush&&this.push(","+m),this._options&&this._options.objectMode?this.push(e):this._needPush&&(null===f&&(f=JSON.stringify(e)),this.push(this.param.toArrayString?f:f+m,"utf8"))},e.prototype.preProcessRaw=function(a,b){b(a)},e.prototype.preProcessLine=function(a,b){return a},e.prototype._flush=function(a){var b=this;if(this.flushCb=function(){b.emit("end_parsed",b.finalResult),b.workerMgr&&b.workerMgr.destroyWorker(),a(),b._needPush||b.emit("end")},this._csvLineBuffer.length>0){var c=this.getEol();this._csvLineBuffer[this._csvLineBuffer.length-1]!==c&&(this._csvLineBuffer+=c),this.processData(this._csvLineBuffer,function(){this.checkAndFlush()}.bind(this))}else this.checkAndFlush()},e.prototype.checkAndFlush=function(){0!==this._csvLineBuffer.length&&this.emit("error",r.unclosed_quote(this.recordNum,this._csvLineBuffer),this._csvLineBuffer),this.param.toArrayString&&this._needPush&&this.push(m+"]","utf8"),this.workerMgr&&this.workerMgr.isRunning()?this.workerMgr.drain=function(){this.flushCb()}.bind(this):this.flushCb()},e.prototype.getEol=function(a){if(!this.param.eol&&a){for(var b=0,c=a.length;c>b;b++){if("\r"===a[b])return"\n"===a[b+1]?this.param.eol="\r\n":this.param.eol="\r",this.param.eol;if("\n"===a[b])return this.param.eol="\n",this.param.eol}this.param.eol=m}return this.param.eol||m},e.prototype.fromFile=function(b,c,d){var e=a("fs"),f=null;return"object"==typeof c&&"undefined"==typeof d&&(d=c,c=null),this.wrapCallback(c,function(){f&&f.destroy&&f.destroy()}),e.exists(b,function(a){a?(f=e.createReadStream(b,d),f.pipe(this)):this.emit("error",new Error("File not exists"))}.bind(this)),this},e.prototype.fromStream=function(a,b){return b&&"function"==typeof b&&this.wrapCallback(b),a.pipe(this),this},e.prototype.transf=function(a){return this.transform=a,this},e.prototype.fromString=function(a,b){return"string"!=typeof a?b(new Error("Passed CSV Data is not a string.")):(b&&"function"==typeof b&&this.wrapCallback(b,function(){}),c.nextTick(function(){this.end(a)}.bind(this)),this)},e.prototype.wrapCallback=function(a,b){void 0===b&&(b=function(){}),a&&"function"==typeof a&&this.once("end_parsed",function(b){this.hasError||a(null,b)}.bind(this)),this.once("error",function(c){this.hasError=!0,a&&"function"==typeof a&&a(c),b()}.bind(this))},b.exports=e}).call(this,a("_process"),a("buffer").Buffer)},{"./CSVError":3,"./defParam":6,"./fileLineToCSVLine":13,"./fileline":14,"./filterRow":15,"./linesToJson":19,"./rowSplit":22,"./workerMgr":23,_process:42,buffer:33,fs:31,lodash:129,os:41,stream:60,"strip-bom":133,util:73}],5:[function(a,b,c){var d=a("./getEol"),e=a("./rowSplit");b.exports=function(a,b){for(var c=[],f="";a.length;){var g=f+a.shift(),h=e(g,b);h.closed?(c.push(h.cols),f=""):f=g+(d(g,b)||"\n")}return{lines:c,partial:f}}},{"./getEol":17,"./rowSplit":22}],6:[function(a,b,c){(function(a){function c(b,c){return a.env[b]?a.env[b]:c}var d=/^[0-9]+$/;b.exports=function(a){var b={constructResult:!0,delimiter:",",ignoreColumns:[],includeColumns:[],quote:'"',trim:!0,checkType:!1,toArrayString:!1,ignoreEmpty:!1,workerNum:c("CSV_WORKER",1),fork:!1,noheader:!1,headers:null,flatKeys:!1,maxRowLength:0,checkColumn:!1,escape:'"',colParser:{},_columnConv:[],_headerType:[],_headerTitle:[],_headerFlag:[],_headers:null,_needFilterRow:!1};a||(a={});for(var e in a)a.hasOwnProperty(e)&&(b[e]=a[e]);return b.ignoreColumns.length>0&&!d.test(b.ignoreColumns.join(""))&&(b._postIgnoreColumns=!0),b.includeColumns.length>0&&!d.test(b.includeColumns.join(""))&&(b._postIncludeColumns=!0),(b.ignoreColumns.length||b.includeColumns.length)&&(b._needFilterRow=!0,b._postIgnoreColumns||b.ignoreColumns.sort(function(a,b){return b-a})),b}}).call(this,a("_process"))},{_process:42}],7:[function(a,b,c){b.exports=[a("./parser_array.js"),a("./parser_json.js"),a("./parser_omit.js"),a("./parser_jsonarray.js"),a("./parser_flat.js")]},{"./parser_array.js":8,"./parser_flat.js":9,"./parser_json.js":10,"./parser_jsonarray.js":11,"./parser_omit.js":12}],8:[function(a,b,c){b.exports={name:"array",processSafe:!0,regExp:/^\*array\*/,parserFunc:function(a){var b=a.head.replace(this.regExp,"");void 0===a.resultRow[b]&&(a.resultRow[b]=[]),a.resultRow[b].push(a.item)}}},{}],9:[function(a,b,c){b.exports={name:"flat",processSafe:!0,regExp:/^\*flat\*/,parserFunc:function(a){var b=this.getHeadStr(),c=a.item;a.resultRow[b]=c}}},{}],10:[function(a,b,c){function d(a,b,c,d){for(var e,f,g;b.length>1;)e=b.shift(),f=d?!1:e.match(c),f?(void 0===a[e.replace(f[0],"")]&&(a[e.replace(f[0],"")]=[]),g=f[1],a=a[e.replace(f[0],"")],""===g&&(g=a.length),a[g]||(a[g]={}),a=a[g]):(void 0===a[e]&&(a[e]={}),a=a[e]);return a}var e=/\[([0-9]*)\]/;b.exports={name:"json",processSafe:!0,regExp:/^\*json\*/,parserFunc:function(a){var b,c,f,g=this.getHeadStr(),h=a.config&&a.config.flatKeys?[g]:g.split("."),i=d(a.resultRow,h,e,a.config&&a.config.flatKeys);if(f=h.shift(),b=a.config&&a.config.flatKeys?!1:f.match(e))try{f=f.replace(b[0],""),i[f]&&i[f]instanceof Array||(i[f]=[]),i[f]?(c=b[1],""===c&&(c=i[f].length),i[f][c]=a.item):a.resultRow[g]=a.item}catch(j){a.resultRow[g]=a.item}else"string"==typeof i?a.resultRow[g]=a.item:i[f]=a.item}}},{}],11:[function(a,b,c){b.exports={name:"jsonarray",processSafe:!0,regExp:/^\*jsonarray\*/,parserFunc:function(a){for(var b=a.head.replace(this.regExp,""),c=b.split("."),d=a.resultRow;c.length>1;){var e=c.shift();void 0===d[e]&&(d[e]={}),d=d[e]}var f=c.shift();void 0===d[f]&&(d[f]=[]),d[f].push(a.item)}}},{}],12:[function(a,b,c){b.exports={name:"omit",regExp:/^\*omit\*/,processSafe:!0,parserFunc:function(){}}},{}],13:[function(a,b,c){var d=a("./csvline");b.exports=function(a,b){var c=a.lines,e=d(c,b);return{lines:e.lines,partial:e.partial+a.partial}}},{"./csvline":5}],14:[function(a,b,c){var d=a("./getEol");b.exports=function(a,b){var c=d(a,b),e=a.split(c),f=e.pop();return{lines:e,partial:f}}},{"./getEol":17}],15:[function(a,b,c){b.exports=function(a,b){if(b.ignoreColumns instanceof Array&&b.ignoreColumns.length>0)for(var c=0,d=b.ignoreColumns.length;d>c;c++)b.ignoreColumns[c]>=0&&a.splice(b.ignoreColumns[c],1);if(b.includeColumns instanceof Array&&b.includeColumns.length>0){for(var e=[],f=0,g=b.includeColumns.length;g>f;f++)b.includeColumns[f]>=0&&e.push(a[b.includeColumns[f]]);a=e}return a}},{}],16:[function(a,b,c){function d(a,b){var c;if("auto"===b.delimiter)c=e;else{if(!(b.delimiter instanceof Array))return b.delimiter;c=b.delimiter}var d=0,f=",";return c.forEach(function(b){var c=a.split(b).length;c>d&&(f=b,d=c)}),f}b.exports=d;var e=[",","|","	",";",":"]},{}],17:[function(a,b,c){a("os").EOL;b.exports=function(a,b){if(!b.eol&&a)for(var c=0,d=a.length;d>c;c++){if("\r"===a[c])return"\n"===a[c+1]?b.eol="\r\n":a[c+1]&&(b.eol="\r"),b.eol;if("\n"===a[c])return b.eol="\n",b.eol}return b.eol}},{os:41}],18:[function(a,b,c){function d(a,c){return new b.exports.Converter(a,c)}b.exports=d,b.exports.Converter=a("./Converter.js")},{"./Converter.js":4}],19:[function(a,b,c){function d(a,b,c){for(var d=[],e=0,f=a.length;f>e;e++)d.push({err:null,json:{},index:c++,row:a[e]});return d}function e(a,b,c){for(var d=[],e=0,g=a.length;g>e;e++){var h=f(a[e],b,c++);h&&d.push(h)}return d}function f(a,b,c){var d=b.parseRules;if(b.checkColumn&&a.length!==d.length)return{err:s.column_mismatched(c)};var e=b._headers,f=g(a,e,b);return f?{json:f,index:c,row:a}:null}function g(a,b,c){for(var d=!1,e={},f=0,g=a.length;g>f;f++){var m,n,o;if(o=a[f],!c.ignoreEmpty||""!==o){d=!0,n=b[f],n&&""!==n||(n=b[f]="field"+(f+1));var p=h(n,f,c);if(p){var q=p(o,n,e,a,f);void 0!==q&&i(e,n,q)}else{var r=j(n,f,c);if("omit"===r)continue;c.checkType&&(m=l(o,n,f,c),o=m(o));var s=k(n,f,c);"flat"===r||c.flatKeys?e[s]=o:i(e,s,o)}}}return d?e:!1}function h(a,b,c){if(void 0!==c._columnConv[b])return c._columnConv[b];var d=c.colParser[a];if(void 0===d)return c._columnConv[b]=!1;if("string"==typeof d){d=d.trim().toLowerCase();var e=u[d];return e?c._columnConv[b]=e:c._columnConv[b]=!1}return"function"==typeof d?c._columnConv[b]=d:c._columnConv[b]=!1}function i(b,c,d){var e=a("lodash/set"),f=c.split(".");1===f.length?b[c]=d:e(b,c,d)}function j(a,b,c){return"string"==typeof c._headerFlag[b]?c._headerFlag[b]:a.indexOf("*omit*")>-1?c._headerFlag[b]="omit":a.indexOf("*flat*")>-1?c._headerFlag[b]="flat":c._headerFlag[b]=""}function k(a,b,c){if(c._headerTitle[b])return c._headerTitle[b];var d=(j(a,b,c),a.replace("*flat*","").replace("string#!","").replace("number#!",""));return c._headerTitle[b]=d}function l(a,b,c,d){return d._headerType[c]?d._headerType[c]:b.indexOf("number#!")>-1?d._headerType[c]=m:b.indexOf("string#!")>-1?d._headerType[c]=n:d.checkType?d._headerType[c]=o:d._headerType[c]=n}function m(a){var b=parseFloat(a);return isNaN(b)?a:b}function n(a){return a.toString()}function o(a){var b=a.trim();return""===b?n(a):t.test(b)?m(a):5===b.length&&"false"===b.toLowerCase()||4===b.length&&"true"===b.toLowerCase()?p(a):"{"===b[0]&&"}"===b[b.length-1]||"["===b[0]&&"]"===b[b.length-1]?q(a):n(a)}function p(a){var b=a.trim();return 5===b.length&&"false"===b.toLowerCase()?!1:!0}function q(a){try{return JSON.parse(a)}catch(b){return a}}var r=a("./parserMgr.js"),s=a("./CSVError"),t=/^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;b.exports=function(a,b,c){if(b._needParseJson){if(b._headers||(b._headers=[]),!b.parseRules){var f=b._headers;b.parseRules=r.initParsers(f,b)}return e(a,b,c)}return d(a,b,c)};var u={string:n,number:m,omit:function(){}}},{"./CSVError":3,"./parserMgr.js":21,"lodash/set":131}],20:[function(a,b,c){function d(a,b,c,d){this.name="undefined"==typeof a?"Default":a,this.regExp=null,this.type="",this.processSafe=d,"undefined"!=typeof b&&("string"==typeof b?this.regExp=new RegExp(b):this.regExp=b),"undefined"!=typeof c&&(this.parse=c)}var e=["number","string"];d.prototype.convertType=function(a){var b=this.type;if("number"===b){var c=parseFloat(a);return isNaN(c)?0:c}if(this.param&&this.param.checkType&&""===b){var d=a.trim();if(""===d)return d;if(!isNaN(d))return parseFloat(d);if(5===d.length&&"false"===d.toLowerCase())return!1;if(4===d.length&&"true"===d.toLowerCase())return!0;if(!("{"===d[0]&&"}"===d[d.length-1]||"["===d[0]&&"]"===d[d.length-1]))return a;try{return JSON.parse(d)}catch(e){return a}}return a},d.prototype.setParam=function(a){this.param=a},d.prototype.test=function(a){return this.regExp&&this.regExp.test(a)},d.prototype.parse=function(a){a.resultRow[a.head]=a.item},d.prototype.getHeadStr=function(){if(this.headStr)return this.headStr;var a=this.head;return this.headStr=a.replace(this.regExp,""),this.headStr||(this.headStr="Unknown Header"),this.getHeadStr()},d.prototype.getHead=function(){return this.head},d.prototype.initHead=function(a){this.head=a;var b=a.replace(this.regExp,""),c=b.split("#!");if(1===c.length)this.headStr=c[0];else{var d=c.shift();e.indexOf(d.toLowerCase())>-1?(this.type=d,this.headStr=c.join("#!")):this.headStr=b}this.headStr||(this.headStr=b?b:"Unknown Head")},d.prototype.clone=function(){var a=Object.create(this),b=new d;for(var c in a)b[c]=a[c];return b},d.prototype.getName=function(){return this.name},b.exports=d},{}],21:[function(a,b,c){function d(a){a instanceof i&&-1===h.indexOf(a)&&h.push(a)}function e(a,b){function c(a){var b;if(h.forEach(function(c){c.getName()===a&&(b=c)}),b){var c=b.clone();return c}return new i}var d,e;return a=a?a:"",h.forEach(function(b){b.test(a)&&(e=b)}),e?(d=e.clone(),d.head=a):d=c("json",a),d.setParam(b),d.initHead(a),d}function f(a,b,c){var e=new i(a,b,c,!1);d(e)}function g(a,b){var c=[];return a.forEach(function(a){c.push(e(a,b))}),c}var h=[],i=a("./parser.js"),j=a("./defaultParsers");j.forEach(function(a){f(a.name,a.regExp,a.parserFunc,a.processSafe)}),b.exports.addParser=f,b.exports.initParsers=g,b.exports.getParser=e},{"./defaultParsers":7,"./parser.js":20}],22:[function(a,b,c){function d(a,b){var c=b.quote,d=b.escape;return a[0]===c&&(a[1]!==c||a[1]===d&&(a[2]===c||2===a.length))}function e(a,b){for(var c=b.quote,d=0,e=a.length-1,f=b.escape;a[e]===c||a[e]===f;)e--,d++;return d%2!==0}function f(a,b,c){var d="es|"+b+"|"+c;void 0===i[d]&&("\\"===c&&(c="\\\\"),i[d]=new RegExp(c+b,"g"));var e=i[d];return a.replace(e,b)}var g=a("./getDelimiter"),h=a("./filterRow");b.exports=function(a,b){if(""===a)return{cols:[],closed:!0};var c=b.quote,i=b.trim,j=b.escape;(b.delimiter instanceof Array||"auto"===b.delimiter.toLowerCase())&&(b.delimiter=g(a,b));var k=b.delimiter,l=a.split(k);if("off"===c)return{cols:l,closed:!0};for(var m=[],n=!1,o="",p=0,q=l.length;q>p;p++){var r=l[p];!n&&i&&(r=r.trim());var s=r.length;if(n)e(r,b)?(n=!1,r=r.substr(0,s-1),o+=k+r,o=f(o,c,j),i&&(o=o.trimRight()),m.push(o),o=""):o+=k+r;else{if(d(r,b)){if(r=r.substr(1),e(r,b)){r=r.substring(0,r.length-1),r=f(r,c,j),m.push(r);continue}n=!0,o+=r;continue}m.push(r)}}return!n&&b._needFilterRow&&(m=h(m,b)),{cols:m,closed:!n}};var i={}},{"./filterRow":15,"./getDelimiter":16}],23:[function(a,b,c){(function(c,d){function e(){function a(a,b){i=[],j=0,k=null;for(var c=0;a>c;c++)i.push(new f(b))}function b(){return j>0}function d(){i.forEach(function(a){a.destroy()})}function e(a,b,d,f){if(i.length>0){var g=i.shift();j++,g.parse(a,b,function(a){i.push(g),f(a,b),j--,null===k&&0===j?h.drain():k&&(e.apply(this,k),k=null)}),c.nextTick(d)}else k=[a,b,d,f]}function g(a){i.forEach(function(b){b.setParams(a)})}var h={initWorker:a,sendWorker:e,setParams:g,drain:function(){},isRunning:b,destroyWorker:d},i=[],j=0,k=null;return h}function f(a){this.cp=g(c.execPath,[d+"/worker.js"],{env:{child:!0},stdio:["pipe","pipe",2,"ipc"]}),this.setParams(a),this.cp.on("message",this.onChildMsg.bind(this)),this.buffer="";var b=this;this.cp.stdout.on("data",function(a){for(var c=a.toString("utf8"),d=b.buffer+c,e=d.split(h);e.length>1;)b.onChildMsg(e.shift());b.buffer=e[0]})}b.exports=e;var g=a("child_process").spawn,h="",i="",j="",k=a("./CSVError");f.prototype.setParams=function(a){var b="0"+JSON.stringify(a);this.sendMsg(b)},f.prototype.onChildMsg=function(a){if(a){var b=a[0],c=a.substr(1);switch(b){case"0":if(this.cbLine){var d=c.split("|"),e=parseInt(d[0]),f=d[1];this.cbLine(e,f)}break;case"1":if(this.cbResult){var g=c.split(i);g.pop();var h=[];g.forEach(function(a){var b=a.split(j);h.push({index:b[0],row:b[1],err:b[2]?k.fromArray(JSON.parse(b[2])):null,json:b[3]})}),this.cbResult(h)}}}},f.prototype.parse=function(a,b,c){this.cbResult=c;var d="1"+b+"|"+a;this.sendMsg(d)},f.prototype.destroy=function(){this.cp.kill()},f.prototype.sendMsg=function(a){this.cp.stdin.write(a+h,"utf8")}}).call(this,a("_process"),"/libs/core")},{"./CSVError":3,_process:42,child_process:31}],24:[function(a,b,c){b.exports.core=a("./core"),b.exports=a("./core"),b.exports.interfaces=a("./interfaces")},{"./core":18,"./interfaces":27}],25:[function(a,b,c){b.exports=a("./main.js")},{"./main.js":26}],26:[function(a,b,c){(function(c){function d(){var a=new g,b=!1,d=c.stdout;return a.on("record_parsed",function(a){b&&d.write(",\n"),d.write(JSON.stringify(a)),b===!1&&(b=!0)}),d.write("[\n"),a.on("end_parsed",function(){d.write("\n]")}),a.on("error",function(a){console.error(a),c.exit(-1)}),a}function e(a){var b=d();b.from(a)}function f(a){var b=d();b.from(a)}var g=a("../../core/Converter.js");b.exports.convertFile=e,b.exports.convertString=f}).call(this,a("_process"))},{"../../core/Converter.js":4,_process:42}],27:[function(a,b,c){b.exports.web=a("./web"),b.exports.cli=a("./cli")},{"./cli":25,"./web":28}],28:[function(a,b,c){b.exports=a("./webServer.js")},{"./webServer.js":29}],29:[function(a,b,c){function d(a){a=a||{};var b={port:a.port||"8801",urlpath:a.urlpath||"/parseCSV"},c=e.createServer();return c.on("request",function(a,c){a.url===b.urlpath&&"POST"===a.method?a.pipe(new f({constructResult:!1})).pipe(c):c.end("Please post data to: "+b.urlpath)}),c.listen(b.port),console.log("CSV Web Server Listen On:"+b.port),console.log("POST to "+b.urlpath+" with CSV data to get parsed."),c}var e=a("http"),f=a("../../core/Converter.js");b.exports.startWebServer=d},{"../../core/Converter.js":4,http:61}],30:[function(a,b,c){(function(c){"use strict";function d(a,b){function d(b){return this instanceof d?(f.call(this,b),this._firstChunk=!0,this._transformCalled=!1,void(this._minSize=a.minSize)):new d(b)}if(e.inherits(d,f),"function"==typeof a&&(b=a,a={}),"function"!=typeof b)throw new Error("transform function required");return d.prototype._transform=function(a,d,e){return this._enc=d,this._firstChunk?(this._firstChunk=!1,null==this._minSize?(b.call(this,a,d,e),void(this._transformCalled=!0)):(this._buffer=a,void e())):null==this._minSize?(this.push(a),void e()):this._buffer.length<this._minSize?(this._buffer=c.concat([this._buffer,a]),void e()):this._buffer.length>=this._minSize?(b.call(this,this._buffer.slice(),d,function(){this.push(a),e()}.bind(this)),this._transformCalled=!0,void(this._buffer=!1)):(this.push(a),void e())},d.prototype._flush=function(a){return this._buffer?void(this._transformCalled?(this.push(this._buffer),a()):b.call(this,this._buffer.slice(),this._enc,a)):void a()},d}var e=a("util"),f=a("stream").Transform;b.exports=function(){return d.apply(d,arguments)()},b.exports.ctor=d}).call(this,a("buffer").Buffer)},{buffer:33,stream:60,util:73}],31:[function(a,b,c){},{}],32:[function(a,b,c){arguments[4][31][0].apply(c,arguments)},{dup:31}],33:[function(a,b,c){(function(b){"use strict";function d(){function a(){}try{var b=new Uint8Array(1);return b.foo=function(){return 42},b.constructor=a,42===b.foo()&&b.constructor===a&&"function"==typeof b.subarray&&0===b.subarray(1,1).byteLength}catch(c){return!1}}function e(){return f.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function f(a){return this instanceof f?(f.TYPED_ARRAY_SUPPORT||(this.length=0,this.parent=void 0),"number"==typeof a?g(this,a):"string"==typeof a?h(this,a,arguments.length>1?arguments[1]:"utf8"):i(this,a)):arguments.length>1?new f(a,arguments[1]):new f(a)}function g(a,b){if(a=p(a,0>b?0:0|q(b)),!f.TYPED_ARRAY_SUPPORT)for(var c=0;b>c;c++)a[c]=0;return a}function h(a,b,c){("string"!=typeof c||""===c)&&(c="utf8");var d=0|s(b,c);return a=p(a,d),a.write(b,c),a}function i(a,b){if(f.isBuffer(b))return j(a,b);if(Y(b))return k(a,b);if(null==b)throw new TypeError("must start with number, buffer, array or string");if("undefined"!=typeof ArrayBuffer){if(b.buffer instanceof ArrayBuffer)return l(a,b);if(b instanceof ArrayBuffer)return m(a,b)}return b.length?n(a,b):o(a,b)}function j(a,b){var c=0|q(b.length);return a=p(a,c),b.copy(a,0,0,c),a}function k(a,b){var c=0|q(b.length);a=p(a,c);for(var d=0;c>d;d+=1)a[d]=255&b[d];return a}function l(a,b){var c=0|q(b.length);a=p(a,c);for(var d=0;c>d;d+=1)a[d]=255&b[d];return a}function m(a,b){return f.TYPED_ARRAY_SUPPORT?(b.byteLength,a=f._augment(new Uint8Array(b))):a=l(a,new Uint8Array(b)),a}function n(a,b){var c=0|q(b.length);a=p(a,c);for(var d=0;c>d;d+=1)a[d]=255&b[d];return a}function o(a,b){var c,d=0;"Buffer"===b.type&&Y(b.data)&&(c=b.data,d=0|q(c.length)),a=p(a,d);for(var e=0;d>e;e+=1)a[e]=255&c[e];return a}function p(a,b){f.TYPED_ARRAY_SUPPORT?(a=f._augment(new Uint8Array(b)),a.__proto__=f.prototype):(a.length=b,a._isBuffer=!0);var c=0!==b&&b<=f.poolSize>>>1;return c&&(a.parent=Z),a}function q(a){if(a>=e())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+e().toString(16)+" bytes");return 0|a}function r(a,b){if(!(this instanceof r))return new r(a,b);var c=new f(a,b);return delete c.parent,c}function s(a,b){"string"!=typeof a&&(a=""+a);var c=a.length;if(0===c)return 0;for(var d=!1;;)switch(b){case"ascii":case"binary":case"raw":case"raws":return c;case"utf8":case"utf-8":return R(a).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*c;case"hex":return c>>>1;case"base64":return U(a).length;default:if(d)return R(a).length;b=(""+b).toLowerCase(),d=!0}}function t(a,b,c){var d=!1;if(b=0|b,c=void 0===c||c===1/0?this.length:0|c,a||(a="utf8"),0>b&&(b=0),c>this.length&&(c=this.length),b>=c)return"";for(;;)switch(a){case"hex":return F(this,b,c);case"utf8":case"utf-8":return B(this,b,c);case"ascii":return D(this,b,c);case"binary":return E(this,b,c);case"base64":return A(this,b,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return G(this,b,c);default:if(d)throw new TypeError("Unknown encoding: "+a);a=(a+"").toLowerCase(),d=!0}}function u(a,b,c,d){c=Number(c)||0;var e=a.length-c;d?(d=Number(d),d>e&&(d=e)):d=e;var f=b.length;if(f%2!==0)throw new Error("Invalid hex string");d>f/2&&(d=f/2);for(var g=0;d>g;g++){var h=parseInt(b.substr(2*g,2),16);if(isNaN(h))throw new Error("Invalid hex string");a[c+g]=h}return g}function v(a,b,c,d){return V(R(b,a.length-c),a,c,d)}function w(a,b,c,d){return V(S(b),a,c,d)}function x(a,b,c,d){return w(a,b,c,d)}function y(a,b,c,d){return V(U(b),a,c,d)}function z(a,b,c,d){return V(T(b,a.length-c),a,c,d)}function A(a,b,c){return 0===b&&c===a.length?W.fromByteArray(a):W.fromByteArray(a.slice(b,c))}function B(a,b,c){c=Math.min(a.length,c);for(var d=[],e=b;c>e;){var f=a[e],g=null,h=f>239?4:f>223?3:f>191?2:1;if(c>=e+h){var i,j,k,l;switch(h){case 1:128>f&&(g=f);break;case 2:i=a[e+1],128===(192&i)&&(l=(31&f)<<6|63&i,l>127&&(g=l));break;case 3:i=a[e+1],j=a[e+2],128===(192&i)&&128===(192&j)&&(l=(15&f)<<12|(63&i)<<6|63&j,l>2047&&(55296>l||l>57343)&&(g=l));break;case 4:i=a[e+1],j=a[e+2],k=a[e+3],128===(192&i)&&128===(192&j)&&128===(192&k)&&(l=(15&f)<<18|(63&i)<<12|(63&j)<<6|63&k,l>65535&&1114112>l&&(g=l))}}null===g?(g=65533,h=1):g>65535&&(g-=65536,d.push(g>>>10&1023|55296),g=56320|1023&g),d.push(g),e+=h}return C(d)}function C(a){var b=a.length;if($>=b)return String.fromCharCode.apply(String,a);for(var c="",d=0;b>d;)c+=String.fromCharCode.apply(String,a.slice(d,d+=$));return c}function D(a,b,c){var d="";c=Math.min(a.length,c);for(var e=b;c>e;e++)d+=String.fromCharCode(127&a[e]);return d}function E(a,b,c){var d="";c=Math.min(a.length,c);for(var e=b;c>e;e++)d+=String.fromCharCode(a[e]);return d}function F(a,b,c){var d=a.length;(!b||0>b)&&(b=0),(!c||0>c||c>d)&&(c=d);for(var e="",f=b;c>f;f++)e+=Q(a[f]);return e}function G(a,b,c){for(var d=a.slice(b,c),e="",f=0;f<d.length;f+=2)e+=String.fromCharCode(d[f]+256*d[f+1]);return e}function H(a,b,c){if(a%1!==0||0>a)throw new RangeError("offset is not uint");if(a+b>c)throw new RangeError("Trying to access beyond buffer length")}function I(a,b,c,d,e,g){if(!f.isBuffer(a))throw new TypeError("buffer must be a Buffer instance");if(b>e||g>b)throw new RangeError("value is out of bounds");if(c+d>a.length)throw new RangeError("index out of range")}function J(a,b,c,d){0>b&&(b=65535+b+1);for(var e=0,f=Math.min(a.length-c,2);f>e;e++)a[c+e]=(b&255<<8*(d?e:1-e))>>>8*(d?e:1-e)}function K(a,b,c,d){0>b&&(b=4294967295+b+1);for(var e=0,f=Math.min(a.length-c,4);f>e;e++)a[c+e]=b>>>8*(d?e:3-e)&255}function L(a,b,c,d,e,f){if(b>e||f>b)throw new RangeError("value is out of bounds");if(c+d>a.length)throw new RangeError("index out of range");if(0>c)throw new RangeError("index out of range")}function M(a,b,c,d,e){return e||L(a,b,c,4,3.4028234663852886e38,-3.4028234663852886e38),X.write(a,b,c,d,23,4),c+4}function N(a,b,c,d,e){return e||L(a,b,c,8,1.7976931348623157e308,-1.7976931348623157e308),X.write(a,b,c,d,52,8),c+8}function O(a){if(a=P(a).replace(aa,""),a.length<2)return"";for(;a.length%4!==0;)a+="=";return a}function P(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function Q(a){return 16>a?"0"+a.toString(16):a.toString(16)}function R(a,b){b=b||1/0;for(var c,d=a.length,e=null,f=[],g=0;d>g;g++){if(c=a.charCodeAt(g),c>55295&&57344>c){if(!e){if(c>56319){(b-=3)>-1&&f.push(239,191,189);continue}if(g+1===d){(b-=3)>-1&&f.push(239,191,189);continue}e=c;continue}if(56320>c){(b-=3)>-1&&f.push(239,191,189),e=c;continue}c=(e-55296<<10|c-56320)+65536}else e&&(b-=3)>-1&&f.push(239,191,189);if(e=null,128>c){if((b-=1)<0)break;f.push(c)}else if(2048>c){if((b-=2)<0)break;f.push(c>>6|192,63&c|128)}else if(65536>c){if((b-=3)<0)break;f.push(c>>12|224,c>>6&63|128,63&c|128)}else{if(!(1114112>c))throw new Error("Invalid code point");if((b-=4)<0)break;f.push(c>>18|240,c>>12&63|128,c>>6&63|128,63&c|128)}}return f}function S(a){for(var b=[],c=0;c<a.length;c++)b.push(255&a.charCodeAt(c));return b}function T(a,b){for(var c,d,e,f=[],g=0;g<a.length&&!((b-=2)<0);g++)c=a.charCodeAt(g),d=c>>8,e=c%256,f.push(e),f.push(d);return f}function U(a){return W.toByteArray(O(a))}function V(a,b,c,d){for(var e=0;d>e&&!(e+c>=b.length||e>=a.length);e++)b[e+c]=a[e];return e}var W=a("base64-js"),X=a("ieee754"),Y=a("isarray");c.Buffer=f,c.SlowBuffer=r,c.INSPECT_MAX_BYTES=50,f.poolSize=8192;var Z={};f.TYPED_ARRAY_SUPPORT=void 0!==b.TYPED_ARRAY_SUPPORT?b.TYPED_ARRAY_SUPPORT:d(),f.TYPED_ARRAY_SUPPORT?(f.prototype.__proto__=Uint8Array.prototype,f.__proto__=Uint8Array):(f.prototype.length=void 0,f.prototype.parent=void 0),f.isBuffer=function(a){return!(null==a||!a._isBuffer);
-},f.compare=function(a,b){if(!f.isBuffer(a)||!f.isBuffer(b))throw new TypeError("Arguments must be Buffers");if(a===b)return 0;for(var c=a.length,d=b.length,e=0,g=Math.min(c,d);g>e&&a[e]===b[e];)++e;return e!==g&&(c=a[e],d=b[e]),d>c?-1:c>d?1:0},f.isEncoding=function(a){switch(String(a).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},f.concat=function(a,b){if(!Y(a))throw new TypeError("list argument must be an Array of Buffers.");if(0===a.length)return new f(0);var c;if(void 0===b)for(b=0,c=0;c<a.length;c++)b+=a[c].length;var d=new f(b),e=0;for(c=0;c<a.length;c++){var g=a[c];g.copy(d,e),e+=g.length}return d},f.byteLength=s,f.prototype.toString=function(){var a=0|this.length;return 0===a?"":0===arguments.length?B(this,0,a):t.apply(this,arguments)},f.prototype.equals=function(a){if(!f.isBuffer(a))throw new TypeError("Argument must be a Buffer");return this===a?!0:0===f.compare(this,a)},f.prototype.inspect=function(){var a="",b=c.INSPECT_MAX_BYTES;return this.length>0&&(a=this.toString("hex",0,b).match(/.{2}/g).join(" "),this.length>b&&(a+=" ... ")),"<Buffer "+a+">"},f.prototype.compare=function(a){if(!f.isBuffer(a))throw new TypeError("Argument must be a Buffer");return this===a?0:f.compare(this,a)},f.prototype.indexOf=function(a,b){function c(a,b,c){for(var d=-1,e=0;c+e<a.length;e++)if(a[c+e]===b[-1===d?0:e-d]){if(-1===d&&(d=e),e-d+1===b.length)return c+d}else d=-1;return-1}if(b>2147483647?b=2147483647:-2147483648>b&&(b=-2147483648),b>>=0,0===this.length)return-1;if(b>=this.length)return-1;if(0>b&&(b=Math.max(this.length+b,0)),"string"==typeof a)return 0===a.length?-1:String.prototype.indexOf.call(this,a,b);if(f.isBuffer(a))return c(this,a,b);if("number"==typeof a)return f.TYPED_ARRAY_SUPPORT&&"function"===Uint8Array.prototype.indexOf?Uint8Array.prototype.indexOf.call(this,a,b):c(this,[a],b);throw new TypeError("val must be string, number or Buffer")},f.prototype.get=function(a){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(a)},f.prototype.set=function(a,b){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(a,b)},f.prototype.write=function(a,b,c,d){if(void 0===b)d="utf8",c=this.length,b=0;else if(void 0===c&&"string"==typeof b)d=b,c=this.length,b=0;else if(isFinite(b))b=0|b,isFinite(c)?(c=0|c,void 0===d&&(d="utf8")):(d=c,c=void 0);else{var e=d;d=b,b=0|c,c=e}var f=this.length-b;if((void 0===c||c>f)&&(c=f),a.length>0&&(0>c||0>b)||b>this.length)throw new RangeError("attempt to write outside buffer bounds");d||(d="utf8");for(var g=!1;;)switch(d){case"hex":return u(this,a,b,c);case"utf8":case"utf-8":return v(this,a,b,c);case"ascii":return w(this,a,b,c);case"binary":return x(this,a,b,c);case"base64":return y(this,a,b,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return z(this,a,b,c);default:if(g)throw new TypeError("Unknown encoding: "+d);d=(""+d).toLowerCase(),g=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;f.prototype.slice=function(a,b){var c=this.length;a=~~a,b=void 0===b?c:~~b,0>a?(a+=c,0>a&&(a=0)):a>c&&(a=c),0>b?(b+=c,0>b&&(b=0)):b>c&&(b=c),a>b&&(b=a);var d;if(f.TYPED_ARRAY_SUPPORT)d=f._augment(this.subarray(a,b));else{var e=b-a;d=new f(e,void 0);for(var g=0;e>g;g++)d[g]=this[g+a]}return d.length&&(d.parent=this.parent||this),d},f.prototype.readUIntLE=function(a,b,c){a=0|a,b=0|b,c||H(a,b,this.length);for(var d=this[a],e=1,f=0;++f<b&&(e*=256);)d+=this[a+f]*e;return d},f.prototype.readUIntBE=function(a,b,c){a=0|a,b=0|b,c||H(a,b,this.length);for(var d=this[a+--b],e=1;b>0&&(e*=256);)d+=this[a+--b]*e;return d},f.prototype.readUInt8=function(a,b){return b||H(a,1,this.length),this[a]},f.prototype.readUInt16LE=function(a,b){return b||H(a,2,this.length),this[a]|this[a+1]<<8},f.prototype.readUInt16BE=function(a,b){return b||H(a,2,this.length),this[a]<<8|this[a+1]},f.prototype.readUInt32LE=function(a,b){return b||H(a,4,this.length),(this[a]|this[a+1]<<8|this[a+2]<<16)+16777216*this[a+3]},f.prototype.readUInt32BE=function(a,b){return b||H(a,4,this.length),16777216*this[a]+(this[a+1]<<16|this[a+2]<<8|this[a+3])},f.prototype.readIntLE=function(a,b,c){a=0|a,b=0|b,c||H(a,b,this.length);for(var d=this[a],e=1,f=0;++f<b&&(e*=256);)d+=this[a+f]*e;return e*=128,d>=e&&(d-=Math.pow(2,8*b)),d},f.prototype.readIntBE=function(a,b,c){a=0|a,b=0|b,c||H(a,b,this.length);for(var d=b,e=1,f=this[a+--d];d>0&&(e*=256);)f+=this[a+--d]*e;return e*=128,f>=e&&(f-=Math.pow(2,8*b)),f},f.prototype.readInt8=function(a,b){return b||H(a,1,this.length),128&this[a]?-1*(255-this[a]+1):this[a]},f.prototype.readInt16LE=function(a,b){b||H(a,2,this.length);var c=this[a]|this[a+1]<<8;return 32768&c?4294901760|c:c},f.prototype.readInt16BE=function(a,b){b||H(a,2,this.length);var c=this[a+1]|this[a]<<8;return 32768&c?4294901760|c:c},f.prototype.readInt32LE=function(a,b){return b||H(a,4,this.length),this[a]|this[a+1]<<8|this[a+2]<<16|this[a+3]<<24},f.prototype.readInt32BE=function(a,b){return b||H(a,4,this.length),this[a]<<24|this[a+1]<<16|this[a+2]<<8|this[a+3]},f.prototype.readFloatLE=function(a,b){return b||H(a,4,this.length),X.read(this,a,!0,23,4)},f.prototype.readFloatBE=function(a,b){return b||H(a,4,this.length),X.read(this,a,!1,23,4)},f.prototype.readDoubleLE=function(a,b){return b||H(a,8,this.length),X.read(this,a,!0,52,8)},f.prototype.readDoubleBE=function(a,b){return b||H(a,8,this.length),X.read(this,a,!1,52,8)},f.prototype.writeUIntLE=function(a,b,c,d){a=+a,b=0|b,c=0|c,d||I(this,a,b,c,Math.pow(2,8*c),0);var e=1,f=0;for(this[b]=255&a;++f<c&&(e*=256);)this[b+f]=a/e&255;return b+c},f.prototype.writeUIntBE=function(a,b,c,d){a=+a,b=0|b,c=0|c,d||I(this,a,b,c,Math.pow(2,8*c),0);var e=c-1,f=1;for(this[b+e]=255&a;--e>=0&&(f*=256);)this[b+e]=a/f&255;return b+c},f.prototype.writeUInt8=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,1,255,0),f.TYPED_ARRAY_SUPPORT||(a=Math.floor(a)),this[b]=255&a,b+1},f.prototype.writeUInt16LE=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[b]=255&a,this[b+1]=a>>>8):J(this,a,b,!0),b+2},f.prototype.writeUInt16BE=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=255&a):J(this,a,b,!1),b+2},f.prototype.writeUInt32LE=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[b+3]=a>>>24,this[b+2]=a>>>16,this[b+1]=a>>>8,this[b]=255&a):K(this,a,b,!0),b+4},f.prototype.writeUInt32BE=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=255&a):K(this,a,b,!1),b+4},f.prototype.writeIntLE=function(a,b,c,d){if(a=+a,b=0|b,!d){var e=Math.pow(2,8*c-1);I(this,a,b,c,e-1,-e)}var f=0,g=1,h=0>a?1:0;for(this[b]=255&a;++f<c&&(g*=256);)this[b+f]=(a/g>>0)-h&255;return b+c},f.prototype.writeIntBE=function(a,b,c,d){if(a=+a,b=0|b,!d){var e=Math.pow(2,8*c-1);I(this,a,b,c,e-1,-e)}var f=c-1,g=1,h=0>a?1:0;for(this[b+f]=255&a;--f>=0&&(g*=256);)this[b+f]=(a/g>>0)-h&255;return b+c},f.prototype.writeInt8=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,1,127,-128),f.TYPED_ARRAY_SUPPORT||(a=Math.floor(a)),0>a&&(a=255+a+1),this[b]=255&a,b+1},f.prototype.writeInt16LE=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[b]=255&a,this[b+1]=a>>>8):J(this,a,b,!0),b+2},f.prototype.writeInt16BE=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=255&a):J(this,a,b,!1),b+2},f.prototype.writeInt32LE=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,4,2147483647,-2147483648),f.TYPED_ARRAY_SUPPORT?(this[b]=255&a,this[b+1]=a>>>8,this[b+2]=a>>>16,this[b+3]=a>>>24):K(this,a,b,!0),b+4},f.prototype.writeInt32BE=function(a,b,c){return a=+a,b=0|b,c||I(this,a,b,4,2147483647,-2147483648),0>a&&(a=4294967295+a+1),f.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=255&a):K(this,a,b,!1),b+4},f.prototype.writeFloatLE=function(a,b,c){return M(this,a,b,!0,c)},f.prototype.writeFloatBE=function(a,b,c){return M(this,a,b,!1,c)},f.prototype.writeDoubleLE=function(a,b,c){return N(this,a,b,!0,c)},f.prototype.writeDoubleBE=function(a,b,c){return N(this,a,b,!1,c)},f.prototype.copy=function(a,b,c,d){if(c||(c=0),d||0===d||(d=this.length),b>=a.length&&(b=a.length),b||(b=0),d>0&&c>d&&(d=c),d===c)return 0;if(0===a.length||0===this.length)return 0;if(0>b)throw new RangeError("targetStart out of bounds");if(0>c||c>=this.length)throw new RangeError("sourceStart out of bounds");if(0>d)throw new RangeError("sourceEnd out of bounds");d>this.length&&(d=this.length),a.length-b<d-c&&(d=a.length-b+c);var e,g=d-c;if(this===a&&b>c&&d>b)for(e=g-1;e>=0;e--)a[e+b]=this[e+c];else if(1e3>g||!f.TYPED_ARRAY_SUPPORT)for(e=0;g>e;e++)a[e+b]=this[e+c];else a._set(this.subarray(c,c+g),b);return g},f.prototype.fill=function(a,b,c){if(a||(a=0),b||(b=0),c||(c=this.length),b>c)throw new RangeError("end < start");if(c!==b&&0!==this.length){if(0>b||b>=this.length)throw new RangeError("start out of bounds");if(0>c||c>this.length)throw new RangeError("end out of bounds");var d;if("number"==typeof a)for(d=b;c>d;d++)this[d]=a;else{var e=R(a.toString()),f=e.length;for(d=b;c>d;d++)this[d]=e[d%f]}return this}},f.prototype.toArrayBuffer=function(){if("undefined"!=typeof Uint8Array){if(f.TYPED_ARRAY_SUPPORT)return new f(this).buffer;for(var a=new Uint8Array(this.length),b=0,c=a.length;c>b;b+=1)a[b]=this[b];return a.buffer}throw new TypeError("Buffer.toArrayBuffer not supported in this browser")};var _=f.prototype;f._augment=function(a){return a.constructor=f,a._isBuffer=!0,a._set=a.set,a.get=_.get,a.set=_.set,a.write=_.write,a.toString=_.toString,a.toLocaleString=_.toString,a.toJSON=_.toJSON,a.equals=_.equals,a.compare=_.compare,a.indexOf=_.indexOf,a.copy=_.copy,a.slice=_.slice,a.readUIntLE=_.readUIntLE,a.readUIntBE=_.readUIntBE,a.readUInt8=_.readUInt8,a.readUInt16LE=_.readUInt16LE,a.readUInt16BE=_.readUInt16BE,a.readUInt32LE=_.readUInt32LE,a.readUInt32BE=_.readUInt32BE,a.readIntLE=_.readIntLE,a.readIntBE=_.readIntBE,a.readInt8=_.readInt8,a.readInt16LE=_.readInt16LE,a.readInt16BE=_.readInt16BE,a.readInt32LE=_.readInt32LE,a.readInt32BE=_.readInt32BE,a.readFloatLE=_.readFloatLE,a.readFloatBE=_.readFloatBE,a.readDoubleLE=_.readDoubleLE,a.readDoubleBE=_.readDoubleBE,a.writeUInt8=_.writeUInt8,a.writeUIntLE=_.writeUIntLE,a.writeUIntBE=_.writeUIntBE,a.writeUInt16LE=_.writeUInt16LE,a.writeUInt16BE=_.writeUInt16BE,a.writeUInt32LE=_.writeUInt32LE,a.writeUInt32BE=_.writeUInt32BE,a.writeIntLE=_.writeIntLE,a.writeIntBE=_.writeIntBE,a.writeInt8=_.writeInt8,a.writeInt16LE=_.writeInt16LE,a.writeInt16BE=_.writeInt16BE,a.writeInt32LE=_.writeInt32LE,a.writeInt32BE=_.writeInt32BE,a.writeFloatLE=_.writeFloatLE,a.writeFloatBE=_.writeFloatBE,a.writeDoubleLE=_.writeDoubleLE,a.writeDoubleBE=_.writeDoubleBE,a.fill=_.fill,a.inspect=_.inspect,a.toArrayBuffer=_.toArrayBuffer,a};var aa=/[^+\/0-9A-Za-z-_]/g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"base64-js":34,ieee754:35,isarray:36}],34:[function(a,b,c){var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";!function(a){"use strict";function b(a){var b=a.charCodeAt(0);return b===g||b===l?62:b===h||b===m?63:i>b?-1:i+10>b?b-i+26+26:k+26>b?b-k:j+26>b?b-j+26:void 0}function c(a){function c(a){j[l++]=a}var d,e,g,h,i,j;if(a.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var k=a.length;i="="===a.charAt(k-2)?2:"="===a.charAt(k-1)?1:0,j=new f(3*a.length/4-i),g=i>0?a.length-4:a.length;var l=0;for(d=0,e=0;g>d;d+=4,e+=3)h=b(a.charAt(d))<<18|b(a.charAt(d+1))<<12|b(a.charAt(d+2))<<6|b(a.charAt(d+3)),c((16711680&h)>>16),c((65280&h)>>8),c(255&h);return 2===i?(h=b(a.charAt(d))<<2|b(a.charAt(d+1))>>4,c(255&h)):1===i&&(h=b(a.charAt(d))<<10|b(a.charAt(d+1))<<4|b(a.charAt(d+2))>>2,c(h>>8&255),c(255&h)),j}function e(a){function b(a){return d.charAt(a)}function c(a){return b(a>>18&63)+b(a>>12&63)+b(a>>6&63)+b(63&a)}var e,f,g,h=a.length%3,i="";for(e=0,g=a.length-h;g>e;e+=3)f=(a[e]<<16)+(a[e+1]<<8)+a[e+2],i+=c(f);switch(h){case 1:f=a[a.length-1],i+=b(f>>2),i+=b(f<<4&63),i+="==";break;case 2:f=(a[a.length-2]<<8)+a[a.length-1],i+=b(f>>10),i+=b(f>>4&63),i+=b(f<<2&63),i+="="}return i}var f="undefined"!=typeof Uint8Array?Uint8Array:Array,g="+".charCodeAt(0),h="/".charCodeAt(0),i="0".charCodeAt(0),j="a".charCodeAt(0),k="A".charCodeAt(0),l="-".charCodeAt(0),m="_".charCodeAt(0);a.toByteArray=c,a.fromByteArray=e}("undefined"==typeof c?this.base64js={}:c)},{}],35:[function(a,b,c){c.read=function(a,b,c,d,e){var f,g,h=8*e-d-1,i=(1<<h)-1,j=i>>1,k=-7,l=c?e-1:0,m=c?-1:1,n=a[b+l];for(l+=m,f=n&(1<<-k)-1,n>>=-k,k+=h;k>0;f=256*f+a[b+l],l+=m,k-=8);for(g=f&(1<<-k)-1,f>>=-k,k+=d;k>0;g=256*g+a[b+l],l+=m,k-=8);if(0===f)f=1-j;else{if(f===i)return g?NaN:(n?-1:1)*(1/0);g+=Math.pow(2,d),f-=j}return(n?-1:1)*g*Math.pow(2,f-d)},c.write=function(a,b,c,d,e,f){var g,h,i,j=8*f-e-1,k=(1<<j)-1,l=k>>1,m=23===e?Math.pow(2,-24)-Math.pow(2,-77):0,n=d?0:f-1,o=d?1:-1,p=0>b||0===b&&0>1/b?1:0;for(b=Math.abs(b),isNaN(b)||b===1/0?(h=isNaN(b)?1:0,g=k):(g=Math.floor(Math.log(b)/Math.LN2),b*(i=Math.pow(2,-g))<1&&(g--,i*=2),b+=g+l>=1?m/i:m*Math.pow(2,1-l),b*i>=2&&(g++,i/=2),g+l>=k?(h=0,g=k):g+l>=1?(h=(b*i-1)*Math.pow(2,e),g+=l):(h=b*Math.pow(2,l-1)*Math.pow(2,e),g=0));e>=8;a[c+n]=255&h,n+=o,h/=256,e-=8);for(g=g<<e|h,j+=e;j>0;a[c+n]=255&g,n+=o,g/=256,j-=8);a[c+n-o]|=128*p}},{}],36:[function(a,b,c){var d={}.toString;b.exports=Array.isArray||function(a){return"[object Array]"==d.call(a)}},{}],37:[function(a,b,c){function d(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function e(a){return"function"==typeof a}function f(a){return"number"==typeof a}function g(a){return"object"==typeof a&&null!==a}function h(a){return void 0===a}b.exports=d,d.EventEmitter=d,d.prototype._events=void 0,d.prototype._maxListeners=void 0,d.defaultMaxListeners=10,d.prototype.setMaxListeners=function(a){if(!f(a)||0>a||isNaN(a))throw TypeError("n must be a positive number");return this._maxListeners=a,this},d.prototype.emit=function(a){var b,c,d,f,i,j;if(this._events||(this._events={}),"error"===a&&(!this._events.error||g(this._events.error)&&!this._events.error.length)){if(b=arguments[1],b instanceof Error)throw b;throw TypeError('Uncaught, unspecified "error" event.')}if(c=this._events[a],h(c))return!1;if(e(c))switch(arguments.length){case 1:c.call(this);break;case 2:c.call(this,arguments[1]);break;case 3:c.call(this,arguments[1],arguments[2]);break;default:for(d=arguments.length,f=new Array(d-1),i=1;d>i;i++)f[i-1]=arguments[i];c.apply(this,f)}else if(g(c)){for(d=arguments.length,f=new Array(d-1),i=1;d>i;i++)f[i-1]=arguments[i];for(j=c.slice(),d=j.length,i=0;d>i;i++)j[i].apply(this,f)}return!0},d.prototype.addListener=function(a,b){var c;if(!e(b))throw TypeError("listener must be a function");if(this._events||(this._events={}),this._events.newListener&&this.emit("newListener",a,e(b.listener)?b.listener:b),this._events[a]?g(this._events[a])?this._events[a].push(b):this._events[a]=[this._events[a],b]:this._events[a]=b,g(this._events[a])&&!this._events[a].warned){var c;c=h(this._maxListeners)?d.defaultMaxListeners:this._maxListeners,c&&c>0&&this._events[a].length>c&&(this._events[a].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[a].length),"function"==typeof console.trace&&console.trace())}return this},d.prototype.on=d.prototype.addListener,d.prototype.once=function(a,b){function c(){this.removeListener(a,c),d||(d=!0,b.apply(this,arguments))}if(!e(b))throw TypeError("listener must be a function");var d=!1;return c.listener=b,this.on(a,c),this},d.prototype.removeListener=function(a,b){var c,d,f,h;if(!e(b))throw TypeError("listener must be a function");if(!this._events||!this._events[a])return this;if(c=this._events[a],f=c.length,d=-1,c===b||e(c.listener)&&c.listener===b)delete this._events[a],this._events.removeListener&&this.emit("removeListener",a,b);else if(g(c)){for(h=f;h-- >0;)if(c[h]===b||c[h].listener&&c[h].listener===b){d=h;break}if(0>d)return this;1===c.length?(c.length=0,delete this._events[a]):c.splice(d,1),this._events.removeListener&&this.emit("removeListener",a,b)}return this},d.prototype.removeAllListeners=function(a){var b,c;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[a]&&delete this._events[a],this;if(0===arguments.length){for(b in this._events)"removeListener"!==b&&this.removeAllListeners(b);return this.removeAllListeners("removeListener"),this._events={},this}if(c=this._events[a],e(c))this.removeListener(a,c);else for(;c.length;)this.removeListener(a,c[c.length-1]);return delete this._events[a],this},d.prototype.listeners=function(a){var b;return b=this._events&&this._events[a]?e(this._events[a])?[this._events[a]]:this._events[a].slice():[]},d.listenerCount=function(a,b){var c;return c=a._events&&a._events[b]?e(a._events[b])?1:a._events[b].length:0}},{}],38:[function(a,b,c){"function"==typeof Object.create?b.exports=function(a,b){a.super_=b,a.prototype=Object.create(b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}})}:b.exports=function(a,b){a.super_=b;var c=function(){};c.prototype=b.prototype,a.prototype=new c,a.prototype.constructor=a}},{}],39:[function(a,b,c){b.exports=function(a){return!(null==a||!(a._isBuffer||a.constructor&&"function"==typeof a.constructor.isBuffer&&a.constructor.isBuffer(a)))}},{}],40:[function(a,b,c){b.exports=Array.isArray||function(a){return"[object Array]"==Object.prototype.toString.call(a)}},{}],41:[function(a,b,c){c.endianness=function(){return"LE"},c.hostname=function(){return"undefined"!=typeof location?location.hostname:""},c.loadavg=function(){return[]},c.uptime=function(){return 0},c.freemem=function(){return Number.MAX_VALUE},c.totalmem=function(){return Number.MAX_VALUE},c.cpus=function(){return[]},c.type=function(){return"Browser"},c.release=function(){return"undefined"!=typeof navigator?navigator.appVersion:""},c.networkInterfaces=c.getNetworkInterfaces=function(){return{}},c.arch=function(){return"javascript"},c.platform=function(){return"browser"},c.tmpdir=c.tmpDir=function(){return"/tmp"},c.EOL="\n"},{}],42:[function(a,b,c){function d(){k=!1,h.length?j=h.concat(j):l=-1,j.length&&e()}function e(){if(!k){var a=setTimeout(d);k=!0;for(var b=j.length;b;){for(h=j,j=[];++l<b;)h&&h[l].run();l=-1,b=j.length}h=null,k=!1,clearTimeout(a)}}function f(a,b){this.fun=a,this.array=b}function g(){}var h,i=b.exports={},j=[],k=!1,l=-1;i.nextTick=function(a){var b=new Array(arguments.length-1);if(arguments.length>1)for(var c=1;c<arguments.length;c++)b[c-1]=arguments[c];j.push(new f(a,b)),1!==j.length||k||setTimeout(e,0)},f.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=g,i.addListener=g,i.once=g,i.off=g,i.removeListener=g,i.removeAllListeners=g,i.emit=g,i.binding=function(a){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(a){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],43:[function(a,b,c){(function(a){!function(d){function e(a){throw new RangeError(H[a])}function f(a,b){for(var c=a.length,d=[];c--;)d[c]=b(a[c]);return d}function g(a,b){var c=a.split("@"),d="";c.length>1&&(d=c[0]+"@",a=c[1]),a=a.replace(G,".");var e=a.split("."),g=f(e,b).join(".");return d+g}function h(a){for(var b,c,d=[],e=0,f=a.length;f>e;)b=a.charCodeAt(e++),b>=55296&&56319>=b&&f>e?(c=a.charCodeAt(e++),56320==(64512&c)?d.push(((1023&b)<<10)+(1023&c)+65536):(d.push(b),e--)):d.push(b);return d}function i(a){return f(a,function(a){var b="";return a>65535&&(a-=65536,b+=K(a>>>10&1023|55296),a=56320|1023&a),b+=K(a)}).join("")}function j(a){return 10>a-48?a-22:26>a-65?a-65:26>a-97?a-97:w}function k(a,b){return a+22+75*(26>a)-((0!=b)<<5)}function l(a,b,c){var d=0;for(a=c?J(a/A):a>>1,a+=J(a/b);a>I*y>>1;d+=w)a=J(a/I);return J(d+(I+1)*a/(a+z))}function m(a){var b,c,d,f,g,h,k,m,n,o,p=[],q=a.length,r=0,s=C,t=B;for(c=a.lastIndexOf(D),0>c&&(c=0),d=0;c>d;++d)a.charCodeAt(d)>=128&&e("not-basic"),p.push(a.charCodeAt(d));for(f=c>0?c+1:0;q>f;){for(g=r,h=1,k=w;f>=q&&e("invalid-input"),m=j(a.charCodeAt(f++)),(m>=w||m>J((v-r)/h))&&e("overflow"),r+=m*h,n=t>=k?x:k>=t+y?y:k-t,!(n>m);k+=w)o=w-n,h>J(v/o)&&e("overflow"),h*=o;b=p.length+1,t=l(r-g,b,0==g),J(r/b)>v-s&&e("overflow"),s+=J(r/b),r%=b,p.splice(r++,0,s)}return i(p)}function n(a){var b,c,d,f,g,i,j,m,n,o,p,q,r,s,t,u=[];for(a=h(a),q=a.length,b=C,c=0,g=B,i=0;q>i;++i)p=a[i],128>p&&u.push(K(p));for(d=f=u.length,f&&u.push(D);q>d;){for(j=v,i=0;q>i;++i)p=a[i],p>=b&&j>p&&(j=p);for(r=d+1,j-b>J((v-c)/r)&&e("overflow"),c+=(j-b)*r,b=j,i=0;q>i;++i)if(p=a[i],b>p&&++c>v&&e("overflow"),p==b){for(m=c,n=w;o=g>=n?x:n>=g+y?y:n-g,!(o>m);n+=w)t=m-o,s=w-o,u.push(K(k(o+t%s,0))),m=J(t/s);u.push(K(k(m,0))),g=l(c,r,d==f),c=0,++d}++c,++b}return u.join("")}function o(a){return g(a,function(a){return E.test(a)?m(a.slice(4).toLowerCase()):a})}function p(a){return g(a,function(a){return F.test(a)?"xn--"+n(a):a})}var q="object"==typeof c&&c&&!c.nodeType&&c,r="object"==typeof b&&b&&!b.nodeType&&b,s="object"==typeof a&&a;(s.global===s||s.window===s||s.self===s)&&(d=s);var t,u,v=2147483647,w=36,x=1,y=26,z=38,A=700,B=72,C=128,D="-",E=/^xn--/,F=/[^\x20-\x7E]/,G=/[\x2E\u3002\uFF0E\uFF61]/g,H={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},I=w-x,J=Math.floor,K=String.fromCharCode;if(t={version:"1.3.2",ucs2:{decode:h,encode:i},decode:m,encode:n,toASCII:p,toUnicode:o},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return t});else if(q&&r)if(b.exports==q)r.exports=t;else for(u in t)t.hasOwnProperty(u)&&(q[u]=t[u]);else d.punycode=t}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],44:[function(a,b,c){"use strict";function d(a,b){return Object.prototype.hasOwnProperty.call(a,b)}b.exports=function(a,b,c,f){b=b||"&",c=c||"=";var g={};if("string"!=typeof a||0===a.length)return g;var h=/\+/g;a=a.split(b);var i=1e3;f&&"number"==typeof f.maxKeys&&(i=f.maxKeys);var j=a.length;i>0&&j>i&&(j=i);for(var k=0;j>k;++k){var l,m,n,o,p=a[k].replace(h,"%20"),q=p.indexOf(c);q>=0?(l=p.substr(0,q),m=p.substr(q+1)):(l=p,m=""),n=decodeURIComponent(l),o=decodeURIComponent(m),d(g,n)?e(g[n])?g[n].push(o):g[n]=[g[n],o]:g[n]=o}return g};var e=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)}},{}],45:[function(a,b,c){"use strict";function d(a,b){if(a.map)return a.map(b);for(var c=[],d=0;d<a.length;d++)c.push(b(a[d],d));return c}var e=function(a){switch(typeof a){case"string":return a;case"boolean":return a?"true":"false";case"number":return isFinite(a)?a:"";default:return""}};b.exports=function(a,b,c,h){return b=b||"&",c=c||"=",null===a&&(a=void 0),"object"==typeof a?d(g(a),function(g){var h=encodeURIComponent(e(g))+c;return f(a[g])?d(a[g],function(a){return h+encodeURIComponent(e(a))}).join(b):h+encodeURIComponent(e(a[g]))}).join(b):h?encodeURIComponent(e(h))+c+encodeURIComponent(e(a)):""};var f=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)},g=Object.keys||function(a){var b=[];for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&b.push(c);return b}},{}],46:[function(a,b,c){"use strict";c.decode=c.parse=a("./decode"),c.encode=c.stringify=a("./encode")},{"./decode":44,"./encode":45}],47:[function(a,b,c){b.exports=a("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":48}],48:[function(a,b,c){"use strict";function d(a){return this instanceof d?(j.call(this,a),k.call(this,a),a&&a.readable===!1&&(this.readable=!1),a&&a.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,a&&a.allowHalfOpen===!1&&(this.allowHalfOpen=!1),void this.once("end",e)):new d(a)}function e(){this.allowHalfOpen||this._writableState.ended||h(f,this)}function f(a){a.end()}var g=Object.keys||function(a){var b=[];for(var c in a)b.push(c);return b};b.exports=d;var h=a("process-nextick-args"),i=a("core-util-is");i.inherits=a("inherits");var j=a("./_stream_readable"),k=a("./_stream_writable");i.inherits(d,j);for(var l=g(k.prototype),m=0;m<l.length;m++){var n=l[m];d.prototype[n]||(d.prototype[n]=k.prototype[n])}},{"./_stream_readable":50,"./_stream_writable":52,"core-util-is":53,inherits:38,"process-nextick-args":54}],49:[function(a,b,c){"use strict";function d(a){return this instanceof d?void e.call(this,a):new d(a)}b.exports=d;var e=a("./_stream_transform"),f=a("core-util-is");f.inherits=a("inherits"),f.inherits(d,e),d.prototype._transform=function(a,b,c){c(null,a)}},{"./_stream_transform":51,"core-util-is":53,inherits:38}],50:[function(a,b,c){(function(c){"use strict";function d(b,c){I=I||a("./_stream_duplex"),b=b||{},this.objectMode=!!b.objectMode,c instanceof I&&(this.objectMode=this.objectMode||!!b.readableObjectMode);var d=b.highWaterMark,e=this.objectMode?16:16384;this.highWaterMark=d||0===d?d:e,this.highWaterMark=~~this.highWaterMark,this.buffer=[],this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.defaultEncoding=b.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,b.encoding&&(H||(H=a("string_decoder/").StringDecoder),this.decoder=new H(b.encoding),this.encoding=b.encoding)}function e(b){return I=I||a("./_stream_duplex"),this instanceof e?(this._readableState=new d(b,this),this.readable=!0,b&&"function"==typeof b.read&&(this._read=b.read),void C.call(this)):new e(b)}function f(a,b,c,d,e){var f=j(b,c);if(f)a.emit("error",f);else if(null===c)b.reading=!1,k(a,b);else if(b.objectMode||c&&c.length>0)if(b.ended&&!e){var h=new Error("stream.push() after EOF");a.emit("error",h)}else if(b.endEmitted&&e){var h=new Error("stream.unshift() after end event");a.emit("error",h)}else!b.decoder||e||d||(c=b.decoder.write(c)),e||(b.reading=!1),b.flowing&&0===b.length&&!b.sync?(a.emit("data",c),a.read(0)):(b.length+=b.objectMode?1:c.length,e?b.buffer.unshift(c):b.buffer.push(c),b.needReadable&&l(a)),n(a,b);else e||(b.reading=!1);return g(b)}function g(a){return!a.ended&&(a.needReadable||a.length<a.highWaterMark||0===a.length)}function h(a){return a>=J?a=J:(a--,a|=a>>>1,a|=a>>>2,a|=a>>>4,a|=a>>>8,a|=a>>>16,a++),a}function i(a,b){return 0===b.length&&b.ended?0:b.objectMode?0===a?0:1:null===a||isNaN(a)?b.flowing&&b.buffer.length?b.buffer[0].length:b.length:0>=a?0:(a>b.highWaterMark&&(b.highWaterMark=h(a)),a>b.length?b.ended?b.length:(b.needReadable=!0,0):a)}function j(a,b){var c=null;return B.isBuffer(b)||"string"==typeof b||null===b||void 0===b||a.objectMode||(c=new TypeError("Invalid non-string/buffer chunk")),c}function k(a,b){if(!b.ended){if(b.decoder){var c=b.decoder.end();c&&c.length&&(b.buffer.push(c),b.length+=b.objectMode?1:c.length)}b.ended=!0,l(a)}}function l(a){var b=a._readableState;b.needReadable=!1,b.emittedReadable||(F("emitReadable",b.flowing),b.emittedReadable=!0,b.sync?z(m,a):m(a))}function m(a){F("emit readable"),a.emit("readable"),t(a)}function n(a,b){b.readingMore||(b.readingMore=!0,z(o,a,b))}function o(a,b){for(var c=b.length;!b.reading&&!b.flowing&&!b.ended&&b.length<b.highWaterMark&&(F("maybeReadMore read 0"),a.read(0),c!==b.length);)c=b.length;b.readingMore=!1}function p(a){return function(){var b=a._readableState;F("pipeOnDrain",b.awaitDrain),b.awaitDrain&&b.awaitDrain--,0===b.awaitDrain&&D(a,"data")&&(b.flowing=!0,t(a))}}function q(a){F("readable nexttick read 0"),a.read(0)}function r(a,b){b.resumeScheduled||(b.resumeScheduled=!0,z(s,a,b))}function s(a,b){b.reading||(F("resume read 0"),a.read(0)),b.resumeScheduled=!1,a.emit("resume"),t(a),b.flowing&&!b.reading&&a.read(0)}function t(a){var b=a._readableState;if(F("flow",b.flowing),b.flowing)do var c=a.read();while(null!==c&&b.flowing)}function u(a,b){var c,d=b.buffer,e=b.length,f=!!b.decoder,g=!!b.objectMode;if(0===d.length)return null;if(0===e)c=null;else if(g)c=d.shift();else if(!a||a>=e)c=f?d.join(""):1===d.length?d[0]:B.concat(d,e),d.length=0;else if(a<d[0].length){var h=d[0];c=h.slice(0,a),d[0]=h.slice(a)}else if(a===d[0].length)c=d.shift();else{c=f?"":new B(a);for(var i=0,j=0,k=d.length;k>j&&a>i;j++){var h=d[0],l=Math.min(a-i,h.length);f?c+=h.slice(0,l):h.copy(c,i,0,l),l<h.length?d[0]=h.slice(l):d.shift(),i+=l}}return c}function v(a){var b=a._readableState;if(b.length>0)throw new Error("endReadable called on non-empty stream");b.endEmitted||(b.ended=!0,z(w,b,a))}function w(a,b){a.endEmitted||0!==a.length||(a.endEmitted=!0,b.readable=!1,b.emit("end"))}function x(a,b){for(var c=0,d=a.length;d>c;c++)b(a[c],c)}function y(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1}b.exports=e;var z=a("process-nextick-args"),A=a("isarray"),B=a("buffer").Buffer;e.ReadableState=d;var C,D=(a("events"),function(a,b){return a.listeners(b).length});!function(){try{C=a("stream")}catch(b){}finally{C||(C=a("events").EventEmitter)}}();var B=a("buffer").Buffer,E=a("core-util-is");E.inherits=a("inherits");var F,G=a("util");F=G&&G.debuglog?G.debuglog("stream"):function(){};var H;E.inherits(e,C);var I,I;e.prototype.push=function(a,b){var c=this._readableState;return c.objectMode||"string"!=typeof a||(b=b||c.defaultEncoding,b!==c.encoding&&(a=new B(a,b),b="")),f(this,c,a,b,!1)},e.prototype.unshift=function(a){var b=this._readableState;return f(this,b,a,"",!0)},e.prototype.isPaused=function(){return this._readableState.flowing===!1},e.prototype.setEncoding=function(b){return H||(H=a("string_decoder/").StringDecoder),this._readableState.decoder=new H(b),this._readableState.encoding=b,this};var J=8388608;e.prototype.read=function(a){F("read",a);var b=this._readableState,c=a;if(("number"!=typeof a||a>0)&&(b.emittedReadable=!1),0===a&&b.needReadable&&(b.length>=b.highWaterMark||b.ended))return F("read: emitReadable",b.length,b.ended),0===b.length&&b.ended?v(this):l(this),null;if(a=i(a,b),0===a&&b.ended)return 0===b.length&&v(this),null;var d=b.needReadable;F("need readable",d),(0===b.length||b.length-a<b.highWaterMark)&&(d=!0,F("length less than watermark",d)),(b.ended||b.reading)&&(d=!1,F("reading or ended",d)),d&&(F("do read"),b.reading=!0,b.sync=!0,0===b.length&&(b.needReadable=!0),this._read(b.highWaterMark),b.sync=!1),d&&!b.reading&&(a=i(c,b));var e;return e=a>0?u(a,b):null,null===e&&(b.needReadable=!0,a=0),b.length-=a,0!==b.length||b.ended||(b.needReadable=!0),c!==a&&b.ended&&0===b.length&&v(this),null!==e&&this.emit("data",e),e},e.prototype._read=function(a){this.emit("error",new Error("not implemented"))},e.prototype.pipe=function(a,b){function d(a){F("onunpipe"),a===l&&f()}function e(){F("onend"),a.end()}function f(){F("cleanup"),a.removeListener("close",i),a.removeListener("finish",j),a.removeListener("drain",q),a.removeListener("error",h),a.removeListener("unpipe",d),l.removeListener("end",e),l.removeListener("end",f),l.removeListener("data",g),r=!0,!m.awaitDrain||a._writableState&&!a._writableState.needDrain||q()}function g(b){F("ondata");var c=a.write(b);!1===c&&(1!==m.pipesCount||m.pipes[0]!==a||1!==l.listenerCount("data")||r||(F("false write response, pause",l._readableState.awaitDrain),l._readableState.awaitDrain++),l.pause())}function h(b){F("onerror",b),k(),a.removeListener("error",h),0===D(a,"error")&&a.emit("error",b)}function i(){a.removeListener("finish",j),k()}function j(){F("onfinish"),a.removeListener("close",i),k()}function k(){F("unpipe"),l.unpipe(a)}var l=this,m=this._readableState;switch(m.pipesCount){
-case 0:m.pipes=a;break;case 1:m.pipes=[m.pipes,a];break;default:m.pipes.push(a)}m.pipesCount+=1,F("pipe count=%d opts=%j",m.pipesCount,b);var n=(!b||b.end!==!1)&&a!==c.stdout&&a!==c.stderr,o=n?e:f;m.endEmitted?z(o):l.once("end",o),a.on("unpipe",d);var q=p(l);a.on("drain",q);var r=!1;return l.on("data",g),a._events&&a._events.error?A(a._events.error)?a._events.error.unshift(h):a._events.error=[h,a._events.error]:a.on("error",h),a.once("close",i),a.once("finish",j),a.emit("pipe",l),m.flowing||(F("pipe resume"),l.resume()),a},e.prototype.unpipe=function(a){var b=this._readableState;if(0===b.pipesCount)return this;if(1===b.pipesCount)return a&&a!==b.pipes?this:(a||(a=b.pipes),b.pipes=null,b.pipesCount=0,b.flowing=!1,a&&a.emit("unpipe",this),this);if(!a){var c=b.pipes,d=b.pipesCount;b.pipes=null,b.pipesCount=0,b.flowing=!1;for(var e=0;d>e;e++)c[e].emit("unpipe",this);return this}var e=y(b.pipes,a);return-1===e?this:(b.pipes.splice(e,1),b.pipesCount-=1,1===b.pipesCount&&(b.pipes=b.pipes[0]),a.emit("unpipe",this),this)},e.prototype.on=function(a,b){var c=C.prototype.on.call(this,a,b);if("data"===a&&!1!==this._readableState.flowing&&this.resume(),"readable"===a&&this.readable){var d=this._readableState;d.readableListening||(d.readableListening=!0,d.emittedReadable=!1,d.needReadable=!0,d.reading?d.length&&l(this,d):z(q,this))}return c},e.prototype.addListener=e.prototype.on,e.prototype.resume=function(){var a=this._readableState;return a.flowing||(F("resume"),a.flowing=!0,r(this,a)),this},e.prototype.pause=function(){return F("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(F("pause"),this._readableState.flowing=!1,this.emit("pause")),this},e.prototype.wrap=function(a){var b=this._readableState,c=!1,d=this;a.on("end",function(){if(F("wrapped end"),b.decoder&&!b.ended){var a=b.decoder.end();a&&a.length&&d.push(a)}d.push(null)}),a.on("data",function(e){if(F("wrapped data"),b.decoder&&(e=b.decoder.write(e)),(!b.objectMode||null!==e&&void 0!==e)&&(b.objectMode||e&&e.length)){var f=d.push(e);f||(c=!0,a.pause())}});for(var e in a)void 0===this[e]&&"function"==typeof a[e]&&(this[e]=function(b){return function(){return a[b].apply(a,arguments)}}(e));var f=["error","close","destroy","pause","resume"];return x(f,function(b){a.on(b,d.emit.bind(d,b))}),d._read=function(b){F("wrapped _read",b),c&&(c=!1,a.resume())},d},e._fromList=u}).call(this,a("_process"))},{"./_stream_duplex":48,_process:42,buffer:33,"core-util-is":53,events:37,inherits:38,isarray:40,"process-nextick-args":54,"string_decoder/":70,util:32}],51:[function(a,b,c){"use strict";function d(a){this.afterTransform=function(b,c){return e(a,b,c)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null}function e(a,b,c){var d=a._transformState;d.transforming=!1;var e=d.writecb;if(!e)return a.emit("error",new Error("no writecb in Transform class"));d.writechunk=null,d.writecb=null,null!==c&&void 0!==c&&a.push(c),e&&e(b);var f=a._readableState;f.reading=!1,(f.needReadable||f.length<f.highWaterMark)&&a._read(f.highWaterMark)}function f(a){if(!(this instanceof f))return new f(a);h.call(this,a),this._transformState=new d(this);var b=this;this._readableState.needReadable=!0,this._readableState.sync=!1,a&&("function"==typeof a.transform&&(this._transform=a.transform),"function"==typeof a.flush&&(this._flush=a.flush)),this.once("prefinish",function(){"function"==typeof this._flush?this._flush(function(a){g(b,a)}):g(b)})}function g(a,b){if(b)return a.emit("error",b);var c=a._writableState,d=a._transformState;if(c.length)throw new Error("calling transform done when ws.length != 0");if(d.transforming)throw new Error("calling transform done when still transforming");return a.push(null)}b.exports=f;var h=a("./_stream_duplex"),i=a("core-util-is");i.inherits=a("inherits"),i.inherits(f,h),f.prototype.push=function(a,b){return this._transformState.needTransform=!1,h.prototype.push.call(this,a,b)},f.prototype._transform=function(a,b,c){throw new Error("not implemented")},f.prototype._write=function(a,b,c){var d=this._transformState;if(d.writecb=c,d.writechunk=a,d.writeencoding=b,!d.transforming){var e=this._readableState;(d.needTransform||e.needReadable||e.length<e.highWaterMark)&&this._read(e.highWaterMark)}},f.prototype._read=function(a){var b=this._transformState;null!==b.writechunk&&b.writecb&&!b.transforming?(b.transforming=!0,this._transform(b.writechunk,b.writeencoding,b.afterTransform)):b.needTransform=!0}},{"./_stream_duplex":48,"core-util-is":53,inherits:38}],52:[function(a,b,c){"use strict";function d(){}function e(a,b,c){this.chunk=a,this.encoding=b,this.callback=c,this.next=null}function f(b,c){B=B||a("./_stream_duplex"),b=b||{},this.objectMode=!!b.objectMode,c instanceof B&&(this.objectMode=this.objectMode||!!b.writableObjectMode);var d=b.highWaterMark,e=this.objectMode?16:16384;this.highWaterMark=d||0===d?d:e,this.highWaterMark=~~this.highWaterMark,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1;var f=b.decodeStrings===!1;this.decodeStrings=!f,this.defaultEncoding=b.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){o(c,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1}function g(b){return B=B||a("./_stream_duplex"),this instanceof g||this instanceof B?(this._writableState=new f(b,this),this.writable=!0,b&&("function"==typeof b.write&&(this._write=b.write),"function"==typeof b.writev&&(this._writev=b.writev)),void z.call(this)):new g(b)}function h(a,b){var c=new Error("write after end");a.emit("error",c),w(b,c)}function i(a,b,c,d){var e=!0;if(!x.isBuffer(c)&&"string"!=typeof c&&null!==c&&void 0!==c&&!b.objectMode){var f=new TypeError("Invalid non-string/buffer chunk");a.emit("error",f),w(d,f),e=!1}return e}function j(a,b,c){return a.objectMode||a.decodeStrings===!1||"string"!=typeof b||(b=new x(b,c)),b}function k(a,b,c,d,f){c=j(b,c,d),x.isBuffer(c)&&(d="buffer");var g=b.objectMode?1:c.length;b.length+=g;var h=b.length<b.highWaterMark;if(h||(b.needDrain=!0),b.writing||b.corked){var i=b.lastBufferedRequest;b.lastBufferedRequest=new e(c,d,f),i?i.next=b.lastBufferedRequest:b.bufferedRequest=b.lastBufferedRequest}else l(a,b,!1,g,c,d,f);return h}function l(a,b,c,d,e,f,g){b.writelen=d,b.writecb=g,b.writing=!0,b.sync=!0,c?a._writev(e,b.onwrite):a._write(e,f,b.onwrite),b.sync=!1}function m(a,b,c,d,e){--b.pendingcb,c?w(e,d):e(d),a._writableState.errorEmitted=!0,a.emit("error",d)}function n(a){a.writing=!1,a.writecb=null,a.length-=a.writelen,a.writelen=0}function o(a,b){var c=a._writableState,d=c.sync,e=c.writecb;if(n(c),b)m(a,c,d,b,e);else{var f=s(c);f||c.corked||c.bufferProcessing||!c.bufferedRequest||r(a,c),d?w(p,a,c,f,e):p(a,c,f,e)}}function p(a,b,c,d){c||q(a,b),b.pendingcb--,d(),u(a,b)}function q(a,b){0===b.length&&b.needDrain&&(b.needDrain=!1,a.emit("drain"))}function r(a,b){b.bufferProcessing=!0;var c=b.bufferedRequest;if(a._writev&&c&&c.next){for(var d=[],e=[];c;)e.push(c.callback),d.push(c),c=c.next;b.pendingcb++,b.lastBufferedRequest=null,l(a,b,!0,b.length,d,"",function(a){for(var c=0;c<e.length;c++)b.pendingcb--,e[c](a)})}else{for(;c;){var f=c.chunk,g=c.encoding,h=c.callback,i=b.objectMode?1:f.length;if(l(a,b,!1,i,f,g,h),c=c.next,b.writing)break}null===c&&(b.lastBufferedRequest=null)}b.bufferedRequest=c,b.bufferProcessing=!1}function s(a){return a.ending&&0===a.length&&null===a.bufferedRequest&&!a.finished&&!a.writing}function t(a,b){b.prefinished||(b.prefinished=!0,a.emit("prefinish"))}function u(a,b){var c=s(b);return c&&(0===b.pendingcb?(t(a,b),b.finished=!0,a.emit("finish")):t(a,b)),c}function v(a,b,c){b.ending=!0,u(a,b),c&&(b.finished?w(c):a.once("finish",c)),b.ended=!0}b.exports=g;var w=a("process-nextick-args"),x=a("buffer").Buffer;g.WritableState=f;var y=a("core-util-is");y.inherits=a("inherits");var z,A={deprecate:a("util-deprecate")};!function(){try{z=a("stream")}catch(b){}finally{z||(z=a("events").EventEmitter)}}();var x=a("buffer").Buffer;y.inherits(g,z);var B;f.prototype.getBuffer=function(){for(var a=this.bufferedRequest,b=[];a;)b.push(a),a=a.next;return b},function(){try{Object.defineProperty(f.prototype,"buffer",{get:A.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")})}catch(a){}}();var B;g.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe. Not readable."))},g.prototype.write=function(a,b,c){var e=this._writableState,f=!1;return"function"==typeof b&&(c=b,b=null),x.isBuffer(a)?b="buffer":b||(b=e.defaultEncoding),"function"!=typeof c&&(c=d),e.ended?h(this,c):i(this,e,a,c)&&(e.pendingcb++,f=k(this,e,a,b,c)),f},g.prototype.cork=function(){var a=this._writableState;a.corked++},g.prototype.uncork=function(){var a=this._writableState;a.corked&&(a.corked--,a.writing||a.corked||a.finished||a.bufferProcessing||!a.bufferedRequest||r(this,a))},g.prototype.setDefaultEncoding=function(a){if("string"==typeof a&&(a=a.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((a+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+a);this._writableState.defaultEncoding=a},g.prototype._write=function(a,b,c){c(new Error("not implemented"))},g.prototype._writev=null,g.prototype.end=function(a,b,c){var d=this._writableState;"function"==typeof a?(c=a,a=null,b=null):"function"==typeof b&&(c=b,b=null),null!==a&&void 0!==a&&this.write(a,b),d.corked&&(d.corked=1,this.uncork()),d.ending||d.finished||v(this,d,c)}},{"./_stream_duplex":48,buffer:33,"core-util-is":53,events:37,inherits:38,"process-nextick-args":54,"util-deprecate":55}],53:[function(a,b,c){(function(a){function b(a){return Array.isArray?Array.isArray(a):"[object Array]"===q(a)}function d(a){return"boolean"==typeof a}function e(a){return null===a}function f(a){return null==a}function g(a){return"number"==typeof a}function h(a){return"string"==typeof a}function i(a){return"symbol"==typeof a}function j(a){return void 0===a}function k(a){return"[object RegExp]"===q(a)}function l(a){return"object"==typeof a&&null!==a}function m(a){return"[object Date]"===q(a)}function n(a){return"[object Error]"===q(a)||a instanceof Error}function o(a){return"function"==typeof a}function p(a){return null===a||"boolean"==typeof a||"number"==typeof a||"string"==typeof a||"symbol"==typeof a||"undefined"==typeof a}function q(a){return Object.prototype.toString.call(a)}c.isArray=b,c.isBoolean=d,c.isNull=e,c.isNullOrUndefined=f,c.isNumber=g,c.isString=h,c.isSymbol=i,c.isUndefined=j,c.isRegExp=k,c.isObject=l,c.isDate=m,c.isError=n,c.isFunction=o,c.isPrimitive=p,c.isBuffer=a.isBuffer}).call(this,{isBuffer:a("../../../../insert-module-globals/node_modules/is-buffer/index.js")})},{"../../../../insert-module-globals/node_modules/is-buffer/index.js":39}],54:[function(a,b,c){(function(a){"use strict";function c(b){for(var c=new Array(arguments.length-1),d=0;d<c.length;)c[d++]=arguments[d];a.nextTick(function(){b.apply(null,c)})}!a.version||0===a.version.indexOf("v0.")||0===a.version.indexOf("v1.")&&0!==a.version.indexOf("v1.8.")?b.exports=c:b.exports=a.nextTick}).call(this,a("_process"))},{_process:42}],55:[function(a,b,c){(function(a){function c(a,b){function c(){if(!e){if(d("throwDeprecation"))throw new Error(b);d("traceDeprecation")?console.trace(b):console.warn(b),e=!0}return a.apply(this,arguments)}if(d("noDeprecation"))return a;var e=!1;return c}function d(b){try{if(!a.localStorage)return!1}catch(c){return!1}var d=a.localStorage[b];return null==d?!1:"true"===String(d).toLowerCase()}b.exports=c}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],56:[function(a,b,c){b.exports=a("./lib/_stream_passthrough.js")},{"./lib/_stream_passthrough.js":49}],57:[function(a,b,c){var d=function(){try{return a("stream")}catch(b){}}();c=b.exports=a("./lib/_stream_readable.js"),c.Stream=d||c,c.Readable=c,c.Writable=a("./lib/_stream_writable.js"),c.Duplex=a("./lib/_stream_duplex.js"),c.Transform=a("./lib/_stream_transform.js"),c.PassThrough=a("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":48,"./lib/_stream_passthrough.js":49,"./lib/_stream_readable.js":50,"./lib/_stream_transform.js":51,"./lib/_stream_writable.js":52}],58:[function(a,b,c){b.exports=a("./lib/_stream_transform.js")},{"./lib/_stream_transform.js":51}],59:[function(a,b,c){b.exports=a("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":52}],60:[function(a,b,c){function d(){e.call(this)}b.exports=d;var e=a("events").EventEmitter,f=a("inherits");f(d,e),d.Readable=a("readable-stream/readable.js"),d.Writable=a("readable-stream/writable.js"),d.Duplex=a("readable-stream/duplex.js"),d.Transform=a("readable-stream/transform.js"),d.PassThrough=a("readable-stream/passthrough.js"),d.Stream=d,d.prototype.pipe=function(a,b){function c(b){a.writable&&!1===a.write(b)&&j.pause&&j.pause()}function d(){j.readable&&j.resume&&j.resume()}function f(){k||(k=!0,a.end())}function g(){k||(k=!0,"function"==typeof a.destroy&&a.destroy())}function h(a){if(i(),0===e.listenerCount(this,"error"))throw a}function i(){j.removeListener("data",c),a.removeListener("drain",d),j.removeListener("end",f),j.removeListener("close",g),j.removeListener("error",h),a.removeListener("error",h),j.removeListener("end",i),j.removeListener("close",i),a.removeListener("close",i)}var j=this;j.on("data",c),a.on("drain",d),a._isStdio||b&&b.end===!1||(j.on("end",f),j.on("close",g));var k=!1;return j.on("error",h),a.on("error",h),j.on("end",i),j.on("close",i),a.on("close",i),a.emit("pipe",j),a}},{events:37,inherits:38,"readable-stream/duplex.js":47,"readable-stream/passthrough.js":56,"readable-stream/readable.js":57,"readable-stream/transform.js":58,"readable-stream/writable.js":59}],61:[function(a,b,c){var d=a("./lib/request"),e=a("xtend"),f=a("builtin-status-codes"),g=a("url"),h=c;h.request=function(a,b){a="string"==typeof a?g.parse(a):e(a);var c=a.protocol||"",f=a.hostname||a.host,h=a.port,i=a.path||"/";f&&-1!==f.indexOf(":")&&(f="["+f+"]"),a.url=(f?c+"//"+f:"")+(h?":"+h:"")+i,a.method=(a.method||"GET").toUpperCase(),a.headers=a.headers||{};var j=new d(a);return b&&j.on("response",b),j},h.get=function(a,b){var c=h.request(a,b);return c.end(),c},h.Agent=function(){},h.Agent.defaultMaxSockets=4,h.STATUS_CODES=f,h.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]},{"./lib/request":63,"builtin-status-codes":65,url:71,xtend:74}],62:[function(a,b,c){(function(a){function b(a){try{return f.responseType=a,f.responseType===a}catch(b){}return!1}function d(a){return"function"==typeof a}c.fetch=d(a.fetch)&&d(a.ReadableByteStream),c.blobConstructor=!1;try{new Blob([new ArrayBuffer(1)]),c.blobConstructor=!0}catch(e){}var f=new a.XMLHttpRequest;f.open("GET",a.location.host?"/":"https://example.com");var g="undefined"!=typeof a.ArrayBuffer,h=g&&d(a.ArrayBuffer.prototype.slice);c.arraybuffer=g&&b("arraybuffer"),c.msstream=!c.fetch&&h&&b("ms-stream"),c.mozchunkedarraybuffer=!c.fetch&&g&&b("moz-chunked-arraybuffer"),c.overrideMimeType=d(f.overrideMimeType),c.vbArray=d(a.VBArray),f=null}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],63:[function(a,b,c){(function(c,d,e){function f(a){return h.fetch?"fetch":h.mozchunkedarraybuffer?"moz-chunked-arraybuffer":h.msstream?"ms-stream":h.arraybuffer&&a?"arraybuffer":h.vbArray&&a?"text:vbarray":"text"}function g(a){try{return null!==a.status}catch(b){return!1}}var h=a("./capability"),i=a("foreach"),j=a("indexof"),k=a("inherits"),l=a("object-keys"),m=a("./response"),n=a("stream"),o=m.IncomingMessage,p=m.readyStates,q=b.exports=function(a){var b=this;n.Writable.call(b),b._opts=a,b._body=[],b._headers={},a.auth&&b.setHeader("Authorization","Basic "+new e(a.auth).toString("base64")),i(l(a.headers),function(c){b.setHeader(c,a.headers[c])});var c;if("prefer-streaming"===a.mode)c=!1;else if("allow-wrong-content-type"===a.mode)c=!h.overrideMimeType;else{if(a.mode&&"default"!==a.mode&&"prefer-fast"!==a.mode)throw new Error("Invalid value for opts.mode");c=!0}b._mode=f(c),b.on("finish",function(){b._onFinish()})};k(q,n.Writable),q.prototype.setHeader=function(a,b){var c=this,d=a.toLowerCase();-1===j(r,d)&&(c._headers[d]={name:a,value:b})},q.prototype.getHeader=function(a){var b=this;return b._headers[a.toLowerCase()].value},q.prototype.removeHeader=function(a){var b=this;delete b._headers[a.toLowerCase()]},q.prototype._onFinish=function(){var a=this;if(!a._destroyed){var b,f=a._opts,g=a._headers;if(("POST"===f.method||"PUT"===f.method)&&(b=h.blobConstructor?new d.Blob(a._body.map(function(a){return a.toArrayBuffer()}),{type:(g["content-type"]||{}).value||""}):e.concat(a._body).toString()),"fetch"===a._mode){var j=l(g).map(function(a){return[g[a].name,g[a].value]});d.fetch(a._opts.url,{method:a._opts.method,headers:j,body:b,mode:"cors",credentials:f.withCredentials?"include":"same-origin"}).then(function(b){a._fetchResponse=b,a._connect()}).then(void 0,function(b){a.emit("error",b)})}else{var k=a._xhr=new d.XMLHttpRequest;try{k.open(a._opts.method,a._opts.url,!0)}catch(m){return void c.nextTick(function(){a.emit("error",m)})}"responseType"in k&&(k.responseType=a._mode.split(":")[0]),"withCredentials"in k&&(k.withCredentials=!!f.withCredentials),"text"===a._mode&&"overrideMimeType"in k&&k.overrideMimeType("text/plain; charset=x-user-defined"),i(l(g),function(a){k.setRequestHeader(g[a].name,g[a].value)}),a._response=null,k.onreadystatechange=function(){switch(k.readyState){case p.LOADING:case p.DONE:a._onXHRProgress()}},"moz-chunked-arraybuffer"===a._mode&&(k.onprogress=function(){a._onXHRProgress()}),k.onerror=function(){a._destroyed||a.emit("error",new Error("XHR error"))};try{k.send(b)}catch(m){return void c.nextTick(function(){a.emit("error",m)})}}}},q.prototype._onXHRProgress=function(){var a=this;g(a._xhr)&&!a._destroyed&&(a._response||a._connect(),a._response._onXHRProgress())},q.prototype._connect=function(){var a=this;a._destroyed||(a._response=new o(a._xhr,a._fetchResponse,a._mode),a.emit("response",a._response))},q.prototype._write=function(a,b,c){var d=this;d._body.push(a),c()},q.prototype.abort=q.prototype.destroy=function(){var a=this;a._destroyed=!0,a._response&&(a._response._destroyed=!0),a._xhr&&a._xhr.abort()},q.prototype.end=function(a,b,c){var d=this;"function"==typeof a&&(c=a,a=void 0),n.Writable.prototype.end.call(d,a,b,c)},q.prototype.flushHeaders=function(){},q.prototype.setTimeout=function(){},q.prototype.setNoDelay=function(){},q.prototype.setSocketKeepAlive=function(){};var r=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"]}).call(this,a("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},a("buffer").Buffer)},{"./capability":62,"./response":64,_process:42,buffer:33,foreach:66,indexof:67,inherits:38,"object-keys":68,stream:60}],64:[function(a,b,c){(function(b,d,e){var f=a("./capability"),g=a("foreach"),h=a("inherits"),i=a("stream"),j=c.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},k=c.IncomingMessage=function(a,c,d){function h(){n.read().then(function(a){if(!j._destroyed){if(a.done)return void j.push(null);j.push(new e(a.value)),h()}})}var j=this;if(i.Readable.call(j),j._mode=d,j.headers={},j.rawHeaders=[],j.trailers={},j.rawTrailers=[],j.on("end",function(){b.nextTick(function(){j.emit("close")})}),"fetch"===d){j._fetchResponse=c,j.statusCode=c.status,j.statusMessage=c.statusText;for(var k,l,m=c.headers[Symbol.iterator]();k=(l=m.next()).value,!l.done;)j.headers[k[0].toLowerCase()]=k[1],j.rawHeaders.push(k[0],k[1]);var n=c.body.getReader();h()}else{j._xhr=a,j._pos=0,j.statusCode=a.status,j.statusMessage=a.statusText;var o=a.getAllResponseHeaders().split(/\r?\n/);if(g(o,function(a){var b=a.match(/^([^:]+):\s*(.*)/);if(b){var c=b[1].toLowerCase();void 0!==j.headers[c]?j.headers[c]+=", "+b[2]:j.headers[c]=b[2],j.rawHeaders.push(b[1],b[2])}}),j._charset="x-user-defined",!f.overrideMimeType){var p=j.rawHeaders["mime-type"];if(p){var q=p.match(/;\s*charset=([^;])(;|$)/);q&&(j._charset=q[1].toLowerCase())}j._charset||(j._charset="utf-8")}}};h(k,i.Readable),k.prototype._read=function(){},k.prototype._onXHRProgress=function(){var a=this,b=a._xhr,c=null;switch(a._mode){case"text:vbarray":if(b.readyState!==j.DONE)break;try{c=new d.VBArray(b.responseBody).toArray()}catch(f){}if(null!==c){a.push(new e(c));break}case"text":try{c=b.responseText}catch(f){a._mode="text:vbarray";break}if(c.length>a._pos){var g=c.substr(a._pos);if("x-user-defined"===a._charset){for(var h=new e(g.length),i=0;i<g.length;i++)h[i]=255&g.charCodeAt(i);a.push(h)}else a.push(g,a._charset);a._pos=c.length}break;case"arraybuffer":if(b.readyState!==j.DONE)break;c=b.response,a.push(new e(new Uint8Array(c)));break;case"moz-chunked-arraybuffer":if(c=b.response,b.readyState!==j.LOADING||!c)break;a.push(new e(new Uint8Array(c)));break;case"ms-stream":if(c=b.response,b.readyState!==j.LOADING)break;var k=new d.MSStreamReader;k.onprogress=function(){k.result.byteLength>a._pos&&(a.push(new e(new Uint8Array(k.result.slice(a._pos)))),a._pos=k.result.byteLength)},k.onload=function(){a.push(null)},k.readAsArrayBuffer(c)}a._xhr.readyState===j.DONE&&"ms-stream"!==a._mode&&a.push(null)}}).call(this,a("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},a("buffer").Buffer)},{"./capability":62,_process:42,buffer:33,foreach:66,inherits:38,stream:60}],65:[function(a,b,c){b.exports={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",300:"Multiple Choices",301:"Moved Permanently",302:"Moved Temporarily",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Time-out",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Large",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Time-out",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"}},{}],66:[function(a,b,c){var d=Object.prototype.hasOwnProperty,e=Object.prototype.toString;b.exports=function(a,b,c){if("[object Function]"!==e.call(b))throw new TypeError("iterator must be a function");var f=a.length;if(f===+f)for(var g=0;f>g;g++)b.call(c,a[g],g,a);else for(var h in a)d.call(a,h)&&b.call(c,a[h],h,a)}},{}],67:[function(a,b,c){var d=[].indexOf;b.exports=function(a,b){if(d)return a.indexOf(b);for(var c=0;c<a.length;++c)if(a[c]===b)return c;return-1}},{}],68:[function(a,b,c){"use strict";var d=Object.prototype.hasOwnProperty,e=Object.prototype.toString,f=Array.prototype.slice,g=a("./isArguments"),h=!{toString:null}.propertyIsEnumerable("toString"),i=function(){}.propertyIsEnumerable("prototype"),j=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],k=function(a){var b=a.constructor;return b&&b.prototype===a},l={$console:!0,$frame:!0,$frameElement:!0,$frames:!0,$parent:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},m=function(){if("undefined"==typeof window)return!1;for(var a in window)try{if(!l["$"+a]&&d.call(window,a)&&null!==window[a]&&"object"==typeof window[a])try{k(window[a])}catch(b){return!0}}catch(b){return!0}return!1}(),n=function(a){if("undefined"==typeof window||!m)return k(a);try{return k(a)}catch(b){return!1}},o=function(a){var b=null!==a&&"object"==typeof a,c="[object Function]"===e.call(a),f=g(a),k=b&&"[object String]"===e.call(a),l=[];if(!b&&!c&&!f)throw new TypeError("Object.keys called on a non-object");var m=i&&c;if(k&&a.length>0&&!d.call(a,0))for(var o=0;o<a.length;++o)l.push(String(o));if(f&&a.length>0)for(var p=0;p<a.length;++p)l.push(String(p));else for(var q in a)m&&"prototype"===q||!d.call(a,q)||l.push(String(q));if(h)for(var r=n(a),s=0;s<j.length;++s)r&&"constructor"===j[s]||!d.call(a,j[s])||l.push(j[s]);return l};o.shim=function(){if(Object.keys){var a=function(){return 2===(Object.keys(arguments)||"").length}(1,2);if(!a){var b=Object.keys;Object.keys=function(a){return b(g(a)?f.call(a):a)}}}else Object.keys=o;return Object.keys||o},b.exports=o},{"./isArguments":69}],69:[function(a,b,c){"use strict";var d=Object.prototype.toString;b.exports=function(a){var b=d.call(a),c="[object Arguments]"===b;return c||(c="[object Array]"!==b&&null!==a&&"object"==typeof a&&"number"==typeof a.length&&a.length>=0&&"[object Function]"===d.call(a.callee)),c}},{}],70:[function(a,b,c){function d(a){if(a&&!i(a))throw new Error("Unknown encoding: "+a)}function e(a){return a.toString(this.encoding)}function f(a){this.charReceived=a.length%2,this.charLength=this.charReceived?2:0}function g(a){this.charReceived=a.length%3,this.charLength=this.charReceived?3:0}var h=a("buffer").Buffer,i=h.isEncoding||function(a){switch(a&&a.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},j=c.StringDecoder=function(a){switch(this.encoding=(a||"utf8").toLowerCase().replace(/[-_]/,""),d(a),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=f;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=g;break;default:return void(this.write=e)}this.charBuffer=new h(6),this.charReceived=0,this.charLength=0};j.prototype.write=function(a){for(var b="";this.charLength;){var c=a.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:a.length;if(a.copy(this.charBuffer,this.charReceived,0,c),this.charReceived+=c,this.charReceived<this.charLength)return"";a=a.slice(c,a.length),b=this.charBuffer.slice(0,this.charLength).toString(this.encoding);var d=b.charCodeAt(b.length-1);if(!(d>=55296&&56319>=d)){if(this.charReceived=this.charLength=0,0===a.length)return b;break}this.charLength+=this.surrogateSize,b=""}this.detectIncompleteChar(a);var e=a.length;this.charLength&&(a.copy(this.charBuffer,0,a.length-this.charReceived,e),e-=this.charReceived),b+=a.toString(this.encoding,0,e);var e=b.length-1,d=b.charCodeAt(e);if(d>=55296&&56319>=d){var f=this.surrogateSize;return this.charLength+=f,this.charReceived+=f,this.charBuffer.copy(this.charBuffer,f,0,f),a.copy(this.charBuffer,0,0,f),b.substring(0,e)}return b},j.prototype.detectIncompleteChar=function(a){for(var b=a.length>=3?3:a.length;b>0;b--){var c=a[a.length-b];if(1==b&&c>>5==6){this.charLength=2;break}if(2>=b&&c>>4==14){this.charLength=3;break}if(3>=b&&c>>3==30){this.charLength=4;break}}this.charReceived=b},j.prototype.end=function(a){var b="";if(a&&a.length&&(b=this.write(a)),this.charReceived){var c=this.charReceived,d=this.charBuffer,e=this.encoding;b+=d.slice(0,c).toString(e)}return b}},{buffer:33}],71:[function(a,b,c){function d(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function e(a,b,c){if(a&&j(a)&&a instanceof d)return a;var e=new d;return e.parse(a,b,c),e}function f(a){return i(a)&&(a=e(a)),a instanceof d?a.format():d.prototype.format.call(a)}function g(a,b){return e(a,!1,!0).resolve(b)}function h(a,b){return a?e(a,!1,!0).resolveObject(b):b}function i(a){return"string"==typeof a}function j(a){return"object"==typeof a&&null!==a}function k(a){return null===a}function l(a){return null==a}var m=a("punycode");c.parse=e,c.resolve=g,c.resolveObject=h,c.format=f,c.Url=d;var n=/^([a-z0-9.+-]+:)/i,o=/:[0-9]*$/,p=["<",">",'"',"`"," ","\r","\n","	"],q=["{","}","|","\\","^","`"].concat(p),r=["'"].concat(q),s=["%","/","?",";","#"].concat(r),t=["/","?","#"],u=255,v=/^[a-z0-9A-Z_-]{0,63}$/,w=/^([a-z0-9A-Z_-]{0,63})(.*)$/,x={javascript:!0,"javascript:":!0},y={javascript:!0,"javascript:":!0},z={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},A=a("querystring");d.prototype.parse=function(a,b,c){if(!i(a))throw new TypeError("Parameter 'url' must be a string, not "+typeof a);var d=a;d=d.trim();var e=n.exec(d);if(e){e=e[0];var f=e.toLowerCase();this.protocol=f,d=d.substr(e.length)}if(c||e||d.match(/^\/\/[^@\/]+@[^@\/]+/)){var g="//"===d.substr(0,2);!g||e&&y[e]||(d=d.substr(2),this.slashes=!0)}if(!y[e]&&(g||e&&!z[e])){for(var h=-1,j=0;j<t.length;j++){var k=d.indexOf(t[j]);-1!==k&&(-1===h||h>k)&&(h=k)}var l,o;o=-1===h?d.lastIndexOf("@"):d.lastIndexOf("@",h),-1!==o&&(l=d.slice(0,o),d=d.slice(o+1),this.auth=decodeURIComponent(l)),h=-1;for(var j=0;j<s.length;j++){var k=d.indexOf(s[j]);-1!==k&&(-1===h||h>k)&&(h=k)}-1===h&&(h=d.length),this.host=d.slice(0,h),d=d.slice(h),this.parseHost(),this.hostname=this.hostname||"";var p="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!p)for(var q=this.hostname.split(/\./),j=0,B=q.length;B>j;j++){var C=q[j];if(C&&!C.match(v)){for(var D="",E=0,F=C.length;F>E;E++)D+=C.charCodeAt(E)>127?"x":C[E];if(!D.match(v)){var G=q.slice(0,j),H=q.slice(j+1),I=C.match(w);I&&(G.push(I[1]),H.unshift(I[2])),H.length&&(d="/"+H.join(".")+d),this.hostname=G.join(".");break}}}if(this.hostname.length>u?this.hostname="":this.hostname=this.hostname.toLowerCase(),!p){for(var J=this.hostname.split("."),K=[],j=0;j<J.length;++j){var L=J[j];K.push(L.match(/[^A-Za-z0-9_-]/)?"xn--"+m.encode(L):L)}this.hostname=K.join(".")}var M=this.port?":"+this.port:"",N=this.hostname||"";this.host=N+M,this.href+=this.host,p&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==d[0]&&(d="/"+d))}if(!x[f])for(var j=0,B=r.length;B>j;j++){var O=r[j],P=encodeURIComponent(O);P===O&&(P=escape(O)),d=d.split(O).join(P)}var Q=d.indexOf("#");-1!==Q&&(this.hash=d.substr(Q),d=d.slice(0,Q));var R=d.indexOf("?");if(-1!==R?(this.search=d.substr(R),this.query=d.substr(R+1),b&&(this.query=A.parse(this.query)),d=d.slice(0,R)):b&&(this.search="",this.query={}),d&&(this.pathname=d),z[f]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var M=this.pathname||"",L=this.search||"";this.path=M+L}return this.href=this.format(),this},d.prototype.format=function(){var a=this.auth||"";a&&(a=encodeURIComponent(a),a=a.replace(/%3A/i,":"),a+="@");var b=this.protocol||"",c=this.pathname||"",d=this.hash||"",e=!1,f="";this.host?e=a+this.host:this.hostname&&(e=a+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(e+=":"+this.port)),this.query&&j(this.query)&&Object.keys(this.query).length&&(f=A.stringify(this.query));var g=this.search||f&&"?"+f||"";return b&&":"!==b.substr(-1)&&(b+=":"),this.slashes||(!b||z[b])&&e!==!1?(e="//"+(e||""),c&&"/"!==c.charAt(0)&&(c="/"+c)):e||(e=""),d&&"#"!==d.charAt(0)&&(d="#"+d),
-g&&"?"!==g.charAt(0)&&(g="?"+g),c=c.replace(/[?#]/g,function(a){return encodeURIComponent(a)}),g=g.replace("#","%23"),b+e+c+g+d},d.prototype.resolve=function(a){return this.resolveObject(e(a,!1,!0)).format()},d.prototype.resolveObject=function(a){if(i(a)){var b=new d;b.parse(a,!1,!0),a=b}var c=new d;if(Object.keys(this).forEach(function(a){c[a]=this[a]},this),c.hash=a.hash,""===a.href)return c.href=c.format(),c;if(a.slashes&&!a.protocol)return Object.keys(a).forEach(function(b){"protocol"!==b&&(c[b]=a[b])}),z[c.protocol]&&c.hostname&&!c.pathname&&(c.path=c.pathname="/"),c.href=c.format(),c;if(a.protocol&&a.protocol!==c.protocol){if(!z[a.protocol])return Object.keys(a).forEach(function(b){c[b]=a[b]}),c.href=c.format(),c;if(c.protocol=a.protocol,a.host||y[a.protocol])c.pathname=a.pathname;else{for(var e=(a.pathname||"").split("/");e.length&&!(a.host=e.shift()););a.host||(a.host=""),a.hostname||(a.hostname=""),""!==e[0]&&e.unshift(""),e.length<2&&e.unshift(""),c.pathname=e.join("/")}if(c.search=a.search,c.query=a.query,c.host=a.host||"",c.auth=a.auth,c.hostname=a.hostname||a.host,c.port=a.port,c.pathname||c.search){var f=c.pathname||"",g=c.search||"";c.path=f+g}return c.slashes=c.slashes||a.slashes,c.href=c.format(),c}var h=c.pathname&&"/"===c.pathname.charAt(0),j=a.host||a.pathname&&"/"===a.pathname.charAt(0),m=j||h||c.host&&a.pathname,n=m,o=c.pathname&&c.pathname.split("/")||[],e=a.pathname&&a.pathname.split("/")||[],p=c.protocol&&!z[c.protocol];if(p&&(c.hostname="",c.port=null,c.host&&(""===o[0]?o[0]=c.host:o.unshift(c.host)),c.host="",a.protocol&&(a.hostname=null,a.port=null,a.host&&(""===e[0]?e[0]=a.host:e.unshift(a.host)),a.host=null),m=m&&(""===e[0]||""===o[0])),j)c.host=a.host||""===a.host?a.host:c.host,c.hostname=a.hostname||""===a.hostname?a.hostname:c.hostname,c.search=a.search,c.query=a.query,o=e;else if(e.length)o||(o=[]),o.pop(),o=o.concat(e),c.search=a.search,c.query=a.query;else if(!l(a.search)){if(p){c.hostname=c.host=o.shift();var q=c.host&&c.host.indexOf("@")>0?c.host.split("@"):!1;q&&(c.auth=q.shift(),c.host=c.hostname=q.shift())}return c.search=a.search,c.query=a.query,k(c.pathname)&&k(c.search)||(c.path=(c.pathname?c.pathname:"")+(c.search?c.search:"")),c.href=c.format(),c}if(!o.length)return c.pathname=null,c.search?c.path="/"+c.search:c.path=null,c.href=c.format(),c;for(var r=o.slice(-1)[0],s=(c.host||a.host)&&("."===r||".."===r)||""===r,t=0,u=o.length;u>=0;u--)r=o[u],"."==r?o.splice(u,1):".."===r?(o.splice(u,1),t++):t&&(o.splice(u,1),t--);if(!m&&!n)for(;t--;t)o.unshift("..");!m||""===o[0]||o[0]&&"/"===o[0].charAt(0)||o.unshift(""),s&&"/"!==o.join("/").substr(-1)&&o.push("");var v=""===o[0]||o[0]&&"/"===o[0].charAt(0);if(p){c.hostname=c.host=v?"":o.length?o.shift():"";var q=c.host&&c.host.indexOf("@")>0?c.host.split("@"):!1;q&&(c.auth=q.shift(),c.host=c.hostname=q.shift())}return m=m||c.host&&o.length,m&&!v&&o.unshift(""),o.length?c.pathname=o.join("/"):(c.pathname=null,c.path=null),k(c.pathname)&&k(c.search)||(c.path=(c.pathname?c.pathname:"")+(c.search?c.search:"")),c.auth=a.auth||c.auth,c.slashes=c.slashes||a.slashes,c.href=c.format(),c},d.prototype.parseHost=function(){var a=this.host,b=o.exec(a);b&&(b=b[0],":"!==b&&(this.port=b.substr(1)),a=a.substr(0,a.length-b.length)),a&&(this.hostname=a)}},{punycode:43,querystring:46}],72:[function(a,b,c){b.exports=function(a){return a&&"object"==typeof a&&"function"==typeof a.copy&&"function"==typeof a.fill&&"function"==typeof a.readUInt8}},{}],73:[function(a,b,c){(function(b,d){function e(a,b){var d={seen:[],stylize:g};return arguments.length>=3&&(d.depth=arguments[2]),arguments.length>=4&&(d.colors=arguments[3]),p(b)?d.showHidden=b:b&&c._extend(d,b),v(d.showHidden)&&(d.showHidden=!1),v(d.depth)&&(d.depth=2),v(d.colors)&&(d.colors=!1),v(d.customInspect)&&(d.customInspect=!0),d.colors&&(d.stylize=f),i(d,a,d.depth)}function f(a,b){var c=e.styles[b];return c?"["+e.colors[c][0]+"m"+a+"["+e.colors[c][1]+"m":a}function g(a,b){return a}function h(a){var b={};return a.forEach(function(a,c){b[a]=!0}),b}function i(a,b,d){if(a.customInspect&&b&&A(b.inspect)&&b.inspect!==c.inspect&&(!b.constructor||b.constructor.prototype!==b)){var e=b.inspect(d,a);return t(e)||(e=i(a,e,d)),e}var f=j(a,b);if(f)return f;var g=Object.keys(b),p=h(g);if(a.showHidden&&(g=Object.getOwnPropertyNames(b)),z(b)&&(g.indexOf("message")>=0||g.indexOf("description")>=0))return k(b);if(0===g.length){if(A(b)){var q=b.name?": "+b.name:"";return a.stylize("[Function"+q+"]","special")}if(w(b))return a.stylize(RegExp.prototype.toString.call(b),"regexp");if(y(b))return a.stylize(Date.prototype.toString.call(b),"date");if(z(b))return k(b)}var r="",s=!1,u=["{","}"];if(o(b)&&(s=!0,u=["[","]"]),A(b)){var v=b.name?": "+b.name:"";r=" [Function"+v+"]"}if(w(b)&&(r=" "+RegExp.prototype.toString.call(b)),y(b)&&(r=" "+Date.prototype.toUTCString.call(b)),z(b)&&(r=" "+k(b)),0===g.length&&(!s||0==b.length))return u[0]+r+u[1];if(0>d)return w(b)?a.stylize(RegExp.prototype.toString.call(b),"regexp"):a.stylize("[Object]","special");a.seen.push(b);var x;return x=s?l(a,b,d,p,g):g.map(function(c){return m(a,b,d,p,c,s)}),a.seen.pop(),n(x,r,u)}function j(a,b){if(v(b))return a.stylize("undefined","undefined");if(t(b)){var c="'"+JSON.stringify(b).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return a.stylize(c,"string")}return s(b)?a.stylize(""+b,"number"):p(b)?a.stylize(""+b,"boolean"):q(b)?a.stylize("null","null"):void 0}function k(a){return"["+Error.prototype.toString.call(a)+"]"}function l(a,b,c,d,e){for(var f=[],g=0,h=b.length;h>g;++g)F(b,String(g))?f.push(m(a,b,c,d,String(g),!0)):f.push("");return e.forEach(function(e){e.match(/^\d+$/)||f.push(m(a,b,c,d,e,!0))}),f}function m(a,b,c,d,e,f){var g,h,j;if(j=Object.getOwnPropertyDescriptor(b,e)||{value:b[e]},j.get?h=j.set?a.stylize("[Getter/Setter]","special"):a.stylize("[Getter]","special"):j.set&&(h=a.stylize("[Setter]","special")),F(d,e)||(g="["+e+"]"),h||(a.seen.indexOf(j.value)<0?(h=q(c)?i(a,j.value,null):i(a,j.value,c-1),h.indexOf("\n")>-1&&(h=f?h.split("\n").map(function(a){return"  "+a}).join("\n").substr(2):"\n"+h.split("\n").map(function(a){return"   "+a}).join("\n"))):h=a.stylize("[Circular]","special")),v(g)){if(f&&e.match(/^\d+$/))return h;g=JSON.stringify(""+e),g.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(g=g.substr(1,g.length-2),g=a.stylize(g,"name")):(g=g.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),g=a.stylize(g,"string"))}return g+": "+h}function n(a,b,c){var d=0,e=a.reduce(function(a,b){return d++,b.indexOf("\n")>=0&&d++,a+b.replace(/\u001b\[\d\d?m/g,"").length+1},0);return e>60?c[0]+(""===b?"":b+"\n ")+" "+a.join(",\n  ")+" "+c[1]:c[0]+b+" "+a.join(", ")+" "+c[1]}function o(a){return Array.isArray(a)}function p(a){return"boolean"==typeof a}function q(a){return null===a}function r(a){return null==a}function s(a){return"number"==typeof a}function t(a){return"string"==typeof a}function u(a){return"symbol"==typeof a}function v(a){return void 0===a}function w(a){return x(a)&&"[object RegExp]"===C(a)}function x(a){return"object"==typeof a&&null!==a}function y(a){return x(a)&&"[object Date]"===C(a)}function z(a){return x(a)&&("[object Error]"===C(a)||a instanceof Error)}function A(a){return"function"==typeof a}function B(a){return null===a||"boolean"==typeof a||"number"==typeof a||"string"==typeof a||"symbol"==typeof a||"undefined"==typeof a}function C(a){return Object.prototype.toString.call(a)}function D(a){return 10>a?"0"+a.toString(10):a.toString(10)}function E(){var a=new Date,b=[D(a.getHours()),D(a.getMinutes()),D(a.getSeconds())].join(":");return[a.getDate(),J[a.getMonth()],b].join(" ")}function F(a,b){return Object.prototype.hasOwnProperty.call(a,b)}var G=/%[sdj%]/g;c.format=function(a){if(!t(a)){for(var b=[],c=0;c<arguments.length;c++)b.push(e(arguments[c]));return b.join(" ")}for(var c=1,d=arguments,f=d.length,g=String(a).replace(G,function(a){if("%%"===a)return"%";if(c>=f)return a;switch(a){case"%s":return String(d[c++]);case"%d":return Number(d[c++]);case"%j":try{return JSON.stringify(d[c++])}catch(b){return"[Circular]"}default:return a}}),h=d[c];f>c;h=d[++c])g+=q(h)||!x(h)?" "+h:" "+e(h);return g},c.deprecate=function(a,e){function f(){if(!g){if(b.throwDeprecation)throw new Error(e);b.traceDeprecation?console.trace(e):console.error(e),g=!0}return a.apply(this,arguments)}if(v(d.process))return function(){return c.deprecate(a,e).apply(this,arguments)};if(b.noDeprecation===!0)return a;var g=!1;return f};var H,I={};c.debuglog=function(a){if(v(H)&&(H=b.env.NODE_DEBUG||""),a=a.toUpperCase(),!I[a])if(new RegExp("\\b"+a+"\\b","i").test(H)){var d=b.pid;I[a]=function(){var b=c.format.apply(c,arguments);console.error("%s %d: %s",a,d,b)}}else I[a]=function(){};return I[a]},c.inspect=e,e.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},e.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},c.isArray=o,c.isBoolean=p,c.isNull=q,c.isNullOrUndefined=r,c.isNumber=s,c.isString=t,c.isSymbol=u,c.isUndefined=v,c.isRegExp=w,c.isObject=x,c.isDate=y,c.isError=z,c.isFunction=A,c.isPrimitive=B,c.isBuffer=a("./support/isBuffer");var J=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];c.log=function(){console.log("%s - %s",E(),c.format.apply(c,arguments))},c.inherits=a("inherits"),c._extend=function(a,b){if(!b||!x(b))return a;for(var c=Object.keys(b),d=c.length;d--;)a[c[d]]=b[c[d]];return a}}).call(this,a("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./support/isBuffer":72,_process:42,inherits:38}],74:[function(a,b,c){function d(){for(var a={},b=0;b<arguments.length;b++){var c=arguments[b];for(var d in c)e.call(c,d)&&(a[d]=c[d])}return a}b.exports=d;var e=Object.prototype.hasOwnProperty},{}],75:[function(a,b,c){c=b.exports=function(a){for(var b=0;b<a.length;)if(9==a[b]||10==a[b]||13==a[b]||32<=a[b]&&a[b]<=126)b+=1;else if(194<=a[b]&&a[b]<=223&&128<=a[b+1]&&a[b+1]<=191)b+=2;else if(224==a[b]&&160<=a[b+1]&&a[b+1]<=191&&128<=a[b+2]&&a[b+2]<=191||(225<=a[b]&&a[b]<=236||238==a[b]||239==a[b])&&128<=a[b+1]&&a[b+1]<=191&&128<=a[b+2]&&a[b+2]<=191||237==a[b]&&128<=a[b+1]&&a[b+1]<=159&&128<=a[b+2]&&a[b+2]<=191)b+=3;else{if(!(240==a[b]&&144<=a[b+1]&&a[b+1]<=191&&128<=a[b+2]&&a[b+2]<=191&&128<=a[b+3]&&a[b+3]<=191||241<=a[b]&&a[b]<=243&&128<=a[b+1]&&a[b+1]<=191&&128<=a[b+2]&&a[b+2]<=191&&128<=a[b+3]&&a[b+3]<=191||244==a[b]&&128<=a[b+1]&&a[b+1]<=143&&128<=a[b+2]&&a[b+2]<=191&&128<=a[b+3]&&a[b+3]<=191))return!1;b+=4}return!0}},{}],76:[function(a,b,c){function d(a){var b=-1,c=null==a?0:a.length;for(this.clear();++b<c;){var d=a[b];this.set(d[0],d[1])}}var e=a("./_hashClear"),f=a("./_hashDelete"),g=a("./_hashGet"),h=a("./_hashHas"),i=a("./_hashSet");d.prototype.clear=e,d.prototype["delete"]=f,d.prototype.get=g,d.prototype.has=h,d.prototype.set=i,b.exports=d},{"./_hashClear":97,"./_hashDelete":98,"./_hashGet":99,"./_hashHas":100,"./_hashSet":101}],77:[function(a,b,c){function d(a){var b=-1,c=null==a?0:a.length;for(this.clear();++b<c;){var d=a[b];this.set(d[0],d[1])}}var e=a("./_listCacheClear"),f=a("./_listCacheDelete"),g=a("./_listCacheGet"),h=a("./_listCacheHas"),i=a("./_listCacheSet");d.prototype.clear=e,d.prototype["delete"]=f,d.prototype.get=g,d.prototype.has=h,d.prototype.set=i,b.exports=d},{"./_listCacheClear":106,"./_listCacheDelete":107,"./_listCacheGet":108,"./_listCacheHas":109,"./_listCacheSet":110}],78:[function(a,b,c){var d=a("./_getNative"),e=a("./_root"),f=d(e,"Map");b.exports=f},{"./_getNative":94,"./_root":119}],79:[function(a,b,c){function d(a){var b=-1,c=null==a?0:a.length;for(this.clear();++b<c;){var d=a[b];this.set(d[0],d[1])}}var e=a("./_mapCacheClear"),f=a("./_mapCacheDelete"),g=a("./_mapCacheGet"),h=a("./_mapCacheHas"),i=a("./_mapCacheSet");d.prototype.clear=e,d.prototype["delete"]=f,d.prototype.get=g,d.prototype.has=h,d.prototype.set=i,b.exports=d},{"./_mapCacheClear":111,"./_mapCacheDelete":112,"./_mapCacheGet":113,"./_mapCacheHas":114,"./_mapCacheSet":115}],80:[function(a,b,c){var d=a("./_root"),e=d.Symbol;b.exports=e},{"./_root":119}],81:[function(a,b,c){function d(a,b){for(var c=-1,d=null==a?0:a.length,e=Array(d);++c<d;)e[c]=b(a[c],c,a);return e}b.exports=d},{}],82:[function(a,b,c){function d(a,b,c){var d=a[b];h.call(a,b)&&f(d,c)&&(void 0!==c||b in a)||e(a,b,c)}var e=a("./_baseAssignValue"),f=a("./eq"),g=Object.prototype,h=g.hasOwnProperty;b.exports=d},{"./_baseAssignValue":84,"./eq":123}],83:[function(a,b,c){function d(a,b){for(var c=a.length;c--;)if(e(a[c][0],b))return c;return-1}var e=a("./eq");b.exports=d},{"./eq":123}],84:[function(a,b,c){function d(a,b,c){"__proto__"==b&&e?e(a,b,{configurable:!0,enumerable:!0,value:c,writable:!0}):a[b]=c}var e=a("./_defineProperty");b.exports=d},{"./_defineProperty":91}],85:[function(a,b,c){function d(a){return null==a?void 0===a?i:h:j&&j in Object(a)?f(a):g(a)}var e=a("./_Symbol"),f=a("./_getRawTag"),g=a("./_objectToString"),h="[object Null]",i="[object Undefined]",j=e?e.toStringTag:void 0;b.exports=d},{"./_Symbol":80,"./_getRawTag":95,"./_objectToString":118}],86:[function(a,b,c){function d(a){if(!g(a)||f(a))return!1;var b=e(a)?o:j;return b.test(h(a))}var e=a("./isFunction"),f=a("./_isMasked"),g=a("./isObject"),h=a("./_toSource"),i=/[\\^$.*+?()[\]{}|]/g,j=/^\[object .+?Constructor\]$/,k=Function.prototype,l=Object.prototype,m=k.toString,n=l.hasOwnProperty,o=RegExp("^"+m.call(n).replace(i,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");b.exports=d},{"./_isMasked":105,"./_toSource":122,"./isFunction":125,"./isObject":126}],87:[function(a,b,c){function d(a,b,c,d){if(!h(a))return a;b=f(b,a);for(var j=-1,k=b.length,l=k-1,m=a;null!=m&&++j<k;){var n=i(b[j]),o=c;if(j!=l){var p=m[n];o=d?d(p,n,m):void 0,void 0===o&&(o=h(p)?p:g(b[j+1])?[]:{})}e(m,n,o),m=m[n]}return a}var e=a("./_assignValue"),f=a("./_castPath"),g=a("./_isIndex"),h=a("./isObject"),i=a("./_toKey");b.exports=d},{"./_assignValue":82,"./_castPath":89,"./_isIndex":102,"./_toKey":121,"./isObject":126}],88:[function(a,b,c){function d(a){if("string"==typeof a)return a;if(g(a))return f(a,d)+"";if(h(a))return k?k.call(a):"";var b=a+"";return"0"==b&&1/a==-i?"-0":b}var e=a("./_Symbol"),f=a("./_arrayMap"),g=a("./isArray"),h=a("./isSymbol"),i=1/0,j=e?e.prototype:void 0,k=j?j.toString:void 0;b.exports=d},{"./_Symbol":80,"./_arrayMap":81,"./isArray":124,"./isSymbol":128}],89:[function(a,b,c){function d(a,b){return e(a)?a:f(a,b)?[a]:g(h(a))}var e=a("./isArray"),f=a("./_isKey"),g=a("./_stringToPath"),h=a("./toString");b.exports=d},{"./_isKey":103,"./_stringToPath":120,"./isArray":124,"./toString":132}],90:[function(a,b,c){var d=a("./_root"),e=d["__core-js_shared__"];b.exports=e},{"./_root":119}],91:[function(a,b,c){var d=a("./_getNative"),e=function(){try{var a=d(Object,"defineProperty");return a({},"",{}),a}catch(b){}}();b.exports=e},{"./_getNative":94}],92:[function(a,b,c){(function(a){var c="object"==typeof a&&a&&a.Object===Object&&a;b.exports=c}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],93:[function(a,b,c){function d(a,b){var c=a.__data__;return e(b)?c["string"==typeof b?"string":"hash"]:c.map}var e=a("./_isKeyable");b.exports=d},{"./_isKeyable":104}],94:[function(a,b,c){function d(a,b){var c=f(a,b);return e(c)?c:void 0}var e=a("./_baseIsNative"),f=a("./_getValue");b.exports=d},{"./_baseIsNative":86,"./_getValue":96}],95:[function(a,b,c){function d(a){var b=g.call(a,i),c=a[i];try{a[i]=void 0;var d=!0}catch(e){}var f=h.call(a);return d&&(b?a[i]=c:delete a[i]),f}var e=a("./_Symbol"),f=Object.prototype,g=f.hasOwnProperty,h=f.toString,i=e?e.toStringTag:void 0;b.exports=d},{"./_Symbol":80}],96:[function(a,b,c){function d(a,b){return null==a?void 0:a[b]}b.exports=d},{}],97:[function(a,b,c){function d(){this.__data__=e?e(null):{},this.size=0}var e=a("./_nativeCreate");b.exports=d},{"./_nativeCreate":117}],98:[function(a,b,c){function d(a){var b=this.has(a)&&delete this.__data__[a];return this.size-=b?1:0,b}b.exports=d},{}],99:[function(a,b,c){function d(a){var b=this.__data__;if(e){var c=b[a];return c===f?void 0:c}return h.call(b,a)?b[a]:void 0}var e=a("./_nativeCreate"),f="__lodash_hash_undefined__",g=Object.prototype,h=g.hasOwnProperty;b.exports=d},{"./_nativeCreate":117}],100:[function(a,b,c){function d(a){var b=this.__data__;return e?void 0!==b[a]:g.call(b,a)}var e=a("./_nativeCreate"),f=Object.prototype,g=f.hasOwnProperty;b.exports=d},{"./_nativeCreate":117}],101:[function(a,b,c){function d(a,b){var c=this.__data__;return this.size+=this.has(a)?0:1,c[a]=e&&void 0===b?f:b,this}var e=a("./_nativeCreate"),f="__lodash_hash_undefined__";b.exports=d},{"./_nativeCreate":117}],102:[function(a,b,c){function d(a,b){return b=null==b?e:b,!!b&&("number"==typeof a||f.test(a))&&a>-1&&a%1==0&&b>a}var e=9007199254740991,f=/^(?:0|[1-9]\d*)$/;b.exports=d},{}],103:[function(a,b,c){function d(a,b){if(e(a))return!1;var c=typeof a;return"number"==c||"symbol"==c||"boolean"==c||null==a||f(a)?!0:h.test(a)||!g.test(a)||null!=b&&a in Object(b)}var e=a("./isArray"),f=a("./isSymbol"),g=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,h=/^\w*$/;b.exports=d},{"./isArray":124,"./isSymbol":128}],104:[function(a,b,c){function d(a){var b=typeof a;return"string"==b||"number"==b||"symbol"==b||"boolean"==b?"__proto__"!==a:null===a}b.exports=d},{}],105:[function(a,b,c){function d(a){return!!f&&f in a}var e=a("./_coreJsData"),f=function(){var a=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||"");return a?"Symbol(src)_1."+a:""}();b.exports=d},{"./_coreJsData":90}],106:[function(a,b,c){function d(){this.__data__=[],this.size=0}b.exports=d},{}],107:[function(a,b,c){function d(a){var b=this.__data__,c=e(b,a);if(0>c)return!1;var d=b.length-1;return c==d?b.pop():g.call(b,c,1),--this.size,!0}var e=a("./_assocIndexOf"),f=Array.prototype,g=f.splice;b.exports=d},{"./_assocIndexOf":83}],108:[function(a,b,c){function d(a){var b=this.__data__,c=e(b,a);return 0>c?void 0:b[c][1]}var e=a("./_assocIndexOf");b.exports=d},{"./_assocIndexOf":83}],109:[function(a,b,c){function d(a){return e(this.__data__,a)>-1}var e=a("./_assocIndexOf");b.exports=d},{"./_assocIndexOf":83}],110:[function(a,b,c){function d(a,b){var c=this.__data__,d=e(c,a);return 0>d?(++this.size,c.push([a,b])):c[d][1]=b,this}var e=a("./_assocIndexOf");b.exports=d},{"./_assocIndexOf":83}],111:[function(a,b,c){function d(){this.size=0,this.__data__={hash:new e,map:new(g||f),string:new e}}var e=a("./_Hash"),f=a("./_ListCache"),g=a("./_Map");b.exports=d},{"./_Hash":76,"./_ListCache":77,"./_Map":78}],112:[function(a,b,c){function d(a){var b=e(this,a)["delete"](a);return this.size-=b?1:0,b}var e=a("./_getMapData");b.exports=d},{"./_getMapData":93}],113:[function(a,b,c){function d(a){return e(this,a).get(a)}var e=a("./_getMapData");b.exports=d},{"./_getMapData":93}],114:[function(a,b,c){function d(a){return e(this,a).has(a)}var e=a("./_getMapData");b.exports=d},{"./_getMapData":93}],115:[function(a,b,c){function d(a,b){var c=e(this,a),d=c.size;return c.set(a,b),this.size+=c.size==d?0:1,this}var e=a("./_getMapData");b.exports=d},{"./_getMapData":93}],116:[function(a,b,c){function d(a){var b=e(a,function(a){return c.size===f&&c.clear(),a}),c=b.cache;return b}var e=a("./memoize"),f=500;b.exports=d},{"./memoize":130}],117:[function(a,b,c){var d=a("./_getNative"),e=d(Object,"create");b.exports=e},{"./_getNative":94}],118:[function(a,b,c){function d(a){return f.call(a)}var e=Object.prototype,f=e.toString;b.exports=d},{}],119:[function(a,b,c){var d=a("./_freeGlobal"),e="object"==typeof self&&self&&self.Object===Object&&self,f=d||e||Function("return this")();b.exports=f},{"./_freeGlobal":92}],120:[function(a,b,c){var d=a("./_memoizeCapped"),e=/^\./,f=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,g=/\\(\\)?/g,h=d(function(a){var b=[];return e.test(a)&&b.push(""),a.replace(f,function(a,c,d,e){b.push(d?e.replace(g,"$1"):c||a)}),b});b.exports=h},{"./_memoizeCapped":116}],121:[function(a,b,c){function d(a){if("string"==typeof a||e(a))return a;var b=a+"";return"0"==b&&1/a==-f?"-0":b}var e=a("./isSymbol"),f=1/0;b.exports=d},{"./isSymbol":128}],122:[function(a,b,c){function d(a){if(null!=a){try{return f.call(a)}catch(b){}try{return a+""}catch(b){}}return""}var e=Function.prototype,f=e.toString;b.exports=d},{}],123:[function(a,b,c){function d(a,b){return a===b||a!==a&&b!==b}b.exports=d},{}],124:[function(a,b,c){var d=Array.isArray;b.exports=d},{}],125:[function(a,b,c){function d(a){if(!f(a))return!1;var b=e(a);return b==h||b==i||b==g||b==j}var e=a("./_baseGetTag"),f=a("./isObject"),g="[object AsyncFunction]",h="[object Function]",i="[object GeneratorFunction]",j="[object Proxy]";b.exports=d},{"./_baseGetTag":85,"./isObject":126}],126:[function(a,b,c){function d(a){var b=typeof a;return null!=a&&("object"==b||"function"==b)}b.exports=d},{}],127:[function(a,b,c){function d(a){return null!=a&&"object"==typeof a}b.exports=d},{}],128:[function(a,b,c){function d(a){return"symbol"==typeof a||f(a)&&e(a)==g}var e=a("./_baseGetTag"),f=a("./isObjectLike"),g="[object Symbol]";b.exports=d},{"./_baseGetTag":85,"./isObjectLike":127}],129:[function(a,b,c){(function(a){(function(){function d(a,b){return a.set(b[0],b[1]),a}function e(a,b){return a.add(b),a}function f(a,b,c){switch(c.length){case 0:return a.call(b);case 1:return a.call(b,c[0]);case 2:return a.call(b,c[0],c[1]);case 3:return a.call(b,c[0],c[1],c[2])}return a.apply(b,c)}function g(a,b,c,d){for(var e=-1,f=null==a?0:a.length;++e<f;){var g=a[e];b(d,g,c(g),a)}return d}function h(a,b){for(var c=-1,d=null==a?0:a.length;++c<d&&b(a[c],c,a)!==!1;);return a}function i(a,b){for(var c=null==a?0:a.length;c--&&b(a[c],c,a)!==!1;);return a}function j(a,b){for(var c=-1,d=null==a?0:a.length;++c<d;)if(!b(a[c],c,a))return!1;return!0}function k(a,b){for(var c=-1,d=null==a?0:a.length,e=0,f=[];++c<d;){var g=a[c];b(g,c,a)&&(f[e++]=g)}return f}function l(a,b){var c=null==a?0:a.length;return!!c&&w(a,b,0)>-1}function m(a,b,c){for(var d=-1,e=null==a?0:a.length;++d<e;)if(c(b,a[d]))return!0;return!1}function n(a,b){for(var c=-1,d=null==a?0:a.length,e=Array(d);++c<d;)e[c]=b(a[c],c,a);return e}function o(a,b){for(var c=-1,d=b.length,e=a.length;++c<d;)a[e+c]=b[c];return a}function p(a,b,c,d){var e=-1,f=null==a?0:a.length;for(d&&f&&(c=a[++e]);++e<f;)c=b(c,a[e],e,a);return c}function q(a,b,c,d){var e=null==a?0:a.length;for(d&&e&&(c=a[--e]);e--;)c=b(c,a[e],e,a);return c}function r(a,b){for(var c=-1,d=null==a?0:a.length;++c<d;)if(b(a[c],c,a))return!0;return!1}function s(a){return a.split("")}function t(a){return a.match(Pb)||[]}function u(a,b,c){var d;return c(a,function(a,c,e){return b(a,c,e)?(d=c,!1):void 0}),d}function v(a,b,c,d){for(var e=a.length,f=c+(d?1:-1);d?f--:++f<e;)if(b(a[f],f,a))return f;return-1}function w(a,b,c){return b===b?X(a,b,c):v(a,y,c)}function x(a,b,c,d){for(var e=c-1,f=a.length;++e<f;)if(d(a[e],b))return e;return-1}function y(a){return a!==a}function z(a,b){var c=null==a?0:a.length;return c?E(a,b)/c:Ja}function A(a){return function(b){return null==b?ca:b[a]}}function B(a){return function(b){return null==a?ca:a[b]}}function C(a,b,c,d,e){return e(a,function(a,e,f){c=d?(d=!1,a):b(c,a,e,f)}),c}function D(a,b){var c=a.length;for(a.sort(b);c--;)a[c]=a[c].value;return a}function E(a,b){for(var c,d=-1,e=a.length;++d<e;){var f=b(a[d]);f!==ca&&(c=c===ca?f:c+f)}return c}function F(a,b){for(var c=-1,d=Array(a);++c<a;)d[c]=b(c);return d}function G(a,b){return n(b,function(b){return[b,a[b]]})}function H(a){return function(b){return a(b)}}function I(a,b){return n(b,function(b){return a[b]})}function J(a,b){return a.has(b)}function K(a,b){for(var c=-1,d=a.length;++c<d&&w(b,a[c],0)>-1;);return c}function L(a,b){for(var c=a.length;c--&&w(b,a[c],0)>-1;);return c}function M(a,b){for(var c=a.length,d=0;c--;)a[c]===b&&++d;return d}function N(a){return"\\"+_c[a]}function O(a,b){return null==a?ca:a[b]}function P(a){return Sc.test(a)}function Q(a){return Tc.test(a)}function R(a){for(var b,c=[];!(b=a.next()).done;)c.push(b.value);return c}function S(a){var b=-1,c=Array(a.size);return a.forEach(function(a,d){c[++b]=[d,a]}),c}function T(a,b){return function(c){return a(b(c))}}function U(a,b){for(var c=-1,d=a.length,e=0,f=[];++c<d;){var g=a[c];(g===b||g===ja)&&(a[c]=ja,f[e++]=c)}return f}function V(a){var b=-1,c=Array(a.size);return a.forEach(function(a){c[++b]=a}),c}function W(a){var b=-1,c=Array(a.size);return a.forEach(function(a){c[++b]=[a,a]}),c}function X(a,b,c){for(var d=c-1,e=a.length;++d<e;)if(a[d]===b)return d;return-1}function Y(a,b,c){for(var d=c+1;d--;)if(a[d]===b)return d;return d}function Z(a){return P(a)?_(a):qd(a)}function $(a){return P(a)?aa(a):s(a)}function _(a){for(var b=Qc.lastIndex=0;Qc.test(a);)++b;return b}function aa(a){return a.match(Qc)||[]}function ba(a){return a.match(Rc)||[]}var ca,da="4.17.3",ea=200,fa="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",ga="Expected a function",ha="__lodash_hash_undefined__",ia=500,ja="__lodash_placeholder__",ka=1,la=2,ma=4,na=1,oa=2,pa=1,qa=2,ra=4,sa=8,ta=16,ua=32,va=64,wa=128,xa=256,ya=512,za=30,Aa="...",Ba=800,Ca=16,Da=1,Ea=2,Fa=3,Ga=1/0,Ha=9007199254740991,Ia=1.7976931348623157e308,Ja=NaN,Ka=4294967295,La=Ka-1,Ma=Ka>>>1,Na=[["ary",wa],["bind",pa],["bindKey",qa],["curry",sa],["curryRight",ta],["flip",ya],["partial",ua],["partialRight",va],["rearg",xa]],Oa="[object Arguments]",Pa="[object Array]",Qa="[object AsyncFunction]",Ra="[object Boolean]",Sa="[object Date]",Ta="[object DOMException]",Ua="[object Error]",Va="[object Function]",Wa="[object GeneratorFunction]",Xa="[object Map]",Ya="[object Number]",Za="[object Null]",$a="[object Object]",_a="[object Promise]",ab="[object Proxy]",bb="[object RegExp]",cb="[object Set]",db="[object String]",eb="[object Symbol]",fb="[object Undefined]",gb="[object WeakMap]",hb="[object WeakSet]",ib="[object ArrayBuffer]",jb="[object DataView]",kb="[object Float32Array]",lb="[object Float64Array]",mb="[object Int8Array]",nb="[object Int16Array]",ob="[object Int32Array]",pb="[object Uint8Array]",qb="[object Uint8ClampedArray]",rb="[object Uint16Array]",sb="[object Uint32Array]",tb=/\b__p \+= '';/g,ub=/\b(__p \+=) '' \+/g,vb=/(__e\(.*?\)|\b__t\)) \+\n'';/g,wb=/&(?:amp|lt|gt|quot|#39);/g,xb=/[&<>"']/g,yb=RegExp(wb.source),zb=RegExp(xb.source),Ab=/<%-([\s\S]+?)%>/g,Bb=/<%([\s\S]+?)%>/g,Cb=/<%=([\s\S]+?)%>/g,Db=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Eb=/^\w*$/,Fb=/^\./,Gb=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Hb=/[\\^$.*+?()[\]{}|]/g,Ib=RegExp(Hb.source),Jb=/^\s+|\s+$/g,Kb=/^\s+/,Lb=/\s+$/,Mb=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Nb=/\{\n\/\* \[wrapped with (.+)\] \*/,Ob=/,? & /,Pb=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Qb=/\\(\\)?/g,Rb=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Sb=/\w*$/,Tb=/^[-+]0x[0-9a-f]+$/i,Ub=/^0b[01]+$/i,Vb=/^\[object .+?Constructor\]$/,Wb=/^0o[0-7]+$/i,Xb=/^(?:0|[1-9]\d*)$/,Yb=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Zb=/($^)/,$b=/['\n\r\u2028\u2029\\]/g,_b="\\ud800-\\udfff",ac="\\u0300-\\u036f",bc="\\ufe20-\\ufe2f",cc="\\u20d0-\\u20ff",dc=ac+bc+cc,ec="\\u2700-\\u27bf",fc="a-z\\xdf-\\xf6\\xf8-\\xff",gc="\\xac\\xb1\\xd7\\xf7",hc="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",ic="\\u2000-\\u206f",jc=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",kc="A-Z\\xc0-\\xd6\\xd8-\\xde",lc="\\ufe0e\\ufe0f",mc=gc+hc+ic+jc,nc="['’]",oc="["+_b+"]",pc="["+mc+"]",qc="["+dc+"]",rc="\\d+",sc="["+ec+"]",tc="["+fc+"]",uc="[^"+_b+mc+rc+ec+fc+kc+"]",vc="\\ud83c[\\udffb-\\udfff]",wc="(?:"+qc+"|"+vc+")",xc="[^"+_b+"]",yc="(?:\\ud83c[\\udde6-\\uddff]){2}",zc="[\\ud800-\\udbff][\\udc00-\\udfff]",Ac="["+kc+"]",Bc="\\u200d",Cc="(?:"+tc+"|"+uc+")",Dc="(?:"+Ac+"|"+uc+")",Ec="(?:"+nc+"(?:d|ll|m|re|s|t|ve))?",Fc="(?:"+nc+"(?:D|LL|M|RE|S|T|VE))?",Gc=wc+"?",Hc="["+lc+"]?",Ic="(?:"+Bc+"(?:"+[xc,yc,zc].join("|")+")"+Hc+Gc+")*",Jc="\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)",Kc="\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)",Lc=Hc+Gc+Ic,Mc="(?:"+[sc,yc,zc].join("|")+")"+Lc,Nc="(?:"+[xc+qc+"?",qc,yc,zc,oc].join("|")+")",Oc=RegExp(nc,"g"),Pc=RegExp(qc,"g"),Qc=RegExp(vc+"(?="+vc+")|"+Nc+Lc,"g"),Rc=RegExp([Ac+"?"+tc+"+"+Ec+"(?="+[pc,Ac,"$"].join("|")+")",Dc+"+"+Fc+"(?="+[pc,Ac+Cc,"$"].join("|")+")",Ac+"?"+Cc+"+"+Ec,Ac+"+"+Fc,Kc,Jc,rc,Mc].join("|"),"g"),Sc=RegExp("["+Bc+_b+dc+lc+"]"),Tc=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Uc=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Vc=-1,Wc={};Wc[kb]=Wc[lb]=Wc[mb]=Wc[nb]=Wc[ob]=Wc[pb]=Wc[qb]=Wc[rb]=Wc[sb]=!0,Wc[Oa]=Wc[Pa]=Wc[ib]=Wc[Ra]=Wc[jb]=Wc[Sa]=Wc[Ua]=Wc[Va]=Wc[Xa]=Wc[Ya]=Wc[$a]=Wc[bb]=Wc[cb]=Wc[db]=Wc[gb]=!1;var Xc={};Xc[Oa]=Xc[Pa]=Xc[ib]=Xc[jb]=Xc[Ra]=Xc[Sa]=Xc[kb]=Xc[lb]=Xc[mb]=Xc[nb]=Xc[ob]=Xc[Xa]=Xc[Ya]=Xc[$a]=Xc[bb]=Xc[cb]=Xc[db]=Xc[eb]=Xc[pb]=Xc[qb]=Xc[rb]=Xc[sb]=!0,Xc[Ua]=Xc[Va]=Xc[gb]=!1;var Yc={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"},Zc={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},$c={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"},_c={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ad=parseFloat,bd=parseInt,cd="object"==typeof a&&a&&a.Object===Object&&a,dd="object"==typeof self&&self&&self.Object===Object&&self,ed=cd||dd||Function("return this")(),fd="object"==typeof c&&c&&!c.nodeType&&c,gd=fd&&"object"==typeof b&&b&&!b.nodeType&&b,hd=gd&&gd.exports===fd,id=hd&&cd.process,jd=function(){try{return id&&id.binding&&id.binding("util")}catch(a){}}(),kd=jd&&jd.isArrayBuffer,ld=jd&&jd.isDate,md=jd&&jd.isMap,nd=jd&&jd.isRegExp,od=jd&&jd.isSet,pd=jd&&jd.isTypedArray,qd=A("length"),rd=B(Yc),sd=B(Zc),td=B($c),ud=function wd(a){function b(a){if(ii(a)&&!tm(a)&&!(a instanceof B)){if(a instanceof s)return a;if(tk.call(a,"__wrapped__"))return fg(a)}return new s(a)}function c(){}function s(a,b){this.__wrapped__=a,this.__actions__=[],this.__chain__=!!b,this.__index__=0,this.__values__=ca}function B(a){this.__wrapped__=a,this.__actions__=[],
-this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Ka,this.__views__=[]}function X(){var a=new B(this.__wrapped__);return a.__actions__=Ne(this.__actions__),a.__dir__=this.__dir__,a.__filtered__=this.__filtered__,a.__iteratees__=Ne(this.__iteratees__),a.__takeCount__=this.__takeCount__,a.__views__=Ne(this.__views__),a}function _(){if(this.__filtered__){var a=new B(this);a.__dir__=-1,a.__filtered__=!0}else a=this.clone(),a.__dir__*=-1;return a}function aa(){var a=this.__wrapped__.value(),b=this.__dir__,c=tm(a),d=0>b,e=c?a.length:0,f=Df(0,e,this.__views__),g=f.start,h=f.end,i=h-g,j=d?h:g-1,k=this.__iteratees__,l=k.length,m=0,n=Xk(i,this.__takeCount__);if(!c||!d&&e==i&&n==i)return ue(a,this.__actions__);var o=[];a:for(;i--&&n>m;){j+=b;for(var p=-1,q=a[j];++p<l;){var r=k[p],s=r.iteratee,t=r.type,u=s(q);if(t==Ea)q=u;else if(!u){if(t==Da)continue a;break a}}o[m++]=q}return o}function Pb(a){var b=-1,c=null==a?0:a.length;for(this.clear();++b<c;){var d=a[b];this.set(d[0],d[1])}}function _b(){this.__data__=fl?fl(null):{},this.size=0}function ac(a){var b=this.has(a)&&delete this.__data__[a];return this.size-=b?1:0,b}function bc(a){var b=this.__data__;if(fl){var c=b[a];return c===ha?ca:c}return tk.call(b,a)?b[a]:ca}function cc(a){var b=this.__data__;return fl?b[a]!==ca:tk.call(b,a)}function dc(a,b){var c=this.__data__;return this.size+=this.has(a)?0:1,c[a]=fl&&b===ca?ha:b,this}function ec(a){var b=-1,c=null==a?0:a.length;for(this.clear();++b<c;){var d=a[b];this.set(d[0],d[1])}}function fc(){this.__data__=[],this.size=0}function gc(a){var b=this.__data__,c=Fc(b,a);if(0>c)return!1;var d=b.length-1;return c==d?b.pop():Hk.call(b,c,1),--this.size,!0}function hc(a){var b=this.__data__,c=Fc(b,a);return 0>c?ca:b[c][1]}function ic(a){return Fc(this.__data__,a)>-1}function jc(a,b){var c=this.__data__,d=Fc(c,a);return 0>d?(++this.size,c.push([a,b])):c[d][1]=b,this}function kc(a){var b=-1,c=null==a?0:a.length;for(this.clear();++b<c;){var d=a[b];this.set(d[0],d[1])}}function lc(){this.size=0,this.__data__={hash:new Pb,map:new(bl||ec),string:new Pb}}function mc(a){var b=zf(this,a)["delete"](a);return this.size-=b?1:0,b}function nc(a){return zf(this,a).get(a)}function oc(a){return zf(this,a).has(a)}function pc(a,b){var c=zf(this,a),d=c.size;return c.set(a,b),this.size+=c.size==d?0:1,this}function qc(a){var b=-1,c=null==a?0:a.length;for(this.__data__=new kc;++b<c;)this.add(a[b])}function rc(a){return this.__data__.set(a,ha),this}function sc(a){return this.__data__.has(a)}function tc(a){var b=this.__data__=new ec(a);this.size=b.size}function uc(){this.__data__=new ec,this.size=0}function vc(a){var b=this.__data__,c=b["delete"](a);return this.size=b.size,c}function wc(a){return this.__data__.get(a)}function xc(a){return this.__data__.has(a)}function yc(a,b){var c=this.__data__;if(c instanceof ec){var d=c.__data__;if(!bl||d.length<ea-1)return d.push([a,b]),this.size=++c.size,this;c=this.__data__=new kc(d)}return c.set(a,b),this.size=c.size,this}function zc(a,b){var c=tm(a),d=!c&&sm(a),e=!c&&!d&&vm(a),f=!c&&!d&&!e&&Am(a),g=c||d||e||f,h=g?F(a.length,mk):[],i=h.length;for(var j in a)!b&&!tk.call(a,j)||g&&("length"==j||e&&("offset"==j||"parent"==j)||f&&("buffer"==j||"byteLength"==j||"byteOffset"==j)||Lf(j,i))||h.push(j);return h}function Ac(a){var b=a.length;return b?a[be(0,b-1)]:ca}function Bc(a,b){return bg(Ne(a),Lc(b,0,a.length))}function Cc(a){return bg(Ne(a))}function Dc(a,b,c){(c!==ca&&!Wh(a[b],c)||c===ca&&!(b in a))&&Jc(a,b,c)}function Ec(a,b,c){var d=a[b];tk.call(a,b)&&Wh(d,c)&&(c!==ca||b in a)||Jc(a,b,c)}function Fc(a,b){for(var c=a.length;c--;)if(Wh(a[c][0],b))return c;return-1}function Gc(a,b,c,d){return rl(a,function(a,e,f){b(d,a,c(a),f)}),d}function Hc(a,b){return a&&Oe(b,Ri(b),a)}function Ic(a,b){return a&&Oe(b,Si(b),a)}function Jc(a,b,c){"__proto__"==b&&Lk?Lk(a,b,{configurable:!0,enumerable:!0,value:c,writable:!0}):a[b]=c}function Kc(a,b){for(var c=-1,d=b.length,e=fk(d),f=null==a;++c<d;)e[c]=f?ca:Oi(a,b[c]);return e}function Lc(a,b,c){return a===a&&(c!==ca&&(a=c>=a?a:c),b!==ca&&(a=a>=b?a:b)),a}function Mc(a,b,c,d,e,f){var g,i=b&ka,j=b&la,k=b&ma;if(c&&(g=e?c(a,d,e,f):c(a)),g!==ca)return g;if(!hi(a))return a;var l=tm(a);if(l){if(g=Gf(a),!i)return Ne(a,g)}else{var m=Dl(a),n=m==Va||m==Wa;if(vm(a))return Be(a,i);if(m==$a||m==Oa||n&&!e){if(g=j||n?{}:Hf(a),!i)return j?Qe(a,Ic(g,a)):Pe(a,Hc(g,a))}else{if(!Xc[m])return e?a:{};g=If(a,m,Mc,i)}}f||(f=new tc);var o=f.get(a);if(o)return o;f.set(a,g);var p=k?j?vf:uf:j?Si:Ri,q=l?ca:p(a);return h(q||a,function(d,e){q&&(e=d,d=a[e]),Ec(g,e,Mc(d,b,c,e,a,f))}),g}function Nc(a){var b=Ri(a);return function(c){return Qc(c,a,b)}}function Qc(a,b,c){var d=c.length;if(null==a)return!d;for(a=kk(a);d--;){var e=c[d],f=b[e],g=a[e];if(g===ca&&!(e in a)||!f(g))return!1}return!0}function Rc(a,b,c){if("function"!=typeof a)throw new nk(ga);return Gl(function(){a.apply(ca,c)},b)}function Sc(a,b,c,d){var e=-1,f=l,g=!0,h=a.length,i=[],j=b.length;if(!h)return i;c&&(b=n(b,H(c))),d?(f=m,g=!1):b.length>=ea&&(f=J,g=!1,b=new qc(b));a:for(;++e<h;){var k=a[e],o=null==c?k:c(k);if(k=d||0!==k?k:0,g&&o===o){for(var p=j;p--;)if(b[p]===o)continue a;i.push(k)}else f(b,o,d)||i.push(k)}return i}function Tc(a,b){var c=!0;return rl(a,function(a,d,e){return c=!!b(a,d,e)}),c}function Yc(a,b,c){for(var d=-1,e=a.length;++d<e;){var f=a[d],g=b(f);if(null!=g&&(h===ca?g===g&&!ti(g):c(g,h)))var h=g,i=f}return i}function Zc(a,b,c,d){var e=a.length;for(c=zi(c),0>c&&(c=-c>e?0:e+c),d=d===ca||d>e?e:zi(d),0>d&&(d+=e),d=c>d?0:Ai(d);d>c;)a[c++]=b;return a}function $c(a,b){var c=[];return rl(a,function(a,d,e){b(a,d,e)&&c.push(a)}),c}function _c(a,b,c,d,e){var f=-1,g=a.length;for(c||(c=Kf),e||(e=[]);++f<g;){var h=a[f];b>0&&c(h)?b>1?_c(h,b-1,c,d,e):o(e,h):d||(e[e.length]=h)}return e}function cd(a,b){return a&&tl(a,b,Ri)}function dd(a,b){return a&&ul(a,b,Ri)}function fd(a,b){return k(b,function(b){return ei(a[b])})}function gd(a,b){b=ze(b,a);for(var c=0,d=b.length;null!=a&&d>c;)a=a[cg(b[c++])];return c&&c==d?a:ca}function id(a,b,c){var d=b(a);return tm(a)?d:o(d,c(a))}function jd(a){return null==a?a===ca?fb:Za:Kk&&Kk in kk(a)?Cf(a):Xf(a)}function qd(a,b){return a>b}function ud(a,b){return null!=a&&tk.call(a,b)}function xd(a,b){return null!=a&&b in kk(a)}function yd(a,b,c){return a>=Xk(b,c)&&a<Wk(b,c)}function zd(a,b,c){for(var d=c?m:l,e=a[0].length,f=a.length,g=f,h=fk(f),i=1/0,j=[];g--;){var k=a[g];g&&b&&(k=n(k,H(b))),i=Xk(k.length,i),h[g]=!c&&(b||e>=120&&k.length>=120)?new qc(g&&k):ca}k=a[0];var o=-1,p=h[0];a:for(;++o<e&&j.length<i;){var q=k[o],r=b?b(q):q;if(q=c||0!==q?q:0,!(p?J(p,r):d(j,r,c))){for(g=f;--g;){var s=h[g];if(!(s?J(s,r):d(a[g],r,c)))continue a}p&&p.push(r),j.push(q)}}return j}function Ad(a,b,c,d){return cd(a,function(a,e,f){b(d,c(a),e,f)}),d}function Bd(a,b,c){b=ze(b,a),a=Zf(a,b);var d=null==a?a:a[cg(yg(b))];return null==d?ca:f(d,a,c)}function Cd(a){return ii(a)&&jd(a)==Oa}function Dd(a){return ii(a)&&jd(a)==ib}function Ed(a){return ii(a)&&jd(a)==Sa}function Fd(a,b,c,d,e){return a===b?!0:null==a||null==b||!ii(a)&&!ii(b)?a!==a&&b!==b:Gd(a,b,c,d,Fd,e)}function Gd(a,b,c,d,e,f){var g=tm(a),h=tm(b),i=g?Pa:Dl(a),j=h?Pa:Dl(b);i=i==Oa?$a:i,j=j==Oa?$a:j;var k=i==$a,l=j==$a,m=i==j;if(m&&vm(a)){if(!vm(b))return!1;g=!0,k=!1}if(m&&!k)return f||(f=new tc),g||Am(a)?qf(a,b,c,d,e,f):rf(a,b,i,c,d,e,f);if(!(c&na)){var n=k&&tk.call(a,"__wrapped__"),o=l&&tk.call(b,"__wrapped__");if(n||o){var p=n?a.value():a,q=o?b.value():b;return f||(f=new tc),e(p,q,c,d,f)}}return m?(f||(f=new tc),sf(a,b,c,d,e,f)):!1}function Hd(a){return ii(a)&&Dl(a)==Xa}function Id(a,b,c,d){var e=c.length,f=e,g=!d;if(null==a)return!f;for(a=kk(a);e--;){var h=c[e];if(g&&h[2]?h[1]!==a[h[0]]:!(h[0]in a))return!1}for(;++e<f;){h=c[e];var i=h[0],j=a[i],k=h[1];if(g&&h[2]){if(j===ca&&!(i in a))return!1}else{var l=new tc;if(d)var m=d(j,k,i,a,b,l);if(!(m===ca?Fd(k,j,na|oa,d,l):m))return!1}}return!0}function Jd(a){if(!hi(a)||Qf(a))return!1;var b=ei(a)?zk:Vb;return b.test(dg(a))}function Kd(a){return ii(a)&&jd(a)==bb}function Ld(a){return ii(a)&&Dl(a)==cb}function Md(a){return ii(a)&&gi(a.length)&&!!Wc[jd(a)]}function Nd(a){return"function"==typeof a?a:null==a?Hj:"object"==typeof a?tm(a)?Td(a[0],a[1]):Sd(a):Pj(a)}function Od(a){if(!Rf(a))return Vk(a);var b=[];for(var c in kk(a))tk.call(a,c)&&"constructor"!=c&&b.push(c);return b}function Pd(a){if(!hi(a))return Wf(a);var b=Rf(a),c=[];for(var d in a)("constructor"!=d||!b&&tk.call(a,d))&&c.push(d);return c}function Qd(a,b){return b>a}function Rd(a,b){var c=-1,d=Xh(a)?fk(a.length):[];return rl(a,function(a,e,f){d[++c]=b(a,e,f)}),d}function Sd(a){var b=Af(a);return 1==b.length&&b[0][2]?Tf(b[0][0],b[0][1]):function(c){return c===a||Id(c,a,b)}}function Td(a,b){return Nf(a)&&Sf(b)?Tf(cg(a),b):function(c){var d=Oi(c,a);return d===ca&&d===b?Qi(c,a):Fd(b,d,na|oa)}}function Ud(a,b,c,d,e){a!==b&&tl(b,function(f,g){if(hi(f))e||(e=new tc),Vd(a,b,g,c,Ud,d,e);else{var h=d?d(a[g],f,g+"",a,b,e):ca;h===ca&&(h=f),Dc(a,g,h)}},Si)}function Vd(a,b,c,d,e,f,g){var h=a[c],i=b[c],j=g.get(i);if(j)return void Dc(a,c,j);var k=f?f(h,i,c+"",a,b,g):ca,l=k===ca;if(l){var m=tm(i),n=!m&&vm(i),o=!m&&!n&&Am(i);k=i,m||n||o?tm(h)?k=h:Yh(h)?k=Ne(h):n?(l=!1,k=Be(i,!0)):o?(l=!1,k=Ie(i,!0)):k=[]:qi(i)||sm(i)?(k=h,sm(h)?k=Ci(h):(!hi(h)||d&&ei(h))&&(k=Hf(i))):l=!1}l&&(g.set(i,k),e(k,i,d,f,g),g["delete"](i)),Dc(a,c,k)}function Wd(a,b){var c=a.length;if(c)return b+=0>b?c:0,Lf(b,c)?a[b]:ca}function Xd(a,b,c){var d=-1;b=n(b.length?b:[Hj],H(yf()));var e=Rd(a,function(a,c,e){var f=n(b,function(b){return b(a)});return{criteria:f,index:++d,value:a}});return D(e,function(a,b){return Ke(a,b,c)})}function Yd(a,b){return Zd(a,b,function(b,c){return Qi(a,c)})}function Zd(a,b,c){for(var d=-1,e=b.length,f={};++d<e;){var g=b[d],h=gd(a,g);c(h,g)&&he(f,ze(g,a),h)}return f}function $d(a){return function(b){return gd(b,a)}}function _d(a,b,c,d){var e=d?x:w,f=-1,g=b.length,h=a;for(a===b&&(b=Ne(b)),c&&(h=n(a,H(c)));++f<g;)for(var i=0,j=b[f],k=c?c(j):j;(i=e(h,k,i,d))>-1;)h!==a&&Hk.call(h,i,1),Hk.call(a,i,1);return a}function ae(a,b){for(var c=a?b.length:0,d=c-1;c--;){var e=b[c];if(c==d||e!==f){var f=e;Lf(e)?Hk.call(a,e,1):re(a,e)}}return a}function be(a,b){return a+Qk($k()*(b-a+1))}function ce(a,b,c,d){for(var e=-1,f=Wk(Pk((b-a)/(c||1)),0),g=fk(f);f--;)g[d?f:++e]=a,a+=c;return g}function de(a,b){var c="";if(!a||1>b||b>Ha)return c;do b%2&&(c+=a),b=Qk(b/2),b&&(a+=a);while(b);return c}function ee(a,b){return Hl(Yf(a,b,Hj),a+"")}function fe(a){return Ac(cj(a))}function ge(a,b){var c=cj(a);return bg(c,Lc(b,0,c.length))}function he(a,b,c,d){if(!hi(a))return a;b=ze(b,a);for(var e=-1,f=b.length,g=f-1,h=a;null!=h&&++e<f;){var i=cg(b[e]),j=c;if(e!=g){var k=h[i];j=d?d(k,i,h):ca,j===ca&&(j=hi(k)?k:Lf(b[e+1])?[]:{})}Ec(h,i,j),h=h[i]}return a}function ie(a){return bg(cj(a))}function je(a,b,c){var d=-1,e=a.length;0>b&&(b=-b>e?0:e+b),c=c>e?e:c,0>c&&(c+=e),e=b>c?0:c-b>>>0,b>>>=0;for(var f=fk(e);++d<e;)f[d]=a[d+b];return f}function ke(a,b){var c;return rl(a,function(a,d,e){return c=b(a,d,e),!c}),!!c}function le(a,b,c){var d=0,e=null==a?d:a.length;if("number"==typeof b&&b===b&&Ma>=e){for(;e>d;){var f=d+e>>>1,g=a[f];null!==g&&!ti(g)&&(c?b>=g:b>g)?d=f+1:e=f}return e}return me(a,b,Hj,c)}function me(a,b,c,d){b=c(b);for(var e=0,f=null==a?0:a.length,g=b!==b,h=null===b,i=ti(b),j=b===ca;f>e;){var k=Qk((e+f)/2),l=c(a[k]),m=l!==ca,n=null===l,o=l===l,p=ti(l);if(g)var q=d||o;else q=j?o&&(d||m):h?o&&m&&(d||!n):i?o&&m&&!n&&(d||!p):n||p?!1:d?b>=l:b>l;q?e=k+1:f=k}return Xk(f,La)}function ne(a,b){for(var c=-1,d=a.length,e=0,f=[];++c<d;){var g=a[c],h=b?b(g):g;if(!c||!Wh(h,i)){var i=h;f[e++]=0===g?0:g}}return f}function oe(a){return"number"==typeof a?a:ti(a)?Ja:+a}function pe(a){if("string"==typeof a)return a;if(tm(a))return n(a,pe)+"";if(ti(a))return pl?pl.call(a):"";var b=a+"";return"0"==b&&1/a==-Ga?"-0":b}function qe(a,b,c){var d=-1,e=l,f=a.length,g=!0,h=[],i=h;if(c)g=!1,e=m;else if(f>=ea){var j=b?null:zl(a);if(j)return V(j);g=!1,e=J,i=new qc}else i=b?[]:h;a:for(;++d<f;){var k=a[d],n=b?b(k):k;if(k=c||0!==k?k:0,g&&n===n){for(var o=i.length;o--;)if(i[o]===n)continue a;b&&i.push(n),h.push(k)}else e(i,n,c)||(i!==h&&i.push(n),h.push(k))}return h}function re(a,b){return b=ze(b,a),a=Zf(a,b),null==a||delete a[cg(yg(b))]}function se(a,b,c,d){return he(a,b,c(gd(a,b)),d)}function te(a,b,c,d){for(var e=a.length,f=d?e:-1;(d?f--:++f<e)&&b(a[f],f,a););return c?je(a,d?0:f,d?f+1:e):je(a,d?f+1:0,d?e:f)}function ue(a,b){var c=a;return c instanceof B&&(c=c.value()),p(b,function(a,b){return b.func.apply(b.thisArg,o([a],b.args))},c)}function ve(a,b,c){var d=a.length;if(2>d)return d?qe(a[0]):[];for(var e=-1,f=fk(d);++e<d;)for(var g=a[e],h=-1;++h<d;)h!=e&&(f[e]=Sc(f[e]||g,a[h],b,c));return qe(_c(f,1),b,c)}function we(a,b,c){for(var d=-1,e=a.length,f=b.length,g={};++d<e;){var h=f>d?b[d]:ca;c(g,a[d],h)}return g}function xe(a){return Yh(a)?a:[]}function ye(a){return"function"==typeof a?a:Hj}function ze(a,b){return tm(a)?a:Nf(a,b)?[a]:Il(Ei(a))}function Ae(a,b,c){var d=a.length;return c=c===ca?d:c,!b&&c>=d?a:je(a,b,c)}function Be(a,b){if(b)return a.slice();var c=a.length,d=Dk?Dk(c):new a.constructor(c);return a.copy(d),d}function Ce(a){var b=new a.constructor(a.byteLength);return new Ck(b).set(new Ck(a)),b}function De(a,b){var c=b?Ce(a.buffer):a.buffer;return new a.constructor(c,a.byteOffset,a.byteLength)}function Ee(a,b,c){var e=b?c(S(a),ka):S(a);return p(e,d,new a.constructor)}function Fe(a){var b=new a.constructor(a.source,Sb.exec(a));return b.lastIndex=a.lastIndex,b}function Ge(a,b,c){var d=b?c(V(a),ka):V(a);return p(d,e,new a.constructor)}function He(a){return ol?kk(ol.call(a)):{}}function Ie(a,b){var c=b?Ce(a.buffer):a.buffer;return new a.constructor(c,a.byteOffset,a.length)}function Je(a,b){if(a!==b){var c=a!==ca,d=null===a,e=a===a,f=ti(a),g=b!==ca,h=null===b,i=b===b,j=ti(b);if(!h&&!j&&!f&&a>b||f&&g&&i&&!h&&!j||d&&g&&i||!c&&i||!e)return 1;if(!d&&!f&&!j&&b>a||j&&c&&e&&!d&&!f||h&&c&&e||!g&&e||!i)return-1}return 0}function Ke(a,b,c){for(var d=-1,e=a.criteria,f=b.criteria,g=e.length,h=c.length;++d<g;){var i=Je(e[d],f[d]);if(i){if(d>=h)return i;var j=c[d];return i*("desc"==j?-1:1)}}return a.index-b.index}function Le(a,b,c,d){for(var e=-1,f=a.length,g=c.length,h=-1,i=b.length,j=Wk(f-g,0),k=fk(i+j),l=!d;++h<i;)k[h]=b[h];for(;++e<g;)(l||f>e)&&(k[c[e]]=a[e]);for(;j--;)k[h++]=a[e++];return k}function Me(a,b,c,d){for(var e=-1,f=a.length,g=-1,h=c.length,i=-1,j=b.length,k=Wk(f-h,0),l=fk(k+j),m=!d;++e<k;)l[e]=a[e];for(var n=e;++i<j;)l[n+i]=b[i];for(;++g<h;)(m||f>e)&&(l[n+c[g]]=a[e++]);return l}function Ne(a,b){var c=-1,d=a.length;for(b||(b=fk(d));++c<d;)b[c]=a[c];return b}function Oe(a,b,c,d){var e=!c;c||(c={});for(var f=-1,g=b.length;++f<g;){var h=b[f],i=d?d(c[h],a[h],h,c,a):ca;i===ca&&(i=a[h]),e?Jc(c,h,i):Ec(c,h,i)}return c}function Pe(a,b){return Oe(a,Bl(a),b)}function Qe(a,b){return Oe(a,Cl(a),b)}function Re(a,b){return function(c,d){var e=tm(c)?g:Gc,f=b?b():{};return e(c,a,yf(d,2),f)}}function Se(a){return ee(function(b,c){var d=-1,e=c.length,f=e>1?c[e-1]:ca,g=e>2?c[2]:ca;for(f=a.length>3&&"function"==typeof f?(e--,f):ca,g&&Mf(c[0],c[1],g)&&(f=3>e?ca:f,e=1),b=kk(b);++d<e;){var h=c[d];h&&a(b,h,d,f)}return b})}function Te(a,b){return function(c,d){if(null==c)return c;if(!Xh(c))return a(c,d);for(var e=c.length,f=b?e:-1,g=kk(c);(b?f--:++f<e)&&d(g[f],f,g)!==!1;);return c}}function Ue(a){return function(b,c,d){for(var e=-1,f=kk(b),g=d(b),h=g.length;h--;){var i=g[a?h:++e];if(c(f[i],i,f)===!1)break}return b}}function Ve(a,b,c){function d(){var b=this&&this!==ed&&this instanceof d?f:a;return b.apply(e?c:this,arguments)}var e=b&pa,f=Ye(a);return d}function We(a){return function(b){b=Ei(b);var c=P(b)?$(b):ca,d=c?c[0]:b.charAt(0),e=c?Ae(c,1).join(""):b.slice(1);return d[a]()+e}}function Xe(a){return function(b){return p(Cj(ij(b).replace(Oc,"")),a,"")}}function Ye(a){return function(){var b=arguments;switch(b.length){case 0:return new a;case 1:return new a(b[0]);case 2:return new a(b[0],b[1]);case 3:return new a(b[0],b[1],b[2]);case 4:return new a(b[0],b[1],b[2],b[3]);case 5:return new a(b[0],b[1],b[2],b[3],b[4]);case 6:return new a(b[0],b[1],b[2],b[3],b[4],b[5]);case 7:return new a(b[0],b[1],b[2],b[3],b[4],b[5],b[6])}var c=ql(a.prototype),d=a.apply(c,b);return hi(d)?d:c}}function Ze(a,b,c){function d(){for(var g=arguments.length,h=fk(g),i=g,j=xf(d);i--;)h[i]=arguments[i];var k=3>g&&h[0]!==j&&h[g-1]!==j?[]:U(h,j);if(g-=k.length,c>g)return jf(a,b,af,d.placeholder,ca,h,k,ca,ca,c-g);var l=this&&this!==ed&&this instanceof d?e:a;return f(l,this,h)}var e=Ye(a);return d}function $e(a){return function(b,c,d){var e=kk(b);if(!Xh(b)){var f=yf(c,3);b=Ri(b),c=function(a){return f(e[a],a,e)}}var g=a(b,c,d);return g>-1?e[f?b[g]:g]:ca}}function _e(a){return tf(function(b){var c=b.length,d=c,e=s.prototype.thru;for(a&&b.reverse();d--;){var f=b[d];if("function"!=typeof f)throw new nk(ga);if(e&&!g&&"wrapper"==wf(f))var g=new s([],!0)}for(d=g?d:c;++d<c;){f=b[d];var h=wf(f),i="wrapper"==h?Al(f):ca;g=i&&Pf(i[0])&&i[1]==(wa|sa|ua|xa)&&!i[4].length&&1==i[9]?g[wf(i[0])].apply(g,i[3]):1==f.length&&Pf(f)?g[h]():g.thru(f)}return function(){var a=arguments,d=a[0];if(g&&1==a.length&&tm(d))return g.plant(d).value();for(var e=0,f=c?b[e].apply(this,a):d;++e<c;)f=b[e].call(this,f);return f}})}function af(a,b,c,d,e,f,g,h,i,j){function k(){for(var r=arguments.length,s=fk(r),t=r;t--;)s[t]=arguments[t];if(o)var u=xf(k),v=M(s,u);if(d&&(s=Le(s,d,e,o)),f&&(s=Me(s,f,g,o)),r-=v,o&&j>r){var w=U(s,u);return jf(a,b,af,k.placeholder,c,s,w,h,i,j-r)}var x=m?c:this,y=n?x[a]:a;return r=s.length,h?s=$f(s,h):p&&r>1&&s.reverse(),l&&r>i&&(s.length=i),this&&this!==ed&&this instanceof k&&(y=q||Ye(y)),y.apply(x,s)}var l=b&wa,m=b&pa,n=b&qa,o=b&(sa|ta),p=b&ya,q=n?ca:Ye(a);return k}function bf(a,b){return function(c,d){return Ad(c,a,b(d),{})}}function cf(a,b){return function(c,d){var e;if(c===ca&&d===ca)return b;if(c!==ca&&(e=c),d!==ca){if(e===ca)return d;"string"==typeof c||"string"==typeof d?(c=pe(c),d=pe(d)):(c=oe(c),d=oe(d)),e=a(c,d)}return e}}function df(a){return tf(function(b){return b=n(b,H(yf())),ee(function(c){var d=this;return a(b,function(a){return f(a,d,c)})})})}function ef(a,b){b=b===ca?" ":pe(b);var c=b.length;if(2>c)return c?de(b,a):b;var d=de(b,Pk(a/Z(b)));return P(b)?Ae($(d),0,a).join(""):d.slice(0,a)}function ff(a,b,c,d){function e(){for(var b=-1,i=arguments.length,j=-1,k=d.length,l=fk(k+i),m=this&&this!==ed&&this instanceof e?h:a;++j<k;)l[j]=d[j];for(;i--;)l[j++]=arguments[++b];return f(m,g?c:this,l)}var g=b&pa,h=Ye(a);return e}function gf(a){return function(b,c,d){return d&&"number"!=typeof d&&Mf(b,c,d)&&(c=d=ca),b=yi(b),c===ca?(c=b,b=0):c=yi(c),d=d===ca?c>b?1:-1:yi(d),ce(b,c,d,a)}}function hf(a){return function(b,c){return("string"!=typeof b||"string"!=typeof c)&&(b=Bi(b),c=Bi(c)),a(b,c)}}function jf(a,b,c,d,e,f,g,h,i,j){var k=b&sa,l=k?g:ca,m=k?ca:g,n=k?f:ca,o=k?ca:f;b|=k?ua:va,b&=~(k?va:ua),b&ra||(b&=~(pa|qa));var p=[a,b,e,n,l,o,m,h,i,j],q=c.apply(ca,p);return Pf(a)&&Fl(q,p),q.placeholder=d,_f(q,a,b)}function kf(a){var b=jk[a];return function(a,c){if(a=Bi(a),c=null==c?0:Xk(zi(c),292)){var d=(Ei(a)+"e").split("e"),e=b(d[0]+"e"+(+d[1]+c));return d=(Ei(e)+"e").split("e"),+(d[0]+"e"+(+d[1]-c))}return b(a)}}function lf(a){return function(b){var c=Dl(b);return c==Xa?S(b):c==cb?W(b):G(b,a(b))}}function mf(a,b,c,d,e,f,g,h){var i=b&qa;if(!i&&"function"!=typeof a)throw new nk(ga);var j=d?d.length:0;if(j||(b&=~(ua|va),d=e=ca),g=g===ca?g:Wk(zi(g),0),h=h===ca?h:zi(h),j-=e?e.length:0,b&va){var k=d,l=e;d=e=ca}var m=i?ca:Al(a),n=[a,b,c,d,e,k,l,f,g,h];if(m&&Vf(n,m),a=n[0],b=n[1],c=n[2],d=n[3],e=n[4],h=n[9]=n[9]===ca?i?0:a.length:Wk(n[9]-j,0),!h&&b&(sa|ta)&&(b&=~(sa|ta)),b&&b!=pa)o=b==sa||b==ta?Ze(a,b,h):b!=ua&&b!=(pa|ua)||e.length?af.apply(ca,n):ff(a,b,c,d);else var o=Ve(a,b,c);var p=m?vl:Fl;return _f(p(o,n),a,b)}function nf(a,b,c,d){return a===ca||Wh(a,qk[c])&&!tk.call(d,c)?b:a}function of(a,b,c,d,e,f){return hi(a)&&hi(b)&&(f.set(b,a),Ud(a,b,ca,of,f),f["delete"](b)),a}function pf(a,b){return b!==ca&&qi(a)?ca:a}function qf(a,b,c,d,e,f){var g=c&na,h=a.length,i=b.length;if(h!=i&&!(g&&i>h))return!1;var j=f.get(a);if(j&&f.get(b))return j==b;var k=-1,l=!0,m=c&oa?new qc:ca;for(f.set(a,b),f.set(b,a);++k<h;){var n=a[k],o=b[k];if(d)var p=g?d(o,n,k,b,a,f):d(n,o,k,a,b,f);if(p!==ca){if(p)continue;l=!1;break}if(m){if(!r(b,function(a,b){return J(m,b)||n!==a&&!e(n,a,c,d,f)?void 0:m.push(b)})){l=!1;break}}else if(n!==o&&!e(n,o,c,d,f)){l=!1;break}}return f["delete"](a),f["delete"](b),l}function rf(a,b,c,d,e,f,g){switch(c){case jb:if(a.byteLength!=b.byteLength||a.byteOffset!=b.byteOffset)return!1;a=a.buffer,b=b.buffer;case ib:return a.byteLength==b.byteLength&&f(new Ck(a),new Ck(b))?!0:!1;case Ra:case Sa:case Ya:return Wh(+a,+b);case Ua:return a.name==b.name&&a.message==b.message;case bb:case db:return a==b+"";case Xa:var h=S;case cb:var i=d&na;if(h||(h=V),a.size!=b.size&&!i)return!1;var j=g.get(a);if(j)return j==b;d|=oa,g.set(a,b);var k=qf(h(a),h(b),d,e,f,g);return g["delete"](a),k;case eb:if(ol)return ol.call(a)==ol.call(b)}return!1}function sf(a,b,c,d,e,f){var g=c&na,h=uf(a),i=h.length,j=uf(b),k=j.length;if(i!=k&&!g)return!1;for(var l=i;l--;){var m=h[l];if(!(g?m in b:tk.call(b,m)))return!1}var n=f.get(a);if(n&&f.get(b))return n==b;var o=!0;f.set(a,b),f.set(b,a);for(var p=g;++l<i;){m=h[l];var q=a[m],r=b[m];if(d)var s=g?d(r,q,m,b,a,f):d(q,r,m,a,b,f);if(!(s===ca?q===r||e(q,r,c,d,f):s)){o=!1;break}p||(p="constructor"==m)}if(o&&!p){var t=a.constructor,u=b.constructor;t!=u&&"constructor"in a&&"constructor"in b&&!("function"==typeof t&&t instanceof t&&"function"==typeof u&&u instanceof u)&&(o=!1)}return f["delete"](a),f["delete"](b),o}function tf(a){return Hl(Yf(a,ca,qg),a+"")}function uf(a){return id(a,Ri,Bl)}function vf(a){return id(a,Si,Cl)}function wf(a){for(var b=a.name+"",c=hl[b],d=tk.call(hl,b)?c.length:0;d--;){var e=c[d],f=e.func;if(null==f||f==a)return e.name}return b}function xf(a){var c=tk.call(b,"placeholder")?b:a;return c.placeholder}function yf(){var a=b.iteratee||Ij;return a=a===Ij?Nd:a,arguments.length?a(arguments[0],arguments[1]):a}function zf(a,b){var c=a.__data__;return Of(b)?c["string"==typeof b?"string":"hash"]:c.map}function Af(a){for(var b=Ri(a),c=b.length;c--;){var d=b[c],e=a[d];b[c]=[d,e,Sf(e)]}return b}function Bf(a,b){var c=O(a,b);return Jd(c)?c:ca}function Cf(a){var b=tk.call(a,Kk),c=a[Kk];try{a[Kk]=ca;var d=!0}catch(e){}var f=wk.call(a);return d&&(b?a[Kk]=c:delete a[Kk]),f}function Df(a,b,c){for(var d=-1,e=c.length;++d<e;){var f=c[d],g=f.size;switch(f.type){case"drop":a+=g;break;case"dropRight":b-=g;break;case"take":b=Xk(b,a+g);break;case"takeRight":a=Wk(a,b-g)}}return{start:a,end:b}}function Ef(a){var b=a.match(Nb);return b?b[1].split(Ob):[]}function Ff(a,b,c){b=ze(b,a);for(var d=-1,e=b.length,f=!1;++d<e;){var g=cg(b[d]);if(!(f=null!=a&&c(a,g)))break;a=a[g]}return f||++d!=e?f:(e=null==a?0:a.length,!!e&&gi(e)&&Lf(g,e)&&(tm(a)||sm(a)))}function Gf(a){var b=a.length,c=a.constructor(b);return b&&"string"==typeof a[0]&&tk.call(a,"index")&&(c.index=a.index,c.input=a.input),c}function Hf(a){return"function"!=typeof a.constructor||Rf(a)?{}:ql(Ek(a))}function If(a,b,c,d){var e=a.constructor;switch(b){case ib:return Ce(a);case Ra:case Sa:return new e(+a);case jb:return De(a,d);case kb:case lb:case mb:case nb:case ob:case pb:case qb:case rb:case sb:return Ie(a,d);case Xa:return Ee(a,d,c);case Ya:case db:return new e(a);case bb:return Fe(a);case cb:return Ge(a,d,c);case eb:return He(a)}}function Jf(a,b){var c=b.length;if(!c)return a;var d=c-1;return b[d]=(c>1?"& ":"")+b[d],b=b.join(c>2?", ":" "),a.replace(Mb,"{\n/* [wrapped with "+b+"] */\n")}function Kf(a){return tm(a)||sm(a)||!!(Ik&&a&&a[Ik])}function Lf(a,b){return b=null==b?Ha:b,!!b&&("number"==typeof a||Xb.test(a))&&a>-1&&a%1==0&&b>a}function Mf(a,b,c){if(!hi(c))return!1;var d=typeof b;return("number"==d?Xh(c)&&Lf(b,c.length):"string"==d&&b in c)?Wh(c[b],a):!1}function Nf(a,b){if(tm(a))return!1;var c=typeof a;return"number"==c||"symbol"==c||"boolean"==c||null==a||ti(a)?!0:Eb.test(a)||!Db.test(a)||null!=b&&a in kk(b)}function Of(a){var b=typeof a;return"string"==b||"number"==b||"symbol"==b||"boolean"==b?"__proto__"!==a:null===a}function Pf(a){var c=wf(a),d=b[c];if("function"!=typeof d||!(c in B.prototype))return!1;if(a===d)return!0;var e=Al(d);return!!e&&a===e[0]}function Qf(a){return!!vk&&vk in a}function Rf(a){var b=a&&a.constructor,c="function"==typeof b&&b.prototype||qk;return a===c}function Sf(a){return a===a&&!hi(a)}function Tf(a,b){return function(c){return null==c?!1:c[a]===b&&(b!==ca||a in kk(c))}}function Uf(a){var b=Ih(a,function(a){return c.size===ia&&c.clear(),a}),c=b.cache;return b}function Vf(a,b){var c=a[1],d=b[1],e=c|d,f=(pa|qa|wa)>e,g=d==wa&&c==sa||d==wa&&c==xa&&a[7].length<=b[8]||d==(wa|xa)&&b[7].length<=b[8]&&c==sa;if(!f&&!g)return a;d&pa&&(a[2]=b[2],e|=c&pa?0:ra);var h=b[3];if(h){var i=a[3];a[3]=i?Le(i,h,b[4]):h,a[4]=i?U(a[3],ja):b[4]}return h=b[5],h&&(i=a[5],a[5]=i?Me(i,h,b[6]):h,a[6]=i?U(a[5],ja):b[6]),h=b[7],h&&(a[7]=h),d&wa&&(a[8]=null==a[8]?b[8]:Xk(a[8],b[8])),null==a[9]&&(a[9]=b[9]),a[0]=b[0],a[1]=e,a}function Wf(a){var b=[];if(null!=a)for(var c in kk(a))b.push(c);return b}function Xf(a){return wk.call(a)}function Yf(a,b,c){return b=Wk(b===ca?a.length-1:b,0),function(){for(var d=arguments,e=-1,g=Wk(d.length-b,0),h=fk(g);++e<g;)h[e]=d[b+e];e=-1;for(var i=fk(b+1);++e<b;)i[e]=d[e];return i[b]=c(h),f(a,this,i)}}function Zf(a,b){return b.length<2?a:gd(a,je(b,0,-1))}function $f(a,b){for(var c=a.length,d=Xk(b.length,c),e=Ne(a);d--;){var f=b[d];a[d]=Lf(f,c)?e[f]:ca}return a}function _f(a,b,c){var d=b+"";return Hl(a,Jf(d,eg(Ef(d),c)))}function ag(a){var b=0,c=0;return function(){var d=Yk(),e=Ca-(d-c);if(c=d,e>0){if(++b>=Ba)return arguments[0]}else b=0;return a.apply(ca,arguments)}}function bg(a,b){var c=-1,d=a.length,e=d-1;for(b=b===ca?d:b;++c<b;){var f=be(c,e),g=a[f];a[f]=a[c],a[c]=g}return a.length=b,a}function cg(a){if("string"==typeof a||ti(a))return a;var b=a+"";return"0"==b&&1/a==-Ga?"-0":b}function dg(a){if(null!=a){try{return sk.call(a)}catch(b){}try{return a+""}catch(b){}}return""}function eg(a,b){return h(Na,function(c){var d="_."+c[0];b&c[1]&&!l(a,d)&&a.push(d)}),a.sort()}function fg(a){if(a instanceof B)return a.clone();var b=new s(a.__wrapped__,a.__chain__);return b.__actions__=Ne(a.__actions__),b.__index__=a.__index__,b.__values__=a.__values__,b}function gg(a,b,c){b=(c?Mf(a,b,c):b===ca)?1:Wk(zi(b),0);var d=null==a?0:a.length;if(!d||1>b)return[];for(var e=0,f=0,g=fk(Pk(d/b));d>e;)g[f++]=je(a,e,e+=b);return g}function hg(a){for(var b=-1,c=null==a?0:a.length,d=0,e=[];++b<c;){var f=a[b];f&&(e[d++]=f)}return e}function ig(){var a=arguments.length;if(!a)return[];for(var b=fk(a-1),c=arguments[0],d=a;d--;)b[d-1]=arguments[d];return o(tm(c)?Ne(c):[c],_c(b,1))}function jg(a,b,c){var d=null==a?0:a.length;return d?(b=c||b===ca?1:zi(b),je(a,0>b?0:b,d)):[]}function kg(a,b,c){var d=null==a?0:a.length;return d?(b=c||b===ca?1:zi(b),b=d-b,je(a,0,0>b?0:b)):[]}function lg(a,b){return a&&a.length?te(a,yf(b,3),!0,!0):[]}function mg(a,b){return a&&a.length?te(a,yf(b,3),!0):[]}function ng(a,b,c,d){var e=null==a?0:a.length;return e?(c&&"number"!=typeof c&&Mf(a,b,c)&&(c=0,d=e),Zc(a,b,c,d)):[]}function og(a,b,c){var d=null==a?0:a.length;if(!d)return-1;var e=null==c?0:zi(c);return 0>e&&(e=Wk(d+e,0)),v(a,yf(b,3),e)}function pg(a,b,c){var d=null==a?0:a.length;if(!d)return-1;var e=d-1;return c!==ca&&(e=zi(c),e=0>c?Wk(d+e,0):Xk(e,d-1)),v(a,yf(b,3),e,!0)}function qg(a){var b=null==a?0:a.length;return b?_c(a,1):[]}function rg(a){var b=null==a?0:a.length;return b?_c(a,Ga):[]}function sg(a,b){var c=null==a?0:a.length;return c?(b=b===ca?1:zi(b),_c(a,b)):[]}function tg(a){for(var b=-1,c=null==a?0:a.length,d={};++b<c;){var e=a[b];d[e[0]]=e[1]}return d}function ug(a){return a&&a.length?a[0]:ca}function vg(a,b,c){var d=null==a?0:a.length;if(!d)return-1;var e=null==c?0:zi(c);return 0>e&&(e=Wk(d+e,0)),w(a,b,e)}function wg(a){var b=null==a?0:a.length;return b?je(a,0,-1):[]}function xg(a,b){return null==a?"":Uk.call(a,b)}function yg(a){var b=null==a?0:a.length;return b?a[b-1]:ca}function zg(a,b,c){var d=null==a?0:a.length;if(!d)return-1;var e=d;return c!==ca&&(e=zi(c),e=0>e?Wk(d+e,0):Xk(e,d-1)),b===b?Y(a,b,e):v(a,y,e,!0)}function Ag(a,b){return a&&a.length?Wd(a,zi(b)):ca}function Bg(a,b){return a&&a.length&&b&&b.length?_d(a,b):a}function Cg(a,b,c){return a&&a.length&&b&&b.length?_d(a,b,yf(c,2)):a}function Dg(a,b,c){return a&&a.length&&b&&b.length?_d(a,b,ca,c):a}function Eg(a,b){var c=[];if(!a||!a.length)return c;var d=-1,e=[],f=a.length;for(b=yf(b,3);++d<f;){var g=a[d];b(g,d,a)&&(c.push(g),e.push(d))}return ae(a,e),c}function Fg(a){return null==a?a:_k.call(a)}function Gg(a,b,c){var d=null==a?0:a.length;return d?(c&&"number"!=typeof c&&Mf(a,b,c)?(b=0,c=d):(b=null==b?0:zi(b),c=c===ca?d:zi(c)),je(a,b,c)):[]}function Hg(a,b){return le(a,b)}function Ig(a,b,c){return me(a,b,yf(c,2))}function Jg(a,b){var c=null==a?0:a.length;if(c){var d=le(a,b);if(c>d&&Wh(a[d],b))return d}return-1}function Kg(a,b){return le(a,b,!0)}function Lg(a,b,c){return me(a,b,yf(c,2),!0)}function Mg(a,b){var c=null==a?0:a.length;if(c){var d=le(a,b,!0)-1;if(Wh(a[d],b))return d}return-1}function Ng(a){return a&&a.length?ne(a):[]}function Og(a,b){return a&&a.length?ne(a,yf(b,2)):[]}function Pg(a){var b=null==a?0:a.length;return b?je(a,1,b):[]}function Qg(a,b,c){return a&&a.length?(b=c||b===ca?1:zi(b),je(a,0,0>b?0:b)):[]}function Rg(a,b,c){var d=null==a?0:a.length;return d?(b=c||b===ca?1:zi(b),b=d-b,je(a,0>b?0:b,d)):[]}function Sg(a,b){return a&&a.length?te(a,yf(b,3),!1,!0):[]}function Tg(a,b){return a&&a.length?te(a,yf(b,3)):[]}function Ug(a){return a&&a.length?qe(a):[]}function Vg(a,b){return a&&a.length?qe(a,yf(b,2)):[]}function Wg(a,b){return b="function"==typeof b?b:ca,a&&a.length?qe(a,ca,b):[]}function Xg(a){if(!a||!a.length)return[];var b=0;return a=k(a,function(a){return Yh(a)?(b=Wk(a.length,b),!0):void 0}),F(b,function(b){return n(a,A(b))})}function Yg(a,b){if(!a||!a.length)return[];var c=Xg(a);return null==b?c:n(c,function(a){return f(b,ca,a)})}function Zg(a,b){return we(a||[],b||[],Ec)}function $g(a,b){return we(a||[],b||[],he)}function _g(a){var c=b(a);return c.__chain__=!0,c}function ah(a,b){return b(a),a}function bh(a,b){return b(a)}function ch(){return _g(this)}function dh(){return new s(this.value(),this.__chain__)}function eh(){this.__values__===ca&&(this.__values__=xi(this.value()));var a=this.__index__>=this.__values__.length,b=a?ca:this.__values__[this.__index__++];return{done:a,value:b}}function fh(){return this}function gh(a){for(var b,d=this;d instanceof c;){var e=fg(d);e.__index__=0,e.__values__=ca,b?f.__wrapped__=e:b=e;var f=e;d=d.__wrapped__}return f.__wrapped__=a,b}function hh(){var a=this.__wrapped__;if(a instanceof B){var b=a;return this.__actions__.length&&(b=new B(this)),b=b.reverse(),b.__actions__.push({func:bh,args:[Fg],thisArg:ca}),new s(b,this.__chain__)}return this.thru(Fg)}function ih(){return ue(this.__wrapped__,this.__actions__)}function jh(a,b,c){var d=tm(a)?j:Tc;return c&&Mf(a,b,c)&&(b=ca),d(a,yf(b,3))}function kh(a,b){var c=tm(a)?k:$c;return c(a,yf(b,3))}function lh(a,b){return _c(rh(a,b),1)}function mh(a,b){return _c(rh(a,b),Ga)}function nh(a,b,c){return c=c===ca?1:zi(c),_c(rh(a,b),c)}function oh(a,b){var c=tm(a)?h:rl;return c(a,yf(b,3))}function ph(a,b){var c=tm(a)?i:sl;return c(a,yf(b,3))}function qh(a,b,c,d){a=Xh(a)?a:cj(a),c=c&&!d?zi(c):0;var e=a.length;return 0>c&&(c=Wk(e+c,0)),si(a)?e>=c&&a.indexOf(b,c)>-1:!!e&&w(a,b,c)>-1}function rh(a,b){var c=tm(a)?n:Rd;return c(a,yf(b,3))}function sh(a,b,c,d){return null==a?[]:(tm(b)||(b=null==b?[]:[b]),c=d?ca:c,tm(c)||(c=null==c?[]:[c]),Xd(a,b,c))}function th(a,b,c){var d=tm(a)?p:C,e=arguments.length<3;return d(a,yf(b,4),c,e,rl)}function uh(a,b,c){var d=tm(a)?q:C,e=arguments.length<3;return d(a,yf(b,4),c,e,sl)}function vh(a,b){var c=tm(a)?k:$c;return c(a,Jh(yf(b,3)))}function wh(a){var b=tm(a)?Ac:fe;return b(a)}function xh(a,b,c){b=(c?Mf(a,b,c):b===ca)?1:zi(b);var d=tm(a)?Bc:ge;return d(a,b)}function yh(a){var b=tm(a)?Cc:ie;
-return b(a)}function zh(a){if(null==a)return 0;if(Xh(a))return si(a)?Z(a):a.length;var b=Dl(a);return b==Xa||b==cb?a.size:Od(a).length}function Ah(a,b,c){var d=tm(a)?r:ke;return c&&Mf(a,b,c)&&(b=ca),d(a,yf(b,3))}function Bh(a,b){if("function"!=typeof b)throw new nk(ga);return a=zi(a),function(){return--a<1?b.apply(this,arguments):void 0}}function Ch(a,b,c){return b=c?ca:b,b=a&&null==b?a.length:b,mf(a,wa,ca,ca,ca,ca,b)}function Dh(a,b){var c;if("function"!=typeof b)throw new nk(ga);return a=zi(a),function(){return--a>0&&(c=b.apply(this,arguments)),1>=a&&(b=ca),c}}function Eh(a,b,c){b=c?ca:b;var d=mf(a,sa,ca,ca,ca,ca,ca,b);return d.placeholder=Eh.placeholder,d}function Fh(a,b,c){b=c?ca:b;var d=mf(a,ta,ca,ca,ca,ca,ca,b);return d.placeholder=Fh.placeholder,d}function Gh(a,b,c){function d(b){var c=m,d=n;return m=n=ca,s=b,p=a.apply(d,c)}function e(a){return s=a,q=Gl(h,b),t?d(a):p}function f(a){var c=a-r,d=a-s,e=b-c;return u?Xk(e,o-d):e}function g(a){var c=a-r,d=a-s;return r===ca||c>=b||0>c||u&&d>=o}function h(){var a=hm();return g(a)?i(a):void(q=Gl(h,f(a)))}function i(a){return q=ca,v&&m?d(a):(m=n=ca,p)}function j(){q!==ca&&yl(q),s=0,m=r=n=q=ca}function k(){return q===ca?p:i(hm())}function l(){var a=hm(),c=g(a);if(m=arguments,n=this,r=a,c){if(q===ca)return e(r);if(u)return q=Gl(h,b),d(r)}return q===ca&&(q=Gl(h,b)),p}var m,n,o,p,q,r,s=0,t=!1,u=!1,v=!0;if("function"!=typeof a)throw new nk(ga);return b=Bi(b)||0,hi(c)&&(t=!!c.leading,u="maxWait"in c,o=u?Wk(Bi(c.maxWait)||0,b):o,v="trailing"in c?!!c.trailing:v),l.cancel=j,l.flush=k,l}function Hh(a){return mf(a,ya)}function Ih(a,b){if("function"!=typeof a||null!=b&&"function"!=typeof b)throw new nk(ga);var c=function(){var d=arguments,e=b?b.apply(this,d):d[0],f=c.cache;if(f.has(e))return f.get(e);var g=a.apply(this,d);return c.cache=f.set(e,g)||f,g};return c.cache=new(Ih.Cache||kc),c}function Jh(a){if("function"!=typeof a)throw new nk(ga);return function(){var b=arguments;switch(b.length){case 0:return!a.call(this);case 1:return!a.call(this,b[0]);case 2:return!a.call(this,b[0],b[1]);case 3:return!a.call(this,b[0],b[1],b[2])}return!a.apply(this,b)}}function Kh(a){return Dh(2,a)}function Lh(a,b){if("function"!=typeof a)throw new nk(ga);return b=b===ca?b:zi(b),ee(a,b)}function Mh(a,b){if("function"!=typeof a)throw new nk(ga);return b=null==b?0:Wk(zi(b),0),ee(function(c){var d=c[b],e=Ae(c,0,b);return d&&o(e,d),f(a,this,e)})}function Nh(a,b,c){var d=!0,e=!0;if("function"!=typeof a)throw new nk(ga);return hi(c)&&(d="leading"in c?!!c.leading:d,e="trailing"in c?!!c.trailing:e),Gh(a,b,{leading:d,maxWait:b,trailing:e})}function Oh(a){return Ch(a,1)}function Ph(a,b){return nm(ye(b),a)}function Qh(){if(!arguments.length)return[];var a=arguments[0];return tm(a)?a:[a]}function Rh(a){return Mc(a,ma)}function Sh(a,b){return b="function"==typeof b?b:ca,Mc(a,ma,b)}function Th(a){return Mc(a,ka|ma)}function Uh(a,b){return b="function"==typeof b?b:ca,Mc(a,ka|ma,b)}function Vh(a,b){return null==b||Qc(a,b,Ri(b))}function Wh(a,b){return a===b||a!==a&&b!==b}function Xh(a){return null!=a&&gi(a.length)&&!ei(a)}function Yh(a){return ii(a)&&Xh(a)}function Zh(a){return a===!0||a===!1||ii(a)&&jd(a)==Ra}function $h(a){return ii(a)&&1===a.nodeType&&!qi(a)}function _h(a){if(null==a)return!0;if(Xh(a)&&(tm(a)||"string"==typeof a||"function"==typeof a.splice||vm(a)||Am(a)||sm(a)))return!a.length;var b=Dl(a);if(b==Xa||b==cb)return!a.size;if(Rf(a))return!Od(a).length;for(var c in a)if(tk.call(a,c))return!1;return!0}function ai(a,b){return Fd(a,b)}function bi(a,b,c){c="function"==typeof c?c:ca;var d=c?c(a,b):ca;return d===ca?Fd(a,b,ca,c):!!d}function ci(a){if(!ii(a))return!1;var b=jd(a);return b==Ua||b==Ta||"string"==typeof a.message&&"string"==typeof a.name&&!qi(a)}function di(a){return"number"==typeof a&&Tk(a)}function ei(a){if(!hi(a))return!1;var b=jd(a);return b==Va||b==Wa||b==Qa||b==ab}function fi(a){return"number"==typeof a&&a==zi(a)}function gi(a){return"number"==typeof a&&a>-1&&a%1==0&&Ha>=a}function hi(a){var b=typeof a;return null!=a&&("object"==b||"function"==b)}function ii(a){return null!=a&&"object"==typeof a}function ji(a,b){return a===b||Id(a,b,Af(b))}function ki(a,b,c){return c="function"==typeof c?c:ca,Id(a,b,Af(b),c)}function li(a){return pi(a)&&a!=+a}function mi(a){if(El(a))throw new hk(fa);return Jd(a)}function ni(a){return null===a}function oi(a){return null==a}function pi(a){return"number"==typeof a||ii(a)&&jd(a)==Ya}function qi(a){if(!ii(a)||jd(a)!=$a)return!1;var b=Ek(a);if(null===b)return!0;var c=tk.call(b,"constructor")&&b.constructor;return"function"==typeof c&&c instanceof c&&sk.call(c)==xk}function ri(a){return fi(a)&&a>=-Ha&&Ha>=a}function si(a){return"string"==typeof a||!tm(a)&&ii(a)&&jd(a)==db}function ti(a){return"symbol"==typeof a||ii(a)&&jd(a)==eb}function ui(a){return a===ca}function vi(a){return ii(a)&&Dl(a)==gb}function wi(a){return ii(a)&&jd(a)==hb}function xi(a){if(!a)return[];if(Xh(a))return si(a)?$(a):Ne(a);if(Jk&&a[Jk])return R(a[Jk]());var b=Dl(a),c=b==Xa?S:b==cb?V:cj;return c(a)}function yi(a){if(!a)return 0===a?a:0;if(a=Bi(a),a===Ga||a===-Ga){var b=0>a?-1:1;return b*Ia}return a===a?a:0}function zi(a){var b=yi(a),c=b%1;return b===b?c?b-c:b:0}function Ai(a){return a?Lc(zi(a),0,Ka):0}function Bi(a){if("number"==typeof a)return a;if(ti(a))return Ja;if(hi(a)){var b="function"==typeof a.valueOf?a.valueOf():a;a=hi(b)?b+"":b}if("string"!=typeof a)return 0===a?a:+a;a=a.replace(Jb,"");var c=Ub.test(a);return c||Wb.test(a)?bd(a.slice(2),c?2:8):Tb.test(a)?Ja:+a}function Ci(a){return Oe(a,Si(a))}function Di(a){return a?Lc(zi(a),-Ha,Ha):0===a?a:0}function Ei(a){return null==a?"":pe(a)}function Fi(a,b){var c=ql(a);return null==b?c:Hc(c,b)}function Gi(a,b){return u(a,yf(b,3),cd)}function Hi(a,b){return u(a,yf(b,3),dd)}function Ii(a,b){return null==a?a:tl(a,yf(b,3),Si)}function Ji(a,b){return null==a?a:ul(a,yf(b,3),Si)}function Ki(a,b){return a&&cd(a,yf(b,3))}function Li(a,b){return a&&dd(a,yf(b,3))}function Mi(a){return null==a?[]:fd(a,Ri(a))}function Ni(a){return null==a?[]:fd(a,Si(a))}function Oi(a,b,c){var d=null==a?ca:gd(a,b);return d===ca?c:d}function Pi(a,b){return null!=a&&Ff(a,b,ud)}function Qi(a,b){return null!=a&&Ff(a,b,xd)}function Ri(a){return Xh(a)?zc(a):Od(a)}function Si(a){return Xh(a)?zc(a,!0):Pd(a)}function Ti(a,b){var c={};return b=yf(b,3),cd(a,function(a,d,e){Jc(c,b(a,d,e),a)}),c}function Ui(a,b){var c={};return b=yf(b,3),cd(a,function(a,d,e){Jc(c,d,b(a,d,e))}),c}function Vi(a,b){return Wi(a,Jh(yf(b)))}function Wi(a,b){if(null==a)return{};var c=n(vf(a),function(a){return[a]});return b=yf(b),Zd(a,c,function(a,c){return b(a,c[0])})}function Xi(a,b,c){b=ze(b,a);var d=-1,e=b.length;for(e||(e=1,a=ca);++d<e;){var f=null==a?ca:a[cg(b[d])];f===ca&&(d=e,f=c),a=ei(f)?f.call(a):f}return a}function Yi(a,b,c){return null==a?a:he(a,b,c)}function Zi(a,b,c,d){return d="function"==typeof d?d:ca,null==a?a:he(a,b,c,d)}function $i(a,b,c){var d=tm(a),e=d||vm(a)||Am(a);if(b=yf(b,4),null==c){var f=a&&a.constructor;c=e?d?new f:[]:hi(a)&&ei(f)?ql(Ek(a)):{}}return(e?h:cd)(a,function(a,d,e){return b(c,a,d,e)}),c}function _i(a,b){return null==a?!0:re(a,b)}function aj(a,b,c){return null==a?a:se(a,b,ye(c))}function bj(a,b,c,d){return d="function"==typeof d?d:ca,null==a?a:se(a,b,ye(c),d)}function cj(a){return null==a?[]:I(a,Ri(a))}function dj(a){return null==a?[]:I(a,Si(a))}function ej(a,b,c){return c===ca&&(c=b,b=ca),c!==ca&&(c=Bi(c),c=c===c?c:0),b!==ca&&(b=Bi(b),b=b===b?b:0),Lc(Bi(a),b,c)}function fj(a,b,c){return b=yi(b),c===ca?(c=b,b=0):c=yi(c),a=Bi(a),yd(a,b,c)}function gj(a,b,c){if(c&&"boolean"!=typeof c&&Mf(a,b,c)&&(b=c=ca),c===ca&&("boolean"==typeof b?(c=b,b=ca):"boolean"==typeof a&&(c=a,a=ca)),a===ca&&b===ca?(a=0,b=1):(a=yi(a),b===ca?(b=a,a=0):b=yi(b)),a>b){var d=a;a=b,b=d}if(c||a%1||b%1){var e=$k();return Xk(a+e*(b-a+ad("1e-"+((e+"").length-1))),b)}return be(a,b)}function hj(a){return $m(Ei(a).toLowerCase())}function ij(a){return a=Ei(a),a&&a.replace(Yb,rd).replace(Pc,"")}function jj(a,b,c){a=Ei(a),b=pe(b);var d=a.length;c=c===ca?d:Lc(zi(c),0,d);var e=c;return c-=b.length,c>=0&&a.slice(c,e)==b}function kj(a){return a=Ei(a),a&&zb.test(a)?a.replace(xb,sd):a}function lj(a){return a=Ei(a),a&&Ib.test(a)?a.replace(Hb,"\\$&"):a}function mj(a,b,c){a=Ei(a),b=zi(b);var d=b?Z(a):0;if(!b||d>=b)return a;var e=(b-d)/2;return ef(Qk(e),c)+a+ef(Pk(e),c)}function nj(a,b,c){a=Ei(a),b=zi(b);var d=b?Z(a):0;return b&&b>d?a+ef(b-d,c):a}function oj(a,b,c){a=Ei(a),b=zi(b);var d=b?Z(a):0;return b&&b>d?ef(b-d,c)+a:a}function pj(a,b,c){return c||null==b?b=0:b&&(b=+b),Zk(Ei(a).replace(Kb,""),b||0)}function qj(a,b,c){return b=(c?Mf(a,b,c):b===ca)?1:zi(b),de(Ei(a),b)}function rj(){var a=arguments,b=Ei(a[0]);return a.length<3?b:b.replace(a[1],a[2])}function sj(a,b,c){return c&&"number"!=typeof c&&Mf(a,b,c)&&(b=c=ca),(c=c===ca?Ka:c>>>0)?(a=Ei(a),a&&("string"==typeof b||null!=b&&!ym(b))&&(b=pe(b),!b&&P(a))?Ae($(a),0,c):a.split(b,c)):[]}function tj(a,b,c){return a=Ei(a),c=null==c?0:Lc(zi(c),0,a.length),b=pe(b),a.slice(c,c+b.length)==b}function uj(a,c,d){var e=b.templateSettings;d&&Mf(a,c,d)&&(c=ca),a=Ei(a),c=Fm({},c,e,nf);var f,g,h=Fm({},c.imports,e.imports,nf),i=Ri(h),j=I(h,i),k=0,l=c.interpolate||Zb,m="__p += '",n=lk((c.escape||Zb).source+"|"+l.source+"|"+(l===Cb?Rb:Zb).source+"|"+(c.evaluate||Zb).source+"|$","g"),o="//# sourceURL="+("sourceURL"in c?c.sourceURL:"lodash.templateSources["+ ++Vc+"]")+"\n";a.replace(n,function(b,c,d,e,h,i){return d||(d=e),m+=a.slice(k,i).replace($b,N),c&&(f=!0,m+="' +\n__e("+c+") +\n'"),h&&(g=!0,m+="';\n"+h+";\n__p += '"),d&&(m+="' +\n((__t = ("+d+")) == null ? '' : __t) +\n'"),k=i+b.length,b}),m+="';\n";var p=c.variable;p||(m="with (obj) {\n"+m+"\n}\n"),m=(g?m.replace(tb,""):m).replace(ub,"$1").replace(vb,"$1;"),m="function("+(p||"obj")+") {\n"+(p?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(f?", __e = _.escape":"")+(g?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+m+"return __p\n}";var q=_m(function(){return ik(i,o+"return "+m).apply(ca,j)});if(q.source=m,ci(q))throw q;return q}function vj(a){return Ei(a).toLowerCase()}function wj(a){return Ei(a).toUpperCase()}function xj(a,b,c){if(a=Ei(a),a&&(c||b===ca))return a.replace(Jb,"");if(!a||!(b=pe(b)))return a;var d=$(a),e=$(b),f=K(d,e),g=L(d,e)+1;return Ae(d,f,g).join("")}function yj(a,b,c){if(a=Ei(a),a&&(c||b===ca))return a.replace(Lb,"");if(!a||!(b=pe(b)))return a;var d=$(a),e=L(d,$(b))+1;return Ae(d,0,e).join("")}function zj(a,b,c){if(a=Ei(a),a&&(c||b===ca))return a.replace(Kb,"");if(!a||!(b=pe(b)))return a;var d=$(a),e=K(d,$(b));return Ae(d,e).join("")}function Aj(a,b){var c=za,d=Aa;if(hi(b)){var e="separator"in b?b.separator:e;c="length"in b?zi(b.length):c,d="omission"in b?pe(b.omission):d}a=Ei(a);var f=a.length;if(P(a)){var g=$(a);f=g.length}if(c>=f)return a;var h=c-Z(d);if(1>h)return d;var i=g?Ae(g,0,h).join(""):a.slice(0,h);if(e===ca)return i+d;if(g&&(h+=i.length-h),ym(e)){if(a.slice(h).search(e)){var j,k=i;for(e.global||(e=lk(e.source,Ei(Sb.exec(e))+"g")),e.lastIndex=0;j=e.exec(k);)var l=j.index;i=i.slice(0,l===ca?h:l)}}else if(a.indexOf(pe(e),h)!=h){var m=i.lastIndexOf(e);m>-1&&(i=i.slice(0,m))}return i+d}function Bj(a){return a=Ei(a),a&&yb.test(a)?a.replace(wb,td):a}function Cj(a,b,c){return a=Ei(a),b=c?ca:b,b===ca?Q(a)?ba(a):t(a):a.match(b)||[]}function Dj(a){var b=null==a?0:a.length,c=yf();return a=b?n(a,function(a){if("function"!=typeof a[1])throw new nk(ga);return[c(a[0]),a[1]]}):[],ee(function(c){for(var d=-1;++d<b;){var e=a[d];if(f(e[0],this,c))return f(e[1],this,c)}})}function Ej(a){return Nc(Mc(a,ka))}function Fj(a){return function(){return a}}function Gj(a,b){return null==a||a!==a?b:a}function Hj(a){return a}function Ij(a){return Nd("function"==typeof a?a:Mc(a,ka))}function Jj(a){return Sd(Mc(a,ka))}function Kj(a,b){return Td(a,Mc(b,ka))}function Lj(a,b,c){var d=Ri(b),e=fd(b,d);null!=c||hi(b)&&(e.length||!d.length)||(c=b,b=a,a=this,e=fd(b,Ri(b)));var f=!(hi(c)&&"chain"in c&&!c.chain),g=ei(a);return h(e,function(c){var d=b[c];a[c]=d,g&&(a.prototype[c]=function(){var b=this.__chain__;if(f||b){var c=a(this.__wrapped__),e=c.__actions__=Ne(this.__actions__);return e.push({func:d,args:arguments,thisArg:a}),c.__chain__=b,c}return d.apply(a,o([this.value()],arguments))})}),a}function Mj(){return ed._===this&&(ed._=yk),this}function Nj(){}function Oj(a){return a=zi(a),ee(function(b){return Wd(b,a)})}function Pj(a){return Nf(a)?A(cg(a)):$d(a)}function Qj(a){return function(b){return null==a?ca:gd(a,b)}}function Rj(){return[]}function Sj(){return!1}function Tj(){return{}}function Uj(){return""}function Vj(){return!0}function Wj(a,b){if(a=zi(a),1>a||a>Ha)return[];var c=Ka,d=Xk(a,Ka);b=yf(b),a-=Ka;for(var e=F(d,b);++c<a;)b(c);return e}function Xj(a){return tm(a)?n(a,cg):ti(a)?[a]:Ne(Il(Ei(a)))}function Yj(a){var b=++uk;return Ei(a)+b}function Zj(a){return a&&a.length?Yc(a,Hj,qd):ca}function $j(a,b){return a&&a.length?Yc(a,yf(b,2),qd):ca}function _j(a){return z(a,Hj)}function ak(a,b){return z(a,yf(b,2))}function bk(a){return a&&a.length?Yc(a,Hj,Qd):ca}function ck(a,b){return a&&a.length?Yc(a,yf(b,2),Qd):ca}function dk(a){return a&&a.length?E(a,Hj):0}function ek(a,b){return a&&a.length?E(a,yf(b,2)):0}a=null==a?ed:vd.defaults(ed.Object(),a,vd.pick(ed,Uc));var fk=a.Array,gk=a.Date,hk=a.Error,ik=a.Function,jk=a.Math,kk=a.Object,lk=a.RegExp,mk=a.String,nk=a.TypeError,ok=fk.prototype,pk=ik.prototype,qk=kk.prototype,rk=a["__core-js_shared__"],sk=pk.toString,tk=qk.hasOwnProperty,uk=0,vk=function(){var a=/[^.]+$/.exec(rk&&rk.keys&&rk.keys.IE_PROTO||"");return a?"Symbol(src)_1."+a:""}(),wk=qk.toString,xk=sk.call(kk),yk=ed._,zk=lk("^"+sk.call(tk).replace(Hb,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ak=hd?a.Buffer:ca,Bk=a.Symbol,Ck=a.Uint8Array,Dk=Ak?Ak.allocUnsafe:ca,Ek=T(kk.getPrototypeOf,kk),Fk=kk.create,Gk=qk.propertyIsEnumerable,Hk=ok.splice,Ik=Bk?Bk.isConcatSpreadable:ca,Jk=Bk?Bk.iterator:ca,Kk=Bk?Bk.toStringTag:ca,Lk=function(){try{var a=Bf(kk,"defineProperty");return a({},"",{}),a}catch(b){}}(),Mk=a.clearTimeout!==ed.clearTimeout&&a.clearTimeout,Nk=gk&&gk.now!==ed.Date.now&&gk.now,Ok=a.setTimeout!==ed.setTimeout&&a.setTimeout,Pk=jk.ceil,Qk=jk.floor,Rk=kk.getOwnPropertySymbols,Sk=Ak?Ak.isBuffer:ca,Tk=a.isFinite,Uk=ok.join,Vk=T(kk.keys,kk),Wk=jk.max,Xk=jk.min,Yk=gk.now,Zk=a.parseInt,$k=jk.random,_k=ok.reverse,al=Bf(a,"DataView"),bl=Bf(a,"Map"),cl=Bf(a,"Promise"),dl=Bf(a,"Set"),el=Bf(a,"WeakMap"),fl=Bf(kk,"create"),gl=el&&new el,hl={},il=dg(al),jl=dg(bl),kl=dg(cl),ll=dg(dl),ml=dg(el),nl=Bk?Bk.prototype:ca,ol=nl?nl.valueOf:ca,pl=nl?nl.toString:ca,ql=function(){function a(){}return function(b){if(!hi(b))return{};if(Fk)return Fk(b);a.prototype=b;var c=new a;return a.prototype=ca,c}}();b.templateSettings={escape:Ab,evaluate:Bb,interpolate:Cb,variable:"",imports:{_:b}},b.prototype=c.prototype,b.prototype.constructor=b,s.prototype=ql(c.prototype),s.prototype.constructor=s,B.prototype=ql(c.prototype),B.prototype.constructor=B,Pb.prototype.clear=_b,Pb.prototype["delete"]=ac,Pb.prototype.get=bc,Pb.prototype.has=cc,Pb.prototype.set=dc,ec.prototype.clear=fc,ec.prototype["delete"]=gc,ec.prototype.get=hc,ec.prototype.has=ic,ec.prototype.set=jc,kc.prototype.clear=lc,kc.prototype["delete"]=mc,kc.prototype.get=nc,kc.prototype.has=oc,kc.prototype.set=pc,qc.prototype.add=qc.prototype.push=rc,qc.prototype.has=sc,tc.prototype.clear=uc,tc.prototype["delete"]=vc,tc.prototype.get=wc,tc.prototype.has=xc,tc.prototype.set=yc;var rl=Te(cd),sl=Te(dd,!0),tl=Ue(),ul=Ue(!0),vl=gl?function(a,b){return gl.set(a,b),a}:Hj,wl=Lk?function(a,b){return Lk(a,"toString",{configurable:!0,enumerable:!1,value:Fj(b),writable:!0})}:Hj,xl=ee,yl=Mk||function(a){return ed.clearTimeout(a)},zl=dl&&1/V(new dl([,-0]))[1]==Ga?function(a){return new dl(a)}:Nj,Al=gl?function(a){return gl.get(a)}:Nj,Bl=Rk?function(a){return null==a?[]:(a=kk(a),k(Rk(a),function(b){return Gk.call(a,b)}))}:Rj,Cl=Rk?function(a){for(var b=[];a;)o(b,Bl(a)),a=Ek(a);return b}:Rj,Dl=jd;(al&&Dl(new al(new ArrayBuffer(1)))!=jb||bl&&Dl(new bl)!=Xa||cl&&Dl(cl.resolve())!=_a||dl&&Dl(new dl)!=cb||el&&Dl(new el)!=gb)&&(Dl=function(a){var b=jd(a),c=b==$a?a.constructor:ca,d=c?dg(c):"";if(d)switch(d){case il:return jb;case jl:return Xa;case kl:return _a;case ll:return cb;case ml:return gb}return b});var El=rk?ei:Sj,Fl=ag(vl),Gl=Ok||function(a,b){return ed.setTimeout(a,b)},Hl=ag(wl),Il=Uf(function(a){var b=[];return Fb.test(a)&&b.push(""),a.replace(Gb,function(a,c,d,e){b.push(d?e.replace(Qb,"$1"):c||a)}),b}),Jl=ee(function(a,b){return Yh(a)?Sc(a,_c(b,1,Yh,!0)):[]}),Kl=ee(function(a,b){var c=yg(b);return Yh(c)&&(c=ca),Yh(a)?Sc(a,_c(b,1,Yh,!0),yf(c,2)):[]}),Ll=ee(function(a,b){var c=yg(b);return Yh(c)&&(c=ca),Yh(a)?Sc(a,_c(b,1,Yh,!0),ca,c):[]}),Ml=ee(function(a){var b=n(a,xe);return b.length&&b[0]===a[0]?zd(b):[]}),Nl=ee(function(a){var b=yg(a),c=n(a,xe);return b===yg(c)?b=ca:c.pop(),c.length&&c[0]===a[0]?zd(c,yf(b,2)):[]}),Ol=ee(function(a){var b=yg(a),c=n(a,xe);return b="function"==typeof b?b:ca,b&&c.pop(),c.length&&c[0]===a[0]?zd(c,ca,b):[]}),Pl=ee(Bg),Ql=tf(function(a,b){var c=null==a?0:a.length,d=Kc(a,b);return ae(a,n(b,function(a){return Lf(a,c)?+a:a}).sort(Je)),d}),Rl=ee(function(a){return qe(_c(a,1,Yh,!0))}),Sl=ee(function(a){var b=yg(a);return Yh(b)&&(b=ca),qe(_c(a,1,Yh,!0),yf(b,2))}),Tl=ee(function(a){var b=yg(a);return b="function"==typeof b?b:ca,qe(_c(a,1,Yh,!0),ca,b)}),Ul=ee(function(a,b){return Yh(a)?Sc(a,b):[]}),Vl=ee(function(a){return ve(k(a,Yh))}),Wl=ee(function(a){var b=yg(a);return Yh(b)&&(b=ca),ve(k(a,Yh),yf(b,2))}),Xl=ee(function(a){var b=yg(a);return b="function"==typeof b?b:ca,ve(k(a,Yh),ca,b)}),Yl=ee(Xg),Zl=ee(function(a){var b=a.length,c=b>1?a[b-1]:ca;return c="function"==typeof c?(a.pop(),c):ca,Yg(a,c)}),$l=tf(function(a){var b=a.length,c=b?a[0]:0,d=this.__wrapped__,e=function(b){return Kc(b,a)};return!(b>1||this.__actions__.length)&&d instanceof B&&Lf(c)?(d=d.slice(c,+c+(b?1:0)),d.__actions__.push({func:bh,args:[e],thisArg:ca}),new s(d,this.__chain__).thru(function(a){return b&&!a.length&&a.push(ca),a})):this.thru(e)}),_l=Re(function(a,b,c){tk.call(a,c)?++a[c]:Jc(a,c,1)}),am=$e(og),bm=$e(pg),cm=Re(function(a,b,c){tk.call(a,c)?a[c].push(b):Jc(a,c,[b])}),dm=ee(function(a,b,c){var d=-1,e="function"==typeof b,g=Xh(a)?fk(a.length):[];return rl(a,function(a){g[++d]=e?f(b,a,c):Bd(a,b,c)}),g}),em=Re(function(a,b,c){Jc(a,c,b)}),fm=Re(function(a,b,c){a[c?0:1].push(b)},function(){return[[],[]]}),gm=ee(function(a,b){if(null==a)return[];var c=b.length;return c>1&&Mf(a,b[0],b[1])?b=[]:c>2&&Mf(b[0],b[1],b[2])&&(b=[b[0]]),Xd(a,_c(b,1),[])}),hm=Nk||function(){return ed.Date.now()},im=ee(function(a,b,c){var d=pa;if(c.length){var e=U(c,xf(im));d|=ua}return mf(a,d,b,c,e)}),jm=ee(function(a,b,c){var d=pa|qa;if(c.length){var e=U(c,xf(jm));d|=ua}return mf(b,d,a,c,e)}),km=ee(function(a,b){return Rc(a,1,b)}),lm=ee(function(a,b,c){return Rc(a,Bi(b)||0,c)});Ih.Cache=kc;var mm=xl(function(a,b){b=1==b.length&&tm(b[0])?n(b[0],H(yf())):n(_c(b,1),H(yf()));var c=b.length;return ee(function(d){for(var e=-1,g=Xk(d.length,c);++e<g;)d[e]=b[e].call(this,d[e]);return f(a,this,d)})}),nm=ee(function(a,b){var c=U(b,xf(nm));return mf(a,ua,ca,b,c)}),om=ee(function(a,b){var c=U(b,xf(om));return mf(a,va,ca,b,c)}),pm=tf(function(a,b){return mf(a,xa,ca,ca,ca,b)}),qm=hf(qd),rm=hf(function(a,b){return a>=b}),sm=Cd(function(){return arguments}())?Cd:function(a){return ii(a)&&tk.call(a,"callee")&&!Gk.call(a,"callee")},tm=fk.isArray,um=kd?H(kd):Dd,vm=Sk||Sj,wm=ld?H(ld):Ed,xm=md?H(md):Hd,ym=nd?H(nd):Kd,zm=od?H(od):Ld,Am=pd?H(pd):Md,Bm=hf(Qd),Cm=hf(function(a,b){return b>=a}),Dm=Se(function(a,b){if(Rf(b)||Xh(b))return void Oe(b,Ri(b),a);for(var c in b)tk.call(b,c)&&Ec(a,c,b[c])}),Em=Se(function(a,b){Oe(b,Si(b),a)}),Fm=Se(function(a,b,c,d){Oe(b,Si(b),a,d)}),Gm=Se(function(a,b,c,d){Oe(b,Ri(b),a,d)}),Hm=tf(Kc),Im=ee(function(a){return a.push(ca,nf),f(Fm,ca,a)}),Jm=ee(function(a){return a.push(ca,of),f(Om,ca,a)}),Km=bf(function(a,b,c){a[b]=c},Fj(Hj)),Lm=bf(function(a,b,c){tk.call(a,b)?a[b].push(c):a[b]=[c]},yf),Mm=ee(Bd),Nm=Se(function(a,b,c){Ud(a,b,c)}),Om=Se(function(a,b,c,d){Ud(a,b,c,d)}),Pm=tf(function(a,b){var c={};if(null==a)return c;var d=!1;b=n(b,function(b){return b=ze(b,a),d||(d=b.length>1),b}),Oe(a,vf(a),c),d&&(c=Mc(c,ka|la|ma,pf));for(var e=b.length;e--;)re(c,b[e]);return c}),Qm=tf(function(a,b){return null==a?{}:Yd(a,b)}),Rm=lf(Ri),Sm=lf(Si),Tm=Xe(function(a,b,c){return b=b.toLowerCase(),a+(c?hj(b):b)}),Um=Xe(function(a,b,c){return a+(c?"-":"")+b.toLowerCase()}),Vm=Xe(function(a,b,c){return a+(c?" ":"")+b.toLowerCase()}),Wm=We("toLowerCase"),Xm=Xe(function(a,b,c){return a+(c?"_":"")+b.toLowerCase()}),Ym=Xe(function(a,b,c){return a+(c?" ":"")+$m(b)}),Zm=Xe(function(a,b,c){return a+(c?" ":"")+b.toUpperCase()}),$m=We("toUpperCase"),_m=ee(function(a,b){try{return f(a,ca,b)}catch(c){return ci(c)?c:new hk(c)}}),an=tf(function(a,b){return h(b,function(b){b=cg(b),Jc(a,b,im(a[b],a))}),a}),bn=_e(),cn=_e(!0),dn=ee(function(a,b){return function(c){return Bd(c,a,b)}}),en=ee(function(a,b){return function(c){return Bd(a,c,b)}}),fn=df(n),gn=df(j),hn=df(r),jn=gf(),kn=gf(!0),ln=cf(function(a,b){return a+b},0),mn=kf("ceil"),nn=cf(function(a,b){return a/b},1),on=kf("floor"),pn=cf(function(a,b){return a*b},1),qn=kf("round"),rn=cf(function(a,b){return a-b},0);return b.after=Bh,b.ary=Ch,b.assign=Dm,b.assignIn=Em,b.assignInWith=Fm,b.assignWith=Gm,b.at=Hm,b.before=Dh,b.bind=im,b.bindAll=an,b.bindKey=jm,b.castArray=Qh,b.chain=_g,b.chunk=gg,b.compact=hg,b.concat=ig,b.cond=Dj,b.conforms=Ej,b.constant=Fj,b.countBy=_l,b.create=Fi,b.curry=Eh,b.curryRight=Fh,b.debounce=Gh,b.defaults=Im,b.defaultsDeep=Jm,b.defer=km,b.delay=lm,b.difference=Jl,b.differenceBy=Kl,b.differenceWith=Ll,b.drop=jg,b.dropRight=kg,b.dropRightWhile=lg,b.dropWhile=mg,b.fill=ng,b.filter=kh,b.flatMap=lh,b.flatMapDeep=mh,b.flatMapDepth=nh,b.flatten=qg,b.flattenDeep=rg,b.flattenDepth=sg,b.flip=Hh,b.flow=bn,b.flowRight=cn,b.fromPairs=tg,b.functions=Mi,b.functionsIn=Ni,b.groupBy=cm,b.initial=wg,b.intersection=Ml,b.intersectionBy=Nl,b.intersectionWith=Ol,b.invert=Km,b.invertBy=Lm,b.invokeMap=dm,b.iteratee=Ij,b.keyBy=em,b.keys=Ri,b.keysIn=Si,b.map=rh,b.mapKeys=Ti,b.mapValues=Ui,b.matches=Jj,b.matchesProperty=Kj,b.memoize=Ih,b.merge=Nm,b.mergeWith=Om,b.method=dn,b.methodOf=en,b.mixin=Lj,b.negate=Jh,b.nthArg=Oj,b.omit=Pm,b.omitBy=Vi,b.once=Kh,b.orderBy=sh,b.over=fn,b.overArgs=mm,b.overEvery=gn,b.overSome=hn,b.partial=nm,b.partialRight=om,b.partition=fm,b.pick=Qm,b.pickBy=Wi,b.property=Pj,b.propertyOf=Qj,b.pull=Pl,b.pullAll=Bg,b.pullAllBy=Cg,b.pullAllWith=Dg,b.pullAt=Ql,b.range=jn,b.rangeRight=kn,b.rearg=pm,b.reject=vh,b.remove=Eg,b.rest=Lh,b.reverse=Fg,b.sampleSize=xh,b.set=Yi,b.setWith=Zi,b.shuffle=yh,b.slice=Gg,b.sortBy=gm,b.sortedUniq=Ng,b.sortedUniqBy=Og,b.split=sj,b.spread=Mh,b.tail=Pg,b.take=Qg,b.takeRight=Rg,b.takeRightWhile=Sg,b.takeWhile=Tg,b.tap=ah,b.throttle=Nh,b.thru=bh,b.toArray=xi,b.toPairs=Rm,b.toPairsIn=Sm,b.toPath=Xj,b.toPlainObject=Ci,b.transform=$i,b.unary=Oh,b.union=Rl,b.unionBy=Sl,b.unionWith=Tl,b.uniq=Ug,b.uniqBy=Vg,b.uniqWith=Wg,b.unset=_i,b.unzip=Xg,b.unzipWith=Yg,b.update=aj,b.updateWith=bj,b.values=cj,b.valuesIn=dj,b.without=Ul,b.words=Cj,b.wrap=Ph,b.xor=Vl,b.xorBy=Wl,b.xorWith=Xl,b.zip=Yl,b.zipObject=Zg,b.zipObjectDeep=$g,b.zipWith=Zl,b.entries=Rm,b.entriesIn=Sm,b.extend=Em,b.extendWith=Fm,Lj(b,b),b.add=ln,b.attempt=_m,b.camelCase=Tm,b.capitalize=hj,b.ceil=mn,b.clamp=ej,b.clone=Rh,b.cloneDeep=Th,b.cloneDeepWith=Uh,b.cloneWith=Sh,b.conformsTo=Vh,b.deburr=ij,b.defaultTo=Gj,b.divide=nn,b.endsWith=jj,b.eq=Wh,b.escape=kj,b.escapeRegExp=lj,b.every=jh,b.find=am,b.findIndex=og,b.findKey=Gi,b.findLast=bm,b.findLastIndex=pg,b.findLastKey=Hi,b.floor=on,b.forEach=oh,b.forEachRight=ph,b.forIn=Ii,b.forInRight=Ji,b.forOwn=Ki,b.forOwnRight=Li,b.get=Oi,b.gt=qm,b.gte=rm,b.has=Pi,b.hasIn=Qi,b.head=ug,b.identity=Hj,b.includes=qh,b.indexOf=vg,b.inRange=fj,b.invoke=Mm,b.isArguments=sm,b.isArray=tm,b.isArrayBuffer=um,b.isArrayLike=Xh,b.isArrayLikeObject=Yh,b.isBoolean=Zh,b.isBuffer=vm,b.isDate=wm,b.isElement=$h,b.isEmpty=_h,b.isEqual=ai,b.isEqualWith=bi,b.isError=ci,b.isFinite=di,b.isFunction=ei,b.isInteger=fi,b.isLength=gi,b.isMap=xm,b.isMatch=ji,b.isMatchWith=ki,b.isNaN=li,b.isNative=mi,b.isNil=oi,b.isNull=ni,b.isNumber=pi,b.isObject=hi,b.isObjectLike=ii,b.isPlainObject=qi,b.isRegExp=ym,b.isSafeInteger=ri,b.isSet=zm,b.isString=si,b.isSymbol=ti,b.isTypedArray=Am,b.isUndefined=ui,b.isWeakMap=vi,b.isWeakSet=wi,b.join=xg,b.kebabCase=Um,b.last=yg,b.lastIndexOf=zg,b.lowerCase=Vm,b.lowerFirst=Wm,b.lt=Bm,b.lte=Cm,b.max=Zj,b.maxBy=$j,b.mean=_j,b.meanBy=ak,b.min=bk,b.minBy=ck,b.stubArray=Rj,b.stubFalse=Sj,b.stubObject=Tj,b.stubString=Uj,b.stubTrue=Vj,b.multiply=pn,b.nth=Ag,b.noConflict=Mj,b.noop=Nj,b.now=hm,b.pad=mj,b.padEnd=nj,b.padStart=oj,b.parseInt=pj,b.random=gj,b.reduce=th,b.reduceRight=uh,b.repeat=qj,b.replace=rj,b.result=Xi,b.round=qn,b.runInContext=wd,b.sample=wh,b.size=zh,b.snakeCase=Xm,b.some=Ah,b.sortedIndex=Hg,b.sortedIndexBy=Ig,b.sortedIndexOf=Jg,b.sortedLastIndex=Kg,b.sortedLastIndexBy=Lg,b.sortedLastIndexOf=Mg,b.startCase=Ym,b.startsWith=tj,b.subtract=rn,b.sum=dk,b.sumBy=ek,b.template=uj,b.times=Wj,b.toFinite=yi,b.toInteger=zi,b.toLength=Ai,b.toLower=vj,b.toNumber=Bi,b.toSafeInteger=Di,b.toString=Ei,b.toUpper=wj,b.trim=xj,b.trimEnd=yj,b.trimStart=zj,b.truncate=Aj,b.unescape=Bj,b.uniqueId=Yj,b.upperCase=Zm,b.upperFirst=$m,b.each=oh,b.eachRight=ph,b.first=ug,Lj(b,function(){var a={};return cd(b,function(c,d){tk.call(b.prototype,d)||(a[d]=c)}),a}(),{chain:!1}),b.VERSION=da,h(["bind","bindKey","curry","curryRight","partial","partialRight"],function(a){b[a].placeholder=b}),h(["drop","take"],function(a,b){B.prototype[a]=function(c){c=c===ca?1:Wk(zi(c),0);var d=this.__filtered__&&!b?new B(this):this.clone();return d.__filtered__?d.__takeCount__=Xk(c,d.__takeCount__):d.__views__.push({size:Xk(c,Ka),type:a+(d.__dir__<0?"Right":"")}),d},B.prototype[a+"Right"]=function(b){return this.reverse()[a](b).reverse()}}),h(["filter","map","takeWhile"],function(a,b){var c=b+1,d=c==Da||c==Fa;B.prototype[a]=function(a){var b=this.clone();return b.__iteratees__.push({iteratee:yf(a,3),type:c}),b.__filtered__=b.__filtered__||d,b}}),h(["head","last"],function(a,b){var c="take"+(b?"Right":"");B.prototype[a]=function(){return this[c](1).value()[0]}}),h(["initial","tail"],function(a,b){var c="drop"+(b?"":"Right");B.prototype[a]=function(){return this.__filtered__?new B(this):this[c](1)}}),B.prototype.compact=function(){return this.filter(Hj)},B.prototype.find=function(a){return this.filter(a).head()},B.prototype.findLast=function(a){return this.reverse().find(a)},B.prototype.invokeMap=ee(function(a,b){return"function"==typeof a?new B(this):this.map(function(c){return Bd(c,a,b)})}),B.prototype.reject=function(a){return this.filter(Jh(yf(a)))},B.prototype.slice=function(a,b){a=zi(a);var c=this;return c.__filtered__&&(a>0||0>b)?new B(c):(0>a?c=c.takeRight(-a):a&&(c=c.drop(a)),b!==ca&&(b=zi(b),c=0>b?c.dropRight(-b):c.take(b-a)),c)},B.prototype.takeRightWhile=function(a){return this.reverse().takeWhile(a).reverse()},B.prototype.toArray=function(){return this.take(Ka)},cd(B.prototype,function(a,c){var d=/^(?:filter|find|map|reject)|While$/.test(c),e=/^(?:head|last)$/.test(c),f=b[e?"take"+("last"==c?"Right":""):c],g=e||/^find/.test(c);f&&(b.prototype[c]=function(){var c=this.__wrapped__,h=e?[1]:arguments,i=c instanceof B,j=h[0],k=i||tm(c),l=function(a){var c=f.apply(b,o([a],h));return e&&m?c[0]:c};k&&d&&"function"==typeof j&&1!=j.length&&(i=k=!1);var m=this.__chain__,n=!!this.__actions__.length,p=g&&!m,q=i&&!n;if(!g&&k){c=q?c:new B(this);var r=a.apply(c,h);return r.__actions__.push({func:bh,args:[l],thisArg:ca}),new s(r,m)}return p&&q?a.apply(this,h):(r=this.thru(l),p?e?r.value()[0]:r.value():r)})}),h(["pop","push","shift","sort","splice","unshift"],function(a){var c=ok[a],d=/^(?:push|sort|unshift)$/.test(a)?"tap":"thru",e=/^(?:pop|shift)$/.test(a);b.prototype[a]=function(){var a=arguments;if(e&&!this.__chain__){var b=this.value();return c.apply(tm(b)?b:[],a)}return this[d](function(b){return c.apply(tm(b)?b:[],a)})}}),cd(B.prototype,function(a,c){var d=b[c];if(d){var e=d.name+"",f=hl[e]||(hl[e]=[]);f.push({name:c,func:d})}}),hl[af(ca,qa).name]=[{name:"wrapper",func:ca}],B.prototype.clone=X,B.prototype.reverse=_,B.prototype.value=aa,b.prototype.at=$l,b.prototype.chain=ch,b.prototype.commit=dh,b.prototype.next=eh,b.prototype.plant=gh,b.prototype.reverse=hh,b.prototype.toJSON=b.prototype.valueOf=b.prototype.value=ih,b.prototype.first=b.prototype.head,Jk&&(b.prototype[Jk]=fh),b},vd=ud();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(ed._=vd,define(function(){return vd})):gd?((gd.exports=vd)._=vd,fd._=vd):ed._=vd}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],130:[function(a,b,c){function d(a,b){if("function"!=typeof a||null!=b&&"function"!=typeof b)throw new TypeError(f);var c=function(){var d=arguments,e=b?b.apply(this,d):d[0],f=c.cache;if(f.has(e))return f.get(e);var g=a.apply(this,d);return c.cache=f.set(e,g)||f,g};return c.cache=new(d.Cache||e),c}var e=a("./_MapCache"),f="Expected a function";d.Cache=e,b.exports=d},{"./_MapCache":79}],131:[function(a,b,c){function d(a,b,c){return null==a?a:e(a,b,c)}var e=a("./_baseSet");b.exports=d},{"./_baseSet":87}],132:[function(a,b,c){function d(a){return null==a?"":e(a)}var e=a("./_baseToString");b.exports=d},{"./_baseToString":88}],133:[function(a,b,c){(function(c){"use strict";var d=a("is-utf8"),e=b.exports=function(a){return"string"==typeof a?a.replace(/^\ufeff/g,""):c.isBuffer(a)&&d(a)&&239===a[0]&&187===a[1]&&191===a[2]?a.slice(3):a};e.stream=function(){var b=a("first-chunk-stream");return b({minSize:3},function(a,b,c){this.push(e(a)),c()})}}).call(this,{isBuffer:a("../grunt-browserify/node_modules/browserify/node_modules/insert-module-globals/node_modules/is-buffer/index.js")})},{"../grunt-browserify/node_modules/browserify/node_modules/insert-module-globals/node_modules/is-buffer/index.js":39,"first-chunk-stream":30,"is-utf8":75}],134:[function(a,b,c){b.exports={name:"csvtojson",description:"A tool concentrating on converting csv data to JSON with customised parser supporting",author:"Keyang Xiang <keyang.xiang@gmail.com>",homepage:"https://github.com/Keyang/node-csvtojson",bugs:"https://github.com/Keyang/node-csvtojson/issues",repository:{type:"git",url:"https://github.com/Keyang/node-csvtojson.git"},contributors:[{name:"Daniel Cohen",email:"dcohenb@gmail.com",url:"https://github.com/dcohenb",contributions:1,additions:1,deletions:6,hireable:!0},{name:"Trang",email:"trangtungn@gmail.com",url:"https://github.com/trangtungn",contributions:1,additions:6,deletions:1,hireable:!0},{name:"Matthias Lienau",email:"matthias@mlienau.de",url:"https://github.com/atufkas",contributions:9,additions:74,deletions:45,hireable:null},{name:"Alec Fenichel",email:"alec.fenichel@gmail.com",url:"https://github.com/fenichelar",contributions:1,additions:1,deletions:1,hireable:!0},{name:"Blake Blackshear",email:null,url:"https://github.com/blakeblackshear",contributions:2,additions:8,deletions:8,hireable:null},{name:"Dimitri Kennedy",email:"dimitrikennedy@gmail.com",url:"https://github.com/roodboi",contributions:2,additions:3,deletions:3,hireable:null},{name:null,email:null,url:"https://github.com/markwithers",contributions:1,additions:1,deletions:1,hireable:null},{name:"Robert Porter",email:null,url:"https://github.com/colarob",contributions:1,additions:64,deletions:21,hireable:null},{name:"Jessica Good",email:null,url:"https://github.com/jessicagood",contributions:1,additions:8,deletions:5,hireable:null},{name:null,email:null,url:"https://github.com/jondayft",contributions:1,additions:18,deletions:0,hireable:null},{name:"Dane Petersen",email:null,url:"https://github.com/thegreatsunra",contributions:1,additions:18920,deletions:8429,hireable:null},{name:"Jimi Ford",email:null,url:"https://github.com/JimiHFord",
-contributions:1,additions:5,deletions:5,hireable:null},{name:"Hocine Moukaideche",email:null,url:"https://github.com/Off76",contributions:1,additions:1,deletions:1,hireable:!0},{name:"Keyang Xiang",email:"keyang.xiang@gmail.com",url:"https://github.com/Keyang",contributions:122,additions:46304,deletions:65397,hireable:null},{name:"Ionică Bizău",email:"contact@ionicabizau.net",url:"https://github.com/IonicaBizau",contributions:1,additions:98,deletions:86,hireable:null},{name:"Sean Lang",email:"slang800@gmail.com",url:"https://github.com/slang800",contributions:2,additions:2,deletions:1,hireable:!0},{name:"Tom Dodson",email:"t3.dodson@gmail.com",url:"https://github.com/t3dodson",contributions:25,additions:1485,deletions:1414,hireable:null},{name:"Jeff Johnson",email:null,url:"https://github.com/jeffcjohnson",contributions:1,additions:1,deletions:1,hireable:null},{name:"Amila Welihinda",email:"amilajack@gmail.com",url:"https://github.com/amilajack",contributions:1,additions:2,deletions:1,hireable:!0},{name:"Zsolt R. Molnar",email:null,url:"https://github.com/molnarzs",contributions:1,additions:40,deletions:2,hireable:!0}],version:"1.1.7",keywords:["csv","csv parser","parse csv","csvtojson","json","csv to json","csv convert","tojson","convert csv to json","csv-json"],bin:{csvtojson:"./bin/csvtojson"},license:"MIT",engines:{node:">=0.10"},devDependencies:{grunt:"^0.4.5","grunt-browserify":"^4.0.1","grunt-contrib-jshint":"^0.11.2","grunt-contrib-uglify":"^0.11.0","grunt-contrib-watch":"^0.6.1","grunt-git":"^0.3.5","grunt-madge":"0.0.6","grunt-mocha-test":"^0.12.7","grunt-newer":"^1.1.0",imgur:"^0.1.5","load-grunt-tasks":"^3.4.0",minimist:"^1.2.0",mocha:"^2.4.5",request:"^2.81.0"},dependencies:{lodash:"^4.17.3","strip-bom":"1.0.0"},scripts:{test:"mocha ./test -R spec","test-debug":"mocha debug ./test -R spec","test-all":"mocha  ./test -R spec && CSV_WORKER=3 mocha ./test -R spec "}}},{}]},{},[1]);
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/dist/index.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/dist/index.html deleted file mode 100644 index efda2c2..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/dist/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - Code coverage report for csv2json/dist - - - - - - - -
-
-

- All files csv2json/dist -

-
-
- 0% - Statements - 0/13762 -
-
- 0% - Branches - 0/11883 -
-
- 0% - Functions - 0/2950 -
-
- 0% - Lines - 0/8549 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
csvtojson.js
0%0/87550%0/60570%0/14770%0/8543
csvtojson.min.js
0%0/50070%0/58260%0/14730%0/6
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/index.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/index.html deleted file mode 100644 index 09c8f5e..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/index.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - Code coverage report for csv2json - - - - - - - -
-
-

- All files csv2json -

-
-
- 0% - Statements - 0/12 -
-
- 0% - Branches - 0/2 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/12 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
Gruntfile.js
0%0/8100%0/00%0/10%0/8
browser_index.js
0%0/30%0/2100%0/00%0/3
index.js
0%0/1100%0/0100%0/00%0/1
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/index.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/index.js.html deleted file mode 100644 index adb2418..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/index.js.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - Code coverage report for csv2json/index.js - - - - - - - -
-
-

- All files / csv2json index.js -

-
-
- 0% - Statements - 0/1 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 0% - Lines - 0/1 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 
module.exports=require("./build");
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/CSVError.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/CSVError.js.html deleted file mode 100644 index 865196c..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/CSVError.js.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/CSVError.js - - - - - - - -
-
-

- All files / csv2json/libs/core CSVError.js -

-
-
- 0% - Statements - 0/17 -
-
- 0% - Branches - 0/2 -
-
- 0% - Functions - 0/5 -
-
- 0% - Lines - 0/17 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
var util = require("util");
-module.exports = CSVError;
-function CSVError(err, index, extra) {
-  Error.call(this, "");
-  this.err = err;
-  this.line = index;
-  this.extra = extra;
-  this.message = "Error: " + err + ". JSON Line number: " + index + (extra ? " near: " + extra : "");
-  this.name = "CSV Error";
-}
-util.inherits(CSVError, Error);
- 
-CSVError.prototype.toString = function() {
-  return JSON.stringify([this.err, this.line, this.extra]);
-};
- 
-CSVError.column_mismatched = function(index, extra) {
-  return new CSVError("column_mismatched", index, extra);
-};
- 
-CSVError.unclosed_quote = function(index, extra) {
-  return new CSVError("unclosed_quote", index, extra);
-};
- 
-CSVError.fromArray = function(arr) {
-  return new CSVError(arr[0], arr[1], arr[2]);
-};
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/Converter.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/Converter.js.html deleted file mode 100644 index b611579..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/Converter.js.html +++ /dev/null @@ -1,1836 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/Converter.js - - - - - - - -
-
-

- All files / csv2json/libs/core Converter.js -

-
-
- 0% - Statements - 0/375 -
-
- 0% - Branches - 0/226 -
-
- 0% - Functions - 0/43 -
-
- 0% - Lines - 0/374 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -248 -249 -250 -251 -252 -253 -254 -255 -256 -257 -258 -259 -260 -261 -262 -263 -264 -265 -266 -267 -268 -269 -270 -271 -272 -273 -274 -275 -276 -277 -278 -279 -280 -281 -282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294 -295 -296 -297 -298 -299 -300 -301 -302 -303 -304 -305 -306 -307 -308 -309 -310 -311 -312 -313 -314 -315 -316 -317 -318 -319 -320 -321 -322 -323 -324 -325 -326 -327 -328 -329 -330 -331 -332 -333 -334 -335 -336 -337 -338 -339 -340 -341 -342 -343 -344 -345 -346 -347 -348 -349 -350 -351 -352 -353 -354 -355 -356 -357 -358 -359 -360 -361 -362 -363 -364 -365 -366 -367 -368 -369 -370 -371 -372 -373 -374 -375 -376 -377 -378 -379 -380 -381 -382 -383 -384 -385 -386 -387 -388 -389 -390 -391 -392 -393 -394 -395 -396 -397 -398 -399 -400 -401 -402 -403 -404 -405 -406 -407 -408 -409 -410 -411 -412 -413 -414 -415 -416 -417 -418 -419 -420 -421 -422 -423 -424 -425 -426 -427 -428 -429 -430 -431 -432 -433 -434 -435 -436 -437 -438 -439 -440 -441 -442 -443 -444 -445 -446 -447 -448 -449 -450 -451 -452 -453 -454 -455 -456 -457 -458 -459 -460 -461 -462 -463 -464 -465 -466 -467 -468 -469 -470 -471 -472 -473 -474 -475 -476 -477 -478 -479 -480 -481 -482 -483 -484 -485 -486 -487 -488 -489 -490 -491 -492 -493 -494 -495 -496 -497 -498 -499 -500 -501 -502 -503 -504 -505 -506 -507 -508 -509 -510 -511 -512 -513 -514 -515 -516 -517 -518 -519 -520 -521 -522 -523 -524 -525 -526 -527 -528 -529 -530 -531 -532 -533 -534 -535 -536 -537 -538 -539 -540 -541 -542 -543 -544 -545 -546 -547 -548 -549 -550 -551 -552 -553 -554 -555 -556 -557 -558 -559 -560 -561 -562 -563 -564 -565 -566 -567 -568 -569 -570 -571 -572 -573 -574 -575 -576 -577 -578 -579 -580 -581 -582 -583 -584 -585 -586 -587 -588 -589 -590  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
var util = require("util");
-var Transform = require("stream").Transform;
-var os = require("os");
-var stripBom = require('strip-bom');
-var eol = os.EOL;
-// var Processor = require("./Processor.js");
-var defParam = require("./defParam");
-var fileline = require("./fileline");
-var fileLineToCSVLine = require("./fileLineToCSVLine");
-var linesToJson = require("./linesToJson");
-var CSVError = require("./CSVError");
-var workerMgr = null;
-var _ = require('lodash');
-var rowSplit = require("./rowSplit");
-function Converter(params, options) {
-  Transform.call(this, options);
-  this._options = options || {};
-  this.param = defParam(params);
-  this.param._options = this._options;
-  // this.resultObject = new Result(this);
-  // this.pipe(this.resultObject); // it is important to have downstream for a transform otherwise it will stuck
-  this.started = false;//indicate if parsing has started.
-  this.recordNum = 0;
-  this.lineNumber = 0; //file line number
-  this._csvLineBuffer = "";
-  this.lastIndex = 0; // index in result json array
-  //this._pipe(this.lineParser).pipe(this.processor);
-  // this.initNoFork();
-  if (this.param.forked) {
-    this.param.forked = false;
-    this.workerNum = 2;
-  }
-  this.flushCb = null;
-  this.processEnd = false;
-  this.sequenceBuffer = [];
-  this._needJson = null;
-  this._needEmitResult = null;
-  this._needEmitFinalResult = null;
-  this._needEmitHeader = null;
-  this._needEmitJson = null;
-  this._needPush = null;
-  this._needEmitCsv = null;
-  this._csvTransf = null;
-  this.finalResult = [];
-  // this.on("data", function() {});
-  this.on("error", emitDone(this));
-  this.on("end", emitDone(this));
-  this.initWorker();
-  process.nextTick(function () {
-    if (this._needEmitFinalResult === null) {
-      this._needEmitFinalResult = this.listeners("end_parsed").length > 0;
-    }
-    if (this._needEmitResult === null) {
-      this._needEmitResult = this.listeners("record_parsed").length > 0;
-    }
-    if (this._needEmitJson === null) {
-      this._needEmitJson = this.listeners("json").length > 0;
-    }
-    if (this._needEmitHeader === null) {
-      this._needEmitHeader = this.listeners("header").length > 0;
-    }
-    if (this._needEmitCsv === null) {
-      this._needEmitCsv = this.listeners("csv").length > 0;
-    }
-    if (this._needJson === null) {
-      this._needJson = this._needEmitJson || this._needEmitFinalResult || this._needEmitResult || this.transform || this._options.objectMode;
-    }
-    if (this._needPush === null) {
-      this._needPush = this.listeners("data").length > 0 || this.listeners("readable").length > 0;
-      // this._needPush=false;
-    }
-    this.param._needParseJson = this._needJson || this._needPush;
-  }.bind(this));
- 
-  return this;
-}
- 
-util.inherits(Converter, Transform);
-function emitDone(conv) {
-  return function (err) {
-    if (!conv._hasDone) {
-      conv._hasDone = true;
-      process.nextTick(function () {
-        conv.emit('done', err);
-      });
-    };
-  }
-}
- 
- 
-function bufFromString(str) {
-  var length=Buffer.byteLength(str);
-  var buffer = Buffer.allocUnsafe
-    ? Buffer.allocUnsafe(length)
-    : new Buffer(length);
-  buffer.write(str);
-  return buffer;
-}
- 
-Converter.prototype._transform = function (data, encoding, cb) {
-  data=this.prepareData(data);
-  var idx =data.length-1;
-  var left=null;
-  /**
-   * From Keyang:
-   * The code below is to check if a single utf8 char (which could be multiple bytes) being split.
-   * If the char being split, the buffer from two chunk needs to be concat
-   * check how utf8 being encoded to understand the code below. 
-   * If anyone has any better way to do this, please let me know.
-   */
-  if ((data[idx] & 1<<7) !=0){
-    while ((data[idx] & 3<<6) === 128){
-      idx--;
-    }
-    idx--;
-  }
-  if (idx !=data.length-1){
-    left=data.slice(idx+1);
-    data=data.slice(0,idx+1)
-    var _cb=cb;
-    var self=this;
-    cb=function(){
-      if (self._csvLineBuffer){
-        self._csvLineBuffer=Buffer.concat([bufFromString(self._csvLineBuffer,"utf8"),left]);
-      }else{
-        self._csvLineBuffer=left;
-      }
-      _cb();
-    }
-  }
-  data = data.toString("utf8");
-  if (this.started === false) {
-    this.started = true;
-    data = stripBom(data);
-    if (this.param.toArrayString) {
-      if (this._needPush) {
-        this.push("[" + eol, "utf8");
-      }
-    }
-  }
-  var self = this;
-  this.preProcessRaw(data, function (d) {
-    if (d && d.length > 0) {
-      self.processData(d, cb);
-    } else {
-      cb();
-    }
-  });
-};
- 
-Converter.prototype.prepareData = function (data) {
-  if (this._csvLineBuffer && this._csvLineBuffer.length>0){
-    if (typeof this._csvLineBuffer === "string"){
-      this._csvLineBuffer=bufFromString(this._csvLineBuffer);
-    }
-    return Buffer.concat([this._csvLineBuffer,data]);
-  }else{
-    return data;
-  }
-  // return this._csvLineBuffer + data;
-};
- 
-Converter.prototype.setPartialData = function (d) {
-  this._csvLineBuffer = d;
-};
- 
-Converter.prototype.processData = function (data, cb) {
-  var params = this.param;
-  if (params.ignoreEmpty && !params._headers) {
-    data = data.trimLeft();
-  }
-  var eol = this.param.eol;
-  var fileLines = fileline(data, this.param);
-  if (this.param.eol !== eol) {
-    this.emit("eol", this.param.eol);
-  }
-  if (fileLines.lines.length > 0) {
-    if (this.preProcessLine && typeof this.preProcessLine === "function") {
-      fileLines.lines = this._preProcessLines(fileLines.lines, this.lastIndex);
-    }
-    if (!params._headers) { //header is not inited. init header
-      this.processHead(fileLines, cb);
-    } else {
-      if (params.workerNum <= 1) {
-        var lines = fileLineToCSVLine(fileLines, params);
-        this.setPartialData(lines.partial);
-        var jsonArr = linesToJson(lines.lines, params, this.recordNum);
-        this.processResult(jsonArr);
-        this.lastIndex += jsonArr.length;
-        this.recordNum += jsonArr.length;
-        cb();
-      } else {
-        this.workerProcess(fileLines, cb);
-      }
-    }
-  } else {
-    this.setPartialData(fileLines.partial);
-    cb();
-  }
-};
- 
-Converter.prototype._preProcessLines = function (lines, startIdx) {
-  var rtn = [];
-  for (var i = 0, len = lines.length; i < len; i++) {
-    var result = this.preProcessLine(lines[i], startIdx + i + 1);
-    if (typeof result === "string") {
-      rtn.push(result);
-    } else {
-      rtn.push(lines[i]);
-      this.emit("error", new Error("preProcessLine should return a string but got: " + JSON.stringify(result)));
-    }
-  }
-  return rtn;
-};
- 
-Converter.prototype.initWorker = function () {
-  var workerNum = this.param.workerNum - 1;
-  if (workerNum > 0) {
-    workerMgr = require("./workerMgr");
-    this.workerMgr = workerMgr();
-    this.workerMgr.initWorker(workerNum, this.param);
-  }
-};
- 
-Converter.prototype.preRawData = function (func) {
-  this.preProcessRaw = func;
-  return this;
-};
- 
-Converter.prototype.preFileLine = function (func) {
-  this.preProcessLine = func;
-  return this;
-};
- 
-/**
- * workerpRocess does not support embeded multiple lines.
- */
-Converter.prototype.workerProcess = function (fileLine, cb) {
-  var self = this;
-  var line = fileLine;
-  var eol = this.getEol();
-  this.setPartialData(line.partial);
-  this.workerMgr.sendWorker(line.lines.join(eol) + eol, this.lastIndex, cb, function (results, lastIndex) {
-    var buf;
-    var cur = self.sequenceBuffer[0];
-    if (cur.idx === lastIndex) {
-      cur.result = results;
-      var records = [];
-      while (self.sequenceBuffer[0] && self.sequenceBuffer[0].result) {
-        buf = self.sequenceBuffer.shift();
-        records = records.concat(buf.result);
-      }
-      self.processResult(records);
-      self.recordNum += records.length;
-    } else {
-      for (var i = 0, len = self.sequenceBuffer.length; i < len; i++) {
-        buf = self.sequenceBuffer[i];
-        if (buf.idx === lastIndex) {
-          buf.result = results;
-          break;
-        }
-      }
-    }
-  });
-  this.sequenceBuffer.push({
-    idx: this.lastIndex,
-    result: null
-  });
-  this.lastIndex += line.lines.length;
-};
- 
-Converter.prototype.processHead = function (fileLine, cb) {
-  var params = this.param;
-  if (params._headers) {
-    return cb();
-  }
-  //dirty hack
-  params._needFilterRow = false;
-  // if header is not inited. init header
-  var lines = fileLine.lines;
-  var left = "";
-  var headerRow = [];
-  if (!params.noheader) {
-    while (lines.length) {
-      var line = left + lines.shift();
-      var delimiter = params.delimiter;
-      var row = rowSplit(line, params);
-      if (params.delimiter !== delimiter) {
-        this.emit("delimiter", params.delimiter);
-      }
-      if (row.closed) {
-        headerRow = row.cols;
-        left = "";
-        break;
-      } else {
-        left = line + this.getEol();
-      }
-    }
-  }
-  params._needFilterRow = true;
-  if (!params.noheader && headerRow.length === 0) { //if one chunk of data does not complete header row.
-    this.setPartialData(left);
-    return cb();
-  }
-  if (params.noheader) {
-    if (params.headers) {
-      params._headers = params.headers;
-    } else {
-      params._headers = [];
-    }
-  } else {
-    if (params.headers) {
-      params._headers = params.headers;
-    } else {
-      params._headers = headerRow;
-    }
-  }
-  configIgnoreIncludeColumns(params);
-  params._headers = require("./filterRow")(params._headers, params);
-  if (this._needEmitHeader && this.param._headers) {
-    this.emit("header", this.param._headers);
-  }
-  var delimiter = params.delimiter;
-  var lines = fileLineToCSVLine(fileLine, params);
-  if (params.delimiter !== delimiter) {
-    this.emit("delimiter", params.delimiter);
-  }
-  this.setPartialData(lines.partial);
-  if (this.param.workerNum > 1) {
-    this.workerMgr.setParams(params);
-  }
-  var res = linesToJson(lines.lines, params, 0);
-  // Put the header with the first row
-  // if(res.length > 0) res[0].header = params._headers;
-  this.processResult(res);
-  this.lastIndex += res.length;
-  this.recordNum += res.length;
- 
-  cb();
-};
-function configIgnoreIncludeColumns(params) {
-  if (params._postIgnoreColumns) {
-    for (var i = 0; i < params.ignoreColumns.length; i++) {
-      var ignoreCol = params.ignoreColumns[i];
-      if (typeof ignoreCol === "string") {
-        var idx = params._headers.indexOf(ignoreCol);
-        if (idx > -1) {
-          params.ignoreColumns[i] = idx;
-        } else {
-          params.ignoreColumns[i] = -1;
-        }
-      }
-    }
-    params.ignoreColumns.sort(function (a, b) { return b - a; });
-  }
-  if (params._postIncludeColumns) {
-    for (var i = 0; i < params.includeColumns.length; i++) {
-      var includeCol = params.includeColumns[i];
-      if (typeof includeCol === "string") {
-        var idx = params._headers.indexOf(includeCol);
-        if (idx > -1) {
-          params.includeColumns[i] = idx;
-        } else {
-          params.includeColumns[i] = -1;
-        }
-      }
-    }
-  }
-  params.ignoreColumns = _.uniq(params.ignoreColumns);
-  params.includeColumns = _.uniq(params.includeColumns);
-}
- 
-Converter.prototype.processResult = function (result) {
-  for (var i = 0, len = result.length; i < len; i++) {
-    var r = result[i];
-    if (r.err) {
-      this.emit("error", r.err);
-    } else {
-      this.emitResult(r);
-    }
-  }
-};
- 
-Converter.prototype.emitResult = function (r) {
-  var index = r.index;
-  var header = this.param;
-  var row = r.row;
-  var result = r.json;
-  var resultJson = null;
-  var resultStr = null;
-  if (typeof result === "string") {
-    resultStr = result;
-  } else {
-    resultJson = result;
-  }
-  if (resultJson === null && this._needJson) {
-    resultJson = JSON.parse(resultStr);
-    if (typeof row === "string") {
-      row = JSON.parse(row);
-    }
-  }
-  if (this.transform && typeof this.transform === "function") {
-    this.transform(resultJson, row, index);
-    resultStr = null;
-  }
-  if (this._needEmitJson) {
-    this.emit("json", resultJson, index);
-  }
-  if (this._needEmitCsv) {
-    if (typeof row === "string") {
-      row = JSON.parse(row);
-    }
-    this.emit("csv", row, index);
-  }
-  if (this.param.constructResult && this._needEmitFinalResult) {
-    this.finalResult.push(resultJson);
-  }
-  if (this._needEmitResult) {
-    this.emit("record_parsed", resultJson, row, index);
-  }
-  if (this.param.toArrayString && index > 0 && this._needPush) {
-    this.push("," + eol);
-  }
-  if (this._options && this._options.objectMode) {
-    this.push(resultJson);
-  } else {
-    if (this._needPush) {
-      if (resultStr === null) {
-        resultStr = JSON.stringify(resultJson);
-      }
-      this.push(!this.param.toArrayString ? resultStr + eol : resultStr, "utf8");
-    }
-  }
-};
- 
-Converter.prototype.preProcessRaw = function (data, cb) {
-  cb(data);
-};
- 
-// FIXME: lineNumber is not used.
-Converter.prototype.preProcessLine = function (line, lineNumber) {
-  return line;
-};
- 
-Converter.prototype._flush = function (cb) {
-  var self = this;
-  this.flushCb = function () {
-    self.emit("end_parsed", self.finalResult);
-    if (self.workerMgr) {
-      self.workerMgr.destroyWorker();
-    }
-    cb();
-    if (!self._needPush) {
-      self.emit("end");
-    }
-  };
-  if (this._csvLineBuffer.length > 0) {
-    var eol = this.getEol();
-    if (this._csvLineBuffer[this._csvLineBuffer.length - 1] !== eol) {
-      this._csvLineBuffer += eol;
-    }
-    this.processData(this._csvLineBuffer, function () {
-      this.checkAndFlush();
-    }.bind(this));
-  } else {
-    this.checkAndFlush();
-  }
-  return;
-};
- 
-Converter.prototype.checkAndFlush = function () {
-  if (this._csvLineBuffer.length !== 0) {
-    this.emit("error", CSVError.unclosed_quote(this.recordNum, this._csvLineBuffer), this._csvLineBuffer);
-  }
-  if (this.param.toArrayString && this._needPush) {
-    this.push(eol + "]", "utf8");
-  }
-  if (this.workerMgr && this.workerMgr.isRunning()) {
-    this.workerMgr.drain = function () {
-      this.flushCb();
-    }.bind(this);
-  } else {
-    this.flushCb();
-  }
-};
- 
-Converter.prototype.getEol = function (data) {
-  if (!this.param.eol && data) {
-    for (var i = 0, len = data.length; i < len; i++) {
-      if (data[i] === "\r") {
-        if (data[i + 1] === "\n") {
-          this.param.eol = "\r\n";
-        } else {
-          this.param.eol = "\r";
-        }
-        return this.param.eol;
-      } else if (data[i] === "\n") {
-        this.param.eol = "\n";
-        return this.param.eol;
-      }
-    }
-    this.param.eol = eol;
-  }
- 
-  return this.param.eol || eol;
-};
- 
-Converter.prototype.fromFile = function (filePath, cb, options) {
-  var fs = require('fs');
-  var rs = null;
-  if (typeof cb ==="object" && typeof options === "undefined"){
-    options=cb;
-    cb=null;
-  }
-  this.wrapCallback(cb, function () {
-    if (rs && rs.destroy) {
-      rs.destroy();
-    }
-  });
-  fs.exists(filePath, function (exist) {
-    if (exist) {
-      rs = fs.createReadStream(filePath,options);
-      rs.pipe(this);
-    } else {
-      this.emit('error', new Error("File does not exist. Check to make sure the file path to your csv is correct."));
-    }
-  }.bind(this));
-  return this;
-};
- 
-Converter.prototype.fromStream = function (readStream, cb) {
-  if (cb && typeof cb === "function") {
-    this.wrapCallback(cb);
-  }
-  readStream.pipe(this);
-  return this;
-};
- 
-Converter.prototype.transf = function (func) {
-  this.transform = func;
-  return this;
-};
- 
-Converter.prototype.fromString = function (csvString, cb) {
-  if (typeof csvString !== "string") {
-    if (cb && typeof cb ==="function"){
-      return cb(new Error("Passed CSV Data is not a string."));
-    }
-  }
-  if (cb && typeof cb === "function") {
-    this.wrapCallback(cb, function () {
-    });
-  }
-  var read=new Readable();
-  var idx=0;
-  read._read=function(size){
-    if (idx>=csvString.length){
-      this.push(null);
-    }else{
-      var str=csvString.substr(idx,size);
-      this.push(str);
-      idx+=size;
-    }
-  }
-  read.pipe(this);
-  return this;
-};
- 
-Converter.prototype.wrapCallback = function (cb, clean) {
-  if (clean === undefined) {
-    clean = function () { };
-  }
-  if (cb && typeof cb === "function") {
-    this.once("end_parsed", function (res) {
-      if (!this.hasError) {
-        cb(null, res);
-      }
-    }.bind(this));
-  }
-  this.once("error", function (err) {
-    this.hasError = true;
-    if (cb && typeof cb === "function") {
-      cb(err);
-    }
-    clean();
-  }.bind(this));
-};
- 
-module.exports = Converter;
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/csvline.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/csvline.js.html deleted file mode 100644 index 99d4701..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/csvline.js.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/csvline.js - - - - - - - -
-
-

- All files / csv2json/libs/core csvline.js -

-
-
- 0% - Statements - 0/13 -
-
- 0% - Branches - 0/6 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/13 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
var getEol = require("./getEol");
-var rowSplit = require("./rowSplit");
-/**
- * Convert lines to csv columns
- * @param  {[type]} lines [file lines]
- * @param  {[type]} param [Converter param]
- * @return {[type]}  {lines:[[col1,col2,col3...]],partial:String}
- */
-module.exports = function (lines, param) {
-  var csvLines = [];
-  var left = "";
-  while (lines.length) {
-    var line = left + lines.shift();
-    var row = rowSplit(line, param);
-    if (row.closed || param.alwaysSplitAtEOL) {
-      csvLines.push(row.cols);
-      left = "";
-    } else {
-      left = line + (getEol(line, param) || "\n"); // if unable to getEol from data, assume "\n"
-    }
-  }
-  return { lines: csvLines, partial: left };
-};
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/dataToCSVLine.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/dataToCSVLine.js.html deleted file mode 100644 index f9af899..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/dataToCSVLine.js.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/dataToCSVLine.js - - - - - - - -
-
-

- All files / csv2json/libs/core dataToCSVLine.js -

-
-
- 0% - Statements - 0/7 -
-
- 100% - Branches - 0/0 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/7 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
var fileline=require("./fileline");
-var csvline=require("./csvline");
-/**
- * Convert data chunk to csv lines with cols
- * @param  {[type]} data   [description]
- * @param  {[type]} params [description]
- * @return {[type]}    {lines:[[col1,col2,col3]],partial:String}
- */
-module.exports = function(data, params) {
-  var line = fileline(data, params);
-  var lines = line.lines;
-  var csvLines = csvline(lines, params);
-  return {
-    lines: csvLines.lines,
-    partial: csvLines.partial + line.partial
-  };
-};
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defParam.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defParam.js.html deleted file mode 100644 index 3bbcc58..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defParam.js.html +++ /dev/null @@ -1,270 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/defParam.js - - - - - - - -
-
-

- All files / csv2json/libs/core defParam.js -

-
-
- 0% - Statements - 0/23 -
-
- 0% - Branches - 0/22 -
-
- 0% - Functions - 0/3 -
-
- 0% - Lines - 0/22 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
var numExp = /^[0-9]+$/;
-module.exports = function (params) {
-  var _param = {
-    constructResult: true, //set to false to not construct result in memory. suitable for big csv data
-    delimiter: ',', // change the delimiter of csv columns. It is able to use an array to specify potencial delimiters. e.g. [",","|",";"]
-    ignoreColumns: [], // columns to ignore upon input.
-    includeColumns: [], // columns to include upon input.
-    quote: '"', //quote for a column containing delimiter.
-    trim: true, //trim column's space charcters
-    checkType: false, //whether check column type
-    toArrayString: false, //stream down stringified json array instead of string of json. (useful if downstream is file writer etc)
-    ignoreEmpty: false, //Ignore empty value while parsing. if a value of the column is empty, it will be skipped parsing.
-    workerNum: getEnv("CSV_WORKER", 1), //number of parallel workers. If multi-core CPU available, increase the number will get better performance for large csv data.
-    fork: false, //use another CPU core to convert the csv stream
-    noheader: false, //indicate if first line of CSV file is header or not.
-    headers: null, //an array of header strings. If noheader is false and headers is array, csv header will be ignored.
-    flatKeys: false, // Don't interpret dots and square brackets in header fields as nested object or array identifiers at all.
-    maxRowLength: 0, //the max character a csv row could have. 0 means infinite. If max number exceeded, parser will emit "error" of "row_exceed". if a possibly corrupted csv data provided, give it a number like 65535 so the parser wont consume memory. default: 0
-    checkColumn: false, //whether check column number of a row is the same as headers. If column number mismatched headers number, an error of "mismatched_column" will be emitted.. default: false
-    escape: '"', //escape char for quoted column
-    colParser:{}, //flags on columns to alter field processing.
- 
-    /**below are internal params */
-    _columnConv:[],
-    _headerType: [],
-    _headerTitle: [],
-    _headerFlag: [],
-    _headers: null,
-    _needFilterRow: false
-  };
-  if (!params) {
-    params = {};
-  }
-  for (var key in params) {
-    if (params.hasOwnProperty(key)) {
-      if (Array.isArray(params[key])) {
-        _param[key] = [].concat(params[key]);
-      } else {
-        _param[key] = params[key];
-      }
-    }
-  }
-  if (_param.ignoreColumns.length > 0 && !numExp.test(_param.ignoreColumns.join(""))) {
-    _param._postIgnoreColumns = true;
-  }
-  if (_param.includeColumns.length > 0 && !numExp.test(_param.includeColumns.join(""))) {
-    _param._postIncludeColumns = true;
-  }
- 
-  if (_param.ignoreColumns.length || _param.includeColumns.length) {
-    _param._needFilterRow = true;
-    if (!_param._postIgnoreColumns){
-      _param.ignoreColumns.sort(function (a, b) { return b-a;});
-    }
-  }
- 
- 
-  return _param;
-};
- 
-function getEnv(key, def) {
-  if (process.env[key]) {
-    return process.env[key];
-  } else {
-    return def;
-  }
-}
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/index.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/index.html deleted file mode 100644 index c1a1a38..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/index.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/defaultParsers - - - - - - - -
-
-

- All files csv2json/libs/core/defaultParsers -

-
-
- 0% - Statements - 0/63 -
-
- 0% - Branches - 0/40 -
-
- 0% - Functions - 0/6 -
-
- 0% - Lines - 0/63 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
index.js
0%0/1100%0/0100%0/00%0/1
parser_array.js
0%0/50%0/20%0/10%0/5
parser_flat.js
0%0/4100%0/00%0/10%0/4
parser_json.js
0%0/390%0/340%0/20%0/39
parser_jsonarray.js
0%0/130%0/40%0/10%0/13
parser_omit.js
0%0/1100%0/00%0/10%0/1
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/index.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/index.js.html deleted file mode 100644 index 761cb8e..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/index.js.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/defaultParsers/index.js - - - - - - - -
-
-

- All files / csv2json/libs/core/defaultParsers index.js -

-
-
- 0% - Statements - 0/1 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 0% - Lines - 0/1 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8  -  -  -  -  -  -  - 
module.exports = [
-  require('./parser_array.js'),
-  require('./parser_json.js'),
-  require('./parser_omit.js'),
-  require('./parser_jsonarray.js'),
-  require("./parser_flat.js")
-];
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_array.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_array.js.html deleted file mode 100644 index 0f25f5c..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_array.js.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/defaultParsers/parser_array.js - - - - - - - -
-
-

- All files / csv2json/libs/core/defaultParsers parser_array.js -

-
-
- 0% - Statements - 0/5 -
-
- 0% - Branches - 0/2 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/5 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13  -  -  -  -  -  -  -  -  -  -  -  - 
module.exports = {
-  "name": "array",
-  "processSafe":true,
-  "regExp": /^\*array\*/,
-  "parserFunc": function parser_array(params) {
-    var fieldName = params.head.replace(this.regExp, '');
-    if (params.resultRow[fieldName] === undefined) {
-      params.resultRow[fieldName] = [];
-    }
-    params.resultRow[fieldName].push(params.item);
-  }
-};
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_flat.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_flat.js.html deleted file mode 100644 index 3011352..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_flat.js.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/defaultParsers/parser_flat.js - - - - - - - -
-
-

- All files / csv2json/libs/core/defaultParsers parser_flat.js -

-
-
- 0% - Statements - 0/4 -
-
- 100% - Branches - 0/0 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/4 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11  -  -  -  -  -  -  -  -  -  - 
module.exports = {
-  "name": "flat",
-  "processSafe": true,
-  "regExp": /^\*flat\*/,
-  "parserFunc": function parser_flat (params) {
-     var key = this.getHeadStr();
-     var val = params.item;
-     params.resultRow[key] = val;
-  }
-};
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_json.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_json.js.html deleted file mode 100644 index 972617f..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_json.js.html +++ /dev/null @@ -1,279 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/defaultParsers/parser_json.js - - - - - - - -
-
-

- All files / csv2json/libs/core/defaultParsers parser_json.js -

-
-
- 0% - Statements - 0/39 -
-
- 0% - Branches - 0/34 -
-
- 0% - Functions - 0/2 -
-
- 0% - Lines - 0/39 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
var arrReg = /\[([0-9]*)\]/;
- 
- 
-function processHead(pointer, headArr, arrReg, flatKeys) {
-  var headStr, match, index;
-  while (headArr.length > 1) {
-    headStr = headArr.shift();
-    // match = headStr.match(arrReg);
-    match = flatKeys ? false : headStr.match(arrReg);
-    if (match) { //if its array, we need add an empty json object into specified index.
-      if (pointer[headStr.replace(match[0], '')] === undefined) {
-        pointer[headStr.replace(match[0], '')] = [];
-      }
-      index = match[1]; //get index where json object should stay
-      pointer = pointer[headStr.replace(match[0], '')];
-      if (index === '') { //if its dynamic array index, push to the end
-        index = pointer.length;
-      }
-      if (!pointer[index]) { //current index in the array is empty. we need create a new json object.
-        pointer[index] = {};
-      }
-      pointer = pointer[index];
-    } else { //not array, just normal JSON object. we get the reference of it
-      if (pointer[headStr] === undefined) {
-        pointer[headStr] = {};
-      }
-      pointer = pointer[headStr];
-    }
-  }
-  return pointer;
-}
-module.exports = {
-  "name": "json",
-  "processSafe": true,
-  "regExp": /^\*json\*/,
-  "parserFunc": function parser_json(params) {
-    var fieldStr = this.getHeadStr();
-    var headArr = (params.config && params.config.flatKeys) ? [fieldStr] : fieldStr.split('.');
-    var match, index, key;
-    //now the pointer is pointing the position to add a key/value pair.
-    var pointer = processHead(params.resultRow, headArr, arrReg, params.config && params.config.flatKeys);
-    key = headArr.shift();
-    match = (params.config && params.config.flatKeys) ? false : key.match(arrReg);
-    if (match) { // the last element is an array, we need check and treat it as an array.
-      try {
-        key = key.replace(match[0], '');
-        if (!pointer[key] || !(pointer[key] instanceof Array)) {
-          pointer[key] = [];
-        }
-        if (pointer[key]) {
-          index = match[1];
-          if (index === '') {
-            index = pointer[key].length;
-          }
-          pointer[key][index] = params.item;
-        } else {
-          params.resultRow[fieldStr] = params.item;
-        }
-      } catch (e) {
-        params.resultRow[fieldStr] = params.item;
-      }
-    } else {
-      if (typeof pointer === "string"){
-        params.resultRow[fieldStr] = params.item;
-      }else{
-        pointer[key] = params.item;
-      }
-    }
-  }
-};
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_jsonarray.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_jsonarray.js.html deleted file mode 100644 index db31428..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_jsonarray.js.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/defaultParsers/parser_jsonarray.js - - - - - - - -
-
-

- All files / csv2json/libs/core/defaultParsers parser_jsonarray.js -

-
-
- 0% - Statements - 0/13 -
-
- 0% - Branches - 0/4 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/13 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
module.exports = {
-  "name": "jsonarray",
-  "processSafe":true,
-  "regExp": /^\*jsonarray\*/,
-  "parserFunc": function parser_jsonarray (params) {
-    var fieldStr = params.head.replace(this.regExp, "");
-    var headArr = fieldStr.split('.');
-    var pointer = params.resultRow;
-    while (headArr.length > 1) {
-      var headStr = headArr.shift();
-      if (pointer[headStr] === undefined) {
-        pointer[headStr] = {};
-      }
-      pointer = pointer[headStr];
-    }
-    var arrFieldName = headArr.shift();
-    if (pointer[arrFieldName] === undefined) {
-      pointer[arrFieldName] = [];
-    }
-    pointer[arrFieldName].push(params.item);
-  }
-};
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_omit.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_omit.js.html deleted file mode 100644 index af785dd..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/defaultParsers/parser_omit.js.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/defaultParsers/parser_omit.js - - - - - - - -
-
-

- All files / csv2json/libs/core/defaultParsers parser_omit.js -

-
-
- 0% - Statements - 0/1 -
-
- 100% - Branches - 0/0 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/1 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7  -  -  -  -  -  - 
module.exports = {
-  "name": "omit",
-  "regExp": /^\*omit\*/,
-  "processSafe":true,
-  "parserFunc": function parser_omit() {}
-};
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/fileLineToCSVLine.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/fileLineToCSVLine.js.html deleted file mode 100644 index 878ecc0..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/fileLineToCSVLine.js.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/fileLineToCSVLine.js - - - - - - - -
-
-

- All files / csv2json/libs/core fileLineToCSVLine.js -

-
-
- 0% - Statements - 0/5 -
-
- 100% - Branches - 0/0 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/5 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
var csvline=require("./csvline");
-/**
- * Convert data chunk to csv lines with cols
- * @param  {[type]} data   [description]
- * @param  {[type]} params [description]
- * @return {[type]}    {lines:[[col1,col2,col3]],partial:String}
- */
-module.exports = function(fileLine, params) {
-  var lines = fileLine.lines;
-  var csvLines = csvline(lines,params);
-  return {
-    lines: csvLines.lines,
-    partial: csvLines.partial + fileLine.partial
-  };
-};
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/fileline.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/fileline.js.html deleted file mode 100644 index 82d0a1b..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/fileline.js.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/fileline.js - - - - - - - -
-
-

- All files / csv2json/libs/core fileline.js -

-
-
- 0% - Statements - 0/6 -
-
- 100% - Branches - 0/0 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/6 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14  -  -  -  -  -  -  -  -  -  -  -  -  - 
var getEol = require("./getEol");
-/**
- * convert data chunk to file lines array
- * @param  {string} data  data chunk as utf8 string
- * @param  {object} param Converter param object
- * @return {Object}   {lines:[line1,line2...],partial:String}
- */
-module.exports = function(data, param) {
-  var eol = getEol(data,param);
-  var lines = data.split(eol);
-  var partial = lines.pop();
-  return {lines: lines, partial: partial};
-};
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/filterRow.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/filterRow.js.html deleted file mode 100644 index a3ba920..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/filterRow.js.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/filterRow.js - - - - - - - -
-
-

- All files / csv2json/libs/core filterRow.js -

-
-
- 0% - Statements - 0/12 -
-
- 0% - Branches - 0/12 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/12 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
module.exports=function filterRow(row, param) {
-  if (param.ignoreColumns instanceof Array && param.ignoreColumns.length > 0) {
-    for (var igRow = 0, igColLen = param.ignoreColumns.length; igRow < igColLen; igRow++) {
-      if (param.ignoreColumns[igRow] >= 0) {
-        row.splice(param.ignoreColumns[igRow], 1);
-      }
-    }
-  }
-  if (param.includeColumns instanceof Array && param.includeColumns.length > 0) {
-    var cleanRowArr = [];
-    for (var inRow = 0, inColLen = param.includeColumns.length; inRow < inColLen; inRow++) {
-      if (param.includeColumns[inRow] >= 0) {
-        cleanRowArr.push(row[param.includeColumns[inRow]]);
-      }
-    }
-    row = cleanRowArr;
-  }
-  return row;
-}
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/getDelimiter.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/getDelimiter.js.html deleted file mode 100644 index 1afa808..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/getDelimiter.js.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/getDelimiter.js - - - - - - - -
-
-

- All files / csv2json/libs/core getDelimiter.js -

-
-
- 0% - Statements - 0/15 -
-
- 0% - Branches - 0/6 -
-
- 0% - Functions - 0/2 -
-
- 0% - Lines - 0/15 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
module.exports = getDelimiter;
-var defaulDelimiters = [",", "|", "\t", ";", ":"];
-function getDelimiter(rowStr,param) {
-  var checker;
-  if (param.delimiter === "auto"){
-    checker = defaulDelimiters;
-  } else if (param.delimiter instanceof Array) {
-    checker = param.delimiter;
-  } else {
-    return param.delimiter;
-  }
-  var count = 0;
-  var rtn = ",";
-  checker.forEach(function(delim) {
-    var delimCount = rowStr.split(delim).length;
-    if (delimCount > count) {
-      rtn = delim;
-      count = delimCount;
-    }
-  });
-  return rtn;
-}
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/getEol.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/getEol.js.html deleted file mode 100644 index 7f56219..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/getEol.js.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/getEol.js - - - - - - - -
-
-

- All files / csv2json/libs/core getEol.js -

-
-
- 0% - Statements - 0/14 -
-
- 0% - Branches - 0/12 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/14 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
//return eol from a data chunk.
-var eol = require("os").EOL;
-module.exports = function(data, param) {
-  if (!param.eol && data) {
-    for (var i = 0, len = data.length; i < len; i++) {
-      if (data[i] === "\r") {
-        if (data[i + 1] === "\n") {
-          param.eol = "\r\n";
-        } else if (data[i + 1]) {
-          param.eol = "\r";
-        }
-        return param.eol;
-      } else if (data[i] === "\n") {
-        param.eol = "\n";
-        return param.eol;
-      }
-    }
-  }
-  return param.eol;
-};
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/index.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/index.html deleted file mode 100644 index 48878fa..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/index.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - Code coverage report for csv2json/libs/core - - - - - - - -
-
-

- All files csv2json/libs/core -

-
-
- 0% - Statements - 0/911 -
-
- 0% - Branches - 0/503 -
-
- 0% - Functions - 0/125 -
-
- 0% - Lines - 0/909 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
CSVError.js
0%0/170%0/20%0/50%0/17
Converter.js
0%0/3750%0/2260%0/430%0/374
csvline.js
0%0/130%0/60%0/10%0/13
dataToCSVLine.js
0%0/7100%0/00%0/10%0/7
defParam.js
0%0/230%0/220%0/30%0/22
fileLineToCSVLine.js
0%0/5100%0/00%0/10%0/5
fileline.js
0%0/6100%0/00%0/10%0/6
filterRow.js
0%0/120%0/120%0/10%0/12
getDelimiter.js
0%0/150%0/60%0/20%0/15
getEol.js
0%0/140%0/120%0/10%0/14
index.js
0%0/3100%0/00%0/10%0/3
linesToJson.js
0%0/1210%0/880%0/160%0/121
parser.js
0%0/720%0/490%0/100%0/72
parserMgr.js
0%0/340%0/140%0/100%0/34
rowSplit.js
0%0/700%0/350%0/50%0/70
worker.js
0%0/450%0/130%0/60%0/45
workerMgr.js
0%0/790%0/180%0/180%0/79
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/index.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/index.js.html deleted file mode 100644 index b665600..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/index.js.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/index.js - - - - - - - -
-
-

- All files / csv2json/libs/core index.js -

-
-
- 0% - Statements - 0/3 -
-
- 100% - Branches - 0/0 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/3 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7  -  -  -  -  -  - 
module.exports = constructor;
-module.exports.Converter = require("./Converter.js");
- 
-function constructor(param,options) {
-  return new module.exports.Converter(param, options);
-}
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/linesToJson.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/linesToJson.js.html deleted file mode 100644 index f880bfe..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/linesToJson.js.html +++ /dev/null @@ -1,774 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/linesToJson.js - - - - - - - -
-
-

- All files / csv2json/libs/core linesToJson.js -

-
-
- 0% - Statements - 0/121 -
-
- 0% - Branches - 0/88 -
-
- 0% - Functions - 0/16 -
-
- 0% - Lines - 0/121 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
var parserMgr = require("./parserMgr.js");
-var CSVError = require("./CSVError");
-var numReg = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;
-/**
- * Convert lines of csv array into json
- * @param  {[type]} lines  [[col1,col2,col3]]
- * @param  {[type]} params Converter params with _headers field populated
- * @param  {[type]} idx start pos of the lines
- * @return {[type]}   [{err:null,json:obj,index:line,row:[csv row]}]
- */
-module.exports = function (lines, params, idx) {
-  if (params._needParseJson) {
-    if (!params._headers || !Array.isArray(params._headers)) {
-      params._headers = [];
-    }
-    if (!params.parseRules) {
-      var row = params._headers;
-      params.parseRules = parserMgr.initParsers(row, params);
-    }
-    return processRows(lines, params, idx);
-  } else {
-    return justReturnRows(lines, params, idx);
-  }
-};
- 
-function justReturnRows(lines, params, idx) {
-  var rtn = [];
-  for (var i = 0, len = lines.length; i < len; i++) {
-    rtn.push({
-      err: null,
-      json: {},
-      index: idx++,
-      row: lines[i]
-    });
-  }
-  return rtn;
-}
- 
-function processRows(csvRows, params, startIndex) {
-  var res = [];
-  for (var i = 0, len = csvRows.length; i < len; i++) {
-    var r = processRow(csvRows[i], params, startIndex++);
-    if (r) {
-      res.push(r);
-    }
-  }
-  return res;
-}
- 
-function processRow(row, param, index) {
-  var parseRules = param.parseRules;
-  if (param.checkColumn && row.length !== parseRules.length) {
-    return {
-      err: CSVError.column_mismatched(index)
-    };
-  }
- 
-  var headRow = param._headers;
-  var resultRow = convertRowToJson(row, headRow, param);
-  if (resultRow) {
-    return {
-      json: resultRow,
-      index: index,
-      row: row
-    };
-  } else {
-    return null;
-  }
-}
- 
-function convertRowToJson(row, headRow, param) {
-  var hasValue = false;
-  var resultRow = {};
- 
-  for (var i = 0, len = row.length; i < len; i++) {
-    var convertFunc, head, item;
-    item = row[i];
- 
-    if (param.ignoreEmpty && item === '') {
-      continue;
-    }
-    hasValue = true;
- 
-    head = headRow[i];
-    if (!head || head === "") {
-      head = headRow[i] = "field" + (i + 1);
-    }
-    var convFunc = getConvFunc(head, i, param);
-    if (convFunc) {
-      var convRes = convFunc(item, head, resultRow,row,i);
-      if (convRes !== undefined) {
-        setPath(resultRow, head, convRes);
-      }
-    } else {
-      var flag = getFlag(head, i, param);
-      if (flag === 'omit') {
-        continue;
-      }
-      if (param.checkType) {
-        convertFunc = checkType(item, head, i, param);
-        item = convertFunc(item);
-      }
-      var title = getTitle(head, i, param);
-      if (flag === 'flat' || param.flatKeys) {
-        resultRow[title] = item;
-      } else {
-        setPath(resultRow, title, item);
-      }
-    }
-  }
-  if (hasValue) {
-    return resultRow;
-  } else {
-    return false;
-  }
-}
- 
-var builtInConv={
-  "string":stringType,
-  "number":numberType,
-  "omit":function(){}
-}
-function getConvFunc(head,i,param){
-  if (param._columnConv[i] !== undefined){
-    return param._columnConv[i];
-  }else{
-    var flag=param.colParser[head];
-    if (flag === undefined){
-      return param._columnConv[i]=false;
-    }
-    if (typeof flag ==="string"){
-      flag=flag.trim().toLowerCase();
-      var builtInFunc=builtInConv[flag];
-      if (builtInFunc){
-        return param._columnConv[i]=builtInFunc;
-      }else{
-        return param._columnConv[i]=false;  
-      }
-    }else if (typeof flag ==="function"){
-      return param._columnConv[i]=flag;
-    }else{
-      return param._columnConv[i]=false;
-    }
-  }
-}
-function setPath(json, path, value) {
-  var _set = require('lodash/set');
-  var pathArr = path.split('.');
-  if (pathArr.length === 1) {
-    json[path] = value;
-  } else {
-    _set(json, path, value);
-  }
-}
- 
-function getFlag(head, i, param) {
-  if (typeof param._headerFlag[i] === "string") {
-    return param._headerFlag[i];
-  } else if (head.indexOf('*omit*') > -1) {
-    return param._headerFlag[i] = 'omit';
-  } else if (head.indexOf('*flat*') > -1) {
-    return param._headerFlag[i] = 'flat';
-  } else {
-    return param._headerFlag[i] = '';
-  }
-}
- 
-function getTitle(head, i, param) {
-  if (param._headerTitle[i]) {
-    return param._headerTitle[i];
-  }
- 
-  var flag = getFlag(head, i, param);
-  var str = head.replace('*flat*', '').replace('string#!', '').replace('number#!', '');
-  return param._headerTitle[i] = str;
-}
- 
-function checkType(item, head, headIdx, param) {
-  if (param._headerType[headIdx]) {
-    return param._headerType[headIdx];
-  } else if (head.indexOf('number#!') > -1) {
-    return param._headerType[headIdx] = numberType;
-  } else if (head.indexOf('string#!') > -1) {
-    return param._headerType[headIdx] = stringType;
-  } else if (param.checkType) {
-    return param._headerType[headIdx] = dynamicType;
-  } else {
-    return param._headerType[headIdx] = stringType;
-  }
-}
- 
-function numberType(item) {
-  var rtn = parseFloat(item);
-  if (isNaN(rtn)) {
-    return item;
-  }
-  return rtn;
-}
- 
-function stringType(item) {
-  return item.toString();
-}
- 
-function dynamicType(item) {
-  var trimed = item.trim();
-  if (trimed === "") {
-    return stringType(item);
-  }
-  if (numReg.test(trimed)) {
-    return numberType(item);
-  } else if (trimed.length === 5 && trimed.toLowerCase() === "false" || trimed.length === 4 && trimed.toLowerCase() === "true") {
-    return booleanType(item);
-  } else if (trimed[0] === "{" && trimed[trimed.length - 1] === "}" || trimed[0] === "[" && trimed[trimed.length - 1] === "]") {
-    return jsonType(item);
-  } else {
-    return stringType(item);
-  }
-}
- 
-function booleanType(item) {
-  var trimed = item.trim();
-  if (trimed.length === 5 && trimed.toLowerCase() === "false") {
-    return false;
-  } else {
-    return true;
-  }
-}
- 
-function jsonType(item) {
-  try {
-    return JSON.parse(item);
-  } catch (e) {
-    return item;
-  }
-}
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/parser.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/parser.js.html deleted file mode 100644 index f238827..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/parser.js.html +++ /dev/null @@ -1,417 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/parser.js - - - - - - - -
-
-

- All files / csv2json/libs/core parser.js -

-
-
- 0% - Statements - 0/72 -
-
- 0% - Branches - 0/49 -
-
- 0% - Functions - 0/10 -
-
- 0% - Lines - 0/72 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
var explicitTypes = ["number", "string"];
- 
-function Parser(name, regExp, parser, processSafe) {
-  this.name = typeof name === "undefined" ? "Default" : name;
-  this.regExp = null;
-  this.type = "";
-  this.processSafe = processSafe;
-  if (typeof regExp !== "undefined") {
-    if (typeof regExp === "string") {
-      this.regExp = new RegExp(regExp);
-    } else {
-      this.regExp = regExp;
-    }
-  }
-  if (typeof parser !== "undefined") {
-    this.parse = parser;
-  }
-}
-// var numReg = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;
-Parser.prototype.convertType = function(item) {
-  var type=this.type;
-  if (type === 'number') {
-    var rtn = parseFloat(item);
-    if (isNaN(rtn)) {
-      return 0;
-    } else {
-      return rtn;
-    }
-  } else if (this.param && this.param.checkType && type === '') {
-    var trimed = item.trim();
-    if (trimed === ""){
-      return trimed;
-    }
-    if (!isNaN(trimed)) {
-      return parseFloat(trimed);
-    } else if (trimed.length === 5 && trimed.toLowerCase() === "false") {
-      return false;
-    } else if (trimed.length === 4 && trimed.toLowerCase() === "true") {
-      return true;
-    } else if (trimed[0] === "{" && trimed[trimed.length - 1] === "}" || trimed[0] === "[" && trimed[trimed.length - 1]==="]") {
-      try {
-        return JSON.parse(trimed);
-      } catch (e) {
-        return item;
-      }
-    } else {
-      return item;
-    }
-  }
-  return item;
-};
- 
-Parser.prototype.setParam = function(param) {
-  this.param = param;
-};
- 
-Parser.prototype.test = function(str) {
-  return this.regExp && this.regExp.test(str);
-};
- 
-Parser.prototype.parse = function(params) {
-  params.resultRow[params.head] = params.item;
-};
- 
-Parser.prototype.getHeadStr = function() {
-  if (this.headStr) {
-    return this.headStr;
-  } else {
-    var head = this.head;
-    this.headStr = head.replace(this.regExp, '');
-    if (!this.headStr) {
-      this.headStr = "Unknown Header";
-    }
-    return this.getHeadStr();
-  }
-};
- 
-Parser.prototype.getHead = function() {
-  return this.head;
-};
- 
-Parser.prototype.initHead = function(columnTitle) {
-  this.head = columnTitle;
-  var wholeHead = columnTitle.replace(this.regExp, '');
-  //init type && headStr
-  var splitArr = wholeHead.split("#!");
-  if (splitArr.length === 1) { //no explicit type
-    this.headStr = splitArr[0];
-  } else {
-    var type = splitArr.shift();
-    if (explicitTypes.indexOf(type.toLowerCase()) > -1) {
-      this.type = type;
-      this.headStr = splitArr.join("#!");
-    } else { //no explicit type
-      this.headStr = wholeHead;
-    }
-  }
-  if (!this.headStr) {
-    this.headStr = wholeHead ? wholeHead : "Unknown Head";
-  }
-};
- 
-Parser.prototype.clone = function() {
-  var obj = Object.create(this);
-  var newParser = new Parser();
-  for (var key in obj) {
-    newParser[key] = obj[key];
-  }
-  return newParser;
-};
- 
-Parser.prototype.getName = function() {
-  return this.name;
-};
- 
-module.exports = Parser;
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/parserMgr.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/parserMgr.js.html deleted file mode 100644 index 14711c9..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/parserMgr.js.html +++ /dev/null @@ -1,276 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/parserMgr.js - - - - - - - -
-
-

- All files / csv2json/libs/core parserMgr.js -

-
-
- 0% - Statements - 0/34 -
-
- 0% - Branches - 0/14 -
-
- 0% - Functions - 0/10 -
-
- 0% - Lines - 0/34 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
//implementation
-var registeredParsers = [];
-var Parser = require("./parser.js");
-var defaultParser = require("./defaultParsers");
- 
-function registerParser (parser) {
-  if (parser instanceof Parser && registeredParsers.indexOf(parser) === -1) {
-    registeredParsers.push(parser); // TODO indexOf doesn't work with object references
-  }
-}
- 
-function getParser(columnTitle, param) {
-  var inst, parser;
-  function getParserByName(parserName) {
-    var parser;
-    registeredParsers.forEach(function(p){
-      if (p.getName() === parserName){
-        parser = p;
-      }
-    });
-    if (parser) {
-      var inst = parser.clone();
-      return inst;
-    }
-    return new Parser(); //TODO remove new
-  }
-  columnTitle = columnTitle ? columnTitle : '';
-  registeredParsers.forEach(function(p) {
-    if (p.test(columnTitle)) {
-      parser=p;
-    }
-  });
-  if (parser) {
-    inst = parser.clone();
-    inst.head = columnTitle;
-  } else {
-    inst = getParserByName("json", columnTitle);
-  }
-  inst.setParam(param);
-  inst.initHead(columnTitle);
-  return inst;
-}
- 
-function addParser(name, regExp, parseFunc) {
-  var parser = new Parser(name, regExp, parseFunc,false); //TODO remove new
-  registerParser(parser);
-}
- 
-function addSafeParser(parserPath) {
-  //TODO impl
-}
- 
-function initParsers(row, param) {
-  var parsers = [];
-  row.forEach(function (columnTitle) {
-    parsers.push(getParser(columnTitle, param));
-  });
-  return parsers;
-}
- 
-defaultParser.forEach(function (parserCfg){
-  //TODO refactor this
-  addParser(parserCfg.name, parserCfg.regExp, parserCfg.parserFunc, parserCfg.processSafe);
-});
- 
-//module interfaces
-module.exports.addParser = addParser;
-module.exports.initParsers = initParsers;
-module.exports.getParser = getParser;
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/rowSplit.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/rowSplit.js.html deleted file mode 100644 index 1ed13a4..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/rowSplit.js.html +++ /dev/null @@ -1,462 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/rowSplit.js - - - - - - - -
-
-

- All files / csv2json/libs/core rowSplit.js -

-
-
- 0% - Statements - 0/70 -
-
- 0% - Branches - 0/35 -
-
- 0% - Functions - 0/5 -
-
- 0% - Lines - 0/70 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
var getDelimiter = require("./getDelimiter");
-var filterRow=require("./filterRow");
-/**
- * Convert a line of string to csv columns according to its delimiter
- * the param._header may not be ready when this is called.
- * @param  {[type]} rowStr [description]
- * @param  {[type]} param  [Converter param]
- * @return {[type]}        {cols:["a","b","c"],closed:boolean} the closed field indicate if the row is a complete row
- */
-module.exports = function rowSplit(rowStr, param) {
-  if (rowStr === "") {
-    return { cols: [], closed: true };
-  }
-  var quote = param.quote;
-  var trim = param.trim;
-  var escape = param.escape;
-  if (param.delimiter instanceof Array || param.delimiter.toLowerCase() === "auto") {
-    param.delimiter = getDelimiter(rowStr, param);
-  }
-  var delimiter = param.delimiter;
-  var rowArr = rowStr.split(delimiter);
-  if (quote === "off") {
-    return { cols: rowArr, closed: true };
-  }
-  var row = [];
-  var inquote = false;
-  var quoteBuff = '';
-  for (var i = 0, rowLen = rowArr.length; i < rowLen; i++) {
-    var e = rowArr[i];
-    if (!inquote && trim) {
-      e = e.trim();
-    }
-    var len = e.length;
-    if (!inquote) {
-      if (isQuoteOpen(e, param)) { //quote open
-        e = e.substr(1);
-        if (isQuoteClose(e, param)) { //quote close
-          e = e.substring(0, e.length - 1);
-          e = _escapeQuote(e, quote, escape);
-          row.push(e);
-          continue;
-        } else {
-          inquote = true;
-          quoteBuff += e;
-          continue;
-        }
-      } else {
-        row.push(e);
-        continue;
-      }
-    } else { //previous quote not closed
-      if (isQuoteClose(e, param)) { //close double quote
-        inquote = false;
-        e = e.substr(0, len - 1);
-        quoteBuff += delimiter + e;
-        quoteBuff = _escapeQuote(quoteBuff, quote, escape);
-        if (trim) {
-          quoteBuff = quoteBuff.trimRight();
-        }
-        row.push(quoteBuff);
-        quoteBuff = "";
-      } else {
-        quoteBuff += delimiter + e;
-      }
-    }
-  }
- 
-  if (!inquote && param._needFilterRow) {
-    row = filterRow(row, param);
-  }
- 
-  return { cols: row, closed: !inquote };
-  // if (param.workerNum<=1){
-  // }else{
-  //   if (inquote && quoteBuff.length>0){//for multi core, quote will be closed at the end of line
-  //     quoteBuff=_escapeQuote(quoteBuff,quote,escape);;
-  //     if (trim){
-  //       quoteBuff=quoteBuff.trimRight();
-  //     }
-  //     row.push(quoteBuff);
-  //   }
-  //   return {cols:row,closed:true};
-  // }
- 
-};
- 
- 
- 
-function isQuoteOpen(str, param) {
-  var quote = param.quote;
-  var escape = param.escape;
-  return str[0] === quote && (
-    str[1] !== quote ||
-    str[1] === escape && (str[2] === quote || str.length === 2));
-}
-function isQuoteClose(str, param) {
-  var quote = param.quote;
-  var count = 0;
-  var idx = str.length - 1;
-  var escape = param.escape;
-  while (str[idx] === quote || str[idx] === escape) {
-    idx--;
-    count++;
-  }
-  return count % 2 !== 0;
-}
- 
-function twoDoubleQuote(str, quote) {
-  var twoQuote = quote + quote;
-  var curIndex = -1;
-  while ((curIndex = str.indexOf(twoQuote, curIndex)) > -1) {
-    str = str.substring(0, curIndex) + str.substring(++curIndex);
-  }
-  return str;
-}
- 
-var cachedRegExp = {};
-function _escapeQuote(segment, quote, escape) {
- 
-  var key = "es|" + quote + "|" + escape;
-  if (cachedRegExp[key] === undefined) {
- 
-    // if (escape === "\\") {
-    //   escape = "\\\\";
-    // }
-    cachedRegExp[key] = new RegExp('\\'+escape + '\\'+quote, 'g');
-  }
-  var regExp = cachedRegExp[key];
-  // console.log(regExp,segment);
-  return segment.replace(regExp, quote);
-}
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/worker.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/worker.js.html deleted file mode 100644 index e6c427c..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/worker.js.html +++ /dev/null @@ -1,321 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/worker.js - - - - - - - -
-
-

- All files / csv2json/libs/core worker.js -

-
-
- 0% - Statements - 0/45 -
-
- 0% - Branches - 0/13 -
-
- 0% - Functions - 0/6 -
-
- 0% - Lines - 0/45 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
var param = null;
-var fileLine = require("./fileline");
-var csvline = require("./csvline");
-var linesToJson = require("./linesToJson");
-var CSVError = require('./CSVError');
-var eom = "\x03";
-var eom1 = "\x0e";
-var eom2 = "\x0f";
-/**
- * message is like :
- * 0{"a":"b"}
- * 13345|a,b,c
- * <cmd><data>
- * <cmd> is 0-9
- */
-var buffer="";
-process.stdin.on("data", function(d) {
-  var str = d.toString("utf8");
-  var all = buffer + str;
-  var cmdArr = all.split(eom);
-  while (cmdArr.length > 1) {
-    processMsg(cmdArr.shift());
-  }
-  buffer = cmdArr[0];
-});
- 
-process.on("message", processMsg);
-function processMsg(msg) {
-  if (msg) {
-    var cmd = msg[0];
-    var data = msg.substr(1);
-    switch (cmd) {
-      case "0":
-        initParams(data);
-        break;
-      case "1":
-        processData(data);
-        break;
-      default:
-        console.error("Unknown command: " + msg);
-    }
-  }
-}
- 
-function initParams(data) {
-   param = JSON.parse(data);
-}
- 
-/**
- * e.g.
- * 1023|a,b,c,d\ne,f,g,h\n
- * <start line number>|<raw csv data>
- */
-function processData(data) {
-  if (!param){
-    console.error("Parameter not initialised when processing data.");
-    process.exit(1);
-  }
-  var sepIdx = data.indexOf("|");
-  var startIdx = parseInt(data.substr(0, sepIdx));
-  var csvData = data.substr(sepIdx + 1);
-  var lines = fileLine(csvData,param); //convert to file lines.
-  // process.send("0"+lines.lines.length+"|"+lines.partial);
-  var csvLines = csvline(lines.lines,param);
-  var res = linesToJson(csvLines.lines,param,startIdx);
-  if (csvLines.partial) {
-    var lastIdx = res.length > 0 ? res[res.length - 1].index + 1 : startIdx;
-    res.push({
-      err:CSVError.unclosed_quote(lastIdx, csvLines.partial)
-    });
-  }
-  // console.error(res)
-  //1<line num>|^<row>|^err|^data|&<line num>|^<row>|^err|^data
-  var str="1";
-  res.forEach(function(item) {
-    var errStr = item.err ? item.err.toString() : "";
-    str += item.index + eom2 + JSON.stringify(item.row) + eom2 + errStr + eom2 + JSON.stringify(item.json) + eom1;
-  });
-  sendData(str);
-}
- 
-function sendData(str) {
-  process.stdout.write(str + eom);
-}
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/workerMgr.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/workerMgr.js.html deleted file mode 100644 index 6c74618..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/core/workerMgr.js.html +++ /dev/null @@ -1,522 +0,0 @@ - - - - Code coverage report for csv2json/libs/core/workerMgr.js - - - - - - - -
-
-

- All files / csv2json/libs/core workerMgr.js -

-
-
- 0% - Statements - 0/79 -
-
- 0% - Branches - 0/18 -
-
- 0% - Functions - 0/18 -
-
- 0% - Lines - 0/79 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
module.exports = workerMgr;
-var eom = "\x03";
-var eom1 = "\x0e";
-var eom2 = "\x0f";
-var CSVError = require('./CSVError');
-function workerMgr() {
-  var spawn = require("child_process").spawn;
-  var exports = {
-    initWorker: initWorker,
-    sendWorker: sendWorker,
-    setParams: setParams,
-    drain: function(){},
-    isRunning: isRunning,
-    destroyWorker: destroyWorker
-  };
-  var workers = [];
-  var running = 0;
-  var waiting = null;
-  function initWorker(num, params) {
-    workers = [];
-    running = 0;
-    waiting = null;
-    for (var i = 0; i < num; i++) {
-      workers.push(new Worker(params));
-    }
- 
-  }
-  function isRunning() {
-    return running > 0;
-  }
-  function destroyWorker() {
-    workers.forEach(function(w) {
-      w.destroy();
-    });
-  }
- 
-  function sendWorker(data, startIdx, transformCb, cbResult) {
-    if (workers.length > 0) {
-      var worker = workers.shift();
-      running++;
-      worker.parse(data, startIdx, function(result) {
-        // var arr=JSON.parse(result);
-        // arr.forEach(function(item){
-        //   console.log('idx',item.index)
-        // })
-        workers.push(worker);
-        cbResult(result, startIdx);
-        running--;
-        if (waiting === null && running === 0) {
-          exports.drain();
-        } else if (waiting) {
-          sendWorker.apply(this, waiting);
-          waiting = null;
-        }
-      });
-      process.nextTick(transformCb);
-    } else {
-      waiting = [data, startIdx, transformCb, cbResult];
-    }
-  }
- 
-  function setParams(params) {
-    workers.forEach(function(w) {
-      w.setParams(params);
-    });
-  }
-  return exports;
-}
- 
-function Worker(params) {
-  var spawn = require("child_process").spawn;
-  this.cp = spawn(process.execPath, [__dirname + "/worker.js"], {
-    env: {
-      child:true
-    },
-    stdio:['pipe', 'pipe', 2, 'ipc']
-    // stdio:[0,1,2,'ipc']
-  });
-  this.setParams(params);
-  this.cp.on("message", this.onChildMsg.bind(this));
-  this.buffer = "";
-  var self = this;
-  this.cp.stdout.on("data", function(d) {
-    var str = d.toString("utf8");
-    var all = self.buffer + str;
-    var cmdArr = all.split(eom);
-    while (cmdArr.length > 1) {
-      self.onChildMsg(cmdArr.shift());
-    }
-    self.buffer = cmdArr[0];
-  });
-}
- 
-Worker.prototype.setParams = function(params) {
-  var msg = "0" + JSON.stringify(params);
-  this.sendMsg(msg);
-};
- 
-/**
- * msg is like:
- * <cmd><data>
- * cmd is from 0-9
- */
-Worker.prototype.onChildMsg = function(msg) {
-  if (msg) {
-    var cmd = msg[0];
-    var data = msg.substr(1);
-    switch (cmd) {
-      case "0": //total line number of current chunk
-        if (this.cbLine) {
-          var sp = data.split("|");
-          var len = parseInt(sp[0]);
-          var partial = sp[1];
-          this.cbLine(len, partial);
-        }
-        break;
-      case "1": // json array of current chunk
-        if (this.cbResult) {
-          var rows = data.split(eom1);
-          rows.pop();
-          var res = [];
-          rows.forEach(function(row) {
-            var sp = row.split(eom2);
-            res.push({
-              index: sp[0],
-              row: sp[1],
-              err: sp[2] ? CSVError.fromArray(JSON.parse(sp[2])) : null,
-              json: sp[3]
-            });
-          });
-          this.cbResult(res);
-        }
-        break;
-    }
-  }
-};
- 
-Worker.prototype.parse = function(data, startIdx, cbResult) {
-  this.cbResult = cbResult;
-  var msg = "1" + startIdx + "|" + data;
-  this.sendMsg(msg);
-};
- 
-Worker.prototype.destroy = function() {
-  this.cp.kill();
-};
- 
-Worker.prototype.sendMsg = function(msg) {
-  this.cp.stdin.write(msg + eom, "utf8");
-  // this.cp.send(msg)
-};
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/csv2json.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/csv2json.js.html deleted file mode 100644 index 5f3f0f8..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/csv2json.js.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - Code coverage report for csv2json/libs/csv2json.js - - - - - - - -
-
-

- All files / csv2json/libs csv2json.js -

-
-
- 0% - Statements - 0/3 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 0% - Lines - 0/3 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7  -  -  -  -  -  - 
//deprecated but leave it for backward compatibility
-module.exports.core=require("./core");
- 
-//live apis
-module.exports=require("./core");
-module.exports.interfaces = require("./interfaces");
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/index.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/index.html deleted file mode 100644 index bf0ac5e..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/index.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - Code coverage report for csv2json/libs - - - - - - - -
-
-

- All files csv2json/libs -

-
-
- 0% - Statements - 0/3 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 0% - Lines - 0/3 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
csv2json.js
0%0/3100%0/0100%0/00%0/3
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/cli/index.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/cli/index.html deleted file mode 100644 index 6b46db7..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/cli/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - Code coverage report for csv2json/libs/interfaces/cli - - - - - - - -
-
-

- All files csv2json/libs/interfaces/cli -

-
-
- 0% - Statements - 0/24 -
-
- 0% - Branches - 0/4 -
-
- 0% - Functions - 0/6 -
-
- 0% - Lines - 0/24 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
index.js
0%0/1100%0/0100%0/00%0/1
main.js
0%0/230%0/40%0/60%0/23
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/cli/index.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/cli/index.js.html deleted file mode 100644 index 28122bc..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/cli/index.js.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - Code coverage report for csv2json/libs/interfaces/cli/index.js - - - - - - - -
-
-

- All files / csv2json/libs/interfaces/cli index.js -

-
-
- 0% - Statements - 0/1 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 0% - Lines - 0/1 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 
module.exports = require("./main.js");
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/cli/main.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/cli/main.js.html deleted file mode 100644 index 109e272..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/cli/main.js.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - Code coverage report for csv2json/libs/interfaces/cli/main.js - - - - - - - -
-
-

- All files / csv2json/libs/interfaces/cli main.js -

-
-
- 0% - Statements - 0/23 -
-
- 0% - Branches - 0/4 -
-
- 0% - Functions - 0/6 -
-
- 0% - Lines - 0/23 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
/**
- * Convert input to process stdout
- */
- 
-//implementation
-var Converter = require("../../core/Converter.js");
-function _initConverter(){
-    var csvConverter = new Converter();
-    var started = false;
-    var writeStream = process.stdout;
-    csvConverter.on("record_parsed",function(rowJSON){
-        if (started){
-            writeStream.write(",\n");
-        }
-        writeStream.write(JSON.stringify(rowJSON));  //write parsed JSON object one by one.
-        if (started === false){
-            started = true;
-        }
-    });
-    writeStream.write("[\n"); //write array symbol
- 
-    csvConverter.on("end_parsed",function(){
-        writeStream.write("\n]"); //end array symbol
-    });
-    csvConverter.on("error",function(err){
-        console.error(err);
-        process.exit(-1);
-    });
-    return csvConverter;
-}
-function convertFile(fileName){
-    var csvConverter=_initConverter();
-    csvConverter.from(fileName);
-}
- 
-function convertString(csvString){
-    var csvConverter=_initConverter();
-    csvConverter.from(csvString);
-}
-//module interfaces
-module.exports.convertFile = convertFile;
-module.exports.convertString = convertString;
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/index.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/index.html deleted file mode 100644 index b079af9..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/index.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - Code coverage report for csv2json/libs/interfaces - - - - - - - -
-
-

- All files csv2json/libs/interfaces -

-
-
- 0% - Statements - 0/1 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 0% - Lines - 0/1 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
index.js
0%0/1100%0/0100%0/00%0/1
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/index.js.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/index.js.html deleted file mode 100644 index 70639f5..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/libs/interfaces/index.js.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - Code coverage report for csv2json/libs/interfaces/index.js - - - - - - - -
-
-

- All files / csv2json/libs/interfaces index.js -

-
-
- 0% - Statements - 0/1 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 0% - Lines - 0/1 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 
module.exports.cli=require("./cli");
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/CSVError.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/CSVError.ts.html deleted file mode 100644 index e81d6d2..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/CSVError.ts.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - Code coverage report for csv2json/src/CSVError.ts - - - - - - - -
-
-

- All files / csv2json/src CSVError.ts -

-
-
- 88.24% - Statements - 15/17 -
-
- 75% - Branches - 3/4 -
-
- 66.67% - Functions - 4/6 -
-
- 87.5% - Lines - 14/16 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -241x -1x -1x -2x -  -1x -4x -  -1x -  -  -  -6x -6x -6x -  -6x -6x -  -1x -  -  -1x - 
var util = require("util");
-export default class CSVError extends Error{
-  static column_mismatched(index:number, extra?:string){
-    return new CSVError("column_mismatched", index, extra);
-  }
-  static unclosed_quote(index:number, extra?:string){
-    return new CSVError("unclosed_quote", index, extra);
-  }
-  static fromArray(arr:any[]){
-    return new CSVError(arr[0],arr[1],arr[2]);
-  }
-  constructor(
-    public err:string,
-    public line:number,
-    public extra?: string
-  ){
-    super("Error: " + err + ". JSON Line number: " + line + (extra ? " near: " + extra : ""));
-    this.name="CSV Parse Error";
-  }
-  toString(){
-    return JSON.stringify([this.err, this.line, this.extra]);  
-  }
-}
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/Converter.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/Converter.ts.html deleted file mode 100644 index 4ffaca3..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/Converter.ts.html +++ /dev/null @@ -1,636 +0,0 @@ - - - - Code coverage report for csv2json/src/Converter.ts - - - - - - - -
-
-

- All files / csv2json/src Converter.ts -

-
-
- 94% - Statements - 94/100 -
-
- 84.62% - Branches - 22/26 -
-
- 96.43% - Functions - 27/28 -
-
- 93.62% - Lines - 88/94 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -1901x -1x -1x -1x -  -  -  -  -  -  -  -1x -1x -1x -1x -  -1x -1x -2x -  -1x -1x -  -1x -  -  -  -17x -  -  -  -  -17x -  -5x -5x -  -  -  -  -  -  -5x -5x -5x -5x -  -  -  -  -5x -  -1x -25x -25x -  -1x -16x -16x -16x -16x -37x -16x -  -21x -21x -21x -  -  -16x -  -49x -49x -49x -  -46x -46x -  -  -  -  -  -2x -2x -  -  -  -  -  -  -  -1x -165734x -  -1x -436312x -  -  -  -  -  -217x -73x -73x -73x -73x -73x -  -  -73x -  -73x -  -6x -6x -6x -  -  -  -  -73x -  -124x -124x -  -122x -70x -70x -  -  -  -122x -  -2x -2x -2x -2x -  -  -65x -65x -28x -28x -28x -  -28x -24x -  -  -  -28x -4x -  -24x -  -  -  -  -  -  -  -  -37x -  -  -1x -61x -61x -61x -  -1x -4x -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { Transform, TransformOptions, Readable } from "stream";
-import { CSVParseParam, mergeParams } from "./Parameters";
-import { ParseRuntime, initParseRuntime } from "./ParseRuntime";
-import P from "bluebird";
-import { Worker } from "./Worker";
-import { stringToLines } from "./fileline";
-import { map } from "lodash/map";
-import { RowSplit, RowSplitResult } from "./rowSplit";
-import getEol from "./getEol";
-import lineToJson, { JSONResult } from "./lineToJson";
-import { Processor, ProcessLineResult } from "./Processor";
-import { ProcessorFork } from "./ProcessFork";
-import { ProcessorLocal } from "./ProcessorLocal";
-import { Result } from "./Result";
-import CSVError from "./CSVError";
-import { bufFromString } from "./util";
-export class Converter extends Transform {
-  preRawData(onRawData: PreRawDataCallback) {
-    this.runtime.preRawDataHook = onRawData;
-  }
-  preFileLine(onFileLine: PreFileLineCallback) {
-    this.runtime.preFileLineHook = onFileLine;
-  }
-  subscribe(
-    onNext?: (data: any, lineNumber: number) => void | PromiseLike<void>,
-    onError?: (err: CSVError) => void,
-    onCompleted?: () => void): Converter {
-    this.parseRuntime.subscribe = {
-      onNext,
-      onError,
-      onCompleted
-    }
-    return this;
-  }
-  fromFile(filePath: string, options?: string | CreateReadStreamOption | undefined): Converter {
-    const fs = require("fs");
-    // var rs = null;
-    // this.wrapCallback(cb, function () {
-    //   if (rs && rs.destroy) {
-    //     rs.destroy();
-    //   }
-    // });
-    fs.exists(filePath, (exist) => {
-      Eif (exist) {
-        const rs = fs.createReadStream(filePath, options);
-        rs.pipe(this);
-      } else {
-        this.emit('error', new Error("File does not exist. Check to make sure the file path to your csv is correct."));
-      }
-    });
-    return this;
-  }
-  fromStream(readStream: Readable): Converter {
-    readStream.pipe(this);
-    return this;
-  }
-  fromString(csvString: string): Converter {
-    const csv = csvString.toString();
-    const read = new Readable();
-    let idx = 0;
-    read._read = function (size) {
-      if (idx >= csvString.length) {
-        this.push(null);
-      } else {
-        const str = csvString.substr(idx, size);
-        this.push(str);
-        idx += size;
-      }
-    }
-    return this.fromStream(read);
-  }
-  then<TResult1 = any[], TResult2 = never>(onfulfilled?: (value: any[]) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2> {
-    return new P((resolve, reject) => {
-      this.parseRuntime.then = {
-        onfulfilled: (value: any[]) => {
-          Eif (onfulfilled) {
-            resolve(onfulfilled(value));
-          } else {
-            resolve(value as any);
-          }
-        },
-        onrejected: (err: Error) => {
-          Eif (onrejected) {
-            resolve(onrejected(err));
-          } else {
-            reject(err);
-          }
-        }
-      }
-    });
-  }
-  public get parseParam(): CSVParseParam {
-    return this.params;
-  }
-  public get parseRuntime(): ParseRuntime {
-    return this.runtime;
-  }
-  private params: CSVParseParam;
-  private runtime: ParseRuntime;
-  private processor: Processor;
-  private result: Result;
-  constructor(param?: Partial<CSVParseParam>, public options: TransformOptions = {}) {
-    super(options);
-    this.params = mergeParams(param);
-    this.runtime = initParseRuntime(this);
-    this.result = new Result(this);
-    Iif (this.params.fork) {
-      this.processor = new ProcessorFork(this);
-    } else {
-      this.processor = new ProcessorLocal(this);
-    }
-    this.once("error", (err: any) => {
-      // console.log("BBB");
-      this.result.processError(err);
-      setTimeout(() => {
-        this.emit("done", err);
-      },0);
- 
-    });
- 
-    return this;
-  }
-  _transform(chunk: any, encoding: string, cb: Function) {
-    this.processor.process(chunk)
-      .then((result) => {
-        if (result.length > 0) {
-          this.runtime.started = true;
-          return this.result.processResult(result);
-        }
-      })
-      .then(() => {
-        cb();
-      }, (error) => {
-        this.runtime.hasError = true;
-        this.runtime.error = error;
-        this.emit("error", error);
-        cb();
-      });
-  }
-  _flush(cb: Function) {
-    if (this.runtime.csvLineBuffer && this.runtime.csvLineBuffer.length > 0) {
-      const buf = this.runtime.csvLineBuffer;
-      this.runtime.csvLineBuffer = undefined;
-      this.processor.process(buf, true)
-        .then((result) => {
-          if (result.length > 0) {
-            return this.result.processResult(result);
-          }
-        })
-        .then(() => {
-          if (this.runtime.csvLineBuffer && this.runtime.csvLineBuffer.length > 0) {
-            this.emit("error", CSVError.unclosed_quote(this.parsedLineNumber, this.runtime.csvLineBuffer.toString()));
-          } else {
-            this.processEnd(cb);
-          }
-          // cb();
- 
-        }, (err) => {
-          this.emit("error", err);
-          cb();
-        })
-    } else {
-      this.processEnd(cb);
-    }
-  }
-  private processEnd(cb) {
-    this.result.endProcess();
-    this.emit("done");
-    cb();
-  }
-  get parsedLineNumber(): number {
-    return this.runtime.parsedLineNumber;
-  }
-}
-export interface CreateReadStreamOption {
-  flags?: string;
-  encoding?: string;
-  fd?: number;
-  mode?: number;
-  autoClose?: boolean;
-  start?: number;
-  end?: number;
-  highWaterMark?: number;
-}
-export type CallBack = (err: Error, data: Array<any>) => void;
- 
- 
-export type PreFileLineCallback = (line: string, lineNumber: number) => string | PromiseLike<string>;
-export type PreRawDataCallback = (csvString: string) => string | PromiseLike<string>;
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/Processor.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/Processor.ts.html deleted file mode 100644 index a690d42..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/Processor.ts.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - Code coverage report for csv2json/src/Processor.ts - - - - - - - -
-
-

- All files / csv2json/src Processor.ts -

-
-
- 100% - Statements - 6/6 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 2/2 -
-
- 100% - Lines - 5/5 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17  -  -  -  -  -  -1x -  -  -75x -75x -75x -  -  -1x -  - 
import { Converter } from "./Converter";
-import P from "bluebird";
-import { JSONResult } from "./lineToJson";
-import { CSVParseParam } from "./Parameters";
-import { ParseRuntime } from "./ParseRuntime";
- 
-export abstract class Processor {
-  protected params: CSVParseParam;
-  protected runtime: ParseRuntime;
-  constructor(protected converter: Converter) {
-    this.params = converter.parseParam;
-    this.runtime = converter.parseRuntime;
-  }
-  abstract process(chunk: Buffer,finalChunk?:boolean): P<ProcessLineResult[]>
-}
-export type ProcessLineResult = string | string[] | JSONResult;
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/ProcessorLocal.test.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/ProcessorLocal.test.ts.html deleted file mode 100644 index d34e56b..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/ProcessorLocal.test.ts.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - Code coverage report for csv2json/src/ProcessorLocal.test.ts - - - - - - - -
-
-

- All files / csv2json/src ProcessorLocal.test.ts -

-
-
- 100% - Statements - 23/23 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 3/3 -
-
- 100% - Lines - 21/21 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -291x -1x -  -1x -1x -1x -  -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -1x -  -1x -1x -1x -1x -  -1x -  -  -  - 
import {ProcessorLocal} from "./ProcessorLocal";
-import { Converter } from "./Converter";
-import P from "bluebird";
-import {readFileSync} from "fs";
-import path from "path";
-import assert from "assert";
-import { JSONResult } from "./lineToJson";
-const dataDir=path.join(__dirname,"../test/data/");
-describe("ProcessLocal",()=>{
-  it ("should process csv chunks and output json",async function (){
-    const processor=new ProcessorLocal(new Converter());
-    const data=readFileSync(dataDir+"/complexJSONCSV");
-    const lines=await processor.process(data);
-    assert(lines.length === 2);
-    const line0=lines[0] as JSONResult;
-    assert.equal(line0.fieldA.title,"Food Factory");
-    assert.equal(line0.fieldA.children.length,2);
-    assert.equal(line0.fieldA.children[1].employee[0].name,"Tim");
-  })
-  it ("should process csv chunks and output csv rows",async function (){
-    const processor=new ProcessorLocal(new Converter({output:"line"}));
-    const data=readFileSync(dataDir+"/complexJSONCSV");
-    const lines=await processor.process(data);
-    
-    assert(lines.length === 2);
-  })
-})
- 
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/ProcessorLocal.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/ProcessorLocal.ts.html deleted file mode 100644 index 2a75d8f..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/ProcessorLocal.ts.html +++ /dev/null @@ -1,810 +0,0 @@ - - - - Code coverage report for csv2json/src/ProcessorLocal.ts - - - - - - - -
-
-

- All files / csv2json/src ProcessorLocal.ts -

-
-
- 93.75% - Statements - 135/144 -
-
- 87.5% - Branches - 77/88 -
-
- 94.12% - Functions - 16/17 -
-
- 93.43% - Lines - 128/137 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205 -206 -207 -208 -209 -210 -211 -212 -213 -214 -215 -216 -217 -218 -219 -220 -221 -222 -223 -224 -225 -226 -227 -228 -229 -230 -231 -232 -233 -234 -235 -236 -237 -238 -239 -240 -241 -242 -243 -244 -245 -246 -247 -2481x -1x -1x -1x -1x -1x -1x -1x -  -  -75x -75x -75x -75x -1x -154x -68x -  -154x -  -75x -75x -1x -67x -67x -  -67x -  -  -280x -  -154x -28x -  -126x -  -  -154x -  -154x -4x -  -150x -  -  -  -154x -154x -  -  -  -  -  -154x -154x -154x -154x -105x -  -154x -2x -2x -  -  -154x -1x -  -154x -154x -126x -  -28x -28x -  -154x -106x -106x -1x -  -105x -  -106x -106x -  -  -68x -  -38x -  -  -  -  -  -  -48x -  -  -  -1x -68x -8x -4x -  -4x -  -  -60x -60x -60x -60x -60x -60x -59x -59x -59x -  -1x -  -  -60x -  -60x -1x -  -59x -2x -  -57x -  -  -67x -4x -  -67x -4x -4x -  -67x -  -1x -4x -4x -4x -4x -22x -5x -1x -  -  -1x -  -  -4x -  -17x -17x -6x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -  -  -  -1x -105x -1x -  -104x -104x -104x -2x -  -102x -  -  -  -  -  -  -  -  -  -1x -290x -290x -138x -  -152x -  -  -  -  -1x -1x -1x -1x -  -  -1x -  -  -  -  -1x -  -  -  -  -1x -  -  -1x -1x -1x -1x -1x -  -  -  -  -  -1x -1x -1x -1x -  -1x -  -  -  -  -  - 
import { Processor, ProcessLineResult } from "./Processor";
-import P from "bluebird";
-import { prepareData } from "./dataClean";
-import getEol from "./getEol";
-import { stringToLines } from "./fileline";
-import { bufFromString, filterArray } from "./util";
-import { RowSplit } from "./rowSplit";
-import lineToJson from "./lineToJson";
-import { ParseRuntime } from "./ParseRuntime";
- 
-export class ProcessorLocal extends Processor {
-  private rowSplit: RowSplit = new RowSplit(this.converter);
-  private eolEmitted = false;
-  private _needEmitEol?: boolean = undefined;
-  private get needEmitEol() {
-    if (this._needEmitEol === undefined) {
-      this._needEmitEol = this.converter.listeners("eol").length > 0;
-    }
-    return this._needEmitEol;
-  }
-  private headEmitted = false;
-  private _needEmitHead?: boolean = undefined;
-  private get needEmitHead() {
-    Eif (this._needEmitHead === undefined) {
-      this._needEmitHead = this.converter.listeners("header").length > 0;
-    }
-    return this._needEmitHead;
- 
-  }
-  process(chunk: Buffer, finalChunk = false): P<ProcessLineResult[]> {
-    let csvString: string;
-    if (finalChunk) {
-      csvString = chunk.toString();
-    } else {
-      csvString = prepareData(chunk, this.converter.parseRuntime);
- 
-    }
-    return P.resolve()
-      .then(() => {
-        if (this.runtime.preRawDataHook) {
-          return this.runtime.preRawDataHook(csvString);
-        } else {
-          return csvString;
-        }
-      })
-      .then((csv) => {
-        Eif (csv && csv.length > 0) {
-          return this.processCSV(csv, finalChunk);
-        } else {
-          return P.resolve([]);
-        }
-      })
-  }
-  private processCSV(csv: string, finalChunk: boolean): P<ProcessLineResult[]> {
-    const params = this.params;
-    const runtime = this.runtime;
-    if (!runtime.eol) {
-      getEol(csv, runtime);
-    }
-    if (this.needEmitEol && !this.eolEmitted && runtime.eol) {
-      this.converter.emit("eol", runtime.eol);
-      this.eolEmitted = true;
-    }
-    // trim csv file has initial blank lines.
-    if (params.ignoreEmpty && !runtime.started) {
-      csv = csv.trimLeft();
-    }
-    const stringToLineResult = stringToLines(csv, runtime);
-    if (!finalChunk) {
-      this.prependLeftBuf(bufFromString(stringToLineResult.partial));
-    } else {
-      stringToLineResult.lines.push(stringToLineResult.partial);
-      stringToLineResult.partial = "";
-    }
-    if (stringToLineResult.lines.length > 0) {
-      let prom: P<string[]>;
-      if (runtime.preFileLineHook) {
-        prom = this.runPreLineHook(stringToLineResult.lines);
-      } else {
-        prom = P.resolve(stringToLineResult.lines);
-      }
-      return prom.then((lines) => {
-        if (!runtime.started
-          && !this.runtime.headers
-        ) {
-          return this.processDataWithHead(lines);
-        } else {
-          return this.processCSVBody(lines);
-        }
- 
-      })
- 
-    } else {
- 
-      return P.resolve([]);
-    }
- 
-  }
-  private processDataWithHead(lines: string[]): ProcessLineResult[] {
-    if (this.params.noheader) {
-      if (this.params.headers) {
-        this.runtime.headers = this.params.headers;
-      } else {
-        this.runtime.headers = [];
-      }
-    } else {
-      let left = "";
-      let headerRow: string[] = [];
-      while (lines.length) {
-        const line = left + lines.shift();
-        const row = this.rowSplit.parse(line);
-        if (row.closed) {
-          headerRow = row.cells;
-          left = "";
-          break;
-        } else {
-          left = line + getEol(line, this.runtime);
-        }
-      }
-      this.prependLeftBuf(bufFromString(left));
- 
-      if (headerRow.length === 0) {
-        return [];
-      }
-      if (this.params.headers) {
-        this.runtime.headers = this.params.headers;
-      } else {
-        this.runtime.headers = headerRow;
-      }
-    }
-    if (this.runtime.needProcessIgnoreColumn || this.runtime.needProcessIncludeColumn) {
-      this.filterHeader();
-    }
-    if (this.needEmitHead && !this.headEmitted) {
-      this.converter.emit("header", this.runtime.headers);
-      this.headEmitted = true;
-    }
-    return this.processCSVBody(lines);
-  }
-  private filterHeader() {
-    this.runtime.selectedColumns = [];
-    Eif (this.runtime.headers) {
-      const headers = this.runtime.headers;
-      for (let i = 0; i < headers.length; i++) {
-        if (this.params.ignoreColumns) {
-          if (this.params.ignoreColumns.test(headers[i])) {
-            Iif (this.params.includeColumns && this.params.includeColumns.test(headers[i])) {
-              this.runtime.selectedColumns.push(i);
-            } else {
-              continue;
-            }
-          } else {
-            this.runtime.selectedColumns.push(i);
-          }
-        } else Eif (this.params.includeColumns) {
-          if (this.params.includeColumns.test(headers[i])) {
-            this.runtime.selectedColumns.push(i);
-          }
-        } else {
-          this.runtime.selectedColumns.push(i);
-        }
-        // if (this.params.includeColumns && this.params.includeColumns.test(headers[i])){
-        //   this.runtime.selectedColumns.push(i);
-        // }else{
-        //   if (this.params.ignoreColumns && this.params.ignoreColumns.test(headers[i])){
-        //     continue;
-        //   }else{
-        //     if (this.params.ignoreColumns && !this.params.includeColumns){
-        //       this.runtime.selectedColumns.push(i);
-        //     }
- 
-        //   }
-        // }
-      }
-      this.runtime.headers = filterArray(this.runtime.headers, this.runtime.selectedColumns);
-    }
- 
-  }
-  private processCSVBody(lines: string[]): ProcessLineResult[] {
-    if (this.params.output === "line") {
-      return lines;
-    } else {
-      const result = this.rowSplit.parseMultiLines(lines);
-      this.prependLeftBuf(bufFromString(result.partial));
-      if (this.params.output === "csv") {
-        return result.rowsCells;
-      } else {
-        return lineToJson(result.rowsCells, this.converter);
-      }
-    }
- 
-    // var jsonArr = linesToJson(lines.lines, params, this.recordNum);
-    // this.processResult(jsonArr);
-    // this.lastIndex += jsonArr.length;
-    // this.recordNum += jsonArr.length;
-  }
- 
-  private prependLeftBuf(buf: Buffer) {
-    Eif (buf) {
-      if (this.runtime.csvLineBuffer) {
-        this.runtime.csvLineBuffer = Buffer.concat([buf, this.runtime.csvLineBuffer]);
-      } else {
-        this.runtime.csvLineBuffer = buf;
-      }
-    }
- 
-  }
-  private runPreLineHook(lines: string[]): P<string[]> {
-    return new P((resolve,reject)=>{
-      processLineHook(lines,this.runtime,0,(err)=>{
-        Iif (err){
-          reject(err);
-        }else{
-          resolve(lines);
-        }
-      })
-    });
-  }
-}
- 
-function processLineHook(lines: string[], runtime: ParseRuntime, offset: number,
-  cb: (err?) => void
-) {
-  Iif (lines.length === 0) {
-    cb();
-  } else {
-    Eif (runtime.preFileLineHook) {
-      const line = lines[offset];
-      const res = runtime.preFileLineHook(line, runtime.parsedLineNumber + offset);
-      offset++;
-      Iif (res && (res as PromiseLike<string>).then) {
-        (res as PromiseLike<string>).then((value) => {
-          lines[offset - 1] = value;
-          processLineHook(lines, runtime, offset, cb);
-        });
-      } else {
-        lines[offset - 1] = res as string;
-        while (offset < lines.length) {
-          lines[offset] = runtime.preFileLineHook(lines[offset], runtime.parsedLineNumber + offset) as string;
-          offset++;
-        }
-        cb();
-      }
-    } else {
-      cb();
-    }
-  }
-}
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/Result.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/Result.ts.html deleted file mode 100644 index cf31273..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/Result.ts.html +++ /dev/null @@ -1,516 +0,0 @@ - - - - Code coverage report for csv2json/src/Result.ts - - - - - - - -
-
-

- All files / csv2json/src Result.ts -

-
-
- 87.32% - Statements - 62/71 -
-
- 79.25% - Branches - 42/53 -
-
- 86.67% - Functions - 13/15 -
-
- 86.96% - Lines - 60/69 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150  -  -1x -  -  -1x -1x -94x -  -  -1x -102x -63x -  -102x -  -1x -155x -  -73x -73x -94x -94x -  -94x -94x -31x -  -  -  -  -  -31x -  -  -31x -31x -  -  -  -  -63x -63x -  -  -  -1x -94x -73x -  -94x -  -1x -6x -  -  -6x -2x -  -  -1x -61x -46x -46x -  -  -61x -  -  -  -1x -  -  -  -  -  -  -  -  -  -31x -  -  -31x -23x -23x -23x -23x -  -23x -  -  -  -  -  -23x -1x -  -23x -10592x -10592x -10592x -10592x -1x -  -  -23x -  -  -  -  -  -  -  -  -  -8x -8x -10584x -10584x -  -  -  -8x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -10586x -10584x -  -2x -  - 
import { Converter } from "./Converter";
-import { ProcessLineResult } from "./Processor";
-import P from "bluebird";
-import CSVError from "./CSVError";
- 
-export class Result {
-  private get needEmitLine(): boolean {
-    return !!this.converter.parseRuntime.subscribe && !!this.converter.parseRuntime.subscribe.onNext || this.needPushDownstream
-  }
-  private _needPushDownstream?: boolean;
-  private get needPushDownstream(): boolean {
-    if (this._needPushDownstream === undefined) {
-      this._needPushDownstream = this.converter.listeners("data").length > 0 || this.converter.listeners("readable").length > 0;
-    }
-    return this._needPushDownstream;
-  }
-  private get needEmitAll(): boolean {
-    return !!this.converter.parseRuntime.then;
-  }
-  private finalResult: any[] = [];
-  constructor(private converter: Converter) { }
-  processResult(resultLines: ProcessLineResult[]): P<any> {
-    const startPos = this.converter.parseRuntime.parsedLineNumber;
-    // let prom: P<any>;
-    return new P((resolve, reject) => {
-      if (this.needEmitLine) {
-        processLineByLine(
-          resultLines,
-          this.converter,
-          0,
-          this.needPushDownstream,
-          (err) => {
-            Iif (err) {
-              reject(err);
-            } else {
-              this.appendFinalResult(resultLines);
-              resolve();
-            }
-          },
-        )
-      } else {
-        this.appendFinalResult(resultLines);
-        resolve();
-      }
-    })
-  }
-  appendFinalResult(lines: any[]) {
-    if (this.needEmitAll) {
-      this.finalResult = this.finalResult.concat(lines);
-    }
-    this.converter.parseRuntime.parsedLineNumber += lines.length;
-  }
-  processError(err: CSVError) {
-    Iif (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onError) {
-      this.converter.parseRuntime.subscribe.onError(err);
-    }
-    if (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onrejected) {
-      this.converter.parseRuntime.then.onrejected(err);
-    }
-  }
-  endProcess() {
-    if (this.needEmitAll) {
-      Eif (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onfulfilled) {
-        this.converter.parseRuntime.then.onfulfilled(this.finalResult);
-      }
-    }
-    Iif (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onCompleted) {
-      this.converter.parseRuntime.subscribe.onCompleted();
-    }
-  }
-}
- 
-function processLineByLine(
-  lines: ProcessLineResult[],
- 
-  conv: Converter,
-  offset: number,
-  needPushDownstream: boolean,
-  cb: (err?) => void,
-) {
-  Iif (lines.length === 0) {
-    cb();
-  } else {
-    if (conv.parseRuntime.subscribe && conv.parseRuntime.subscribe.onNext) {
-      const hook = conv.parseRuntime.subscribe.onNext;
-      const nextLine = lines[offset];
-      const res = hook(nextLine, conv.parseRuntime.parsedLineNumber + offset);
-      offset++;
-      // if (isAsync === undefined) {
-      Iif (res && res.then) {
-        res.then(function () {
-          processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine);
-        }, cb);
-      } else {
-        // processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, false);
-        if (needPushDownstream){
-          pushDownstream(conv,nextLine);
-        }
-        while (offset<lines.length){
-          const line=lines[offset];
-          hook(line, conv.parseRuntime.parsedLineNumber + offset);
-          offset++;
-          if (needPushDownstream){
-            pushDownstream(conv,line);
-          }
-        }
-        cb();
-      }
-      // } else if (isAsync === true) {
-      //   (res as PromiseLike<void>).then(function () {
-      //     processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, true);
-      //   }, cb);
-      // } else if (isAsync === false) {
-      //   processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, false);
-      // }
-    } else {
-      Eif (needPushDownstream) {
-        while (offset<lines.length) {
-          const line = lines[offset++];
-          pushDownstream(conv, line);
-        }
-        
-      }
-      cb();
-    }
- 
-  }
-}
- 
-function processRecursive(
-  lines: ProcessLineResult[],
-  hook: (data: any, lineNumber: number) => void | PromiseLike<void>,
-  conv: Converter,
-  offset: number,
-  needPushDownstream: boolean,
-  cb: (err?) => void,
-  res: ProcessLineResult,
-) {
-  if (needPushDownstream) {
-    pushDownstream(conv, res);
-  }
-  processLineByLine(lines, conv, offset, needPushDownstream, cb);
-}
-function pushDownstream(conv: Converter, res: ProcessLineResult) {
-  if (typeof res === "object" && !conv.options.objectMode) {
-    conv.push(JSON.stringify(res) + "\n", "utf8");
-  } else {
-    conv.push(res);
-  }
-}
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/Worker.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/Worker.ts.html deleted file mode 100644 index ea06d33..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/Worker.ts.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - Code coverage report for csv2json/src/Worker.ts - - - - - - - -
-
-

- All files / csv2json/src Worker.ts -

-
-
- 0% - Statements - 0/0 -
-
- 0% - Branches - 0/0 -
-
- 0% - Functions - 0/1 -
-
- 0% - Lines - 0/0 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7  -  -  -  -  -  - 
import { Converter } from "./Converter";
- 
-export class Worker {
-  constructor(converter: Converter) {
- 
-  }
-}
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/dataClean.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/dataClean.ts.html deleted file mode 100644 index 2f24af7..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/dataClean.ts.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - Code coverage report for csv2json/src/dataClean.ts - - - - - - - -
-
-

- All files / csv2json/src dataClean.ts -

-
-
- 100% - Statements - 7/7 -
-
- 75% - Branches - 3/4 -
-
- 100% - Functions - 1/1 -
-
- 100% - Lines - 7/7 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63  -  -  -  -  -  -  -1x -126x -126x -  -126x -  -  -  -  -  -126x -  -  -  -  -  -  -  -14x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -126x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ParseRuntime } from "./ParseRuntime";
-import stripBom from "strip-bom";
-/**
- * For each data chunk coming to parser:
- * 1. append the data to the buffer that is left from last chunk
- * 2. check if utf8 chars being split, if does, stripe the bytes and add to left buffer.
- * 3. stripBom 
- */
-export function prepareData(chunk: Buffer, runtime: ParseRuntime): string {
-  const workChunk = concatLeftChunk(chunk, runtime);
-  runtime.csvLineBuffer = undefined;
-  const cleanCSVString = cleanUtf8Split(workChunk, runtime).toString("utf8");
-  if (runtime.started === false) {
-    return stripBom(cleanCSVString);
-  } else {
-    return cleanCSVString;
-  }
-}I
-/**
- *  append data to buffer that is left form last chunk
- */
-function concatLeftChunk(chunk: Buffer, runtime: ParseRuntime): Buffer {
-  if (runtime.csvLineBuffer && runtime.csvLineBuffer.length > 0) {
-    return Buffer.concat([runtime.csvLineBuffer, chunk]);
-  } else {
-    return chunk;
-  }
-}
-/**
- * check if utf8 chars being split, if does, stripe the bytes and add to left buffer.
- */
-function cleanUtf8Split(chunk: Buffer, runtime: ParseRuntime): Buffer {
-  let idx = chunk.length - 1;
-  /**
-   * From Keyang:
-   * The code below is to check if a single utf8 char (which could be multiple bytes) being split.
-   * If the char being split, the buffer from two chunk needs to be concat
-   * check how utf8 being encoded to understand the code below. 
-   * If anyone has any better way to do this, please let me know.
-   */
-  if ((chunk[idx] & 1 << 7) != 0) {
-    while ((chunk[idx] & 3 << 6) === 128) {
-      idx--;
-    }
-    idx--;
-  }
-  if (idx != chunk.length - 1) {
-    runtime.csvLineBuffer = chunk.slice(idx + 1);
-    return chunk.slice(0, idx + 1)
-    // var _cb=cb;
-    // var self=this;
-    // cb=function(){
-    //   if (self._csvLineBuffer){
-    //     self._csvLineBuffer=Buffer.concat([bufFromString(self._csvLineBuffer,"utf8"),left]);
-    //   }else{
-    //     self._csvLineBuffer=left;
-    //   }
-    //   _cb();
-    // }
-  } else {
-    return chunk;
-  }
-}
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/fileline.test.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/fileline.test.ts.html deleted file mode 100644 index 9267070..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/fileline.test.ts.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - Code coverage report for csv2json/src/fileline.test.ts - - - - - - - -
-
-

- All files / csv2json/src fileline.test.ts -

-
-
- 100% - Statements - 4/4 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 100% - Lines - 4/4 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15  -  -1x -  -  -1x -1x -1x -  -  -  -  -  -  - 
import {stringToLines} from "./fileline";
-import { mergeParams } from "./Parameters";
-import { Converter } from "./Converter";
-var assert = require("assert");
-describe("fileline function", function() {
-  it ("should convert data to multiple lines ", function() {
-    const conv=new Converter();
-    var data = "abcde\nefef";
-    var result = stringToLines(data, conv.parseRuntime);
-    assert.equal(result.lines.length, 1);
-    assert.equal(result.partial, "efef");
-    assert.equal(result.lines[0], "abcde");
-  });
-});
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/fileline.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/fileline.ts.html deleted file mode 100644 index 6ccf935..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/fileline.ts.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - Code coverage report for csv2json/src/fileline.ts - - - - - - - -
-
-

- All files / csv2json/src fileline.ts -

-
-
- 100% - Statements - 2/2 -
-
- 100% - Branches - 2/2 -
-
- 100% - Functions - 0/0 -
-
- 100% - Lines - 2/2 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25  -  -  -  -  -  -  -  -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ParseRuntime } from "./ParseRuntime";
-import getEol from "./getEol";
-// const getEol = require("./getEol");
-/**
- * convert data chunk to file lines array
- * @param  {string} data  data chunk as utf8 string
- * @param  {object} param Converter param object
- * @return {Object}   {lines:[line1,line2...],partial:String}
- */
-export function stringToLines(data: string, param: ParseRuntime): StringToLinesResult {
-  const eol = getEol(data, param);
-  const lines = data.split(eol);
-  const partial = lines.pop() || "";
-  return { lines: lines, partial: partial };
-};
- 
- 
-export interface StringToLinesResult {
-  lines: Fileline[],
-  /**
-   * last line which could be incomplete line.
-   */
-  partial: string
-}
-export type Fileline = string;
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/getEol.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/getEol.ts.html deleted file mode 100644 index 34d12c3..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/getEol.ts.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - Code coverage report for csv2json/src/getEol.ts - - - - - - - -
-
-

- All files / csv2json/src getEol.ts -

-
-
- 0% - Statements - 0/0 -
-
- 0% - Branches - 3/3 -
-
- 0% - Functions - 0/0 -
-
- 0% - Lines - 0/0 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { ParseRuntime } from "./ParseRuntime";
-//return first eol found from a data chunk.
-export default function (data: string, param: ParseRuntime): string {
-  if (!param.eol && data) {
-    for (var i = 0, len = data.length; i < len; i++) {
-      if (data[i] === "\r") {
-        if (data[i + 1] === "\n") {
-          param.eol = "\r\n";
-          break;
-        } else if (data[i + 1]) {
-          param.eol = "\r";
-          break;
-        } 
-      } else if (data[i] === "\n") {
-        param.eol = "\n";
-        break;
-      }
-    }
-  }
-  return param.eol || "\n";
-};
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/index.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/index.html deleted file mode 100644 index 9ec653e..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/index.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - Code coverage report for csv2json/src - - - - - - - -
-
-

- All files csv2json/src -

-
-
- 93.69% - Statements - 594/634 -
-
- 86.56% - Branches - 277/320 -
-
- 91% - Functions - 91/100 -
-
- 93.47% - Lines - 573/613 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
CSVError.ts
88.24%15/1775%3/466.67%4/687.5%14/16
Converter.ts
94%94/10084.62%22/2696.43%27/2893.62%88/94
Processor.ts
100%6/6100%0/0100%2/2100%5/5
ProcessorLocal.test.ts
100%23/23100%0/0100%3/3100%21/21
ProcessorLocal.ts
93.75%135/14487.5%77/8894.12%16/1793.43%128/137
Result.ts
87.32%62/7179.25%42/5386.67%13/1586.96%60/69
Worker.ts
0%0/00%0/00%0/10%0/0
dataClean.ts
100%7/775%3/4100%1/1100%7/7
fileline.test.ts
100%4/4100%0/0100%0/0100%4/4
fileline.ts
100%2/2100%2/2100%0/0100%2/2
getEol.ts
0%0/00%3/30%0/00%0/0
index.ts
100%5/5100%0/0100%1/1100%5/5
lineToJson.ts
91.92%91/9986.75%72/8392.86%13/1491.92%91/99
rowSplit.test.ts
100%31/31100%0/0100%0/0100%31/31
rowSplit.ts
95.08%116/12294.55%52/5591.67%11/1295.04%115/121
test.ts
0%0/00%0/00%0/00%0/0
util.ts
100%3/350%1/2100%0/0100%2/2
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/index.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/index.ts.html deleted file mode 100644 index cded391..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/index.ts.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - Code coverage report for csv2json/src/index.ts - - - - - - - -
-
-

- All files / csv2json/src index.ts -

-
-
- 100% - Statements - 5/5 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 1/1 -
-
- 100% - Lines - 5/5 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9  -  -1x -1x -15x -  -  -1x -1x
import { TransformOptions } from "stream";
-import { CSVParseParam } from "./Parameters";
-import { Converter } from "./Converter";
-const helper = function (param?: Partial<CSVParseParam>, options?: TransformOptions): Converter {
-  return new Converter(param, options);
-}
- 
-helper["Converter"] = Converter;
-export =helper;
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/lineToJson.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/lineToJson.ts.html deleted file mode 100644 index 97c8753..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/lineToJson.ts.html +++ /dev/null @@ -1,660 +0,0 @@ - - - - Code coverage report for csv2json/src/lineToJson.ts - - - - - - - -
-
-

- All files / csv2json/src lineToJson.ts -

-
-
- 91.92% - Statements - 91/99 -
-
- 86.75% - Branches - 72/83 -
-
- 92.86% - Functions - 13/14 -
-
- 91.92% - Lines - 91/99 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198  -1x -  -1x -  -  -1x -  -1x -102x -102x -32101x -32099x -32090x -  -  -100x -  -  -  -  -  -  -  -32101x -2x -  -  -32099x -32099x -32099x -32090x -  -9x -  -  -  -  -32099x -32099x -  -32099x -65788x -  -65788x -7x -  -65781x -  -65781x -65781x -50x -  -65781x -65781x -6x -6x -6x -  -  -  -  -  -  -65775x -75x -75x -  -65775x -65775x -  -  -  -32099x -32090x -  -9x -  -  -  -1x -  -  -  -  -  -65781x -65243x -  -538x -538x -533x -  -5x -1x -  -5x -4x -4x -4x -4x -  -  -  -1x -1x -  -  -  -  -  -  -65781x -538x -3x -  -535x -103x -1x -  -102x -  -  -432x -  -  -  -65781x -  -  -  -  -64992x -  -  -789x -  -  -  -  -75x -9x -66x -  -66x -  -66x -66x -  -  -  -  -  -  -13x -13x -  -  -13x -  -  -  -60x -  -  -  -75x -75x -13x -  -62x -13x -49x -2x -47x -5x -  -42x -  -  -  -  -2x -2x -  -  -2x -  -  -  -  -5x -5x -  -  -  -  - 
import { Converter } from "./Converter";
-import CSVError from "./CSVError";
-import { CellParser, ColumnParam } from "./Parameters";
-import set from "lodash/set";
-import { ParseRuntime } from "./ParseRuntime";
- 
-var numReg = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;
- 
-export default function (csvRows: string[][], conv: Converter): JSONResult[] {
-  const res: JSONResult[] = [];
-  for (let i = 0, len = csvRows.length; i < len; i++) {
-    const r = processRow(csvRows[i], conv, i);
-    if (r) {
-      res.push(r);
-    }
-  }
-  return res;
-};
-export type JSONResult = {
-  [key: string]: any
-}
- 
-function processRow(row: string[], conv: Converter, index): JSONResult | null {
- 
-  if (conv.parseParam.checkColumn && conv.parseRuntime.headers && row.length !== conv.parseRuntime.headers.length) {
-    throw (CSVError.column_mismatched(conv.parseRuntime.parsedLineNumber + index))
-  }
- 
-  const headRow = conv.parseRuntime.headers || [];
-  const resultRow = convertRowToJson(row, headRow, conv);
-  if (resultRow) {
-    return resultRow;
-  } else {
-    return null;
-  }
-}
- 
-function convertRowToJson(row: string[], headRow: string[], conv: Converter): { [key: string]: any } | null {
-  let hasValue = false;
-  const resultRow = {};
-  
-  for (let i = 0, len = row.length; i < len; i++) {
-    let item = row[i];
- 
-    if (conv.parseParam.ignoreEmpty && item === '') {
-      continue;
-    }
-    hasValue = true;
- 
-    let head = headRow[i];
-    if (!head || head === "") {
-      head = headRow[i] = "field" + (i + 1);
-    }
-    const convFunc = getConvFunc(head, i, conv);
-    if (convFunc) {
-      const convRes = convFunc(item, head, resultRow, row, i);
-      Eif (convRes !== undefined) {
-        setPath(resultRow, head, convRes, conv,i);
-      }
-    } else {
-      // var flag = getFlag(head, i, param);
-      // if (flag === 'omit') {
-      //   continue;
-      // }
-      if (conv.parseParam.checkType) {
-        const convertFunc = checkType(item, head, i, conv);
-        item = convertFunc(item);
-      }
-      Eif (item !== undefined) {
-        setPath(resultRow, head, item, conv,i);
-      }
-    }
-  }
-  if (hasValue) {
-    return resultRow;
-  } else {
-    return null;
-  }
-}
- 
-const builtInConv: { [key: string]: CellParser } = {
-  "string": stringType,
-  "number": numberType,
-  "omit": function () { }
-}
-function getConvFunc(head: string, i: number, conv: Converter): CellParser | null {
-  if (conv.parseRuntime.columnConv[i] !== undefined) {
-    return conv.parseRuntime.columnConv[i];
-  } else {
-    let flag = conv.parseParam.colParser[head];
-    if (flag === undefined) {
-      return conv.parseRuntime.columnConv[i] = null;
-    }
-    if (typeof flag === "object") {
-      flag = (flag as ColumnParam).cellParser || "string";
-    }
-    if (typeof flag === "string") {
-      flag = flag.trim().toLowerCase();
-      const builtInFunc = builtInConv[flag];
-      Eif (builtInFunc) {
-        return conv.parseRuntime.columnConv[i] = builtInFunc;
-      } else {
-        return conv.parseRuntime.columnConv[i] = null;
-      }
-    } else Eif (typeof flag === "function") {
-      return conv.parseRuntime.columnConv[i] = flag;
-    } else {
-      return conv.parseRuntime.columnConv[i] = null;
-    }
-  }
-}
-function setPath(resultJson: any, head: string, value: any, conv: Converter,headIdx:number) {
-  if (!conv.parseRuntime.columnValueSetter[headIdx]) {
-    if (conv.parseParam.flatKeys) {
-      conv.parseRuntime.columnValueSetter[headIdx] = flatSetter;
-    } else {
-      if (head.indexOf(".") > -1) {
-        if (conv.parseParam.colParser[head] && (conv.parseParam.colParser[head] as ColumnParam).flat) {
-          conv.parseRuntime.columnValueSetter[headIdx] = flatSetter;
-        } else {
-          conv.parseRuntime.columnValueSetter[headIdx] = jsonSetter;
-        }
-      } else {
-        conv.parseRuntime.columnValueSetter[headIdx] = flatSetter;
-      }
-    }
-  }
-  conv.parseRuntime.columnValueSetter[headIdx](resultJson, head, value);
-  // flatSetter(resultJson, head, value);
- 
-}
-function flatSetter(resultJson: any, head: string, value: any) {
-  resultJson[head] = value;
-}
-function jsonSetter(resultJson: any, head: string, value: any) {
-  set(resultJson, head, value);
-}
- 
- 
-function checkType(item: string, head: string, headIdx: number, conv: Converter): Function {
-  if (conv.parseRuntime.headerType[headIdx]) {
-    return conv.parseRuntime.headerType[headIdx];
-  } else Iif (head.indexOf('number#!') > -1) {
-    return conv.parseRuntime.headerType[headIdx] = numberType;
-  } else Iif (head.indexOf('string#!') > -1) {
-    return conv.parseRuntime.headerType[headIdx] = stringType;
-  } else Eif (conv.parseParam.checkType) {
-    return conv.parseRuntime.headerType[headIdx] = dynamicType;
-  } else {
-    return conv.parseRuntime.headerType[headIdx] = stringType;
-  }
-}
- 
-function numberType(item) {
-  var rtn = parseFloat(item);
-  Iif (isNaN(rtn)) {
-    return item;
-  }
-  return rtn;
-}
- 
-function stringType(item: string): string {
-  return item.toString();
-}
- 
-function dynamicType(item) {
-  var trimed = item.trim();
-  if (trimed === "") {
-    return stringType(item);
-  }
-  if (numReg.test(trimed)) {
-    return numberType(item);
-  } else if (trimed.length === 5 && trimed.toLowerCase() === "false" || trimed.length === 4 && trimed.toLowerCase() === "true") {
-    return booleanType(item);
-  } else if (trimed[0] === "{" && trimed[trimed.length - 1] === "}" || trimed[0] === "[" && trimed[trimed.length - 1] === "]") {
-    return jsonType(item);
-  } else {
-    return stringType(item);
-  }
-}
- 
-function booleanType(item) {
-  var trimed = item.trim();
-  Iif (trimed.length === 5 && trimed.toLowerCase() === "false") {
-    return false;
-  } else {
-    return true;
-  }
-}
- 
-function jsonType(item) {
-  try {
-    return JSON.parse(item);
-  } catch (e) {
-    return item;
-  }
-}
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/rowSplit.test.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/rowSplit.test.ts.html deleted file mode 100644 index 119b172..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/rowSplit.test.ts.html +++ /dev/null @@ -1,399 +0,0 @@ - - - - Code coverage report for csv2json/src/rowSplit.test.ts - - - - - - - -
-
-

- All files / csv2json/src rowSplit.test.ts -

-
-
- 100% - Statements - 31/31 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 100% - Lines - 31/31 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -1111x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -4x -1x -  -  -  -  -  -1x -1x -1x -  -  -  -  -1x -1x -  -1x -  -  -  -1x -1x -  -1x -  -  -  -  -1x -  -  -  -  -1x -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -1x -1x -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -1x -1x -  -  -  -  -  -1x -  -1x -  -  -  -1x -3x -1x -  -1x -  -  -  -1x -1x -  -1x - 
import { RowSplit, MultipleRowResult, RowSplitResult } from "./rowSplit";
-import { Converter } from "./Converter";
-const assert = require("assert");
- 
-describe("Test delimiters", function () {
-  const getDelimiter = (str, opt: { delimiter: string | string[] }): string => {
-    return RowSplit.prototype["getDelimiter"].call({
-      conv: {
-        parseParam: {
-          delimiter: opt.delimiter
-        }
-      }
-    }, str);
-  }
- 
-  it("should return the explicitly specified delimiter", function () {
-    var delimiter = ";";
-    var rowStr = "a;b;c";
-    var returnedDelimiter = getDelimiter(rowStr, { delimiter: ";" });
-    assert.equal(returnedDelimiter, delimiter);
-  });
- 
-  it("should return the autodetected delimiter if 'auto' specified", function () {
-    var rowStr = "a;b;c";
-    var returnedDelimiter = getDelimiter(rowStr, { delimiter: "auto" });
-    assert(returnedDelimiter === ";");
-  });
- 
-  it("should return the ',' delimiter if delimiter cannot be specified, in case of 'auto'", function () {
-    var rowStr = "abc";
-    var returnedDelimiter = getDelimiter(rowStr, { delimiter: "auto" });
-    assert(returnedDelimiter === ",");
-  });
- 
-  it("should accetp an array with potential delimiters", function () {
-    var rowStr = "a$b$c";
-    var returnedDelimiter = getDelimiter(rowStr, { delimiter: [",", ";", "$"] });
-    assert(returnedDelimiter === '$');
-  });
-});
- 
-describe("ParseMultiLine function", function () {
-  const rowSplit = new RowSplit(new Converter());
-  const func = (lines: string[]): MultipleRowResult => {
-    return rowSplit.parseMultiLines(lines);
-  }
-  it("should convert lines to csv lines", function () {
-    var lines = [
-      "a,b,c,d",
-      "hello,world,csvtojson,abc",
-      "1,2,3,4"
-    ];
-    var res = func(lines);
-    assert.equal(res.rowsCells.length, 3);
-    assert.equal(res.partial, "");
-  });
- 
-  it("should process line breaks", function () {
-    var lines = [
-      "a,b,c",
-      '15",hello,"ab',
-      "cde\"",
-      "\"b\"\"b\",cc,dd"
-    ];
-    var res = func(lines);
-    assert.equal(res.rowsCells.length, 3);
-    assert.equal(res.rowsCells[1][0], "15\"");
-    assert.equal(res.rowsCells[1][2], "ab\ncde");
-    assert.equal(res.rowsCells[2][0], "b\"b");
-    assert.equal(res.partial, "");
-  });
- 
-  it("should return partial if line not closed", function () {
-    var lines = [
-      "a,b,c",
-      '15",hello,"ab',
-      "d,e,f"
-    ];
-    var res = func(lines);
-    assert.equal(res.rowsCells.length, 1);
-    assert.equal(res.partial, "15\",hello,\"ab\nd,e,f\n");
-  });
-});
- 
-describe("RowSplit.parse function", function () {
-  const rowSplit = new RowSplit(new Converter());
-  const func = (str): RowSplitResult => {
-    return rowSplit.parse(str);
-  }
-  it("should split complete csv line", function () {
-    var str = "hello,world,csvtojson,awesome";
-    var res = func(str);
-    assert.equal(res.cells.length, 4);
-    assert.equal(res.closed, true);
-  });
- 
-  it("should split incomplete csv line", function () {
-    var str = "hello,world,\"csvtojson,awesome";
-    var res = func(str);
-    assert.equal(res.closed, false);
-  });
- 
-  it("should allow multiple line", function () {
-    var str = "\"he\"llo\",world,\"csvtojson,a\"\nwesome\"";
-    var res = func(str);
-    assert.equal(res.closed, true);
-    assert.equal(res.cells[2], 'csvtojson,a"\nwesome');
-  });
- 
-});
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/rowSplit.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/rowSplit.ts.html deleted file mode 100644 index 61c4372..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/rowSplit.ts.html +++ /dev/null @@ -1,666 +0,0 @@ - - - - Code coverage report for csv2json/src/rowSplit.ts - - - - - - - -
-
-

- All files / csv2json/src rowSplit.ts -

-
-
- 95.08% - Statements - 116/122 -
-
- 94.55% - Branches - 52/55 -
-
- 91.67% - Functions - 11/12 -
-
- 95.04% - Lines - 115/121 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200  -  -  -1x -1x -  -1x -1x -  -  -  -77x -77x -77x -1x -32192x -70x -  -32192x -  -77x -77x -77x -77x -  -1x -32200x -8x -  -32192x -32192x -32192x -32192x -4x -  -  -32192x -2x -2x -  -32192x -32192x -32192x -  -  -32192x -  -  -  -1x -32192x -32192x -32192x -32192x -66757x -66757x -66625x -  -66757x -66757x -66643x -158x -158x -107x -107x -107x -107x -  -51x -51x -51x -  -  -66485x -66473x -  -66485x -66485x -  -  -114x -26x -26x -26x -26x -26x -26x -  -26x -26x -  -88x -  -  -  -  -  -  -  -  -32192x -  -1x -  -8x -6x -2x -1x -  -1x -  -7x -7x -7x -33x -33x -13x -13x -  -  -7x -  -1x -66643x -66643x -66643x -  -  -  -1x -272x -272x -272x -266x -  -272x -272x -272x -191x -191x -  -272x -  -  -1x -  -  -  -  -  -  -  -  -  -1x -133x -133x -25x -  -133x -  -133x -  -1x -107x -107x -107x -32137x -32137x -32137x -32116x -18x -  -32098x -  -  -32116x -  -21x -  -  -107x -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { CSVParseParam } from "./Parameters";
-import { Converter } from "./Converter";
-import { Fileline } from "./fileline";
-import getEol from "./getEol";
-import { filterArray } from "./util";
- 
-const defaulDelimiters = [",", "|", "\t", ";", ":"];
-export class RowSplit {
-  private quote: string;
-  private trim: boolean;
-  private escape: string;
-  private cachedRegExp: { [key: string]: RegExp } = {};
-  private delimiterEmitted = false;
-  private _needEmitDelimiter?: boolean = undefined;
-  private get needEmitDelimiter() {
-    if (this._needEmitDelimiter === undefined) {
-      this._needEmitDelimiter = this.conv.listeners("delimiter").length > 0;
-    }
-    return this._needEmitDelimiter;
-  }
-  constructor(private conv: Converter) {
-    this.quote = conv.parseParam.quote;
-    this.trim = conv.parseParam.trim;
-    this.escape = conv.parseParam.escape;
-  }
-  parse(fileline: Fileline): RowSplitResult {
-    if (fileline === "") {
-      return { cells: [], closed: true };
-    }
-    const quote = this.quote;
-    const trim = this.trim;
-    const escape = this.escape;
-    if (this.conv.parseRuntime.delimiter instanceof Array || this.conv.parseRuntime.delimiter.toLowerCase() === "auto") {
-      this.conv.parseRuntime.delimiter = this.getDelimiter(fileline);
- 
-    }
-    if (this.needEmitDelimiter && !this.delimiterEmitted) {
-      this.conv.emit("delimiter", this.conv.parseRuntime.delimiter);
-      this.delimiterEmitted = true;
-    }
-    const delimiter = this.conv.parseRuntime.delimiter;
-    const rowArr = fileline.split(delimiter);
-    Iif (quote === "off") {
-      return { cells: rowArr, closed: true };
-    } else {
-      return this.toCSVRow(rowArr, trim, quote, delimiter);
-    }
- 
-  }
-  private toCSVRow(rowArr: string[], trim: boolean, quote: string, delimiter: string): RowSplitResult {
-    const row: string[] = [];
-    let inquote = false;
-    let quoteBuff = '';
-    for (let i = 0, rowLen = rowArr.length; i < rowLen; i++) {
-      let e = rowArr[i];
-      if (!inquote && trim) {
-        e = e.trimLeft();
-      }
-      const len = e.length;
-      if (!inquote) {
-        if (this.isQuoteOpen(e)) { //quote open
-          e = e.substr(1);
-          if (this.isQuoteClose(e)) { //quote close
-            e = e.substring(0, e.lastIndexOf(quote));
-            e = this.escapeQuote(e);
-            row.push(e);
-            continue;
-          } else {
-            inquote = true;
-            quoteBuff += e;
-            continue;
-          }
-        } else {
-          if (trim) {
-            e = e.trimRight();
-          }
-          row.push(e);
-          continue;
-        }
-      } else { //previous quote not closed
-        if (this.isQuoteClose(e)) { //close double quote
-          inquote = false;
-          e = e.substr(0, len - 1);
-          quoteBuff += delimiter + e;
-          quoteBuff = this.escapeQuote(quoteBuff);
-          Eif (trim) {
-            quoteBuff = quoteBuff.trimRight();
-          }
-          row.push(quoteBuff);
-          quoteBuff = "";
-        } else {
-          quoteBuff += delimiter + e;
-        }
-      }
-    }
- 
-    // if (!inquote && param._needFilterRow) {
-    //   row = filterRow(row, param);
-    // }
- 
-    return { cells: row, closed: !inquote };
-  }
-  private getDelimiter(fileline: Fileline): string {
-    let checker;
-    if (this.conv.parseParam.delimiter === "auto") {
-      checker = defaulDelimiters;
-    } else if (this.conv.parseParam.delimiter instanceof Array) {
-      checker = this.conv.parseParam.delimiter;
-    } else {
-      return this.conv.parseParam.delimiter;
-    }
-    let count = 0;
-    let rtn = ",";
-    checker.forEach(function (delim) {
-      const delimCount = fileline.split(delim).length;
-      if (delimCount > count) {
-        rtn = delim;
-        count = delimCount;
-      }
-    });
-    return rtn;
-  }
-  private isQuoteOpen(str: string): boolean {
-    const quote = this.quote;
-    const escape = this.escape;
-    return str[0] === quote && (
-      str[1] !== quote ||
-      str[1] === escape && (str[2] === quote || str.length === 2));
-  }
-  private isQuoteClose(str: string): boolean {
-    const quote = this.quote;
-    const escape = this.escape;
-    if (this.conv.parseParam.trim) {
-      str = str.trimRight();
-    }
-    let count = 0;
-    let idx = str.length - 1;
-    while (str[idx] === quote || str[idx] === escape) {
-      idx--;
-      count++;
-    }
-    return count % 2 !== 0;
-  }
- 
-  private twoDoubleQuote(str: string): string {
-    var twoQuote = this.quote + this.quote;
-    var curIndex = -1;
-    while ((curIndex = str.indexOf(twoQuote, curIndex)) > -1) {
-      str = str.substring(0, curIndex) + str.substring(++curIndex);
-    }
-    return str;
-  }
- 
- 
-  private escapeQuote(segment: string): string {
-    const key = "es|" + this.quote + "|" + this.escape;
-    if (this.cachedRegExp[key] === undefined) {
-      this.cachedRegExp[key] = new RegExp('\\' + this.escape + '\\' + this.quote, 'g');
-    }
-    const regExp = this.cachedRegExp[key];
-    // console.log(regExp,segment);
-    return segment.replace(regExp, this.quote);
-  }
-  parseMultiLines(lines: Fileline[]): MultipleRowResult {
-    const csvLines: string[][] = [];
-    let left = "";
-    while (lines.length) {
-      const line = left + lines.shift();
-      const row = this.parse(line);
-      if (row.closed || this.conv.parseParam.alwaysSplitAtEOL) {
-        if (this.conv.parseRuntime.selectedColumns) {
-          csvLines.push(filterArray(row.cells, this.conv.parseRuntime.selectedColumns));
-        } else {
-          csvLines.push(row.cells);
-        }
- 
-        left = "";
-      } else {
-        left = line + (getEol(line, this.conv.parseRuntime) || "\n");
-      }
-    }
-    return { rowsCells: csvLines, partial: left };
-  }
-}
-export interface MultipleRowResult {
-  rowsCells: string[][];
-  partial: string;
-}
-export interface RowSplitResult {
-  /**
-   * csv row array. ["a","b","c"]
-   */
-  cells: string[],
-  /**
-   * if the passed fileline is a complete row
-   */
-  closed: boolean
-}
- 
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/test.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/test.ts.html deleted file mode 100644 index 091a734..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/test.ts.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - Code coverage report for csv2json/src/test.ts - - - - - - - -
-
-

- All files / csv2json/src test.ts -

-
-
- 0% - Statements - 0/0 -
-
- 0% - Branches - 0/0 -
-
- 0% - Functions - 0/0 -
-
- 0% - Lines - 0/0 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5  -  -  -  - 
import a from "./index";
- 
- 
-// a("sss","CCc");
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/util.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/src/util.ts.html deleted file mode 100644 index 2a94dca..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/src/util.ts.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - Code coverage report for csv2json/src/util.ts - - - - - - - -
-
-

- All files / csv2json/src util.ts -

-
-
- 100% - Statements - 3/3 -
-
- 50% - Branches - 1/2 -
-
- 100% - Functions - 0/0 -
-
- 100% - Lines - 2/2 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18290x -  -  -  -  -  -  -  -  -  -  -22x -  -  -  -  -  - 
export function bufFromString(str: string): Buffer {
-  const length = Buffer.byteLength(str);
-  const buffer = Buffer.allocUnsafe
-    ? Buffer.allocUnsafe(length)
-    : new Buffer(length);
-  buffer.write(str);
-  return buffer;
-}
- 
-export function filterArray(arr: any[], filter: number[]): any[] {
-  const rtn: any[] = [];
-  for (let i = 0; i < arr.length; i++) {
-    if (filter.indexOf(i) > -1) {
-      rtn.push(arr[i]);
-    }
-  }
-  return rtn;
-}
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/index.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/index.html deleted file mode 100644 index 16c8e7f..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/index.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - Code coverage report for csv2json/testNew - - - - - - - -
-
-

- All files csv2json/testNew -

-
-
- 98.58% - Statements - 208/211 -
-
- 100% - Branches - 1/1 -
-
- 100% - Functions - 22/22 -
-
- 98.58% - Lines - 208/211 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
testCSVConverter.ts
98.95%94/95100%1/1100%5/598.95%94/95
testCSVConverter2.ts
98%98/100100%0/0100%15/1598%98/100
testCSVConverter3.ts
100%4/4100%0/0100%0/0100%4/4
testErrorHandle.ts
100%12/12100%0/0100%2/2100%12/12
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/testCSVConverter.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/testCSVConverter.ts.html deleted file mode 100644 index 7b3d7a2..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/testCSVConverter.ts.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/testNew/testCSVConverter.ts - - - - - - - -
-
-

- All files / csv2json/testNew testCSVConverter.ts -

-
-
- 98.95% - Statements - 94/95 -
-
- 100% - Branches - 1/1 -
-
- 100% - Functions - 5/5 -
-
- 98.95% - Lines - 94/95 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/testNew/testCSVConverter.ts(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/testNew/testCSVConverter.ts')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/testNew/testCSVConverter.ts(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/testNew/testCSVConverter.ts')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at LcovReport.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/lcov/index.js:24:24)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/testCSVConverter2.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/testCSVConverter2.ts.html deleted file mode 100644 index 77001fb..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/testCSVConverter2.ts.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/testNew/testCSVConverter2.ts - - - - - - - -
-
-

- All files / csv2json/testNew testCSVConverter2.ts -

-
-
- 98% - Statements - 98/100 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 15/15 -
-
- 98% - Lines - 98/100 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/testNew/testCSVConverter2.ts(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/testNew/testCSVConverter2.ts')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/testNew/testCSVConverter2.ts(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/testNew/testCSVConverter2.ts')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at LcovReport.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/lcov/index.js:24:24)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/testCSVConverter3.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/testCSVConverter3.ts.html deleted file mode 100644 index b96a735..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/testCSVConverter3.ts.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/testNew/testCSVConverter3.ts - - - - - - - -
-
-

- All files / csv2json/testNew testCSVConverter3.ts -

-
-
- 100% - Statements - 4/4 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 100% - Lines - 4/4 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/testNew/testCSVConverter3.ts(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/testNew/testCSVConverter3.ts')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/testNew/testCSVConverter3.ts(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/testNew/testCSVConverter3.ts')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at LcovReport.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/lcov/index.js:24:24)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/testErrorHandle.ts.html b/node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/testErrorHandle.ts.html deleted file mode 100644 index 630ed3d..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/csv2json/testNew/testErrorHandle.ts.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - Code coverage report for csv2json/testNew/testErrorHandle.ts - - - - - - - -
-
-

- All files / csv2json/testNew testErrorHandle.ts -

-
-
- 100% - Statements - 12/12 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 2/2 -
-
- 100% - Lines - 12/12 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -120 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0
Unable to lookup source: /Users/kxiang/work/projects/csv2json/testNew/testErrorHandle.ts(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/testNew/testErrorHandle.ts')
-Error: Unable to lookup source: /Users/kxiang/work/projects/csv2json/testNew/testErrorHandle.ts(ENOENT: no such file or directory, open '/Users/kxiang/work/projects/csv2json/testNew/testErrorHandle.ts')
-    at Context.defaultSourceLookup [as sourceFinder] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:15:15)
-    at Context.getSource (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/context.js:74:17)
-    at Object.annotateSourceCode (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/annotator.js:172:38)
-    at HtmlReport.onDetail (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/html/index.js:237:39)
-    at LcovReport.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-reports/lib/lcov/index.js:24:24)
-    at Visitor.(anonymous function) [as onDetail] (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:34:30)
-    at ReportNode.Node.visit (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:123:17)
-    at /Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:116:23
-    at Array.forEach (native)
-    at visitChildren (/Users/kxiang/work/projects/csv2json/node_modules/nyc/node_modules/istanbul-lib-report/lib/tree.js:115:32)
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/index.html b/node_modules/csvtojson/coverage/lcov-report/index.html deleted file mode 100644 index c4d9b56..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/index.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - Code coverage report for All files - - - - - - - -
-
-

- All files -

-
-
- 4.86% - Statements - 802/16489 -
-
- 2.1% - Branches - 278/13264 -
-
- 3.36% - Functions - 113/3362 -
-
- 6.95% - Lines - 781/11243 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
csv2json
0%0/120%0/20%0/10%0/12
csv2json/bin
0%0/1480%0/660%0/150%0/148
csv2json/build
0%0/7200%0/4450%0/1370%0/710
csv2json/dist
0%0/137620%0/118830%0/29500%0/8549
csv2json/libs
0%0/3100%0/0100%0/00%0/3
csv2json/libs/core
0%0/9110%0/5030%0/1250%0/909
csv2json/libs/core/defaultParsers
0%0/630%0/400%0/60%0/63
csv2json/libs/interfaces
0%0/1100%0/0100%0/00%0/1
csv2json/libs/interfaces/cli
0%0/240%0/40%0/60%0/24
csv2json/src
93.69%594/63486.56%277/32091%91/10093.47%573/613
csv2json/testNew
98.58%208/211100%1/1100%22/2298.58%208/211
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/lcov-report/prettify.css b/node_modules/csvtojson/coverage/lcov-report/prettify.css deleted file mode 100644 index b317a7c..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/node_modules/csvtojson/coverage/lcov-report/prettify.js b/node_modules/csvtojson/coverage/lcov-report/prettify.js deleted file mode 100644 index ef51e03..0000000 --- a/node_modules/csvtojson/coverage/lcov-report/prettify.js +++ /dev/null @@ -1 +0,0 @@ -window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/node_modules/csvtojson/coverage/lcov-report/sort-arrow-sprite.png b/node_modules/csvtojson/coverage/lcov-report/sort-arrow-sprite.png deleted file mode 100644 index 03f704a609c6fd0dbfdac63466a7d7c958b5cbf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jii$m5978H@?Fn+^JD|Y9yzj{W`447Gxa{7*dM7nnnD-Lb z6^}Hx2)'; - } - } - return cols; - } - // attaches a data attribute to every tr element with an object - // of data values keyed by column name - function loadRowData(tableRow) { - var tableCols = tableRow.querySelectorAll('td'), - colNode, - col, - data = {}, - i, - val; - for (i = 0; i < tableCols.length; i += 1) { - colNode = tableCols[i]; - col = cols[i]; - val = colNode.getAttribute('data-value'); - if (col.type === 'number') { - val = Number(val); - } - data[col.key] = val; - } - return data; - } - // loads all row data - function loadData() { - var rows = getTableBody().querySelectorAll('tr'), - i; - - for (i = 0; i < rows.length; i += 1) { - rows[i].data = loadRowData(rows[i]); - } - } - // sorts the table using the data for the ith column - function sortByIndex(index, desc) { - var key = cols[index].key, - sorter = function (a, b) { - a = a.data[key]; - b = b.data[key]; - return a < b ? -1 : a > b ? 1 : 0; - }, - finalSorter = sorter, - tableBody = document.querySelector('.coverage-summary tbody'), - rowNodes = tableBody.querySelectorAll('tr'), - rows = [], - i; - - if (desc) { - finalSorter = function (a, b) { - return -1 * sorter(a, b); - }; - } - - for (i = 0; i < rowNodes.length; i += 1) { - rows.push(rowNodes[i]); - tableBody.removeChild(rowNodes[i]); - } - - rows.sort(finalSorter); - - for (i = 0; i < rows.length; i += 1) { - tableBody.appendChild(rows[i]); - } - } - // removes sort indicators for current column being sorted - function removeSortIndicators() { - var col = getNthColumn(currentSort.index), - cls = col.className; - - cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); - col.className = cls; - } - // adds sort indicators for current column being sorted - function addSortIndicators() { - getNthColumn(currentSort.index).className += currentSort.desc ? ' sorted-desc' : ' sorted'; - } - // adds event listeners for all sorter widgets - function enableUI() { - var i, - el, - ithSorter = function ithSorter(i) { - var col = cols[i]; - - return function () { - var desc = col.defaultDescSort; - - if (currentSort.index === i) { - desc = !currentSort.desc; - } - sortByIndex(i, desc); - removeSortIndicators(); - currentSort.index = i; - currentSort.desc = desc; - addSortIndicators(); - }; - }; - for (i =0 ; i < cols.length; i += 1) { - if (cols[i].sortable) { - // add the click event handler on the th so users - // dont have to click on those tiny arrows - el = getNthColumn(i).querySelector('.sorter').parentElement; - if (el.addEventListener) { - el.addEventListener('click', ithSorter(i)); - } else { - el.attachEvent('onclick', ithSorter(i)); - } - } - } - } - // adds sorting functionality to the UI - return function () { - if (!getTable()) { - return; - } - cols = loadColumns(); - loadData(cols); - addSortIndicators(); - enableUI(); - }; -})(); - -window.addEventListener('load', addSorting); diff --git a/node_modules/csvtojson/coverage/lcov.info b/node_modules/csvtojson/coverage/lcov.info deleted file mode 100644 index 8bdaa0e..0000000 --- a/node_modules/csvtojson/coverage/lcov.info +++ /dev/null @@ -1,31888 +0,0 @@ -TN: -SF:/Users/kxiang/work/projects/csv2json/Gruntfile.js -FN:16,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:22,0 -DA:84,0 -DA:85,0 -DA:86,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/browser_index.js -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -LF:3 -LH:0 -BRDA:1,0,0,0 -BRDA:1,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/index.js -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/bin/benchmark.js -FN:9,testCSVLine -FN:21,(anonymous_1) -FN:25,(anonymous_2) -FN:34,(anonymous_3) -FN:44,(anonymous_4) -FNF:5 -FNH:0 -FNDA:0,testCSVLine -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:38,0 -DA:40,0 -DA:44,0 -LF:29 -LH:0 -BRDA:4,0,0,0 -BRDA:4,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/bin/csvtojson.js -FN:1,csvtojson -FN:19,_showHelp -FN:44,parse -FN:61,(anonymous_3) -FN:75,run -FN:86,commandParser -FN:93,parseObject -FN:106,parseBool -FN:116,(anonymous_8) -FNF:9 -FNH:0 -FNDA:0,csvtojson -FNDA:0,_showHelp -FNDA:0,parse -FNDA:0,(anonymous_3) -FNDA:0,run -FNDA:0,commandParser -FNDA:0,parseObject -FNDA:0,parseBool -FNDA:0,(anonymous_8) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:41,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:50,0 -DA:51,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:57,0 -DA:58,0 -DA:60,0 -DA:61,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:69,0 -DA:71,0 -DA:76,0 -DA:77,0 -DA:78,0 -DA:79,0 -DA:81,0 -DA:82,0 -DA:87,0 -DA:94,0 -DA:95,0 -DA:97,0 -DA:98,0 -DA:100,0 -DA:101,0 -DA:107,0 -DA:108,0 -DA:109,0 -DA:110,0 -DA:111,0 -DA:113,0 -DA:114,0 -DA:116,0 -DA:117,0 -DA:118,0 -DA:119,0 -DA:121,0 -DA:122,0 -DA:123,0 -DA:125,0 -DA:126,0 -DA:127,0 -DA:128,0 -DA:129,0 -DA:130,0 -DA:131,0 -DA:132,0 -DA:133,0 -DA:134,0 -DA:135,0 -DA:136,0 -DA:137,0 -DA:139,0 -DA:144,0 -DA:145,0 -DA:146,0 -DA:147,0 -DA:149,0 -DA:152,0 -DA:154,0 -DA:155,0 -DA:156,0 -DA:158,0 -DA:159,0 -DA:160,0 -LF:96 -LH:0 -BRDA:21,0,0,0 -BRDA:21,0,1,0 -BRDA:27,1,0,0 -BRDA:27,1,1,0 -BRDA:33,2,0,0 -BRDA:33,2,1,0 -BRDA:47,3,0,0 -BRDA:47,3,1,0 -BRDA:50,4,0,0 -BRDA:50,4,1,0 -BRDA:53,5,0,0 -BRDA:53,5,1,0 -BRDA:53,6,0,0 -BRDA:53,6,1,0 -BRDA:57,7,0,0 -BRDA:57,7,1,0 -BRDA:62,8,0,0 -BRDA:62,8,1,0 -BRDA:64,9,0,0 -BRDA:64,9,1,0 -BRDA:76,10,0,0 -BRDA:76,10,1,0 -BRDA:78,11,0,0 -BRDA:78,11,1,0 -BRDA:97,12,0,0 -BRDA:97,12,1,0 -BRDA:108,13,0,0 -BRDA:108,13,1,0 -BRDA:108,14,0,0 -BRDA:108,14,1,0 -BRDA:110,15,0,0 -BRDA:110,15,1,0 -BRDA:110,16,0,0 -BRDA:110,16,1,0 -BRDA:117,17,0,0 -BRDA:117,17,1,0 -BRDA:121,18,0,0 -BRDA:121,18,1,0 -BRDA:126,19,0,0 -BRDA:126,19,1,0 -BRDA:128,20,0,0 -BRDA:128,20,1,0 -BRDA:130,21,0,0 -BRDA:130,21,1,0 -BRDA:132,22,0,0 -BRDA:132,22,1,0 -BRDA:134,23,0,0 -BRDA:134,23,1,0 -BRDA:136,24,0,0 -BRDA:136,24,1,0 -BRDA:144,25,0,0 -BRDA:144,25,1,0 -BRDA:146,26,0,0 -BRDA:146,26,1,0 -BRDA:159,27,0,0 -BRDA:159,27,1,0 -BRF:56 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/bin/genCsv.js -FN:24,genWord -FNF:1 -FNH:0 -FNDA:0,genWord -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:21,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:31,0 -LF:23 -LH:0 -BRDA:9,0,0,0 -BRDA:9,0,1,0 -BRDA:12,1,0,0 -BRDA:12,1,1,0 -BRDA:13,2,0,0 -BRDA:13,2,1,0 -BRDA:14,3,0,0 -BRDA:14,3,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/build/CSVError.js -FN:2,(anonymous_0) -FN:4,(anonymous_1) -FN:5,(anonymous_2) -FN:6,(anonymous_3) -FN:8,__ -FN:14,(anonymous_5) -FN:16,CSVError -FN:24,(anonymous_7) -FN:27,(anonymous_8) -FN:30,(anonymous_9) -FN:33,(anonymous_10) -FNF:11 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,__ -FNDA:0,(anonymous_5) -FNDA:0,CSVError -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:28,0 -DA:30,0 -DA:31,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:38,0 -LF:28 -LH:0 -BRDA:2,0,0,0 -BRDA:2,0,1,0 -BRDA:2,0,2,0 -BRDA:3,1,0,0 -BRDA:3,1,1,0 -BRDA:3,1,2,0 -BRDA:3,1,3,0 -BRDA:5,2,0,0 -BRDA:5,2,1,0 -BRDA:9,3,0,0 -BRDA:9,3,1,0 -BRDA:17,4,0,0 -BRDA:17,4,1,0 -BRDA:17,5,0,0 -BRDA:17,5,1,0 -BRF:15 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/build/Converter.js -FN:2,(anonymous_0) -FN:4,(anonymous_1) -FN:5,(anonymous_2) -FN:6,(anonymous_3) -FN:8,__ -FN:12,(anonymous_5) -FN:24,(anonymous_6) -FN:26,Converter -FN:39,(anonymous_8) -FN:42,(anonymous_9) -FN:48,(anonymous_10) -FN:51,(anonymous_11) -FN:54,(anonymous_12) -FN:62,(anonymous_13) -FN:71,(anonymous_14) -FN:82,(anonymous_15) -FN:86,(anonymous_16) -FN:90,(anonymous_17) -FN:102,(anonymous_18) -FN:104,(anonymous_19) -FN:106,(anonymous_20) -FN:114,(anonymous_21) -FN:126,(anonymous_22) -FN:133,(anonymous_23) -FN:139,(anonymous_24) -FN:142,(anonymous_25) -FN:148,(anonymous_26) -FN:150,(anonymous_27) -FN:157,(anonymous_28) -FN:163,(anonymous_29) -FN:168,(anonymous_30) -FN:176,(anonymous_31) -FN:185,(anonymous_32) -FN:191,(anonymous_33) -FNF:34 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,__ -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,Converter -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:37,0 -DA:39,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:46,0 -DA:48,0 -DA:49,0 -DA:51,0 -DA:52,0 -DA:54,0 -DA:55,0 -DA:60,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:71,0 -DA:72,0 -DA:73,0 -DA:74,0 -DA:77,0 -DA:80,0 -DA:82,0 -DA:83,0 -DA:84,0 -DA:86,0 -DA:87,0 -DA:88,0 -DA:89,0 -DA:90,0 -DA:91,0 -DA:92,0 -DA:95,0 -DA:96,0 -DA:97,0 -DA:100,0 -DA:102,0 -DA:103,0 -DA:104,0 -DA:105,0 -DA:107,0 -DA:108,0 -DA:111,0 -DA:115,0 -DA:116,0 -DA:119,0 -DA:125,0 -DA:127,0 -DA:132,0 -DA:134,0 -DA:139,0 -DA:140,0 -DA:141,0 -DA:143,0 -DA:144,0 -DA:145,0 -DA:149,0 -DA:151,0 -DA:152,0 -DA:153,0 -DA:154,0 -DA:157,0 -DA:158,0 -DA:159,0 -DA:160,0 -DA:161,0 -DA:162,0 -DA:164,0 -DA:165,0 -DA:169,0 -DA:170,0 -DA:173,0 -DA:177,0 -DA:178,0 -DA:182,0 -DA:185,0 -DA:186,0 -DA:187,0 -DA:188,0 -DA:190,0 -DA:192,0 -DA:197,0 -DA:199,0 -LF:112 -LH:0 -BRDA:2,0,0,0 -BRDA:2,0,1,0 -BRDA:2,0,2,0 -BRDA:3,1,0,0 -BRDA:3,1,1,0 -BRDA:3,1,2,0 -BRDA:3,1,3,0 -BRDA:5,2,0,0 -BRDA:5,2,1,0 -BRDA:9,3,0,0 -BRDA:9,3,1,0 -BRDA:12,4,0,0 -BRDA:12,4,1,0 -BRDA:12,4,2,0 -BRDA:13,5,0,0 -BRDA:13,5,1,0 -BRDA:13,6,0,0 -BRDA:13,6,1,0 -BRDA:27,7,0,0 -BRDA:27,7,1,0 -BRDA:28,8,0,0 -BRDA:28,8,1,0 -BRDA:33,9,0,0 -BRDA:33,9,1,0 -BRDA:72,10,0,0 -BRDA:72,10,1,0 -BRDA:91,11,0,0 -BRDA:91,11,1,0 -BRDA:107,12,0,0 -BRDA:107,12,1,0 -BRDA:115,13,0,0 -BRDA:115,13,1,0 -BRDA:143,14,0,0 -BRDA:143,14,1,0 -BRDA:159,15,0,0 -BRDA:159,15,1,0 -BRDA:159,16,0,0 -BRDA:159,16,1,0 -BRDA:164,17,0,0 -BRDA:164,17,1,0 -BRDA:169,18,0,0 -BRDA:169,18,1,0 -BRDA:169,19,0,0 -BRDA:169,19,1,0 -BRF:44 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/build/Parameters.js -FN:3,mergeParams -FNF:1 -FNH:0 -FNDA:0,mergeParams -DA:2,0 -DA:4,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:33,0 -DA:37,0 -DA:39,0 -LF:11 -LH:0 -BRDA:24,0,0,0 -BRDA:24,0,1,0 -BRDA:28,1,0,0 -BRDA:28,1,1,0 -BRDA:29,2,0,0 -BRDA:29,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/build/ParseRuntime.js -FN:3,initParseRuntime -FNF:1 -FNH:0 -FNDA:0,initParseRuntime -DA:2,0 -DA:4,0 -DA:5,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:28,0 -DA:30,0 -DA:32,0 -LF:9 -LH:0 -BRDA:24,0,0,0 -BRDA:24,0,1,0 -BRDA:27,1,0,0 -BRDA:27,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/build/ProcessFork.js -FN:2,(anonymous_0) -FN:4,(anonymous_1) -FN:5,(anonymous_2) -FN:6,(anonymous_3) -FN:8,__ -FN:14,(anonymous_5) -FN:16,ProcessorFork -FN:19,(anonymous_7) -FNF:8 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,__ -FNDA:0,(anonymous_5) -FNDA:0,ProcessorFork -FNDA:0,(anonymous_7) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:24,0 -LF:17 -LH:0 -BRDA:2,0,0,0 -BRDA:2,0,1,0 -BRDA:2,0,2,0 -BRDA:3,1,0,0 -BRDA:3,1,1,0 -BRDA:3,1,2,0 -BRDA:3,1,3,0 -BRDA:5,2,0,0 -BRDA:5,2,1,0 -BRDA:9,3,0,0 -BRDA:9,3,1,0 -BRDA:17,4,0,0 -BRDA:17,4,1,0 -BRDA:17,4,2,0 -BRF:14 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/build/Processor.js -FN:3,(anonymous_0) -FN:4,Processor -FNF:2 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,Processor -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:11,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/build/ProcessorLocal.js -FN:2,(anonymous_0) -FN:4,(anonymous_1) -FN:5,(anonymous_2) -FN:6,(anonymous_3) -FN:8,__ -FN:12,(anonymous_5) -FN:24,(anonymous_6) -FN:26,ProcessorLocal -FN:36,(anonymous_8) -FN:46,(anonymous_9) -FN:55,(anonymous_10) -FN:66,(anonymous_11) -FN:74,(anonymous_12) -FN:83,(anonymous_13) -FN:114,(anonymous_14) -FN:128,(anonymous_15) -FN:172,(anonymous_16) -FN:213,(anonymous_17) -FN:232,(anonymous_18) -FN:242,(anonymous_19) -FN:244,(anonymous_20) -FN:245,(anonymous_21) -FN:258,processLineHook -FN:268,(anonymous_23) -FNF:24 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,__ -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,ProcessorLocal -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,processLineHook -FNDA:0,(anonymous_23) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:35,0 -DA:37,0 -DA:38,0 -DA:40,0 -DA:45,0 -DA:47,0 -DA:48,0 -DA:50,0 -DA:55,0 -DA:56,0 -DA:57,0 -DA:59,0 -DA:60,0 -DA:63,0 -DA:65,0 -DA:67,0 -DA:68,0 -DA:71,0 -DA:75,0 -DA:76,0 -DA:79,0 -DA:83,0 -DA:84,0 -DA:85,0 -DA:86,0 -DA:87,0 -DA:88,0 -DA:90,0 -DA:91,0 -DA:92,0 -DA:95,0 -DA:96,0 -DA:98,0 -DA:99,0 -DA:100,0 -DA:103,0 -DA:104,0 -DA:106,0 -DA:107,0 -DA:108,0 -DA:109,0 -DA:112,0 -DA:114,0 -DA:115,0 -DA:117,0 -DA:120,0 -DA:125,0 -DA:128,0 -DA:129,0 -DA:130,0 -DA:131,0 -DA:134,0 -DA:138,0 -DA:139,0 -DA:140,0 -DA:141,0 -DA:142,0 -DA:143,0 -DA:144,0 -DA:145,0 -DA:146,0 -DA:149,0 -DA:152,0 -DA:153,0 -DA:154,0 -DA:156,0 -DA:157,0 -DA:160,0 -DA:163,0 -DA:164,0 -DA:166,0 -DA:167,0 -DA:168,0 -DA:170,0 -DA:172,0 -DA:173,0 -DA:174,0 -DA:175,0 -DA:176,0 -DA:177,0 -DA:178,0 -DA:179,0 -DA:180,0 -DA:183,0 -DA:187,0 -DA:190,0 -DA:191,0 -DA:192,0 -DA:196,0 -DA:210,0 -DA:213,0 -DA:214,0 -DA:215,0 -DA:218,0 -DA:219,0 -DA:220,0 -DA:221,0 -DA:224,0 -DA:232,0 -DA:233,0 -DA:234,0 -DA:235,0 -DA:238,0 -DA:242,0 -DA:243,0 -DA:244,0 -DA:245,0 -DA:246,0 -DA:247,0 -DA:250,0 -DA:255,0 -DA:257,0 -DA:259,0 -DA:260,0 -DA:263,0 -DA:264,0 -DA:265,0 -DA:266,0 -DA:267,0 -DA:268,0 -DA:269,0 -DA:270,0 -DA:274,0 -DA:275,0 -DA:276,0 -DA:277,0 -DA:279,0 -DA:283,0 -LF:156 -LH:0 -BRDA:2,0,0,0 -BRDA:2,0,1,0 -BRDA:2,0,2,0 -BRDA:3,1,0,0 -BRDA:3,1,1,0 -BRDA:3,1,2,0 -BRDA:3,1,3,0 -BRDA:5,2,0,0 -BRDA:5,2,1,0 -BRDA:9,3,0,0 -BRDA:9,3,1,0 -BRDA:12,4,0,0 -BRDA:12,4,1,0 -BRDA:12,4,2,0 -BRDA:13,5,0,0 -BRDA:13,5,1,0 -BRDA:13,6,0,0 -BRDA:13,6,1,0 -BRDA:27,7,0,0 -BRDA:27,7,1,0 -BRDA:27,7,2,0 -BRDA:37,8,0,0 -BRDA:37,8,1,0 -BRDA:47,9,0,0 -BRDA:47,9,1,0 -BRDA:57,10,0,0 -BRDA:57,10,1,0 -BRDA:59,11,0,0 -BRDA:59,11,1,0 -BRDA:67,12,0,0 -BRDA:67,12,1,0 -BRDA:75,13,0,0 -BRDA:75,13,1,0 -BRDA:75,14,0,0 -BRDA:75,14,1,0 -BRDA:87,15,0,0 -BRDA:87,15,1,0 -BRDA:90,16,0,0 -BRDA:90,16,1,0 -BRDA:90,17,0,0 -BRDA:90,17,1,0 -BRDA:90,17,2,0 -BRDA:95,18,0,0 -BRDA:95,18,1,0 -BRDA:95,19,0,0 -BRDA:95,19,1,0 -BRDA:99,20,0,0 -BRDA:99,20,1,0 -BRDA:106,21,0,0 -BRDA:106,21,1,0 -BRDA:108,22,0,0 -BRDA:108,22,1,0 -BRDA:115,23,0,0 -BRDA:115,23,1,0 -BRDA:115,24,0,0 -BRDA:115,24,1,0 -BRDA:129,25,0,0 -BRDA:129,25,1,0 -BRDA:130,26,0,0 -BRDA:130,26,1,0 -BRDA:143,27,0,0 -BRDA:143,27,1,0 -BRDA:153,28,0,0 -BRDA:153,28,1,0 -BRDA:156,29,0,0 -BRDA:156,29,1,0 -BRDA:163,30,0,0 -BRDA:163,30,1,0 -BRDA:163,31,0,0 -BRDA:163,31,1,0 -BRDA:166,32,0,0 -BRDA:166,32,1,0 -BRDA:166,33,0,0 -BRDA:166,33,1,0 -BRDA:174,34,0,0 -BRDA:174,34,1,0 -BRDA:177,35,0,0 -BRDA:177,35,1,0 -BRDA:178,36,0,0 -BRDA:178,36,1,0 -BRDA:179,37,0,0 -BRDA:179,37,1,0 -BRDA:179,38,0,0 -BRDA:179,38,1,0 -BRDA:190,39,0,0 -BRDA:190,39,1,0 -BRDA:191,40,0,0 -BRDA:191,40,1,0 -BRDA:214,41,0,0 -BRDA:214,41,1,0 -BRDA:220,42,0,0 -BRDA:220,42,1,0 -BRDA:233,43,0,0 -BRDA:233,43,1,0 -BRDA:234,44,0,0 -BRDA:234,44,1,0 -BRDA:246,45,0,0 -BRDA:246,45,1,0 -BRDA:259,46,0,0 -BRDA:259,46,1,0 -BRDA:263,47,0,0 -BRDA:263,47,1,0 -BRDA:267,48,0,0 -BRDA:267,48,1,0 -BRDA:267,49,0,0 -BRDA:267,49,1,0 -BRF:106 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/build/Result.js -FN:2,(anonymous_0) -FN:7,(anonymous_1) -FN:8,Result -FN:13,(anonymous_3) -FN:20,(anonymous_4) -FN:30,(anonymous_5) -FN:36,(anonymous_6) -FN:40,(anonymous_7) -FN:42,(anonymous_8) -FN:58,(anonymous_9) -FN:64,(anonymous_10) -FN:72,(anonymous_11) -FN:85,processLineByLine -FN:97,(anonymous_13) -FN:135,processRecursive -FN:141,pushDownstream -FNF:16 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,Result -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,processLineByLine -FNDA:0,(anonymous_13) -FNDA:0,processRecursive -FNDA:0,pushDownstream -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:14,0 -DA:19,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:29,0 -DA:31,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:47,0 -DA:48,0 -DA:53,0 -DA:54,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:62,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:68,0 -DA:69,0 -DA:72,0 -DA:73,0 -DA:74,0 -DA:75,0 -DA:78,0 -DA:79,0 -DA:82,0 -DA:84,0 -DA:86,0 -DA:87,0 -DA:90,0 -DA:91,0 -DA:92,0 -DA:93,0 -DA:94,0 -DA:96,0 -DA:97,0 -DA:98,0 -DA:103,0 -DA:104,0 -DA:106,0 -DA:107,0 -DA:108,0 -DA:109,0 -DA:110,0 -DA:111,0 -DA:114,0 -DA:125,0 -DA:126,0 -DA:127,0 -DA:128,0 -DA:131,0 -DA:136,0 -DA:137,0 -DA:139,0 -DA:142,0 -DA:143,0 -DA:146,0 -LF:74 -LH:0 -BRDA:2,0,0,0 -BRDA:2,0,1,0 -BRDA:2,0,2,0 -BRDA:3,1,0,0 -BRDA:3,1,1,0 -BRDA:3,2,0,0 -BRDA:3,2,1,0 -BRDA:14,3,0,0 -BRDA:14,3,1,0 -BRDA:14,3,2,0 -BRDA:21,4,0,0 -BRDA:21,4,1,0 -BRDA:22,5,0,0 -BRDA:22,5,1,0 -BRDA:41,6,0,0 -BRDA:41,6,1,0 -BRDA:43,7,0,0 -BRDA:43,7,1,0 -BRDA:59,8,0,0 -BRDA:59,8,1,0 -BRDA:65,9,0,0 -BRDA:65,9,1,0 -BRDA:65,10,0,0 -BRDA:65,10,1,0 -BRDA:68,11,0,0 -BRDA:68,11,1,0 -BRDA:68,12,0,0 -BRDA:68,12,1,0 -BRDA:73,13,0,0 -BRDA:73,13,1,0 -BRDA:74,14,0,0 -BRDA:74,14,1,0 -BRDA:74,15,0,0 -BRDA:74,15,1,0 -BRDA:78,16,0,0 -BRDA:78,16,1,0 -BRDA:78,17,0,0 -BRDA:78,17,1,0 -BRDA:86,18,0,0 -BRDA:86,18,1,0 -BRDA:90,19,0,0 -BRDA:90,19,1,0 -BRDA:90,20,0,0 -BRDA:90,20,1,0 -BRDA:96,21,0,0 -BRDA:96,21,1,0 -BRDA:96,22,0,0 -BRDA:96,22,1,0 -BRDA:103,23,0,0 -BRDA:103,23,1,0 -BRDA:110,24,0,0 -BRDA:110,24,1,0 -BRDA:125,25,0,0 -BRDA:125,25,1,0 -BRDA:136,26,0,0 -BRDA:136,26,1,0 -BRDA:142,27,0,0 -BRDA:142,27,1,0 -BRDA:142,28,0,0 -BRDA:142,28,1,0 -BRF:60 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/build/Worker.js -FN:3,(anonymous_0) -FN:4,Worker -FNF:2 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,Worker -DA:2,0 -DA:3,0 -DA:6,0 -DA:8,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/build/dataClean.js -FN:2,(anonymous_0) -FN:13,prepareData -FN:28,concatLeftChunk -FN:39,cleanUtf8Split -FNF:4 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,prepareData -FNDA:0,concatLeftChunk -FNDA:0,cleanUtf8Split -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:21,0 -DA:24,0 -DA:29,0 -DA:30,0 -DA:33,0 -DA:40,0 -DA:48,0 -DA:49,0 -DA:50,0 -DA:52,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:69,0 -LF:23 -LH:0 -BRDA:2,0,0,0 -BRDA:2,0,1,0 -BRDA:2,0,2,0 -BRDA:3,1,0,0 -BRDA:3,1,1,0 -BRDA:3,2,0,0 -BRDA:3,2,1,0 -BRDA:17,3,0,0 -BRDA:17,3,1,0 -BRDA:29,4,0,0 -BRDA:29,4,1,0 -BRDA:29,5,0,0 -BRDA:29,5,1,0 -BRDA:48,6,0,0 -BRDA:48,6,1,0 -BRDA:54,7,0,0 -BRDA:54,7,1,0 -BRF:17 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/build/fileline.js -FN:2,(anonymous_0) -FN:14,stringToLines -FNF:2 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,stringToLines -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:20,0 -LF:9 -LH:0 -BRDA:2,0,0,0 -BRDA:2,0,1,0 -BRDA:2,0,2,0 -BRDA:3,1,0,0 -BRDA:3,1,1,0 -BRDA:3,2,0,0 -BRDA:3,2,1,0 -BRDA:17,3,0,0 -BRDA:17,3,1,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/build/getEol.js -FN:4,default_1 -FNF:1 -FNH:0 -FNDA:0,default_1 -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:23,0 -DA:25,0 -LF:15 -LH:0 -BRDA:5,0,0,0 -BRDA:5,0,1,0 -BRDA:5,1,0,0 -BRDA:5,1,1,0 -BRDA:7,2,0,0 -BRDA:7,2,1,0 -BRDA:8,3,0,0 -BRDA:8,3,1,0 -BRDA:12,4,0,0 -BRDA:12,4,1,0 -BRDA:17,5,0,0 -BRDA:17,5,1,0 -BRDA:23,6,0,0 -BRDA:23,6,1,0 -BRF:14 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/build/index.js -FN:3,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/build/lineToJson.js -FN:2,(anonymous_0) -FN:9,default_1 -FN:21,processRow -FN:34,convertRowToJson -FN:78,(anonymous_4) -FN:80,getConvFunc -FN:110,setPath -FN:132,flatSetter -FN:135,jsonSetter -FN:138,checkType -FN:155,numberType -FN:162,stringType -FN:165,dynamicType -FN:183,booleanType -FN:192,jsonType -FNF:15 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,default_1 -FNDA:0,processRow -FNDA:0,convertRowToJson -FNDA:0,(anonymous_4) -FNDA:0,getConvFunc -FNDA:0,setPath -FNDA:0,flatSetter -FNDA:0,jsonSetter -FNDA:0,checkType -FNDA:0,numberType -FNDA:0,stringType -FNDA:0,dynamicType -FNDA:0,booleanType -FNDA:0,jsonType -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:17,0 -DA:19,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:31,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:59,0 -DA:60,0 -DA:61,0 -DA:63,0 -DA:64,0 -DA:68,0 -DA:69,0 -DA:72,0 -DA:75,0 -DA:81,0 -DA:82,0 -DA:85,0 -DA:86,0 -DA:87,0 -DA:89,0 -DA:90,0 -DA:92,0 -DA:93,0 -DA:94,0 -DA:95,0 -DA:96,0 -DA:99,0 -DA:102,0 -DA:103,0 -DA:106,0 -DA:111,0 -DA:112,0 -DA:113,0 -DA:116,0 -DA:117,0 -DA:118,0 -DA:121,0 -DA:125,0 -DA:129,0 -DA:133,0 -DA:136,0 -DA:139,0 -DA:140,0 -DA:142,0 -DA:143,0 -DA:145,0 -DA:146,0 -DA:148,0 -DA:149,0 -DA:152,0 -DA:156,0 -DA:157,0 -DA:158,0 -DA:160,0 -DA:163,0 -DA:166,0 -DA:167,0 -DA:168,0 -DA:170,0 -DA:171,0 -DA:173,0 -DA:174,0 -DA:176,0 -DA:177,0 -DA:180,0 -DA:184,0 -DA:185,0 -DA:186,0 -DA:189,0 -DA:193,0 -DA:194,0 -DA:197,0 -LF:102 -LH:0 -BRDA:2,0,0,0 -BRDA:2,0,1,0 -BRDA:2,0,2,0 -BRDA:3,1,0,0 -BRDA:3,1,1,0 -BRDA:3,2,0,0 -BRDA:3,2,1,0 -BRDA:13,3,0,0 -BRDA:13,3,1,0 -BRDA:22,4,0,0 -BRDA:22,4,1,0 -BRDA:22,5,0,0 -BRDA:22,5,1,0 -BRDA:22,5,2,0 -BRDA:25,6,0,0 -BRDA:25,6,1,0 -BRDA:27,7,0,0 -BRDA:27,7,1,0 -BRDA:39,8,0,0 -BRDA:39,8,1,0 -BRDA:39,9,0,0 -BRDA:39,9,1,0 -BRDA:44,10,0,0 -BRDA:44,10,1,0 -BRDA:44,11,0,0 -BRDA:44,11,1,0 -BRDA:48,12,0,0 -BRDA:48,12,1,0 -BRDA:50,13,0,0 -BRDA:50,13,1,0 -BRDA:59,14,0,0 -BRDA:59,14,1,0 -BRDA:63,15,0,0 -BRDA:63,15,1,0 -BRDA:68,16,0,0 -BRDA:68,16,1,0 -BRDA:81,17,0,0 -BRDA:81,17,1,0 -BRDA:86,18,0,0 -BRDA:86,18,1,0 -BRDA:89,19,0,0 -BRDA:89,19,1,0 -BRDA:90,20,0,0 -BRDA:90,20,1,0 -BRDA:92,21,0,0 -BRDA:92,21,1,0 -BRDA:95,22,0,0 -BRDA:95,22,1,0 -BRDA:102,23,0,0 -BRDA:102,23,1,0 -BRDA:111,24,0,0 -BRDA:111,24,1,0 -BRDA:112,25,0,0 -BRDA:112,25,1,0 -BRDA:116,26,0,0 -BRDA:116,26,1,0 -BRDA:117,27,0,0 -BRDA:117,27,1,0 -BRDA:117,28,0,0 -BRDA:117,28,1,0 -BRDA:139,29,0,0 -BRDA:139,29,1,0 -BRDA:142,30,0,0 -BRDA:142,30,1,0 -BRDA:145,31,0,0 -BRDA:145,31,1,0 -BRDA:148,32,0,0 -BRDA:148,32,1,0 -BRDA:157,33,0,0 -BRDA:157,33,1,0 -BRDA:167,34,0,0 -BRDA:167,34,1,0 -BRDA:170,35,0,0 -BRDA:170,35,1,0 -BRDA:173,36,0,0 -BRDA:173,36,1,0 -BRDA:173,37,0,0 -BRDA:173,37,1,0 -BRDA:173,37,2,0 -BRDA:173,37,3,0 -BRDA:176,38,0,0 -BRDA:176,38,1,0 -BRDA:176,39,0,0 -BRDA:176,39,1,0 -BRDA:176,39,2,0 -BRDA:176,39,3,0 -BRDA:185,40,0,0 -BRDA:185,40,1,0 -BRDA:185,41,0,0 -BRDA:185,41,1,0 -BRF:90 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/build/rowSplit.js -FN:2,(anonymous_0) -FN:9,(anonymous_1) -FN:10,RowSplit -FN:20,(anonymous_3) -FN:29,(anonymous_4) -FN:52,(anonymous_5) -FN:107,(anonymous_6) -FN:120,(anonymous_7) -FN:129,(anonymous_8) -FN:135,(anonymous_9) -FN:149,(anonymous_10) -FN:157,(anonymous_11) -FN:166,(anonymous_12) -FNF:13 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,RowSplit -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:49,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:59,0 -DA:61,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:68,0 -DA:69,0 -DA:72,0 -DA:73,0 -DA:74,0 -DA:78,0 -DA:79,0 -DA:81,0 -DA:82,0 -DA:86,0 -DA:87,0 -DA:88,0 -DA:89,0 -DA:90,0 -DA:91,0 -DA:92,0 -DA:94,0 -DA:95,0 -DA:98,0 -DA:105,0 -DA:107,0 -DA:109,0 -DA:110,0 -DA:112,0 -DA:113,0 -DA:116,0 -DA:118,0 -DA:119,0 -DA:120,0 -DA:121,0 -DA:122,0 -DA:123,0 -DA:124,0 -DA:127,0 -DA:129,0 -DA:130,0 -DA:131,0 -DA:132,0 -DA:135,0 -DA:136,0 -DA:137,0 -DA:138,0 -DA:139,0 -DA:141,0 -DA:142,0 -DA:143,0 -DA:144,0 -DA:145,0 -DA:147,0 -DA:149,0 -DA:150,0 -DA:151,0 -DA:152,0 -DA:153,0 -DA:155,0 -DA:157,0 -DA:158,0 -DA:159,0 -DA:160,0 -DA:162,0 -DA:164,0 -DA:166,0 -DA:167,0 -DA:168,0 -DA:169,0 -DA:170,0 -DA:171,0 -DA:172,0 -DA:173,0 -DA:174,0 -DA:177,0 -DA:179,0 -DA:182,0 -DA:185,0 -DA:187,0 -DA:189,0 -LF:125 -LH:0 -BRDA:2,0,0,0 -BRDA:2,0,1,0 -BRDA:2,0,2,0 -BRDA:3,1,0,0 -BRDA:3,1,1,0 -BRDA:3,2,0,0 -BRDA:3,2,1,0 -BRDA:21,3,0,0 -BRDA:21,3,1,0 -BRDA:30,4,0,0 -BRDA:30,4,1,0 -BRDA:36,5,0,0 -BRDA:36,5,1,0 -BRDA:36,6,0,0 -BRDA:36,6,1,0 -BRDA:39,7,0,0 -BRDA:39,7,1,0 -BRDA:39,8,0,0 -BRDA:39,8,1,0 -BRDA:45,9,0,0 -BRDA:45,9,1,0 -BRDA:58,10,0,0 -BRDA:58,10,1,0 -BRDA:58,11,0,0 -BRDA:58,11,1,0 -BRDA:62,12,0,0 -BRDA:62,12,1,0 -BRDA:63,13,0,0 -BRDA:63,13,1,0 -BRDA:65,14,0,0 -BRDA:65,14,1,0 -BRDA:78,15,0,0 -BRDA:78,15,1,0 -BRDA:86,16,0,0 -BRDA:86,16,1,0 -BRDA:91,17,0,0 -BRDA:91,17,1,0 -BRDA:109,18,0,0 -BRDA:109,18,1,0 -BRDA:112,19,0,0 -BRDA:112,19,1,0 -BRDA:122,20,0,0 -BRDA:122,20,1,0 -BRDA:132,21,0,0 -BRDA:132,21,1,0 -BRDA:132,21,2,0 -BRDA:132,21,3,0 -BRDA:132,21,4,0 -BRDA:138,22,0,0 -BRDA:138,22,1,0 -BRDA:143,23,0,0 -BRDA:143,23,1,0 -BRDA:159,24,0,0 -BRDA:159,24,1,0 -BRDA:172,25,0,0 -BRDA:172,25,1,0 -BRDA:172,26,0,0 -BRDA:172,26,1,0 -BRDA:173,27,0,0 -BRDA:173,27,1,0 -BRDA:182,28,0,0 -BRDA:182,28,1,0 -BRF:62 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/build/test.js -FNF:0 -FNH:0 -DA:2,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/build/util.js -FN:3,bufFromString -FN:12,filterArray -FNF:2 -FNH:0 -FNDA:0,bufFromString -FNDA:0,filterArray -DA:2,0 -DA:4,0 -DA:5,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:19,0 -DA:21,0 -LF:12 -LH:0 -BRDA:5,0,0,0 -BRDA:5,0,1,0 -BRDA:15,1,0,0 -BRDA:15,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/dist/csvtojson.js -FN:1,e -FN:1,s -FN:1,(anonymous_2) -FN:1,(anonymous_3) -FN:7,(anonymous_4) -FN:9,(anonymous_5) -FN:12,CSVError -FN:22,(anonymous_7) -FN:26,(anonymous_8) -FN:30,(anonymous_9) -FN:34,(anonymous_10) -FN:38,(anonymous_11) -FN:39,(anonymous_12) -FN:54,Converter -FN:87,(anonymous_14) -FN:114,emitDone -FN:115,(anonymous_16) -FN:118,(anonymous_17) -FN:125,bufFromString -FN:128,(anonymous_19) -FN:143,(anonymous_20) -FN:163,(anonymous_21) -FN:172,(anonymous_22) -FN:184,(anonymous_23) -FN:188,(anonymous_24) -FN:219,(anonymous_25) -FN:233,(anonymous_26) -FN:242,(anonymous_27) -FN:247,(anonymous_28) -FN:255,(anonymous_29) -FN:260,(anonymous_30) -FN:289,(anonymous_31) -FN:345,configIgnoreIncludeColumns -FN:358,(anonymous_33) -FN:377,(anonymous_34) -FN:388,(anonymous_35) -FN:439,(anonymous_36) -FN:444,(anonymous_37) -FN:448,(anonymous_38) -FN:450,(anonymous_39) -FN:465,(anonymous_40) -FN:474,(anonymous_41) -FN:482,(anonymous_42) -FN:490,(anonymous_43) -FN:511,(anonymous_44) -FN:518,(anonymous_45) -FN:523,(anonymous_46) -FN:534,(anonymous_47) -FN:542,(anonymous_48) -FN:547,(anonymous_49) -FN:552,(anonymous_50) -FN:555,(anonymous_51) -FN:561,(anonymous_52) -FN:563,(anonymous_53) -FN:566,(anonymous_54) -FN:572,(anonymous_55) -FN:584,(anonymous_56) -FN:593,(anonymous_57) -FN:609,(anonymous_58) -FN:610,(anonymous_59) -FN:612,(anonymous_60) -FN:659,(anonymous_61) -FN:667,getEnv -FN:676,(anonymous_63) -FN:685,(anonymous_64) -FN:690,parser_array -FN:699,(anonymous_66) -FN:704,parser_flat -FN:711,(anonymous_68) -FN:715,processHead -FN:747,parser_json -FN:783,(anonymous_71) -FN:788,parser_jsonarray -FN:807,(anonymous_73) -FN:812,parser_omit -FN:815,(anonymous_75) -FN:823,(anonymous_76) -FN:832,(anonymous_77) -FN:840,(anonymous_78) -FN:847,(anonymous_79) -FN:848,filterRow -FN:867,(anonymous_81) -FN:870,getDelimiter -FN:881,(anonymous_83) -FN:891,(anonymous_84) -FN:894,(anonymous_85) -FN:913,(anonymous_86) -FN:917,constructor -FN:921,(anonymous_88) -FN:932,(anonymous_89) -FN:947,justReturnRows -FN:960,processRows -FN:971,processRow -FN:992,convertRowToJson -FN:1042,(anonymous_94) -FN:1044,getConvFunc -FN:1067,setPath -FN:1077,getFlag -FN:1089,getTitle -FN:1099,checkType -FN:1113,numberType -FN:1121,stringType -FN:1125,dynamicType -FN:1141,booleanType -FN:1150,jsonType -FN:1158,(anonymous_105) -FN:1161,Parser -FN:1178,(anonymous_107) -FN:1211,(anonymous_108) -FN:1215,(anonymous_109) -FN:1219,(anonymous_110) -FN:1223,(anonymous_111) -FN:1236,(anonymous_112) -FN:1240,(anonymous_113) -FN:1261,(anonymous_114) -FN:1270,(anonymous_115) -FN:1276,(anonymous_116) -FN:1282,registerParser -FN:1288,getParser -FN:1290,getParserByName -FN:1292,(anonymous_120) -FN:1304,(anonymous_121) -FN:1320,addParser -FN:1325,addSafeParser -FN:1329,initParsers -FN:1331,(anonymous_125) -FN:1337,(anonymous_126) -FN:1347,(anonymous_127) -FN:1357,rowSplit -FN:1436,isQuoteOpen -FN:1443,isQuoteClose -FN:1455,twoDoubleQuote -FN:1465,_escapeQuote -FN:1478,(anonymous_133) -FN:1479,(anonymous_134) -FN:1486,workerMgr -FN:1492,(anonymous_136) -FN:1499,initWorker -FN:1508,isRunning -FN:1511,destroyWorker -FN:1512,(anonymous_140) -FN:1517,sendWorker -FN:1521,(anonymous_142) -FN:1542,setParams -FN:1543,(anonymous_144) -FN:1550,Worker -FN:1562,(anonymous_146) -FN:1573,(anonymous_147) -FN:1583,(anonymous_148) -FN:1601,(anonymous_149) -FN:1617,(anonymous_150) -FN:1623,(anonymous_151) -FN:1627,(anonymous_152) -FN:1633,(anonymous_153) -FN:1641,(anonymous_154) -FN:1643,(anonymous_155) -FN:1644,(anonymous_156) -FN:1651,_initConverter -FN:1655,(anonymous_158) -FN:1666,(anonymous_159) -FN:1669,(anonymous_160) -FN:1675,convertFile -FN:1680,convertString -FN:1688,(anonymous_163) -FN:1691,(anonymous_164) -FN:1693,(anonymous_165) -FN:1696,startWebServer -FN:1703,(anonymous_167) -FN:1718,(anonymous_168) -FN:1719,(anonymous_169) -FN:1724,ctor -FN:1736,FirstChunk -FN:1748,(anonymous_172) -FN:1778,(anonymous_173) -FN:1791,(anonymous_174) -FN:1808,(anonymous_175) -FN:1815,(anonymous_176) -FN:1817,(anonymous_177) -FN:1819,(anonymous_178) -FN:1820,(anonymous_179) -FN:1873,typedArraySupport -FN:1874,Bar -FN:1877,(anonymous_182) -FN:1888,kMaxLength -FN:1906,Buffer -FN:1932,fromNumber -FN:1942,fromString -FN:1953,fromObject -FN:1976,fromBuffer -FN:1983,fromArray -FN:1993,fromTypedArray -FN:2005,fromArrayBuffer -FN:2017,fromArrayLike -FN:2028,fromJsonObject -FN:2053,allocate -FN:2070,checked -FN:2080,SlowBuffer -FN:2088,isBuffer -FN:2092,compare -FN:2120,isEncoding -FN:2139,concat -FN:2164,byteLength -FN:2201,slowToString -FN:2244,toString -FN:2251,equals -FN:2257,inspect -FN:2267,compare -FN:2273,indexOf -FN:2298,arrayIndexOf -FN:2315,get -FN:2321,set -FN:2326,hexWrite -FN:2353,utf8Write -FN:2357,asciiWrite -FN:2361,binaryWrite -FN:2365,base64Write -FN:2369,ucs2Write -FN:2373,write -FN:2445,toJSON -FN:2452,base64Slice -FN:2460,utf8Slice -FN:2538,decodeCodePointsArray -FN:2556,asciiSlice -FN:2566,binarySlice -FN:2576,hexSlice -FN:2589,utf16leSlice -FN:2598,slice -FN:2638,checkOffset -FN:2643,readUIntLE -FN:2658,readUIntBE -FN:2674,readUInt8 -FN:2679,readUInt16LE -FN:2684,readUInt16BE -FN:2689,readUInt32LE -FN:2698,readUInt32BE -FN:2707,readIntLE -FN:2725,readIntBE -FN:2743,readInt8 -FN:2749,readInt16LE -FN:2755,readInt16BE -FN:2761,readInt32LE -FN:2770,readInt32BE -FN:2779,readFloatLE -FN:2784,readFloatBE -FN:2789,readDoubleLE -FN:2794,readDoubleBE -FN:2799,checkInt -FN:2805,writeUIntLE -FN:2821,writeUIntBE -FN:2837,writeUInt8 -FN:2846,objectWriteUInt16 -FN:2854,writeUInt16LE -FN:2867,writeUInt16BE -FN:2880,objectWriteUInt32 -FN:2887,writeUInt32LE -FN:2902,writeUInt32BE -FN:2917,writeIntLE -FN:2937,writeIntBE -FN:2957,writeInt8 -FN:2967,writeInt16LE -FN:2980,writeInt16BE -FN:2993,writeInt32LE -FN:3008,writeInt32BE -FN:3024,checkIEEE754 -FN:3030,writeFloat -FN:3038,writeFloatLE -FN:3042,writeFloatBE -FN:3046,writeDouble -FN:3054,writeDoubleLE -FN:3058,writeDoubleBE -FN:3063,copy -FN:3108,fill -FN:3142,toArrayBuffer -FN:3166,_augment -FN:3231,base64clean -FN:3243,stringtrim -FN:3248,toHex -FN:3253,utf8ToBytes -FN:3333,asciiToBytes -FN:3342,utf16leToBytes -FN:3358,base64ToBytes -FN:3362,blitBuffer -FN:3371,(anonymous_282) -FN:3374,(anonymous_283) -FN:3389,decode -FN:3407,b64ToByteArray -FN:3430,push -FN:3453,uint8ToBase64 -FN:3459,encode -FN:3463,tripletToBase64 -FN:3497,(anonymous_290) -FN:3498,(anonymous_291) -FN:3531,(anonymous_292) -FN:3583,(anonymous_293) -FN:3586,(anonymous_294) -FN:3590,(anonymous_295) -FN:3612,EventEmitter -FN:3630,(anonymous_297) -FN:3637,(anonymous_298) -FN:3695,(anonymous_299) -FN:3748,(anonymous_300) -FN:3754,g -FN:3770,(anonymous_302) -FN:3815,(anonymous_303) -FN:3855,(anonymous_304) -FN:3866,(anonymous_305) -FN:3877,isFunction -FN:3881,isNumber -FN:3885,isObject -FN:3889,isUndefined -FN:3893,(anonymous_310) -FN:3896,inherits -FN:3909,inherits -FN:3911,(anonymous_313) -FN:3918,(anonymous_314) -FN:3928,(anonymous_315) -FN:3937,(anonymous_316) -FN:3938,(anonymous_317) -FN:3942,(anonymous_318) -FN:3943,(anonymous_319) -FN:3945,(anonymous_320) -FN:3952,(anonymous_321) -FN:3954,(anonymous_322) -FN:3956,(anonymous_323) -FN:3960,(anonymous_324) -FN:3964,(anonymous_325) -FN:3966,(anonymous_326) -FN:3968,(anonymous_327) -FN:3977,(anonymous_328) -FN:3979,(anonymous_329) -FN:3981,(anonymous_330) -FN:3983,(anonymous_331) -FN:3989,(anonymous_332) -FN:3998,cleanUpNextTick -FN:4010,drainQueue -FN:4034,(anonymous_335) -FN:4048,Item -FN:4052,(anonymous_337) -FN:4062,noop -FN:4072,(anonymous_339) -FN:4076,(anonymous_340) -FN:4077,(anonymous_341) -FN:4080,(anonymous_342) -FN:4082,(anonymous_343) -FN:4083,(anonymous_344) -FN:4085,(anonymous_345) -FN:4149,error -FN:4161,map -FN:4180,mapDomain -FN:4209,ucs2decode -FN:4243,ucs2encode -FN:4244,(anonymous_351) -FN:4265,basicToDigit -FN:4289,digitToBasic -FN:4300,adapt -FN:4317,decode -FN:4418,encode -FN:4536,toUnicode -FN:4537,(anonymous_358) -FN:4555,toASCII -FN:4556,(anonymous_360) -FN:4598,(anonymous_361) -FN:4619,(anonymous_362) -FN:4646,hasOwnProperty -FN:4650,(anonymous_364) -FN:4701,(anonymous_365) -FN:4705,(anonymous_366) -FN:4729,(anonymous_367) -FN:4745,(anonymous_368) -FN:4753,(anonymous_369) -FN:4756,(anonymous_370) -FN:4771,(anonymous_371) -FN:4775,map -FN:4784,(anonymous_373) -FN:4792,(anonymous_374) -FN:4798,(anonymous_375) -FN:4801,(anonymous_376) -FN:4810,(anonymous_377) -FN:4843,Duplex -FN:4864,onend -FN:4875,onEndNT -FN:4879,forEach -FN:4885,(anonymous_382) -FN:4903,PassThrough -FN:4910,(anonymous_384) -FN:4914,(anonymous_385) -FN:4915,(anonymous_386) -FN:4939,(anonymous_387) -FN:4948,(anonymous_388) -FN:4971,(anonymous_389) -FN:4980,ReadableState -FN:5048,Readable -FN:5069,(anonymous_392) -FN:5084,(anonymous_393) -FN:5089,(anonymous_394) -FN:5093,readableAddChunk -FN:5147,needMoreData -FN:5155,(anonymous_397) -FN:5165,computeNewHighWaterMark -FN:5181,howMuchToRead -FN:5220,(anonymous_400) -FN:5335,chunkInvalid -FN:5348,onEofChunk -FN:5366,emitReadable -FN:5379,emitReadable_ -FN:5392,maybeReadMore -FN:5399,maybeReadMore_ -FN:5418,(anonymous_407) -FN:5422,(anonymous_408) -FN:5451,onunpipe -FN:5458,onend -FN:5471,cleanup -FN:5496,ondata -FN:5516,onerror -FN:5534,onclose -FN:5539,onfinish -FN:5546,unpipe -FN:5563,pipeOnDrain -FN:5564,(anonymous_418) -FN:5577,(anonymous_419) -FN:5634,(anonymous_420) -FN:5661,nReadingNextTick -FN:5668,(anonymous_422) -FN:5678,resume -FN:5685,resume_ -FN:5698,(anonymous_425) -FN:5708,flow -FN:5721,(anonymous_427) -FN:5726,(anonymous_428) -FN:5737,(anonymous_429) -FN:5759,(anonymous_430) -FN:5759,(anonymous_431) -FN:5767,(anonymous_432) -FN:5773,(anonymous_433) -FN:5790,fromList -FN:5856,endReadable -FN:5870,endReadableNT -FN:5879,forEach -FN:5885,indexOf -FN:5893,(anonymous_439) -FN:5950,TransformState -FN:5951,(anonymous_441) -FN:5961,afterTransform -FN:5987,Transform -FN:6014,(anonymous_444) -FN:6016,(anonymous_445) -FN:6024,(anonymous_446) -FN:6039,(anonymous_447) -FN:6043,(anonymous_448) -FN:6060,(anonymous_449) -FN:6074,done -FN:6092,(anonymous_451) -FN:6129,(anonymous_452) -FN:6141,nop -FN:6143,WriteReq -FN:6151,WritableState -FN:6215,(anonymous_456) -FN:6240,writableStateGetBuffer -FN:6250,(anonymous_458) -FN:6252,(anonymous_459) -FN:6261,Writable -FN:6286,(anonymous_461) -FN:6291,writeAfterEnd -FN:6303,validChunk -FN:6319,(anonymous_464) -FN:6346,(anonymous_465) -FN:6352,(anonymous_466) -FN:6367,setDefaultEncoding -FN:6378,decodeChunk -FN:6390,writeOrBuffer -FN:6419,doWrite -FN:6431,onwriteError -FN:6442,onwriteStateUpdate -FN:6449,onwrite -FN:6477,afterWrite -FN:6488,onwriteDrain -FN:6497,clearBuffer -FN:6515,(anonymous_477) -FN:6549,(anonymous_478) -FN:6555,(anonymous_479) -FN:6582,needFinish -FN:6590,prefinish -FN:6597,finishMaybe -FN:6611,endWritable -FN:6623,(anonymous_484) -FN:6624,(anonymous_485) -FN:6649,isArray -FN:6657,isBoolean -FN:6662,isNull -FN:6667,isNullOrUndefined -FN:6672,isNumber -FN:6677,isString -FN:6682,isSymbol -FN:6687,isUndefined -FN:6692,isRegExp -FN:6697,isObject -FN:6702,isDate -FN:6707,isError -FN:6712,isFunction -FN:6717,isPrimitive -FN:6729,objectToString -FN:6734,(anonymous_501) -FN:6735,(anonymous_502) -FN:6746,nextTick -FN:6752,afterTick -FN:6758,(anonymous_505) -FN:6759,(anonymous_506) -FN:6785,deprecate -FN:6791,deprecated -FN:6816,config -FN:6829,(anonymous_510) -FN:6832,(anonymous_511) -FN:6833,(anonymous_512) -FN:6846,(anonymous_513) -FN:6849,(anonymous_514) -FN:6852,(anonymous_515) -FN:6894,Stream -FN:6898,(anonymous_517) -FN:6901,ondata -FN:6911,ondrain -FN:6927,onend -FN:6935,onclose -FN:6943,onerror -FN:6954,cleanup -FN:6981,(anonymous_524) -FN:6989,(anonymous_525) -FN:7017,get -FN:7023,(anonymous_527) -FN:7056,(anonymous_528) -FN:7057,(anonymous_529) -FN:7071,checkTypeSupport -FN:7093,isFunction -FN:7100,(anonymous_532) -FN:7101,(anonymous_533) -FN:7114,decideMode -FN:7130,(anonymous_535) -FN:7139,(anonymous_536) -FN:7159,(anonymous_537) -FN:7166,(anonymous_538) -FN:7181,(anonymous_539) -FN:7186,(anonymous_540) -FN:7191,(anonymous_541) -FN:7202,(anonymous_542) -FN:7214,(anonymous_543) -FN:7224,(anonymous_544) -FN:7227,(anonymous_545) -FN:7235,(anonymous_546) -FN:7251,(anonymous_547) -FN:7256,(anonymous_548) -FN:7267,(anonymous_549) -FN:7272,(anonymous_550) -FN:7281,(anonymous_551) -FN:7293,statusValid -FN:7301,(anonymous_553) -FN:7313,(anonymous_554) -FN:7323,(anonymous_555) -FN:7330,(anonymous_556) -FN:7341,(anonymous_557) -FN:7351,(anonymous_558) -FN:7352,(anonymous_559) -FN:7353,(anonymous_560) -FN:7354,(anonymous_561) -FN:7382,(anonymous_562) -FN:7383,(anonymous_563) -FN:7397,(anonymous_564) -FN:7408,(anonymous_565) -FN:7410,(anonymous_566) -FN:7429,read -FN:7430,(anonymous_568) -FN:7450,(anonymous_569) -FN:7479,(anonymous_570) -FN:7481,(anonymous_571) -FN:7538,(anonymous_572) -FN:7544,(anonymous_573) -FN:7559,(anonymous_574) -FN:7620,(anonymous_575) -FN:7625,forEach -FN:7644,(anonymous_577) -FN:7648,(anonymous_578) -FN:7655,(anonymous_579) -FN:7664,(anonymous_580) -FN:7674,(anonymous_581) -FN:7689,(anonymous_582) -FN:7707,(anonymous_583) -FN:7719,keys -FN:7761,shimObjectKeys -FN:7763,(anonymous_586) -FN:7769,keys -FN:7785,(anonymous_588) -FN:7790,isArguments -FN:7804,(anonymous_590) -FN:7829,(anonymous_591) -FN:7837,assertEncoding -FN:7851,(anonymous_593) -FN:7894,(anonymous_594) -FN:7966,(anonymous_595) -FN:7998,(anonymous_596) -FN:8013,passThroughWrite -FN:8017,utf16DetectIncompleteChar -FN:8022,base64DetectIncompleteChar -FN:8027,(anonymous_600) -FN:8058,Url -FN:8123,urlParse -FN:8131,(anonymous_603) -FN:8365,urlFormat -FN:8375,(anonymous_605) -FN:8423,(anonymous_606) -FN:8431,urlResolve -FN:8435,(anonymous_608) -FN:8439,urlResolveObject -FN:8444,(anonymous_610) -FN:8452,(anonymous_611) -FN:8469,(anonymous_612) -FN:8494,(anonymous_613) -FN:8708,(anonymous_614) -FN:8721,isString -FN:8725,isObject -FN:8729,isNull -FN:8732,isNullOrUndefined -FN:8736,(anonymous_619) -FN:8737,isBuffer -FN:8743,(anonymous_621) -FN:8744,(anonymous_622) -FN:8767,(anonymous_623) -FN:8779,(anonymous_624) -FN:8809,(anonymous_625) -FN:8812,(anonymous_626) -FN:8822,deprecated -FN:8842,(anonymous_628) -FN:8849,(anonymous_629) -FN:8854,(anonymous_630) -FN:8869,inspect -FN:8927,stylizeWithColor -FN:8939,stylizeNoColor -FN:8944,arrayToHash -FN:8947,(anonymous_635) -FN:8955,formatValue -FN:9057,(anonymous_637) -FN:9068,formatPrimitive -FN:9087,formatError -FN:9092,formatArray -FN:9102,(anonymous_641) -FN:9112,formatProperty -FN:9138,(anonymous_643) -FN:9142,(anonymous_644) -FN:9171,reduceToSingleString -FN:9173,(anonymous_646) -FN:9194,isArray -FN:9199,isBoolean -FN:9204,isNull -FN:9209,isNullOrUndefined -FN:9214,isNumber -FN:9219,isString -FN:9224,isSymbol -FN:9229,isUndefined -FN:9234,isRegExp -FN:9239,isObject -FN:9244,isDate -FN:9249,isError -FN:9255,isFunction -FN:9260,isPrimitive -FN:9272,objectToString -FN:9277,pad -FN:9286,timestamp -FN:9296,(anonymous_664) -FN:9316,(anonymous_665) -FN:9328,hasOwnProperty -FN:9333,(anonymous_667) -FN:9338,extend -FN:9354,(anonymous_669) -FN:9356,(anonymous_670) -FN:9432,(anonymous_671) -FN:9446,Hash -FN:9466,(anonymous_673) -FN:9480,ListCache -FN:9500,(anonymous_675) -FN:9509,(anonymous_676) -FN:9523,MapCache -FN:9543,(anonymous_678) -FN:9551,(anonymous_679) -FN:9561,arrayMap -FN:9574,(anonymous_681) -FN:9594,assignValue -FN:9604,(anonymous_683) -FN:9615,assocIndexOf -FN:9627,(anonymous_685) -FN:9639,baseAssignValue -FN:9654,(anonymous_687) -FN:9673,baseGetTag -FN:9684,(anonymous_689) -FN:9723,baseIsNative -FN:9733,(anonymous_691) -FN:9750,baseSet -FN:9782,(anonymous_693) -FN:9803,baseToString -FN:9821,(anonymous_695) -FN:9835,castPath -FN:9844,(anonymous_697) -FN:9852,(anonymous_698) -FN:9855,(anonymous_699) -FN:9865,(anonymous_700) -FN:9866,(anonymous_701) -FN:9873,(anonymous_702) -FN:9884,getMapData -FN:9893,(anonymous_704) -FN:9905,getNative -FN:9912,(anonymous_706) -FN:9938,getRawTag -FN:9960,(anonymous_708) -FN:9969,getValue -FN:9975,(anonymous_710) -FN:9985,hashClear -FN:9992,(anonymous_712) -FN:10003,hashDelete -FN:10011,(anonymous_714) -FN:10032,hashGet -FN:10043,(anonymous_716) -FN:10061,hashHas -FN:10068,(anonymous_718) -FN:10084,hashSet -FN:10093,(anonymous_720) -FN:10108,isIndex -FN:10117,(anonymous_722) -FN:10133,isKey -FN:10148,(anonymous_724) -FN:10156,isKeyable -FN:10165,(anonymous_726) -FN:10169,(anonymous_727) -FN:10181,isMasked -FN:10187,(anonymous_729) -FN:10195,listCacheClear -FN:10202,(anonymous_731) -FN:10220,listCacheDelete -FN:10239,(anonymous_733) -FN:10251,listCacheGet -FN:10260,(anonymous_735) -FN:10272,listCacheHas -FN:10278,(anonymous_737) -FN:10291,listCacheSet -FN:10306,(anonymous_739) -FN:10318,mapCacheClear -FN:10329,(anonymous_741) -FN:10341,mapCacheDelete -FN:10349,(anonymous_743) -FN:10361,mapCacheGet -FN:10367,(anonymous_745) -FN:10379,mapCacheHas -FN:10385,(anonymous_747) -FN:10398,mapCacheSet -FN:10409,(anonymous_749) -FN:10423,memoizeCapped -FN:10424,(anonymous_751) -FN:10437,(anonymous_752) -FN:10445,(anonymous_753) -FN:10463,objectToString -FN:10469,(anonymous_755) -FN:10480,(anonymous_756) -FN:10497,(anonymous_757) -FN:10502,(anonymous_758) -FN:10510,(anonymous_759) -FN:10523,toKey -FN:10533,(anonymous_761) -FN:10547,toSource -FN:10561,(anonymous_763) -FN:10594,eq -FN:10600,(anonymous_765) -FN:10628,(anonymous_766) -FN:10655,isFunction -FN:10667,(anonymous_768) -FN:10693,isObject -FN:10700,(anonymous_770) -FN:10725,isObjectLike -FN:10731,(anonymous_772) -FN:10755,isSymbol -FN:10762,(anonymous_774) -FN:10763,(anonymous_775) -FN:10772,(anonymous_776) -FN:11201,(anonymous_777) -FN:11225,addMapEntry -FN:11239,addSetEntry -FN:11255,apply -FN:11275,arrayAggregator -FN:11295,arrayEach -FN:11316,arrayEachRight -FN:11337,arrayEvery -FN:11358,arrayFilter -FN:11382,arrayIncludes -FN:11396,arrayIncludesWith -FN:11417,arrayMap -FN:11436,arrayPush -FN:11459,arrayReduce -FN:11484,arrayReduceRight -FN:11505,arraySome -FN:11533,asciiToArray -FN:11544,asciiWords -FN:11559,baseFindKey -FN:11561,(anonymous_796) -FN:11581,baseFindIndex -FN:11602,baseIndexOf -FN:11618,baseIndexOfWith -FN:11637,baseIsNaN -FN:11650,baseMean -FN:11662,baseProperty -FN:11663,(anonymous_803) -FN:11675,basePropertyOf -FN:11676,(anonymous_805) -FN:11694,baseReduce -FN:11695,(anonymous_807) -FN:11713,baseSortBy -FN:11732,baseSum -FN:11755,baseTimes -FN:11774,baseToPairs -FN:11775,(anonymous_812) -FN:11787,baseUnary -FN:11788,(anonymous_814) -FN:11803,baseValues -FN:11804,(anonymous_816) -FN:11817,cacheHas -FN:11830,charsStartIndex -FN:11847,charsEndIndex -FN:11862,countHolders -FN:11900,escapeStringChar -FN:11912,getValue -FN:11923,hasUnicode -FN:11934,hasUnicodeWord -FN:11945,iteratorToArray -FN:11962,mapToArray -FN:11966,(anonymous_827) -FN:11980,overArg -FN:11981,(anonymous_829) -FN:11995,replaceHolders -FN:12018,setToArray -FN:12022,(anonymous_832) -FN:12035,setToPairs -FN:12039,(anonymous_834) -FN:12055,strictIndexOf -FN:12077,strictLastIndexOf -FN:12094,stringSize -FN:12107,stringToArray -FN:12129,unicodeSize -FN:12144,unicodeToArray -FN:12155,unicodeWords -FN:12190,runInContext -FN:12222,(anonymous_843) -FN:12259,(anonymous_844) -FN:12432,lodash -FN:12452,(anonymous_846) -FN:12453,object -FN:12454,(anonymous_848) -FN:12473,baseLodash -FN:12484,LodashWrapper -FN:12569,LazyWrapper -FN:12587,lazyClone -FN:12606,lazyReverse -FN:12626,lazyValue -FN:12688,Hash -FN:12706,hashClear -FN:12721,hashDelete -FN:12736,hashGet -FN:12754,hashHas -FN:12769,hashSet -FN:12792,ListCache -FN:12810,listCacheClear -FN:12824,listCacheDelete -FN:12850,listCacheGet -FN:12866,listCacheHas -FN:12880,listCacheSet -FN:12909,MapCache -FN:12927,mapCacheClear -FN:12945,mapCacheDelete -FN:12960,mapCacheGet -FN:12973,mapCacheHas -FN:12987,mapCacheSet -FN:13013,SetCache -FN:13033,setCacheAdd -FN:13047,setCacheHas -FN:13064,Stack -FN:13076,stackClear -FN:13090,stackDelete -FN:13107,stackGet -FN:13120,stackHas -FN:13134,stackSet -FN:13167,arrayLikeKeys -FN:13201,arraySample -FN:13214,arraySampleSize -FN:13225,arrayShuffle -FN:13238,assignMergeValue -FN:13255,assignValue -FN:13271,assocIndexOf -FN:13292,baseAggregator -FN:13293,(anonymous_890) -FN:13308,baseAssign -FN:13321,baseAssignIn -FN:13334,baseAssignValue -FN:13355,baseAt -FN:13376,baseClamp -FN:13404,baseClone -FN:13459,(anonymous_897) -FN:13477,baseConforms -FN:13479,(anonymous_899) -FN:13492,baseConformsTo -FN:13520,baseDelay -FN:13524,(anonymous_902) -FN:13538,baseDifference -FN:13612,baseEvery -FN:13614,(anonymous_905) -FN:13631,baseExtremum -FN:13660,baseFill -FN:13686,baseFilter -FN:13688,(anonymous_909) -FN:13707,baseFlatten -FN:13763,baseForOwn -FN:13775,baseForOwnRight -FN:13788,baseFunctions -FN:13789,(anonymous_914) -FN:13802,baseGet -FN:13825,baseGetAllKeys -FN:13837,baseGetTag -FN:13855,baseGt -FN:13867,baseHas -FN:13879,baseHasIn -FN:13892,baseInRange -FN:13906,baseIntersection -FN:13970,baseInverter -FN:13971,(anonymous_924) -FN:13987,baseInvoke -FN:14001,baseIsArguments -FN:14012,baseIsArrayBuffer -FN:14023,baseIsDate -FN:14041,baseIsEqual -FN:14065,baseIsEqualDeep -FN:14117,baseIsMap -FN:14131,baseIsMatch -FN:14183,baseIsNative -FN:14198,baseIsRegExp -FN:14209,baseIsSet -FN:14220,baseIsTypedArray -FN:14232,baseIteratee -FN:14256,baseKeys -FN:14276,baseKeysIn -FN:14300,baseLt -FN:14312,baseMap -FN:14316,(anonymous_942) -FN:14329,baseMatches -FN:14334,(anonymous_944) -FN:14347,baseMatchesProperty -FN:14351,(anonymous_946) -FN:14370,baseMerge -FN:14374,(anonymous_948) -FN:14407,baseMergeDeep -FN:14477,baseNth -FN:14495,baseOrderBy -FN:14499,(anonymous_952) -FN:14500,(anonymous_953) -FN:14506,(anonymous_954) -FN:14520,basePick -FN:14521,(anonymous_956) -FN:14535,basePickBy -FN:14558,basePropertyDeep -FN:14559,(anonymous_959) -FN:14575,basePullAll -FN:14611,basePullAt -FN:14638,baseRandom -FN:14653,baseRange -FN:14673,baseRepeat -FN:14701,baseRest -FN:14712,baseSample -FN:14724,baseSampleSize -FN:14739,baseSet -FN:14777,(anonymous_969) -FN:14790,(anonymous_970) -FN:14806,baseShuffle -FN:14819,baseSlice -FN:14849,baseSome -FN:14852,(anonymous_974) -FN:14871,baseSortedIndex -FN:14905,baseSortedIndexBy -FN:14954,baseSortedUniq -FN:14980,baseToNumber -FN:14998,baseToString -FN:15023,baseUniq -FN:15083,baseUnset -FN:15099,baseUpdate -FN:15114,baseWhile -FN:15136,baseWrapperValue -FN:15141,(anonymous_985) -FN:15156,baseXor -FN:15186,baseZipObject -FN:15206,castArrayLikeObject -FN:15217,castFunction -FN:15229,castPath -FN:15256,castSlice -FN:15268,(anonymous_992) -FN:15280,cloneBuffer -FN:15298,cloneArrayBuffer -FN:15312,cloneDataView -FN:15326,cloneMap -FN:15338,cloneRegExp -FN:15353,cloneSet -FN:15365,cloneSymbol -FN:15377,cloneTypedArray -FN:15390,compareAscending -FN:15434,compareMultiple -FN:15472,composeArgs -FN:15507,composeArgsRight -FN:15541,copyArray -FN:15562,copyObject -FN:15596,copySymbols -FN:15608,copySymbolsIn -FN:15620,createAggregator -FN:15621,(anonymous_1010) -FN:15636,createAssigner -FN:15637,(anonymous_1012) -FN:15670,createBaseEach -FN:15671,(anonymous_1014) -FN:15698,createBaseFor -FN:15699,(anonymous_1016) -FN:15725,createBind -FN:15729,wrapper -FN:15743,createCaseFirst -FN:15744,(anonymous_1020) -FN:15770,createCompounder -FN:15771,(anonymous_1022) -FN:15784,createCtor -FN:15785,(anonymous_1024) -FN:15818,createCurry -FN:15821,wrapper -FN:15853,createFind -FN:15854,(anonymous_1028) -FN:15859,(anonymous_1029) -FN:15873,createFlow -FN:15874,(anonymous_1031) -FN:15909,(anonymous_1032) -FN:15946,createHybrid -FN:15954,wrapper -FN:16008,createInverter -FN:16009,(anonymous_1036) -FN:16022,createMathOperation -FN:16023,(anonymous_1038) -FN:16055,createOver -FN:16056,(anonymous_1040) -FN:16058,(anonymous_1041) -FN:16060,(anonymous_1042) -FN:16076,createPadding -FN:16101,createPartial -FN:16105,wrapper -FN:16131,createRange -FN:16132,(anonymous_1047) -FN:16156,createRelationalOperation -FN:16157,(anonymous_1049) -FN:16183,createRecurry -FN:16216,createRound -FN:16218,(anonymous_1052) -FN:16241,(anonymous_1053) -FN:16252,createToPairs -FN:16253,(anonymous_1055) -FN:16290,createWrap -FN:16357,customDefaultsAssignIn -FN:16379,customDefaultsMerge -FN:16398,customOmitClone -FN:16415,equalArrays -FN:16454,(anonymous_1061) -FN:16493,equalByTag -FN:16571,equalObjects -FN:16642,flatRest -FN:16653,getAllKeys -FN:16665,getAllKeysIn -FN:16676,(anonymous_1067) -FN:16687,getFuncName -FN:16709,getHolder -FN:16725,getIteratee -FN:16739,getMapData -FN:16753,getMatchData -FN:16774,getNative -FN:16786,getRawTag -FN:16813,(anonymous_1075) -FN:16818,(anonymous_1076) -FN:16830,(anonymous_1077) -FN:16854,(anonymous_1078) -FN:16882,getView -FN:16907,getWrapDetails -FN:16921,hasPath -FN:16950,initCloneArray -FN:16969,initCloneObject -FN:16988,initCloneByTag -FN:17032,insertWrapDetails -FN:17050,isFlattenable -FN:17063,isIndex -FN:17080,isIterateeCall -FN:17102,isKey -FN:17122,isKeyable -FN:17137,isLaziable -FN:17158,isMasked -FN:17178,isPrototype -FN:17193,isStrictComparable -FN:17206,matchesStrictComparable -FN:17207,(anonymous_1096) -FN:17224,memoizeCapped -FN:17225,(anonymous_1098) -FN:17252,mergeData -FN:17316,nativeKeysIn -FN:17333,objectToString -FN:17346,overRest -FN:17348,(anonymous_1103) -FN:17375,parent -FN:17389,reorder -FN:17425,(anonymous_1106) -FN:17449,setWrapToString -FN:17463,shortOut -FN:17467,(anonymous_1109) -FN:17491,shuffleSelf -FN:17515,(anonymous_1111) -FN:17520,(anonymous_1112) -FN:17533,toKey -FN:17548,toSource -FN:17568,updateWrapDetails -FN:17569,(anonymous_1116) -FN:17585,wrapperClone -FN:17619,chunk -FN:17654,compact -FN:17691,concat -FN:17727,(anonymous_1121) -FN:17759,(anonymous_1122) -FN:17792,(anonymous_1123) -FN:17827,drop -FN:17861,dropRight -FN:17906,dropRightWhile -FN:17947,dropWhile -FN:17982,fill -FN:18029,findIndex -FN:18076,findLastIndex -FN:18105,flatten -FN:18124,flattenDeep -FN:18149,flattenDepth -FN:18173,fromPairs -FN:18203,head -FN:18230,indexOf -FN:18256,initial -FN:18278,(anonymous_1138) -FN:18308,(anonymous_1139) -FN:18343,(anonymous_1140) -FN:18371,join -FN:18389,last -FN:18415,lastIndexOf -FN:18451,nth -FN:18500,pullAll -FN:18529,pullAllBy -FN:18558,pullAllWith -FN:18588,(anonymous_1148) -FN:18592,(anonymous_1149) -FN:18627,remove -FN:18671,reverse -FN:18691,slice -FN:18724,sortedIndex -FN:18753,sortedIndexBy -FN:18773,sortedIndexOf -FN:18802,sortedLastIndex -FN:18831,sortedLastIndexBy -FN:18851,sortedLastIndexOf -FN:18877,sortedUniq -FN:18899,sortedUniqBy -FN:18919,tail -FN:18949,take -FN:18982,takeRight -FN:19027,takeRightWhile -FN:19068,takeWhile -FN:19090,(anonymous_1166) -FN:19117,(anonymous_1167) -FN:19146,(anonymous_1168) -FN:19170,uniq -FN:19197,uniqBy -FN:19221,uniqWith -FN:19245,unzip -FN:19250,(anonymous_1173) -FN:19256,(anonymous_1174) -FN:19282,unzipWith -FN:19290,(anonymous_1176) -FN:19315,(anonymous_1177) -FN:19339,(anonymous_1178) -FN:19366,(anonymous_1179) -FN:19395,(anonymous_1180) -FN:19435,zipObject -FN:19454,zipObjectDeep -FN:19478,(anonymous_1183) -FN:19517,chain -FN:19546,tap -FN:19574,thru -FN:19594,(anonymous_1187) -FN:19598,(anonymous_1188) -FN:19610,(anonymous_1189) -FN:19645,wrapperChain -FN:19675,wrapperCommit -FN:19701,wrapperNext -FN:19729,wrapperToIterator -FN:19757,wrapperPlant -FN:19797,wrapperReverse -FN:19829,wrapperValue -FN:19857,(anonymous_1197) -FN:19906,every -FN:19951,filter -FN:20036,flatMap -FN:20060,flatMapDeep -FN:20085,flatMapDepth -FN:20120,forEach -FN:20145,forEachRight -FN:20173,(anonymous_1205) -FN:20211,includes -FN:20247,(anonymous_1207) -FN:20252,(anonymous_1208) -FN:20286,(anonymous_1209) -FN:20332,map -FN:20366,orderBy -FN:20416,(anonymous_1212) -FN:20418,(anonymous_1213) -FN:20457,reduce -FN:20486,reduceRight -FN:20527,reject -FN:20546,sample -FN:20571,sampleSize -FN:20596,shuffle -FN:20622,size -FN:20672,some -FN:20709,(anonymous_1222) -FN:20740,(anonymous_1223) -FN:20770,after -FN:20775,(anonymous_1225) -FN:20799,ary -FN:20822,before -FN:20828,(anonymous_1228) -FN:20874,(anonymous_1229) -FN:20928,(anonymous_1230) -FN:20978,curry -FN:21023,curryRight -FN:21084,debounce -FN:21107,invokeFunc -FN:21117,leadingEdge -FN:21126,remainingWait -FN:21134,shouldInvoke -FN:21145,timerExpired -FN:21154,trailingEdge -FN:21166,cancel -FN:21174,flush -FN:21178,debounced -FN:21224,(anonymous_1243) -FN:21247,(anonymous_1244) -FN:21269,flip -FN:21317,memoize -FN:21321,(anonymous_1247) -FN:21360,negate -FN:21364,(anonymous_1249) -FN:21394,once -FN:21429,(anonymous_1251) -FN:21435,(anonymous_1252) -FN:21479,(anonymous_1253) -FN:21516,(anonymous_1254) -FN:21543,(anonymous_1255) -FN:21572,rest -FN:21614,spread -FN:21619,(anonymous_1258) -FN:21674,throttle -FN:21707,unary -FN:21733,wrap -FN:21772,castArray -FN:21806,clone -FN:21841,cloneWith -FN:21864,cloneDeep -FN:21896,cloneDeepWith -FN:21925,conformsTo -FN:21961,eq -FN:22013,(anonymous_1269) -FN:22035,(anonymous_1270) -FN:22035,(anonymous_1271) -FN:22109,isArrayLike -FN:22138,isArrayLikeObject -FN:22159,isBoolean -FN:22219,isElement -FN:22256,isEmpty -FN:22308,isEqual -FN:22344,isEqualWith -FN:22368,isError -FN:22403,isFinite -FN:22424,isFunction -FN:22460,isInteger -FN:22490,isLength -FN:22520,isObject -FN:22549,isObjectLike -FN:22600,isMatch -FN:22636,isMatchWith -FN:22669,isNaN -FN:22702,isNative -FN:22726,isNull -FN:22750,isNil -FN:22780,isNumber -FN:22813,isPlainObject -FN:22872,isSafeInteger -FN:22912,isString -FN:22934,isSymbol -FN:22975,isUndefined -FN:22996,isWeakMap -FN:23017,isWeakSet -FN:23069,(anonymous_1300) -FN:23096,toArray -FN:23135,toFinite -FN:23173,toInteger -FN:23207,toLength -FN:23234,toNumber -FN:23279,toPlainObject -FN:23307,toSafeInteger -FN:23334,toString -FN:23372,(anonymous_1309) -FN:23415,(anonymous_1310) -FN:23448,(anonymous_1311) -FN:23480,(anonymous_1312) -FN:23537,create -FN:23563,(anonymous_1314) -FN:23587,(anonymous_1315) -FN:23627,findKey -FN:23666,findLastKey -FN:23698,forIn -FN:23730,forInRight -FN:23764,forOwn -FN:23794,forOwnRight -FN:23821,functions -FN:23848,functionsIn -FN:23877,get -FN:23909,has -FN:23939,hasIn -FN:23961,(anonymous_1327) -FN:23991,(anonymous_1328) -FN:24047,keys -FN:24074,keysIn -FN:24099,mapKeys -FN:24103,(anonymous_1332) -FN:24137,mapValues -FN:24141,(anonymous_1334) -FN:24178,(anonymous_1335) -FN:24213,(anonymous_1336) -FN:24237,(anonymous_1337) -FN:24243,(anonymous_1338) -FN:24279,omitBy -FN:24300,(anonymous_1340) -FN:24322,pickBy -FN:24326,(anonymous_1342) -FN:24330,(anonymous_1343) -FN:24364,result -FN:24414,set -FN:24442,setWith -FN:24529,transform -FN:24546,(anonymous_1348) -FN:24579,unset -FN:24610,update -FN:24638,updateWith -FN:24669,values -FN:24697,valuesIn -FN:24722,clamp -FN:24776,inRange -FN:24819,random -FN:24880,(anonymous_1357) -FN:24900,capitalize -FN:24922,deburr -FN:24950,endsWith -FN:24992,escape -FN:25014,escapeRegExp -FN:25042,(anonymous_1363) -FN:25066,(anonymous_1364) -FN:25112,pad -FN:25151,padEnd -FN:25184,padStart -FN:25218,parseInt -FN:25249,repeat -FN:25277,replace -FN:25305,(anonymous_1371) -FN:25328,split -FN:25370,(anonymous_1373) -FN:25397,startsWith -FN:25511,template -FN:25548,(anonymous_1376) -FN:25605,(anonymous_1377) -FN:25640,toLower -FN:25665,toUpper -FN:25691,trim -FN:25726,trimEnd -FN:25759,trimStart -FN:25810,truncate -FN:25885,unescape -FN:25912,(anonymous_1385) -FN:25954,words -FN:25988,(anonymous_1387) -FN:26022,(anonymous_1388) -FN:26023,(anonymous_1389) -FN:26059,cond -FN:26063,(anonymous_1391) -FN:26070,(anonymous_1392) -FN:26105,conforms -FN:26128,constant -FN:26129,(anonymous_1395) -FN:26154,defaultTo -FN:26221,identity -FN:26267,iteratee -FN:26299,matches -FN:26329,matchesProperty -FN:26357,(anonymous_1401) -FN:26358,(anonymous_1402) -FN:26386,(anonymous_1403) -FN:26387,(anonymous_1404) -FN:26428,mixin -FN:26442,(anonymous_1406) -FN:26446,(anonymous_1407) -FN:26477,noConflict -FN:26496,noop -FN:26520,nthArg -FN:26522,(anonymous_1411) -FN:26621,property -FN:26646,propertyOf -FN:26647,(anonymous_1414) -FN:26751,stubArray -FN:26768,stubFalse -FN:26790,stubObject -FN:26807,stubString -FN:26824,stubTrue -FN:26847,times -FN:26882,toPath -FN:26906,uniqueId -FN:26928,(anonymous_1423) -FN:26970,(anonymous_1424) -FN:27015,max -FN:27044,maxBy -FN:27064,mean -FN:27091,meanBy -FN:27113,min -FN:27142,minBy -FN:27163,(anonymous_1431) -FN:27205,(anonymous_1432) -FN:27223,sum -FN:27252,sumBy -FN:27578,(anonymous_1435) -FN:27580,(anonymous_1436) -FN:27600,(anonymous_1437) -FN:27605,(anonymous_1438) -FN:27606,(anonymous_1439) -FN:27624,(anonymous_1440) -FN:27630,(anonymous_1441) -FN:27634,(anonymous_1442) -FN:27646,(anonymous_1443) -FN:27649,(anonymous_1444) -FN:27655,(anonymous_1445) -FN:27658,(anonymous_1446) -FN:27663,(anonymous_1447) -FN:27667,(anonymous_1448) -FN:27671,(anonymous_1449) -FN:27675,(anonymous_1450) -FN:27679,(anonymous_1451) -FN:27684,(anonymous_1452) -FN:27688,(anonymous_1453) -FN:27707,(anonymous_1454) -FN:27711,(anonymous_1455) -FN:27716,(anonymous_1456) -FN:27725,(anonymous_1457) -FN:27732,(anonymous_1458) -FN:27761,(anonymous_1459) -FN:27766,(anonymous_1460) -FN:27772,(anonymous_1461) -FN:27779,(anonymous_1462) -FN:27832,(anonymous_1463) -FN:27850,(anonymous_1464) -FN:27900,memoize -FN:27904,(anonymous_1466) -FN:27925,(anonymous_1467) -FN:27956,set -FN:27962,(anonymous_1469) -FN:27986,toString -FN:27992,(anonymous_1471) -FN:27993,(anonymous_1472) -FN:27997,(anonymous_1473) -FN:28010,(anonymous_1474) -FN:28013,(anonymous_1475) -FN:28020,(anonymous_1476) -FNF:1477 -FNH:0 -FNDA:0,e -FNDA:0,s -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,CSVError -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,Converter -FNDA:0,(anonymous_14) -FNDA:0,emitDone -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,bufFromString -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,configIgnoreIncludeColumns -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -FNDA:0,(anonymous_42) -FNDA:0,(anonymous_43) -FNDA:0,(anonymous_44) -FNDA:0,(anonymous_45) -FNDA:0,(anonymous_46) -FNDA:0,(anonymous_47) -FNDA:0,(anonymous_48) -FNDA:0,(anonymous_49) -FNDA:0,(anonymous_50) -FNDA:0,(anonymous_51) -FNDA:0,(anonymous_52) -FNDA:0,(anonymous_53) -FNDA:0,(anonymous_54) -FNDA:0,(anonymous_55) -FNDA:0,(anonymous_56) -FNDA:0,(anonymous_57) -FNDA:0,(anonymous_58) -FNDA:0,(anonymous_59) -FNDA:0,(anonymous_60) -FNDA:0,(anonymous_61) -FNDA:0,getEnv -FNDA:0,(anonymous_63) -FNDA:0,(anonymous_64) -FNDA:0,parser_array -FNDA:0,(anonymous_66) -FNDA:0,parser_flat -FNDA:0,(anonymous_68) -FNDA:0,processHead -FNDA:0,parser_json -FNDA:0,(anonymous_71) -FNDA:0,parser_jsonarray -FNDA:0,(anonymous_73) -FNDA:0,parser_omit -FNDA:0,(anonymous_75) -FNDA:0,(anonymous_76) -FNDA:0,(anonymous_77) -FNDA:0,(anonymous_78) -FNDA:0,(anonymous_79) -FNDA:0,filterRow -FNDA:0,(anonymous_81) -FNDA:0,getDelimiter -FNDA:0,(anonymous_83) -FNDA:0,(anonymous_84) -FNDA:0,(anonymous_85) -FNDA:0,(anonymous_86) -FNDA:0,constructor -FNDA:0,(anonymous_88) -FNDA:0,(anonymous_89) -FNDA:0,justReturnRows -FNDA:0,processRows -FNDA:0,processRow -FNDA:0,convertRowToJson -FNDA:0,(anonymous_94) -FNDA:0,getConvFunc -FNDA:0,setPath -FNDA:0,getFlag -FNDA:0,getTitle -FNDA:0,checkType -FNDA:0,numberType -FNDA:0,stringType -FNDA:0,dynamicType -FNDA:0,booleanType -FNDA:0,jsonType -FNDA:0,(anonymous_105) -FNDA:0,Parser -FNDA:0,(anonymous_107) -FNDA:0,(anonymous_108) -FNDA:0,(anonymous_109) -FNDA:0,(anonymous_110) -FNDA:0,(anonymous_111) -FNDA:0,(anonymous_112) -FNDA:0,(anonymous_113) -FNDA:0,(anonymous_114) -FNDA:0,(anonymous_115) -FNDA:0,(anonymous_116) -FNDA:0,registerParser -FNDA:0,getParser -FNDA:0,getParserByName -FNDA:0,(anonymous_120) -FNDA:0,(anonymous_121) -FNDA:0,addParser -FNDA:0,addSafeParser -FNDA:0,initParsers -FNDA:0,(anonymous_125) -FNDA:0,(anonymous_126) -FNDA:0,(anonymous_127) -FNDA:0,rowSplit -FNDA:0,isQuoteOpen -FNDA:0,isQuoteClose -FNDA:0,twoDoubleQuote -FNDA:0,_escapeQuote -FNDA:0,(anonymous_133) -FNDA:0,(anonymous_134) -FNDA:0,workerMgr -FNDA:0,(anonymous_136) -FNDA:0,initWorker -FNDA:0,isRunning -FNDA:0,destroyWorker -FNDA:0,(anonymous_140) -FNDA:0,sendWorker -FNDA:0,(anonymous_142) -FNDA:0,setParams -FNDA:0,(anonymous_144) -FNDA:0,Worker -FNDA:0,(anonymous_146) -FNDA:0,(anonymous_147) -FNDA:0,(anonymous_148) -FNDA:0,(anonymous_149) -FNDA:0,(anonymous_150) -FNDA:0,(anonymous_151) -FNDA:0,(anonymous_152) -FNDA:0,(anonymous_153) -FNDA:0,(anonymous_154) -FNDA:0,(anonymous_155) -FNDA:0,(anonymous_156) -FNDA:0,_initConverter -FNDA:0,(anonymous_158) -FNDA:0,(anonymous_159) -FNDA:0,(anonymous_160) -FNDA:0,convertFile -FNDA:0,convertString -FNDA:0,(anonymous_163) -FNDA:0,(anonymous_164) -FNDA:0,(anonymous_165) -FNDA:0,startWebServer -FNDA:0,(anonymous_167) -FNDA:0,(anonymous_168) -FNDA:0,(anonymous_169) -FNDA:0,ctor -FNDA:0,FirstChunk -FNDA:0,(anonymous_172) -FNDA:0,(anonymous_173) -FNDA:0,(anonymous_174) -FNDA:0,(anonymous_175) -FNDA:0,(anonymous_176) -FNDA:0,(anonymous_177) -FNDA:0,(anonymous_178) -FNDA:0,(anonymous_179) -FNDA:0,typedArraySupport -FNDA:0,Bar -FNDA:0,(anonymous_182) -FNDA:0,kMaxLength -FNDA:0,Buffer -FNDA:0,fromNumber -FNDA:0,fromString -FNDA:0,fromObject -FNDA:0,fromBuffer -FNDA:0,fromArray -FNDA:0,fromTypedArray -FNDA:0,fromArrayBuffer -FNDA:0,fromArrayLike -FNDA:0,fromJsonObject -FNDA:0,allocate -FNDA:0,checked -FNDA:0,SlowBuffer -FNDA:0,isBuffer -FNDA:0,compare -FNDA:0,isEncoding -FNDA:0,concat -FNDA:0,byteLength -FNDA:0,slowToString -FNDA:0,toString -FNDA:0,equals -FNDA:0,inspect -FNDA:0,compare -FNDA:0,indexOf -FNDA:0,arrayIndexOf -FNDA:0,get -FNDA:0,set -FNDA:0,hexWrite -FNDA:0,utf8Write -FNDA:0,asciiWrite -FNDA:0,binaryWrite -FNDA:0,base64Write -FNDA:0,ucs2Write -FNDA:0,write -FNDA:0,toJSON -FNDA:0,base64Slice -FNDA:0,utf8Slice -FNDA:0,decodeCodePointsArray -FNDA:0,asciiSlice -FNDA:0,binarySlice -FNDA:0,hexSlice -FNDA:0,utf16leSlice -FNDA:0,slice -FNDA:0,checkOffset -FNDA:0,readUIntLE -FNDA:0,readUIntBE -FNDA:0,readUInt8 -FNDA:0,readUInt16LE -FNDA:0,readUInt16BE -FNDA:0,readUInt32LE -FNDA:0,readUInt32BE -FNDA:0,readIntLE -FNDA:0,readIntBE -FNDA:0,readInt8 -FNDA:0,readInt16LE -FNDA:0,readInt16BE -FNDA:0,readInt32LE -FNDA:0,readInt32BE -FNDA:0,readFloatLE -FNDA:0,readFloatBE -FNDA:0,readDoubleLE -FNDA:0,readDoubleBE -FNDA:0,checkInt -FNDA:0,writeUIntLE -FNDA:0,writeUIntBE -FNDA:0,writeUInt8 -FNDA:0,objectWriteUInt16 -FNDA:0,writeUInt16LE -FNDA:0,writeUInt16BE -FNDA:0,objectWriteUInt32 -FNDA:0,writeUInt32LE -FNDA:0,writeUInt32BE -FNDA:0,writeIntLE -FNDA:0,writeIntBE -FNDA:0,writeInt8 -FNDA:0,writeInt16LE -FNDA:0,writeInt16BE -FNDA:0,writeInt32LE -FNDA:0,writeInt32BE -FNDA:0,checkIEEE754 -FNDA:0,writeFloat -FNDA:0,writeFloatLE -FNDA:0,writeFloatBE -FNDA:0,writeDouble -FNDA:0,writeDoubleLE -FNDA:0,writeDoubleBE -FNDA:0,copy -FNDA:0,fill -FNDA:0,toArrayBuffer -FNDA:0,_augment -FNDA:0,base64clean -FNDA:0,stringtrim -FNDA:0,toHex -FNDA:0,utf8ToBytes -FNDA:0,asciiToBytes -FNDA:0,utf16leToBytes -FNDA:0,base64ToBytes -FNDA:0,blitBuffer -FNDA:0,(anonymous_282) -FNDA:0,(anonymous_283) -FNDA:0,decode -FNDA:0,b64ToByteArray -FNDA:0,push -FNDA:0,uint8ToBase64 -FNDA:0,encode -FNDA:0,tripletToBase64 -FNDA:0,(anonymous_290) -FNDA:0,(anonymous_291) -FNDA:0,(anonymous_292) -FNDA:0,(anonymous_293) -FNDA:0,(anonymous_294) -FNDA:0,(anonymous_295) -FNDA:0,EventEmitter -FNDA:0,(anonymous_297) -FNDA:0,(anonymous_298) -FNDA:0,(anonymous_299) -FNDA:0,(anonymous_300) -FNDA:0,g -FNDA:0,(anonymous_302) -FNDA:0,(anonymous_303) -FNDA:0,(anonymous_304) -FNDA:0,(anonymous_305) -FNDA:0,isFunction -FNDA:0,isNumber -FNDA:0,isObject -FNDA:0,isUndefined -FNDA:0,(anonymous_310) -FNDA:0,inherits -FNDA:0,inherits -FNDA:0,(anonymous_313) -FNDA:0,(anonymous_314) -FNDA:0,(anonymous_315) -FNDA:0,(anonymous_316) -FNDA:0,(anonymous_317) -FNDA:0,(anonymous_318) -FNDA:0,(anonymous_319) -FNDA:0,(anonymous_320) -FNDA:0,(anonymous_321) -FNDA:0,(anonymous_322) -FNDA:0,(anonymous_323) -FNDA:0,(anonymous_324) -FNDA:0,(anonymous_325) -FNDA:0,(anonymous_326) -FNDA:0,(anonymous_327) -FNDA:0,(anonymous_328) -FNDA:0,(anonymous_329) -FNDA:0,(anonymous_330) -FNDA:0,(anonymous_331) -FNDA:0,(anonymous_332) -FNDA:0,cleanUpNextTick -FNDA:0,drainQueue -FNDA:0,(anonymous_335) -FNDA:0,Item -FNDA:0,(anonymous_337) -FNDA:0,noop -FNDA:0,(anonymous_339) -FNDA:0,(anonymous_340) -FNDA:0,(anonymous_341) -FNDA:0,(anonymous_342) -FNDA:0,(anonymous_343) -FNDA:0,(anonymous_344) -FNDA:0,(anonymous_345) -FNDA:0,error -FNDA:0,map -FNDA:0,mapDomain -FNDA:0,ucs2decode -FNDA:0,ucs2encode -FNDA:0,(anonymous_351) -FNDA:0,basicToDigit -FNDA:0,digitToBasic -FNDA:0,adapt -FNDA:0,decode -FNDA:0,encode -FNDA:0,toUnicode -FNDA:0,(anonymous_358) -FNDA:0,toASCII -FNDA:0,(anonymous_360) -FNDA:0,(anonymous_361) -FNDA:0,(anonymous_362) -FNDA:0,hasOwnProperty -FNDA:0,(anonymous_364) -FNDA:0,(anonymous_365) -FNDA:0,(anonymous_366) -FNDA:0,(anonymous_367) -FNDA:0,(anonymous_368) -FNDA:0,(anonymous_369) -FNDA:0,(anonymous_370) -FNDA:0,(anonymous_371) -FNDA:0,map -FNDA:0,(anonymous_373) -FNDA:0,(anonymous_374) -FNDA:0,(anonymous_375) -FNDA:0,(anonymous_376) -FNDA:0,(anonymous_377) -FNDA:0,Duplex -FNDA:0,onend -FNDA:0,onEndNT -FNDA:0,forEach -FNDA:0,(anonymous_382) -FNDA:0,PassThrough -FNDA:0,(anonymous_384) -FNDA:0,(anonymous_385) -FNDA:0,(anonymous_386) -FNDA:0,(anonymous_387) -FNDA:0,(anonymous_388) -FNDA:0,(anonymous_389) -FNDA:0,ReadableState -FNDA:0,Readable -FNDA:0,(anonymous_392) -FNDA:0,(anonymous_393) -FNDA:0,(anonymous_394) -FNDA:0,readableAddChunk -FNDA:0,needMoreData -FNDA:0,(anonymous_397) -FNDA:0,computeNewHighWaterMark -FNDA:0,howMuchToRead -FNDA:0,(anonymous_400) -FNDA:0,chunkInvalid -FNDA:0,onEofChunk -FNDA:0,emitReadable -FNDA:0,emitReadable_ -FNDA:0,maybeReadMore -FNDA:0,maybeReadMore_ -FNDA:0,(anonymous_407) -FNDA:0,(anonymous_408) -FNDA:0,onunpipe -FNDA:0,onend -FNDA:0,cleanup -FNDA:0,ondata -FNDA:0,onerror -FNDA:0,onclose -FNDA:0,onfinish -FNDA:0,unpipe -FNDA:0,pipeOnDrain -FNDA:0,(anonymous_418) -FNDA:0,(anonymous_419) -FNDA:0,(anonymous_420) -FNDA:0,nReadingNextTick -FNDA:0,(anonymous_422) -FNDA:0,resume -FNDA:0,resume_ -FNDA:0,(anonymous_425) -FNDA:0,flow -FNDA:0,(anonymous_427) -FNDA:0,(anonymous_428) -FNDA:0,(anonymous_429) -FNDA:0,(anonymous_430) -FNDA:0,(anonymous_431) -FNDA:0,(anonymous_432) -FNDA:0,(anonymous_433) -FNDA:0,fromList -FNDA:0,endReadable -FNDA:0,endReadableNT -FNDA:0,forEach -FNDA:0,indexOf -FNDA:0,(anonymous_439) -FNDA:0,TransformState -FNDA:0,(anonymous_441) -FNDA:0,afterTransform -FNDA:0,Transform -FNDA:0,(anonymous_444) -FNDA:0,(anonymous_445) -FNDA:0,(anonymous_446) -FNDA:0,(anonymous_447) -FNDA:0,(anonymous_448) -FNDA:0,(anonymous_449) -FNDA:0,done -FNDA:0,(anonymous_451) -FNDA:0,(anonymous_452) -FNDA:0,nop -FNDA:0,WriteReq -FNDA:0,WritableState -FNDA:0,(anonymous_456) -FNDA:0,writableStateGetBuffer -FNDA:0,(anonymous_458) -FNDA:0,(anonymous_459) -FNDA:0,Writable -FNDA:0,(anonymous_461) -FNDA:0,writeAfterEnd -FNDA:0,validChunk -FNDA:0,(anonymous_464) -FNDA:0,(anonymous_465) -FNDA:0,(anonymous_466) -FNDA:0,setDefaultEncoding -FNDA:0,decodeChunk -FNDA:0,writeOrBuffer -FNDA:0,doWrite -FNDA:0,onwriteError -FNDA:0,onwriteStateUpdate -FNDA:0,onwrite -FNDA:0,afterWrite -FNDA:0,onwriteDrain -FNDA:0,clearBuffer -FNDA:0,(anonymous_477) -FNDA:0,(anonymous_478) -FNDA:0,(anonymous_479) -FNDA:0,needFinish -FNDA:0,prefinish -FNDA:0,finishMaybe -FNDA:0,endWritable -FNDA:0,(anonymous_484) -FNDA:0,(anonymous_485) -FNDA:0,isArray -FNDA:0,isBoolean -FNDA:0,isNull -FNDA:0,isNullOrUndefined -FNDA:0,isNumber -FNDA:0,isString -FNDA:0,isSymbol -FNDA:0,isUndefined -FNDA:0,isRegExp -FNDA:0,isObject -FNDA:0,isDate -FNDA:0,isError -FNDA:0,isFunction -FNDA:0,isPrimitive -FNDA:0,objectToString -FNDA:0,(anonymous_501) -FNDA:0,(anonymous_502) -FNDA:0,nextTick -FNDA:0,afterTick -FNDA:0,(anonymous_505) -FNDA:0,(anonymous_506) -FNDA:0,deprecate -FNDA:0,deprecated -FNDA:0,config -FNDA:0,(anonymous_510) -FNDA:0,(anonymous_511) -FNDA:0,(anonymous_512) -FNDA:0,(anonymous_513) -FNDA:0,(anonymous_514) -FNDA:0,(anonymous_515) -FNDA:0,Stream -FNDA:0,(anonymous_517) -FNDA:0,ondata -FNDA:0,ondrain -FNDA:0,onend -FNDA:0,onclose -FNDA:0,onerror -FNDA:0,cleanup -FNDA:0,(anonymous_524) -FNDA:0,(anonymous_525) -FNDA:0,get -FNDA:0,(anonymous_527) -FNDA:0,(anonymous_528) -FNDA:0,(anonymous_529) -FNDA:0,checkTypeSupport -FNDA:0,isFunction -FNDA:0,(anonymous_532) -FNDA:0,(anonymous_533) -FNDA:0,decideMode -FNDA:0,(anonymous_535) -FNDA:0,(anonymous_536) -FNDA:0,(anonymous_537) -FNDA:0,(anonymous_538) -FNDA:0,(anonymous_539) -FNDA:0,(anonymous_540) -FNDA:0,(anonymous_541) -FNDA:0,(anonymous_542) -FNDA:0,(anonymous_543) -FNDA:0,(anonymous_544) -FNDA:0,(anonymous_545) -FNDA:0,(anonymous_546) -FNDA:0,(anonymous_547) -FNDA:0,(anonymous_548) -FNDA:0,(anonymous_549) -FNDA:0,(anonymous_550) -FNDA:0,(anonymous_551) -FNDA:0,statusValid -FNDA:0,(anonymous_553) -FNDA:0,(anonymous_554) -FNDA:0,(anonymous_555) -FNDA:0,(anonymous_556) -FNDA:0,(anonymous_557) -FNDA:0,(anonymous_558) -FNDA:0,(anonymous_559) -FNDA:0,(anonymous_560) -FNDA:0,(anonymous_561) -FNDA:0,(anonymous_562) -FNDA:0,(anonymous_563) -FNDA:0,(anonymous_564) -FNDA:0,(anonymous_565) -FNDA:0,(anonymous_566) -FNDA:0,read -FNDA:0,(anonymous_568) -FNDA:0,(anonymous_569) -FNDA:0,(anonymous_570) -FNDA:0,(anonymous_571) -FNDA:0,(anonymous_572) -FNDA:0,(anonymous_573) -FNDA:0,(anonymous_574) -FNDA:0,(anonymous_575) -FNDA:0,forEach -FNDA:0,(anonymous_577) -FNDA:0,(anonymous_578) -FNDA:0,(anonymous_579) -FNDA:0,(anonymous_580) -FNDA:0,(anonymous_581) -FNDA:0,(anonymous_582) -FNDA:0,(anonymous_583) -FNDA:0,keys -FNDA:0,shimObjectKeys -FNDA:0,(anonymous_586) -FNDA:0,keys -FNDA:0,(anonymous_588) -FNDA:0,isArguments -FNDA:0,(anonymous_590) -FNDA:0,(anonymous_591) -FNDA:0,assertEncoding -FNDA:0,(anonymous_593) -FNDA:0,(anonymous_594) -FNDA:0,(anonymous_595) -FNDA:0,(anonymous_596) -FNDA:0,passThroughWrite -FNDA:0,utf16DetectIncompleteChar -FNDA:0,base64DetectIncompleteChar -FNDA:0,(anonymous_600) -FNDA:0,Url -FNDA:0,urlParse -FNDA:0,(anonymous_603) -FNDA:0,urlFormat -FNDA:0,(anonymous_605) -FNDA:0,(anonymous_606) -FNDA:0,urlResolve -FNDA:0,(anonymous_608) -FNDA:0,urlResolveObject -FNDA:0,(anonymous_610) -FNDA:0,(anonymous_611) -FNDA:0,(anonymous_612) -FNDA:0,(anonymous_613) -FNDA:0,(anonymous_614) -FNDA:0,isString -FNDA:0,isObject -FNDA:0,isNull -FNDA:0,isNullOrUndefined -FNDA:0,(anonymous_619) -FNDA:0,isBuffer -FNDA:0,(anonymous_621) -FNDA:0,(anonymous_622) -FNDA:0,(anonymous_623) -FNDA:0,(anonymous_624) -FNDA:0,(anonymous_625) -FNDA:0,(anonymous_626) -FNDA:0,deprecated -FNDA:0,(anonymous_628) -FNDA:0,(anonymous_629) -FNDA:0,(anonymous_630) -FNDA:0,inspect -FNDA:0,stylizeWithColor -FNDA:0,stylizeNoColor -FNDA:0,arrayToHash -FNDA:0,(anonymous_635) -FNDA:0,formatValue -FNDA:0,(anonymous_637) -FNDA:0,formatPrimitive -FNDA:0,formatError -FNDA:0,formatArray -FNDA:0,(anonymous_641) -FNDA:0,formatProperty -FNDA:0,(anonymous_643) -FNDA:0,(anonymous_644) -FNDA:0,reduceToSingleString -FNDA:0,(anonymous_646) -FNDA:0,isArray -FNDA:0,isBoolean -FNDA:0,isNull -FNDA:0,isNullOrUndefined -FNDA:0,isNumber -FNDA:0,isString -FNDA:0,isSymbol -FNDA:0,isUndefined -FNDA:0,isRegExp -FNDA:0,isObject -FNDA:0,isDate -FNDA:0,isError -FNDA:0,isFunction -FNDA:0,isPrimitive -FNDA:0,objectToString -FNDA:0,pad -FNDA:0,timestamp -FNDA:0,(anonymous_664) -FNDA:0,(anonymous_665) -FNDA:0,hasOwnProperty -FNDA:0,(anonymous_667) -FNDA:0,extend -FNDA:0,(anonymous_669) -FNDA:0,(anonymous_670) -FNDA:0,(anonymous_671) -FNDA:0,Hash -FNDA:0,(anonymous_673) -FNDA:0,ListCache -FNDA:0,(anonymous_675) -FNDA:0,(anonymous_676) -FNDA:0,MapCache -FNDA:0,(anonymous_678) -FNDA:0,(anonymous_679) -FNDA:0,arrayMap -FNDA:0,(anonymous_681) -FNDA:0,assignValue -FNDA:0,(anonymous_683) -FNDA:0,assocIndexOf -FNDA:0,(anonymous_685) -FNDA:0,baseAssignValue -FNDA:0,(anonymous_687) -FNDA:0,baseGetTag -FNDA:0,(anonymous_689) -FNDA:0,baseIsNative -FNDA:0,(anonymous_691) -FNDA:0,baseSet -FNDA:0,(anonymous_693) -FNDA:0,baseToString -FNDA:0,(anonymous_695) -FNDA:0,castPath -FNDA:0,(anonymous_697) -FNDA:0,(anonymous_698) -FNDA:0,(anonymous_699) -FNDA:0,(anonymous_700) -FNDA:0,(anonymous_701) -FNDA:0,(anonymous_702) -FNDA:0,getMapData -FNDA:0,(anonymous_704) -FNDA:0,getNative -FNDA:0,(anonymous_706) -FNDA:0,getRawTag -FNDA:0,(anonymous_708) -FNDA:0,getValue -FNDA:0,(anonymous_710) -FNDA:0,hashClear -FNDA:0,(anonymous_712) -FNDA:0,hashDelete -FNDA:0,(anonymous_714) -FNDA:0,hashGet -FNDA:0,(anonymous_716) -FNDA:0,hashHas -FNDA:0,(anonymous_718) -FNDA:0,hashSet -FNDA:0,(anonymous_720) -FNDA:0,isIndex -FNDA:0,(anonymous_722) -FNDA:0,isKey -FNDA:0,(anonymous_724) -FNDA:0,isKeyable -FNDA:0,(anonymous_726) -FNDA:0,(anonymous_727) -FNDA:0,isMasked -FNDA:0,(anonymous_729) -FNDA:0,listCacheClear -FNDA:0,(anonymous_731) -FNDA:0,listCacheDelete -FNDA:0,(anonymous_733) -FNDA:0,listCacheGet -FNDA:0,(anonymous_735) -FNDA:0,listCacheHas -FNDA:0,(anonymous_737) -FNDA:0,listCacheSet -FNDA:0,(anonymous_739) -FNDA:0,mapCacheClear -FNDA:0,(anonymous_741) -FNDA:0,mapCacheDelete -FNDA:0,(anonymous_743) -FNDA:0,mapCacheGet -FNDA:0,(anonymous_745) -FNDA:0,mapCacheHas -FNDA:0,(anonymous_747) -FNDA:0,mapCacheSet -FNDA:0,(anonymous_749) -FNDA:0,memoizeCapped -FNDA:0,(anonymous_751) -FNDA:0,(anonymous_752) -FNDA:0,(anonymous_753) -FNDA:0,objectToString -FNDA:0,(anonymous_755) -FNDA:0,(anonymous_756) -FNDA:0,(anonymous_757) -FNDA:0,(anonymous_758) -FNDA:0,(anonymous_759) -FNDA:0,toKey -FNDA:0,(anonymous_761) -FNDA:0,toSource -FNDA:0,(anonymous_763) -FNDA:0,eq -FNDA:0,(anonymous_765) -FNDA:0,(anonymous_766) -FNDA:0,isFunction -FNDA:0,(anonymous_768) -FNDA:0,isObject -FNDA:0,(anonymous_770) -FNDA:0,isObjectLike -FNDA:0,(anonymous_772) -FNDA:0,isSymbol -FNDA:0,(anonymous_774) -FNDA:0,(anonymous_775) -FNDA:0,(anonymous_776) -FNDA:0,(anonymous_777) -FNDA:0,addMapEntry -FNDA:0,addSetEntry -FNDA:0,apply -FNDA:0,arrayAggregator -FNDA:0,arrayEach -FNDA:0,arrayEachRight -FNDA:0,arrayEvery -FNDA:0,arrayFilter -FNDA:0,arrayIncludes -FNDA:0,arrayIncludesWith -FNDA:0,arrayMap -FNDA:0,arrayPush -FNDA:0,arrayReduce -FNDA:0,arrayReduceRight -FNDA:0,arraySome -FNDA:0,asciiToArray -FNDA:0,asciiWords -FNDA:0,baseFindKey -FNDA:0,(anonymous_796) -FNDA:0,baseFindIndex -FNDA:0,baseIndexOf -FNDA:0,baseIndexOfWith -FNDA:0,baseIsNaN -FNDA:0,baseMean -FNDA:0,baseProperty -FNDA:0,(anonymous_803) -FNDA:0,basePropertyOf -FNDA:0,(anonymous_805) -FNDA:0,baseReduce -FNDA:0,(anonymous_807) -FNDA:0,baseSortBy -FNDA:0,baseSum -FNDA:0,baseTimes -FNDA:0,baseToPairs -FNDA:0,(anonymous_812) -FNDA:0,baseUnary -FNDA:0,(anonymous_814) -FNDA:0,baseValues -FNDA:0,(anonymous_816) -FNDA:0,cacheHas -FNDA:0,charsStartIndex -FNDA:0,charsEndIndex -FNDA:0,countHolders -FNDA:0,escapeStringChar -FNDA:0,getValue -FNDA:0,hasUnicode -FNDA:0,hasUnicodeWord -FNDA:0,iteratorToArray -FNDA:0,mapToArray -FNDA:0,(anonymous_827) -FNDA:0,overArg -FNDA:0,(anonymous_829) -FNDA:0,replaceHolders -FNDA:0,setToArray -FNDA:0,(anonymous_832) -FNDA:0,setToPairs -FNDA:0,(anonymous_834) -FNDA:0,strictIndexOf -FNDA:0,strictLastIndexOf -FNDA:0,stringSize -FNDA:0,stringToArray -FNDA:0,unicodeSize -FNDA:0,unicodeToArray -FNDA:0,unicodeWords -FNDA:0,runInContext -FNDA:0,(anonymous_843) -FNDA:0,(anonymous_844) -FNDA:0,lodash -FNDA:0,(anonymous_846) -FNDA:0,object -FNDA:0,(anonymous_848) -FNDA:0,baseLodash -FNDA:0,LodashWrapper -FNDA:0,LazyWrapper -FNDA:0,lazyClone -FNDA:0,lazyReverse -FNDA:0,lazyValue -FNDA:0,Hash -FNDA:0,hashClear -FNDA:0,hashDelete -FNDA:0,hashGet -FNDA:0,hashHas -FNDA:0,hashSet -FNDA:0,ListCache -FNDA:0,listCacheClear -FNDA:0,listCacheDelete -FNDA:0,listCacheGet -FNDA:0,listCacheHas -FNDA:0,listCacheSet -FNDA:0,MapCache -FNDA:0,mapCacheClear -FNDA:0,mapCacheDelete -FNDA:0,mapCacheGet -FNDA:0,mapCacheHas -FNDA:0,mapCacheSet -FNDA:0,SetCache -FNDA:0,setCacheAdd -FNDA:0,setCacheHas -FNDA:0,Stack -FNDA:0,stackClear -FNDA:0,stackDelete -FNDA:0,stackGet -FNDA:0,stackHas -FNDA:0,stackSet -FNDA:0,arrayLikeKeys -FNDA:0,arraySample -FNDA:0,arraySampleSize -FNDA:0,arrayShuffle -FNDA:0,assignMergeValue -FNDA:0,assignValue -FNDA:0,assocIndexOf -FNDA:0,baseAggregator -FNDA:0,(anonymous_890) -FNDA:0,baseAssign -FNDA:0,baseAssignIn -FNDA:0,baseAssignValue -FNDA:0,baseAt -FNDA:0,baseClamp -FNDA:0,baseClone -FNDA:0,(anonymous_897) -FNDA:0,baseConforms -FNDA:0,(anonymous_899) -FNDA:0,baseConformsTo -FNDA:0,baseDelay -FNDA:0,(anonymous_902) -FNDA:0,baseDifference -FNDA:0,baseEvery -FNDA:0,(anonymous_905) -FNDA:0,baseExtremum -FNDA:0,baseFill -FNDA:0,baseFilter -FNDA:0,(anonymous_909) -FNDA:0,baseFlatten -FNDA:0,baseForOwn -FNDA:0,baseForOwnRight -FNDA:0,baseFunctions -FNDA:0,(anonymous_914) -FNDA:0,baseGet -FNDA:0,baseGetAllKeys -FNDA:0,baseGetTag -FNDA:0,baseGt -FNDA:0,baseHas -FNDA:0,baseHasIn -FNDA:0,baseInRange -FNDA:0,baseIntersection -FNDA:0,baseInverter -FNDA:0,(anonymous_924) -FNDA:0,baseInvoke -FNDA:0,baseIsArguments -FNDA:0,baseIsArrayBuffer -FNDA:0,baseIsDate -FNDA:0,baseIsEqual -FNDA:0,baseIsEqualDeep -FNDA:0,baseIsMap -FNDA:0,baseIsMatch -FNDA:0,baseIsNative -FNDA:0,baseIsRegExp -FNDA:0,baseIsSet -FNDA:0,baseIsTypedArray -FNDA:0,baseIteratee -FNDA:0,baseKeys -FNDA:0,baseKeysIn -FNDA:0,baseLt -FNDA:0,baseMap -FNDA:0,(anonymous_942) -FNDA:0,baseMatches -FNDA:0,(anonymous_944) -FNDA:0,baseMatchesProperty -FNDA:0,(anonymous_946) -FNDA:0,baseMerge -FNDA:0,(anonymous_948) -FNDA:0,baseMergeDeep -FNDA:0,baseNth -FNDA:0,baseOrderBy -FNDA:0,(anonymous_952) -FNDA:0,(anonymous_953) -FNDA:0,(anonymous_954) -FNDA:0,basePick -FNDA:0,(anonymous_956) -FNDA:0,basePickBy -FNDA:0,basePropertyDeep -FNDA:0,(anonymous_959) -FNDA:0,basePullAll -FNDA:0,basePullAt -FNDA:0,baseRandom -FNDA:0,baseRange -FNDA:0,baseRepeat -FNDA:0,baseRest -FNDA:0,baseSample -FNDA:0,baseSampleSize -FNDA:0,baseSet -FNDA:0,(anonymous_969) -FNDA:0,(anonymous_970) -FNDA:0,baseShuffle -FNDA:0,baseSlice -FNDA:0,baseSome -FNDA:0,(anonymous_974) -FNDA:0,baseSortedIndex -FNDA:0,baseSortedIndexBy -FNDA:0,baseSortedUniq -FNDA:0,baseToNumber -FNDA:0,baseToString -FNDA:0,baseUniq -FNDA:0,baseUnset -FNDA:0,baseUpdate -FNDA:0,baseWhile -FNDA:0,baseWrapperValue -FNDA:0,(anonymous_985) -FNDA:0,baseXor -FNDA:0,baseZipObject -FNDA:0,castArrayLikeObject -FNDA:0,castFunction -FNDA:0,castPath -FNDA:0,castSlice -FNDA:0,(anonymous_992) -FNDA:0,cloneBuffer -FNDA:0,cloneArrayBuffer -FNDA:0,cloneDataView -FNDA:0,cloneMap -FNDA:0,cloneRegExp -FNDA:0,cloneSet -FNDA:0,cloneSymbol -FNDA:0,cloneTypedArray -FNDA:0,compareAscending -FNDA:0,compareMultiple -FNDA:0,composeArgs -FNDA:0,composeArgsRight -FNDA:0,copyArray -FNDA:0,copyObject -FNDA:0,copySymbols -FNDA:0,copySymbolsIn -FNDA:0,createAggregator -FNDA:0,(anonymous_1010) -FNDA:0,createAssigner -FNDA:0,(anonymous_1012) -FNDA:0,createBaseEach -FNDA:0,(anonymous_1014) -FNDA:0,createBaseFor -FNDA:0,(anonymous_1016) -FNDA:0,createBind -FNDA:0,wrapper -FNDA:0,createCaseFirst -FNDA:0,(anonymous_1020) -FNDA:0,createCompounder -FNDA:0,(anonymous_1022) -FNDA:0,createCtor -FNDA:0,(anonymous_1024) -FNDA:0,createCurry -FNDA:0,wrapper -FNDA:0,createFind -FNDA:0,(anonymous_1028) -FNDA:0,(anonymous_1029) -FNDA:0,createFlow -FNDA:0,(anonymous_1031) -FNDA:0,(anonymous_1032) -FNDA:0,createHybrid -FNDA:0,wrapper -FNDA:0,createInverter -FNDA:0,(anonymous_1036) -FNDA:0,createMathOperation -FNDA:0,(anonymous_1038) -FNDA:0,createOver -FNDA:0,(anonymous_1040) -FNDA:0,(anonymous_1041) -FNDA:0,(anonymous_1042) -FNDA:0,createPadding -FNDA:0,createPartial -FNDA:0,wrapper -FNDA:0,createRange -FNDA:0,(anonymous_1047) -FNDA:0,createRelationalOperation -FNDA:0,(anonymous_1049) -FNDA:0,createRecurry -FNDA:0,createRound -FNDA:0,(anonymous_1052) -FNDA:0,(anonymous_1053) -FNDA:0,createToPairs -FNDA:0,(anonymous_1055) -FNDA:0,createWrap -FNDA:0,customDefaultsAssignIn -FNDA:0,customDefaultsMerge -FNDA:0,customOmitClone -FNDA:0,equalArrays -FNDA:0,(anonymous_1061) -FNDA:0,equalByTag -FNDA:0,equalObjects -FNDA:0,flatRest -FNDA:0,getAllKeys -FNDA:0,getAllKeysIn -FNDA:0,(anonymous_1067) -FNDA:0,getFuncName -FNDA:0,getHolder -FNDA:0,getIteratee -FNDA:0,getMapData -FNDA:0,getMatchData -FNDA:0,getNative -FNDA:0,getRawTag -FNDA:0,(anonymous_1075) -FNDA:0,(anonymous_1076) -FNDA:0,(anonymous_1077) -FNDA:0,(anonymous_1078) -FNDA:0,getView -FNDA:0,getWrapDetails -FNDA:0,hasPath -FNDA:0,initCloneArray -FNDA:0,initCloneObject -FNDA:0,initCloneByTag -FNDA:0,insertWrapDetails -FNDA:0,isFlattenable -FNDA:0,isIndex -FNDA:0,isIterateeCall -FNDA:0,isKey -FNDA:0,isKeyable -FNDA:0,isLaziable -FNDA:0,isMasked -FNDA:0,isPrototype -FNDA:0,isStrictComparable -FNDA:0,matchesStrictComparable -FNDA:0,(anonymous_1096) -FNDA:0,memoizeCapped -FNDA:0,(anonymous_1098) -FNDA:0,mergeData -FNDA:0,nativeKeysIn -FNDA:0,objectToString -FNDA:0,overRest -FNDA:0,(anonymous_1103) -FNDA:0,parent -FNDA:0,reorder -FNDA:0,(anonymous_1106) -FNDA:0,setWrapToString -FNDA:0,shortOut -FNDA:0,(anonymous_1109) -FNDA:0,shuffleSelf -FNDA:0,(anonymous_1111) -FNDA:0,(anonymous_1112) -FNDA:0,toKey -FNDA:0,toSource -FNDA:0,updateWrapDetails -FNDA:0,(anonymous_1116) -FNDA:0,wrapperClone -FNDA:0,chunk -FNDA:0,compact -FNDA:0,concat -FNDA:0,(anonymous_1121) -FNDA:0,(anonymous_1122) -FNDA:0,(anonymous_1123) -FNDA:0,drop -FNDA:0,dropRight -FNDA:0,dropRightWhile -FNDA:0,dropWhile -FNDA:0,fill -FNDA:0,findIndex -FNDA:0,findLastIndex -FNDA:0,flatten -FNDA:0,flattenDeep -FNDA:0,flattenDepth -FNDA:0,fromPairs -FNDA:0,head -FNDA:0,indexOf -FNDA:0,initial -FNDA:0,(anonymous_1138) -FNDA:0,(anonymous_1139) -FNDA:0,(anonymous_1140) -FNDA:0,join -FNDA:0,last -FNDA:0,lastIndexOf -FNDA:0,nth -FNDA:0,pullAll -FNDA:0,pullAllBy -FNDA:0,pullAllWith -FNDA:0,(anonymous_1148) -FNDA:0,(anonymous_1149) -FNDA:0,remove -FNDA:0,reverse -FNDA:0,slice -FNDA:0,sortedIndex -FNDA:0,sortedIndexBy -FNDA:0,sortedIndexOf -FNDA:0,sortedLastIndex -FNDA:0,sortedLastIndexBy -FNDA:0,sortedLastIndexOf -FNDA:0,sortedUniq -FNDA:0,sortedUniqBy -FNDA:0,tail -FNDA:0,take -FNDA:0,takeRight -FNDA:0,takeRightWhile -FNDA:0,takeWhile -FNDA:0,(anonymous_1166) -FNDA:0,(anonymous_1167) -FNDA:0,(anonymous_1168) -FNDA:0,uniq -FNDA:0,uniqBy -FNDA:0,uniqWith -FNDA:0,unzip -FNDA:0,(anonymous_1173) -FNDA:0,(anonymous_1174) -FNDA:0,unzipWith -FNDA:0,(anonymous_1176) -FNDA:0,(anonymous_1177) -FNDA:0,(anonymous_1178) -FNDA:0,(anonymous_1179) -FNDA:0,(anonymous_1180) -FNDA:0,zipObject -FNDA:0,zipObjectDeep -FNDA:0,(anonymous_1183) -FNDA:0,chain -FNDA:0,tap -FNDA:0,thru -FNDA:0,(anonymous_1187) -FNDA:0,(anonymous_1188) -FNDA:0,(anonymous_1189) -FNDA:0,wrapperChain -FNDA:0,wrapperCommit -FNDA:0,wrapperNext -FNDA:0,wrapperToIterator -FNDA:0,wrapperPlant -FNDA:0,wrapperReverse -FNDA:0,wrapperValue -FNDA:0,(anonymous_1197) -FNDA:0,every -FNDA:0,filter -FNDA:0,flatMap -FNDA:0,flatMapDeep -FNDA:0,flatMapDepth -FNDA:0,forEach -FNDA:0,forEachRight -FNDA:0,(anonymous_1205) -FNDA:0,includes -FNDA:0,(anonymous_1207) -FNDA:0,(anonymous_1208) -FNDA:0,(anonymous_1209) -FNDA:0,map -FNDA:0,orderBy -FNDA:0,(anonymous_1212) -FNDA:0,(anonymous_1213) -FNDA:0,reduce -FNDA:0,reduceRight -FNDA:0,reject -FNDA:0,sample -FNDA:0,sampleSize -FNDA:0,shuffle -FNDA:0,size -FNDA:0,some -FNDA:0,(anonymous_1222) -FNDA:0,(anonymous_1223) -FNDA:0,after -FNDA:0,(anonymous_1225) -FNDA:0,ary -FNDA:0,before -FNDA:0,(anonymous_1228) -FNDA:0,(anonymous_1229) -FNDA:0,(anonymous_1230) -FNDA:0,curry -FNDA:0,curryRight -FNDA:0,debounce -FNDA:0,invokeFunc -FNDA:0,leadingEdge -FNDA:0,remainingWait -FNDA:0,shouldInvoke -FNDA:0,timerExpired -FNDA:0,trailingEdge -FNDA:0,cancel -FNDA:0,flush -FNDA:0,debounced -FNDA:0,(anonymous_1243) -FNDA:0,(anonymous_1244) -FNDA:0,flip -FNDA:0,memoize -FNDA:0,(anonymous_1247) -FNDA:0,negate -FNDA:0,(anonymous_1249) -FNDA:0,once -FNDA:0,(anonymous_1251) -FNDA:0,(anonymous_1252) -FNDA:0,(anonymous_1253) -FNDA:0,(anonymous_1254) -FNDA:0,(anonymous_1255) -FNDA:0,rest -FNDA:0,spread -FNDA:0,(anonymous_1258) -FNDA:0,throttle -FNDA:0,unary -FNDA:0,wrap -FNDA:0,castArray -FNDA:0,clone -FNDA:0,cloneWith -FNDA:0,cloneDeep -FNDA:0,cloneDeepWith -FNDA:0,conformsTo -FNDA:0,eq -FNDA:0,(anonymous_1269) -FNDA:0,(anonymous_1270) -FNDA:0,(anonymous_1271) -FNDA:0,isArrayLike -FNDA:0,isArrayLikeObject -FNDA:0,isBoolean -FNDA:0,isElement -FNDA:0,isEmpty -FNDA:0,isEqual -FNDA:0,isEqualWith -FNDA:0,isError -FNDA:0,isFinite -FNDA:0,isFunction -FNDA:0,isInteger -FNDA:0,isLength -FNDA:0,isObject -FNDA:0,isObjectLike -FNDA:0,isMatch -FNDA:0,isMatchWith -FNDA:0,isNaN -FNDA:0,isNative -FNDA:0,isNull -FNDA:0,isNil -FNDA:0,isNumber -FNDA:0,isPlainObject -FNDA:0,isSafeInteger -FNDA:0,isString -FNDA:0,isSymbol -FNDA:0,isUndefined -FNDA:0,isWeakMap -FNDA:0,isWeakSet -FNDA:0,(anonymous_1300) -FNDA:0,toArray -FNDA:0,toFinite -FNDA:0,toInteger -FNDA:0,toLength -FNDA:0,toNumber -FNDA:0,toPlainObject -FNDA:0,toSafeInteger -FNDA:0,toString -FNDA:0,(anonymous_1309) -FNDA:0,(anonymous_1310) -FNDA:0,(anonymous_1311) -FNDA:0,(anonymous_1312) -FNDA:0,create -FNDA:0,(anonymous_1314) -FNDA:0,(anonymous_1315) -FNDA:0,findKey -FNDA:0,findLastKey -FNDA:0,forIn -FNDA:0,forInRight -FNDA:0,forOwn -FNDA:0,forOwnRight -FNDA:0,functions -FNDA:0,functionsIn -FNDA:0,get -FNDA:0,has -FNDA:0,hasIn -FNDA:0,(anonymous_1327) -FNDA:0,(anonymous_1328) -FNDA:0,keys -FNDA:0,keysIn -FNDA:0,mapKeys -FNDA:0,(anonymous_1332) -FNDA:0,mapValues -FNDA:0,(anonymous_1334) -FNDA:0,(anonymous_1335) -FNDA:0,(anonymous_1336) -FNDA:0,(anonymous_1337) -FNDA:0,(anonymous_1338) -FNDA:0,omitBy -FNDA:0,(anonymous_1340) -FNDA:0,pickBy -FNDA:0,(anonymous_1342) -FNDA:0,(anonymous_1343) -FNDA:0,result -FNDA:0,set -FNDA:0,setWith -FNDA:0,transform -FNDA:0,(anonymous_1348) -FNDA:0,unset -FNDA:0,update -FNDA:0,updateWith -FNDA:0,values -FNDA:0,valuesIn -FNDA:0,clamp -FNDA:0,inRange -FNDA:0,random -FNDA:0,(anonymous_1357) -FNDA:0,capitalize -FNDA:0,deburr -FNDA:0,endsWith -FNDA:0,escape -FNDA:0,escapeRegExp -FNDA:0,(anonymous_1363) -FNDA:0,(anonymous_1364) -FNDA:0,pad -FNDA:0,padEnd -FNDA:0,padStart -FNDA:0,parseInt -FNDA:0,repeat -FNDA:0,replace -FNDA:0,(anonymous_1371) -FNDA:0,split -FNDA:0,(anonymous_1373) -FNDA:0,startsWith -FNDA:0,template -FNDA:0,(anonymous_1376) -FNDA:0,(anonymous_1377) -FNDA:0,toLower -FNDA:0,toUpper -FNDA:0,trim -FNDA:0,trimEnd -FNDA:0,trimStart -FNDA:0,truncate -FNDA:0,unescape -FNDA:0,(anonymous_1385) -FNDA:0,words -FNDA:0,(anonymous_1387) -FNDA:0,(anonymous_1388) -FNDA:0,(anonymous_1389) -FNDA:0,cond -FNDA:0,(anonymous_1391) -FNDA:0,(anonymous_1392) -FNDA:0,conforms -FNDA:0,constant -FNDA:0,(anonymous_1395) -FNDA:0,defaultTo -FNDA:0,identity -FNDA:0,iteratee -FNDA:0,matches -FNDA:0,matchesProperty -FNDA:0,(anonymous_1401) -FNDA:0,(anonymous_1402) -FNDA:0,(anonymous_1403) -FNDA:0,(anonymous_1404) -FNDA:0,mixin -FNDA:0,(anonymous_1406) -FNDA:0,(anonymous_1407) -FNDA:0,noConflict -FNDA:0,noop -FNDA:0,nthArg -FNDA:0,(anonymous_1411) -FNDA:0,property -FNDA:0,propertyOf -FNDA:0,(anonymous_1414) -FNDA:0,stubArray -FNDA:0,stubFalse -FNDA:0,stubObject -FNDA:0,stubString -FNDA:0,stubTrue -FNDA:0,times -FNDA:0,toPath -FNDA:0,uniqueId -FNDA:0,(anonymous_1423) -FNDA:0,(anonymous_1424) -FNDA:0,max -FNDA:0,maxBy -FNDA:0,mean -FNDA:0,meanBy -FNDA:0,min -FNDA:0,minBy -FNDA:0,(anonymous_1431) -FNDA:0,(anonymous_1432) -FNDA:0,sum -FNDA:0,sumBy -FNDA:0,(anonymous_1435) -FNDA:0,(anonymous_1436) -FNDA:0,(anonymous_1437) -FNDA:0,(anonymous_1438) -FNDA:0,(anonymous_1439) -FNDA:0,(anonymous_1440) -FNDA:0,(anonymous_1441) -FNDA:0,(anonymous_1442) -FNDA:0,(anonymous_1443) -FNDA:0,(anonymous_1444) -FNDA:0,(anonymous_1445) -FNDA:0,(anonymous_1446) -FNDA:0,(anonymous_1447) -FNDA:0,(anonymous_1448) -FNDA:0,(anonymous_1449) -FNDA:0,(anonymous_1450) -FNDA:0,(anonymous_1451) -FNDA:0,(anonymous_1452) -FNDA:0,(anonymous_1453) -FNDA:0,(anonymous_1454) -FNDA:0,(anonymous_1455) -FNDA:0,(anonymous_1456) -FNDA:0,(anonymous_1457) -FNDA:0,(anonymous_1458) -FNDA:0,(anonymous_1459) -FNDA:0,(anonymous_1460) -FNDA:0,(anonymous_1461) -FNDA:0,(anonymous_1462) -FNDA:0,(anonymous_1463) -FNDA:0,(anonymous_1464) -FNDA:0,memoize -FNDA:0,(anonymous_1466) -FNDA:0,(anonymous_1467) -FNDA:0,set -FNDA:0,(anonymous_1469) -FNDA:0,toString -FNDA:0,(anonymous_1471) -FNDA:0,(anonymous_1472) -FNDA:0,(anonymous_1473) -FNDA:0,(anonymous_1474) -FNDA:0,(anonymous_1475) -FNDA:0,(anonymous_1476) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:22,0 -DA:23,0 -DA:26,0 -DA:27,0 -DA:30,0 -DA:31,0 -DA:34,0 -DA:35,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:55,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:61,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:68,0 -DA:69,0 -DA:70,0 -DA:72,0 -DA:73,0 -DA:74,0 -DA:75,0 -DA:76,0 -DA:77,0 -DA:78,0 -DA:79,0 -DA:80,0 -DA:81,0 -DA:82,0 -DA:84,0 -DA:85,0 -DA:86,0 -DA:87,0 -DA:88,0 -DA:89,0 -DA:91,0 -DA:92,0 -DA:94,0 -DA:95,0 -DA:97,0 -DA:98,0 -DA:100,0 -DA:101,0 -DA:103,0 -DA:104,0 -DA:107,0 -DA:110,0 -DA:113,0 -DA:115,0 -DA:116,0 -DA:117,0 -DA:118,0 -DA:119,0 -DA:124,0 -DA:126,0 -DA:128,0 -DA:129,0 -DA:130,0 -DA:131,0 -DA:132,0 -DA:133,0 -DA:134,0 -DA:136,0 -DA:138,0 -DA:139,0 -DA:140,0 -DA:141,0 -DA:142,0 -DA:143,0 -DA:144,0 -DA:145,0 -DA:147,0 -DA:149,0 -DA:152,0 -DA:153,0 -DA:154,0 -DA:155,0 -DA:156,0 -DA:157,0 -DA:158,0 -DA:162,0 -DA:163,0 -DA:164,0 -DA:165,0 -DA:167,0 -DA:172,0 -DA:173,0 -DA:174,0 -DA:175,0 -DA:177,0 -DA:179,0 -DA:184,0 -DA:185,0 -DA:188,0 -DA:189,0 -DA:190,0 -DA:191,0 -DA:193,0 -DA:194,0 -DA:195,0 -DA:196,0 -DA:198,0 -DA:199,0 -DA:201,0 -DA:202,0 -DA:203,0 -DA:204,0 -DA:205,0 -DA:206,0 -DA:207,0 -DA:208,0 -DA:210,0 -DA:214,0 -DA:215,0 -DA:219,0 -DA:220,0 -DA:221,0 -DA:222,0 -DA:223,0 -DA:224,0 -DA:226,0 -DA:227,0 -DA:230,0 -DA:233,0 -DA:234,0 -DA:235,0 -DA:236,0 -DA:237,0 -DA:238,0 -DA:242,0 -DA:243,0 -DA:244,0 -DA:247,0 -DA:248,0 -DA:249,0 -DA:255,0 -DA:256,0 -DA:257,0 -DA:258,0 -DA:259,0 -DA:260,0 -DA:262,0 -DA:263,0 -DA:264,0 -DA:265,0 -DA:266,0 -DA:267,0 -DA:268,0 -DA:270,0 -DA:271,0 -DA:273,0 -DA:274,0 -DA:275,0 -DA:276,0 -DA:277,0 -DA:282,0 -DA:286,0 -DA:289,0 -DA:290,0 -DA:291,0 -DA:292,0 -DA:295,0 -DA:297,0 -DA:298,0 -DA:299,0 -DA:300,0 -DA:301,0 -DA:302,0 -DA:303,0 -DA:304,0 -DA:305,0 -DA:306,0 -DA:307,0 -DA:309,0 -DA:313,0 -DA:314,0 -DA:315,0 -DA:316,0 -DA:318,0 -DA:319,0 -DA:320,0 -DA:322,0 -DA:325,0 -DA:326,0 -DA:328,0 -DA:331,0 -DA:332,0 -DA:333,0 -DA:334,0 -DA:335,0 -DA:336,0 -DA:338,0 -DA:339,0 -DA:340,0 -DA:341,0 -DA:343,0 -DA:346,0 -DA:347,0 -DA:348,0 -DA:349,0 -DA:350,0 -DA:351,0 -DA:352,0 -DA:354,0 -DA:358,0 -DA:360,0 -DA:361,0 -DA:362,0 -DA:363,0 -DA:364,0 -DA:365,0 -DA:366,0 -DA:368,0 -DA:373,0 -DA:374,0 -DA:377,0 -DA:378,0 -DA:379,0 -DA:380,0 -DA:381,0 -DA:383,0 -DA:388,0 -DA:389,0 -DA:390,0 -DA:391,0 -DA:392,0 -DA:393,0 -DA:394,0 -DA:395,0 -DA:397,0 -DA:399,0 -DA:400,0 -DA:401,0 -DA:402,0 -DA:405,0 -DA:406,0 -DA:407,0 -DA:409,0 -DA:410,0 -DA:412,0 -DA:413,0 -DA:414,0 -DA:416,0 -DA:418,0 -DA:419,0 -DA:421,0 -DA:422,0 -DA:424,0 -DA:425,0 -DA:427,0 -DA:428,0 -DA:430,0 -DA:431,0 -DA:432,0 -DA:434,0 -DA:439,0 -DA:440,0 -DA:444,0 -DA:445,0 -DA:448,0 -DA:449,0 -DA:450,0 -DA:451,0 -DA:452,0 -DA:453,0 -DA:455,0 -DA:456,0 -DA:457,0 -DA:460,0 -DA:461,0 -DA:462,0 -DA:463,0 -DA:465,0 -DA:466,0 -DA:469,0 -DA:471,0 -DA:474,0 -DA:475,0 -DA:476,0 -DA:478,0 -DA:479,0 -DA:481,0 -DA:482,0 -DA:483,0 -DA:486,0 -DA:490,0 -DA:491,0 -DA:492,0 -DA:493,0 -DA:494,0 -DA:495,0 -DA:497,0 -DA:499,0 -DA:500,0 -DA:501,0 -DA:502,0 -DA:505,0 -DA:508,0 -DA:511,0 -DA:512,0 -DA:513,0 -DA:514,0 -DA:515,0 -DA:516,0 -DA:518,0 -DA:519,0 -DA:520,0 -DA:523,0 -DA:524,0 -DA:525,0 -DA:526,0 -DA:528,0 -DA:531,0 -DA:534,0 -DA:535,0 -DA:536,0 -DA:538,0 -DA:539,0 -DA:542,0 -DA:543,0 -DA:544,0 -DA:547,0 -DA:548,0 -DA:549,0 -DA:551,0 -DA:552,0 -DA:555,0 -DA:556,0 -DA:558,0 -DA:561,0 -DA:562,0 -DA:563,0 -DA:565,0 -DA:566,0 -DA:567,0 -DA:568,0 -DA:572,0 -DA:573,0 -DA:574,0 -DA:575,0 -DA:577,0 -DA:581,0 -DA:585,0 -DA:586,0 -DA:593,0 -DA:594,0 -DA:595,0 -DA:596,0 -DA:597,0 -DA:598,0 -DA:599,0 -DA:600,0 -DA:601,0 -DA:603,0 -DA:606,0 -DA:610,0 -DA:611,0 -DA:612,0 -DA:613,0 -DA:641,0 -DA:642,0 -DA:644,0 -DA:645,0 -DA:646,0 -DA:649,0 -DA:650,0 -DA:652,0 -DA:653,0 -DA:656,0 -DA:657,0 -DA:658,0 -DA:659,0 -DA:664,0 -DA:668,0 -DA:669,0 -DA:671,0 -DA:677,0 -DA:686,0 -DA:691,0 -DA:692,0 -DA:693,0 -DA:695,0 -DA:700,0 -DA:705,0 -DA:706,0 -DA:707,0 -DA:712,0 -DA:717,0 -DA:718,0 -DA:720,0 -DA:721,0 -DA:722,0 -DA:723,0 -DA:725,0 -DA:726,0 -DA:727,0 -DA:728,0 -DA:730,0 -DA:731,0 -DA:733,0 -DA:735,0 -DA:736,0 -DA:738,0 -DA:741,0 -DA:743,0 -DA:748,0 -DA:749,0 -DA:752,0 -DA:753,0 -DA:754,0 -DA:755,0 -DA:756,0 -DA:757,0 -DA:758,0 -DA:759,0 -DA:761,0 -DA:762,0 -DA:763,0 -DA:764,0 -DA:766,0 -DA:768,0 -DA:771,0 -DA:774,0 -DA:775,0 -DA:777,0 -DA:784,0 -DA:789,0 -DA:790,0 -DA:791,0 -DA:792,0 -DA:793,0 -DA:794,0 -DA:795,0 -DA:797,0 -DA:799,0 -DA:800,0 -DA:801,0 -DA:803,0 -DA:808,0 -DA:816,0 -DA:823,0 -DA:824,0 -DA:825,0 -DA:826,0 -DA:833,0 -DA:840,0 -DA:841,0 -DA:842,0 -DA:843,0 -DA:844,0 -DA:848,0 -DA:849,0 -DA:850,0 -DA:851,0 -DA:852,0 -DA:856,0 -DA:857,0 -DA:858,0 -DA:859,0 -DA:860,0 -DA:863,0 -DA:865,0 -DA:868,0 -DA:869,0 -DA:872,0 -DA:873,0 -DA:874,0 -DA:875,0 -DA:877,0 -DA:879,0 -DA:880,0 -DA:881,0 -DA:882,0 -DA:883,0 -DA:884,0 -DA:885,0 -DA:888,0 -DA:893,0 -DA:894,0 -DA:895,0 -DA:896,0 -DA:897,0 -DA:898,0 -DA:899,0 -DA:900,0 -DA:901,0 -DA:903,0 -DA:904,0 -DA:905,0 -DA:906,0 -DA:910,0 -DA:914,0 -DA:915,0 -DA:918,0 -DA:922,0 -DA:923,0 -DA:924,0 -DA:932,0 -DA:933,0 -DA:934,0 -DA:935,0 -DA:937,0 -DA:938,0 -DA:939,0 -DA:941,0 -DA:943,0 -DA:948,0 -DA:949,0 -DA:950,0 -DA:957,0 -DA:961,0 -DA:962,0 -DA:963,0 -DA:964,0 -DA:965,0 -DA:968,0 -DA:972,0 -DA:973,0 -DA:974,0 -DA:979,0 -DA:980,0 -DA:981,0 -DA:982,0 -DA:988,0 -DA:993,0 -DA:994,0 -DA:996,0 -DA:998,0 -DA:1000,0 -DA:1001,0 -DA:1003,0 -DA:1005,0 -DA:1006,0 -DA:1007,0 -DA:1009,0 -DA:1010,0 -DA:1011,0 -DA:1012,0 -DA:1013,0 -DA:1016,0 -DA:1017,0 -DA:1018,0 -DA:1020,0 -DA:1021,0 -DA:1022,0 -DA:1024,0 -DA:1025,0 -DA:1026,0 -DA:1028,0 -DA:1032,0 -DA:1033,0 -DA:1035,0 -DA:1039,0 -DA:1045,0 -DA:1046,0 -DA:1048,0 -DA:1049,0 -DA:1050,0 -DA:1052,0 -DA:1053,0 -DA:1054,0 -DA:1055,0 -DA:1056,0 -DA:1058,0 -DA:1060,0 -DA:1061,0 -DA:1063,0 -DA:1068,0 -DA:1069,0 -DA:1070,0 -DA:1071,0 -DA:1073,0 -DA:1078,0 -DA:1079,0 -DA:1080,0 -DA:1081,0 -DA:1082,0 -DA:1083,0 -DA:1085,0 -DA:1090,0 -DA:1091,0 -DA:1094,0 -DA:1095,0 -DA:1096,0 -DA:1100,0 -DA:1101,0 -DA:1102,0 -DA:1103,0 -DA:1104,0 -DA:1105,0 -DA:1106,0 -DA:1107,0 -DA:1109,0 -DA:1114,0 -DA:1115,0 -DA:1116,0 -DA:1118,0 -DA:1122,0 -DA:1126,0 -DA:1127,0 -DA:1128,0 -DA:1130,0 -DA:1131,0 -DA:1132,0 -DA:1133,0 -DA:1134,0 -DA:1135,0 -DA:1137,0 -DA:1142,0 -DA:1143,0 -DA:1144,0 -DA:1146,0 -DA:1151,0 -DA:1152,0 -DA:1154,0 -DA:1159,0 -DA:1162,0 -DA:1163,0 -DA:1164,0 -DA:1165,0 -DA:1166,0 -DA:1167,0 -DA:1168,0 -DA:1170,0 -DA:1173,0 -DA:1174,0 -DA:1178,0 -DA:1179,0 -DA:1180,0 -DA:1181,0 -DA:1182,0 -DA:1183,0 -DA:1185,0 -DA:1187,0 -DA:1188,0 -DA:1189,0 -DA:1190,0 -DA:1192,0 -DA:1193,0 -DA:1194,0 -DA:1195,0 -DA:1196,0 -DA:1197,0 -DA:1198,0 -DA:1199,0 -DA:1200,0 -DA:1202,0 -DA:1205,0 -DA:1208,0 -DA:1211,0 -DA:1212,0 -DA:1215,0 -DA:1216,0 -DA:1219,0 -DA:1220,0 -DA:1223,0 -DA:1224,0 -DA:1225,0 -DA:1227,0 -DA:1228,0 -DA:1229,0 -DA:1230,0 -DA:1232,0 -DA:1236,0 -DA:1237,0 -DA:1240,0 -DA:1241,0 -DA:1242,0 -DA:1244,0 -DA:1245,0 -DA:1246,0 -DA:1248,0 -DA:1249,0 -DA:1250,0 -DA:1251,0 -DA:1253,0 -DA:1256,0 -DA:1257,0 -DA:1261,0 -DA:1262,0 -DA:1263,0 -DA:1264,0 -DA:1265,0 -DA:1267,0 -DA:1270,0 -DA:1271,0 -DA:1274,0 -DA:1278,0 -DA:1279,0 -DA:1280,0 -DA:1283,0 -DA:1284,0 -DA:1292,0 -DA:1293,0 -DA:1294,0 -DA:1297,0 -DA:1298,0 -DA:1299,0 -DA:1301,0 -DA:1303,0 -DA:1304,0 -DA:1305,0 -DA:1306,0 -DA:1309,0 -DA:1310,0 -DA:1311,0 -DA:1313,0 -DA:1315,0 -DA:1316,0 -DA:1317,0 -DA:1321,0 -DA:1322,0 -DA:1330,0 -DA:1331,0 -DA:1332,0 -DA:1334,0 -DA:1337,0 -DA:1339,0 -DA:1343,0 -DA:1344,0 -DA:1345,0 -DA:1348,0 -DA:1349,0 -DA:1357,0 -DA:1358,0 -DA:1359,0 -DA:1361,0 -DA:1362,0 -DA:1363,0 -DA:1364,0 -DA:1365,0 -DA:1367,0 -DA:1368,0 -DA:1369,0 -DA:1370,0 -DA:1372,0 -DA:1373,0 -DA:1374,0 -DA:1375,0 -DA:1376,0 -DA:1377,0 -DA:1378,0 -DA:1380,0 -DA:1381,0 -DA:1382,0 -DA:1383,0 -DA:1384,0 -DA:1385,0 -DA:1386,0 -DA:1387,0 -DA:1388,0 -DA:1390,0 -DA:1391,0 -DA:1392,0 -DA:1395,0 -DA:1396,0 -DA:1399,0 -DA:1400,0 -DA:1401,0 -DA:1402,0 -DA:1403,0 -DA:1404,0 -DA:1405,0 -DA:1407,0 -DA:1408,0 -DA:1410,0 -DA:1415,0 -DA:1416,0 -DA:1419,0 -DA:1437,0 -DA:1438,0 -DA:1439,0 -DA:1444,0 -DA:1445,0 -DA:1446,0 -DA:1447,0 -DA:1448,0 -DA:1449,0 -DA:1450,0 -DA:1452,0 -DA:1456,0 -DA:1457,0 -DA:1458,0 -DA:1459,0 -DA:1461,0 -DA:1464,0 -DA:1467,0 -DA:1468,0 -DA:1469,0 -DA:1470,0 -DA:1472,0 -DA:1474,0 -DA:1475,0 -DA:1479,0 -DA:1480,0 -DA:1481,0 -DA:1482,0 -DA:1483,0 -DA:1484,0 -DA:1485,0 -DA:1488,0 -DA:1496,0 -DA:1497,0 -DA:1498,0 -DA:1500,0 -DA:1501,0 -DA:1502,0 -DA:1503,0 -DA:1504,0 -DA:1509,0 -DA:1512,0 -DA:1513,0 -DA:1518,0 -DA:1519,0 -DA:1520,0 -DA:1521,0 -DA:1526,0 -DA:1527,0 -DA:1528,0 -DA:1529,0 -DA:1530,0 -DA:1531,0 -DA:1532,0 -DA:1533,0 -DA:1536,0 -DA:1538,0 -DA:1543,0 -DA:1544,0 -DA:1547,0 -DA:1551,0 -DA:1558,0 -DA:1559,0 -DA:1560,0 -DA:1561,0 -DA:1562,0 -DA:1563,0 -DA:1564,0 -DA:1565,0 -DA:1566,0 -DA:1567,0 -DA:1569,0 -DA:1573,0 -DA:1574,0 -DA:1575,0 -DA:1583,0 -DA:1584,0 -DA:1585,0 -DA:1586,0 -DA:1587,0 -DA:1589,0 -DA:1590,0 -DA:1591,0 -DA:1592,0 -DA:1593,0 -DA:1595,0 -DA:1597,0 -DA:1598,0 -DA:1599,0 -DA:1600,0 -DA:1601,0 -DA:1602,0 -DA:1603,0 -DA:1610,0 -DA:1612,0 -DA:1617,0 -DA:1618,0 -DA:1619,0 -DA:1620,0 -DA:1623,0 -DA:1624,0 -DA:1627,0 -DA:1628,0 -DA:1635,0 -DA:1638,0 -DA:1639,0 -DA:1642,0 -DA:1644,0 -DA:1650,0 -DA:1652,0 -DA:1653,0 -DA:1654,0 -DA:1655,0 -DA:1656,0 -DA:1657,0 -DA:1659,0 -DA:1660,0 -DA:1661,0 -DA:1664,0 -DA:1666,0 -DA:1667,0 -DA:1669,0 -DA:1670,0 -DA:1671,0 -DA:1673,0 -DA:1676,0 -DA:1677,0 -DA:1681,0 -DA:1682,0 -DA:1685,0 -DA:1686,0 -DA:1689,0 -DA:1690,0 -DA:1692,0 -DA:1694,0 -DA:1695,0 -DA:1697,0 -DA:1698,0 -DA:1702,0 -DA:1703,0 -DA:1704,0 -DA:1705,0 -DA:1707,0 -DA:1711,0 -DA:1712,0 -DA:1713,0 -DA:1714,0 -DA:1716,0 -DA:1719,0 -DA:1721,0 -DA:1722,0 -DA:1725,0 -DA:1727,0 -DA:1728,0 -DA:1729,0 -DA:1732,0 -DA:1733,0 -DA:1737,0 -DA:1738,0 -DA:1741,0 -DA:1743,0 -DA:1744,0 -DA:1745,0 -DA:1748,0 -DA:1749,0 -DA:1751,0 -DA:1752,0 -DA:1754,0 -DA:1755,0 -DA:1756,0 -DA:1757,0 -DA:1760,0 -DA:1761,0 -DA:1762,0 -DA:1765,0 -DA:1766,0 -DA:1767,0 -DA:1768,0 -DA:1771,0 -DA:1772,0 -DA:1773,0 -DA:1774,0 -DA:1777,0 -DA:1778,0 -DA:1779,0 -DA:1780,0 -DA:1782,0 -DA:1783,0 -DA:1784,0 -DA:1787,0 -DA:1788,0 -DA:1791,0 -DA:1792,0 -DA:1793,0 -DA:1794,0 -DA:1797,0 -DA:1798,0 -DA:1799,0 -DA:1801,0 -DA:1805,0 -DA:1808,0 -DA:1809,0 -DA:1812,0 -DA:1818,0 -DA:1820,0 -DA:1831,0 -DA:1832,0 -DA:1833,0 -DA:1835,0 -DA:1836,0 -DA:1837,0 -DA:1838,0 -DA:1840,0 -DA:1869,0 -DA:1875,0 -DA:1876,0 -DA:1877,0 -DA:1878,0 -DA:1879,0 -DA:1884,0 -DA:1889,0 -DA:1907,0 -DA:1909,0 -DA:1910,0 -DA:1913,0 -DA:1914,0 -DA:1915,0 -DA:1919,0 -DA:1920,0 -DA:1924,0 -DA:1925,0 -DA:1929,0 -DA:1933,0 -DA:1934,0 -DA:1935,0 -DA:1936,0 -DA:1939,0 -DA:1943,0 -DA:1946,0 -DA:1947,0 -DA:1949,0 -DA:1950,0 -DA:1954,0 -DA:1956,0 -DA:1958,0 -DA:1959,0 -DA:1962,0 -DA:1963,0 -DA:1964,0 -DA:1966,0 -DA:1967,0 -DA:1971,0 -DA:1973,0 -DA:1977,0 -DA:1978,0 -DA:1979,0 -DA:1980,0 -DA:1984,0 -DA:1985,0 -DA:1986,0 -DA:1987,0 -DA:1989,0 -DA:1994,0 -DA:1995,0 -DA:1999,0 -DA:2000,0 -DA:2002,0 -DA:2006,0 -DA:2008,0 -DA:2009,0 -DA:2012,0 -DA:2014,0 -DA:2018,0 -DA:2019,0 -DA:2020,0 -DA:2021,0 -DA:2023,0 -DA:2030,0 -DA:2032,0 -DA:2033,0 -DA:2034,0 -DA:2036,0 -DA:2038,0 -DA:2039,0 -DA:2041,0 -DA:2044,0 -DA:2045,0 -DA:2046,0 -DA:2049,0 -DA:2050,0 -DA:2054,0 -DA:2056,0 -DA:2057,0 -DA:2060,0 -DA:2061,0 -DA:2064,0 -DA:2065,0 -DA:2067,0 -DA:2073,0 -DA:2074,0 -DA:2077,0 -DA:2081,0 -DA:2083,0 -DA:2084,0 -DA:2085,0 -DA:2088,0 -DA:2089,0 -DA:2092,0 -DA:2093,0 -DA:2094,0 -DA:2097,0 -DA:2099,0 -DA:2100,0 -DA:2102,0 -DA:2103,0 -DA:2104,0 -DA:2105,0 -DA:2107,0 -DA:2110,0 -DA:2111,0 -DA:2112,0 -DA:2115,0 -DA:2116,0 -DA:2117,0 -DA:2120,0 -DA:2121,0 -DA:2133,0 -DA:2135,0 -DA:2139,0 -DA:2140,0 -DA:2142,0 -DA:2143,0 -DA:2147,0 -DA:2148,0 -DA:2149,0 -DA:2150,0 -DA:2154,0 -DA:2155,0 -DA:2156,0 -DA:2157,0 -DA:2158,0 -DA:2159,0 -DA:2161,0 -DA:2165,0 -DA:2167,0 -DA:2168,0 -DA:2171,0 -DA:2172,0 -DA:2173,0 -DA:2179,0 -DA:2182,0 -DA:2187,0 -DA:2189,0 -DA:2191,0 -DA:2193,0 -DA:2194,0 -DA:2195,0 -DA:2199,0 -DA:2202,0 -DA:2204,0 -DA:2205,0 -DA:2207,0 -DA:2208,0 -DA:2209,0 -DA:2210,0 -DA:2212,0 -DA:2213,0 -DA:2215,0 -DA:2219,0 -DA:2222,0 -DA:2225,0 -DA:2228,0 -DA:2234,0 -DA:2237,0 -DA:2238,0 -DA:2239,0 -DA:2244,0 -DA:2245,0 -DA:2246,0 -DA:2247,0 -DA:2248,0 -DA:2251,0 -DA:2252,0 -DA:2253,0 -DA:2254,0 -DA:2257,0 -DA:2258,0 -DA:2259,0 -DA:2260,0 -DA:2261,0 -DA:2262,0 -DA:2264,0 -DA:2267,0 -DA:2268,0 -DA:2269,0 -DA:2270,0 -DA:2273,0 -DA:2274,0 -DA:2275,0 -DA:2276,0 -DA:2278,0 -DA:2279,0 -DA:2282,0 -DA:2284,0 -DA:2285,0 -DA:2286,0 -DA:2288,0 -DA:2289,0 -DA:2291,0 -DA:2292,0 -DA:2293,0 -DA:2295,0 -DA:2299,0 -DA:2300,0 -DA:2301,0 -DA:2302,0 -DA:2303,0 -DA:2305,0 -DA:2308,0 -DA:2311,0 -DA:2315,0 -DA:2316,0 -DA:2317,0 -DA:2321,0 -DA:2322,0 -DA:2323,0 -DA:2327,0 -DA:2328,0 -DA:2329,0 -DA:2330,0 -DA:2332,0 -DA:2333,0 -DA:2334,0 -DA:2339,0 -DA:2340,0 -DA:2342,0 -DA:2343,0 -DA:2345,0 -DA:2346,0 -DA:2347,0 -DA:2348,0 -DA:2350,0 -DA:2354,0 -DA:2358,0 -DA:2362,0 -DA:2366,0 -DA:2370,0 -DA:2373,0 -DA:2375,0 -DA:2376,0 -DA:2377,0 -DA:2378,0 -DA:2380,0 -DA:2381,0 -DA:2382,0 -DA:2383,0 -DA:2385,0 -DA:2386,0 -DA:2387,0 -DA:2388,0 -DA:2389,0 -DA:2391,0 -DA:2392,0 -DA:2396,0 -DA:2397,0 -DA:2398,0 -DA:2399,0 -DA:2402,0 -DA:2403,0 -DA:2405,0 -DA:2406,0 -DA:2409,0 -DA:2411,0 -DA:2412,0 -DA:2413,0 -DA:2415,0 -DA:2419,0 -DA:2422,0 -DA:2425,0 -DA:2429,0 -DA:2435,0 -DA:2438,0 -DA:2439,0 -DA:2440,0 -DA:2445,0 -DA:2446,0 -DA:2453,0 -DA:2454,0 -DA:2456,0 -DA:2461,0 -DA:2462,0 -DA:2464,0 -DA:2465,0 -DA:2466,0 -DA:2467,0 -DA:2468,0 -DA:2473,0 -DA:2476,0 -DA:2478,0 -DA:2479,0 -DA:2481,0 -DA:2483,0 -DA:2484,0 -DA:2485,0 -DA:2486,0 -DA:2487,0 -DA:2490,0 -DA:2492,0 -DA:2493,0 -DA:2494,0 -DA:2495,0 -DA:2496,0 -DA:2497,0 -DA:2500,0 -DA:2502,0 -DA:2503,0 -DA:2504,0 -DA:2505,0 -DA:2506,0 -DA:2507,0 -DA:2508,0 -DA:2514,0 -DA:2517,0 -DA:2518,0 -DA:2519,0 -DA:2521,0 -DA:2522,0 -DA:2523,0 -DA:2526,0 -DA:2527,0 -DA:2530,0 -DA:2536,0 -DA:2539,0 -DA:2540,0 -DA:2541,0 -DA:2545,0 -DA:2546,0 -DA:2547,0 -DA:2548,0 -DA:2553,0 -DA:2557,0 -DA:2558,0 -DA:2560,0 -DA:2561,0 -DA:2563,0 -DA:2567,0 -DA:2568,0 -DA:2570,0 -DA:2571,0 -DA:2573,0 -DA:2577,0 -DA:2579,0 -DA:2580,0 -DA:2582,0 -DA:2583,0 -DA:2584,0 -DA:2586,0 -DA:2590,0 -DA:2591,0 -DA:2592,0 -DA:2593,0 -DA:2595,0 -DA:2598,0 -DA:2599,0 -DA:2600,0 -DA:2601,0 -DA:2603,0 -DA:2604,0 -DA:2605,0 -DA:2606,0 -DA:2607,0 -DA:2610,0 -DA:2611,0 -DA:2612,0 -DA:2613,0 -DA:2614,0 -DA:2617,0 -DA:2620,0 -DA:2621,0 -DA:2623,0 -DA:2624,0 -DA:2625,0 -DA:2626,0 -DA:2630,0 -DA:2632,0 -DA:2639,0 -DA:2640,0 -DA:2643,0 -DA:2644,0 -DA:2645,0 -DA:2646,0 -DA:2648,0 -DA:2649,0 -DA:2650,0 -DA:2651,0 -DA:2652,0 -DA:2655,0 -DA:2658,0 -DA:2659,0 -DA:2660,0 -DA:2661,0 -DA:2662,0 -DA:2665,0 -DA:2666,0 -DA:2667,0 -DA:2668,0 -DA:2671,0 -DA:2674,0 -DA:2675,0 -DA:2676,0 -DA:2679,0 -DA:2680,0 -DA:2681,0 -DA:2684,0 -DA:2685,0 -DA:2686,0 -DA:2689,0 -DA:2690,0 -DA:2692,0 -DA:2698,0 -DA:2699,0 -DA:2701,0 -DA:2707,0 -DA:2708,0 -DA:2709,0 -DA:2710,0 -DA:2712,0 -DA:2713,0 -DA:2714,0 -DA:2715,0 -DA:2716,0 -DA:2718,0 -DA:2720,0 -DA:2722,0 -DA:2725,0 -DA:2726,0 -DA:2727,0 -DA:2728,0 -DA:2730,0 -DA:2731,0 -DA:2732,0 -DA:2733,0 -DA:2734,0 -DA:2736,0 -DA:2738,0 -DA:2740,0 -DA:2743,0 -DA:2744,0 -DA:2745,0 -DA:2746,0 -DA:2749,0 -DA:2750,0 -DA:2751,0 -DA:2752,0 -DA:2755,0 -DA:2756,0 -DA:2757,0 -DA:2758,0 -DA:2761,0 -DA:2762,0 -DA:2764,0 -DA:2770,0 -DA:2771,0 -DA:2773,0 -DA:2779,0 -DA:2780,0 -DA:2781,0 -DA:2784,0 -DA:2785,0 -DA:2786,0 -DA:2789,0 -DA:2790,0 -DA:2791,0 -DA:2794,0 -DA:2795,0 -DA:2796,0 -DA:2800,0 -DA:2801,0 -DA:2802,0 -DA:2805,0 -DA:2806,0 -DA:2807,0 -DA:2808,0 -DA:2809,0 -DA:2811,0 -DA:2812,0 -DA:2813,0 -DA:2814,0 -DA:2815,0 -DA:2818,0 -DA:2821,0 -DA:2822,0 -DA:2823,0 -DA:2824,0 -DA:2825,0 -DA:2827,0 -DA:2828,0 -DA:2829,0 -DA:2830,0 -DA:2831,0 -DA:2834,0 -DA:2837,0 -DA:2838,0 -DA:2839,0 -DA:2840,0 -DA:2841,0 -DA:2842,0 -DA:2843,0 -DA:2847,0 -DA:2848,0 -DA:2849,0 -DA:2854,0 -DA:2855,0 -DA:2856,0 -DA:2857,0 -DA:2858,0 -DA:2859,0 -DA:2860,0 -DA:2862,0 -DA:2864,0 -DA:2867,0 -DA:2868,0 -DA:2869,0 -DA:2870,0 -DA:2871,0 -DA:2872,0 -DA:2873,0 -DA:2875,0 -DA:2877,0 -DA:2881,0 -DA:2882,0 -DA:2883,0 -DA:2887,0 -DA:2888,0 -DA:2889,0 -DA:2890,0 -DA:2891,0 -DA:2892,0 -DA:2893,0 -DA:2894,0 -DA:2895,0 -DA:2897,0 -DA:2899,0 -DA:2902,0 -DA:2903,0 -DA:2904,0 -DA:2905,0 -DA:2906,0 -DA:2907,0 -DA:2908,0 -DA:2909,0 -DA:2910,0 -DA:2912,0 -DA:2914,0 -DA:2917,0 -DA:2918,0 -DA:2919,0 -DA:2920,0 -DA:2921,0 -DA:2923,0 -DA:2926,0 -DA:2927,0 -DA:2928,0 -DA:2929,0 -DA:2930,0 -DA:2931,0 -DA:2934,0 -DA:2937,0 -DA:2938,0 -DA:2939,0 -DA:2940,0 -DA:2941,0 -DA:2943,0 -DA:2946,0 -DA:2947,0 -DA:2948,0 -DA:2949,0 -DA:2950,0 -DA:2951,0 -DA:2954,0 -DA:2957,0 -DA:2958,0 -DA:2959,0 -DA:2960,0 -DA:2961,0 -DA:2962,0 -DA:2963,0 -DA:2964,0 -DA:2967,0 -DA:2968,0 -DA:2969,0 -DA:2970,0 -DA:2971,0 -DA:2972,0 -DA:2973,0 -DA:2975,0 -DA:2977,0 -DA:2980,0 -DA:2981,0 -DA:2982,0 -DA:2983,0 -DA:2984,0 -DA:2985,0 -DA:2986,0 -DA:2988,0 -DA:2990,0 -DA:2993,0 -DA:2994,0 -DA:2995,0 -DA:2996,0 -DA:2997,0 -DA:2998,0 -DA:2999,0 -DA:3000,0 -DA:3001,0 -DA:3003,0 -DA:3005,0 -DA:3008,0 -DA:3009,0 -DA:3010,0 -DA:3011,0 -DA:3012,0 -DA:3013,0 -DA:3014,0 -DA:3015,0 -DA:3016,0 -DA:3017,0 -DA:3019,0 -DA:3021,0 -DA:3025,0 -DA:3026,0 -DA:3027,0 -DA:3031,0 -DA:3032,0 -DA:3034,0 -DA:3035,0 -DA:3038,0 -DA:3039,0 -DA:3042,0 -DA:3043,0 -DA:3047,0 -DA:3048,0 -DA:3050,0 -DA:3051,0 -DA:3054,0 -DA:3055,0 -DA:3058,0 -DA:3059,0 -DA:3063,0 -DA:3064,0 -DA:3065,0 -DA:3066,0 -DA:3067,0 -DA:3068,0 -DA:3071,0 -DA:3072,0 -DA:3075,0 -DA:3076,0 -DA:3078,0 -DA:3079,0 -DA:3082,0 -DA:3083,0 -DA:3084,0 -DA:3087,0 -DA:3090,0 -DA:3092,0 -DA:3093,0 -DA:3095,0 -DA:3097,0 -DA:3098,0 -DA:3101,0 -DA:3104,0 -DA:3108,0 -DA:3109,0 -DA:3110,0 -DA:3111,0 -DA:3113,0 -DA:3116,0 -DA:3117,0 -DA:3119,0 -DA:3120,0 -DA:3123,0 -DA:3124,0 -DA:3125,0 -DA:3128,0 -DA:3129,0 -DA:3130,0 -DA:3131,0 -DA:3135,0 -DA:3142,0 -DA:3143,0 -DA:3144,0 -DA:3145,0 -DA:3147,0 -DA:3148,0 -DA:3149,0 -DA:3151,0 -DA:3154,0 -DA:3161,0 -DA:3166,0 -DA:3167,0 -DA:3168,0 -DA:3171,0 -DA:3174,0 -DA:3175,0 -DA:3177,0 -DA:3178,0 -DA:3179,0 -DA:3180,0 -DA:3181,0 -DA:3182,0 -DA:3183,0 -DA:3184,0 -DA:3185,0 -DA:3186,0 -DA:3187,0 -DA:3188,0 -DA:3189,0 -DA:3190,0 -DA:3191,0 -DA:3192,0 -DA:3193,0 -DA:3194,0 -DA:3195,0 -DA:3196,0 -DA:3197,0 -DA:3198,0 -DA:3199,0 -DA:3200,0 -DA:3201,0 -DA:3202,0 -DA:3203,0 -DA:3204,0 -DA:3205,0 -DA:3206,0 -DA:3207,0 -DA:3208,0 -DA:3209,0 -DA:3210,0 -DA:3211,0 -DA:3212,0 -DA:3213,0 -DA:3214,0 -DA:3215,0 -DA:3216,0 -DA:3217,0 -DA:3218,0 -DA:3219,0 -DA:3220,0 -DA:3221,0 -DA:3222,0 -DA:3223,0 -DA:3224,0 -DA:3226,0 -DA:3229,0 -DA:3233,0 -DA:3235,0 -DA:3237,0 -DA:3238,0 -DA:3240,0 -DA:3244,0 -DA:3245,0 -DA:3249,0 -DA:3250,0 -DA:3254,0 -DA:3256,0 -DA:3257,0 -DA:3258,0 -DA:3260,0 -DA:3261,0 -DA:3264,0 -DA:3266,0 -DA:3268,0 -DA:3270,0 -DA:3271,0 -DA:3272,0 -DA:3274,0 -DA:3275,0 -DA:3279,0 -DA:3281,0 -DA:3285,0 -DA:3286,0 -DA:3287,0 -DA:3288,0 -DA:3292,0 -DA:3293,0 -DA:3295,0 -DA:3298,0 -DA:3301,0 -DA:3302,0 -DA:3303,0 -DA:3304,0 -DA:3305,0 -DA:3306,0 -DA:3310,0 -DA:3311,0 -DA:3312,0 -DA:3317,0 -DA:3318,0 -DA:3319,0 -DA:3326,0 -DA:3330,0 -DA:3334,0 -DA:3335,0 -DA:3337,0 -DA:3339,0 -DA:3344,0 -DA:3345,0 -DA:3346,0 -DA:3348,0 -DA:3349,0 -DA:3350,0 -DA:3351,0 -DA:3352,0 -DA:3355,0 -DA:3359,0 -DA:3363,0 -DA:3364,0 -DA:3365,0 -DA:3367,0 -DA:3372,0 -DA:3374,0 -DA:3377,0 -DA:3381,0 -DA:3382,0 -DA:3383,0 -DA:3384,0 -DA:3385,0 -DA:3386,0 -DA:3387,0 -DA:3390,0 -DA:3391,0 -DA:3393,0 -DA:3394,0 -DA:3396,0 -DA:3397,0 -DA:3398,0 -DA:3399,0 -DA:3400,0 -DA:3401,0 -DA:3402,0 -DA:3403,0 -DA:3404,0 -DA:3410,0 -DA:3411,0 -DA:3419,0 -DA:3420,0 -DA:3423,0 -DA:3426,0 -DA:3428,0 -DA:3431,0 -DA:3434,0 -DA:3435,0 -DA:3436,0 -DA:3437,0 -DA:3438,0 -DA:3441,0 -DA:3442,0 -DA:3443,0 -DA:3444,0 -DA:3445,0 -DA:3446,0 -DA:3447,0 -DA:3450,0 -DA:3455,0 -DA:3456,0 -DA:3460,0 -DA:3464,0 -DA:3468,0 -DA:3469,0 -DA:3470,0 -DA:3474,0 -DA:3476,0 -DA:3477,0 -DA:3478,0 -DA:3479,0 -DA:3480,0 -DA:3482,0 -DA:3483,0 -DA:3484,0 -DA:3485,0 -DA:3486,0 -DA:3487,0 -DA:3490,0 -DA:3493,0 -DA:3494,0 -DA:3498,0 -DA:3500,0 -DA:3501,0 -DA:3502,0 -DA:3503,0 -DA:3504,0 -DA:3505,0 -DA:3506,0 -DA:3508,0 -DA:3510,0 -DA:3511,0 -DA:3512,0 -DA:3513,0 -DA:3515,0 -DA:3516,0 -DA:3517,0 -DA:3518,0 -DA:3520,0 -DA:3521,0 -DA:3522,0 -DA:3523,0 -DA:3525,0 -DA:3526,0 -DA:3528,0 -DA:3531,0 -DA:3533,0 -DA:3534,0 -DA:3535,0 -DA:3536,0 -DA:3537,0 -DA:3538,0 -DA:3539,0 -DA:3541,0 -DA:3543,0 -DA:3544,0 -DA:3545,0 -DA:3547,0 -DA:3548,0 -DA:3549,0 -DA:3550,0 -DA:3552,0 -DA:3553,0 -DA:3555,0 -DA:3557,0 -DA:3558,0 -DA:3559,0 -DA:3562,0 -DA:3563,0 -DA:3564,0 -DA:3565,0 -DA:3566,0 -DA:3567,0 -DA:3569,0 -DA:3570,0 -DA:3574,0 -DA:3576,0 -DA:3577,0 -DA:3578,0 -DA:3580,0 -DA:3584,0 -DA:3586,0 -DA:3587,0 -DA:3613,0 -DA:3614,0 -DA:3616,0 -DA:3619,0 -DA:3621,0 -DA:3622,0 -DA:3626,0 -DA:3630,0 -DA:3631,0 -DA:3632,0 -DA:3633,0 -DA:3634,0 -DA:3637,0 -DA:3640,0 -DA:3641,0 -DA:3644,0 -DA:3645,0 -DA:3647,0 -DA:3648,0 -DA:3649,0 -DA:3651,0 -DA:3655,0 -DA:3657,0 -DA:3658,0 -DA:3660,0 -DA:3661,0 -DA:3664,0 -DA:3665,0 -DA:3667,0 -DA:3668,0 -DA:3670,0 -DA:3671,0 -DA:3674,0 -DA:3675,0 -DA:3676,0 -DA:3677,0 -DA:3678,0 -DA:3680,0 -DA:3681,0 -DA:3682,0 -DA:3683,0 -DA:3684,0 -DA:3686,0 -DA:3687,0 -DA:3688,0 -DA:3689,0 -DA:3692,0 -DA:3695,0 -DA:3698,0 -DA:3699,0 -DA:3701,0 -DA:3702,0 -DA:3706,0 -DA:3707,0 -DA:3711,0 -DA:3713,0 -DA:3714,0 -DA:3716,0 -DA:3719,0 -DA:3722,0 -DA:3724,0 -DA:3725,0 -DA:3727,0 -DA:3730,0 -DA:3731,0 -DA:3732,0 -DA:3736,0 -DA:3738,0 -DA:3743,0 -DA:3746,0 -DA:3748,0 -DA:3749,0 -DA:3750,0 -DA:3752,0 -DA:3755,0 -DA:3757,0 -DA:3758,0 -DA:3759,0 -DA:3763,0 -DA:3764,0 -DA:3766,0 -DA:3770,0 -DA:3773,0 -DA:3774,0 -DA:3776,0 -DA:3777,0 -DA:3779,0 -DA:3780,0 -DA:3781,0 -DA:3783,0 -DA:3785,0 -DA:3786,0 -DA:3787,0 -DA:3789,0 -DA:3790,0 -DA:3791,0 -DA:3793,0 -DA:3794,0 -DA:3798,0 -DA:3799,0 -DA:3801,0 -DA:3802,0 -DA:3803,0 -DA:3805,0 -DA:3808,0 -DA:3809,0 -DA:3812,0 -DA:3815,0 -DA:3818,0 -DA:3819,0 -DA:3822,0 -DA:3823,0 -DA:3824,0 -DA:3825,0 -DA:3826,0 -DA:3827,0 -DA:3831,0 -DA:3832,0 -DA:3833,0 -DA:3834,0 -DA:3836,0 -DA:3837,0 -DA:3838,0 -DA:3841,0 -DA:3843,0 -DA:3844,0 -DA:3847,0 -DA:3848,0 -DA:3850,0 -DA:3852,0 -DA:3855,0 -DA:3857,0 -DA:3858,0 -DA:3859,0 -DA:3860,0 -DA:3862,0 -DA:3863,0 -DA:3866,0 -DA:3868,0 -DA:3869,0 -DA:3870,0 -DA:3871,0 -DA:3873,0 -DA:3874,0 -DA:3878,0 -DA:3882,0 -DA:3886,0 -DA:3890,0 -DA:3894,0 -DA:3896,0 -DA:3897,0 -DA:3898,0 -DA:3909,0 -DA:3910,0 -DA:3911,0 -DA:3912,0 -DA:3913,0 -DA:3914,0 -DA:3928,0 -DA:3929,0 -DA:3938,0 -DA:3939,0 -DA:3943,0 -DA:3945,0 -DA:3946,0 -DA:3947,0 -DA:3949,0 -DA:3952,0 -DA:3954,0 -DA:3956,0 -DA:3957,0 -DA:3960,0 -DA:3961,0 -DA:3964,0 -DA:3966,0 -DA:3968,0 -DA:3969,0 -DA:3970,0 -DA:3972,0 -DA:3975,0 -DA:3977,0 -DA:3979,0 -DA:3981,0 -DA:3983,0 -DA:3984,0 -DA:3987,0 -DA:3992,0 -DA:3993,0 -DA:3994,0 -DA:3996,0 -DA:3999,0 -DA:4000,0 -DA:4001,0 -DA:4003,0 -DA:4005,0 -DA:4006,0 -DA:4011,0 -DA:4012,0 -DA:4014,0 -DA:4015,0 -DA:4017,0 -DA:4018,0 -DA:4019,0 -DA:4020,0 -DA:4021,0 -DA:4022,0 -DA:4023,0 -DA:4026,0 -DA:4027,0 -DA:4029,0 -DA:4030,0 -DA:4031,0 -DA:4034,0 -DA:4035,0 -DA:4036,0 -DA:4037,0 -DA:4038,0 -DA:4041,0 -DA:4042,0 -DA:4043,0 -DA:4049,0 -DA:4050,0 -DA:4052,0 -DA:4053,0 -DA:4055,0 -DA:4056,0 -DA:4057,0 -DA:4058,0 -DA:4059,0 -DA:4060,0 -DA:4064,0 -DA:4065,0 -DA:4066,0 -DA:4067,0 -DA:4068,0 -DA:4069,0 -DA:4070,0 -DA:4072,0 -DA:4073,0 -DA:4076,0 -DA:4077,0 -DA:4078,0 -DA:4080,0 -DA:4083,0 -DA:4085,0 -DA:4088,0 -DA:4090,0 -DA:4092,0 -DA:4093,0 -DA:4098,0 -DA:4109,0 -DA:4112,0 -DA:4113,0 -DA:4114,0 -DA:4115,0 -DA:4116,0 -DA:4117,0 -DA:4118,0 -DA:4119,0 -DA:4122,0 -DA:4123,0 -DA:4124,0 -DA:4127,0 -DA:4134,0 -DA:4135,0 -DA:4136,0 -DA:4150,0 -DA:4162,0 -DA:4163,0 -DA:4164,0 -DA:4165,0 -DA:4167,0 -DA:4181,0 -DA:4182,0 -DA:4183,0 -DA:4186,0 -DA:4187,0 -DA:4190,0 -DA:4191,0 -DA:4192,0 -DA:4193,0 -DA:4210,0 -DA:4211,0 -DA:4212,0 -DA:4215,0 -DA:4216,0 -DA:4217,0 -DA:4219,0 -DA:4220,0 -DA:4221,0 -DA:4225,0 -DA:4226,0 -DA:4229,0 -DA:4232,0 -DA:4244,0 -DA:4245,0 -DA:4246,0 -DA:4247,0 -DA:4248,0 -DA:4249,0 -DA:4251,0 -DA:4252,0 -DA:4266,0 -DA:4267,0 -DA:4269,0 -DA:4270,0 -DA:4272,0 -DA:4273,0 -DA:4275,0 -DA:4292,0 -DA:4301,0 -DA:4302,0 -DA:4303,0 -DA:4304,0 -DA:4305,0 -DA:4307,0 -DA:4319,0 -DA:4320,0 -DA:4322,0 -DA:4323,0 -DA:4324,0 -DA:4340,0 -DA:4341,0 -DA:4342,0 -DA:4345,0 -DA:4347,0 -DA:4348,0 -DA:4350,0 -DA:4356,0 -DA:4363,0 -DA:4365,0 -DA:4366,0 -DA:4369,0 -DA:4371,0 -DA:4372,0 -DA:4375,0 -DA:4376,0 -DA:4378,0 -DA:4379,0 -DA:4382,0 -DA:4383,0 -DA:4384,0 -DA:4387,0 -DA:4391,0 -DA:4392,0 -DA:4396,0 -DA:4397,0 -DA:4400,0 -DA:4401,0 -DA:4404,0 -DA:4408,0 -DA:4430,0 -DA:4439,0 -DA:4442,0 -DA:4445,0 -DA:4446,0 -DA:4447,0 -DA:4450,0 -DA:4451,0 -DA:4452,0 -DA:4453,0 -DA:4457,0 -DA:4463,0 -DA:4464,0 -DA:4468,0 -DA:4472,0 -DA:4473,0 -DA:4474,0 -DA:4475,0 -DA:4481,0 -DA:4482,0 -DA:4483,0 -DA:4486,0 -DA:4487,0 -DA:4489,0 -DA:4490,0 -DA:4492,0 -DA:4493,0 -DA:4496,0 -DA:4498,0 -DA:4499,0 -DA:4500,0 -DA:4501,0 -DA:4503,0 -DA:4504,0 -DA:4505,0 -DA:4508,0 -DA:4511,0 -DA:4512,0 -DA:4513,0 -DA:4514,0 -DA:4518,0 -DA:4519,0 -DA:4522,0 -DA:4537,0 -DA:4538,0 -DA:4556,0 -DA:4557,0 -DA:4566,0 -DA:4593,0 -DA:4598,0 -DA:4599,0 -DA:4601,0 -DA:4602,0 -DA:4604,0 -DA:4607,0 -DA:4608,0 -DA:4613,0 -DA:4647,0 -DA:4650,0 -DA:4651,0 -DA:4652,0 -DA:4653,0 -DA:4655,0 -DA:4656,0 -DA:4659,0 -DA:4660,0 -DA:4662,0 -DA:4663,0 -DA:4664,0 -DA:4667,0 -DA:4669,0 -DA:4670,0 -DA:4673,0 -DA:4674,0 -DA:4675,0 -DA:4678,0 -DA:4679,0 -DA:4680,0 -DA:4682,0 -DA:4683,0 -DA:4686,0 -DA:4687,0 -DA:4689,0 -DA:4690,0 -DA:4691,0 -DA:4692,0 -DA:4694,0 -DA:4698,0 -DA:4701,0 -DA:4702,0 -DA:4729,0 -DA:4730,0 -DA:4732,0 -DA:4735,0 -DA:4738,0 -DA:4741,0 -DA:4745,0 -DA:4746,0 -DA:4747,0 -DA:4748,0 -DA:4749,0 -DA:4752,0 -DA:4753,0 -DA:4754,0 -DA:4755,0 -DA:4756,0 -DA:4757,0 -DA:4760,0 -DA:4766,0 -DA:4767,0 -DA:4771,0 -DA:4772,0 -DA:4776,0 -DA:4777,0 -DA:4778,0 -DA:4779,0 -DA:4781,0 -DA:4784,0 -DA:4785,0 -DA:4786,0 -DA:4787,0 -DA:4789,0 -DA:4795,0 -DA:4796,0 -DA:4799,0 -DA:4810,0 -DA:4811,0 -DA:4812,0 -DA:4813,0 -DA:4818,0 -DA:4821,0 -DA:4827,0 -DA:4828,0 -DA:4831,0 -DA:4832,0 -DA:4834,0 -DA:4836,0 -DA:4837,0 -DA:4838,0 -DA:4839,0 -DA:4840,0 -DA:4844,0 -DA:4845,0 -DA:4847,0 -DA:4848,0 -DA:4850,0 -DA:4851,0 -DA:4853,0 -DA:4854,0 -DA:4856,0 -DA:4857,0 -DA:4858,0 -DA:4860,0 -DA:4867,0 -DA:4868,0 -DA:4872,0 -DA:4876,0 -DA:4880,0 -DA:4881,0 -DA:4892,0 -DA:4894,0 -DA:4897,0 -DA:4898,0 -DA:4901,0 -DA:4904,0 -DA:4905,0 -DA:4907,0 -DA:4910,0 -DA:4911,0 -DA:4915,0 -DA:4918,0 -DA:4921,0 -DA:4926,0 -DA:4931,0 -DA:4934,0 -DA:4936,0 -DA:4939,0 -DA:4940,0 -DA:4948,0 -DA:4949,0 -DA:4951,0 -DA:4952,0 -DA:4956,0 -DA:4959,0 -DA:4960,0 -DA:4966,0 -DA:4968,0 -DA:4969,0 -DA:4971,0 -DA:4977,0 -DA:4981,0 -DA:4983,0 -DA:4987,0 -DA:4989,0 -DA:4990,0 -DA:4994,0 -DA:4995,0 -DA:4996,0 -DA:4999,0 -DA:5001,0 -DA:5002,0 -DA:5003,0 -DA:5004,0 -DA:5005,0 -DA:5006,0 -DA:5007,0 -DA:5008,0 -DA:5014,0 -DA:5018,0 -DA:5019,0 -DA:5020,0 -DA:5025,0 -DA:5029,0 -DA:5032,0 -DA:5035,0 -DA:5037,0 -DA:5038,0 -DA:5039,0 -DA:5040,0 -DA:5041,0 -DA:5042,0 -DA:5043,0 -DA:5049,0 -DA:5051,0 -DA:5052,0 -DA:5054,0 -DA:5057,0 -DA:5059,0 -DA:5060,0 -DA:5062,0 -DA:5069,0 -DA:5070,0 -DA:5072,0 -DA:5073,0 -DA:5074,0 -DA:5075,0 -DA:5076,0 -DA:5080,0 -DA:5084,0 -DA:5085,0 -DA:5086,0 -DA:5089,0 -DA:5090,0 -DA:5094,0 -DA:5095,0 -DA:5096,0 -DA:5097,0 -DA:5098,0 -DA:5099,0 -DA:5100,0 -DA:5101,0 -DA:5102,0 -DA:5103,0 -DA:5104,0 -DA:5105,0 -DA:5106,0 -DA:5108,0 -DA:5109,0 -DA:5111,0 -DA:5112,0 -DA:5115,0 -DA:5116,0 -DA:5117,0 -DA:5120,0 -DA:5121,0 -DA:5122,0 -DA:5124,0 -DA:5126,0 -DA:5127,0 -DA:5130,0 -DA:5132,0 -DA:5133,0 -DA:5136,0 -DA:5148,0 -DA:5155,0 -DA:5156,0 -DA:5157,0 -DA:5158,0 -DA:5159,0 -DA:5160,0 -DA:5164,0 -DA:5166,0 -DA:5167,0 -DA:5170,0 -DA:5171,0 -DA:5172,0 -DA:5173,0 -DA:5174,0 -DA:5175,0 -DA:5176,0 -DA:5178,0 -DA:5182,0 -DA:5183,0 -DA:5185,0 -DA:5186,0 -DA:5188,0 -DA:5190,0 -DA:5191,0 -DA:5193,0 -DA:5196,0 -DA:5197,0 -DA:5203,0 -DA:5204,0 -DA:5207,0 -DA:5208,0 -DA:5209,0 -DA:5210,0 -DA:5212,0 -DA:5216,0 -DA:5220,0 -DA:5221,0 -DA:5222,0 -DA:5223,0 -DA:5225,0 -DA:5226,0 -DA:5231,0 -DA:5234,0 -DA:5235,0 -DA:5236,0 -DA:5238,0 -DA:5239,0 -DA:5242,0 -DA:5245,0 -DA:5246,0 -DA:5247,0 -DA:5248,0 -DA:5274,0 -DA:5275,0 -DA:5278,0 -DA:5279,0 -DA:5280,0 -DA:5285,0 -DA:5286,0 -DA:5287,0 -DA:5290,0 -DA:5291,0 -DA:5292,0 -DA:5293,0 -DA:5295,0 -DA:5296,0 -DA:5298,0 -DA:5299,0 -DA:5304,0 -DA:5305,0 -DA:5308,0 -DA:5309,0 -DA:5311,0 -DA:5313,0 -DA:5314,0 -DA:5315,0 -DA:5318,0 -DA:5322,0 -DA:5323,0 -DA:5326,0 -DA:5327,0 -DA:5329,0 -DA:5330,0 -DA:5332,0 -DA:5336,0 -DA:5337,0 -DA:5342,0 -DA:5344,0 -DA:5349,0 -DA:5350,0 -DA:5351,0 -DA:5352,0 -DA:5353,0 -DA:5354,0 -DA:5357,0 -DA:5360,0 -DA:5367,0 -DA:5368,0 -DA:5369,0 -DA:5370,0 -DA:5371,0 -DA:5372,0 -DA:5373,0 -DA:5375,0 -DA:5380,0 -DA:5381,0 -DA:5382,0 -DA:5393,0 -DA:5394,0 -DA:5395,0 -DA:5400,0 -DA:5401,0 -DA:5403,0 -DA:5404,0 -DA:5405,0 -DA:5407,0 -DA:5409,0 -DA:5411,0 -DA:5418,0 -DA:5419,0 -DA:5422,0 -DA:5423,0 -DA:5424,0 -DA:5426,0 -DA:5428,0 -DA:5429,0 -DA:5431,0 -DA:5432,0 -DA:5434,0 -DA:5435,0 -DA:5437,0 -DA:5438,0 -DA:5440,0 -DA:5444,0 -DA:5445,0 -DA:5446,0 -DA:5448,0 -DA:5450,0 -DA:5452,0 -DA:5453,0 -DA:5454,0 -DA:5459,0 -DA:5460,0 -DA:5467,0 -DA:5468,0 -DA:5470,0 -DA:5472,0 -DA:5474,0 -DA:5475,0 -DA:5476,0 -DA:5477,0 -DA:5478,0 -DA:5479,0 -DA:5480,0 -DA:5481,0 -DA:5483,0 -DA:5490,0 -DA:5492,0 -DA:5495,0 -DA:5497,0 -DA:5498,0 -DA:5499,0 -DA:5503,0 -DA:5507,0 -DA:5508,0 -DA:5510,0 -DA:5517,0 -DA:5518,0 -DA:5519,0 -DA:5520,0 -DA:5521,0 -DA:5525,0 -DA:5526,0 -DA:5527,0 -DA:5528,0 -DA:5530,0 -DA:5535,0 -DA:5536,0 -DA:5538,0 -DA:5540,0 -DA:5541,0 -DA:5542,0 -DA:5544,0 -DA:5547,0 -DA:5548,0 -DA:5552,0 -DA:5555,0 -DA:5556,0 -DA:5557,0 -DA:5560,0 -DA:5564,0 -DA:5565,0 -DA:5566,0 -DA:5567,0 -DA:5568,0 -DA:5569,0 -DA:5570,0 -DA:5571,0 -DA:5577,0 -DA:5578,0 -DA:5581,0 -DA:5582,0 -DA:5585,0 -DA:5587,0 -DA:5588,0 -DA:5590,0 -DA:5591,0 -DA:5594,0 -DA:5595,0 -DA:5596,0 -DA:5597,0 -DA:5598,0 -DA:5599,0 -DA:5604,0 -DA:5606,0 -DA:5607,0 -DA:5608,0 -DA:5609,0 -DA:5610,0 -DA:5612,0 -DA:5613,0 -DA:5614,0 -DA:5618,0 -DA:5619,0 -DA:5620,0 -DA:5622,0 -DA:5623,0 -DA:5624,0 -DA:5625,0 -DA:5627,0 -DA:5629,0 -DA:5634,0 -DA:5635,0 -DA:5639,0 -DA:5640,0 -DA:5643,0 -DA:5644,0 -DA:5645,0 -DA:5646,0 -DA:5647,0 -DA:5648,0 -DA:5649,0 -DA:5650,0 -DA:5651,0 -DA:5652,0 -DA:5657,0 -DA:5659,0 -DA:5662,0 -DA:5663,0 -DA:5668,0 -DA:5669,0 -DA:5670,0 -DA:5671,0 -DA:5672,0 -DA:5673,0 -DA:5675,0 -DA:5679,0 -DA:5680,0 -DA:5681,0 -DA:5686,0 -DA:5687,0 -DA:5688,0 -DA:5691,0 -DA:5692,0 -DA:5693,0 -DA:5694,0 -DA:5695,0 -DA:5698,0 -DA:5699,0 -DA:5700,0 -DA:5701,0 -DA:5702,0 -DA:5703,0 -DA:5705,0 -DA:5709,0 -DA:5710,0 -DA:5711,0 -DA:5712,0 -DA:5713,0 -DA:5721,0 -DA:5722,0 -DA:5723,0 -DA:5725,0 -DA:5726,0 -DA:5727,0 -DA:5728,0 -DA:5729,0 -DA:5730,0 -DA:5731,0 -DA:5734,0 -DA:5737,0 -DA:5738,0 -DA:5739,0 -DA:5740,0 -DA:5743,0 -DA:5744,0 -DA:5745,0 -DA:5746,0 -DA:5748,0 -DA:5749,0 -DA:5750,0 -DA:5751,0 -DA:5757,0 -DA:5758,0 -DA:5759,0 -DA:5760,0 -DA:5766,0 -DA:5767,0 -DA:5768,0 -DA:5773,0 -DA:5774,0 -DA:5775,0 -DA:5776,0 -DA:5777,0 -DA:5781,0 -DA:5786,0 -DA:5791,0 -DA:5792,0 -DA:5793,0 -DA:5794,0 -DA:5798,0 -DA:5799,0 -DA:5801,0 -DA:5802,0 -DA:5803,0 -DA:5804,0 -DA:5805,0 -DA:5807,0 -DA:5808,0 -DA:5809,0 -DA:5810,0 -DA:5812,0 -DA:5813,0 -DA:5816,0 -DA:5819,0 -DA:5820,0 -DA:5821,0 -DA:5822,0 -DA:5824,0 -DA:5828,0 -DA:5829,0 -DA:5831,0 -DA:5833,0 -DA:5834,0 -DA:5835,0 -DA:5836,0 -DA:5838,0 -DA:5839,0 -DA:5841,0 -DA:5843,0 -DA:5844,0 -DA:5846,0 -DA:5848,0 -DA:5853,0 -DA:5857,0 -DA:5861,0 -DA:5862,0 -DA:5864,0 -DA:5865,0 -DA:5866,0 -DA:5872,0 -DA:5873,0 -DA:5874,0 -DA:5875,0 -DA:5880,0 -DA:5881,0 -DA:5886,0 -DA:5887,0 -DA:5889,0 -DA:5938,0 -DA:5940,0 -DA:5943,0 -DA:5944,0 -DA:5947,0 -DA:5951,0 -DA:5952,0 -DA:5955,0 -DA:5956,0 -DA:5957,0 -DA:5958,0 -DA:5962,0 -DA:5963,0 -DA:5965,0 -DA:5967,0 -DA:5968,0 -DA:5970,0 -DA:5971,0 -DA:5973,0 -DA:5974,0 -DA:5976,0 -DA:5977,0 -DA:5979,0 -DA:5980,0 -DA:5981,0 -DA:5982,0 -DA:5988,0 -DA:5989,0 -DA:5991,0 -DA:5993,0 -DA:5996,0 -DA:5999,0 -DA:6004,0 -DA:6006,0 -DA:6007,0 -DA:6008,0 -DA:6010,0 -DA:6011,0 -DA:6014,0 -DA:6015,0 -DA:6016,0 -DA:6017,0 -DA:6020,0 -DA:6024,0 -DA:6025,0 -DA:6026,0 -DA:6039,0 -DA:6040,0 -DA:6043,0 -DA:6044,0 -DA:6045,0 -DA:6046,0 -DA:6047,0 -DA:6048,0 -DA:6049,0 -DA:6050,0 -DA:6053,0 -DA:6060,0 -DA:6061,0 -DA:6063,0 -DA:6064,0 -DA:6065,0 -DA:6069,0 -DA:6075,0 -DA:6076,0 -DA:6080,0 -DA:6081,0 -DA:6083,0 -DA:6084,0 -DA:6086,0 -DA:6087,0 -DA:6089,0 -DA:6099,0 -DA:6102,0 -DA:6107,0 -DA:6110,0 -DA:6114,0 -DA:6115,0 -DA:6120,0 -DA:6129,0 -DA:6130,0 -DA:6132,0 -DA:6133,0 -DA:6137,0 -DA:6139,0 -DA:6144,0 -DA:6145,0 -DA:6146,0 -DA:6147,0 -DA:6152,0 -DA:6154,0 -DA:6158,0 -DA:6160,0 -DA:6161,0 -DA:6166,0 -DA:6167,0 -DA:6168,0 -DA:6171,0 -DA:6173,0 -DA:6175,0 -DA:6177,0 -DA:6179,0 -DA:6184,0 -DA:6185,0 -DA:6190,0 -DA:6195,0 -DA:6198,0 -DA:6201,0 -DA:6207,0 -DA:6212,0 -DA:6215,0 -DA:6216,0 -DA:6220,0 -DA:6223,0 -DA:6225,0 -DA:6226,0 -DA:6230,0 -DA:6234,0 -DA:6237,0 -DA:6240,0 -DA:6241,0 -DA:6242,0 -DA:6243,0 -DA:6244,0 -DA:6245,0 -DA:6247,0 -DA:6250,0 -DA:6251,0 -DA:6253,0 -DA:6262,0 -DA:6266,0 -DA:6267,0 -DA:6269,0 -DA:6272,0 -DA:6274,0 -DA:6275,0 -DA:6276,0 -DA:6278,0 -DA:6279,0 -DA:6282,0 -DA:6286,0 -DA:6287,0 -DA:6292,0 -DA:6294,0 -DA:6295,0 -DA:6304,0 -DA:6306,0 -DA:6311,0 -DA:6312,0 -DA:6313,0 -DA:6314,0 -DA:6316,0 -DA:6319,0 -DA:6320,0 -DA:6321,0 -DA:6323,0 -DA:6324,0 -DA:6325,0 -DA:6328,0 -DA:6329,0 -DA:6330,0 -DA:6331,0 -DA:6333,0 -DA:6334,0 -DA:6336,0 -DA:6337,0 -DA:6338,0 -DA:6339,0 -DA:6340,0 -DA:6343,0 -DA:6346,0 -DA:6347,0 -DA:6349,0 -DA:6352,0 -DA:6353,0 -DA:6355,0 -DA:6356,0 -DA:6358,0 -DA:6363,0 -DA:6367,0 -DA:6369,0 -DA:6370,0 -DA:6371,0 -DA:6374,0 -DA:6375,0 -DA:6379,0 -DA:6382,0 -DA:6384,0 -DA:6391,0 -DA:6393,0 -DA:6394,0 -DA:6395,0 -DA:6397,0 -DA:6399,0 -DA:6401,0 -DA:6402,0 -DA:6404,0 -DA:6405,0 -DA:6406,0 -DA:6407,0 -DA:6408,0 -DA:6410,0 -DA:6413,0 -DA:6416,0 -DA:6420,0 -DA:6421,0 -DA:6422,0 -DA:6423,0 -DA:6424,0 -DA:6425,0 -DA:6427,0 -DA:6428,0 -DA:6432,0 -DA:6433,0 -DA:6434,0 -DA:6436,0 -DA:6438,0 -DA:6439,0 -DA:6443,0 -DA:6444,0 -DA:6445,0 -DA:6446,0 -DA:6450,0 -DA:6451,0 -DA:6452,0 -DA:6454,0 -DA:6456,0 -DA:6457,0 -DA:6460,0 -DA:6462,0 -DA:6466,0 -DA:6469,0 -DA:6470,0 -DA:6472,0 -DA:6478,0 -DA:6479,0 -DA:6480,0 -DA:6481,0 -DA:6482,0 -DA:6489,0 -DA:6490,0 -DA:6491,0 -DA:6498,0 -DA:6499,0 -DA:6501,0 -DA:6503,0 -DA:6504,0 -DA:6505,0 -DA:6506,0 -DA:6507,0 -DA:6508,0 -DA:6513,0 -DA:6514,0 -DA:6515,0 -DA:6516,0 -DA:6517,0 -DA:6518,0 -DA:6525,0 -DA:6526,0 -DA:6527,0 -DA:6528,0 -DA:6529,0 -DA:6531,0 -DA:6532,0 -DA:6537,0 -DA:6538,0 -DA:6542,0 -DA:6543,0 -DA:6545,0 -DA:6546,0 -DA:6549,0 -DA:6550,0 -DA:6553,0 -DA:6555,0 -DA:6556,0 -DA:6558,0 -DA:6559,0 -DA:6560,0 -DA:6561,0 -DA:6562,0 -DA:6563,0 -DA:6564,0 -DA:6567,0 -DA:6568,0 -DA:6571,0 -DA:6572,0 -DA:6573,0 -DA:6577,0 -DA:6578,0 -DA:6583,0 -DA:6591,0 -DA:6592,0 -DA:6593,0 -DA:6598,0 -DA:6599,0 -DA:6600,0 -DA:6601,0 -DA:6602,0 -DA:6603,0 -DA:6605,0 -DA:6608,0 -DA:6612,0 -DA:6613,0 -DA:6614,0 -DA:6615,0 -DA:6616,0 -DA:6618,0 -DA:6620,0 -DA:6624,0 -DA:6650,0 -DA:6651,0 -DA:6653,0 -DA:6655,0 -DA:6658,0 -DA:6660,0 -DA:6663,0 -DA:6665,0 -DA:6668,0 -DA:6670,0 -DA:6673,0 -DA:6675,0 -DA:6678,0 -DA:6680,0 -DA:6683,0 -DA:6685,0 -DA:6688,0 -DA:6690,0 -DA:6693,0 -DA:6695,0 -DA:6698,0 -DA:6700,0 -DA:6703,0 -DA:6705,0 -DA:6708,0 -DA:6710,0 -DA:6713,0 -DA:6715,0 -DA:6718,0 -DA:6725,0 -DA:6727,0 -DA:6730,0 -DA:6735,0 -DA:6738,0 -DA:6741,0 -DA:6743,0 -DA:6747,0 -DA:6748,0 -DA:6749,0 -DA:6750,0 -DA:6752,0 -DA:6753,0 -DA:6759,0 -DA:6765,0 -DA:6786,0 -DA:6787,0 -DA:6790,0 -DA:6792,0 -DA:6793,0 -DA:6794,0 -DA:6795,0 -DA:6796,0 -DA:6798,0 -DA:6800,0 -DA:6802,0 -DA:6805,0 -DA:6818,0 -DA:6819,0 -DA:6821,0 -DA:6823,0 -DA:6824,0 -DA:6825,0 -DA:6830,0 -DA:6833,0 -DA:6834,0 -DA:6835,0 -DA:6838,0 -DA:6839,0 -DA:6840,0 -DA:6841,0 -DA:6842,0 -DA:6843,0 -DA:6844,0 -DA:6847,0 -DA:6850,0 -DA:6874,0 -DA:6876,0 -DA:6877,0 -DA:6879,0 -DA:6880,0 -DA:6881,0 -DA:6882,0 -DA:6883,0 -DA:6884,0 -DA:6887,0 -DA:6895,0 -DA:6898,0 -DA:6899,0 -DA:6902,0 -DA:6903,0 -DA:6904,0 -DA:6909,0 -DA:6912,0 -DA:6913,0 -DA:6917,0 -DA:6921,0 -DA:6922,0 -DA:6923,0 -DA:6926,0 -DA:6928,0 -DA:6929,0 -DA:6931,0 -DA:6936,0 -DA:6937,0 -DA:6939,0 -DA:6944,0 -DA:6945,0 -DA:6946,0 -DA:6950,0 -DA:6951,0 -DA:6955,0 -DA:6956,0 -DA:6958,0 -DA:6959,0 -DA:6961,0 -DA:6962,0 -DA:6964,0 -DA:6965,0 -DA:6967,0 -DA:6970,0 -DA:6971,0 -DA:6973,0 -DA:6975,0 -DA:6978,0 -DA:6982,0 -DA:6983,0 -DA:6984,0 -DA:6985,0 -DA:6987,0 -DA:6989,0 -DA:6990,0 -DA:6991,0 -DA:6993,0 -DA:6995,0 -DA:6996,0 -DA:6997,0 -DA:6998,0 -DA:7001,0 -DA:7002,0 -DA:7005,0 -DA:7006,0 -DA:7007,0 -DA:7011,0 -DA:7012,0 -DA:7013,0 -DA:7014,0 -DA:7017,0 -DA:7018,0 -DA:7019,0 -DA:7020,0 -DA:7023,0 -DA:7024,0 -DA:7026,0 -DA:7028,0 -DA:7057,0 -DA:7058,0 -DA:7060,0 -DA:7061,0 -DA:7062,0 -DA:7063,0 -DA:7066,0 -DA:7069,0 -DA:7072,0 -DA:7073,0 -DA:7074,0 -DA:7076,0 -DA:7081,0 -DA:7082,0 -DA:7084,0 -DA:7087,0 -DA:7088,0 -DA:7090,0 -DA:7091,0 -DA:7094,0 -DA:7097,0 -DA:7101,0 -DA:7103,0 -DA:7104,0 -DA:7105,0 -DA:7106,0 -DA:7107,0 -DA:7108,0 -DA:7109,0 -DA:7111,0 -DA:7112,0 -DA:7115,0 -DA:7116,0 -DA:7117,0 -DA:7118,0 -DA:7119,0 -DA:7120,0 -DA:7121,0 -DA:7122,0 -DA:7123,0 -DA:7124,0 -DA:7126,0 -DA:7130,0 -DA:7131,0 -DA:7132,0 -DA:7134,0 -DA:7135,0 -DA:7136,0 -DA:7137,0 -DA:7138,0 -DA:7139,0 -DA:7140,0 -DA:7144,0 -DA:7147,0 -DA:7148,0 -DA:7150,0 -DA:7151,0 -DA:7153,0 -DA:7155,0 -DA:7157,0 -DA:7159,0 -DA:7160,0 -DA:7164,0 -DA:7166,0 -DA:7167,0 -DA:7168,0 -DA:7172,0 -DA:7173,0 -DA:7175,0 -DA:7181,0 -DA:7182,0 -DA:7183,0 -DA:7186,0 -DA:7187,0 -DA:7188,0 -DA:7191,0 -DA:7192,0 -DA:7194,0 -DA:7195,0 -DA:7196,0 -DA:7198,0 -DA:7200,0 -DA:7201,0 -DA:7202,0 -DA:7203,0 -DA:7209,0 -DA:7213,0 -DA:7214,0 -DA:7215,0 -DA:7218,0 -DA:7225,0 -DA:7226,0 -DA:7228,0 -DA:7231,0 -DA:7232,0 -DA:7233,0 -DA:7235,0 -DA:7236,0 -DA:7238,0 -DA:7242,0 -DA:7243,0 -DA:7245,0 -DA:7246,0 -DA:7248,0 -DA:7249,0 -DA:7251,0 -DA:7252,0 -DA:7255,0 -DA:7256,0 -DA:7257,0 -DA:7260,0 -DA:7261,0 -DA:7266,0 -DA:7267,0 -DA:7268,0 -DA:7272,0 -DA:7273,0 -DA:7274,0 -DA:7275,0 -DA:7278,0 -DA:7279,0 -DA:7281,0 -DA:7282,0 -DA:7284,0 -DA:7294,0 -DA:7295,0 -DA:7297,0 -DA:7301,0 -DA:7302,0 -DA:7304,0 -DA:7305,0 -DA:7307,0 -DA:7308,0 -DA:7310,0 -DA:7313,0 -DA:7314,0 -DA:7316,0 -DA:7317,0 -DA:7319,0 -DA:7320,0 -DA:7323,0 -DA:7324,0 -DA:7326,0 -DA:7327,0 -DA:7330,0 -DA:7331,0 -DA:7332,0 -DA:7333,0 -DA:7334,0 -DA:7335,0 -DA:7336,0 -DA:7341,0 -DA:7342,0 -DA:7343,0 -DA:7344,0 -DA:7345,0 -DA:7348,0 -DA:7351,0 -DA:7352,0 -DA:7353,0 -DA:7354,0 -DA:7357,0 -DA:7383,0 -DA:7384,0 -DA:7385,0 -DA:7386,0 -DA:7387,0 -DA:7389,0 -DA:7397,0 -DA:7398,0 -DA:7399,0 -DA:7401,0 -DA:7402,0 -DA:7403,0 -DA:7404,0 -DA:7405,0 -DA:7408,0 -DA:7410,0 -DA:7411,0 -DA:7415,0 -DA:7416,0 -DA:7418,0 -DA:7419,0 -DA:7422,0 -DA:7423,0 -DA:7424,0 -DA:7428,0 -DA:7430,0 -DA:7431,0 -DA:7432,0 -DA:7433,0 -DA:7434,0 -DA:7435,0 -DA:7437,0 -DA:7438,0 -DA:7441,0 -DA:7444,0 -DA:7445,0 -DA:7447,0 -DA:7448,0 -DA:7449,0 -DA:7450,0 -DA:7451,0 -DA:7452,0 -DA:7453,0 -DA:7454,0 -DA:7455,0 -DA:7457,0 -DA:7458,0 -DA:7462,0 -DA:7463,0 -DA:7464,0 -DA:7465,0 -DA:7466,0 -DA:7467,0 -DA:7468,0 -DA:7471,0 -DA:7472,0 -DA:7477,0 -DA:7479,0 -DA:7481,0 -DA:7482,0 -DA:7484,0 -DA:7486,0 -DA:7487,0 -DA:7489,0 -DA:7490,0 -DA:7491,0 -DA:7493,0 -DA:7495,0 -DA:7496,0 -DA:7497,0 -DA:7501,0 -DA:7502,0 -DA:7504,0 -DA:7505,0 -DA:7507,0 -DA:7508,0 -DA:7509,0 -DA:7510,0 -DA:7511,0 -DA:7512,0 -DA:7514,0 -DA:7516,0 -DA:7518,0 -DA:7520,0 -DA:7522,0 -DA:7523,0 -DA:7524,0 -DA:7525,0 -DA:7526,0 -DA:7528,0 -DA:7529,0 -DA:7530,0 -DA:7531,0 -DA:7532,0 -DA:7534,0 -DA:7535,0 -DA:7536,0 -DA:7537,0 -DA:7538,0 -DA:7539,0 -DA:7540,0 -DA:7541,0 -DA:7544,0 -DA:7545,0 -DA:7548,0 -DA:7549,0 -DA:7553,0 -DA:7554,0 -DA:7560,0 -DA:7622,0 -DA:7623,0 -DA:7625,0 -DA:7626,0 -DA:7627,0 -DA:7629,0 -DA:7630,0 -DA:7631,0 -DA:7632,0 -DA:7635,0 -DA:7636,0 -DA:7637,0 -DA:7646,0 -DA:7648,0 -DA:7649,0 -DA:7650,0 -DA:7651,0 -DA:7653,0 -DA:7659,0 -DA:7660,0 -DA:7661,0 -DA:7662,0 -DA:7663,0 -DA:7664,0 -DA:7665,0 -DA:7674,0 -DA:7675,0 -DA:7676,0 -DA:7678,0 -DA:7689,0 -DA:7691,0 -DA:7692,0 -DA:7693,0 -DA:7694,0 -DA:7695,0 -DA:7696,0 -DA:7698,0 -DA:7702,0 -DA:7705,0 -DA:7707,0 -DA:7709,0 -DA:7710,0 -DA:7712,0 -DA:7713,0 -DA:7715,0 -DA:7719,0 -DA:7720,0 -DA:7721,0 -DA:7722,0 -DA:7723,0 -DA:7724,0 -DA:7726,0 -DA:7727,0 -DA:7730,0 -DA:7731,0 -DA:7732,0 -DA:7733,0 -DA:7737,0 -DA:7738,0 -DA:7739,0 -DA:7742,0 -DA:7743,0 -DA:7744,0 -DA:7749,0 -DA:7750,0 -DA:7752,0 -DA:7753,0 -DA:7754,0 -DA:7758,0 -DA:7761,0 -DA:7762,0 -DA:7763,0 -DA:7765,0 -DA:7767,0 -DA:7768,0 -DA:7769,0 -DA:7770,0 -DA:7771,0 -DA:7773,0 -DA:7778,0 -DA:7780,0 -DA:7783,0 -DA:7788,0 -DA:7790,0 -DA:7791,0 -DA:7792,0 -DA:7793,0 -DA:7794,0 -DA:7801,0 -DA:7826,0 -DA:7828,0 -DA:7830,0 -DA:7831,0 -DA:7832,0 -DA:7838,0 -DA:7839,0 -DA:7851,0 -DA:7852,0 -DA:7853,0 -DA:7854,0 -DA:7857,0 -DA:7858,0 -DA:7862,0 -DA:7863,0 -DA:7864,0 -DA:7867,0 -DA:7868,0 -DA:7869,0 -DA:7871,0 -DA:7872,0 -DA:7877,0 -DA:7879,0 -DA:7881,0 -DA:7894,0 -DA:7895,0 -DA:7897,0 -DA:7899,0 -DA:7904,0 -DA:7905,0 -DA:7907,0 -DA:7909,0 -DA:7913,0 -DA:7916,0 -DA:7919,0 -DA:7920,0 -DA:7921,0 -DA:7922,0 -DA:7923,0 -DA:7925,0 -DA:7928,0 -DA:7929,0 -DA:7931,0 -DA:7935,0 -DA:7937,0 -DA:7938,0 -DA:7940,0 -DA:7941,0 -DA:7944,0 -DA:7946,0 -DA:7947,0 -DA:7949,0 -DA:7950,0 -DA:7951,0 -DA:7952,0 -DA:7953,0 -DA:7954,0 -DA:7955,0 -DA:7959,0 -DA:7966,0 -DA:7968,0 -DA:7972,0 -DA:7973,0 -DA:7978,0 -DA:7979,0 -DA:7980,0 -DA:7984,0 -DA:7985,0 -DA:7986,0 -DA:7990,0 -DA:7991,0 -DA:7992,0 -DA:7995,0 -DA:7998,0 -DA:7999,0 -DA:8000,0 -DA:8001,0 -DA:8003,0 -DA:8004,0 -DA:8005,0 -DA:8006,0 -DA:8007,0 -DA:8010,0 -DA:8014,0 -DA:8018,0 -DA:8019,0 -DA:8023,0 -DA:8024,0 -DA:8049,0 -DA:8051,0 -DA:8052,0 -DA:8053,0 -DA:8054,0 -DA:8056,0 -DA:8059,0 -DA:8060,0 -DA:8061,0 -DA:8062,0 -DA:8063,0 -DA:8064,0 -DA:8065,0 -DA:8066,0 -DA:8067,0 -DA:8068,0 -DA:8069,0 -DA:8070,0 -DA:8077,0 -DA:8078,0 -DA:8082,0 -DA:8085,0 -DA:8088,0 -DA:8093,0 -DA:8094,0 -DA:8095,0 -DA:8096,0 -DA:8097,0 -DA:8099,0 -DA:8104,0 -DA:8109,0 -DA:8121,0 -DA:8124,0 -DA:8126,0 -DA:8127,0 -DA:8128,0 -DA:8131,0 -DA:8132,0 -DA:8133,0 -DA:8136,0 -DA:8140,0 -DA:8142,0 -DA:8143,0 -DA:8144,0 -DA:8145,0 -DA:8146,0 -DA:8147,0 -DA:8154,0 -DA:8155,0 -DA:8156,0 -DA:8157,0 -DA:8158,0 -DA:8162,0 -DA:8181,0 -DA:8182,0 -DA:8183,0 -DA:8184,0 -DA:8185,0 -DA:8191,0 -DA:8193,0 -DA:8197,0 -DA:8202,0 -DA:8203,0 -DA:8204,0 -DA:8205,0 -DA:8209,0 -DA:8210,0 -DA:8211,0 -DA:8212,0 -DA:8213,0 -DA:8216,0 -DA:8217,0 -DA:8219,0 -DA:8220,0 -DA:8223,0 -DA:8227,0 -DA:8231,0 -DA:8235,0 -DA:8236,0 -DA:8237,0 -DA:8238,0 -DA:8239,0 -DA:8240,0 -DA:8241,0 -DA:8242,0 -DA:8243,0 -DA:8247,0 -DA:8249,0 -DA:8253,0 -DA:8254,0 -DA:8255,0 -DA:8256,0 -DA:8257,0 -DA:8258,0 -DA:8259,0 -DA:8261,0 -DA:8262,0 -DA:8264,0 -DA:8265,0 -DA:8271,0 -DA:8272,0 -DA:8275,0 -DA:8278,0 -DA:8283,0 -DA:8284,0 -DA:8285,0 -DA:8286,0 -DA:8287,0 -DA:8290,0 -DA:8293,0 -DA:8294,0 -DA:8295,0 -DA:8296,0 -DA:8300,0 -DA:8301,0 -DA:8302,0 -DA:8303,0 -DA:8310,0 -DA:8315,0 -DA:8316,0 -DA:8317,0 -DA:8318,0 -DA:8319,0 -DA:8321,0 -DA:8327,0 -DA:8328,0 -DA:8330,0 -DA:8331,0 -DA:8333,0 -DA:8334,0 -DA:8335,0 -DA:8336,0 -DA:8337,0 -DA:8338,0 -DA:8340,0 -DA:8341,0 -DA:8343,0 -DA:8344,0 -DA:8346,0 -DA:8347,0 -DA:8349,0 -DA:8353,0 -DA:8354,0 -DA:8355,0 -DA:8356,0 -DA:8360,0 -DA:8361,0 -DA:8370,0 -DA:8371,0 -DA:8372,0 -DA:8375,0 -DA:8376,0 -DA:8377,0 -DA:8378,0 -DA:8379,0 -DA:8380,0 -DA:8383,0 -DA:8384,0 -DA:8385,0 -DA:8386,0 -DA:8387,0 -DA:8389,0 -DA:8390,0 -DA:8391,0 -DA:8392,0 -DA:8395,0 -DA:8396,0 -DA:8400,0 -DA:8403,0 -DA:8406,0 -DA:8408,0 -DA:8412,0 -DA:8414,0 -DA:8415,0 -DA:8416,0 -DA:8417,0 -DA:8420,0 -DA:8421,0 -DA:8423,0 -DA:8424,0 -DA:8426,0 -DA:8428,0 -DA:8432,0 -DA:8435,0 -DA:8436,0 -DA:8440,0 -DA:8441,0 -DA:8444,0 -DA:8445,0 -DA:8446,0 -DA:8447,0 -DA:8448,0 -DA:8451,0 -DA:8452,0 -DA:8453,0 -DA:8458,0 -DA:8461,0 -DA:8462,0 -DA:8463,0 -DA:8467,0 -DA:8469,0 -DA:8470,0 -DA:8471,0 -DA:8475,0 -DA:8477,0 -DA:8480,0 -DA:8481,0 -DA:8484,0 -DA:8493,0 -DA:8494,0 -DA:8495,0 -DA:8497,0 -DA:8498,0 -DA:8501,0 -DA:8502,0 -DA:8503,0 -DA:8504,0 -DA:8505,0 -DA:8506,0 -DA:8507,0 -DA:8508,0 -DA:8509,0 -DA:8511,0 -DA:8513,0 -DA:8514,0 -DA:8515,0 -DA:8516,0 -DA:8517,0 -DA:8518,0 -DA:8520,0 -DA:8521,0 -DA:8522,0 -DA:8523,0 -DA:8525,0 -DA:8526,0 -DA:8527,0 -DA:8530,0 -DA:8532,0 -DA:8535,0 -DA:8537,0 -DA:8538,0 -DA:8539,0 -DA:8540,0 -DA:8547,0 -DA:8548,0 -DA:8549,0 -DA:8550,0 -DA:8551,0 -DA:8552,0 -DA:8554,0 -DA:8555,0 -DA:8556,0 -DA:8557,0 -DA:8558,0 -DA:8559,0 -DA:8560,0 -DA:8562,0 -DA:8564,0 -DA:8567,0 -DA:8569,0 -DA:8571,0 -DA:8573,0 -DA:8574,0 -DA:8575,0 -DA:8577,0 -DA:8580,0 -DA:8581,0 -DA:8582,0 -DA:8583,0 -DA:8584,0 -DA:8585,0 -DA:8589,0 -DA:8590,0 -DA:8594,0 -DA:8596,0 -DA:8597,0 -DA:8598,0 -DA:8601,0 -DA:8602,0 -DA:8604,0 -DA:8605,0 -DA:8608,0 -DA:8609,0 -DA:8612,0 -DA:8615,0 -DA:8617,0 -DA:8618,0 -DA:8620,0 -DA:8622,0 -DA:8623,0 -DA:8629,0 -DA:8631,0 -DA:8636,0 -DA:8637,0 -DA:8638,0 -DA:8639,0 -DA:8640,0 -DA:8641,0 -DA:8642,0 -DA:8643,0 -DA:8644,0 -DA:8645,0 -DA:8646,0 -DA:8651,0 -DA:8652,0 -DA:8653,0 -DA:8657,0 -DA:8659,0 -DA:8662,0 -DA:8663,0 -DA:8666,0 -DA:8670,0 -DA:8671,0 -DA:8676,0 -DA:8678,0 -DA:8679,0 -DA:8680,0 -DA:8684,0 -DA:8686,0 -DA:8687,0 -DA:8690,0 -DA:8691,0 -DA:8692,0 -DA:8694,0 -DA:8698,0 -DA:8699,0 -DA:8702,0 -DA:8703,0 -DA:8704,0 -DA:8705,0 -DA:8708,0 -DA:8709,0 -DA:8710,0 -DA:8711,0 -DA:8712,0 -DA:8713,0 -DA:8714,0 -DA:8716,0 -DA:8718,0 -DA:8722,0 -DA:8726,0 -DA:8730,0 -DA:8733,0 -DA:8737,0 -DA:8738,0 -DA:8744,0 -DA:8766,0 -DA:8767,0 -DA:8768,0 -DA:8769,0 -DA:8770,0 -DA:8771,0 -DA:8773,0 -DA:8776,0 -DA:8777,0 -DA:8778,0 -DA:8779,0 -DA:8780,0 -DA:8781,0 -DA:8782,0 -DA:8783,0 -DA:8784,0 -DA:8786,0 -DA:8787,0 -DA:8789,0 -DA:8792,0 -DA:8795,0 -DA:8796,0 -DA:8797,0 -DA:8799,0 -DA:8802,0 -DA:8809,0 -DA:8811,0 -DA:8812,0 -DA:8813,0 -DA:8817,0 -DA:8818,0 -DA:8821,0 -DA:8823,0 -DA:8824,0 -DA:8825,0 -DA:8826,0 -DA:8827,0 -DA:8829,0 -DA:8831,0 -DA:8833,0 -DA:8836,0 -DA:8840,0 -DA:8842,0 -DA:8843,0 -DA:8844,0 -DA:8845,0 -DA:8846,0 -DA:8847,0 -DA:8848,0 -DA:8849,0 -DA:8850,0 -DA:8851,0 -DA:8854,0 -DA:8857,0 -DA:8871,0 -DA:8876,0 -DA:8877,0 -DA:8878,0 -DA:8880,0 -DA:8881,0 -DA:8883,0 -DA:8886,0 -DA:8887,0 -DA:8888,0 -DA:8889,0 -DA:8890,0 -DA:8891,0 -DA:8893,0 -DA:8897,0 -DA:8914,0 -DA:8928,0 -DA:8930,0 -DA:8931,0 -DA:8934,0 -DA:8940,0 -DA:8945,0 -DA:8947,0 -DA:8948,0 -DA:8951,0 -DA:8958,0 -DA:8965,0 -DA:8966,0 -DA:8967,0 -DA:8969,0 -DA:8973,0 -DA:8974,0 -DA:8975,0 -DA:8979,0 -DA:8980,0 -DA:8982,0 -DA:8983,0 -DA:8988,0 -DA:8990,0 -DA:8994,0 -DA:8995,0 -DA:8996,0 -DA:8997,0 -DA:8999,0 -DA:9000,0 -DA:9002,0 -DA:9003,0 -DA:9005,0 -DA:9006,0 -DA:9010,0 -DA:9013,0 -DA:9014,0 -DA:9015,0 -DA:9019,0 -DA:9020,0 -DA:9021,0 -DA:9025,0 -DA:9026,0 -DA:9030,0 -DA:9031,0 -DA:9035,0 -DA:9036,0 -DA:9039,0 -DA:9040,0 -DA:9043,0 -DA:9044,0 -DA:9045,0 -DA:9047,0 -DA:9051,0 -DA:9054,0 -DA:9055,0 -DA:9057,0 -DA:9058,0 -DA:9062,0 -DA:9064,0 -DA:9069,0 -DA:9070,0 -DA:9071,0 -DA:9072,0 -DA:9075,0 -DA:9077,0 -DA:9078,0 -DA:9079,0 -DA:9080,0 -DA:9082,0 -DA:9083,0 -DA:9088,0 -DA:9093,0 -DA:9094,0 -DA:9095,0 -DA:9096,0 -DA:9099,0 -DA:9102,0 -DA:9103,0 -DA:9104,0 -DA:9108,0 -DA:9114,0 -DA:9115,0 -DA:9116,0 -DA:9117,0 -DA:9119,0 -DA:9122,0 -DA:9123,0 -DA:9126,0 -DA:9127,0 -DA:9129,0 -DA:9130,0 -DA:9131,0 -DA:9132,0 -DA:9134,0 -DA:9136,0 -DA:9137,0 -DA:9138,0 -DA:9139,0 -DA:9142,0 -DA:9143,0 -DA:9148,0 -DA:9151,0 -DA:9152,0 -DA:9153,0 -DA:9155,0 -DA:9156,0 -DA:9157,0 -DA:9158,0 -DA:9160,0 -DA:9163,0 -DA:9167,0 -DA:9172,0 -DA:9173,0 -DA:9174,0 -DA:9175,0 -DA:9176,0 -DA:9179,0 -DA:9180,0 -DA:9188,0 -DA:9195,0 -DA:9197,0 -DA:9200,0 -DA:9202,0 -DA:9205,0 -DA:9207,0 -DA:9210,0 -DA:9212,0 -DA:9215,0 -DA:9217,0 -DA:9220,0 -DA:9222,0 -DA:9225,0 -DA:9227,0 -DA:9230,0 -DA:9232,0 -DA:9235,0 -DA:9237,0 -DA:9240,0 -DA:9242,0 -DA:9245,0 -DA:9247,0 -DA:9250,0 -DA:9253,0 -DA:9256,0 -DA:9258,0 -DA:9261,0 -DA:9268,0 -DA:9270,0 -DA:9273,0 -DA:9278,0 -DA:9282,0 -DA:9287,0 -DA:9288,0 -DA:9291,0 -DA:9296,0 -DA:9297,0 -DA:9314,0 -DA:9316,0 -DA:9318,0 -DA:9320,0 -DA:9321,0 -DA:9322,0 -DA:9323,0 -DA:9325,0 -DA:9329,0 -DA:9334,0 -DA:9336,0 -DA:9339,0 -DA:9341,0 -DA:9342,0 -DA:9344,0 -DA:9345,0 -DA:9346,0 -DA:9351,0 -DA:9356,0 -DA:9358,0 -DA:9359,0 -DA:9361,0 -DA:9368,0 -DA:9369,0 -DA:9372,0 -DA:9377,0 -DA:9378,0 -DA:9381,0 -DA:9399,0 -DA:9400,0 -DA:9403,0 -DA:9422,0 -DA:9423,0 -DA:9426,0 -DA:9429,0 -DA:9433,0 -DA:9434,0 -DA:9435,0 -DA:9436,0 -DA:9437,0 -DA:9447,0 -DA:9448,0 -DA:9450,0 -DA:9451,0 -DA:9452,0 -DA:9453,0 -DA:9458,0 -DA:9459,0 -DA:9460,0 -DA:9461,0 -DA:9462,0 -DA:9464,0 -DA:9467,0 -DA:9468,0 -DA:9469,0 -DA:9470,0 -DA:9471,0 -DA:9481,0 -DA:9482,0 -DA:9484,0 -DA:9485,0 -DA:9486,0 -DA:9487,0 -DA:9492,0 -DA:9493,0 -DA:9494,0 -DA:9495,0 -DA:9496,0 -DA:9498,0 -DA:9501,0 -DA:9502,0 -DA:9505,0 -DA:9507,0 -DA:9510,0 -DA:9511,0 -DA:9512,0 -DA:9513,0 -DA:9514,0 -DA:9524,0 -DA:9525,0 -DA:9527,0 -DA:9528,0 -DA:9529,0 -DA:9530,0 -DA:9535,0 -DA:9536,0 -DA:9537,0 -DA:9538,0 -DA:9539,0 -DA:9541,0 -DA:9544,0 -DA:9547,0 -DA:9549,0 -DA:9562,0 -DA:9563,0 -DA:9564,0 -DA:9566,0 -DA:9567,0 -DA:9569,0 -DA:9572,0 -DA:9575,0 -DA:9576,0 -DA:9579,0 -DA:9582,0 -DA:9595,0 -DA:9596,0 -DA:9598,0 -DA:9602,0 -DA:9605,0 -DA:9616,0 -DA:9617,0 -DA:9618,0 -DA:9619,0 -DA:9622,0 -DA:9625,0 -DA:9628,0 -DA:9640,0 -DA:9641,0 -DA:9648,0 -DA:9652,0 -DA:9655,0 -DA:9656,0 -DA:9657,0 -DA:9660,0 -DA:9661,0 -DA:9664,0 -DA:9674,0 -DA:9675,0 -DA:9677,0 -DA:9682,0 -DA:9685,0 -DA:9686,0 -DA:9687,0 -DA:9688,0 -DA:9694,0 -DA:9697,0 -DA:9700,0 -DA:9701,0 -DA:9704,0 -DA:9707,0 -DA:9710,0 -DA:9724,0 -DA:9725,0 -DA:9727,0 -DA:9728,0 -DA:9731,0 -DA:9734,0 -DA:9735,0 -DA:9736,0 -DA:9737,0 -DA:9738,0 -DA:9751,0 -DA:9752,0 -DA:9754,0 -DA:9756,0 -DA:9757,0 -DA:9758,0 -DA:9759,0 -DA:9761,0 -DA:9762,0 -DA:9763,0 -DA:9765,0 -DA:9766,0 -DA:9767,0 -DA:9768,0 -DA:9769,0 -DA:9774,0 -DA:9775,0 -DA:9777,0 -DA:9780,0 -DA:9783,0 -DA:9784,0 -DA:9785,0 -DA:9786,0 -DA:9789,0 -DA:9792,0 -DA:9793,0 -DA:9805,0 -DA:9806,0 -DA:9808,0 -DA:9810,0 -DA:9812,0 -DA:9813,0 -DA:9815,0 -DA:9816,0 -DA:9819,0 -DA:9822,0 -DA:9823,0 -DA:9824,0 -DA:9825,0 -DA:9836,0 -DA:9837,0 -DA:9839,0 -DA:9842,0 -DA:9845,0 -DA:9848,0 -DA:9850,0 -DA:9853,0 -DA:9855,0 -DA:9856,0 -DA:9857,0 -DA:9858,0 -DA:9859,0 -DA:9863,0 -DA:9866,0 -DA:9868,0 -DA:9870,0 -DA:9874,0 -DA:9885,0 -DA:9886,0 -DA:9891,0 -DA:9894,0 -DA:9895,0 -DA:9906,0 -DA:9907,0 -DA:9910,0 -DA:9913,0 -DA:9916,0 -DA:9919,0 -DA:9926,0 -DA:9929,0 -DA:9939,0 -DA:9940,0 -DA:9942,0 -DA:9943,0 -DA:9944,0 -DA:9947,0 -DA:9948,0 -DA:9949,0 -DA:9950,0 -DA:9952,0 -DA:9955,0 -DA:9958,0 -DA:9970,0 -DA:9973,0 -DA:9976,0 -DA:9986,0 -DA:9987,0 -DA:9990,0 -DA:10004,0 -DA:10005,0 -DA:10006,0 -DA:10009,0 -DA:10012,0 -DA:10015,0 -DA:10018,0 -DA:10021,0 -DA:10033,0 -DA:10034,0 -DA:10035,0 -DA:10036,0 -DA:10038,0 -DA:10041,0 -DA:10044,0 -DA:10047,0 -DA:10050,0 -DA:10062,0 -DA:10063,0 -DA:10066,0 -DA:10069,0 -DA:10072,0 -DA:10085,0 -DA:10086,0 -DA:10087,0 -DA:10088,0 -DA:10091,0 -DA:10095,0 -DA:10098,0 -DA:10109,0 -DA:10110,0 -DA:10115,0 -DA:10118,0 -DA:10119,0 -DA:10122,0 -DA:10123,0 -DA:10134,0 -DA:10135,0 -DA:10137,0 -DA:10138,0 -DA:10140,0 -DA:10142,0 -DA:10146,0 -DA:10157,0 -DA:10158,0 -DA:10163,0 -DA:10166,0 -DA:10169,0 -DA:10170,0 -DA:10171,0 -DA:10182,0 -DA:10185,0 -DA:10196,0 -DA:10197,0 -DA:10200,0 -DA:10203,0 -DA:10206,0 -DA:10209,0 -DA:10221,0 -DA:10222,0 -DA:10224,0 -DA:10225,0 -DA:10227,0 -DA:10228,0 -DA:10229,0 -DA:10231,0 -DA:10233,0 -DA:10234,0 -DA:10237,0 -DA:10240,0 -DA:10252,0 -DA:10253,0 -DA:10255,0 -DA:10258,0 -DA:10261,0 -DA:10273,0 -DA:10276,0 -DA:10279,0 -DA:10292,0 -DA:10293,0 -DA:10295,0 -DA:10296,0 -DA:10297,0 -DA:10299,0 -DA:10301,0 -DA:10304,0 -DA:10307,0 -DA:10308,0 -DA:10309,0 -DA:10319,0 -DA:10320,0 -DA:10327,0 -DA:10330,0 -DA:10342,0 -DA:10343,0 -DA:10344,0 -DA:10347,0 -DA:10350,0 -DA:10362,0 -DA:10365,0 -DA:10368,0 -DA:10380,0 -DA:10383,0 -DA:10386,0 -DA:10399,0 -DA:10400,0 -DA:10402,0 -DA:10403,0 -DA:10404,0 -DA:10407,0 -DA:10410,0 -DA:10413,0 -DA:10424,0 -DA:10425,0 -DA:10426,0 -DA:10428,0 -DA:10431,0 -DA:10432,0 -DA:10435,0 -DA:10438,0 -DA:10441,0 -DA:10443,0 -DA:10447,0 -DA:10454,0 -DA:10464,0 -DA:10467,0 -DA:10470,0 -DA:10473,0 -DA:10476,0 -DA:10478,0 -DA:10481,0 -DA:10484,0 -DA:10485,0 -DA:10488,0 -DA:10497,0 -DA:10498,0 -DA:10499,0 -DA:10500,0 -DA:10502,0 -DA:10503,0 -DA:10505,0 -DA:10508,0 -DA:10511,0 -DA:10514,0 -DA:10524,0 -DA:10525,0 -DA:10527,0 -DA:10528,0 -DA:10531,0 -DA:10535,0 -DA:10538,0 -DA:10548,0 -DA:10549,0 -DA:10550,0 -DA:10552,0 -DA:10553,0 -DA:10556,0 -DA:10559,0 -DA:10595,0 -DA:10598,0 -DA:10624,0 -DA:10626,0 -DA:10629,0 -DA:10630,0 -DA:10633,0 -DA:10634,0 -DA:10635,0 -DA:10636,0 -DA:10656,0 -DA:10657,0 -DA:10661,0 -DA:10662,0 -DA:10665,0 -DA:10694,0 -DA:10695,0 -DA:10698,0 -DA:10726,0 -DA:10729,0 -DA:10732,0 -DA:10733,0 -DA:10736,0 -DA:10756,0 -DA:10760,0 -DA:10763,0 -DA:10772,0 -DA:10778,0 -DA:10781,0 -DA:10784,0 -DA:10785,0 -DA:10788,0 -DA:10791,0 -DA:10794,0 -DA:10797,0 -DA:10798,0 -DA:10799,0 -DA:10802,0 -DA:10803,0 -DA:10806,0 -DA:10807,0 -DA:10808,0 -DA:10809,0 -DA:10810,0 -DA:10811,0 -DA:10812,0 -DA:10813,0 -DA:10814,0 -DA:10815,0 -DA:10818,0 -DA:10819,0 -DA:10822,0 -DA:10823,0 -DA:10826,0 -DA:10827,0 -DA:10828,0 -DA:10831,0 -DA:10832,0 -DA:10833,0 -DA:10834,0 -DA:10837,0 -DA:10838,0 -DA:10839,0 -DA:10842,0 -DA:10855,0 -DA:10856,0 -DA:10857,0 -DA:10858,0 -DA:10859,0 -DA:10860,0 -DA:10861,0 -DA:10862,0 -DA:10863,0 -DA:10864,0 -DA:10865,0 -DA:10866,0 -DA:10867,0 -DA:10868,0 -DA:10869,0 -DA:10870,0 -DA:10871,0 -DA:10872,0 -DA:10873,0 -DA:10874,0 -DA:10875,0 -DA:10876,0 -DA:10878,0 -DA:10879,0 -DA:10880,0 -DA:10881,0 -DA:10882,0 -DA:10883,0 -DA:10884,0 -DA:10885,0 -DA:10886,0 -DA:10887,0 -DA:10888,0 -DA:10891,0 -DA:10892,0 -DA:10893,0 -DA:10896,0 -DA:10897,0 -DA:10898,0 -DA:10899,0 -DA:10902,0 -DA:10903,0 -DA:10904,0 -DA:10907,0 -DA:10908,0 -DA:10909,0 -DA:10910,0 -DA:10916,0 -DA:10917,0 -DA:10920,0 -DA:10921,0 -DA:10922,0 -DA:10925,0 -DA:10926,0 -DA:10927,0 -DA:10930,0 -DA:10933,0 -DA:10939,0 -DA:10942,0 -DA:10945,0 -DA:10948,0 -DA:10951,0 -DA:10954,0 -DA:10957,0 -DA:10960,0 -DA:10963,0 -DA:10966,0 -DA:10969,0 -DA:10970,0 -DA:10971,0 -DA:10972,0 -DA:10973,0 -DA:10974,0 -DA:10975,0 -DA:10976,0 -DA:10977,0 -DA:10978,0 -DA:10979,0 -DA:10980,0 -DA:10981,0 -DA:10982,0 -DA:10985,0 -DA:10986,0 -DA:10987,0 -DA:10988,0 -DA:10989,0 -DA:10990,0 -DA:10991,0 -DA:10992,0 -DA:10993,0 -DA:10994,0 -DA:10995,0 -DA:10996,0 -DA:10997,0 -DA:10998,0 -DA:10999,0 -DA:11002,0 -DA:11003,0 -DA:11004,0 -DA:11005,0 -DA:11006,0 -DA:11007,0 -DA:11008,0 -DA:11009,0 -DA:11010,0 -DA:11011,0 -DA:11012,0 -DA:11013,0 -DA:11016,0 -DA:11022,0 -DA:11025,0 -DA:11028,0 -DA:11040,0 -DA:11043,0 -DA:11046,0 -DA:11055,0 -DA:11058,0 -DA:11059,0 -DA:11064,0 -DA:11074,0 -DA:11075,0 -DA:11086,0 -DA:11090,0 -DA:11148,0 -DA:11157,0 -DA:11166,0 -DA:11176,0 -DA:11177,0 -DA:11180,0 -DA:11183,0 -DA:11186,0 -DA:11189,0 -DA:11192,0 -DA:11195,0 -DA:11198,0 -DA:11201,0 -DA:11202,0 -DA:11203,0 -DA:11208,0 -DA:11209,0 -DA:11210,0 -DA:11211,0 -DA:11212,0 -DA:11213,0 -DA:11227,0 -DA:11228,0 -DA:11241,0 -DA:11242,0 -DA:11256,0 -DA:11257,0 -DA:11258,0 -DA:11259,0 -DA:11260,0 -DA:11262,0 -DA:11276,0 -DA:11277,0 -DA:11279,0 -DA:11280,0 -DA:11281,0 -DA:11283,0 -DA:11296,0 -DA:11297,0 -DA:11299,0 -DA:11300,0 -DA:11301,0 -DA:11304,0 -DA:11317,0 -DA:11319,0 -DA:11320,0 -DA:11321,0 -DA:11324,0 -DA:11338,0 -DA:11339,0 -DA:11341,0 -DA:11342,0 -DA:11343,0 -DA:11346,0 -DA:11359,0 -DA:11360,0 -DA:11361,0 -DA:11362,0 -DA:11364,0 -DA:11365,0 -DA:11366,0 -DA:11367,0 -DA:11370,0 -DA:11383,0 -DA:11384,0 -DA:11397,0 -DA:11398,0 -DA:11400,0 -DA:11401,0 -DA:11402,0 -DA:11405,0 -DA:11418,0 -DA:11419,0 -DA:11420,0 -DA:11422,0 -DA:11423,0 -DA:11425,0 -DA:11437,0 -DA:11438,0 -DA:11439,0 -DA:11441,0 -DA:11442,0 -DA:11444,0 -DA:11460,0 -DA:11461,0 -DA:11463,0 -DA:11464,0 -DA:11466,0 -DA:11467,0 -DA:11469,0 -DA:11485,0 -DA:11486,0 -DA:11487,0 -DA:11489,0 -DA:11490,0 -DA:11492,0 -DA:11506,0 -DA:11507,0 -DA:11509,0 -DA:11510,0 -DA:11511,0 -DA:11514,0 -DA:11524,0 -DA:11534,0 -DA:11545,0 -DA:11561,0 -DA:11562,0 -DA:11563,0 -DA:11564,0 -DA:11567,0 -DA:11582,0 -DA:11583,0 -DA:11585,0 -DA:11586,0 -DA:11587,0 -DA:11590,0 -DA:11603,0 -DA:11619,0 -DA:11620,0 -DA:11622,0 -DA:11623,0 -DA:11624,0 -DA:11627,0 -DA:11638,0 -DA:11651,0 -DA:11652,0 -DA:11663,0 -DA:11664,0 -DA:11676,0 -DA:11677,0 -DA:11695,0 -DA:11696,0 -DA:11700,0 -DA:11714,0 -DA:11716,0 -DA:11717,0 -DA:11718,0 -DA:11720,0 -DA:11734,0 -DA:11735,0 -DA:11737,0 -DA:11738,0 -DA:11739,0 -DA:11740,0 -DA:11743,0 -DA:11756,0 -DA:11757,0 -DA:11759,0 -DA:11760,0 -DA:11762,0 -DA:11775,0 -DA:11776,0 -DA:11788,0 -DA:11789,0 -DA:11804,0 -DA:11805,0 -DA:11818,0 -DA:11831,0 -DA:11832,0 -DA:11834,0 -DA:11835,0 -DA:11848,0 -DA:11850,0 -DA:11851,0 -DA:11863,0 -DA:11864,0 -DA:11866,0 -DA:11867,0 -DA:11868,0 -DA:11871,0 -DA:11882,0 -DA:11891,0 -DA:11901,0 -DA:11913,0 -DA:11924,0 -DA:11935,0 -DA:11947,0 -DA:11949,0 -DA:11950,0 -DA:11952,0 -DA:11963,0 -DA:11964,0 -DA:11966,0 -DA:11967,0 -DA:11969,0 -DA:11981,0 -DA:11982,0 -DA:11996,0 -DA:11997,0 -DA:11998,0 -DA:11999,0 -DA:12001,0 -DA:12002,0 -DA:12003,0 -DA:12004,0 -DA:12005,0 -DA:12008,0 -DA:12019,0 -DA:12020,0 -DA:12022,0 -DA:12023,0 -DA:12025,0 -DA:12036,0 -DA:12037,0 -DA:12039,0 -DA:12040,0 -DA:12042,0 -DA:12056,0 -DA:12057,0 -DA:12059,0 -DA:12060,0 -DA:12061,0 -DA:12064,0 -DA:12078,0 -DA:12079,0 -DA:12080,0 -DA:12081,0 -DA:12084,0 -DA:12095,0 -DA:12108,0 -DA:12120,0 -DA:12130,0 -DA:12131,0 -DA:12132,0 -DA:12134,0 -DA:12145,0 -DA:12156,0 -DA:12190,0 -DA:12191,0 -DA:12194,0 -DA:12195,0 -DA:12196,0 -DA:12197,0 -DA:12198,0 -DA:12199,0 -DA:12200,0 -DA:12201,0 -DA:12202,0 -DA:12205,0 -DA:12206,0 -DA:12207,0 -DA:12210,0 -DA:12213,0 -DA:12216,0 -DA:12219,0 -DA:12222,0 -DA:12223,0 -DA:12224,0 -DA:12232,0 -DA:12235,0 -DA:12238,0 -DA:12241,0 -DA:12247,0 -DA:12248,0 -DA:12249,0 -DA:12250,0 -DA:12251,0 -DA:12252,0 -DA:12253,0 -DA:12254,0 -DA:12255,0 -DA:12256,0 -DA:12257,0 -DA:12259,0 -DA:12260,0 -DA:12261,0 -DA:12262,0 -DA:12263,0 -DA:12268,0 -DA:12269,0 -DA:12270,0 -DA:12273,0 -DA:12274,0 -DA:12275,0 -DA:12276,0 -DA:12277,0 -DA:12278,0 -DA:12279,0 -DA:12280,0 -DA:12281,0 -DA:12282,0 -DA:12283,0 -DA:12284,0 -DA:12285,0 -DA:12288,0 -DA:12289,0 -DA:12290,0 -DA:12291,0 -DA:12292,0 -DA:12293,0 -DA:12296,0 -DA:12299,0 -DA:12302,0 -DA:12303,0 -DA:12304,0 -DA:12305,0 -DA:12306,0 -DA:12309,0 -DA:12310,0 -DA:12311,0 -DA:12433,0 -DA:12434,0 -DA:12435,0 -DA:12437,0 -DA:12438,0 -DA:12441,0 -DA:12452,0 -DA:12454,0 -DA:12455,0 -DA:12456,0 -DA:12458,0 -DA:12459,0 -DA:12461,0 -DA:12462,0 -DA:12463,0 -DA:12464,0 -DA:12485,0 -DA:12486,0 -DA:12487,0 -DA:12488,0 -DA:12489,0 -DA:12501,0 -DA:12554,0 -DA:12555,0 -DA:12557,0 -DA:12558,0 -DA:12570,0 -DA:12571,0 -DA:12572,0 -DA:12573,0 -DA:12574,0 -DA:12575,0 -DA:12576,0 -DA:12588,0 -DA:12589,0 -DA:12590,0 -DA:12591,0 -DA:12592,0 -DA:12593,0 -DA:12594,0 -DA:12595,0 -DA:12607,0 -DA:12608,0 -DA:12609,0 -DA:12610,0 -DA:12612,0 -DA:12613,0 -DA:12615,0 -DA:12627,0 -DA:12628,0 -DA:12629,0 -DA:12630,0 -DA:12631,0 -DA:12632,0 -DA:12633,0 -DA:12634,0 -DA:12635,0 -DA:12636,0 -DA:12637,0 -DA:12638,0 -DA:12639,0 -DA:12640,0 -DA:12642,0 -DA:12643,0 -DA:12645,0 -DA:12647,0 -DA:12648,0 -DA:12649,0 -DA:12651,0 -DA:12652,0 -DA:12654,0 -DA:12655,0 -DA:12656,0 -DA:12657,0 -DA:12658,0 -DA:12660,0 -DA:12661,0 -DA:12662,0 -DA:12663,0 -DA:12664,0 -DA:12666,0 -DA:12670,0 -DA:12672,0 -DA:12676,0 -DA:12677,0 -DA:12689,0 -DA:12690,0 -DA:12692,0 -DA:12693,0 -DA:12694,0 -DA:12695,0 -DA:12707,0 -DA:12708,0 -DA:12722,0 -DA:12723,0 -DA:12724,0 -DA:12737,0 -DA:12738,0 -DA:12739,0 -DA:12740,0 -DA:12742,0 -DA:12755,0 -DA:12756,0 -DA:12770,0 -DA:12771,0 -DA:12772,0 -DA:12773,0 -DA:12777,0 -DA:12778,0 -DA:12779,0 -DA:12780,0 -DA:12781,0 -DA:12793,0 -DA:12794,0 -DA:12796,0 -DA:12797,0 -DA:12798,0 -DA:12799,0 -DA:12811,0 -DA:12812,0 -DA:12825,0 -DA:12826,0 -DA:12828,0 -DA:12829,0 -DA:12831,0 -DA:12832,0 -DA:12833,0 -DA:12835,0 -DA:12837,0 -DA:12838,0 -DA:12851,0 -DA:12852,0 -DA:12854,0 -DA:12867,0 -DA:12881,0 -DA:12882,0 -DA:12884,0 -DA:12885,0 -DA:12886,0 -DA:12888,0 -DA:12890,0 -DA:12894,0 -DA:12895,0 -DA:12896,0 -DA:12897,0 -DA:12898,0 -DA:12910,0 -DA:12911,0 -DA:12913,0 -DA:12914,0 -DA:12915,0 -DA:12916,0 -DA:12928,0 -DA:12929,0 -DA:12946,0 -DA:12947,0 -DA:12948,0 -DA:12961,0 -DA:12974,0 -DA:12988,0 -DA:12989,0 -DA:12991,0 -DA:12992,0 -DA:12993,0 -DA:12997,0 -DA:12998,0 -DA:12999,0 -DA:13000,0 -DA:13001,0 -DA:13014,0 -DA:13015,0 -DA:13017,0 -DA:13018,0 -DA:13019,0 -DA:13034,0 -DA:13035,0 -DA:13048,0 -DA:13052,0 -DA:13053,0 -DA:13065,0 -DA:13066,0 -DA:13077,0 -DA:13078,0 -DA:13091,0 -DA:13092,0 -DA:13094,0 -DA:13095,0 -DA:13108,0 -DA:13121,0 -DA:13135,0 -DA:13136,0 -DA:13137,0 -DA:13138,0 -DA:13139,0 -DA:13140,0 -DA:13141,0 -DA:13143,0 -DA:13145,0 -DA:13146,0 -DA:13147,0 -DA:13151,0 -DA:13152,0 -DA:13153,0 -DA:13154,0 -DA:13155,0 -DA:13168,0 -DA:13169,0 -DA:13170,0 -DA:13171,0 -DA:13172,0 -DA:13173,0 -DA:13174,0 -DA:13176,0 -DA:13177,0 -DA:13188,0 -DA:13191,0 -DA:13202,0 -DA:13203,0 -DA:13215,0 -DA:13226,0 -DA:13239,0 -DA:13241,0 -DA:13256,0 -DA:13257,0 -DA:13259,0 -DA:13272,0 -DA:13273,0 -DA:13274,0 -DA:13275,0 -DA:13278,0 -DA:13293,0 -DA:13294,0 -DA:13296,0 -DA:13309,0 -DA:13322,0 -DA:13335,0 -DA:13336,0 -DA:13343,0 -DA:13356,0 -DA:13357,0 -DA:13358,0 -DA:13359,0 -DA:13361,0 -DA:13362,0 -DA:13364,0 -DA:13377,0 -DA:13378,0 -DA:13379,0 -DA:13381,0 -DA:13382,0 -DA:13385,0 -DA:13406,0 -DA:13407,0 -DA:13408,0 -DA:13410,0 -DA:13411,0 -DA:13413,0 -DA:13414,0 -DA:13416,0 -DA:13417,0 -DA:13419,0 -DA:13420,0 -DA:13421,0 -DA:13422,0 -DA:13423,0 -DA:13426,0 -DA:13427,0 -DA:13429,0 -DA:13430,0 -DA:13432,0 -DA:13433,0 -DA:13434,0 -DA:13435,0 -DA:13440,0 -DA:13441,0 -DA:13443,0 -DA:13447,0 -DA:13448,0 -DA:13449,0 -DA:13450,0 -DA:13452,0 -DA:13454,0 -DA:13458,0 -DA:13459,0 -DA:13460,0 -DA:13461,0 -DA:13462,0 -DA:13465,0 -DA:13467,0 -DA:13478,0 -DA:13479,0 -DA:13480,0 -DA:13493,0 -DA:13494,0 -DA:13495,0 -DA:13497,0 -DA:13498,0 -DA:13499,0 -DA:13500,0 -DA:13501,0 -DA:13503,0 -DA:13504,0 -DA:13507,0 -DA:13521,0 -DA:13522,0 -DA:13524,0 -DA:13539,0 -DA:13540,0 -DA:13541,0 -DA:13542,0 -DA:13543,0 -DA:13544,0 -DA:13546,0 -DA:13547,0 -DA:13549,0 -DA:13550,0 -DA:13552,0 -DA:13553,0 -DA:13554,0 -DA:13556,0 -DA:13557,0 -DA:13558,0 -DA:13559,0 -DA:13561,0 -DA:13562,0 -DA:13563,0 -DA:13564,0 -DA:13566,0 -DA:13567,0 -DA:13568,0 -DA:13569,0 -DA:13570,0 -DA:13571,0 -DA:13574,0 -DA:13576,0 -DA:13577,0 -DA:13580,0 -DA:13591,0 -DA:13601,0 -DA:13613,0 -DA:13614,0 -DA:13615,0 -DA:13616,0 -DA:13618,0 -DA:13632,0 -DA:13633,0 -DA:13635,0 -DA:13636,0 -DA:13637,0 -DA:13639,0 -DA:13643,0 -DA:13644,0 -DA:13647,0 -DA:13661,0 -DA:13663,0 -DA:13664,0 -DA:13665,0 -DA:13667,0 -DA:13668,0 -DA:13669,0 -DA:13671,0 -DA:13672,0 -DA:13673,0 -DA:13675,0 -DA:13687,0 -DA:13688,0 -DA:13689,0 -DA:13690,0 -DA:13693,0 -DA:13708,0 -DA:13709,0 -DA:13711,0 -DA:13712,0 -DA:13714,0 -DA:13715,0 -DA:13716,0 -DA:13717,0 -DA:13719,0 -DA:13721,0 -DA:13723,0 -DA:13724,0 -DA:13727,0 -DA:13741,0 -DA:13753,0 -DA:13764,0 -DA:13776,0 -DA:13789,0 -DA:13790,0 -DA:13803,0 -DA:13805,0 -DA:13806,0 -DA:13808,0 -DA:13809,0 -DA:13811,0 -DA:13826,0 -DA:13827,0 -DA:13838,0 -DA:13839,0 -DA:13841,0 -DA:13856,0 -DA:13868,0 -DA:13880,0 -DA:13893,0 -DA:13907,0 -DA:13908,0 -DA:13909,0 -DA:13910,0 -DA:13911,0 -DA:13912,0 -DA:13913,0 -DA:13915,0 -DA:13916,0 -DA:13917,0 -DA:13918,0 -DA:13920,0 -DA:13921,0 -DA:13925,0 -DA:13927,0 -DA:13928,0 -DA:13930,0 -DA:13931,0 -DA:13932,0 -DA:13933,0 -DA:13935,0 -DA:13936,0 -DA:13940,0 -DA:13941,0 -DA:13942,0 -DA:13943,0 -DA:13947,0 -DA:13950,0 -DA:13951,0 -DA:13953,0 -DA:13956,0 -DA:13971,0 -DA:13972,0 -DA:13974,0 -DA:13988,0 -DA:13989,0 -DA:13990,0 -DA:13991,0 -DA:14002,0 -DA:14013,0 -DA:14024,0 -DA:14042,0 -DA:14043,0 -DA:14045,0 -DA:14046,0 -DA:14048,0 -DA:14066,0 -DA:14067,0 -DA:14068,0 -DA:14069,0 -DA:14071,0 -DA:14072,0 -DA:14074,0 -DA:14075,0 -DA:14076,0 -DA:14078,0 -DA:14079,0 -DA:14080,0 -DA:14082,0 -DA:14083,0 -DA:14085,0 -DA:14086,0 -DA:14087,0 -DA:14091,0 -DA:14092,0 -DA:14093,0 -DA:14095,0 -DA:14096,0 -DA:14097,0 -DA:14099,0 -DA:14100,0 -DA:14103,0 -DA:14104,0 -DA:14106,0 -DA:14107,0 -DA:14118,0 -DA:14132,0 -DA:14133,0 -DA:14134,0 -DA:14136,0 -DA:14137,0 -DA:14139,0 -DA:14140,0 -DA:14141,0 -DA:14142,0 -DA:14146,0 -DA:14149,0 -DA:14150,0 -DA:14151,0 -DA:14152,0 -DA:14153,0 -DA:14155,0 -DA:14156,0 -DA:14157,0 -DA:14160,0 -DA:14161,0 -DA:14162,0 -DA:14164,0 -DA:14168,0 -DA:14172,0 -DA:14184,0 -DA:14185,0 -DA:14187,0 -DA:14188,0 -DA:14199,0 -DA:14210,0 -DA:14221,0 -DA:14235,0 -DA:14236,0 -DA:14238,0 -DA:14239,0 -DA:14241,0 -DA:14242,0 -DA:14246,0 -DA:14257,0 -DA:14258,0 -DA:14260,0 -DA:14261,0 -DA:14262,0 -DA:14263,0 -DA:14266,0 -DA:14277,0 -DA:14278,0 -DA:14280,0 -DA:14281,0 -DA:14283,0 -DA:14284,0 -DA:14285,0 -DA:14288,0 -DA:14301,0 -DA:14313,0 -DA:14314,0 -DA:14316,0 -DA:14317,0 -DA:14319,0 -DA:14330,0 -DA:14331,0 -DA:14332,0 -DA:14334,0 -DA:14335,0 -DA:14348,0 -DA:14349,0 -DA:14351,0 -DA:14352,0 -DA:14353,0 -DA:14371,0 -DA:14372,0 -DA:14374,0 -DA:14375,0 -DA:14376,0 -DA:14377,0 -DA:14380,0 -DA:14384,0 -DA:14385,0 -DA:14387,0 -DA:14408,0 -DA:14409,0 -DA:14410,0 -DA:14412,0 -DA:14413,0 -DA:14414,0 -DA:14416,0 -DA:14420,0 -DA:14422,0 -DA:14423,0 -DA:14424,0 -DA:14425,0 -DA:14427,0 -DA:14428,0 -DA:14429,0 -DA:14430,0 -DA:14432,0 -DA:14433,0 -DA:14435,0 -DA:14436,0 -DA:14437,0 -DA:14439,0 -DA:14440,0 -DA:14441,0 -DA:14444,0 -DA:14447,0 -DA:14448,0 -DA:14449,0 -DA:14450,0 -DA:14452,0 -DA:14453,0 -DA:14457,0 -DA:14460,0 -DA:14462,0 -DA:14463,0 -DA:14464,0 -DA:14466,0 -DA:14478,0 -DA:14479,0 -DA:14480,0 -DA:14482,0 -DA:14483,0 -DA:14496,0 -DA:14497,0 -DA:14499,0 -DA:14500,0 -DA:14501,0 -DA:14503,0 -DA:14506,0 -DA:14507,0 -DA:14521,0 -DA:14522,0 -DA:14536,0 -DA:14537,0 -DA:14538,0 -DA:14540,0 -DA:14541,0 -DA:14542,0 -DA:14544,0 -DA:14545,0 -DA:14548,0 -DA:14559,0 -DA:14560,0 -DA:14576,0 -DA:14577,0 -DA:14578,0 -DA:14579,0 -DA:14581,0 -DA:14582,0 -DA:14584,0 -DA:14585,0 -DA:14587,0 -DA:14588,0 -DA:14589,0 -DA:14590,0 -DA:14592,0 -DA:14593,0 -DA:14594,0 -DA:14596,0 -DA:14599,0 -DA:14612,0 -DA:14613,0 -DA:14615,0 -DA:14616,0 -DA:14617,0 -DA:14618,0 -DA:14619,0 -DA:14620,0 -DA:14622,0 -DA:14626,0 -DA:14639,0 -DA:14654,0 -DA:14655,0 -DA:14656,0 -DA:14658,0 -DA:14659,0 -DA:14660,0 -DA:14662,0 -DA:14674,0 -DA:14675,0 -DA:14676,0 -DA:14680,0 -DA:14681,0 -DA:14682,0 -DA:14684,0 -DA:14685,0 -DA:14686,0 -DA:14690,0 -DA:14702,0 -DA:14713,0 -DA:14725,0 -DA:14726,0 -DA:14740,0 -DA:14741,0 -DA:14743,0 -DA:14745,0 -DA:14746,0 -DA:14747,0 -DA:14748,0 -DA:14750,0 -DA:14751,0 -DA:14752,0 -DA:14754,0 -DA:14755,0 -DA:14756,0 -DA:14757,0 -DA:14758,0 -DA:14763,0 -DA:14764,0 -DA:14766,0 -DA:14777,0 -DA:14778,0 -DA:14779,0 -DA:14790,0 -DA:14791,0 -DA:14807,0 -DA:14820,0 -DA:14821,0 -DA:14823,0 -DA:14824,0 -DA:14826,0 -DA:14827,0 -DA:14828,0 -DA:14830,0 -DA:14831,0 -DA:14833,0 -DA:14834,0 -DA:14835,0 -DA:14837,0 -DA:14852,0 -DA:14853,0 -DA:14854,0 -DA:14856,0 -DA:14872,0 -DA:14873,0 -DA:14875,0 -DA:14876,0 -DA:14877,0 -DA:14878,0 -DA:14880,0 -DA:14882,0 -DA:14884,0 -DA:14887,0 -DA:14889,0 -DA:14906,0 -DA:14908,0 -DA:14909,0 -DA:14910,0 -DA:14911,0 -DA:14912,0 -DA:14913,0 -DA:14915,0 -DA:14916,0 -DA:14917,0 -DA:14918,0 -DA:14919,0 -DA:14920,0 -DA:14921,0 -DA:14923,0 -DA:14924,0 -DA:14925,0 -DA:14926,0 -DA:14927,0 -DA:14928,0 -DA:14929,0 -DA:14930,0 -DA:14931,0 -DA:14932,0 -DA:14934,0 -DA:14936,0 -DA:14937,0 -DA:14939,0 -DA:14942,0 -DA:14955,0 -DA:14956,0 -DA:14957,0 -DA:14958,0 -DA:14960,0 -DA:14961,0 -DA:14962,0 -DA:14964,0 -DA:14965,0 -DA:14966,0 -DA:14969,0 -DA:14981,0 -DA:14982,0 -DA:14984,0 -DA:14985,0 -DA:14987,0 -DA:15000,0 -DA:15001,0 -DA:15003,0 -DA:15005,0 -DA:15007,0 -DA:15008,0 -DA:15010,0 -DA:15011,0 -DA:15024,0 -DA:15025,0 -DA:15026,0 -DA:15027,0 -DA:15028,0 -DA:15029,0 -DA:15031,0 -DA:15032,0 -DA:15033,0 -DA:15035,0 -DA:15036,0 -DA:15037,0 -DA:15038,0 -DA:15040,0 -DA:15041,0 -DA:15042,0 -DA:15045,0 -DA:15047,0 -DA:15048,0 -DA:15049,0 -DA:15050,0 -DA:15052,0 -DA:15053,0 -DA:15054,0 -DA:15055,0 -DA:15056,0 -DA:15057,0 -DA:15060,0 -DA:15061,0 -DA:15063,0 -DA:15065,0 -DA:15066,0 -DA:15067,0 -DA:15069,0 -DA:15072,0 -DA:15084,0 -DA:15085,0 -DA:15086,0 -DA:15100,0 -DA:15115,0 -DA:15116,0 -DA:15118,0 -DA:15121,0 -DA:15137,0 -DA:15138,0 -DA:15139,0 -DA:15141,0 -DA:15142,0 -DA:15157,0 -DA:15158,0 -DA:15159,0 -DA:15161,0 -DA:15162,0 -DA:15164,0 -DA:15165,0 -DA:15166,0 -DA:15168,0 -DA:15169,0 -DA:15170,0 -DA:15174,0 -DA:15187,0 -DA:15188,0 -DA:15189,0 -DA:15190,0 -DA:15192,0 -DA:15193,0 -DA:15194,0 -DA:15196,0 -DA:15207,0 -DA:15218,0 -DA:15230,0 -DA:15231,0 -DA:15233,0 -DA:15245,0 -DA:15257,0 -DA:15258,0 -DA:15259,0 -DA:15268,0 -DA:15269,0 -DA:15281,0 -DA:15282,0 -DA:15284,0 -DA:15285,0 -DA:15287,0 -DA:15288,0 -DA:15299,0 -DA:15300,0 -DA:15301,0 -DA:15313,0 -DA:15314,0 -DA:15327,0 -DA:15328,0 -DA:15339,0 -DA:15340,0 -DA:15341,0 -DA:15354,0 -DA:15355,0 -DA:15366,0 -DA:15378,0 -DA:15379,0 -DA:15391,0 -DA:15392,0 -DA:15393,0 -DA:15394,0 -DA:15395,0 -DA:15397,0 -DA:15398,0 -DA:15399,0 -DA:15400,0 -DA:15402,0 -DA:15407,0 -DA:15409,0 -DA:15414,0 -DA:15417,0 -DA:15435,0 -DA:15436,0 -DA:15437,0 -DA:15438,0 -DA:15439,0 -DA:15441,0 -DA:15442,0 -DA:15443,0 -DA:15444,0 -DA:15445,0 -DA:15447,0 -DA:15448,0 -DA:15458,0 -DA:15473,0 -DA:15474,0 -DA:15475,0 -DA:15476,0 -DA:15477,0 -DA:15478,0 -DA:15479,0 -DA:15480,0 -DA:15482,0 -DA:15483,0 -DA:15485,0 -DA:15486,0 -DA:15487,0 -DA:15490,0 -DA:15491,0 -DA:15493,0 -DA:15508,0 -DA:15509,0 -DA:15510,0 -DA:15511,0 -DA:15512,0 -DA:15513,0 -DA:15514,0 -DA:15515,0 -DA:15516,0 -DA:15518,0 -DA:15519,0 -DA:15521,0 -DA:15522,0 -DA:15523,0 -DA:15525,0 -DA:15526,0 -DA:15527,0 -DA:15530,0 -DA:15542,0 -DA:15543,0 -DA:15545,0 -DA:15546,0 -DA:15547,0 -DA:15549,0 -DA:15563,0 -DA:15564,0 -DA:15566,0 -DA:15567,0 -DA:15569,0 -DA:15570,0 -DA:15572,0 -DA:15576,0 -DA:15577,0 -DA:15579,0 -DA:15580,0 -DA:15582,0 -DA:15585,0 -DA:15597,0 -DA:15609,0 -DA:15621,0 -DA:15622,0 -DA:15623,0 -DA:15625,0 -DA:15637,0 -DA:15638,0 -DA:15639,0 -DA:15640,0 -DA:15641,0 -DA:15643,0 -DA:15647,0 -DA:15648,0 -DA:15649,0 -DA:15651,0 -DA:15652,0 -DA:15653,0 -DA:15654,0 -DA:15655,0 -DA:15658,0 -DA:15671,0 -DA:15672,0 -DA:15673,0 -DA:15675,0 -DA:15676,0 -DA:15678,0 -DA:15679,0 -DA:15680,0 -DA:15682,0 -DA:15683,0 -DA:15684,0 -DA:15687,0 -DA:15699,0 -DA:15700,0 -DA:15701,0 -DA:15702,0 -DA:15703,0 -DA:15705,0 -DA:15706,0 -DA:15707,0 -DA:15708,0 -DA:15711,0 -DA:15726,0 -DA:15727,0 -DA:15730,0 -DA:15731,0 -DA:15733,0 -DA:15744,0 -DA:15745,0 -DA:15747,0 -DA:15751,0 -DA:15755,0 -DA:15759,0 -DA:15771,0 -DA:15772,0 -DA:15785,0 -DA:15789,0 -DA:15790,0 -DA:15791,0 -DA:15792,0 -DA:15793,0 -DA:15794,0 -DA:15795,0 -DA:15796,0 -DA:15797,0 -DA:15798,0 -DA:15800,0 -DA:15801,0 -DA:15805,0 -DA:15819,0 -DA:15822,0 -DA:15823,0 -DA:15824,0 -DA:15825,0 -DA:15827,0 -DA:15828,0 -DA:15830,0 -DA:15834,0 -DA:15835,0 -DA:15836,0 -DA:15840,0 -DA:15841,0 -DA:15843,0 -DA:15854,0 -DA:15855,0 -DA:15856,0 -DA:15857,0 -DA:15858,0 -DA:15859,0 -DA:15861,0 -DA:15862,0 -DA:15874,0 -DA:15875,0 -DA:15876,0 -DA:15877,0 -DA:15879,0 -DA:15880,0 -DA:15882,0 -DA:15883,0 -DA:15884,0 -DA:15885,0 -DA:15887,0 -DA:15888,0 -DA:15891,0 -DA:15892,0 -DA:15893,0 -DA:15895,0 -DA:15896,0 -DA:15898,0 -DA:15902,0 -DA:15904,0 -DA:15909,0 -DA:15910,0 -DA:15911,0 -DA:15913,0 -DA:15914,0 -DA:15916,0 -DA:15917,0 -DA:15919,0 -DA:15920,0 -DA:15922,0 -DA:15947,0 -DA:15948,0 -DA:15949,0 -DA:15950,0 -DA:15951,0 -DA:15952,0 -DA:15955,0 -DA:15956,0 -DA:15957,0 -DA:15959,0 -DA:15960,0 -DA:15962,0 -DA:15963,0 -DA:15964,0 -DA:15966,0 -DA:15967,0 -DA:15969,0 -DA:15970,0 -DA:15972,0 -DA:15973,0 -DA:15974,0 -DA:15975,0 -DA:15980,0 -DA:15981,0 -DA:15983,0 -DA:15984,0 -DA:15985,0 -DA:15986,0 -DA:15987,0 -DA:15989,0 -DA:15990,0 -DA:15992,0 -DA:15993,0 -DA:15995,0 -DA:15997,0 -DA:16009,0 -DA:16010,0 -DA:16023,0 -DA:16025,0 -DA:16026,0 -DA:16028,0 -DA:16029,0 -DA:16031,0 -DA:16032,0 -DA:16033,0 -DA:16035,0 -DA:16036,0 -DA:16037,0 -DA:16039,0 -DA:16040,0 -DA:16042,0 -DA:16044,0 -DA:16056,0 -DA:16057,0 -DA:16058,0 -DA:16059,0 -DA:16060,0 -DA:16061,0 -DA:16077,0 -DA:16079,0 -DA:16080,0 -DA:16081,0 -DA:16083,0 -DA:16084,0 -DA:16102,0 -DA:16103,0 -DA:16106,0 -DA:16107,0 -DA:16108,0 -DA:16109,0 -DA:16110,0 -DA:16111,0 -DA:16113,0 -DA:16114,0 -DA:16116,0 -DA:16117,0 -DA:16119,0 -DA:16121,0 -DA:16132,0 -DA:16133,0 -DA:16134,0 -DA:16137,0 -DA:16138,0 -DA:16139,0 -DA:16140,0 -DA:16142,0 -DA:16144,0 -DA:16145,0 -DA:16157,0 -DA:16158,0 -DA:16159,0 -DA:16160,0 -DA:16162,0 -DA:16184,0 -DA:16185,0 -DA:16186,0 -DA:16187,0 -DA:16188,0 -DA:16190,0 -DA:16191,0 -DA:16193,0 -DA:16194,0 -DA:16196,0 -DA:16201,0 -DA:16202,0 -DA:16203,0 -DA:16205,0 -DA:16206,0 -DA:16217,0 -DA:16218,0 -DA:16219,0 -DA:16220,0 -DA:16221,0 -DA:16224,0 -DA:16225,0 -DA:16227,0 -DA:16228,0 -DA:16230,0 -DA:16241,0 -DA:16242,0 -DA:16253,0 -DA:16254,0 -DA:16255,0 -DA:16256,0 -DA:16258,0 -DA:16259,0 -DA:16261,0 -DA:16291,0 -DA:16292,0 -DA:16293,0 -DA:16295,0 -DA:16296,0 -DA:16297,0 -DA:16298,0 -DA:16300,0 -DA:16301,0 -DA:16302,0 -DA:16304,0 -DA:16305,0 -DA:16306,0 -DA:16308,0 -DA:16310,0 -DA:16312,0 -DA:16317,0 -DA:16318,0 -DA:16320,0 -DA:16321,0 -DA:16322,0 -DA:16323,0 -DA:16324,0 -DA:16325,0 -DA:16329,0 -DA:16330,0 -DA:16332,0 -DA:16333,0 -DA:16334,0 -DA:16335,0 -DA:16336,0 -DA:16337,0 -DA:16339,0 -DA:16341,0 -DA:16342,0 -DA:16358,0 -DA:16360,0 -DA:16362,0 -DA:16380,0 -DA:16382,0 -DA:16383,0 -DA:16384,0 -DA:16386,0 -DA:16399,0 -DA:16416,0 -DA:16417,0 -DA:16418,0 -DA:16420,0 -DA:16421,0 -DA:16424,0 -DA:16425,0 -DA:16426,0 -DA:16428,0 -DA:16429,0 -DA:16430,0 -DA:16432,0 -DA:16433,0 -DA:16436,0 -DA:16437,0 -DA:16438,0 -DA:16440,0 -DA:16441,0 -DA:16445,0 -DA:16446,0 -DA:16447,0 -DA:16449,0 -DA:16450,0 -DA:16453,0 -DA:16454,0 -DA:16455,0 -DA:16457,0 -DA:16460,0 -DA:16461,0 -DA:16463,0 -DA:16467,0 -DA:16468,0 -DA:16471,0 -DA:16472,0 -DA:16473,0 -DA:16494,0 -DA:16496,0 -DA:16498,0 -DA:16500,0 -DA:16501,0 -DA:16504,0 -DA:16506,0 -DA:16508,0 -DA:16515,0 -DA:16518,0 -DA:16525,0 -DA:16528,0 -DA:16531,0 -DA:16532,0 -DA:16534,0 -DA:16535,0 -DA:16538,0 -DA:16539,0 -DA:16540,0 -DA:16542,0 -DA:16545,0 -DA:16546,0 -DA:16547,0 -DA:16548,0 -DA:16551,0 -DA:16552,0 -DA:16555,0 -DA:16572,0 -DA:16573,0 -DA:16574,0 -DA:16575,0 -DA:16576,0 -DA:16578,0 -DA:16579,0 -DA:16581,0 -DA:16582,0 -DA:16583,0 -DA:16584,0 -DA:16585,0 -DA:16589,0 -DA:16590,0 -DA:16591,0 -DA:16593,0 -DA:16594,0 -DA:16595,0 -DA:16597,0 -DA:16598,0 -DA:16599,0 -DA:16600,0 -DA:16601,0 -DA:16603,0 -DA:16604,0 -DA:16609,0 -DA:16613,0 -DA:16614,0 -DA:16616,0 -DA:16618,0 -DA:16619,0 -DA:16620,0 -DA:16623,0 -DA:16627,0 -DA:16630,0 -DA:16631,0 -DA:16632,0 -DA:16643,0 -DA:16654,0 -DA:16666,0 -DA:16676,0 -DA:16677,0 -DA:16688,0 -DA:16689,0 -DA:16690,0 -DA:16692,0 -DA:16693,0 -DA:16694,0 -DA:16695,0 -DA:16696,0 -DA:16699,0 -DA:16710,0 -DA:16711,0 -DA:16726,0 -DA:16727,0 -DA:16728,0 -DA:16740,0 -DA:16741,0 -DA:16754,0 -DA:16755,0 -DA:16757,0 -DA:16758,0 -DA:16759,0 -DA:16761,0 -DA:16763,0 -DA:16775,0 -DA:16776,0 -DA:16787,0 -DA:16788,0 -DA:16790,0 -DA:16791,0 -DA:16792,0 -DA:16795,0 -DA:16796,0 -DA:16797,0 -DA:16798,0 -DA:16800,0 -DA:16803,0 -DA:16813,0 -DA:16814,0 -DA:16815,0 -DA:16817,0 -DA:16818,0 -DA:16819,0 -DA:16830,0 -DA:16831,0 -DA:16832,0 -DA:16833,0 -DA:16834,0 -DA:16836,0 -DA:16846,0 -DA:16849,0 -DA:16854,0 -DA:16855,0 -DA:16856,0 -DA:16857,0 -DA:16859,0 -DA:16860,0 -DA:16861,0 -DA:16862,0 -DA:16863,0 -DA:16864,0 -DA:16865,0 -DA:16868,0 -DA:16883,0 -DA:16884,0 -DA:16886,0 -DA:16887,0 -DA:16888,0 -DA:16890,0 -DA:16891,0 -DA:16892,0 -DA:16893,0 -DA:16894,0 -DA:16897,0 -DA:16908,0 -DA:16909,0 -DA:16922,0 -DA:16924,0 -DA:16925,0 -DA:16926,0 -DA:16928,0 -DA:16929,0 -DA:16930,0 -DA:16931,0 -DA:16933,0 -DA:16935,0 -DA:16936,0 -DA:16938,0 -DA:16939,0 -DA:16951,0 -DA:16952,0 -DA:16955,0 -DA:16956,0 -DA:16957,0 -DA:16959,0 -DA:16970,0 -DA:16989,0 -DA:16990,0 -DA:16992,0 -DA:16996,0 -DA:16999,0 -DA:17004,0 -DA:17007,0 -DA:17011,0 -DA:17014,0 -DA:17017,0 -DA:17020,0 -DA:17033,0 -DA:17034,0 -DA:17035,0 -DA:17037,0 -DA:17038,0 -DA:17039,0 -DA:17040,0 -DA:17051,0 -DA:17064,0 -DA:17065,0 -DA:17081,0 -DA:17082,0 -DA:17084,0 -DA:17085,0 -DA:17089,0 -DA:17091,0 -DA:17103,0 -DA:17104,0 -DA:17106,0 -DA:17107,0 -DA:17109,0 -DA:17111,0 -DA:17123,0 -DA:17124,0 -DA:17138,0 -DA:17139,0 -DA:17141,0 -DA:17142,0 -DA:17144,0 -DA:17145,0 -DA:17147,0 -DA:17148,0 -DA:17159,0 -DA:17169,0 -DA:17179,0 -DA:17180,0 -DA:17182,0 -DA:17194,0 -DA:17207,0 -DA:17208,0 -DA:17209,0 -DA:17211,0 -DA:17225,0 -DA:17226,0 -DA:17227,0 -DA:17229,0 -DA:17232,0 -DA:17233,0 -DA:17253,0 -DA:17254,0 -DA:17255,0 -DA:17256,0 -DA:17259,0 -DA:17264,0 -DA:17265,0 -DA:17268,0 -DA:17269,0 -DA:17271,0 -DA:17274,0 -DA:17275,0 -DA:17276,0 -DA:17277,0 -DA:17278,0 -DA:17281,0 -DA:17282,0 -DA:17283,0 -DA:17284,0 -DA:17285,0 -DA:17288,0 -DA:17289,0 -DA:17290,0 -DA:17293,0 -DA:17294,0 -DA:17297,0 -DA:17298,0 -DA:17301,0 -DA:17302,0 -DA:17304,0 -DA:17317,0 -DA:17318,0 -DA:17319,0 -DA:17320,0 -DA:17323,0 -DA:17334,0 -DA:17347,0 -DA:17348,0 -DA:17349,0 -DA:17350,0 -DA:17351,0 -DA:17352,0 -DA:17354,0 -DA:17355,0 -DA:17357,0 -DA:17358,0 -DA:17359,0 -DA:17360,0 -DA:17362,0 -DA:17363,0 -DA:17376,0 -DA:17390,0 -DA:17391,0 -DA:17392,0 -DA:17394,0 -DA:17395,0 -DA:17396,0 -DA:17398,0 -DA:17415,0 -DA:17425,0 -DA:17426,0 -DA:17437,0 -DA:17450,0 -DA:17451,0 -DA:17464,0 -DA:17465,0 -DA:17467,0 -DA:17468,0 -DA:17469,0 -DA:17471,0 -DA:17472,0 -DA:17473,0 -DA:17474,0 -DA:17477,0 -DA:17479,0 -DA:17492,0 -DA:17493,0 -DA:17494,0 -DA:17496,0 -DA:17497,0 -DA:17498,0 -DA:17499,0 -DA:17501,0 -DA:17502,0 -DA:17504,0 -DA:17505,0 -DA:17515,0 -DA:17516,0 -DA:17517,0 -DA:17518,0 -DA:17520,0 -DA:17521,0 -DA:17523,0 -DA:17534,0 -DA:17535,0 -DA:17537,0 -DA:17538,0 -DA:17549,0 -DA:17550,0 -DA:17551,0 -DA:17553,0 -DA:17554,0 -DA:17557,0 -DA:17569,0 -DA:17570,0 -DA:17571,0 -DA:17572,0 -DA:17575,0 -DA:17586,0 -DA:17587,0 -DA:17589,0 -DA:17590,0 -DA:17591,0 -DA:17592,0 -DA:17593,0 -DA:17620,0 -DA:17621,0 -DA:17623,0 -DA:17625,0 -DA:17626,0 -DA:17627,0 -DA:17629,0 -DA:17630,0 -DA:17631,0 -DA:17633,0 -DA:17634,0 -DA:17636,0 -DA:17655,0 -DA:17656,0 -DA:17657,0 -DA:17658,0 -DA:17660,0 -DA:17661,0 -DA:17662,0 -DA:17663,0 -DA:17666,0 -DA:17692,0 -DA:17693,0 -DA:17694,0 -DA:17696,0 -DA:17697,0 -DA:17698,0 -DA:17700,0 -DA:17701,0 -DA:17703,0 -DA:17727,0 -DA:17728,0 -DA:17759,0 -DA:17760,0 -DA:17761,0 -DA:17762,0 -DA:17764,0 -DA:17792,0 -DA:17793,0 -DA:17794,0 -DA:17795,0 -DA:17797,0 -DA:17828,0 -DA:17829,0 -DA:17830,0 -DA:17832,0 -DA:17833,0 -DA:17862,0 -DA:17863,0 -DA:17864,0 -DA:17866,0 -DA:17867,0 -DA:17868,0 -DA:17907,0 -DA:17948,0 -DA:17983,0 -DA:17984,0 -DA:17985,0 -DA:17987,0 -DA:17988,0 -DA:17989,0 -DA:17991,0 -DA:18030,0 -DA:18031,0 -DA:18032,0 -DA:18034,0 -DA:18035,0 -DA:18036,0 -DA:18038,0 -DA:18077,0 -DA:18078,0 -DA:18079,0 -DA:18081,0 -DA:18082,0 -DA:18083,0 -DA:18084,0 -DA:18088,0 -DA:18106,0 -DA:18107,0 -DA:18125,0 -DA:18126,0 -DA:18150,0 -DA:18151,0 -DA:18152,0 -DA:18154,0 -DA:18155,0 -DA:18174,0 -DA:18175,0 -DA:18176,0 -DA:18178,0 -DA:18179,0 -DA:18180,0 -DA:18182,0 -DA:18204,0 -DA:18231,0 -DA:18232,0 -DA:18233,0 -DA:18235,0 -DA:18236,0 -DA:18237,0 -DA:18239,0 -DA:18257,0 -DA:18258,0 -DA:18278,0 -DA:18279,0 -DA:18280,0 -DA:18308,0 -DA:18309,0 -DA:18310,0 -DA:18312,0 -DA:18313,0 -DA:18315,0 -DA:18317,0 -DA:18343,0 -DA:18344,0 -DA:18345,0 -DA:18347,0 -DA:18348,0 -DA:18349,0 -DA:18351,0 -DA:18372,0 -DA:18390,0 -DA:18391,0 -DA:18416,0 -DA:18417,0 -DA:18418,0 -DA:18420,0 -DA:18421,0 -DA:18422,0 -DA:18423,0 -DA:18425,0 -DA:18452,0 -DA:18478,0 -DA:18501,0 -DA:18530,0 -DA:18559,0 -DA:18588,0 -DA:18589,0 -DA:18590,0 -DA:18592,0 -DA:18593,0 -DA:18596,0 -DA:18628,0 -DA:18629,0 -DA:18630,0 -DA:18632,0 -DA:18633,0 -DA:18634,0 -DA:18636,0 -DA:18637,0 -DA:18638,0 -DA:18639,0 -DA:18640,0 -DA:18641,0 -DA:18644,0 -DA:18645,0 -DA:18672,0 -DA:18692,0 -DA:18693,0 -DA:18694,0 -DA:18696,0 -DA:18697,0 -DA:18698,0 -DA:18701,0 -DA:18702,0 -DA:18704,0 -DA:18725,0 -DA:18754,0 -DA:18774,0 -DA:18775,0 -DA:18776,0 -DA:18777,0 -DA:18778,0 -DA:18781,0 -DA:18803,0 -DA:18832,0 -DA:18852,0 -DA:18853,0 -DA:18854,0 -DA:18855,0 -DA:18856,0 -DA:18859,0 -DA:18878,0 -DA:18900,0 -DA:18920,0 -DA:18921,0 -DA:18950,0 -DA:18951,0 -DA:18953,0 -DA:18954,0 -DA:18983,0 -DA:18984,0 -DA:18985,0 -DA:18987,0 -DA:18988,0 -DA:18989,0 -DA:19028,0 -DA:19069,0 -DA:19090,0 -DA:19091,0 -DA:19117,0 -DA:19118,0 -DA:19119,0 -DA:19120,0 -DA:19122,0 -DA:19146,0 -DA:19147,0 -DA:19148,0 -DA:19149,0 -DA:19171,0 -DA:19198,0 -DA:19222,0 -DA:19223,0 -DA:19246,0 -DA:19247,0 -DA:19249,0 -DA:19250,0 -DA:19251,0 -DA:19252,0 -DA:19253,0 -DA:19256,0 -DA:19257,0 -DA:19283,0 -DA:19284,0 -DA:19286,0 -DA:19287,0 -DA:19288,0 -DA:19290,0 -DA:19291,0 -DA:19315,0 -DA:19316,0 -DA:19339,0 -DA:19340,0 -DA:19366,0 -DA:19367,0 -DA:19368,0 -DA:19369,0 -DA:19371,0 -DA:19395,0 -DA:19396,0 -DA:19397,0 -DA:19398,0 -DA:19417,0 -DA:19436,0 -DA:19455,0 -DA:19478,0 -DA:19479,0 -DA:19480,0 -DA:19482,0 -DA:19483,0 -DA:19518,0 -DA:19519,0 -DA:19520,0 -DA:19547,0 -DA:19548,0 -DA:19575,0 -DA:19594,0 -DA:19595,0 -DA:19596,0 -DA:19597,0 -DA:19598,0 -DA:19600,0 -DA:19602,0 -DA:19604,0 -DA:19605,0 -DA:19610,0 -DA:19611,0 -DA:19612,0 -DA:19614,0 -DA:19646,0 -DA:19676,0 -DA:19702,0 -DA:19703,0 -DA:19705,0 -DA:19706,0 -DA:19708,0 -DA:19730,0 -DA:19759,0 -DA:19761,0 -DA:19762,0 -DA:19763,0 -DA:19764,0 -DA:19765,0 -DA:19766,0 -DA:19768,0 -DA:19770,0 -DA:19771,0 -DA:19773,0 -DA:19774,0 -DA:19798,0 -DA:19799,0 -DA:19800,0 -DA:19801,0 -DA:19802,0 -DA:19804,0 -DA:19805,0 -DA:19810,0 -DA:19812,0 -DA:19830,0 -DA:19857,0 -DA:19858,0 -DA:19859,0 -DA:19861,0 -DA:19907,0 -DA:19908,0 -DA:19909,0 -DA:19911,0 -DA:19952,0 -DA:19953,0 -DA:19992,0 -DA:20013,0 -DA:20037,0 -DA:20061,0 -DA:20086,0 -DA:20087,0 -DA:20121,0 -DA:20122,0 -DA:20146,0 -DA:20147,0 -DA:20173,0 -DA:20174,0 -DA:20175,0 -DA:20177,0 -DA:20212,0 -DA:20213,0 -DA:20215,0 -DA:20216,0 -DA:20217,0 -DA:20219,0 -DA:20247,0 -DA:20248,0 -DA:20249,0 -DA:20250,0 -DA:20252,0 -DA:20253,0 -DA:20255,0 -DA:20286,0 -DA:20287,0 -DA:20333,0 -DA:20334,0 -DA:20367,0 -DA:20368,0 -DA:20370,0 -DA:20371,0 -DA:20373,0 -DA:20374,0 -DA:20375,0 -DA:20377,0 -DA:20416,0 -DA:20417,0 -DA:20418,0 -DA:20458,0 -DA:20459,0 -DA:20461,0 -DA:20487,0 -DA:20488,0 -DA:20490,0 -DA:20528,0 -DA:20529,0 -DA:20547,0 -DA:20548,0 -DA:20572,0 -DA:20573,0 -DA:20575,0 -DA:20577,0 -DA:20578,0 -DA:20597,0 -DA:20598,0 -DA:20623,0 -DA:20624,0 -DA:20626,0 -DA:20627,0 -DA:20629,0 -DA:20630,0 -DA:20631,0 -DA:20633,0 -DA:20673,0 -DA:20674,0 -DA:20675,0 -DA:20677,0 -DA:20709,0 -DA:20710,0 -DA:20711,0 -DA:20713,0 -DA:20714,0 -DA:20715,0 -DA:20716,0 -DA:20717,0 -DA:20719,0 -DA:20740,0 -DA:20741,0 -DA:20771,0 -DA:20772,0 -DA:20774,0 -DA:20775,0 -DA:20776,0 -DA:20777,0 -DA:20800,0 -DA:20801,0 -DA:20802,0 -DA:20824,0 -DA:20825,0 -DA:20827,0 -DA:20828,0 -DA:20829,0 -DA:20830,0 -DA:20832,0 -DA:20833,0 -DA:20835,0 -DA:20874,0 -DA:20875,0 -DA:20876,0 -DA:20877,0 -DA:20878,0 -DA:20880,0 -DA:20928,0 -DA:20929,0 -DA:20930,0 -DA:20931,0 -DA:20932,0 -DA:20934,0 -DA:20979,0 -DA:20980,0 -DA:20981,0 -DA:20982,0 -DA:21024,0 -DA:21025,0 -DA:21026,0 -DA:21027,0 -DA:21091,0 -DA:21092,0 -DA:21093,0 -DA:21094,0 -DA:21096,0 -DA:21097,0 -DA:21099,0 -DA:21100,0 -DA:21101,0 -DA:21102,0 -DA:21103,0 -DA:21104,0 -DA:21108,0 -DA:21109,0 -DA:21111,0 -DA:21112,0 -DA:21113,0 -DA:21114,0 -DA:21119,0 -DA:21121,0 -DA:21123,0 -DA:21127,0 -DA:21128,0 -DA:21129,0 -DA:21131,0 -DA:21135,0 -DA:21136,0 -DA:21141,0 -DA:21146,0 -DA:21147,0 -DA:21148,0 -DA:21151,0 -DA:21155,0 -DA:21159,0 -DA:21160,0 -DA:21162,0 -DA:21163,0 -DA:21167,0 -DA:21168,0 -DA:21170,0 -DA:21171,0 -DA:21175,0 -DA:21179,0 -DA:21180,0 -DA:21182,0 -DA:21183,0 -DA:21184,0 -DA:21186,0 -DA:21187,0 -DA:21188,0 -DA:21190,0 -DA:21192,0 -DA:21193,0 -DA:21196,0 -DA:21197,0 -DA:21199,0 -DA:21201,0 -DA:21202,0 -DA:21203,0 -DA:21224,0 -DA:21225,0 -DA:21247,0 -DA:21248,0 -DA:21270,0 -DA:21318,0 -DA:21319,0 -DA:21321,0 -DA:21322,0 -DA:21323,0 -DA:21324,0 -DA:21326,0 -DA:21327,0 -DA:21329,0 -DA:21330,0 -DA:21331,0 -DA:21333,0 -DA:21334,0 -DA:21338,0 -DA:21361,0 -DA:21362,0 -DA:21364,0 -DA:21365,0 -DA:21366,0 -DA:21367,0 -DA:21368,0 -DA:21369,0 -DA:21370,0 -DA:21372,0 -DA:21395,0 -DA:21429,0 -DA:21430,0 -DA:21434,0 -DA:21435,0 -DA:21436,0 -DA:21437,0 -DA:21439,0 -DA:21440,0 -DA:21442,0 -DA:21479,0 -DA:21480,0 -DA:21481,0 -DA:21516,0 -DA:21517,0 -DA:21518,0 -DA:21543,0 -DA:21544,0 -DA:21573,0 -DA:21574,0 -DA:21576,0 -DA:21577,0 -DA:21615,0 -DA:21616,0 -DA:21618,0 -DA:21619,0 -DA:21620,0 -DA:21621,0 -DA:21623,0 -DA:21624,0 -DA:21626,0 -DA:21675,0 -DA:21676,0 -DA:21678,0 -DA:21679,0 -DA:21681,0 -DA:21682,0 -DA:21683,0 -DA:21685,0 -DA:21708,0 -DA:21734,0 -DA:21773,0 -DA:21774,0 -DA:21776,0 -DA:21777,0 -DA:21807,0 -DA:21842,0 -DA:21843,0 -DA:21865,0 -DA:21897,0 -DA:21898,0 -DA:21926,0 -DA:21962,0 -DA:21988,0 -DA:22013,0 -DA:22014,0 -DA:22035,0 -DA:22036,0 -DA:22063,0 -DA:22082,0 -DA:22110,0 -DA:22139,0 -DA:22160,0 -DA:22181,0 -DA:22200,0 -DA:22220,0 -DA:22257,0 -DA:22258,0 -DA:22260,0 -DA:22263,0 -DA:22265,0 -DA:22266,0 -DA:22267,0 -DA:22269,0 -DA:22270,0 -DA:22272,0 -DA:22273,0 -DA:22274,0 -DA:22277,0 -DA:22309,0 -DA:22345,0 -DA:22346,0 -DA:22347,0 -DA:22369,0 -DA:22370,0 -DA:22372,0 -DA:22373,0 -DA:22404,0 -DA:22425,0 -DA:22426,0 -DA:22430,0 -DA:22431,0 -DA:22461,0 -DA:22491,0 -DA:22521,0 -DA:22522,0 -DA:22550,0 -DA:22570,0 -DA:22601,0 -DA:22637,0 -DA:22638,0 -DA:22673,0 -DA:22703,0 -DA:22704,0 -DA:22706,0 -DA:22727,0 -DA:22751,0 -DA:22781,0 -DA:22814,0 -DA:22815,0 -DA:22817,0 -DA:22818,0 -DA:22819,0 -DA:22821,0 -DA:22822,0 -DA:22843,0 -DA:22873,0 -DA:22893,0 -DA:22913,0 -DA:22935,0 -DA:22956,0 -DA:22976,0 -DA:22997,0 -DA:23018,0 -DA:23044,0 -DA:23069,0 -DA:23070,0 -DA:23097,0 -DA:23098,0 -DA:23100,0 -DA:23101,0 -DA:23103,0 -DA:23104,0 -DA:23106,0 -DA:23107,0 -DA:23109,0 -DA:23136,0 -DA:23137,0 -DA:23139,0 -DA:23140,0 -DA:23141,0 -DA:23142,0 -DA:23144,0 -DA:23174,0 -DA:23175,0 -DA:23177,0 -DA:23208,0 -DA:23235,0 -DA:23236,0 -DA:23238,0 -DA:23239,0 -DA:23241,0 -DA:23242,0 -DA:23243,0 -DA:23245,0 -DA:23246,0 -DA:23248,0 -DA:23249,0 -DA:23250,0 -DA:23280,0 -DA:23308,0 -DA:23335,0 -DA:23372,0 -DA:23373,0 -DA:23374,0 -DA:23375,0 -DA:23377,0 -DA:23378,0 -DA:23379,0 -DA:23415,0 -DA:23416,0 -DA:23448,0 -DA:23449,0 -DA:23480,0 -DA:23481,0 -DA:23501,0 -DA:23538,0 -DA:23539,0 -DA:23563,0 -DA:23564,0 -DA:23565,0 -DA:23587,0 -DA:23588,0 -DA:23589,0 -DA:23628,0 -DA:23667,0 -DA:23699,0 -DA:23731,0 -DA:23765,0 -DA:23795,0 -DA:23822,0 -DA:23849,0 -DA:23878,0 -DA:23879,0 -DA:23910,0 -DA:23940,0 -DA:23961,0 -DA:23962,0 -DA:23991,0 -DA:23992,0 -DA:23993,0 -DA:23995,0 -DA:24017,0 -DA:24048,0 -DA:24075,0 -DA:24100,0 -DA:24101,0 -DA:24103,0 -DA:24104,0 -DA:24106,0 -DA:24138,0 -DA:24139,0 -DA:24141,0 -DA:24142,0 -DA:24144,0 -DA:24178,0 -DA:24179,0 -DA:24213,0 -DA:24214,0 -DA:24237,0 -DA:24238,0 -DA:24239,0 -DA:24240,0 -DA:24242,0 -DA:24243,0 -DA:24244,0 -DA:24245,0 -DA:24246,0 -DA:24248,0 -DA:24249,0 -DA:24250,0 -DA:24252,0 -DA:24253,0 -DA:24254,0 -DA:24256,0 -DA:24280,0 -DA:24300,0 -DA:24301,0 -DA:24323,0 -DA:24324,0 -DA:24326,0 -DA:24327,0 -DA:24329,0 -DA:24330,0 -DA:24331,0 -DA:24365,0 -DA:24367,0 -DA:24368,0 -DA:24371,0 -DA:24372,0 -DA:24373,0 -DA:24375,0 -DA:24376,0 -DA:24377,0 -DA:24378,0 -DA:24379,0 -DA:24381,0 -DA:24383,0 -DA:24415,0 -DA:24443,0 -DA:24444,0 -DA:24471,0 -DA:24497,0 -DA:24530,0 -DA:24531,0 -DA:24533,0 -DA:24534,0 -DA:24535,0 -DA:24536,0 -DA:24537,0 -DA:24539,0 -DA:24540,0 -DA:24543,0 -DA:24546,0 -DA:24547,0 -DA:24549,0 -DA:24580,0 -DA:24611,0 -DA:24639,0 -DA:24640,0 -DA:24670,0 -DA:24698,0 -DA:24723,0 -DA:24724,0 -DA:24725,0 -DA:24727,0 -DA:24728,0 -DA:24729,0 -DA:24731,0 -DA:24732,0 -DA:24733,0 -DA:24735,0 -DA:24777,0 -DA:24778,0 -DA:24779,0 -DA:24780,0 -DA:24782,0 -DA:24784,0 -DA:24785,0 -DA:24820,0 -DA:24821,0 -DA:24823,0 -DA:24824,0 -DA:24825,0 -DA:24826,0 -DA:24828,0 -DA:24829,0 -DA:24830,0 -DA:24833,0 -DA:24834,0 -DA:24835,0 -DA:24838,0 -DA:24839,0 -DA:24840,0 -DA:24841,0 -DA:24843,0 -DA:24846,0 -DA:24847,0 -DA:24848,0 -DA:24849,0 -DA:24851,0 -DA:24852,0 -DA:24853,0 -DA:24855,0 -DA:24880,0 -DA:24881,0 -DA:24882,0 -DA:24901,0 -DA:24923,0 -DA:24924,0 -DA:24951,0 -DA:24952,0 -DA:24954,0 -DA:24955,0 -DA:24959,0 -DA:24960,0 -DA:24961,0 -DA:24993,0 -DA:24994,0 -DA:25015,0 -DA:25016,0 -DA:25042,0 -DA:25043,0 -DA:25066,0 -DA:25067,0 -DA:25087,0 -DA:25113,0 -DA:25114,0 -DA:25116,0 -DA:25117,0 -DA:25118,0 -DA:25120,0 -DA:25121,0 -DA:25152,0 -DA:25153,0 -DA:25155,0 -DA:25156,0 -DA:25185,0 -DA:25186,0 -DA:25188,0 -DA:25189,0 -DA:25219,0 -DA:25220,0 -DA:25221,0 -DA:25222,0 -DA:25224,0 -DA:25250,0 -DA:25251,0 -DA:25253,0 -DA:25255,0 -DA:25278,0 -DA:25279,0 -DA:25281,0 -DA:25305,0 -DA:25306,0 -DA:25329,0 -DA:25330,0 -DA:25332,0 -DA:25333,0 -DA:25334,0 -DA:25336,0 -DA:25337,0 -DA:25341,0 -DA:25342,0 -DA:25343,0 -DA:25346,0 -DA:25370,0 -DA:25371,0 -DA:25398,0 -DA:25399,0 -DA:25403,0 -DA:25404,0 -DA:25515,0 -DA:25517,0 -DA:25518,0 -DA:25520,0 -DA:25521,0 -DA:25523,0 -DA:25524,0 -DA:25525,0 -DA:25529,0 -DA:25530,0 -DA:25531,0 -DA:25534,0 -DA:25542,0 -DA:25548,0 -DA:25549,0 -DA:25552,0 -DA:25555,0 -DA:25556,0 -DA:25557,0 -DA:25559,0 -DA:25560,0 -DA:25561,0 -DA:25563,0 -DA:25564,0 -DA:25566,0 -DA:25570,0 -DA:25573,0 -DA:25577,0 -DA:25578,0 -DA:25579,0 -DA:25582,0 -DA:25587,0 -DA:25605,0 -DA:25606,0 -DA:25612,0 -DA:25613,0 -DA:25614,0 -DA:25616,0 -DA:25641,0 -DA:25666,0 -DA:25692,0 -DA:25693,0 -DA:25694,0 -DA:25696,0 -DA:25697,0 -DA:25699,0 -DA:25700,0 -DA:25701,0 -DA:25702,0 -DA:25704,0 -DA:25727,0 -DA:25728,0 -DA:25729,0 -DA:25731,0 -DA:25732,0 -DA:25734,0 -DA:25735,0 -DA:25737,0 -DA:25760,0 -DA:25761,0 -DA:25762,0 -DA:25764,0 -DA:25765,0 -DA:25767,0 -DA:25768,0 -DA:25770,0 -DA:25811,0 -DA:25812,0 -DA:25814,0 -DA:25815,0 -DA:25816,0 -DA:25817,0 -DA:25819,0 -DA:25821,0 -DA:25822,0 -DA:25823,0 -DA:25824,0 -DA:25826,0 -DA:25827,0 -DA:25829,0 -DA:25830,0 -DA:25831,0 -DA:25833,0 -DA:25837,0 -DA:25838,0 -DA:25840,0 -DA:25841,0 -DA:25843,0 -DA:25844,0 -DA:25846,0 -DA:25848,0 -DA:25849,0 -DA:25851,0 -DA:25852,0 -DA:25853,0 -DA:25855,0 -DA:25857,0 -DA:25858,0 -DA:25859,0 -DA:25860,0 -DA:25863,0 -DA:25886,0 -DA:25887,0 -DA:25912,0 -DA:25913,0 -DA:25933,0 -DA:25955,0 -DA:25956,0 -DA:25958,0 -DA:25959,0 -DA:25961,0 -DA:25988,0 -DA:25989,0 -DA:25990,0 -DA:25992,0 -DA:26022,0 -DA:26023,0 -DA:26024,0 -DA:26025,0 -DA:26027,0 -DA:26060,0 -DA:26061,0 -DA:26063,0 -DA:26064,0 -DA:26065,0 -DA:26067,0 -DA:26070,0 -DA:26071,0 -DA:26072,0 -DA:26073,0 -DA:26074,0 -DA:26075,0 -DA:26106,0 -DA:26129,0 -DA:26130,0 -DA:26155,0 -DA:26180,0 -DA:26203,0 -DA:26222,0 -DA:26268,0 -DA:26300,0 -DA:26330,0 -DA:26357,0 -DA:26358,0 -DA:26359,0 -DA:26386,0 -DA:26387,0 -DA:26388,0 -DA:26429,0 -DA:26430,0 -DA:26432,0 -DA:26434,0 -DA:26435,0 -DA:26436,0 -DA:26437,0 -DA:26439,0 -DA:26440,0 -DA:26442,0 -DA:26443,0 -DA:26444,0 -DA:26445,0 -DA:26446,0 -DA:26447,0 -DA:26448,0 -DA:26449,0 -DA:26450,0 -DA:26452,0 -DA:26453,0 -DA:26454,0 -DA:26456,0 -DA:26461,0 -DA:26478,0 -DA:26479,0 -DA:26481,0 -DA:26521,0 -DA:26522,0 -DA:26523,0 -DA:26545,0 -DA:26571,0 -DA:26597,0 -DA:26622,0 -DA:26647,0 -DA:26648,0 -DA:26693,0 -DA:26731,0 -DA:26752,0 -DA:26769,0 -DA:26791,0 -DA:26808,0 -DA:26825,0 -DA:26848,0 -DA:26849,0 -DA:26850,0 -DA:26852,0 -DA:26853,0 -DA:26855,0 -DA:26856,0 -DA:26858,0 -DA:26859,0 -DA:26860,0 -DA:26862,0 -DA:26883,0 -DA:26884,0 -DA:26886,0 -DA:26907,0 -DA:26908,0 -DA:26928,0 -DA:26929,0 -DA:26953,0 -DA:26970,0 -DA:26971,0 -DA:26995,0 -DA:27016,0 -DA:27045,0 -DA:27065,0 -DA:27092,0 -DA:27114,0 -DA:27143,0 -DA:27163,0 -DA:27164,0 -DA:27188,0 -DA:27205,0 -DA:27206,0 -DA:27224,0 -DA:27253,0 -DA:27261,0 -DA:27262,0 -DA:27263,0 -DA:27264,0 -DA:27265,0 -DA:27266,0 -DA:27267,0 -DA:27268,0 -DA:27269,0 -DA:27270,0 -DA:27271,0 -DA:27272,0 -DA:27273,0 -DA:27274,0 -DA:27275,0 -DA:27276,0 -DA:27277,0 -DA:27278,0 -DA:27279,0 -DA:27280,0 -DA:27281,0 -DA:27282,0 -DA:27283,0 -DA:27284,0 -DA:27285,0 -DA:27286,0 -DA:27287,0 -DA:27288,0 -DA:27289,0 -DA:27290,0 -DA:27291,0 -DA:27292,0 -DA:27293,0 -DA:27294,0 -DA:27295,0 -DA:27296,0 -DA:27297,0 -DA:27298,0 -DA:27299,0 -DA:27300,0 -DA:27301,0 -DA:27302,0 -DA:27303,0 -DA:27304,0 -DA:27305,0 -DA:27306,0 -DA:27307,0 -DA:27308,0 -DA:27309,0 -DA:27310,0 -DA:27311,0 -DA:27312,0 -DA:27313,0 -DA:27314,0 -DA:27315,0 -DA:27316,0 -DA:27317,0 -DA:27318,0 -DA:27319,0 -DA:27320,0 -DA:27321,0 -DA:27322,0 -DA:27323,0 -DA:27324,0 -DA:27325,0 -DA:27326,0 -DA:27327,0 -DA:27328,0 -DA:27329,0 -DA:27330,0 -DA:27331,0 -DA:27332,0 -DA:27333,0 -DA:27334,0 -DA:27335,0 -DA:27336,0 -DA:27337,0 -DA:27338,0 -DA:27339,0 -DA:27340,0 -DA:27341,0 -DA:27342,0 -DA:27343,0 -DA:27344,0 -DA:27345,0 -DA:27346,0 -DA:27347,0 -DA:27348,0 -DA:27349,0 -DA:27350,0 -DA:27351,0 -DA:27352,0 -DA:27353,0 -DA:27354,0 -DA:27355,0 -DA:27356,0 -DA:27357,0 -DA:27358,0 -DA:27359,0 -DA:27360,0 -DA:27361,0 -DA:27362,0 -DA:27363,0 -DA:27364,0 -DA:27365,0 -DA:27366,0 -DA:27367,0 -DA:27368,0 -DA:27369,0 -DA:27370,0 -DA:27371,0 -DA:27372,0 -DA:27373,0 -DA:27374,0 -DA:27375,0 -DA:27376,0 -DA:27377,0 -DA:27378,0 -DA:27379,0 -DA:27380,0 -DA:27381,0 -DA:27382,0 -DA:27383,0 -DA:27384,0 -DA:27385,0 -DA:27386,0 -DA:27387,0 -DA:27388,0 -DA:27389,0 -DA:27390,0 -DA:27391,0 -DA:27392,0 -DA:27393,0 -DA:27394,0 -DA:27395,0 -DA:27396,0 -DA:27397,0 -DA:27398,0 -DA:27399,0 -DA:27400,0 -DA:27401,0 -DA:27402,0 -DA:27403,0 -DA:27404,0 -DA:27405,0 -DA:27406,0 -DA:27407,0 -DA:27408,0 -DA:27409,0 -DA:27412,0 -DA:27413,0 -DA:27414,0 -DA:27415,0 -DA:27418,0 -DA:27423,0 -DA:27424,0 -DA:27425,0 -DA:27426,0 -DA:27427,0 -DA:27428,0 -DA:27429,0 -DA:27430,0 -DA:27431,0 -DA:27432,0 -DA:27433,0 -DA:27434,0 -DA:27435,0 -DA:27436,0 -DA:27437,0 -DA:27438,0 -DA:27439,0 -DA:27440,0 -DA:27441,0 -DA:27442,0 -DA:27443,0 -DA:27444,0 -DA:27445,0 -DA:27446,0 -DA:27447,0 -DA:27448,0 -DA:27449,0 -DA:27450,0 -DA:27451,0 -DA:27452,0 -DA:27453,0 -DA:27454,0 -DA:27455,0 -DA:27456,0 -DA:27457,0 -DA:27458,0 -DA:27459,0 -DA:27460,0 -DA:27461,0 -DA:27462,0 -DA:27463,0 -DA:27464,0 -DA:27465,0 -DA:27466,0 -DA:27467,0 -DA:27468,0 -DA:27469,0 -DA:27470,0 -DA:27471,0 -DA:27472,0 -DA:27473,0 -DA:27474,0 -DA:27475,0 -DA:27476,0 -DA:27477,0 -DA:27478,0 -DA:27479,0 -DA:27480,0 -DA:27481,0 -DA:27482,0 -DA:27483,0 -DA:27484,0 -DA:27485,0 -DA:27486,0 -DA:27487,0 -DA:27488,0 -DA:27489,0 -DA:27490,0 -DA:27491,0 -DA:27492,0 -DA:27493,0 -DA:27494,0 -DA:27495,0 -DA:27496,0 -DA:27497,0 -DA:27498,0 -DA:27499,0 -DA:27500,0 -DA:27501,0 -DA:27502,0 -DA:27503,0 -DA:27504,0 -DA:27505,0 -DA:27506,0 -DA:27507,0 -DA:27508,0 -DA:27509,0 -DA:27510,0 -DA:27511,0 -DA:27512,0 -DA:27513,0 -DA:27514,0 -DA:27515,0 -DA:27516,0 -DA:27517,0 -DA:27518,0 -DA:27519,0 -DA:27520,0 -DA:27521,0 -DA:27522,0 -DA:27523,0 -DA:27524,0 -DA:27525,0 -DA:27526,0 -DA:27527,0 -DA:27528,0 -DA:27529,0 -DA:27530,0 -DA:27531,0 -DA:27532,0 -DA:27533,0 -DA:27534,0 -DA:27535,0 -DA:27536,0 -DA:27537,0 -DA:27538,0 -DA:27539,0 -DA:27540,0 -DA:27541,0 -DA:27542,0 -DA:27543,0 -DA:27544,0 -DA:27545,0 -DA:27546,0 -DA:27547,0 -DA:27548,0 -DA:27549,0 -DA:27550,0 -DA:27551,0 -DA:27552,0 -DA:27553,0 -DA:27554,0 -DA:27555,0 -DA:27556,0 -DA:27557,0 -DA:27558,0 -DA:27559,0 -DA:27560,0 -DA:27561,0 -DA:27562,0 -DA:27563,0 -DA:27564,0 -DA:27565,0 -DA:27566,0 -DA:27567,0 -DA:27568,0 -DA:27569,0 -DA:27570,0 -DA:27571,0 -DA:27574,0 -DA:27575,0 -DA:27576,0 -DA:27578,0 -DA:27579,0 -DA:27580,0 -DA:27581,0 -DA:27582,0 -DA:27585,0 -DA:27597,0 -DA:27600,0 -DA:27601,0 -DA:27605,0 -DA:27606,0 -DA:27607,0 -DA:27609,0 -DA:27613,0 -DA:27614,0 -DA:27616,0 -DA:27621,0 -DA:27624,0 -DA:27625,0 -DA:27630,0 -DA:27631,0 -DA:27632,0 -DA:27634,0 -DA:27635,0 -DA:27636,0 -DA:27640,0 -DA:27641,0 -DA:27646,0 -DA:27647,0 -DA:27649,0 -DA:27650,0 -DA:27655,0 -DA:27656,0 -DA:27658,0 -DA:27659,0 -DA:27663,0 -DA:27664,0 -DA:27667,0 -DA:27668,0 -DA:27671,0 -DA:27672,0 -DA:27675,0 -DA:27676,0 -DA:27677,0 -DA:27679,0 -DA:27680,0 -DA:27684,0 -DA:27685,0 -DA:27688,0 -DA:27689,0 -DA:27691,0 -DA:27692,0 -DA:27693,0 -DA:27695,0 -DA:27696,0 -DA:27697,0 -DA:27698,0 -DA:27700,0 -DA:27701,0 -DA:27702,0 -DA:27704,0 -DA:27707,0 -DA:27708,0 -DA:27711,0 -DA:27712,0 -DA:27716,0 -DA:27717,0 -DA:27718,0 -DA:27719,0 -DA:27720,0 -DA:27722,0 -DA:27723,0 -DA:27725,0 -DA:27726,0 -DA:27727,0 -DA:27728,0 -DA:27729,0 -DA:27730,0 -DA:27732,0 -DA:27733,0 -DA:27734,0 -DA:27737,0 -DA:27739,0 -DA:27741,0 -DA:27742,0 -DA:27743,0 -DA:27744,0 -DA:27746,0 -DA:27747,0 -DA:27748,0 -DA:27749,0 -DA:27750,0 -DA:27752,0 -DA:27753,0 -DA:27755,0 -DA:27756,0 -DA:27761,0 -DA:27762,0 -DA:27763,0 -DA:27764,0 -DA:27766,0 -DA:27767,0 -DA:27768,0 -DA:27769,0 -DA:27770,0 -DA:27772,0 -DA:27773,0 -DA:27779,0 -DA:27780,0 -DA:27781,0 -DA:27782,0 -DA:27783,0 -DA:27785,0 -DA:27789,0 -DA:27795,0 -DA:27796,0 -DA:27797,0 -DA:27800,0 -DA:27801,0 -DA:27802,0 -DA:27803,0 -DA:27804,0 -DA:27805,0 -DA:27806,0 -DA:27809,0 -DA:27811,0 -DA:27812,0 -DA:27814,0 -DA:27820,0 -DA:27823,0 -DA:27828,0 -DA:27832,0 -DA:27833,0 -DA:27837,0 -DA:27839,0 -DA:27841,0 -DA:27845,0 -DA:27851,0 -DA:27854,0 -DA:27901,0 -DA:27902,0 -DA:27904,0 -DA:27905,0 -DA:27906,0 -DA:27907,0 -DA:27909,0 -DA:27910,0 -DA:27912,0 -DA:27913,0 -DA:27914,0 -DA:27916,0 -DA:27917,0 -DA:27921,0 -DA:27923,0 -DA:27926,0 -DA:27957,0 -DA:27960,0 -DA:27963,0 -DA:27987,0 -DA:27990,0 -DA:27993,0 -DA:27995,0 -DA:27997,0 -DA:27998,0 -DA:27999,0 -DA:28002,0 -DA:28004,0 -DA:28007,0 -DA:28010,0 -DA:28011,0 -DA:28013,0 -DA:28014,0 -DA:28015,0 -DA:28021,0 -LF:8543 -LH:0 -BRDA:1,0,0,0 -BRDA:1,0,1,0 -BRDA:1,1,0,0 -BRDA:1,1,1,0 -BRDA:1,2,0,0 -BRDA:1,2,1,0 -BRDA:1,3,0,0 -BRDA:1,3,1,0 -BRDA:1,4,0,0 -BRDA:1,4,1,0 -BRDA:1,5,0,0 -BRDA:1,5,1,0 -BRDA:1,6,0,0 -BRDA:1,6,1,0 -BRDA:1,7,0,0 -BRDA:1,7,1,0 -BRDA:2,8,0,0 -BRDA:2,8,1,0 -BRDA:17,9,0,0 -BRDA:17,9,1,0 -BRDA:56,10,0,0 -BRDA:56,10,1,0 -BRDA:68,11,0,0 -BRDA:68,11,1,0 -BRDA:88,12,0,0 -BRDA:88,12,1,0 -BRDA:91,13,0,0 -BRDA:91,13,1,0 -BRDA:94,14,0,0 -BRDA:94,14,1,0 -BRDA:97,15,0,0 -BRDA:97,15,1,0 -BRDA:100,16,0,0 -BRDA:100,16,1,0 -BRDA:101,17,0,0 -BRDA:101,17,1,0 -BRDA:101,17,2,0 -BRDA:101,17,3,0 -BRDA:101,17,4,0 -BRDA:103,18,0,0 -BRDA:103,18,1,0 -BRDA:104,19,0,0 -BRDA:104,19,1,0 -BRDA:107,20,0,0 -BRDA:107,20,1,0 -BRDA:116,21,0,0 -BRDA:116,21,1,0 -BRDA:126,22,0,0 -BRDA:126,22,1,0 -BRDA:132,23,0,0 -BRDA:132,23,1,0 -BRDA:138,24,0,0 -BRDA:138,24,1,0 -BRDA:144,25,0,0 -BRDA:144,25,1,0 -BRDA:153,26,0,0 -BRDA:153,26,1,0 -BRDA:156,27,0,0 -BRDA:156,27,1,0 -BRDA:157,28,0,0 -BRDA:157,28,1,0 -BRDA:164,29,0,0 -BRDA:164,29,1,0 -BRDA:164,30,0,0 -BRDA:164,30,1,0 -BRDA:173,31,0,0 -BRDA:173,31,1,0 -BRDA:173,32,0,0 -BRDA:173,32,1,0 -BRDA:174,33,0,0 -BRDA:174,33,1,0 -BRDA:190,34,0,0 -BRDA:190,34,1,0 -BRDA:190,35,0,0 -BRDA:190,35,1,0 -BRDA:194,36,0,0 -BRDA:194,36,1,0 -BRDA:195,37,0,0 -BRDA:195,37,1,0 -BRDA:195,38,0,0 -BRDA:195,38,1,0 -BRDA:198,39,0,0 -BRDA:198,39,1,0 -BRDA:201,40,0,0 -BRDA:201,40,1,0 -BRDA:223,41,0,0 -BRDA:223,41,1,0 -BRDA:235,42,0,0 -BRDA:235,42,1,0 -BRDA:263,43,0,0 -BRDA:263,43,1,0 -BRDA:266,44,0,0 -BRDA:266,44,1,0 -BRDA:275,45,0,0 -BRDA:275,45,1,0 -BRDA:291,46,0,0 -BRDA:291,46,1,0 -BRDA:300,47,0,0 -BRDA:300,47,1,0 -BRDA:304,48,0,0 -BRDA:304,48,1,0 -BRDA:314,49,0,0 -BRDA:314,49,1,0 -BRDA:314,50,0,0 -BRDA:314,50,1,0 -BRDA:318,51,0,0 -BRDA:318,51,1,0 -BRDA:319,52,0,0 -BRDA:319,52,1,0 -BRDA:325,53,0,0 -BRDA:325,53,1,0 -BRDA:335,54,0,0 -BRDA:335,54,1,0 -BRDA:346,55,0,0 -BRDA:346,55,1,0 -BRDA:349,56,0,0 -BRDA:349,56,1,0 -BRDA:351,57,0,0 -BRDA:351,57,1,0 -BRDA:360,58,0,0 -BRDA:360,58,1,0 -BRDA:363,59,0,0 -BRDA:363,59,1,0 -BRDA:365,60,0,0 -BRDA:365,60,1,0 -BRDA:380,61,0,0 -BRDA:380,61,1,0 -BRDA:394,62,0,0 -BRDA:394,62,1,0 -BRDA:399,63,0,0 -BRDA:399,63,1,0 -BRDA:399,64,0,0 -BRDA:399,64,1,0 -BRDA:401,65,0,0 -BRDA:401,65,1,0 -BRDA:405,66,0,0 -BRDA:405,66,1,0 -BRDA:405,67,0,0 -BRDA:405,67,1,0 -BRDA:409,68,0,0 -BRDA:409,68,1,0 -BRDA:412,69,0,0 -BRDA:412,69,1,0 -BRDA:413,70,0,0 -BRDA:413,70,1,0 -BRDA:418,71,0,0 -BRDA:418,71,1,0 -BRDA:418,72,0,0 -BRDA:418,72,1,0 -BRDA:421,73,0,0 -BRDA:421,73,1,0 -BRDA:424,74,0,0 -BRDA:424,74,1,0 -BRDA:424,75,0,0 -BRDA:424,75,1,0 -BRDA:424,75,2,0 -BRDA:427,76,0,0 -BRDA:427,76,1,0 -BRDA:427,77,0,0 -BRDA:427,77,1,0 -BRDA:430,78,0,0 -BRDA:430,78,1,0 -BRDA:431,79,0,0 -BRDA:431,79,1,0 -BRDA:434,80,0,0 -BRDA:434,80,1,0 -BRDA:452,81,0,0 -BRDA:452,81,1,0 -BRDA:456,82,0,0 -BRDA:456,82,1,0 -BRDA:460,83,0,0 -BRDA:460,83,1,0 -BRDA:462,84,0,0 -BRDA:462,84,1,0 -BRDA:475,85,0,0 -BRDA:475,85,1,0 -BRDA:478,86,0,0 -BRDA:478,86,1,0 -BRDA:478,87,0,0 -BRDA:478,87,1,0 -BRDA:481,88,0,0 -BRDA:481,88,1,0 -BRDA:481,89,0,0 -BRDA:481,89,1,0 -BRDA:491,90,0,0 -BRDA:491,90,1,0 -BRDA:491,91,0,0 -BRDA:491,91,1,0 -BRDA:493,92,0,0 -BRDA:493,92,1,0 -BRDA:494,93,0,0 -BRDA:494,93,1,0 -BRDA:500,94,0,0 -BRDA:500,94,1,0 -BRDA:508,95,0,0 -BRDA:508,95,1,0 -BRDA:514,96,0,0 -BRDA:514,96,1,0 -BRDA:514,97,0,0 -BRDA:514,97,1,0 -BRDA:519,98,0,0 -BRDA:519,98,1,0 -BRDA:519,99,0,0 -BRDA:519,99,1,0 -BRDA:524,100,0,0 -BRDA:524,100,1,0 -BRDA:535,101,0,0 -BRDA:535,101,1,0 -BRDA:535,102,0,0 -BRDA:535,102,1,0 -BRDA:548,103,0,0 -BRDA:548,103,1,0 -BRDA:551,104,0,0 -BRDA:551,104,1,0 -BRDA:551,105,0,0 -BRDA:551,105,1,0 -BRDA:562,106,0,0 -BRDA:562,106,1,0 -BRDA:565,107,0,0 -BRDA:565,107,1,0 -BRDA:565,108,0,0 -BRDA:565,108,1,0 -BRDA:567,109,0,0 -BRDA:567,109,1,0 -BRDA:574,110,0,0 -BRDA:574,110,1,0 -BRDA:574,111,0,0 -BRDA:574,111,1,0 -BRDA:599,112,0,0 -BRDA:599,112,1,0 -BRDA:603,113,0,0 -BRDA:603,113,1,0 -BRDA:641,114,0,0 -BRDA:641,114,1,0 -BRDA:645,115,0,0 -BRDA:645,115,1,0 -BRDA:649,116,0,0 -BRDA:649,116,1,0 -BRDA:649,117,0,0 -BRDA:649,117,1,0 -BRDA:652,118,0,0 -BRDA:652,118,1,0 -BRDA:652,119,0,0 -BRDA:652,119,1,0 -BRDA:656,120,0,0 -BRDA:656,120,1,0 -BRDA:656,121,0,0 -BRDA:656,121,1,0 -BRDA:658,122,0,0 -BRDA:658,122,1,0 -BRDA:668,123,0,0 -BRDA:668,123,1,0 -BRDA:692,124,0,0 -BRDA:692,124,1,0 -BRDA:720,125,0,0 -BRDA:720,125,1,0 -BRDA:721,126,0,0 -BRDA:721,126,1,0 -BRDA:722,127,0,0 -BRDA:722,127,1,0 -BRDA:727,128,0,0 -BRDA:727,128,1,0 -BRDA:730,129,0,0 -BRDA:730,129,1,0 -BRDA:735,130,0,0 -BRDA:735,130,1,0 -BRDA:749,131,0,0 -BRDA:749,131,1,0 -BRDA:749,132,0,0 -BRDA:749,132,1,0 -BRDA:752,133,0,0 -BRDA:752,133,1,0 -BRDA:754,134,0,0 -BRDA:754,134,1,0 -BRDA:754,135,0,0 -BRDA:754,135,1,0 -BRDA:755,136,0,0 -BRDA:755,136,1,0 -BRDA:758,137,0,0 -BRDA:758,137,1,0 -BRDA:758,138,0,0 -BRDA:758,138,1,0 -BRDA:761,139,0,0 -BRDA:761,139,1,0 -BRDA:763,140,0,0 -BRDA:763,140,1,0 -BRDA:774,141,0,0 -BRDA:774,141,1,0 -BRDA:794,142,0,0 -BRDA:794,142,1,0 -BRDA:800,143,0,0 -BRDA:800,143,1,0 -BRDA:849,144,0,0 -BRDA:849,144,1,0 -BRDA:849,145,0,0 -BRDA:849,145,1,0 -BRDA:851,146,0,0 -BRDA:851,146,1,0 -BRDA:856,147,0,0 -BRDA:856,147,1,0 -BRDA:856,148,0,0 -BRDA:856,148,1,0 -BRDA:859,149,0,0 -BRDA:859,149,1,0 -BRDA:872,150,0,0 -BRDA:872,150,1,0 -BRDA:874,151,0,0 -BRDA:874,151,1,0 -BRDA:883,152,0,0 -BRDA:883,152,1,0 -BRDA:895,153,0,0 -BRDA:895,153,1,0 -BRDA:895,154,0,0 -BRDA:895,154,1,0 -BRDA:897,155,0,0 -BRDA:897,155,1,0 -BRDA:898,156,0,0 -BRDA:898,156,1,0 -BRDA:900,157,0,0 -BRDA:900,157,1,0 -BRDA:904,158,0,0 -BRDA:904,158,1,0 -BRDA:933,159,0,0 -BRDA:933,159,1,0 -BRDA:934,160,0,0 -BRDA:934,160,1,0 -BRDA:937,161,0,0 -BRDA:937,161,1,0 -BRDA:964,162,0,0 -BRDA:964,162,1,0 -BRDA:973,163,0,0 -BRDA:973,163,1,0 -BRDA:973,164,0,0 -BRDA:973,164,1,0 -BRDA:981,165,0,0 -BRDA:981,165,1,0 -BRDA:1000,166,0,0 -BRDA:1000,166,1,0 -BRDA:1000,167,0,0 -BRDA:1000,167,1,0 -BRDA:1006,168,0,0 -BRDA:1006,168,1,0 -BRDA:1006,169,0,0 -BRDA:1006,169,1,0 -BRDA:1010,170,0,0 -BRDA:1010,170,1,0 -BRDA:1012,171,0,0 -BRDA:1012,171,1,0 -BRDA:1017,172,0,0 -BRDA:1017,172,1,0 -BRDA:1020,173,0,0 -BRDA:1020,173,1,0 -BRDA:1025,174,0,0 -BRDA:1025,174,1,0 -BRDA:1025,175,0,0 -BRDA:1025,175,1,0 -BRDA:1032,176,0,0 -BRDA:1032,176,1,0 -BRDA:1045,177,0,0 -BRDA:1045,177,1,0 -BRDA:1049,178,0,0 -BRDA:1049,178,1,0 -BRDA:1052,179,0,0 -BRDA:1052,179,1,0 -BRDA:1055,180,0,0 -BRDA:1055,180,1,0 -BRDA:1060,181,0,0 -BRDA:1060,181,1,0 -BRDA:1070,182,0,0 -BRDA:1070,182,1,0 -BRDA:1078,183,0,0 -BRDA:1078,183,1,0 -BRDA:1080,184,0,0 -BRDA:1080,184,1,0 -BRDA:1082,185,0,0 -BRDA:1082,185,1,0 -BRDA:1090,186,0,0 -BRDA:1090,186,1,0 -BRDA:1100,187,0,0 -BRDA:1100,187,1,0 -BRDA:1102,188,0,0 -BRDA:1102,188,1,0 -BRDA:1104,189,0,0 -BRDA:1104,189,1,0 -BRDA:1106,190,0,0 -BRDA:1106,190,1,0 -BRDA:1115,191,0,0 -BRDA:1115,191,1,0 -BRDA:1127,192,0,0 -BRDA:1127,192,1,0 -BRDA:1130,193,0,0 -BRDA:1130,193,1,0 -BRDA:1132,194,0,0 -BRDA:1132,194,1,0 -BRDA:1132,195,0,0 -BRDA:1132,195,1,0 -BRDA:1132,195,2,0 -BRDA:1132,195,3,0 -BRDA:1134,196,0,0 -BRDA:1134,196,1,0 -BRDA:1134,197,0,0 -BRDA:1134,197,1,0 -BRDA:1134,197,2,0 -BRDA:1134,197,3,0 -BRDA:1143,198,0,0 -BRDA:1143,198,1,0 -BRDA:1143,199,0,0 -BRDA:1143,199,1,0 -BRDA:1162,200,0,0 -BRDA:1162,200,1,0 -BRDA:1166,201,0,0 -BRDA:1166,201,1,0 -BRDA:1167,202,0,0 -BRDA:1167,202,1,0 -BRDA:1173,203,0,0 -BRDA:1173,203,1,0 -BRDA:1180,204,0,0 -BRDA:1180,204,1,0 -BRDA:1182,205,0,0 -BRDA:1182,205,1,0 -BRDA:1187,206,0,0 -BRDA:1187,206,1,0 -BRDA:1187,207,0,0 -BRDA:1187,207,1,0 -BRDA:1187,207,2,0 -BRDA:1189,208,0,0 -BRDA:1189,208,1,0 -BRDA:1192,209,0,0 -BRDA:1192,209,1,0 -BRDA:1194,210,0,0 -BRDA:1194,210,1,0 -BRDA:1194,211,0,0 -BRDA:1194,211,1,0 -BRDA:1196,212,0,0 -BRDA:1196,212,1,0 -BRDA:1196,213,0,0 -BRDA:1196,213,1,0 -BRDA:1198,214,0,0 -BRDA:1198,214,1,0 -BRDA:1198,215,0,0 -BRDA:1198,215,1,0 -BRDA:1198,215,2,0 -BRDA:1198,215,3,0 -BRDA:1216,216,0,0 -BRDA:1216,216,1,0 -BRDA:1224,217,0,0 -BRDA:1224,217,1,0 -BRDA:1229,218,0,0 -BRDA:1229,218,1,0 -BRDA:1245,219,0,0 -BRDA:1245,219,1,0 -BRDA:1249,220,0,0 -BRDA:1249,220,1,0 -BRDA:1256,221,0,0 -BRDA:1256,221,1,0 -BRDA:1257,222,0,0 -BRDA:1257,222,1,0 -BRDA:1283,223,0,0 -BRDA:1283,223,1,0 -BRDA:1283,224,0,0 -BRDA:1283,224,1,0 -BRDA:1293,225,0,0 -BRDA:1293,225,1,0 -BRDA:1297,226,0,0 -BRDA:1297,226,1,0 -BRDA:1303,227,0,0 -BRDA:1303,227,1,0 -BRDA:1305,228,0,0 -BRDA:1305,228,1,0 -BRDA:1309,229,0,0 -BRDA:1309,229,1,0 -BRDA:1358,230,0,0 -BRDA:1358,230,1,0 -BRDA:1364,231,0,0 -BRDA:1364,231,1,0 -BRDA:1364,232,0,0 -BRDA:1364,232,1,0 -BRDA:1369,233,0,0 -BRDA:1369,233,1,0 -BRDA:1377,234,0,0 -BRDA:1377,234,1,0 -BRDA:1377,235,0,0 -BRDA:1377,235,1,0 -BRDA:1381,236,0,0 -BRDA:1381,236,1,0 -BRDA:1382,237,0,0 -BRDA:1382,237,1,0 -BRDA:1384,238,0,0 -BRDA:1384,238,1,0 -BRDA:1399,239,0,0 -BRDA:1399,239,1,0 -BRDA:1404,240,0,0 -BRDA:1404,240,1,0 -BRDA:1415,241,0,0 -BRDA:1415,241,1,0 -BRDA:1415,242,0,0 -BRDA:1415,242,1,0 -BRDA:1439,243,0,0 -BRDA:1439,243,1,0 -BRDA:1439,243,2,0 -BRDA:1439,243,3,0 -BRDA:1439,243,4,0 -BRDA:1448,244,0,0 -BRDA:1448,244,1,0 -BRDA:1468,245,0,0 -BRDA:1468,245,1,0 -BRDA:1469,246,0,0 -BRDA:1469,246,1,0 -BRDA:1518,247,0,0 -BRDA:1518,247,1,0 -BRDA:1529,248,0,0 -BRDA:1529,248,1,0 -BRDA:1529,249,0,0 -BRDA:1529,249,1,0 -BRDA:1531,250,0,0 -BRDA:1531,250,1,0 -BRDA:1584,251,0,0 -BRDA:1584,251,1,0 -BRDA:1587,252,0,0 -BRDA:1587,252,1,0 -BRDA:1589,253,0,0 -BRDA:1589,253,1,0 -BRDA:1597,254,0,0 -BRDA:1597,254,1,0 -BRDA:1606,255,0,0 -BRDA:1606,255,1,0 -BRDA:1656,256,0,0 -BRDA:1656,256,1,0 -BRDA:1660,257,0,0 -BRDA:1660,257,1,0 -BRDA:1697,258,0,0 -BRDA:1697,258,1,0 -BRDA:1699,259,0,0 -BRDA:1699,259,1,0 -BRDA:1700,260,0,0 -BRDA:1700,260,1,0 -BRDA:1704,261,0,0 -BRDA:1704,261,1,0 -BRDA:1704,262,0,0 -BRDA:1704,262,1,0 -BRDA:1727,263,0,0 -BRDA:1727,263,1,0 -BRDA:1732,264,0,0 -BRDA:1732,264,1,0 -BRDA:1737,265,0,0 -BRDA:1737,265,1,0 -BRDA:1751,266,0,0 -BRDA:1751,266,1,0 -BRDA:1754,267,0,0 -BRDA:1754,267,1,0 -BRDA:1765,268,0,0 -BRDA:1765,268,1,0 -BRDA:1771,269,0,0 -BRDA:1771,269,1,0 -BRDA:1777,270,0,0 -BRDA:1777,270,1,0 -BRDA:1792,271,0,0 -BRDA:1792,271,1,0 -BRDA:1797,272,0,0 -BRDA:1797,272,1,0 -BRDA:1869,273,0,0 -BRDA:1869,273,1,0 -BRDA:1879,274,0,0 -BRDA:1879,274,1,0 -BRDA:1879,274,2,0 -BRDA:1879,274,3,0 -BRDA:1889,275,0,0 -BRDA:1889,275,1,0 -BRDA:1907,276,0,0 -BRDA:1907,276,1,0 -BRDA:1909,277,0,0 -BRDA:1909,277,1,0 -BRDA:1913,278,0,0 -BRDA:1913,278,1,0 -BRDA:1919,279,0,0 -BRDA:1919,279,1,0 -BRDA:1924,280,0,0 -BRDA:1924,280,1,0 -BRDA:1925,281,0,0 -BRDA:1925,281,1,0 -BRDA:1933,282,0,0 -BRDA:1933,282,1,0 -BRDA:1934,283,0,0 -BRDA:1934,283,1,0 -BRDA:1943,284,0,0 -BRDA:1943,284,1,0 -BRDA:1943,285,0,0 -BRDA:1943,285,1,0 -BRDA:1954,286,0,0 -BRDA:1954,286,1,0 -BRDA:1956,287,0,0 -BRDA:1956,287,1,0 -BRDA:1958,288,0,0 -BRDA:1958,288,1,0 -BRDA:1962,289,0,0 -BRDA:1962,289,1,0 -BRDA:1963,290,0,0 -BRDA:1963,290,1,0 -BRDA:1966,291,0,0 -BRDA:1966,291,1,0 -BRDA:1971,292,0,0 -BRDA:1971,292,1,0 -BRDA:2006,293,0,0 -BRDA:2006,293,1,0 -BRDA:2032,294,0,0 -BRDA:2032,294,1,0 -BRDA:2032,295,0,0 -BRDA:2032,295,1,0 -BRDA:2044,296,0,0 -BRDA:2044,296,1,0 -BRDA:2054,297,0,0 -BRDA:2054,297,1,0 -BRDA:2064,298,0,0 -BRDA:2064,298,1,0 -BRDA:2065,299,0,0 -BRDA:2065,299,1,0 -BRDA:2073,300,0,0 -BRDA:2073,300,1,0 -BRDA:2081,301,0,0 -BRDA:2081,301,1,0 -BRDA:2089,302,0,0 -BRDA:2089,302,1,0 -BRDA:2093,303,0,0 -BRDA:2093,303,1,0 -BRDA:2093,304,0,0 -BRDA:2093,304,1,0 -BRDA:2097,305,0,0 -BRDA:2097,305,1,0 -BRDA:2105,306,0,0 -BRDA:2105,306,1,0 -BRDA:2110,307,0,0 -BRDA:2110,307,1,0 -BRDA:2115,308,0,0 -BRDA:2115,308,1,0 -BRDA:2116,309,0,0 -BRDA:2116,309,1,0 -BRDA:2121,310,0,0 -BRDA:2121,310,1,0 -BRDA:2121,310,2,0 -BRDA:2121,310,3,0 -BRDA:2121,310,4,0 -BRDA:2121,310,5,0 -BRDA:2121,310,6,0 -BRDA:2121,310,7,0 -BRDA:2121,310,8,0 -BRDA:2121,310,9,0 -BRDA:2121,310,10,0 -BRDA:2121,310,11,0 -BRDA:2140,311,0,0 -BRDA:2140,311,1,0 -BRDA:2142,312,0,0 -BRDA:2142,312,1,0 -BRDA:2147,313,0,0 -BRDA:2147,313,1,0 -BRDA:2165,314,0,0 -BRDA:2165,314,1,0 -BRDA:2168,315,0,0 -BRDA:2168,315,1,0 -BRDA:2173,316,0,0 -BRDA:2173,316,1,0 -BRDA:2173,316,2,0 -BRDA:2173,316,3,0 -BRDA:2173,316,4,0 -BRDA:2173,316,5,0 -BRDA:2173,316,6,0 -BRDA:2173,316,7,0 -BRDA:2173,316,8,0 -BRDA:2173,316,9,0 -BRDA:2173,316,10,0 -BRDA:2173,316,11,0 -BRDA:2173,316,12,0 -BRDA:2193,317,0,0 -BRDA:2193,317,1,0 -BRDA:2205,318,0,0 -BRDA:2205,318,1,0 -BRDA:2205,319,0,0 -BRDA:2205,319,1,0 -BRDA:2207,320,0,0 -BRDA:2207,320,1,0 -BRDA:2208,321,0,0 -BRDA:2208,321,1,0 -BRDA:2209,322,0,0 -BRDA:2209,322,1,0 -BRDA:2210,323,0,0 -BRDA:2210,323,1,0 -BRDA:2213,324,0,0 -BRDA:2213,324,1,0 -BRDA:2213,324,2,0 -BRDA:2213,324,3,0 -BRDA:2213,324,4,0 -BRDA:2213,324,5,0 -BRDA:2213,324,6,0 -BRDA:2213,324,7,0 -BRDA:2213,324,8,0 -BRDA:2213,324,9,0 -BRDA:2213,324,10,0 -BRDA:2237,325,0,0 -BRDA:2237,325,1,0 -BRDA:2246,326,0,0 -BRDA:2246,326,1,0 -BRDA:2247,327,0,0 -BRDA:2247,327,1,0 -BRDA:2252,328,0,0 -BRDA:2252,328,1,0 -BRDA:2253,329,0,0 -BRDA:2253,329,1,0 -BRDA:2260,330,0,0 -BRDA:2260,330,1,0 -BRDA:2262,331,0,0 -BRDA:2262,331,1,0 -BRDA:2268,332,0,0 -BRDA:2268,332,1,0 -BRDA:2269,333,0,0 -BRDA:2269,333,1,0 -BRDA:2274,334,0,0 -BRDA:2274,334,1,0 -BRDA:2275,335,0,0 -BRDA:2275,335,1,0 -BRDA:2278,336,0,0 -BRDA:2278,336,1,0 -BRDA:2279,337,0,0 -BRDA:2279,337,1,0 -BRDA:2282,338,0,0 -BRDA:2282,338,1,0 -BRDA:2284,339,0,0 -BRDA:2284,339,1,0 -BRDA:2285,340,0,0 -BRDA:2285,340,1,0 -BRDA:2288,341,0,0 -BRDA:2288,341,1,0 -BRDA:2291,342,0,0 -BRDA:2291,342,1,0 -BRDA:2292,343,0,0 -BRDA:2292,343,1,0 -BRDA:2292,344,0,0 -BRDA:2292,344,1,0 -BRDA:2301,345,0,0 -BRDA:2301,345,1,0 -BRDA:2301,346,0,0 -BRDA:2301,346,1,0 -BRDA:2302,347,0,0 -BRDA:2302,347,1,0 -BRDA:2303,348,0,0 -BRDA:2303,348,1,0 -BRDA:2327,349,0,0 -BRDA:2327,349,1,0 -BRDA:2329,350,0,0 -BRDA:2329,350,1,0 -BRDA:2333,351,0,0 -BRDA:2333,351,1,0 -BRDA:2340,352,0,0 -BRDA:2340,352,1,0 -BRDA:2342,353,0,0 -BRDA:2342,353,1,0 -BRDA:2347,354,0,0 -BRDA:2347,354,1,0 -BRDA:2375,355,0,0 -BRDA:2375,355,1,0 -BRDA:2380,356,0,0 -BRDA:2380,356,1,0 -BRDA:2380,357,0,0 -BRDA:2380,357,1,0 -BRDA:2385,358,0,0 -BRDA:2385,358,1,0 -BRDA:2387,359,0,0 -BRDA:2387,359,1,0 -BRDA:2389,360,0,0 -BRDA:2389,360,1,0 -BRDA:2403,361,0,0 -BRDA:2403,361,1,0 -BRDA:2403,362,0,0 -BRDA:2403,362,1,0 -BRDA:2405,363,0,0 -BRDA:2405,363,1,0 -BRDA:2405,364,0,0 -BRDA:2405,364,1,0 -BRDA:2405,364,2,0 -BRDA:2405,364,3,0 -BRDA:2409,365,0,0 -BRDA:2409,365,1,0 -BRDA:2413,366,0,0 -BRDA:2413,366,1,0 -BRDA:2413,366,2,0 -BRDA:2413,366,3,0 -BRDA:2413,366,4,0 -BRDA:2413,366,5,0 -BRDA:2413,366,6,0 -BRDA:2413,366,7,0 -BRDA:2413,366,8,0 -BRDA:2413,366,9,0 -BRDA:2413,366,10,0 -BRDA:2438,367,0,0 -BRDA:2438,367,1,0 -BRDA:2448,368,0,0 -BRDA:2448,368,1,0 -BRDA:2453,369,0,0 -BRDA:2453,369,1,0 -BRDA:2453,370,0,0 -BRDA:2453,370,1,0 -BRDA:2468,371,0,0 -BRDA:2468,371,1,0 -BRDA:2469,372,0,0 -BRDA:2469,372,1,0 -BRDA:2470,373,0,0 -BRDA:2470,373,1,0 -BRDA:2473,374,0,0 -BRDA:2473,374,1,0 -BRDA:2476,375,0,0 -BRDA:2476,375,1,0 -BRDA:2476,375,2,0 -BRDA:2476,375,3,0 -BRDA:2478,376,0,0 -BRDA:2478,376,1,0 -BRDA:2484,377,0,0 -BRDA:2484,377,1,0 -BRDA:2486,378,0,0 -BRDA:2486,378,1,0 -BRDA:2494,379,0,0 -BRDA:2494,379,1,0 -BRDA:2494,380,0,0 -BRDA:2494,380,1,0 -BRDA:2496,381,0,0 -BRDA:2496,381,1,0 -BRDA:2496,382,0,0 -BRDA:2496,382,1,0 -BRDA:2496,382,2,0 -BRDA:2505,383,0,0 -BRDA:2505,383,1,0 -BRDA:2505,384,0,0 -BRDA:2505,384,1,0 -BRDA:2505,384,2,0 -BRDA:2507,385,0,0 -BRDA:2507,385,1,0 -BRDA:2507,386,0,0 -BRDA:2507,386,1,0 -BRDA:2514,387,0,0 -BRDA:2514,387,1,0 -BRDA:2519,388,0,0 -BRDA:2519,388,1,0 -BRDA:2540,389,0,0 -BRDA:2540,389,1,0 -BRDA:2579,390,0,0 -BRDA:2579,390,1,0 -BRDA:2579,391,0,0 -BRDA:2579,391,1,0 -BRDA:2580,392,0,0 -BRDA:2580,392,1,0 -BRDA:2580,393,0,0 -BRDA:2580,393,1,0 -BRDA:2580,393,2,0 -BRDA:2601,394,0,0 -BRDA:2601,394,1,0 -BRDA:2603,395,0,0 -BRDA:2603,395,1,0 -BRDA:2605,396,0,0 -BRDA:2605,396,1,0 -BRDA:2606,397,0,0 -BRDA:2606,397,1,0 -BRDA:2610,398,0,0 -BRDA:2610,398,1,0 -BRDA:2612,399,0,0 -BRDA:2612,399,1,0 -BRDA:2613,400,0,0 -BRDA:2613,400,1,0 -BRDA:2617,401,0,0 -BRDA:2617,401,1,0 -BRDA:2620,402,0,0 -BRDA:2620,402,1,0 -BRDA:2630,403,0,0 -BRDA:2630,403,1,0 -BRDA:2630,404,0,0 -BRDA:2630,404,1,0 -BRDA:2639,405,0,0 -BRDA:2639,405,1,0 -BRDA:2639,406,0,0 -BRDA:2639,406,1,0 -BRDA:2640,407,0,0 -BRDA:2640,407,1,0 -BRDA:2646,408,0,0 -BRDA:2646,408,1,0 -BRDA:2651,409,0,0 -BRDA:2651,409,1,0 -BRDA:2661,410,0,0 -BRDA:2661,410,1,0 -BRDA:2667,411,0,0 -BRDA:2667,411,1,0 -BRDA:2675,412,0,0 -BRDA:2675,412,1,0 -BRDA:2680,413,0,0 -BRDA:2680,413,1,0 -BRDA:2685,414,0,0 -BRDA:2685,414,1,0 -BRDA:2690,415,0,0 -BRDA:2690,415,1,0 -BRDA:2699,416,0,0 -BRDA:2699,416,1,0 -BRDA:2710,417,0,0 -BRDA:2710,417,1,0 -BRDA:2715,418,0,0 -BRDA:2715,418,1,0 -BRDA:2720,419,0,0 -BRDA:2720,419,1,0 -BRDA:2728,420,0,0 -BRDA:2728,420,1,0 -BRDA:2733,421,0,0 -BRDA:2733,421,1,0 -BRDA:2738,422,0,0 -BRDA:2738,422,1,0 -BRDA:2744,423,0,0 -BRDA:2744,423,1,0 -BRDA:2745,424,0,0 -BRDA:2745,424,1,0 -BRDA:2750,425,0,0 -BRDA:2750,425,1,0 -BRDA:2752,426,0,0 -BRDA:2752,426,1,0 -BRDA:2756,427,0,0 -BRDA:2756,427,1,0 -BRDA:2758,428,0,0 -BRDA:2758,428,1,0 -BRDA:2762,429,0,0 -BRDA:2762,429,1,0 -BRDA:2771,430,0,0 -BRDA:2771,430,1,0 -BRDA:2780,431,0,0 -BRDA:2780,431,1,0 -BRDA:2785,432,0,0 -BRDA:2785,432,1,0 -BRDA:2790,433,0,0 -BRDA:2790,433,1,0 -BRDA:2795,434,0,0 -BRDA:2795,434,1,0 -BRDA:2800,435,0,0 -BRDA:2800,435,1,0 -BRDA:2801,436,0,0 -BRDA:2801,436,1,0 -BRDA:2801,437,0,0 -BRDA:2801,437,1,0 -BRDA:2802,438,0,0 -BRDA:2802,438,1,0 -BRDA:2809,439,0,0 -BRDA:2809,439,1,0 -BRDA:2814,440,0,0 -BRDA:2814,440,1,0 -BRDA:2825,441,0,0 -BRDA:2825,441,1,0 -BRDA:2830,442,0,0 -BRDA:2830,442,1,0 -BRDA:2840,443,0,0 -BRDA:2840,443,1,0 -BRDA:2841,444,0,0 -BRDA:2841,444,1,0 -BRDA:2847,445,0,0 -BRDA:2847,445,1,0 -BRDA:2849,446,0,0 -BRDA:2849,446,1,0 -BRDA:2850,447,0,0 -BRDA:2850,447,1,0 -BRDA:2857,448,0,0 -BRDA:2857,448,1,0 -BRDA:2858,449,0,0 -BRDA:2858,449,1,0 -BRDA:2870,450,0,0 -BRDA:2870,450,1,0 -BRDA:2871,451,0,0 -BRDA:2871,451,1,0 -BRDA:2881,452,0,0 -BRDA:2881,452,1,0 -BRDA:2883,453,0,0 -BRDA:2883,453,1,0 -BRDA:2890,454,0,0 -BRDA:2890,454,1,0 -BRDA:2891,455,0,0 -BRDA:2891,455,1,0 -BRDA:2905,456,0,0 -BRDA:2905,456,1,0 -BRDA:2906,457,0,0 -BRDA:2906,457,1,0 -BRDA:2920,458,0,0 -BRDA:2920,458,1,0 -BRDA:2928,459,0,0 -BRDA:2928,459,1,0 -BRDA:2930,460,0,0 -BRDA:2930,460,1,0 -BRDA:2940,461,0,0 -BRDA:2940,461,1,0 -BRDA:2948,462,0,0 -BRDA:2948,462,1,0 -BRDA:2950,463,0,0 -BRDA:2950,463,1,0 -BRDA:2960,464,0,0 -BRDA:2960,464,1,0 -BRDA:2961,465,0,0 -BRDA:2961,465,1,0 -BRDA:2962,466,0,0 -BRDA:2962,466,1,0 -BRDA:2970,467,0,0 -BRDA:2970,467,1,0 -BRDA:2971,468,0,0 -BRDA:2971,468,1,0 -BRDA:2983,469,0,0 -BRDA:2983,469,1,0 -BRDA:2984,470,0,0 -BRDA:2984,470,1,0 -BRDA:2996,471,0,0 -BRDA:2996,471,1,0 -BRDA:2997,472,0,0 -BRDA:2997,472,1,0 -BRDA:3011,473,0,0 -BRDA:3011,473,1,0 -BRDA:3012,474,0,0 -BRDA:3012,474,1,0 -BRDA:3013,475,0,0 -BRDA:3013,475,1,0 -BRDA:3025,476,0,0 -BRDA:3025,476,1,0 -BRDA:3025,477,0,0 -BRDA:3025,477,1,0 -BRDA:3026,478,0,0 -BRDA:3026,478,1,0 -BRDA:3027,479,0,0 -BRDA:3027,479,1,0 -BRDA:3031,480,0,0 -BRDA:3031,480,1,0 -BRDA:3047,481,0,0 -BRDA:3047,481,1,0 -BRDA:3064,482,0,0 -BRDA:3064,482,1,0 -BRDA:3065,483,0,0 -BRDA:3065,483,1,0 -BRDA:3065,484,0,0 -BRDA:3065,484,1,0 -BRDA:3066,485,0,0 -BRDA:3066,485,1,0 -BRDA:3067,486,0,0 -BRDA:3067,486,1,0 -BRDA:3068,487,0,0 -BRDA:3068,487,1,0 -BRDA:3068,488,0,0 -BRDA:3068,488,1,0 -BRDA:3071,489,0,0 -BRDA:3071,489,1,0 -BRDA:3072,490,0,0 -BRDA:3072,490,1,0 -BRDA:3072,491,0,0 -BRDA:3072,491,1,0 -BRDA:3075,492,0,0 -BRDA:3075,492,1,0 -BRDA:3078,493,0,0 -BRDA:3078,493,1,0 -BRDA:3078,494,0,0 -BRDA:3078,494,1,0 -BRDA:3079,495,0,0 -BRDA:3079,495,1,0 -BRDA:3082,496,0,0 -BRDA:3082,496,1,0 -BRDA:3083,497,0,0 -BRDA:3083,497,1,0 -BRDA:3090,498,0,0 -BRDA:3090,498,1,0 -BRDA:3090,499,0,0 -BRDA:3090,499,1,0 -BRDA:3090,499,2,0 -BRDA:3095,500,0,0 -BRDA:3095,500,1,0 -BRDA:3095,501,0,0 -BRDA:3095,501,1,0 -BRDA:3109,502,0,0 -BRDA:3109,502,1,0 -BRDA:3110,503,0,0 -BRDA:3110,503,1,0 -BRDA:3111,504,0,0 -BRDA:3111,504,1,0 -BRDA:3113,505,0,0 -BRDA:3113,505,1,0 -BRDA:3116,506,0,0 -BRDA:3116,506,1,0 -BRDA:3117,507,0,0 -BRDA:3117,507,1,0 -BRDA:3119,508,0,0 -BRDA:3119,508,1,0 -BRDA:3119,509,0,0 -BRDA:3119,509,1,0 -BRDA:3120,510,0,0 -BRDA:3120,510,1,0 -BRDA:3120,511,0,0 -BRDA:3120,511,1,0 -BRDA:3123,512,0,0 -BRDA:3123,512,1,0 -BRDA:3143,513,0,0 -BRDA:3143,513,1,0 -BRDA:3144,514,0,0 -BRDA:3144,514,1,0 -BRDA:3235,515,0,0 -BRDA:3235,515,1,0 -BRDA:3244,516,0,0 -BRDA:3244,516,1,0 -BRDA:3249,517,0,0 -BRDA:3249,517,1,0 -BRDA:3254,518,0,0 -BRDA:3254,518,1,0 -BRDA:3264,519,0,0 -BRDA:3264,519,1,0 -BRDA:3264,520,0,0 -BRDA:3264,520,1,0 -BRDA:3266,521,0,0 -BRDA:3266,521,1,0 -BRDA:3268,522,0,0 -BRDA:3268,522,1,0 -BRDA:3270,523,0,0 -BRDA:3270,523,1,0 -BRDA:3272,524,0,0 -BRDA:3272,524,1,0 -BRDA:3274,525,0,0 -BRDA:3274,525,1,0 -BRDA:3285,526,0,0 -BRDA:3285,526,1,0 -BRDA:3286,527,0,0 -BRDA:3286,527,1,0 -BRDA:3293,528,0,0 -BRDA:3293,528,1,0 -BRDA:3295,529,0,0 -BRDA:3295,529,1,0 -BRDA:3301,530,0,0 -BRDA:3301,530,1,0 -BRDA:3302,531,0,0 -BRDA:3302,531,1,0 -BRDA:3304,532,0,0 -BRDA:3304,532,1,0 -BRDA:3305,533,0,0 -BRDA:3305,533,1,0 -BRDA:3310,534,0,0 -BRDA:3310,534,1,0 -BRDA:3311,535,0,0 -BRDA:3311,535,1,0 -BRDA:3317,536,0,0 -BRDA:3317,536,1,0 -BRDA:3318,537,0,0 -BRDA:3318,537,1,0 -BRDA:3346,538,0,0 -BRDA:3346,538,1,0 -BRDA:3364,539,0,0 -BRDA:3364,539,1,0 -BRDA:3364,540,0,0 -BRDA:3364,540,1,0 -BRDA:3370,541,0,0 -BRDA:3370,541,1,0 -BRDA:3370,542,0,0 -BRDA:3370,542,1,0 -BRDA:3370,543,0,0 -BRDA:3370,543,1,0 -BRDA:3377,544,0,0 -BRDA:3377,544,1,0 -BRDA:3391,545,0,0 -BRDA:3391,545,1,0 -BRDA:3391,546,0,0 -BRDA:3391,546,1,0 -BRDA:3394,547,0,0 -BRDA:3394,547,1,0 -BRDA:3394,548,0,0 -BRDA:3394,548,1,0 -BRDA:3397,549,0,0 -BRDA:3397,549,1,0 -BRDA:3399,550,0,0 -BRDA:3399,550,1,0 -BRDA:3401,551,0,0 -BRDA:3401,551,1,0 -BRDA:3403,552,0,0 -BRDA:3403,552,1,0 -BRDA:3410,553,0,0 -BRDA:3410,553,1,0 -BRDA:3420,554,0,0 -BRDA:3420,554,1,0 -BRDA:3420,555,0,0 -BRDA:3420,555,1,0 -BRDA:3426,556,0,0 -BRDA:3426,556,1,0 -BRDA:3441,557,0,0 -BRDA:3441,557,1,0 -BRDA:3444,558,0,0 -BRDA:3444,558,1,0 -BRDA:3474,559,0,0 -BRDA:3474,559,1,0 -BRDA:3495,560,0,0 -BRDA:3495,560,1,0 -BRDA:3504,561,0,0 -BRDA:3504,561,1,0 -BRDA:3505,562,0,0 -BRDA:3505,562,1,0 -BRDA:3520,563,0,0 -BRDA:3520,563,1,0 -BRDA:3522,564,0,0 -BRDA:3522,564,1,0 -BRDA:3523,565,0,0 -BRDA:3523,565,1,0 -BRDA:3523,566,0,0 -BRDA:3523,566,1,0 -BRDA:3528,567,0,0 -BRDA:3528,567,1,0 -BRDA:3536,568,0,0 -BRDA:3536,568,1,0 -BRDA:3537,569,0,0 -BRDA:3537,569,1,0 -BRDA:3538,570,0,0 -BRDA:3538,570,1,0 -BRDA:3539,571,0,0 -BRDA:3539,571,1,0 -BRDA:3539,572,0,0 -BRDA:3539,572,1,0 -BRDA:3539,572,2,0 -BRDA:3543,573,0,0 -BRDA:3543,573,1,0 -BRDA:3543,574,0,0 -BRDA:3543,574,1,0 -BRDA:3544,575,0,0 -BRDA:3544,575,1,0 -BRDA:3548,576,0,0 -BRDA:3548,576,1,0 -BRDA:3552,577,0,0 -BRDA:3552,577,1,0 -BRDA:3557,578,0,0 -BRDA:3557,578,1,0 -BRDA:3562,579,0,0 -BRDA:3562,579,1,0 -BRDA:3565,580,0,0 -BRDA:3565,580,1,0 -BRDA:3586,581,0,0 -BRDA:3586,581,1,0 -BRDA:3613,582,0,0 -BRDA:3613,582,1,0 -BRDA:3614,583,0,0 -BRDA:3614,583,1,0 -BRDA:3631,584,0,0 -BRDA:3631,584,1,0 -BRDA:3631,585,0,0 -BRDA:3631,585,1,0 -BRDA:3631,585,2,0 -BRDA:3640,586,0,0 -BRDA:3640,586,1,0 -BRDA:3644,587,0,0 -BRDA:3644,587,1,0 -BRDA:3645,588,0,0 -BRDA:3645,588,1,0 -BRDA:3645,589,0,0 -BRDA:3645,589,1,0 -BRDA:3645,589,2,0 -BRDA:3648,590,0,0 -BRDA:3648,590,1,0 -BRDA:3657,591,0,0 -BRDA:3657,591,1,0 -BRDA:3660,592,0,0 -BRDA:3660,592,1,0 -BRDA:3661,593,0,0 -BRDA:3661,593,1,0 -BRDA:3661,593,2,0 -BRDA:3661,593,3,0 -BRDA:3680,594,0,0 -BRDA:3680,594,1,0 -BRDA:3698,595,0,0 -BRDA:3698,595,1,0 -BRDA:3701,596,0,0 -BRDA:3701,596,1,0 -BRDA:3706,597,0,0 -BRDA:3706,597,1,0 -BRDA:3708,598,0,0 -BRDA:3708,598,1,0 -BRDA:3711,599,0,0 -BRDA:3711,599,1,0 -BRDA:3714,600,0,0 -BRDA:3714,600,1,0 -BRDA:3722,601,0,0 -BRDA:3722,601,1,0 -BRDA:3722,602,0,0 -BRDA:3722,602,1,0 -BRDA:3724,603,0,0 -BRDA:3724,603,1,0 -BRDA:3730,604,0,0 -BRDA:3730,604,1,0 -BRDA:3730,605,0,0 -BRDA:3730,605,1,0 -BRDA:3730,605,2,0 -BRDA:3736,606,0,0 -BRDA:3736,606,1,0 -BRDA:3749,607,0,0 -BRDA:3749,607,1,0 -BRDA:3757,608,0,0 -BRDA:3757,608,1,0 -BRDA:3773,609,0,0 -BRDA:3773,609,1,0 -BRDA:3776,610,0,0 -BRDA:3776,610,1,0 -BRDA:3776,611,0,0 -BRDA:3776,611,1,0 -BRDA:3783,612,0,0 -BRDA:3783,612,1,0 -BRDA:3783,613,0,0 -BRDA:3783,613,1,0 -BRDA:3783,613,2,0 -BRDA:3786,614,0,0 -BRDA:3786,614,1,0 -BRDA:3789,615,0,0 -BRDA:3789,615,1,0 -BRDA:3791,616,0,0 -BRDA:3791,616,1,0 -BRDA:3791,617,0,0 -BRDA:3791,617,1,0 -BRDA:3791,617,2,0 -BRDA:3798,618,0,0 -BRDA:3798,618,1,0 -BRDA:3801,619,0,0 -BRDA:3801,619,1,0 -BRDA:3808,620,0,0 -BRDA:3808,620,1,0 -BRDA:3818,621,0,0 -BRDA:3818,621,1,0 -BRDA:3822,622,0,0 -BRDA:3822,622,1,0 -BRDA:3823,623,0,0 -BRDA:3823,623,1,0 -BRDA:3825,624,0,0 -BRDA:3825,624,1,0 -BRDA:3831,625,0,0 -BRDA:3831,625,1,0 -BRDA:3833,626,0,0 -BRDA:3833,626,1,0 -BRDA:3843,627,0,0 -BRDA:3843,627,1,0 -BRDA:3857,628,0,0 -BRDA:3857,628,1,0 -BRDA:3857,629,0,0 -BRDA:3857,629,1,0 -BRDA:3859,630,0,0 -BRDA:3859,630,1,0 -BRDA:3868,631,0,0 -BRDA:3868,631,1,0 -BRDA:3868,632,0,0 -BRDA:3868,632,1,0 -BRDA:3870,633,0,0 -BRDA:3870,633,1,0 -BRDA:3886,634,0,0 -BRDA:3886,634,1,0 -BRDA:3894,635,0,0 -BRDA:3894,635,1,0 -BRDA:3929,636,0,0 -BRDA:3929,636,1,0 -BRDA:3929,636,2,0 -BRDA:3929,636,3,0 -BRDA:3929,636,4,0 -BRDA:3938,637,0,0 -BRDA:3938,637,1,0 -BRDA:3946,638,0,0 -BRDA:3946,638,1,0 -BRDA:3969,639,0,0 -BRDA:3969,639,1,0 -BRDA:4000,640,0,0 -BRDA:4000,640,1,0 -BRDA:4005,641,0,0 -BRDA:4005,641,1,0 -BRDA:4011,642,0,0 -BRDA:4011,642,1,0 -BRDA:4022,643,0,0 -BRDA:4022,643,1,0 -BRDA:4036,644,0,0 -BRDA:4036,644,1,0 -BRDA:4042,645,0,0 -BRDA:4042,645,1,0 -BRDA:4042,646,0,0 -BRDA:4042,646,1,0 -BRDA:4088,647,0,0 -BRDA:4088,647,1,0 -BRDA:4088,647,2,0 -BRDA:4088,647,3,0 -BRDA:4090,648,0,0 -BRDA:4090,648,1,0 -BRDA:4090,648,2,0 -BRDA:4090,648,3,0 -BRDA:4092,649,0,0 -BRDA:4092,649,1,0 -BRDA:4093,650,0,0 -BRDA:4093,650,1,0 -BRDA:4094,651,0,0 -BRDA:4094,651,1,0 -BRDA:4094,651,2,0 -BRDA:4183,652,0,0 -BRDA:4183,652,1,0 -BRDA:4217,653,0,0 -BRDA:4217,653,1,0 -BRDA:4217,654,0,0 -BRDA:4217,654,1,0 -BRDA:4217,654,2,0 -BRDA:4220,655,0,0 -BRDA:4220,655,1,0 -BRDA:4246,656,0,0 -BRDA:4246,656,1,0 -BRDA:4266,657,0,0 -BRDA:4266,657,1,0 -BRDA:4269,658,0,0 -BRDA:4269,658,1,0 -BRDA:4272,659,0,0 -BRDA:4272,659,1,0 -BRDA:4302,660,0,0 -BRDA:4302,660,1,0 -BRDA:4341,661,0,0 -BRDA:4341,661,1,0 -BRDA:4347,662,0,0 -BRDA:4347,662,1,0 -BRDA:4356,663,0,0 -BRDA:4356,663,1,0 -BRDA:4365,664,0,0 -BRDA:4365,664,1,0 -BRDA:4371,665,0,0 -BRDA:4371,665,1,0 -BRDA:4371,666,0,0 -BRDA:4371,666,1,0 -BRDA:4376,667,0,0 -BRDA:4376,667,1,0 -BRDA:4376,668,0,0 -BRDA:4376,668,1,0 -BRDA:4378,669,0,0 -BRDA:4378,669,1,0 -BRDA:4383,670,0,0 -BRDA:4383,670,1,0 -BRDA:4396,671,0,0 -BRDA:4396,671,1,0 -BRDA:4452,672,0,0 -BRDA:4452,672,1,0 -BRDA:4463,673,0,0 -BRDA:4463,673,1,0 -BRDA:4474,674,0,0 -BRDA:4474,674,1,0 -BRDA:4474,675,0,0 -BRDA:4474,675,1,0 -BRDA:4482,676,0,0 -BRDA:4482,676,1,0 -BRDA:4492,677,0,0 -BRDA:4492,677,1,0 -BRDA:4492,678,0,0 -BRDA:4492,678,1,0 -BRDA:4496,679,0,0 -BRDA:4496,679,1,0 -BRDA:4499,680,0,0 -BRDA:4499,680,1,0 -BRDA:4499,681,0,0 -BRDA:4499,681,1,0 -BRDA:4500,682,0,0 -BRDA:4500,682,1,0 -BRDA:4538,683,0,0 -BRDA:4538,683,1,0 -BRDA:4557,684,0,0 -BRDA:4557,684,1,0 -BRDA:4593,685,0,0 -BRDA:4593,685,1,0 -BRDA:4594,686,0,0 -BRDA:4594,686,1,0 -BRDA:4594,686,2,0 -BRDA:4601,687,0,0 -BRDA:4601,687,1,0 -BRDA:4601,688,0,0 -BRDA:4601,688,1,0 -BRDA:4602,689,0,0 -BRDA:4602,689,1,0 -BRDA:4608,690,0,0 -BRDA:4608,690,1,0 -BRDA:4618,691,0,0 -BRDA:4618,691,1,0 -BRDA:4618,692,0,0 -BRDA:4618,692,1,0 -BRDA:4618,693,0,0 -BRDA:4618,693,1,0 -BRDA:4651,694,0,0 -BRDA:4651,694,1,0 -BRDA:4652,695,0,0 -BRDA:4652,695,1,0 -BRDA:4655,696,0,0 -BRDA:4655,696,1,0 -BRDA:4655,697,0,0 -BRDA:4655,697,1,0 -BRDA:4663,698,0,0 -BRDA:4663,698,1,0 -BRDA:4663,699,0,0 -BRDA:4663,699,1,0 -BRDA:4669,700,0,0 -BRDA:4669,700,1,0 -BRDA:4669,701,0,0 -BRDA:4669,701,1,0 -BRDA:4678,702,0,0 -BRDA:4678,702,1,0 -BRDA:4689,703,0,0 -BRDA:4689,703,1,0 -BRDA:4691,704,0,0 -BRDA:4691,704,1,0 -BRDA:4701,705,0,0 -BRDA:4701,705,1,0 -BRDA:4730,706,0,0 -BRDA:4730,706,1,0 -BRDA:4730,706,2,0 -BRDA:4730,706,3,0 -BRDA:4735,707,0,0 -BRDA:4735,707,1,0 -BRDA:4738,708,0,0 -BRDA:4738,708,1,0 -BRDA:4746,709,0,0 -BRDA:4746,709,1,0 -BRDA:4747,710,0,0 -BRDA:4747,710,1,0 -BRDA:4748,711,0,0 -BRDA:4748,711,1,0 -BRDA:4752,712,0,0 -BRDA:4752,712,1,0 -BRDA:4755,713,0,0 -BRDA:4755,713,1,0 -BRDA:4766,714,0,0 -BRDA:4766,714,1,0 -BRDA:4771,715,0,0 -BRDA:4771,715,1,0 -BRDA:4776,716,0,0 -BRDA:4776,716,1,0 -BRDA:4784,717,0,0 -BRDA:4784,717,1,0 -BRDA:4787,718,0,0 -BRDA:4787,718,1,0 -BRDA:4810,719,0,0 -BRDA:4810,719,1,0 -BRDA:4839,720,0,0 -BRDA:4839,720,1,0 -BRDA:4844,721,0,0 -BRDA:4844,721,1,0 -BRDA:4850,722,0,0 -BRDA:4850,722,1,0 -BRDA:4850,723,0,0 -BRDA:4850,723,1,0 -BRDA:4853,724,0,0 -BRDA:4853,724,1,0 -BRDA:4853,725,0,0 -BRDA:4853,725,1,0 -BRDA:4857,726,0,0 -BRDA:4857,726,1,0 -BRDA:4857,727,0,0 -BRDA:4857,727,1,0 -BRDA:4867,728,0,0 -BRDA:4867,728,1,0 -BRDA:4867,729,0,0 -BRDA:4867,729,1,0 -BRDA:4904,730,0,0 -BRDA:4904,730,1,0 -BRDA:4951,731,0,0 -BRDA:4951,731,1,0 -BRDA:4968,732,0,0 -BRDA:4968,732,1,0 -BRDA:4968,733,0,0 -BRDA:4968,733,1,0 -BRDA:4981,734,0,0 -BRDA:4981,734,1,0 -BRDA:4983,735,0,0 -BRDA:4983,735,1,0 -BRDA:4989,736,0,0 -BRDA:4989,736,1,0 -BRDA:4990,737,0,0 -BRDA:4990,737,1,0 -BRDA:4995,738,0,0 -BRDA:4995,738,1,0 -BRDA:4996,739,0,0 -BRDA:4996,739,1,0 -BRDA:4996,740,0,0 -BRDA:4996,740,1,0 -BRDA:5025,741,0,0 -BRDA:5025,741,1,0 -BRDA:5039,742,0,0 -BRDA:5039,742,1,0 -BRDA:5040,743,0,0 -BRDA:5040,743,1,0 -BRDA:5049,744,0,0 -BRDA:5049,744,1,0 -BRDA:5051,745,0,0 -BRDA:5051,745,1,0 -BRDA:5059,746,0,0 -BRDA:5059,746,1,0 -BRDA:5059,747,0,0 -BRDA:5059,747,1,0 -BRDA:5072,748,0,0 -BRDA:5072,748,1,0 -BRDA:5072,749,0,0 -BRDA:5072,749,1,0 -BRDA:5073,750,0,0 -BRDA:5073,750,1,0 -BRDA:5074,751,0,0 -BRDA:5074,751,1,0 -BRDA:5095,752,0,0 -BRDA:5095,752,1,0 -BRDA:5097,753,0,0 -BRDA:5097,753,1,0 -BRDA:5100,754,0,0 -BRDA:5100,754,1,0 -BRDA:5100,755,0,0 -BRDA:5100,755,1,0 -BRDA:5100,755,2,0 -BRDA:5101,756,0,0 -BRDA:5101,756,1,0 -BRDA:5101,757,0,0 -BRDA:5101,757,1,0 -BRDA:5104,758,0,0 -BRDA:5104,758,1,0 -BRDA:5104,759,0,0 -BRDA:5104,759,1,0 -BRDA:5108,760,0,0 -BRDA:5108,760,1,0 -BRDA:5108,761,0,0 -BRDA:5108,761,1,0 -BRDA:5108,761,2,0 -BRDA:5111,762,0,0 -BRDA:5111,762,1,0 -BRDA:5115,763,0,0 -BRDA:5115,763,1,0 -BRDA:5115,764,0,0 -BRDA:5115,764,1,0 -BRDA:5115,764,2,0 -BRDA:5120,765,0,0 -BRDA:5120,765,1,0 -BRDA:5121,766,0,0 -BRDA:5121,766,1,0 -BRDA:5126,767,0,0 -BRDA:5126,767,1,0 -BRDA:5132,768,0,0 -BRDA:5132,768,1,0 -BRDA:5148,769,0,0 -BRDA:5148,769,1,0 -BRDA:5148,769,2,0 -BRDA:5148,769,3,0 -BRDA:5156,770,0,0 -BRDA:5156,770,1,0 -BRDA:5166,771,0,0 -BRDA:5166,771,1,0 -BRDA:5182,772,0,0 -BRDA:5182,772,1,0 -BRDA:5182,773,0,0 -BRDA:5182,773,1,0 -BRDA:5185,774,0,0 -BRDA:5185,774,1,0 -BRDA:5186,775,0,0 -BRDA:5186,775,1,0 -BRDA:5188,776,0,0 -BRDA:5188,776,1,0 -BRDA:5188,777,0,0 -BRDA:5188,777,1,0 -BRDA:5190,778,0,0 -BRDA:5190,778,1,0 -BRDA:5190,779,0,0 -BRDA:5190,779,1,0 -BRDA:5196,780,0,0 -BRDA:5196,780,1,0 -BRDA:5203,781,0,0 -BRDA:5203,781,1,0 -BRDA:5207,782,0,0 -BRDA:5207,782,1,0 -BRDA:5208,783,0,0 -BRDA:5208,783,1,0 -BRDA:5225,784,0,0 -BRDA:5225,784,1,0 -BRDA:5225,785,0,0 -BRDA:5225,785,1,0 -BRDA:5231,786,0,0 -BRDA:5231,786,1,0 -BRDA:5231,787,0,0 -BRDA:5231,787,1,0 -BRDA:5231,787,2,0 -BRDA:5231,787,3,0 -BRDA:5235,788,0,0 -BRDA:5235,788,1,0 -BRDA:5235,789,0,0 -BRDA:5235,789,1,0 -BRDA:5245,790,0,0 -BRDA:5245,790,1,0 -BRDA:5245,791,0,0 -BRDA:5245,791,1,0 -BRDA:5246,792,0,0 -BRDA:5246,792,1,0 -BRDA:5278,793,0,0 -BRDA:5278,793,1,0 -BRDA:5278,794,0,0 -BRDA:5278,794,1,0 -BRDA:5285,795,0,0 -BRDA:5285,795,1,0 -BRDA:5285,796,0,0 -BRDA:5285,796,1,0 -BRDA:5290,797,0,0 -BRDA:5290,797,1,0 -BRDA:5295,798,0,0 -BRDA:5295,798,1,0 -BRDA:5304,799,0,0 -BRDA:5304,799,1,0 -BRDA:5304,800,0,0 -BRDA:5304,800,1,0 -BRDA:5308,801,0,0 -BRDA:5308,801,1,0 -BRDA:5313,802,0,0 -BRDA:5313,802,1,0 -BRDA:5322,803,0,0 -BRDA:5322,803,1,0 -BRDA:5322,804,0,0 -BRDA:5322,804,1,0 -BRDA:5326,805,0,0 -BRDA:5326,805,1,0 -BRDA:5326,806,0,0 -BRDA:5326,806,1,0 -BRDA:5326,806,2,0 -BRDA:5329,807,0,0 -BRDA:5329,807,1,0 -BRDA:5337,808,0,0 -BRDA:5337,808,1,0 -BRDA:5337,809,0,0 -BRDA:5337,809,1,0 -BRDA:5337,809,2,0 -BRDA:5337,809,3,0 -BRDA:5337,809,4,0 -BRDA:5349,810,0,0 -BRDA:5349,810,1,0 -BRDA:5350,811,0,0 -BRDA:5350,811,1,0 -BRDA:5352,812,0,0 -BRDA:5352,812,1,0 -BRDA:5352,813,0,0 -BRDA:5352,813,1,0 -BRDA:5354,814,0,0 -BRDA:5354,814,1,0 -BRDA:5369,815,0,0 -BRDA:5369,815,1,0 -BRDA:5372,816,0,0 -BRDA:5372,816,1,0 -BRDA:5393,817,0,0 -BRDA:5393,817,1,0 -BRDA:5401,818,0,0 -BRDA:5401,818,1,0 -BRDA:5401,818,2,0 -BRDA:5401,818,3,0 -BRDA:5405,819,0,0 -BRDA:5405,819,1,0 -BRDA:5426,820,0,0 -BRDA:5426,820,1,0 -BRDA:5426,820,2,0 -BRDA:5440,821,0,0 -BRDA:5440,821,1,0 -BRDA:5440,821,2,0 -BRDA:5440,821,3,0 -BRDA:5444,822,0,0 -BRDA:5444,822,1,0 -BRDA:5445,823,0,0 -BRDA:5445,823,1,0 -BRDA:5453,824,0,0 -BRDA:5453,824,1,0 -BRDA:5490,825,0,0 -BRDA:5490,825,1,0 -BRDA:5490,826,0,0 -BRDA:5490,826,1,0 -BRDA:5490,826,2,0 -BRDA:5499,827,0,0 -BRDA:5499,827,1,0 -BRDA:5503,828,0,0 -BRDA:5503,828,1,0 -BRDA:5503,829,0,0 -BRDA:5503,829,1,0 -BRDA:5503,829,2,0 -BRDA:5503,829,3,0 -BRDA:5520,830,0,0 -BRDA:5520,830,1,0 -BRDA:5525,831,0,0 -BRDA:5525,831,1,0 -BRDA:5525,832,0,0 -BRDA:5525,832,1,0 -BRDA:5527,833,0,0 -BRDA:5527,833,1,0 -BRDA:5555,834,0,0 -BRDA:5555,834,1,0 -BRDA:5567,835,0,0 -BRDA:5567,835,1,0 -BRDA:5569,836,0,0 -BRDA:5569,836,1,0 -BRDA:5569,837,0,0 -BRDA:5569,837,1,0 -BRDA:5581,838,0,0 -BRDA:5581,838,1,0 -BRDA:5585,839,0,0 -BRDA:5585,839,1,0 -BRDA:5587,840,0,0 -BRDA:5587,840,1,0 -BRDA:5587,841,0,0 -BRDA:5587,841,1,0 -BRDA:5590,842,0,0 -BRDA:5590,842,1,0 -BRDA:5597,843,0,0 -BRDA:5597,843,1,0 -BRDA:5604,844,0,0 -BRDA:5604,844,1,0 -BRDA:5619,845,0,0 -BRDA:5619,845,1,0 -BRDA:5624,846,0,0 -BRDA:5624,846,1,0 -BRDA:5639,847,0,0 -BRDA:5639,847,1,0 -BRDA:5639,848,0,0 -BRDA:5639,848,1,0 -BRDA:5643,849,0,0 -BRDA:5643,849,1,0 -BRDA:5643,850,0,0 -BRDA:5643,850,1,0 -BRDA:5645,851,0,0 -BRDA:5645,851,1,0 -BRDA:5649,852,0,0 -BRDA:5649,852,1,0 -BRDA:5651,853,0,0 -BRDA:5651,853,1,0 -BRDA:5670,854,0,0 -BRDA:5670,854,1,0 -BRDA:5679,855,0,0 -BRDA:5679,855,1,0 -BRDA:5686,856,0,0 -BRDA:5686,856,1,0 -BRDA:5694,857,0,0 -BRDA:5694,857,1,0 -BRDA:5694,858,0,0 -BRDA:5694,858,1,0 -BRDA:5700,859,0,0 -BRDA:5700,859,1,0 -BRDA:5711,860,0,0 -BRDA:5711,860,1,0 -BRDA:5714,861,0,0 -BRDA:5714,861,1,0 -BRDA:5728,862,0,0 -BRDA:5728,862,1,0 -BRDA:5728,863,0,0 -BRDA:5728,863,1,0 -BRDA:5730,864,0,0 -BRDA:5730,864,1,0 -BRDA:5730,865,0,0 -BRDA:5730,865,1,0 -BRDA:5739,866,0,0 -BRDA:5739,866,1,0 -BRDA:5743,867,0,0 -BRDA:5743,867,1,0 -BRDA:5743,868,0,0 -BRDA:5743,868,1,0 -BRDA:5743,868,2,0 -BRDA:5745,869,0,0 -BRDA:5745,869,1,0 -BRDA:5745,870,0,0 -BRDA:5745,870,1,0 -BRDA:5745,870,2,0 -BRDA:5749,871,0,0 -BRDA:5749,871,1,0 -BRDA:5758,872,0,0 -BRDA:5758,872,1,0 -BRDA:5758,873,0,0 -BRDA:5758,873,1,0 -BRDA:5775,874,0,0 -BRDA:5775,874,1,0 -BRDA:5798,875,0,0 -BRDA:5798,875,1,0 -BRDA:5801,876,0,0 -BRDA:5801,876,1,0 -BRDA:5803,877,0,0 -BRDA:5803,877,1,0 -BRDA:5805,878,0,0 -BRDA:5805,878,1,0 -BRDA:5805,879,0,0 -BRDA:5805,879,1,0 -BRDA:5807,880,0,0 -BRDA:5807,880,1,0 -BRDA:5809,881,0,0 -BRDA:5809,881,1,0 -BRDA:5816,882,0,0 -BRDA:5816,882,1,0 -BRDA:5822,883,0,0 -BRDA:5822,883,1,0 -BRDA:5828,884,0,0 -BRDA:5828,884,1,0 -BRDA:5834,885,0,0 -BRDA:5834,885,1,0 -BRDA:5838,886,0,0 -BRDA:5838,886,1,0 -BRDA:5843,887,0,0 -BRDA:5843,887,1,0 -BRDA:5861,888,0,0 -BRDA:5861,888,1,0 -BRDA:5864,889,0,0 -BRDA:5864,889,1,0 -BRDA:5872,890,0,0 -BRDA:5872,890,1,0 -BRDA:5872,891,0,0 -BRDA:5872,891,1,0 -BRDA:5887,892,0,0 -BRDA:5887,892,1,0 -BRDA:5967,893,0,0 -BRDA:5967,893,1,0 -BRDA:5973,894,0,0 -BRDA:5973,894,1,0 -BRDA:5973,895,0,0 -BRDA:5973,895,1,0 -BRDA:5976,896,0,0 -BRDA:5976,896,1,0 -BRDA:5981,897,0,0 -BRDA:5981,897,1,0 -BRDA:5981,898,0,0 -BRDA:5981,898,1,0 -BRDA:5988,899,0,0 -BRDA:5988,899,1,0 -BRDA:6006,900,0,0 -BRDA:6006,900,1,0 -BRDA:6007,901,0,0 -BRDA:6007,901,1,0 -BRDA:6010,902,0,0 -BRDA:6010,902,1,0 -BRDA:6015,903,0,0 -BRDA:6015,903,1,0 -BRDA:6048,904,0,0 -BRDA:6048,904,1,0 -BRDA:6050,905,0,0 -BRDA:6050,905,1,0 -BRDA:6050,906,0,0 -BRDA:6050,906,1,0 -BRDA:6050,906,2,0 -BRDA:6063,907,0,0 -BRDA:6063,907,1,0 -BRDA:6063,908,0,0 -BRDA:6063,908,1,0 -BRDA:6063,908,2,0 -BRDA:6075,909,0,0 -BRDA:6075,909,1,0 -BRDA:6083,910,0,0 -BRDA:6083,910,1,0 -BRDA:6086,911,0,0 -BRDA:6086,911,1,0 -BRDA:6132,912,0,0 -BRDA:6132,912,1,0 -BRDA:6152,913,0,0 -BRDA:6152,913,1,0 -BRDA:6154,914,0,0 -BRDA:6154,914,1,0 -BRDA:6160,915,0,0 -BRDA:6160,915,1,0 -BRDA:6161,916,0,0 -BRDA:6161,916,1,0 -BRDA:6167,917,0,0 -BRDA:6167,917,1,0 -BRDA:6168,918,0,0 -BRDA:6168,918,1,0 -BRDA:6168,919,0,0 -BRDA:6168,919,1,0 -BRDA:6190,920,0,0 -BRDA:6190,920,1,0 -BRDA:6262,921,0,0 -BRDA:6262,921,1,0 -BRDA:6266,922,0,0 -BRDA:6266,922,1,0 -BRDA:6266,923,0,0 -BRDA:6266,923,1,0 -BRDA:6274,924,0,0 -BRDA:6274,924,1,0 -BRDA:6275,925,0,0 -BRDA:6275,925,1,0 -BRDA:6278,926,0,0 -BRDA:6278,926,1,0 -BRDA:6306,927,0,0 -BRDA:6306,927,1,0 -BRDA:6306,928,0,0 -BRDA:6306,928,1,0 -BRDA:6306,928,2,0 -BRDA:6306,928,3,0 -BRDA:6306,928,4,0 -BRDA:6323,929,0,0 -BRDA:6323,929,1,0 -BRDA:6328,930,0,0 -BRDA:6328,930,1,0 -BRDA:6330,931,0,0 -BRDA:6330,931,1,0 -BRDA:6333,932,0,0 -BRDA:6333,932,1,0 -BRDA:6336,933,0,0 -BRDA:6336,933,1,0 -BRDA:6338,934,0,0 -BRDA:6338,934,1,0 -BRDA:6355,935,0,0 -BRDA:6355,935,1,0 -BRDA:6358,936,0,0 -BRDA:6358,936,1,0 -BRDA:6358,937,0,0 -BRDA:6358,937,1,0 -BRDA:6358,937,2,0 -BRDA:6358,937,3,0 -BRDA:6358,937,4,0 -BRDA:6369,938,0,0 -BRDA:6369,938,1,0 -BRDA:6371,939,0,0 -BRDA:6371,939,1,0 -BRDA:6379,940,0,0 -BRDA:6379,940,1,0 -BRDA:6379,941,0,0 -BRDA:6379,941,1,0 -BRDA:6379,941,2,0 -BRDA:6393,942,0,0 -BRDA:6393,942,1,0 -BRDA:6395,943,0,0 -BRDA:6395,943,1,0 -BRDA:6401,944,0,0 -BRDA:6401,944,1,0 -BRDA:6404,945,0,0 -BRDA:6404,945,1,0 -BRDA:6404,946,0,0 -BRDA:6404,946,1,0 -BRDA:6407,947,0,0 -BRDA:6407,947,1,0 -BRDA:6424,948,0,0 -BRDA:6424,948,1,0 -BRDA:6433,949,0,0 -BRDA:6433,949,1,0 -BRDA:6456,950,0,0 -BRDA:6456,950,1,0 -BRDA:6462,951,0,0 -BRDA:6462,951,1,0 -BRDA:6462,952,0,0 -BRDA:6462,952,1,0 -BRDA:6462,952,2,0 -BRDA:6462,952,3,0 -BRDA:6469,953,0,0 -BRDA:6469,953,1,0 -BRDA:6478,954,0,0 -BRDA:6478,954,1,0 -BRDA:6489,955,0,0 -BRDA:6489,955,1,0 -BRDA:6489,956,0,0 -BRDA:6489,956,1,0 -BRDA:6501,957,0,0 -BRDA:6501,957,1,0 -BRDA:6501,958,0,0 -BRDA:6501,958,1,0 -BRDA:6501,958,2,0 -BRDA:6529,959,0,0 -BRDA:6529,959,1,0 -BRDA:6537,960,0,0 -BRDA:6537,960,1,0 -BRDA:6542,961,0,0 -BRDA:6542,961,1,0 -BRDA:6558,962,0,0 -BRDA:6558,962,1,0 -BRDA:6562,963,0,0 -BRDA:6562,963,1,0 -BRDA:6567,964,0,0 -BRDA:6567,964,1,0 -BRDA:6567,965,0,0 -BRDA:6567,965,1,0 -BRDA:6571,966,0,0 -BRDA:6571,966,1,0 -BRDA:6577,967,0,0 -BRDA:6577,967,1,0 -BRDA:6577,968,0,0 -BRDA:6577,968,1,0 -BRDA:6583,969,0,0 -BRDA:6583,969,1,0 -BRDA:6583,969,2,0 -BRDA:6583,969,3,0 -BRDA:6583,969,4,0 -BRDA:6591,970,0,0 -BRDA:6591,970,1,0 -BRDA:6599,971,0,0 -BRDA:6599,971,1,0 -BRDA:6600,972,0,0 -BRDA:6600,972,1,0 -BRDA:6614,973,0,0 -BRDA:6614,973,1,0 -BRDA:6615,974,0,0 -BRDA:6615,974,1,0 -BRDA:6650,975,0,0 -BRDA:6650,975,1,0 -BRDA:6698,976,0,0 -BRDA:6698,976,1,0 -BRDA:6708,977,0,0 -BRDA:6708,977,1,0 -BRDA:6718,978,0,0 -BRDA:6718,978,1,0 -BRDA:6718,978,2,0 -BRDA:6718,978,3,0 -BRDA:6718,978,4,0 -BRDA:6718,978,5,0 -BRDA:6738,979,0,0 -BRDA:6738,979,1,0 -BRDA:6738,980,0,0 -BRDA:6738,980,1,0 -BRDA:6738,980,2,0 -BRDA:6738,980,3,0 -BRDA:6786,981,0,0 -BRDA:6786,981,1,0 -BRDA:6792,982,0,0 -BRDA:6792,982,1,0 -BRDA:6793,983,0,0 -BRDA:6793,983,1,0 -BRDA:6795,984,0,0 -BRDA:6795,984,1,0 -BRDA:6819,985,0,0 -BRDA:6819,985,1,0 -BRDA:6824,986,0,0 -BRDA:6824,986,1,0 -BRDA:6828,987,0,0 -BRDA:6828,987,1,0 -BRDA:6828,988,0,0 -BRDA:6828,988,1,0 -BRDA:6828,989,0,0 -BRDA:6828,989,1,0 -BRDA:6839,990,0,0 -BRDA:6839,990,1,0 -BRDA:6902,991,0,0 -BRDA:6902,991,1,0 -BRDA:6903,992,0,0 -BRDA:6903,992,1,0 -BRDA:6903,993,0,0 -BRDA:6903,993,1,0 -BRDA:6912,994,0,0 -BRDA:6912,994,1,0 -BRDA:6912,995,0,0 -BRDA:6912,995,1,0 -BRDA:6921,996,0,0 -BRDA:6921,996,1,0 -BRDA:6921,997,0,0 -BRDA:6921,997,1,0 -BRDA:6921,997,2,0 -BRDA:6928,998,0,0 -BRDA:6928,998,1,0 -BRDA:6936,999,0,0 -BRDA:6936,999,1,0 -BRDA:6939,1000,0,0 -BRDA:6939,1000,1,0 -BRDA:6945,1001,0,0 -BRDA:6945,1001,1,0 -BRDA:6990,1002,0,0 -BRDA:6990,1002,1,0 -BRDA:6995,1003,0,0 -BRDA:6995,1003,1,0 -BRDA:6996,1004,0,0 -BRDA:6996,1004,1,0 -BRDA:6998,1005,0,0 -BRDA:6998,1005,1,0 -BRDA:7001,1006,0,0 -BRDA:7001,1006,1,0 -BRDA:7001,1007,0,0 -BRDA:7001,1007,1,0 -BRDA:7005,1008,0,0 -BRDA:7005,1008,1,0 -BRDA:7005,1009,0,0 -BRDA:7005,1009,1,0 -BRDA:7006,1010,0,0 -BRDA:7006,1010,1,0 -BRDA:7007,1011,0,0 -BRDA:7007,1011,1,0 -BRDA:7012,1012,0,0 -BRDA:7012,1012,1,0 -BRDA:7058,1013,0,0 -BRDA:7058,1013,1,0 -BRDA:7069,1014,0,0 -BRDA:7069,1014,1,0 -BRDA:7082,1015,0,0 -BRDA:7082,1015,1,0 -BRDA:7084,1016,0,0 -BRDA:7084,1016,1,0 -BRDA:7087,1017,0,0 -BRDA:7087,1017,1,0 -BRDA:7087,1017,2,0 -BRDA:7088,1018,0,0 -BRDA:7088,1018,1,0 -BRDA:7088,1018,2,0 -BRDA:7099,1019,0,0 -BRDA:7099,1019,1,0 -BRDA:7099,1020,0,0 -BRDA:7099,1020,1,0 -BRDA:7099,1021,0,0 -BRDA:7099,1021,1,0 -BRDA:7115,1022,0,0 -BRDA:7115,1022,1,0 -BRDA:7117,1023,0,0 -BRDA:7117,1023,1,0 -BRDA:7119,1024,0,0 -BRDA:7119,1024,1,0 -BRDA:7121,1025,0,0 -BRDA:7121,1025,1,0 -BRDA:7121,1026,0,0 -BRDA:7121,1026,1,0 -BRDA:7123,1027,0,0 -BRDA:7123,1027,1,0 -BRDA:7123,1028,0,0 -BRDA:7123,1028,1,0 -BRDA:7137,1029,0,0 -BRDA:7137,1029,1,0 -BRDA:7144,1030,0,0 -BRDA:7144,1030,1,0 -BRDA:7148,1031,0,0 -BRDA:7148,1031,1,0 -BRDA:7151,1032,0,0 -BRDA:7151,1032,1,0 -BRDA:7151,1033,0,0 -BRDA:7151,1033,1,0 -BRDA:7151,1033,2,0 -BRDA:7172,1034,0,0 -BRDA:7172,1034,1,0 -BRDA:7194,1035,0,0 -BRDA:7194,1035,1,0 -BRDA:7200,1036,0,0 -BRDA:7200,1036,1,0 -BRDA:7200,1037,0,0 -BRDA:7200,1037,1,0 -BRDA:7201,1038,0,0 -BRDA:7201,1038,1,0 -BRDA:7205,1039,0,0 -BRDA:7205,1039,1,0 -BRDA:7205,1040,0,0 -BRDA:7205,1040,1,0 -BRDA:7213,1041,0,0 -BRDA:7213,1041,1,0 -BRDA:7223,1042,0,0 -BRDA:7223,1042,1,0 -BRDA:7242,1043,0,0 -BRDA:7242,1043,1,0 -BRDA:7245,1044,0,0 -BRDA:7245,1044,1,0 -BRDA:7248,1045,0,0 -BRDA:7248,1045,1,0 -BRDA:7248,1046,0,0 -BRDA:7248,1046,1,0 -BRDA:7257,1047,0,0 -BRDA:7257,1047,1,0 -BRDA:7266,1048,0,0 -BRDA:7266,1048,1,0 -BRDA:7273,1049,0,0 -BRDA:7273,1049,1,0 -BRDA:7304,1050,0,0 -BRDA:7304,1050,1,0 -BRDA:7304,1051,0,0 -BRDA:7304,1051,1,0 -BRDA:7307,1052,0,0 -BRDA:7307,1052,1,0 -BRDA:7316,1053,0,0 -BRDA:7316,1053,1,0 -BRDA:7333,1054,0,0 -BRDA:7333,1054,1,0 -BRDA:7335,1055,0,0 -BRDA:7335,1055,1,0 -BRDA:7343,1056,0,0 -BRDA:7343,1056,1,0 -BRDA:7381,1057,0,0 -BRDA:7381,1057,1,0 -BRDA:7381,1058,0,0 -BRDA:7381,1058,1,0 -BRDA:7381,1059,0,0 -BRDA:7381,1059,1,0 -BRDA:7415,1060,0,0 -BRDA:7415,1060,1,0 -BRDA:7431,1061,0,0 -BRDA:7431,1061,1,0 -BRDA:7433,1062,0,0 -BRDA:7433,1062,1,0 -BRDA:7452,1063,0,0 -BRDA:7452,1063,1,0 -BRDA:7454,1064,0,0 -BRDA:7454,1064,1,0 -BRDA:7463,1065,0,0 -BRDA:7463,1065,1,0 -BRDA:7465,1066,0,0 -BRDA:7465,1066,1,0 -BRDA:7467,1067,0,0 -BRDA:7467,1067,1,0 -BRDA:7471,1068,0,0 -BRDA:7471,1068,1,0 -BRDA:7487,1069,0,0 -BRDA:7487,1069,1,0 -BRDA:7487,1069,2,0 -BRDA:7487,1069,3,0 -BRDA:7487,1069,4,0 -BRDA:7489,1070,0,0 -BRDA:7489,1070,1,0 -BRDA:7495,1071,0,0 -BRDA:7495,1071,1,0 -BRDA:7507,1072,0,0 -BRDA:7507,1072,1,0 -BRDA:7509,1073,0,0 -BRDA:7509,1073,1,0 -BRDA:7522,1074,0,0 -BRDA:7522,1074,1,0 -BRDA:7529,1075,0,0 -BRDA:7529,1075,1,0 -BRDA:7529,1076,0,0 -BRDA:7529,1076,1,0 -BRDA:7535,1077,0,0 -BRDA:7535,1077,1,0 -BRDA:7539,1078,0,0 -BRDA:7539,1078,1,0 -BRDA:7553,1079,0,0 -BRDA:7553,1079,1,0 -BRDA:7553,1080,0,0 -BRDA:7553,1080,1,0 -BRDA:7558,1081,0,0 -BRDA:7558,1081,1,0 -BRDA:7558,1082,0,0 -BRDA:7558,1082,1,0 -BRDA:7558,1083,0,0 -BRDA:7558,1083,1,0 -BRDA:7626,1084,0,0 -BRDA:7626,1084,1,0 -BRDA:7630,1085,0,0 -BRDA:7630,1085,1,0 -BRDA:7636,1086,0,0 -BRDA:7636,1086,1,0 -BRDA:7649,1087,0,0 -BRDA:7649,1087,1,0 -BRDA:7651,1088,0,0 -BRDA:7651,1088,1,0 -BRDA:7676,1089,0,0 -BRDA:7676,1089,1,0 -BRDA:7691,1090,0,0 -BRDA:7691,1090,1,0 -BRDA:7694,1091,0,0 -BRDA:7694,1091,1,0 -BRDA:7694,1092,0,0 -BRDA:7694,1092,1,0 -BRDA:7694,1092,2,0 -BRDA:7694,1092,3,0 -BRDA:7709,1093,0,0 -BRDA:7709,1093,1,0 -BRDA:7709,1094,0,0 -BRDA:7709,1094,1,0 -BRDA:7720,1095,0,0 -BRDA:7720,1095,1,0 -BRDA:7723,1096,0,0 -BRDA:7723,1096,1,0 -BRDA:7726,1097,0,0 -BRDA:7726,1097,1,0 -BRDA:7726,1098,0,0 -BRDA:7726,1098,1,0 -BRDA:7726,1098,2,0 -BRDA:7730,1099,0,0 -BRDA:7730,1099,1,0 -BRDA:7731,1100,0,0 -BRDA:7731,1100,1,0 -BRDA:7731,1101,0,0 -BRDA:7731,1101,1,0 -BRDA:7731,1101,2,0 -BRDA:7737,1102,0,0 -BRDA:7737,1102,1,0 -BRDA:7737,1103,0,0 -BRDA:7737,1103,1,0 -BRDA:7743,1104,0,0 -BRDA:7743,1104,1,0 -BRDA:7743,1105,0,0 -BRDA:7743,1105,1,0 -BRDA:7743,1106,0,0 -BRDA:7743,1106,1,0 -BRDA:7749,1107,0,0 -BRDA:7749,1107,1,0 -BRDA:7753,1108,0,0 -BRDA:7753,1108,1,0 -BRDA:7753,1109,0,0 -BRDA:7753,1109,1,0 -BRDA:7753,1110,0,0 -BRDA:7753,1110,1,0 -BRDA:7762,1111,0,0 -BRDA:7762,1111,1,0 -BRDA:7765,1112,0,0 -BRDA:7765,1112,1,0 -BRDA:7767,1113,0,0 -BRDA:7767,1113,1,0 -BRDA:7770,1114,0,0 -BRDA:7770,1114,1,0 -BRDA:7780,1115,0,0 -BRDA:7780,1115,1,0 -BRDA:7793,1116,0,0 -BRDA:7793,1116,1,0 -BRDA:7794,1117,0,0 -BRDA:7794,1117,1,0 -BRDA:7794,1117,2,0 -BRDA:7794,1117,3,0 -BRDA:7794,1117,4,0 -BRDA:7794,1117,5,0 -BRDA:7828,1118,0,0 -BRDA:7828,1118,1,0 -BRDA:7830,1119,0,0 -BRDA:7830,1119,1,0 -BRDA:7830,1119,2,0 -BRDA:7830,1119,3,0 -BRDA:7830,1119,4,0 -BRDA:7830,1119,5,0 -BRDA:7830,1119,6,0 -BRDA:7830,1119,7,0 -BRDA:7830,1119,8,0 -BRDA:7830,1119,9,0 -BRDA:7830,1119,10,0 -BRDA:7830,1119,11,0 -BRDA:7830,1120,0,0 -BRDA:7830,1120,1,0 -BRDA:7838,1121,0,0 -BRDA:7838,1121,1,0 -BRDA:7838,1122,0,0 -BRDA:7838,1122,1,0 -BRDA:7852,1123,0,0 -BRDA:7852,1123,1,0 -BRDA:7854,1124,0,0 -BRDA:7854,1124,1,0 -BRDA:7854,1124,2,0 -BRDA:7854,1124,3,0 -BRDA:7854,1124,4,0 -BRDA:7899,1125,0,0 -BRDA:7899,1125,1,0 -BRDA:7907,1126,0,0 -BRDA:7907,1126,1,0 -BRDA:7920,1127,0,0 -BRDA:7920,1127,1,0 -BRDA:7920,1128,0,0 -BRDA:7920,1128,1,0 -BRDA:7928,1129,0,0 -BRDA:7928,1129,1,0 -BRDA:7938,1130,0,0 -BRDA:7938,1130,1,0 -BRDA:7949,1131,0,0 -BRDA:7949,1131,1,0 -BRDA:7949,1132,0,0 -BRDA:7949,1132,1,0 -BRDA:7968,1133,0,0 -BRDA:7968,1133,1,0 -BRDA:7978,1134,0,0 -BRDA:7978,1134,1,0 -BRDA:7978,1135,0,0 -BRDA:7978,1135,1,0 -BRDA:7984,1136,0,0 -BRDA:7984,1136,1,0 -BRDA:7984,1137,0,0 -BRDA:7984,1137,1,0 -BRDA:7990,1138,0,0 -BRDA:7990,1138,1,0 -BRDA:7990,1139,0,0 -BRDA:7990,1139,1,0 -BRDA:8000,1140,0,0 -BRDA:8000,1140,1,0 -BRDA:8000,1141,0,0 -BRDA:8000,1141,1,0 -BRDA:8003,1142,0,0 -BRDA:8003,1142,1,0 -BRDA:8019,1143,0,0 -BRDA:8019,1143,1,0 -BRDA:8024,1144,0,0 -BRDA:8024,1144,1,0 -BRDA:8124,1145,0,0 -BRDA:8124,1145,1,0 -BRDA:8124,1146,0,0 -BRDA:8124,1146,1,0 -BRDA:8124,1146,2,0 -BRDA:8132,1147,0,0 -BRDA:8132,1147,1,0 -BRDA:8143,1148,0,0 -BRDA:8143,1148,1,0 -BRDA:8154,1149,0,0 -BRDA:8154,1149,1,0 -BRDA:8154,1150,0,0 -BRDA:8154,1150,1,0 -BRDA:8154,1150,2,0 -BRDA:8156,1151,0,0 -BRDA:8156,1151,1,0 -BRDA:8156,1152,0,0 -BRDA:8156,1152,1,0 -BRDA:8156,1153,0,0 -BRDA:8156,1153,1,0 -BRDA:8162,1154,0,0 -BRDA:8162,1154,1,0 -BRDA:8162,1155,0,0 -BRDA:8162,1155,1,0 -BRDA:8162,1155,2,0 -BRDA:8162,1155,3,0 -BRDA:8184,1156,0,0 -BRDA:8184,1156,1,0 -BRDA:8184,1157,0,0 -BRDA:8184,1157,1,0 -BRDA:8184,1157,2,0 -BRDA:8191,1158,0,0 -BRDA:8191,1158,1,0 -BRDA:8202,1159,0,0 -BRDA:8202,1159,1,0 -BRDA:8212,1160,0,0 -BRDA:8212,1160,1,0 -BRDA:8212,1161,0,0 -BRDA:8212,1161,1,0 -BRDA:8212,1161,2,0 -BRDA:8216,1162,0,0 -BRDA:8216,1162,1,0 -BRDA:8227,1163,0,0 -BRDA:8227,1163,1,0 -BRDA:8231,1164,0,0 -BRDA:8231,1164,1,0 -BRDA:8235,1165,0,0 -BRDA:8235,1165,1,0 -BRDA:8239,1166,0,0 -BRDA:8239,1166,1,0 -BRDA:8240,1167,0,0 -BRDA:8240,1167,1,0 -BRDA:8243,1168,0,0 -BRDA:8243,1168,1,0 -BRDA:8253,1169,0,0 -BRDA:8253,1169,1,0 -BRDA:8257,1170,0,0 -BRDA:8257,1170,1,0 -BRDA:8261,1171,0,0 -BRDA:8261,1171,1,0 -BRDA:8271,1172,0,0 -BRDA:8271,1172,1,0 -BRDA:8278,1173,0,0 -BRDA:8278,1173,1,0 -BRDA:8287,1174,0,0 -BRDA:8287,1174,1,0 -BRDA:8293,1175,0,0 -BRDA:8293,1175,1,0 -BRDA:8294,1176,0,0 -BRDA:8294,1176,1,0 -BRDA:8300,1177,0,0 -BRDA:8300,1177,1,0 -BRDA:8302,1178,0,0 -BRDA:8302,1178,1,0 -BRDA:8310,1179,0,0 -BRDA:8310,1179,1,0 -BRDA:8318,1180,0,0 -BRDA:8318,1180,1,0 -BRDA:8328,1181,0,0 -BRDA:8328,1181,1,0 -BRDA:8334,1182,0,0 -BRDA:8334,1182,1,0 -BRDA:8337,1183,0,0 -BRDA:8337,1183,1,0 -BRDA:8341,1184,0,0 -BRDA:8341,1184,1,0 -BRDA:8346,1185,0,0 -BRDA:8346,1185,1,0 -BRDA:8347,1186,0,0 -BRDA:8347,1186,1,0 -BRDA:8347,1187,0,0 -BRDA:8347,1187,1,0 -BRDA:8347,1187,2,0 -BRDA:8353,1188,0,0 -BRDA:8353,1188,1,0 -BRDA:8353,1189,0,0 -BRDA:8353,1189,1,0 -BRDA:8354,1190,0,0 -BRDA:8354,1190,1,0 -BRDA:8355,1191,0,0 -BRDA:8355,1191,1,0 -BRDA:8370,1192,0,0 -BRDA:8370,1192,1,0 -BRDA:8371,1193,0,0 -BRDA:8371,1193,1,0 -BRDA:8376,1194,0,0 -BRDA:8376,1194,1,0 -BRDA:8377,1195,0,0 -BRDA:8377,1195,1,0 -BRDA:8383,1196,0,0 -BRDA:8383,1196,1,0 -BRDA:8384,1197,0,0 -BRDA:8384,1197,1,0 -BRDA:8385,1198,0,0 -BRDA:8385,1198,1,0 -BRDA:8389,1199,0,0 -BRDA:8389,1199,1,0 -BRDA:8391,1200,0,0 -BRDA:8391,1200,1,0 -BRDA:8392,1201,0,0 -BRDA:8392,1201,1,0 -BRDA:8395,1202,0,0 -BRDA:8395,1202,1,0 -BRDA:8400,1203,0,0 -BRDA:8400,1203,1,0 -BRDA:8400,1204,0,0 -BRDA:8400,1204,1,0 -BRDA:8400,1204,2,0 -BRDA:8406,1205,0,0 -BRDA:8406,1205,1,0 -BRDA:8406,1205,2,0 -BRDA:8406,1205,3,0 -BRDA:8408,1206,0,0 -BRDA:8408,1206,1,0 -BRDA:8408,1207,0,0 -BRDA:8408,1207,1,0 -BRDA:8412,1208,0,0 -BRDA:8412,1208,1,0 -BRDA:8412,1209,0,0 -BRDA:8412,1209,1,0 -BRDA:8412,1209,2,0 -BRDA:8412,1209,3,0 -BRDA:8414,1210,0,0 -BRDA:8414,1210,1,0 -BRDA:8415,1211,0,0 -BRDA:8415,1211,1,0 -BRDA:8415,1212,0,0 -BRDA:8415,1212,1,0 -BRDA:8416,1213,0,0 -BRDA:8416,1213,1,0 -BRDA:8420,1214,0,0 -BRDA:8420,1214,1,0 -BRDA:8420,1215,0,0 -BRDA:8420,1215,1,0 -BRDA:8421,1216,0,0 -BRDA:8421,1216,1,0 -BRDA:8421,1217,0,0 -BRDA:8421,1217,1,0 -BRDA:8440,1218,0,0 -BRDA:8440,1218,1,0 -BRDA:8445,1219,0,0 -BRDA:8445,1219,1,0 -BRDA:8461,1220,0,0 -BRDA:8461,1220,1,0 -BRDA:8467,1221,0,0 -BRDA:8467,1221,1,0 -BRDA:8467,1222,0,0 -BRDA:8467,1222,1,0 -BRDA:8470,1223,0,0 -BRDA:8470,1223,1,0 -BRDA:8475,1224,0,0 -BRDA:8475,1224,1,0 -BRDA:8475,1225,0,0 -BRDA:8475,1225,1,0 -BRDA:8475,1225,2,0 -BRDA:8484,1226,0,0 -BRDA:8484,1226,1,0 -BRDA:8484,1227,0,0 -BRDA:8484,1227,1,0 -BRDA:8493,1228,0,0 -BRDA:8493,1228,1,0 -BRDA:8502,1229,0,0 -BRDA:8502,1229,1,0 -BRDA:8502,1230,0,0 -BRDA:8502,1230,1,0 -BRDA:8503,1231,0,0 -BRDA:8503,1231,1,0 -BRDA:8504,1232,0,0 -BRDA:8504,1232,1,0 -BRDA:8505,1233,0,0 -BRDA:8505,1233,1,0 -BRDA:8506,1234,0,0 -BRDA:8506,1234,1,0 -BRDA:8507,1235,0,0 -BRDA:8507,1235,1,0 -BRDA:8508,1236,0,0 -BRDA:8508,1236,1,0 -BRDA:8515,1237,0,0 -BRDA:8515,1237,1,0 -BRDA:8517,1238,0,0 -BRDA:8517,1238,1,0 -BRDA:8520,1239,0,0 -BRDA:8520,1239,1,0 -BRDA:8520,1240,0,0 -BRDA:8520,1240,1,0 -BRDA:8521,1241,0,0 -BRDA:8521,1241,1,0 -BRDA:8522,1242,0,0 -BRDA:8522,1242,1,0 -BRDA:8525,1243,0,0 -BRDA:8525,1243,1,0 -BRDA:8530,1244,0,0 -BRDA:8530,1244,1,0 -BRDA:8532,1245,0,0 -BRDA:8532,1245,1,0 -BRDA:8532,1245,2,0 -BRDA:8535,1246,0,0 -BRDA:8535,1246,1,0 -BRDA:8535,1246,2,0 -BRDA:8535,1246,3,0 -BRDA:8538,1247,0,0 -BRDA:8538,1247,1,0 -BRDA:8538,1247,2,0 -BRDA:8539,1248,0,0 -BRDA:8539,1248,1,0 -BRDA:8539,1248,2,0 -BRDA:8540,1249,0,0 -BRDA:8540,1249,1,0 -BRDA:8547,1250,0,0 -BRDA:8547,1250,1,0 -BRDA:8550,1251,0,0 -BRDA:8550,1251,1,0 -BRDA:8551,1252,0,0 -BRDA:8551,1252,1,0 -BRDA:8555,1253,0,0 -BRDA:8555,1253,1,0 -BRDA:8558,1254,0,0 -BRDA:8558,1254,1,0 -BRDA:8559,1255,0,0 -BRDA:8559,1255,1,0 -BRDA:8564,1256,0,0 -BRDA:8564,1256,1,0 -BRDA:8564,1256,2,0 -BRDA:8567,1257,0,0 -BRDA:8567,1257,1,0 -BRDA:8569,1258,0,0 -BRDA:8569,1258,1,0 -BRDA:8569,1259,0,0 -BRDA:8569,1259,1,0 -BRDA:8571,1260,0,0 -BRDA:8571,1260,1,0 -BRDA:8571,1261,0,0 -BRDA:8571,1261,1,0 -BRDA:8577,1262,0,0 -BRDA:8577,1262,1,0 -BRDA:8580,1263,0,0 -BRDA:8580,1263,1,0 -BRDA:8585,1264,0,0 -BRDA:8585,1264,1,0 -BRDA:8589,1265,0,0 -BRDA:8589,1265,1,0 -BRDA:8594,1266,0,0 -BRDA:8594,1266,1,0 -BRDA:8594,1267,0,0 -BRDA:8594,1267,1,0 -BRDA:8596,1268,0,0 -BRDA:8596,1268,1,0 -BRDA:8604,1269,0,0 -BRDA:8604,1269,1,0 -BRDA:8604,1270,0,0 -BRDA:8604,1270,1,0 -BRDA:8605,1271,0,0 -BRDA:8605,1271,1,0 -BRDA:8606,1272,0,0 -BRDA:8606,1272,1,0 -BRDA:8612,1273,0,0 -BRDA:8612,1273,1,0 -BRDA:8617,1274,0,0 -BRDA:8617,1274,1,0 -BRDA:8631,1275,0,0 -BRDA:8631,1275,1,0 -BRDA:8631,1275,2,0 -BRDA:8631,1275,3,0 -BRDA:8631,1275,4,0 -BRDA:8639,1276,0,0 -BRDA:8639,1276,1,0 -BRDA:8641,1277,0,0 -BRDA:8641,1277,1,0 -BRDA:8644,1278,0,0 -BRDA:8644,1278,1,0 -BRDA:8651,1279,0,0 -BRDA:8651,1279,1,0 -BRDA:8651,1280,0,0 -BRDA:8651,1280,1,0 -BRDA:8657,1281,0,0 -BRDA:8657,1281,1,0 -BRDA:8657,1282,0,0 -BRDA:8657,1282,1,0 -BRDA:8657,1282,2,0 -BRDA:8657,1282,3,0 -BRDA:8662,1283,0,0 -BRDA:8662,1283,1,0 -BRDA:8662,1284,0,0 -BRDA:8662,1284,1,0 -BRDA:8666,1285,0,0 -BRDA:8666,1285,1,0 -BRDA:8666,1285,2,0 -BRDA:8670,1286,0,0 -BRDA:8670,1286,1,0 -BRDA:8671,1287,0,0 -BRDA:8671,1287,1,0 -BRDA:8672,1288,0,0 -BRDA:8672,1288,1,0 -BRDA:8676,1289,0,0 -BRDA:8676,1289,1,0 -BRDA:8676,1290,0,0 -BRDA:8676,1290,1,0 -BRDA:8678,1291,0,0 -BRDA:8678,1291,1,0 -BRDA:8684,1292,0,0 -BRDA:8684,1292,1,0 -BRDA:8684,1292,2,0 -BRDA:8686,1293,0,0 -BRDA:8686,1293,1,0 -BRDA:8686,1294,0,0 -BRDA:8686,1294,1,0 -BRDA:8690,1295,0,0 -BRDA:8690,1295,1,0 -BRDA:8698,1296,0,0 -BRDA:8698,1296,1,0 -BRDA:8698,1297,0,0 -BRDA:8698,1297,1,0 -BRDA:8699,1298,0,0 -BRDA:8699,1298,1,0 -BRDA:8700,1299,0,0 -BRDA:8700,1299,1,0 -BRDA:8702,1300,0,0 -BRDA:8702,1300,1,0 -BRDA:8703,1301,0,0 -BRDA:8703,1301,1,0 -BRDA:8711,1302,0,0 -BRDA:8711,1302,1,0 -BRDA:8713,1303,0,0 -BRDA:8713,1303,1,0 -BRDA:8718,1304,0,0 -BRDA:8718,1304,1,0 -BRDA:8726,1305,0,0 -BRDA:8726,1305,1,0 -BRDA:8738,1306,0,0 -BRDA:8738,1306,1,0 -BRDA:8738,1306,2,0 -BRDA:8738,1306,3,0 -BRDA:8738,1306,4,0 -BRDA:8768,1307,0,0 -BRDA:8768,1307,1,0 -BRDA:8780,1308,0,0 -BRDA:8780,1308,1,0 -BRDA:8781,1309,0,0 -BRDA:8781,1309,1,0 -BRDA:8782,1310,0,0 -BRDA:8782,1310,1,0 -BRDA:8782,1310,2,0 -BRDA:8782,1310,3,0 -BRDA:8796,1311,0,0 -BRDA:8796,1311,1,0 -BRDA:8796,1312,0,0 -BRDA:8796,1312,1,0 -BRDA:8811,1313,0,0 -BRDA:8811,1313,1,0 -BRDA:8817,1314,0,0 -BRDA:8817,1314,1,0 -BRDA:8823,1315,0,0 -BRDA:8823,1315,1,0 -BRDA:8824,1316,0,0 -BRDA:8824,1316,1,0 -BRDA:8826,1317,0,0 -BRDA:8826,1317,1,0 -BRDA:8843,1318,0,0 -BRDA:8843,1318,1,0 -BRDA:8844,1319,0,0 -BRDA:8844,1319,1,0 -BRDA:8846,1320,0,0 -BRDA:8846,1320,1,0 -BRDA:8847,1321,0,0 -BRDA:8847,1321,1,0 -BRDA:8876,1322,0,0 -BRDA:8876,1322,1,0 -BRDA:8877,1323,0,0 -BRDA:8877,1323,1,0 -BRDA:8878,1324,0,0 -BRDA:8878,1324,1,0 -BRDA:8881,1325,0,0 -BRDA:8881,1325,1,0 -BRDA:8886,1326,0,0 -BRDA:8886,1326,1,0 -BRDA:8887,1327,0,0 -BRDA:8887,1327,1,0 -BRDA:8888,1328,0,0 -BRDA:8888,1328,1,0 -BRDA:8889,1329,0,0 -BRDA:8889,1329,1,0 -BRDA:8890,1330,0,0 -BRDA:8890,1330,1,0 -BRDA:8930,1331,0,0 -BRDA:8930,1331,1,0 -BRDA:8958,1332,0,0 -BRDA:8958,1332,1,0 -BRDA:8958,1333,0,0 -BRDA:8958,1333,1,0 -BRDA:8958,1333,2,0 -BRDA:8958,1333,3,0 -BRDA:8958,1333,4,0 -BRDA:8964,1334,0,0 -BRDA:8964,1334,1,0 -BRDA:8966,1335,0,0 -BRDA:8966,1335,1,0 -BRDA:8974,1336,0,0 -BRDA:8974,1336,1,0 -BRDA:8982,1337,0,0 -BRDA:8982,1337,1,0 -BRDA:8988,1338,0,0 -BRDA:8988,1338,1,0 -BRDA:8988,1339,0,0 -BRDA:8988,1339,1,0 -BRDA:8988,1339,2,0 -BRDA:8994,1340,0,0 -BRDA:8994,1340,1,0 -BRDA:8995,1341,0,0 -BRDA:8995,1341,1,0 -BRDA:8996,1342,0,0 -BRDA:8996,1342,1,0 -BRDA:8999,1343,0,0 -BRDA:8999,1343,1,0 -BRDA:9002,1344,0,0 -BRDA:9002,1344,1,0 -BRDA:9005,1345,0,0 -BRDA:9005,1345,1,0 -BRDA:9013,1346,0,0 -BRDA:9013,1346,1,0 -BRDA:9019,1347,0,0 -BRDA:9019,1347,1,0 -BRDA:9020,1348,0,0 -BRDA:9020,1348,1,0 -BRDA:9025,1349,0,0 -BRDA:9025,1349,1,0 -BRDA:9030,1350,0,0 -BRDA:9030,1350,1,0 -BRDA:9035,1351,0,0 -BRDA:9035,1351,1,0 -BRDA:9039,1352,0,0 -BRDA:9039,1352,1,0 -BRDA:9039,1353,0,0 -BRDA:9039,1353,1,0 -BRDA:9039,1353,2,0 -BRDA:9043,1354,0,0 -BRDA:9043,1354,1,0 -BRDA:9044,1355,0,0 -BRDA:9044,1355,1,0 -BRDA:9054,1356,0,0 -BRDA:9054,1356,1,0 -BRDA:9069,1357,0,0 -BRDA:9069,1357,1,0 -BRDA:9071,1358,0,0 -BRDA:9071,1358,1,0 -BRDA:9077,1359,0,0 -BRDA:9077,1359,1,0 -BRDA:9079,1360,0,0 -BRDA:9079,1360,1,0 -BRDA:9082,1361,0,0 -BRDA:9082,1361,1,0 -BRDA:9095,1362,0,0 -BRDA:9095,1362,1,0 -BRDA:9103,1363,0,0 -BRDA:9103,1363,1,0 -BRDA:9114,1364,0,0 -BRDA:9114,1364,1,0 -BRDA:9115,1365,0,0 -BRDA:9115,1365,1,0 -BRDA:9116,1366,0,0 -BRDA:9116,1366,1,0 -BRDA:9122,1367,0,0 -BRDA:9122,1367,1,0 -BRDA:9126,1368,0,0 -BRDA:9126,1368,1,0 -BRDA:9129,1369,0,0 -BRDA:9129,1369,1,0 -BRDA:9130,1370,0,0 -BRDA:9130,1370,1,0 -BRDA:9131,1371,0,0 -BRDA:9131,1371,1,0 -BRDA:9136,1372,0,0 -BRDA:9136,1372,1,0 -BRDA:9137,1373,0,0 -BRDA:9137,1373,1,0 -BRDA:9151,1374,0,0 -BRDA:9151,1374,1,0 -BRDA:9152,1375,0,0 -BRDA:9152,1375,1,0 -BRDA:9152,1376,0,0 -BRDA:9152,1376,1,0 -BRDA:9156,1377,0,0 -BRDA:9156,1377,1,0 -BRDA:9175,1378,0,0 -BRDA:9175,1378,1,0 -BRDA:9179,1379,0,0 -BRDA:9179,1379,1,0 -BRDA:9181,1380,0,0 -BRDA:9181,1380,1,0 -BRDA:9235,1381,0,0 -BRDA:9235,1381,1,0 -BRDA:9240,1382,0,0 -BRDA:9240,1382,1,0 -BRDA:9245,1383,0,0 -BRDA:9245,1383,1,0 -BRDA:9250,1384,0,0 -BRDA:9250,1384,1,0 -BRDA:9250,1384,2,0 -BRDA:9261,1385,0,0 -BRDA:9261,1385,1,0 -BRDA:9261,1385,2,0 -BRDA:9261,1385,3,0 -BRDA:9261,1385,4,0 -BRDA:9261,1385,5,0 -BRDA:9278,1386,0,0 -BRDA:9278,1386,1,0 -BRDA:9318,1387,0,0 -BRDA:9318,1387,1,0 -BRDA:9318,1388,0,0 -BRDA:9318,1388,1,0 -BRDA:9332,1389,0,0 -BRDA:9332,1389,1,0 -BRDA:9332,1390,0,0 -BRDA:9332,1390,1,0 -BRDA:9332,1391,0,0 -BRDA:9332,1391,1,0 -BRDA:9345,1392,0,0 -BRDA:9345,1392,1,0 -BRDA:9361,1393,0,0 -BRDA:9361,1393,1,0 -BRDA:9362,1394,0,0 -BRDA:9362,1394,1,0 -BRDA:9362,1394,2,0 -BRDA:9362,1394,3,0 -BRDA:9362,1394,4,0 -BRDA:9372,1395,0,0 -BRDA:9372,1395,1,0 -BRDA:9373,1396,0,0 -BRDA:9373,1396,1,0 -BRDA:9373,1396,2,0 -BRDA:9373,1396,3,0 -BRDA:9381,1397,0,0 -BRDA:9381,1397,1,0 -BRDA:9381,1398,0,0 -BRDA:9381,1398,1,0 -BRDA:9381,1398,2,0 -BRDA:9381,1398,3,0 -BRDA:9381,1398,4,0 -BRDA:9381,1398,5,0 -BRDA:9381,1398,6,0 -BRDA:9381,1398,7,0 -BRDA:9381,1398,8,0 -BRDA:9381,1398,9,0 -BRDA:9381,1398,10,0 -BRDA:9381,1398,11,0 -BRDA:9381,1398,12,0 -BRDA:9381,1398,13,0 -BRDA:9381,1398,14,0 -BRDA:9381,1398,15,0 -BRDA:9381,1398,16,0 -BRDA:9381,1398,17,0 -BRDA:9403,1399,0,0 -BRDA:9403,1399,1,0 -BRDA:9403,1400,0,0 -BRDA:9403,1400,1,0 -BRDA:9403,1400,2,0 -BRDA:9403,1400,3,0 -BRDA:9403,1400,4,0 -BRDA:9403,1400,5,0 -BRDA:9403,1400,6,0 -BRDA:9403,1400,7,0 -BRDA:9403,1400,8,0 -BRDA:9403,1400,9,0 -BRDA:9403,1400,10,0 -BRDA:9403,1400,11,0 -BRDA:9403,1400,12,0 -BRDA:9403,1400,13,0 -BRDA:9403,1400,14,0 -BRDA:9403,1400,15,0 -BRDA:9403,1400,16,0 -BRDA:9403,1400,17,0 -BRDA:9403,1400,18,0 -BRDA:9403,1400,19,0 -BRDA:9403,1400,20,0 -BRDA:9403,1400,21,0 -BRDA:9448,1401,0,0 -BRDA:9448,1401,1,0 -BRDA:9482,1402,0,0 -BRDA:9482,1402,1,0 -BRDA:9525,1403,0,0 -BRDA:9525,1403,1,0 -BRDA:9563,1404,0,0 -BRDA:9563,1404,1,0 -BRDA:9596,1405,0,0 -BRDA:9596,1405,1,0 -BRDA:9596,1406,0,0 -BRDA:9596,1406,1,0 -BRDA:9596,1406,2,0 -BRDA:9596,1407,0,0 -BRDA:9596,1407,1,0 -BRDA:9618,1408,0,0 -BRDA:9618,1408,1,0 -BRDA:9640,1409,0,0 -BRDA:9640,1409,1,0 -BRDA:9640,1410,0,0 -BRDA:9640,1410,1,0 -BRDA:9664,1411,0,0 -BRDA:9664,1411,1,0 -BRDA:9674,1412,0,0 -BRDA:9674,1412,1,0 -BRDA:9675,1413,0,0 -BRDA:9675,1413,1,0 -BRDA:9677,1414,0,0 -BRDA:9677,1414,1,0 -BRDA:9677,1415,0,0 -BRDA:9677,1415,1,0 -BRDA:9724,1416,0,0 -BRDA:9724,1416,1,0 -BRDA:9724,1417,0,0 -BRDA:9724,1417,1,0 -BRDA:9727,1418,0,0 -BRDA:9727,1418,1,0 -BRDA:9751,1419,0,0 -BRDA:9751,1419,1,0 -BRDA:9761,1420,0,0 -BRDA:9761,1420,1,0 -BRDA:9765,1421,0,0 -BRDA:9765,1421,1,0 -BRDA:9767,1422,0,0 -BRDA:9767,1422,1,0 -BRDA:9768,1423,0,0 -BRDA:9768,1423,1,0 -BRDA:9769,1424,0,0 -BRDA:9769,1424,1,0 -BRDA:9771,1425,0,0 -BRDA:9771,1425,1,0 -BRDA:9792,1426,0,0 -BRDA:9792,1426,1,0 -BRDA:9793,1427,0,0 -BRDA:9793,1427,1,0 -BRDA:9805,1428,0,0 -BRDA:9805,1428,1,0 -BRDA:9808,1429,0,0 -BRDA:9808,1429,1,0 -BRDA:9812,1430,0,0 -BRDA:9812,1430,1,0 -BRDA:9813,1431,0,0 -BRDA:9813,1431,1,0 -BRDA:9816,1432,0,0 -BRDA:9816,1432,1,0 -BRDA:9816,1433,0,0 -BRDA:9816,1433,1,0 -BRDA:9836,1434,0,0 -BRDA:9836,1434,1,0 -BRDA:9839,1435,0,0 -BRDA:9839,1435,1,0 -BRDA:9868,1436,0,0 -BRDA:9868,1436,1,0 -BRDA:9868,1436,2,0 -BRDA:9868,1436,3,0 -BRDA:9872,1437,0,0 -BRDA:9872,1437,1,0 -BRDA:9872,1438,0,0 -BRDA:9872,1438,1,0 -BRDA:9872,1439,0,0 -BRDA:9872,1439,1,0 -BRDA:9886,1440,0,0 -BRDA:9886,1440,1,0 -BRDA:9887,1441,0,0 -BRDA:9887,1441,1,0 -BRDA:9907,1442,0,0 -BRDA:9907,1442,1,0 -BRDA:9929,1443,0,0 -BRDA:9929,1443,1,0 -BRDA:9948,1444,0,0 -BRDA:9948,1444,1,0 -BRDA:9949,1445,0,0 -BRDA:9949,1445,1,0 -BRDA:9970,1446,0,0 -BRDA:9970,1446,1,0 -BRDA:9986,1447,0,0 -BRDA:9986,1447,1,0 -BRDA:10004,1448,0,0 -BRDA:10004,1448,1,0 -BRDA:10005,1449,0,0 -BRDA:10005,1449,1,0 -BRDA:10034,1450,0,0 -BRDA:10034,1450,1,0 -BRDA:10036,1451,0,0 -BRDA:10036,1451,1,0 -BRDA:10038,1452,0,0 -BRDA:10038,1452,1,0 -BRDA:10063,1453,0,0 -BRDA:10063,1453,1,0 -BRDA:10086,1454,0,0 -BRDA:10086,1454,1,0 -BRDA:10087,1455,0,0 -BRDA:10087,1455,1,0 -BRDA:10087,1456,0,0 -BRDA:10087,1456,1,0 -BRDA:10109,1457,0,0 -BRDA:10109,1457,1,0 -BRDA:10110,1458,0,0 -BRDA:10110,1458,1,0 -BRDA:10110,1458,2,0 -BRDA:10110,1458,3,0 -BRDA:10110,1458,4,0 -BRDA:10110,1458,5,0 -BRDA:10134,1459,0,0 -BRDA:10134,1459,1,0 -BRDA:10138,1460,0,0 -BRDA:10138,1460,1,0 -BRDA:10138,1461,0,0 -BRDA:10138,1461,1,0 -BRDA:10138,1461,2,0 -BRDA:10138,1461,3,0 -BRDA:10138,1461,4,0 -BRDA:10142,1462,0,0 -BRDA:10142,1462,1,0 -BRDA:10142,1462,2,0 -BRDA:10142,1462,3,0 -BRDA:10158,1463,0,0 -BRDA:10158,1463,1,0 -BRDA:10158,1464,0,0 -BRDA:10158,1464,1,0 -BRDA:10158,1464,2,0 -BRDA:10158,1464,3,0 -BRDA:10170,1465,0,0 -BRDA:10170,1465,1,0 -BRDA:10170,1465,2,0 -BRDA:10170,1465,3,0 -BRDA:10171,1466,0,0 -BRDA:10171,1466,1,0 -BRDA:10182,1467,0,0 -BRDA:10182,1467,1,0 -BRDA:10224,1468,0,0 -BRDA:10224,1468,1,0 -BRDA:10228,1469,0,0 -BRDA:10228,1469,1,0 -BRDA:10255,1470,0,0 -BRDA:10255,1470,1,0 -BRDA:10295,1471,0,0 -BRDA:10295,1471,1,0 -BRDA:10322,1472,0,0 -BRDA:10322,1472,1,0 -BRDA:10343,1473,0,0 -BRDA:10343,1473,1,0 -BRDA:10403,1474,0,0 -BRDA:10403,1474,1,0 -BRDA:10425,1475,0,0 -BRDA:10425,1475,1,0 -BRDA:10473,1476,0,0 -BRDA:10473,1476,1,0 -BRDA:10473,1476,2,0 -BRDA:10473,1476,3,0 -BRDA:10476,1477,0,0 -BRDA:10476,1477,1,0 -BRDA:10476,1477,2,0 -BRDA:10499,1478,0,0 -BRDA:10499,1478,1,0 -BRDA:10503,1479,0,0 -BRDA:10503,1479,1,0 -BRDA:10503,1480,0,0 -BRDA:10503,1480,1,0 -BRDA:10524,1481,0,0 -BRDA:10524,1481,1,0 -BRDA:10524,1482,0,0 -BRDA:10524,1482,1,0 -BRDA:10528,1483,0,0 -BRDA:10528,1483,1,0 -BRDA:10528,1484,0,0 -BRDA:10528,1484,1,0 -BRDA:10548,1485,0,0 -BRDA:10548,1485,1,0 -BRDA:10595,1486,0,0 -BRDA:10595,1486,1,0 -BRDA:10595,1486,2,0 -BRDA:10656,1487,0,0 -BRDA:10656,1487,1,0 -BRDA:10662,1488,0,0 -BRDA:10662,1488,1,0 -BRDA:10662,1488,2,0 -BRDA:10662,1488,3,0 -BRDA:10695,1489,0,0 -BRDA:10695,1489,1,0 -BRDA:10695,1489,2,0 -BRDA:10726,1490,0,0 -BRDA:10726,1490,1,0 -BRDA:10756,1491,0,0 -BRDA:10756,1491,1,0 -BRDA:10756,1491,2,0 -BRDA:11180,1492,0,0 -BRDA:11180,1492,1,0 -BRDA:11180,1492,2,0 -BRDA:11180,1492,3,0 -BRDA:11183,1493,0,0 -BRDA:11183,1493,1,0 -BRDA:11183,1493,2,0 -BRDA:11183,1493,3,0 -BRDA:11186,1494,0,0 -BRDA:11186,1494,1,0 -BRDA:11186,1494,2,0 -BRDA:11189,1495,0,0 -BRDA:11189,1495,1,0 -BRDA:11189,1495,2,0 -BRDA:11189,1495,3,0 -BRDA:11192,1496,0,0 -BRDA:11192,1496,1,0 -BRDA:11192,1496,2,0 -BRDA:11192,1496,3,0 -BRDA:11192,1496,4,0 -BRDA:11195,1497,0,0 -BRDA:11195,1497,1,0 -BRDA:11198,1498,0,0 -BRDA:11198,1498,1,0 -BRDA:11203,1499,0,0 -BRDA:11203,1499,1,0 -BRDA:11203,1499,2,0 -BRDA:11208,1500,0,0 -BRDA:11208,1500,1,0 -BRDA:11209,1501,0,0 -BRDA:11209,1501,1,0 -BRDA:11210,1502,0,0 -BRDA:11210,1502,1,0 -BRDA:11211,1503,0,0 -BRDA:11211,1503,1,0 -BRDA:11212,1504,0,0 -BRDA:11212,1504,1,0 -BRDA:11213,1505,0,0 -BRDA:11213,1505,1,0 -BRDA:11256,1506,0,0 -BRDA:11256,1506,1,0 -BRDA:11256,1506,2,0 -BRDA:11256,1506,3,0 -BRDA:11277,1507,0,0 -BRDA:11277,1507,1,0 -BRDA:11297,1508,0,0 -BRDA:11297,1508,1,0 -BRDA:11300,1509,0,0 -BRDA:11300,1509,1,0 -BRDA:11317,1510,0,0 -BRDA:11317,1510,1,0 -BRDA:11320,1511,0,0 -BRDA:11320,1511,1,0 -BRDA:11339,1512,0,0 -BRDA:11339,1512,1,0 -BRDA:11342,1513,0,0 -BRDA:11342,1513,1,0 -BRDA:11360,1514,0,0 -BRDA:11360,1514,1,0 -BRDA:11366,1515,0,0 -BRDA:11366,1515,1,0 -BRDA:11383,1516,0,0 -BRDA:11383,1516,1,0 -BRDA:11384,1517,0,0 -BRDA:11384,1517,1,0 -BRDA:11398,1518,0,0 -BRDA:11398,1518,1,0 -BRDA:11401,1519,0,0 -BRDA:11401,1519,1,0 -BRDA:11419,1520,0,0 -BRDA:11419,1520,1,0 -BRDA:11461,1521,0,0 -BRDA:11461,1521,1,0 -BRDA:11463,1522,0,0 -BRDA:11463,1522,1,0 -BRDA:11463,1523,0,0 -BRDA:11463,1523,1,0 -BRDA:11485,1524,0,0 -BRDA:11485,1524,1,0 -BRDA:11486,1525,0,0 -BRDA:11486,1525,1,0 -BRDA:11486,1526,0,0 -BRDA:11486,1526,1,0 -BRDA:11507,1527,0,0 -BRDA:11507,1527,1,0 -BRDA:11510,1528,0,0 -BRDA:11510,1528,1,0 -BRDA:11545,1529,0,0 -BRDA:11545,1529,1,0 -BRDA:11562,1530,0,0 -BRDA:11562,1530,1,0 -BRDA:11583,1531,0,0 -BRDA:11583,1531,1,0 -BRDA:11585,1532,0,0 -BRDA:11585,1532,1,0 -BRDA:11586,1533,0,0 -BRDA:11586,1533,1,0 -BRDA:11603,1534,0,0 -BRDA:11603,1534,1,0 -BRDA:11623,1535,0,0 -BRDA:11623,1535,1,0 -BRDA:11651,1536,0,0 -BRDA:11651,1536,1,0 -BRDA:11652,1537,0,0 -BRDA:11652,1537,1,0 -BRDA:11664,1538,0,0 -BRDA:11664,1538,1,0 -BRDA:11677,1539,0,0 -BRDA:11677,1539,1,0 -BRDA:11696,1540,0,0 -BRDA:11696,1540,1,0 -BRDA:11739,1541,0,0 -BRDA:11739,1541,1,0 -BRDA:11740,1542,0,0 -BRDA:11740,1542,1,0 -BRDA:11834,1543,0,0 -BRDA:11834,1543,1,0 -BRDA:11850,1544,0,0 -BRDA:11850,1544,1,0 -BRDA:11867,1545,0,0 -BRDA:11867,1545,1,0 -BRDA:11913,1546,0,0 -BRDA:11913,1546,1,0 -BRDA:12003,1547,0,0 -BRDA:12003,1547,1,0 -BRDA:12003,1548,0,0 -BRDA:12003,1548,1,0 -BRDA:12060,1549,0,0 -BRDA:12060,1549,1,0 -BRDA:12080,1550,0,0 -BRDA:12080,1550,1,0 -BRDA:12095,1551,0,0 -BRDA:12095,1551,1,0 -BRDA:12108,1552,0,0 -BRDA:12108,1552,1,0 -BRDA:12145,1553,0,0 -BRDA:12145,1553,1,0 -BRDA:12156,1554,0,0 -BRDA:12156,1554,1,0 -BRDA:12191,1555,0,0 -BRDA:12191,1555,1,0 -BRDA:12223,1556,0,0 -BRDA:12223,1556,1,0 -BRDA:12223,1556,2,0 -BRDA:12223,1556,3,0 -BRDA:12224,1557,0,0 -BRDA:12224,1557,1,0 -BRDA:12247,1558,0,0 -BRDA:12247,1558,1,0 -BRDA:12250,1559,0,0 -BRDA:12250,1559,1,0 -BRDA:12255,1560,0,0 -BRDA:12255,1560,1,0 -BRDA:12256,1561,0,0 -BRDA:12256,1561,1,0 -BRDA:12257,1562,0,0 -BRDA:12257,1562,1,0 -BRDA:12268,1563,0,0 -BRDA:12268,1563,1,0 -BRDA:12269,1564,0,0 -BRDA:12269,1564,1,0 -BRDA:12269,1564,2,0 -BRDA:12270,1565,0,0 -BRDA:12270,1565,1,0 -BRDA:12276,1566,0,0 -BRDA:12276,1566,1,0 -BRDA:12296,1567,0,0 -BRDA:12296,1567,1,0 -BRDA:12309,1568,0,0 -BRDA:12309,1568,1,0 -BRDA:12310,1569,0,0 -BRDA:12310,1569,1,0 -BRDA:12311,1570,0,0 -BRDA:12311,1570,1,0 -BRDA:12433,1571,0,0 -BRDA:12433,1571,1,0 -BRDA:12433,1572,0,0 -BRDA:12433,1572,1,0 -BRDA:12433,1572,2,0 -BRDA:12434,1573,0,0 -BRDA:12434,1573,1,0 -BRDA:12437,1574,0,0 -BRDA:12437,1574,1,0 -BRDA:12455,1575,0,0 -BRDA:12455,1575,1,0 -BRDA:12458,1576,0,0 -BRDA:12458,1576,1,0 -BRDA:12607,1577,0,0 -BRDA:12607,1577,1,0 -BRDA:12631,1578,0,0 -BRDA:12631,1578,1,0 -BRDA:12636,1579,0,0 -BRDA:12636,1579,1,0 -BRDA:12642,1580,0,0 -BRDA:12642,1580,1,0 -BRDA:12642,1581,0,0 -BRDA:12642,1581,1,0 -BRDA:12642,1581,2,0 -BRDA:12642,1581,3,0 -BRDA:12648,1582,0,0 -BRDA:12648,1582,1,0 -BRDA:12660,1583,0,0 -BRDA:12660,1583,1,0 -BRDA:12662,1584,0,0 -BRDA:12662,1584,1,0 -BRDA:12663,1585,0,0 -BRDA:12663,1585,1,0 -BRDA:12690,1586,0,0 -BRDA:12690,1586,1,0 -BRDA:12707,1587,0,0 -BRDA:12707,1587,1,0 -BRDA:12722,1588,0,0 -BRDA:12722,1588,1,0 -BRDA:12723,1589,0,0 -BRDA:12723,1589,1,0 -BRDA:12738,1590,0,0 -BRDA:12738,1590,1,0 -BRDA:12740,1591,0,0 -BRDA:12740,1591,1,0 -BRDA:12742,1592,0,0 -BRDA:12742,1592,1,0 -BRDA:12756,1593,0,0 -BRDA:12756,1593,1,0 -BRDA:12771,1594,0,0 -BRDA:12771,1594,1,0 -BRDA:12772,1595,0,0 -BRDA:12772,1595,1,0 -BRDA:12772,1596,0,0 -BRDA:12772,1596,1,0 -BRDA:12794,1597,0,0 -BRDA:12794,1597,1,0 -BRDA:12828,1598,0,0 -BRDA:12828,1598,1,0 -BRDA:12832,1599,0,0 -BRDA:12832,1599,1,0 -BRDA:12854,1600,0,0 -BRDA:12854,1600,1,0 -BRDA:12884,1601,0,0 -BRDA:12884,1601,1,0 -BRDA:12911,1602,0,0 -BRDA:12911,1602,1,0 -BRDA:12931,1603,0,0 -BRDA:12931,1603,1,0 -BRDA:12947,1604,0,0 -BRDA:12947,1604,1,0 -BRDA:12992,1605,0,0 -BRDA:12992,1605,1,0 -BRDA:13015,1606,0,0 -BRDA:13015,1606,1,0 -BRDA:13136,1607,0,0 -BRDA:13136,1607,1,0 -BRDA:13138,1608,0,0 -BRDA:13138,1608,1,0 -BRDA:13138,1609,0,0 -BRDA:13138,1609,1,0 -BRDA:13169,1610,0,0 -BRDA:13169,1610,1,0 -BRDA:13170,1611,0,0 -BRDA:13170,1611,1,0 -BRDA:13170,1611,2,0 -BRDA:13171,1612,0,0 -BRDA:13171,1612,1,0 -BRDA:13171,1612,2,0 -BRDA:13171,1612,3,0 -BRDA:13172,1613,0,0 -BRDA:13172,1613,1,0 -BRDA:13172,1613,2,0 -BRDA:13172,1613,3,0 -BRDA:13173,1614,0,0 -BRDA:13173,1614,1,0 -BRDA:13177,1615,0,0 -BRDA:13177,1615,1,0 -BRDA:13177,1616,0,0 -BRDA:13177,1616,1,0 -BRDA:13177,1616,2,0 -BRDA:13178,1617,0,0 -BRDA:13178,1617,1,0 -BRDA:13178,1617,2,0 -BRDA:13178,1617,3,0 -BRDA:13178,1617,4,0 -BRDA:13178,1617,5,0 -BRDA:13178,1617,6,0 -BRDA:13178,1617,7,0 -BRDA:13178,1617,8,0 -BRDA:13178,1617,9,0 -BRDA:13203,1618,0,0 -BRDA:13203,1618,1,0 -BRDA:13239,1619,0,0 -BRDA:13239,1619,1,0 -BRDA:13239,1620,0,0 -BRDA:13239,1620,1,0 -BRDA:13239,1620,2,0 -BRDA:13239,1620,3,0 -BRDA:13257,1621,0,0 -BRDA:13257,1621,1,0 -BRDA:13257,1622,0,0 -BRDA:13257,1622,1,0 -BRDA:13257,1622,2,0 -BRDA:13257,1623,0,0 -BRDA:13257,1623,1,0 -BRDA:13274,1624,0,0 -BRDA:13274,1624,1,0 -BRDA:13309,1625,0,0 -BRDA:13309,1625,1,0 -BRDA:13322,1626,0,0 -BRDA:13322,1626,1,0 -BRDA:13335,1627,0,0 -BRDA:13335,1627,1,0 -BRDA:13335,1628,0,0 -BRDA:13335,1628,1,0 -BRDA:13362,1629,0,0 -BRDA:13362,1629,1,0 -BRDA:13377,1630,0,0 -BRDA:13377,1630,1,0 -BRDA:13378,1631,0,0 -BRDA:13378,1631,1,0 -BRDA:13379,1632,0,0 -BRDA:13379,1632,1,0 -BRDA:13381,1633,0,0 -BRDA:13381,1633,1,0 -BRDA:13382,1634,0,0 -BRDA:13382,1634,1,0 -BRDA:13410,1635,0,0 -BRDA:13410,1635,1,0 -BRDA:13411,1636,0,0 -BRDA:13411,1636,1,0 -BRDA:13413,1637,0,0 -BRDA:13413,1637,1,0 -BRDA:13416,1638,0,0 -BRDA:13416,1638,1,0 -BRDA:13420,1639,0,0 -BRDA:13420,1639,1,0 -BRDA:13422,1640,0,0 -BRDA:13422,1640,1,0 -BRDA:13427,1641,0,0 -BRDA:13427,1641,1,0 -BRDA:13429,1642,0,0 -BRDA:13429,1642,1,0 -BRDA:13432,1643,0,0 -BRDA:13432,1643,1,0 -BRDA:13432,1644,0,0 -BRDA:13432,1644,1,0 -BRDA:13432,1644,2,0 -BRDA:13432,1644,3,0 -BRDA:13433,1645,0,0 -BRDA:13433,1645,1,0 -BRDA:13433,1646,0,0 -BRDA:13433,1646,1,0 -BRDA:13434,1647,0,0 -BRDA:13434,1647,1,0 -BRDA:13435,1648,0,0 -BRDA:13435,1648,1,0 -BRDA:13440,1649,0,0 -BRDA:13440,1649,1,0 -BRDA:13441,1650,0,0 -BRDA:13441,1650,1,0 -BRDA:13447,1651,0,0 -BRDA:13447,1651,1,0 -BRDA:13449,1652,0,0 -BRDA:13449,1652,1,0 -BRDA:13454,1653,0,0 -BRDA:13454,1653,1,0 -BRDA:13455,1654,0,0 -BRDA:13455,1654,1,0 -BRDA:13456,1655,0,0 -BRDA:13456,1655,1,0 -BRDA:13458,1656,0,0 -BRDA:13458,1656,1,0 -BRDA:13459,1657,0,0 -BRDA:13459,1657,1,0 -BRDA:13460,1658,0,0 -BRDA:13460,1658,1,0 -BRDA:13494,1659,0,0 -BRDA:13494,1659,1,0 -BRDA:13503,1660,0,0 -BRDA:13503,1660,1,0 -BRDA:13503,1661,0,0 -BRDA:13503,1661,1,0 -BRDA:13503,1661,2,0 -BRDA:13521,1662,0,0 -BRDA:13521,1662,1,0 -BRDA:13546,1663,0,0 -BRDA:13546,1663,1,0 -BRDA:13549,1664,0,0 -BRDA:13549,1664,1,0 -BRDA:13552,1665,0,0 -BRDA:13552,1665,1,0 -BRDA:13556,1666,0,0 -BRDA:13556,1666,1,0 -BRDA:13564,1667,0,0 -BRDA:13564,1667,1,0 -BRDA:13566,1668,0,0 -BRDA:13566,1668,1,0 -BRDA:13566,1669,0,0 -BRDA:13566,1669,1,0 -BRDA:13567,1670,0,0 -BRDA:13567,1670,1,0 -BRDA:13567,1671,0,0 -BRDA:13567,1671,1,0 -BRDA:13570,1672,0,0 -BRDA:13570,1672,1,0 -BRDA:13576,1673,0,0 -BRDA:13576,1673,1,0 -BRDA:13639,1674,0,0 -BRDA:13639,1674,1,0 -BRDA:13639,1675,0,0 -BRDA:13639,1675,1,0 -BRDA:13639,1676,0,0 -BRDA:13639,1676,1,0 -BRDA:13640,1677,0,0 -BRDA:13640,1677,1,0 -BRDA:13664,1678,0,0 -BRDA:13664,1678,1,0 -BRDA:13665,1679,0,0 -BRDA:13665,1679,1,0 -BRDA:13667,1680,0,0 -BRDA:13667,1680,1,0 -BRDA:13667,1681,0,0 -BRDA:13667,1681,1,0 -BRDA:13668,1682,0,0 -BRDA:13668,1682,1,0 -BRDA:13671,1683,0,0 -BRDA:13671,1683,1,0 -BRDA:13689,1684,0,0 -BRDA:13689,1684,1,0 -BRDA:13711,1685,0,0 -BRDA:13711,1685,1,0 -BRDA:13712,1686,0,0 -BRDA:13712,1686,1,0 -BRDA:13716,1687,0,0 -BRDA:13716,1687,1,0 -BRDA:13716,1688,0,0 -BRDA:13716,1688,1,0 -BRDA:13717,1689,0,0 -BRDA:13717,1689,1,0 -BRDA:13723,1690,0,0 -BRDA:13723,1690,1,0 -BRDA:13764,1691,0,0 -BRDA:13764,1691,1,0 -BRDA:13776,1692,0,0 -BRDA:13776,1692,1,0 -BRDA:13808,1693,0,0 -BRDA:13808,1693,1,0 -BRDA:13811,1694,0,0 -BRDA:13811,1694,1,0 -BRDA:13811,1695,0,0 -BRDA:13811,1695,1,0 -BRDA:13827,1696,0,0 -BRDA:13827,1696,1,0 -BRDA:13838,1697,0,0 -BRDA:13838,1697,1,0 -BRDA:13839,1698,0,0 -BRDA:13839,1698,1,0 -BRDA:13841,1699,0,0 -BRDA:13841,1699,1,0 -BRDA:13841,1700,0,0 -BRDA:13841,1700,1,0 -BRDA:13868,1701,0,0 -BRDA:13868,1701,1,0 -BRDA:13880,1702,0,0 -BRDA:13880,1702,1,0 -BRDA:13893,1703,0,0 -BRDA:13893,1703,1,0 -BRDA:13907,1704,0,0 -BRDA:13907,1704,1,0 -BRDA:13917,1705,0,0 -BRDA:13917,1705,1,0 -BRDA:13917,1706,0,0 -BRDA:13917,1706,1,0 -BRDA:13921,1707,0,0 -BRDA:13921,1707,1,0 -BRDA:13921,1708,0,0 -BRDA:13921,1708,1,0 -BRDA:13921,1708,2,0 -BRDA:13921,1708,3,0 -BRDA:13922,1709,0,0 -BRDA:13922,1709,1,0 -BRDA:13931,1710,0,0 -BRDA:13931,1710,1,0 -BRDA:13933,1711,0,0 -BRDA:13933,1711,1,0 -BRDA:13935,1712,0,0 -BRDA:13935,1712,1,0 -BRDA:13935,1713,0,0 -BRDA:13935,1713,1,0 -BRDA:13936,1714,0,0 -BRDA:13936,1714,1,0 -BRDA:13936,1715,0,0 -BRDA:13936,1715,1,0 -BRDA:13943,1716,0,0 -BRDA:13943,1716,1,0 -BRDA:13943,1717,0,0 -BRDA:13943,1717,1,0 -BRDA:13950,1718,0,0 -BRDA:13950,1718,1,0 -BRDA:13990,1719,0,0 -BRDA:13990,1719,1,0 -BRDA:13991,1720,0,0 -BRDA:13991,1720,1,0 -BRDA:14002,1721,0,0 -BRDA:14002,1721,1,0 -BRDA:14013,1722,0,0 -BRDA:14013,1722,1,0 -BRDA:14024,1723,0,0 -BRDA:14024,1723,1,0 -BRDA:14042,1724,0,0 -BRDA:14042,1724,1,0 -BRDA:14045,1725,0,0 -BRDA:14045,1725,1,0 -BRDA:14045,1726,0,0 -BRDA:14045,1726,1,0 -BRDA:14045,1726,2,0 -BRDA:14045,1726,3,0 -BRDA:14046,1727,0,0 -BRDA:14046,1727,1,0 -BRDA:14068,1728,0,0 -BRDA:14068,1728,1,0 -BRDA:14069,1729,0,0 -BRDA:14069,1729,1,0 -BRDA:14071,1730,0,0 -BRDA:14071,1730,1,0 -BRDA:14072,1731,0,0 -BRDA:14072,1731,1,0 -BRDA:14078,1732,0,0 -BRDA:14078,1732,1,0 -BRDA:14078,1733,0,0 -BRDA:14078,1733,1,0 -BRDA:14079,1734,0,0 -BRDA:14079,1734,1,0 -BRDA:14085,1735,0,0 -BRDA:14085,1735,1,0 -BRDA:14085,1736,0,0 -BRDA:14085,1736,1,0 -BRDA:14086,1737,0,0 -BRDA:14086,1737,1,0 -BRDA:14087,1738,0,0 -BRDA:14087,1738,1,0 -BRDA:14087,1739,0,0 -BRDA:14087,1739,1,0 -BRDA:14091,1740,0,0 -BRDA:14091,1740,1,0 -BRDA:14092,1741,0,0 -BRDA:14092,1741,1,0 -BRDA:14093,1742,0,0 -BRDA:14093,1742,1,0 -BRDA:14095,1743,0,0 -BRDA:14095,1743,1,0 -BRDA:14095,1744,0,0 -BRDA:14095,1744,1,0 -BRDA:14096,1745,0,0 -BRDA:14096,1745,1,0 -BRDA:14097,1746,0,0 -BRDA:14097,1746,1,0 -BRDA:14099,1747,0,0 -BRDA:14099,1747,1,0 -BRDA:14103,1748,0,0 -BRDA:14103,1748,1,0 -BRDA:14106,1749,0,0 -BRDA:14106,1749,1,0 -BRDA:14118,1750,0,0 -BRDA:14118,1750,1,0 -BRDA:14136,1751,0,0 -BRDA:14136,1751,1,0 -BRDA:14142,1752,0,0 -BRDA:14142,1752,1,0 -BRDA:14142,1753,0,0 -BRDA:14142,1753,1,0 -BRDA:14142,1754,0,0 -BRDA:14142,1754,1,0 -BRDA:14155,1755,0,0 -BRDA:14155,1755,1,0 -BRDA:14155,1756,0,0 -BRDA:14155,1756,1,0 -BRDA:14156,1757,0,0 -BRDA:14156,1757,1,0 -BRDA:14156,1758,0,0 -BRDA:14156,1758,1,0 -BRDA:14161,1759,0,0 -BRDA:14161,1759,1,0 -BRDA:14164,1760,0,0 -BRDA:14164,1760,1,0 -BRDA:14164,1761,0,0 -BRDA:14164,1761,1,0 -BRDA:14184,1762,0,0 -BRDA:14184,1762,1,0 -BRDA:14184,1763,0,0 -BRDA:14184,1763,1,0 -BRDA:14187,1764,0,0 -BRDA:14187,1764,1,0 -BRDA:14199,1765,0,0 -BRDA:14199,1765,1,0 -BRDA:14210,1766,0,0 -BRDA:14210,1766,1,0 -BRDA:14221,1767,0,0 -BRDA:14221,1767,1,0 -BRDA:14221,1767,2,0 -BRDA:14235,1768,0,0 -BRDA:14235,1768,1,0 -BRDA:14238,1769,0,0 -BRDA:14238,1769,1,0 -BRDA:14241,1770,0,0 -BRDA:14241,1770,1,0 -BRDA:14242,1771,0,0 -BRDA:14242,1771,1,0 -BRDA:14257,1772,0,0 -BRDA:14257,1772,1,0 -BRDA:14262,1773,0,0 -BRDA:14262,1773,1,0 -BRDA:14262,1774,0,0 -BRDA:14262,1774,1,0 -BRDA:14277,1775,0,0 -BRDA:14277,1775,1,0 -BRDA:14284,1776,0,0 -BRDA:14284,1776,1,0 -BRDA:14284,1777,0,0 -BRDA:14284,1777,1,0 -BRDA:14284,1777,2,0 -BRDA:14314,1778,0,0 -BRDA:14314,1778,1,0 -BRDA:14331,1779,0,0 -BRDA:14331,1779,1,0 -BRDA:14331,1780,0,0 -BRDA:14331,1780,1,0 -BRDA:14335,1781,0,0 -BRDA:14335,1781,1,0 -BRDA:14348,1782,0,0 -BRDA:14348,1782,1,0 -BRDA:14348,1783,0,0 -BRDA:14348,1783,1,0 -BRDA:14353,1784,0,0 -BRDA:14353,1784,1,0 -BRDA:14353,1785,0,0 -BRDA:14353,1785,1,0 -BRDA:14371,1786,0,0 -BRDA:14371,1786,1,0 -BRDA:14375,1787,0,0 -BRDA:14375,1787,1,0 -BRDA:14376,1788,0,0 -BRDA:14376,1788,1,0 -BRDA:14380,1789,0,0 -BRDA:14380,1789,1,0 -BRDA:14384,1790,0,0 -BRDA:14384,1790,1,0 -BRDA:14412,1791,0,0 -BRDA:14412,1791,1,0 -BRDA:14416,1792,0,0 -BRDA:14416,1792,1,0 -BRDA:14422,1793,0,0 -BRDA:14422,1793,1,0 -BRDA:14424,1794,0,0 -BRDA:14424,1794,1,0 -BRDA:14425,1795,0,0 -BRDA:14425,1795,1,0 -BRDA:14425,1795,2,0 -BRDA:14428,1796,0,0 -BRDA:14428,1796,1,0 -BRDA:14428,1797,0,0 -BRDA:14428,1797,1,0 -BRDA:14428,1797,2,0 -BRDA:14429,1798,0,0 -BRDA:14429,1798,1,0 -BRDA:14432,1799,0,0 -BRDA:14432,1799,1,0 -BRDA:14435,1800,0,0 -BRDA:14435,1800,1,0 -BRDA:14439,1801,0,0 -BRDA:14439,1801,1,0 -BRDA:14447,1802,0,0 -BRDA:14447,1802,1,0 -BRDA:14447,1803,0,0 -BRDA:14447,1803,1,0 -BRDA:14449,1804,0,0 -BRDA:14449,1804,1,0 -BRDA:14452,1805,0,0 -BRDA:14452,1805,1,0 -BRDA:14452,1806,0,0 -BRDA:14452,1806,1,0 -BRDA:14452,1806,2,0 -BRDA:14460,1807,0,0 -BRDA:14460,1807,1,0 -BRDA:14479,1808,0,0 -BRDA:14479,1808,1,0 -BRDA:14482,1809,0,0 -BRDA:14482,1809,1,0 -BRDA:14483,1810,0,0 -BRDA:14483,1810,1,0 -BRDA:14497,1811,0,0 -BRDA:14497,1811,1,0 -BRDA:14544,1812,0,0 -BRDA:14544,1812,1,0 -BRDA:14576,1813,0,0 -BRDA:14576,1813,1,0 -BRDA:14581,1814,0,0 -BRDA:14581,1814,1,0 -BRDA:14584,1815,0,0 -BRDA:14584,1815,1,0 -BRDA:14590,1816,0,0 -BRDA:14590,1816,1,0 -BRDA:14593,1817,0,0 -BRDA:14593,1817,1,0 -BRDA:14612,1818,0,0 -BRDA:14612,1818,1,0 -BRDA:14617,1819,0,0 -BRDA:14617,1819,1,0 -BRDA:14617,1820,0,0 -BRDA:14617,1820,1,0 -BRDA:14619,1821,0,0 -BRDA:14619,1821,1,0 -BRDA:14655,1822,0,0 -BRDA:14655,1822,1,0 -BRDA:14659,1823,0,0 -BRDA:14659,1823,1,0 -BRDA:14675,1824,0,0 -BRDA:14675,1824,1,0 -BRDA:14675,1825,0,0 -BRDA:14675,1825,1,0 -BRDA:14675,1825,2,0 -BRDA:14681,1826,0,0 -BRDA:14681,1826,1,0 -BRDA:14685,1827,0,0 -BRDA:14685,1827,1,0 -BRDA:14740,1828,0,0 -BRDA:14740,1828,1,0 -BRDA:14750,1829,0,0 -BRDA:14750,1829,1,0 -BRDA:14754,1830,0,0 -BRDA:14754,1830,1,0 -BRDA:14756,1831,0,0 -BRDA:14756,1831,1,0 -BRDA:14757,1832,0,0 -BRDA:14757,1832,1,0 -BRDA:14758,1833,0,0 -BRDA:14758,1833,1,0 -BRDA:14760,1834,0,0 -BRDA:14760,1834,1,0 -BRDA:14777,1835,0,0 -BRDA:14777,1835,1,0 -BRDA:14790,1836,0,0 -BRDA:14790,1836,1,0 -BRDA:14823,1837,0,0 -BRDA:14823,1837,1,0 -BRDA:14824,1838,0,0 -BRDA:14824,1838,1,0 -BRDA:14826,1839,0,0 -BRDA:14826,1839,1,0 -BRDA:14827,1840,0,0 -BRDA:14827,1840,1,0 -BRDA:14830,1841,0,0 -BRDA:14830,1841,1,0 -BRDA:14873,1842,0,0 -BRDA:14873,1842,1,0 -BRDA:14875,1843,0,0 -BRDA:14875,1843,1,0 -BRDA:14875,1844,0,0 -BRDA:14875,1844,1,0 -BRDA:14875,1844,2,0 -BRDA:14880,1845,0,0 -BRDA:14880,1845,1,0 -BRDA:14880,1846,0,0 -BRDA:14880,1846,1,0 -BRDA:14880,1846,2,0 -BRDA:14881,1847,0,0 -BRDA:14881,1847,1,0 -BRDA:14909,1848,0,0 -BRDA:14909,1848,1,0 -BRDA:14923,1849,0,0 -BRDA:14923,1849,1,0 -BRDA:14924,1850,0,0 -BRDA:14924,1850,1,0 -BRDA:14925,1851,0,0 -BRDA:14925,1851,1,0 -BRDA:14926,1852,0,0 -BRDA:14926,1852,1,0 -BRDA:14926,1852,2,0 -BRDA:14927,1853,0,0 -BRDA:14927,1853,1,0 -BRDA:14928,1854,0,0 -BRDA:14928,1854,1,0 -BRDA:14928,1854,2,0 -BRDA:14928,1854,3,0 -BRDA:14929,1855,0,0 -BRDA:14929,1855,1,0 -BRDA:14930,1856,0,0 -BRDA:14930,1856,1,0 -BRDA:14930,1856,2,0 -BRDA:14930,1856,3,0 -BRDA:14930,1856,4,0 -BRDA:14931,1857,0,0 -BRDA:14931,1857,1,0 -BRDA:14931,1858,0,0 -BRDA:14931,1858,1,0 -BRDA:14934,1859,0,0 -BRDA:14934,1859,1,0 -BRDA:14936,1860,0,0 -BRDA:14936,1860,1,0 -BRDA:14962,1861,0,0 -BRDA:14962,1861,1,0 -BRDA:14964,1862,0,0 -BRDA:14964,1862,1,0 -BRDA:14964,1863,0,0 -BRDA:14964,1863,1,0 -BRDA:14966,1864,0,0 -BRDA:14966,1864,1,0 -BRDA:14981,1865,0,0 -BRDA:14981,1865,1,0 -BRDA:14984,1866,0,0 -BRDA:14984,1866,1,0 -BRDA:15000,1867,0,0 -BRDA:15000,1867,1,0 -BRDA:15003,1868,0,0 -BRDA:15003,1868,1,0 -BRDA:15007,1869,0,0 -BRDA:15007,1869,1,0 -BRDA:15008,1870,0,0 -BRDA:15008,1870,1,0 -BRDA:15011,1871,0,0 -BRDA:15011,1871,1,0 -BRDA:15011,1872,0,0 -BRDA:15011,1872,1,0 -BRDA:15031,1873,0,0 -BRDA:15031,1873,1,0 -BRDA:15035,1874,0,0 -BRDA:15035,1874,1,0 -BRDA:15036,1875,0,0 -BRDA:15036,1875,1,0 -BRDA:15037,1876,0,0 -BRDA:15037,1876,1,0 -BRDA:15045,1877,0,0 -BRDA:15045,1877,1,0 -BRDA:15050,1878,0,0 -BRDA:15050,1878,1,0 -BRDA:15052,1879,0,0 -BRDA:15052,1879,1,0 -BRDA:15052,1880,0,0 -BRDA:15052,1880,1,0 -BRDA:15053,1881,0,0 -BRDA:15053,1881,1,0 -BRDA:15053,1882,0,0 -BRDA:15053,1882,1,0 -BRDA:15056,1883,0,0 -BRDA:15056,1883,1,0 -BRDA:15060,1884,0,0 -BRDA:15060,1884,1,0 -BRDA:15065,1885,0,0 -BRDA:15065,1885,1,0 -BRDA:15066,1886,0,0 -BRDA:15066,1886,1,0 -BRDA:15086,1887,0,0 -BRDA:15086,1887,1,0 -BRDA:15116,1888,0,0 -BRDA:15116,1888,1,0 -BRDA:15118,1889,0,0 -BRDA:15118,1889,1,0 -BRDA:15118,1890,0,0 -BRDA:15118,1890,1,0 -BRDA:15121,1891,0,0 -BRDA:15121,1891,1,0 -BRDA:15122,1892,0,0 -BRDA:15122,1892,1,0 -BRDA:15122,1893,0,0 -BRDA:15122,1893,1,0 -BRDA:15123,1894,0,0 -BRDA:15123,1894,1,0 -BRDA:15123,1895,0,0 -BRDA:15123,1895,1,0 -BRDA:15138,1896,0,0 -BRDA:15138,1896,1,0 -BRDA:15158,1897,0,0 -BRDA:15158,1897,1,0 -BRDA:15159,1898,0,0 -BRDA:15159,1898,1,0 -BRDA:15169,1899,0,0 -BRDA:15169,1899,1,0 -BRDA:15170,1900,0,0 -BRDA:15170,1900,1,0 -BRDA:15193,1901,0,0 -BRDA:15193,1901,1,0 -BRDA:15207,1902,0,0 -BRDA:15207,1902,1,0 -BRDA:15218,1903,0,0 -BRDA:15218,1903,1,0 -BRDA:15230,1904,0,0 -BRDA:15230,1904,1,0 -BRDA:15233,1905,0,0 -BRDA:15233,1905,1,0 -BRDA:15258,1906,0,0 -BRDA:15258,1906,1,0 -BRDA:15259,1907,0,0 -BRDA:15259,1907,1,0 -BRDA:15259,1908,0,0 -BRDA:15259,1908,1,0 -BRDA:15268,1909,0,0 -BRDA:15268,1909,1,0 -BRDA:15281,1910,0,0 -BRDA:15281,1910,1,0 -BRDA:15285,1911,0,0 -BRDA:15285,1911,1,0 -BRDA:15313,1912,0,0 -BRDA:15313,1912,1,0 -BRDA:15327,1913,0,0 -BRDA:15327,1913,1,0 -BRDA:15354,1914,0,0 -BRDA:15354,1914,1,0 -BRDA:15366,1915,0,0 -BRDA:15366,1915,1,0 -BRDA:15378,1916,0,0 -BRDA:15378,1916,1,0 -BRDA:15391,1917,0,0 -BRDA:15391,1917,1,0 -BRDA:15402,1918,0,0 -BRDA:15402,1918,1,0 -BRDA:15402,1919,0,0 -BRDA:15402,1919,1,0 -BRDA:15402,1919,2,0 -BRDA:15402,1919,3,0 -BRDA:15402,1919,4,0 -BRDA:15402,1919,5,0 -BRDA:15402,1919,6,0 -BRDA:15402,1919,7,0 -BRDA:15402,1919,8,0 -BRDA:15402,1919,9,0 -BRDA:15402,1919,10,0 -BRDA:15402,1919,11,0 -BRDA:15402,1919,12,0 -BRDA:15402,1919,13,0 -BRDA:15402,1919,14,0 -BRDA:15409,1920,0,0 -BRDA:15409,1920,1,0 -BRDA:15409,1921,0,0 -BRDA:15409,1921,1,0 -BRDA:15409,1921,2,0 -BRDA:15409,1921,3,0 -BRDA:15409,1921,4,0 -BRDA:15409,1921,5,0 -BRDA:15409,1921,6,0 -BRDA:15409,1921,7,0 -BRDA:15409,1921,8,0 -BRDA:15409,1921,9,0 -BRDA:15409,1921,10,0 -BRDA:15409,1921,11,0 -BRDA:15409,1921,12,0 -BRDA:15409,1921,13,0 -BRDA:15409,1921,14,0 -BRDA:15443,1922,0,0 -BRDA:15443,1922,1,0 -BRDA:15444,1923,0,0 -BRDA:15444,1923,1,0 -BRDA:15448,1924,0,0 -BRDA:15448,1924,1,0 -BRDA:15486,1925,0,0 -BRDA:15486,1925,1,0 -BRDA:15486,1926,0,0 -BRDA:15486,1926,1,0 -BRDA:15526,1927,0,0 -BRDA:15526,1927,1,0 -BRDA:15526,1928,0,0 -BRDA:15526,1928,1,0 -BRDA:15545,1929,0,0 -BRDA:15545,1929,1,0 -BRDA:15564,1930,0,0 -BRDA:15564,1930,1,0 -BRDA:15572,1931,0,0 -BRDA:15572,1931,1,0 -BRDA:15576,1932,0,0 -BRDA:15576,1932,1,0 -BRDA:15579,1933,0,0 -BRDA:15579,1933,1,0 -BRDA:15622,1934,0,0 -BRDA:15622,1934,1,0 -BRDA:15623,1935,0,0 -BRDA:15623,1935,1,0 -BRDA:15640,1936,0,0 -BRDA:15640,1936,1,0 -BRDA:15641,1937,0,0 -BRDA:15641,1937,1,0 -BRDA:15643,1938,0,0 -BRDA:15643,1938,1,0 -BRDA:15643,1939,0,0 -BRDA:15643,1939,1,0 -BRDA:15647,1940,0,0 -BRDA:15647,1940,1,0 -BRDA:15647,1941,0,0 -BRDA:15647,1941,1,0 -BRDA:15648,1942,0,0 -BRDA:15648,1942,1,0 -BRDA:15654,1943,0,0 -BRDA:15654,1943,1,0 -BRDA:15672,1944,0,0 -BRDA:15672,1944,1,0 -BRDA:15675,1945,0,0 -BRDA:15675,1945,1,0 -BRDA:15679,1946,0,0 -BRDA:15679,1946,1,0 -BRDA:15682,1947,0,0 -BRDA:15682,1947,1,0 -BRDA:15683,1948,0,0 -BRDA:15683,1948,1,0 -BRDA:15706,1949,0,0 -BRDA:15706,1949,1,0 -BRDA:15707,1950,0,0 -BRDA:15707,1950,1,0 -BRDA:15730,1951,0,0 -BRDA:15730,1951,1,0 -BRDA:15730,1952,0,0 -BRDA:15730,1952,1,0 -BRDA:15730,1952,2,0 -BRDA:15731,1953,0,0 -BRDA:15731,1953,1,0 -BRDA:15747,1954,0,0 -BRDA:15747,1954,1,0 -BRDA:15751,1955,0,0 -BRDA:15751,1955,1,0 -BRDA:15755,1956,0,0 -BRDA:15755,1956,1,0 -BRDA:15790,1957,0,0 -BRDA:15790,1957,1,0 -BRDA:15790,1957,2,0 -BRDA:15790,1957,3,0 -BRDA:15790,1957,4,0 -BRDA:15790,1957,5,0 -BRDA:15790,1957,6,0 -BRDA:15790,1957,7,0 -BRDA:15805,1958,0,0 -BRDA:15805,1958,1,0 -BRDA:15830,1959,0,0 -BRDA:15830,1959,1,0 -BRDA:15830,1960,0,0 -BRDA:15830,1960,1,0 -BRDA:15830,1960,2,0 -BRDA:15835,1961,0,0 -BRDA:15835,1961,1,0 -BRDA:15840,1962,0,0 -BRDA:15840,1962,1,0 -BRDA:15840,1963,0,0 -BRDA:15840,1963,1,0 -BRDA:15840,1963,2,0 -BRDA:15856,1964,0,0 -BRDA:15856,1964,1,0 -BRDA:15862,1965,0,0 -BRDA:15862,1965,1,0 -BRDA:15862,1966,0,0 -BRDA:15862,1966,1,0 -BRDA:15879,1967,0,0 -BRDA:15879,1967,1,0 -BRDA:15884,1968,0,0 -BRDA:15884,1968,1,0 -BRDA:15887,1969,0,0 -BRDA:15887,1969,1,0 -BRDA:15887,1970,0,0 -BRDA:15887,1970,1,0 -BRDA:15887,1970,2,0 -BRDA:15891,1971,0,0 -BRDA:15891,1971,1,0 -BRDA:15896,1972,0,0 -BRDA:15896,1972,1,0 -BRDA:15898,1973,0,0 -BRDA:15898,1973,1,0 -BRDA:15898,1974,0,0 -BRDA:15898,1974,1,0 -BRDA:15898,1974,2,0 -BRDA:15898,1974,3,0 -BRDA:15898,1974,4,0 -BRDA:15904,1975,0,0 -BRDA:15904,1975,1,0 -BRDA:15904,1976,0,0 -BRDA:15904,1976,1,0 -BRDA:15913,1977,0,0 -BRDA:15913,1977,1,0 -BRDA:15913,1978,0,0 -BRDA:15913,1978,1,0 -BRDA:15913,1978,2,0 -BRDA:15917,1979,0,0 -BRDA:15917,1979,1,0 -BRDA:15952,1980,0,0 -BRDA:15952,1980,1,0 -BRDA:15962,1981,0,0 -BRDA:15962,1981,1,0 -BRDA:15966,1982,0,0 -BRDA:15966,1982,1,0 -BRDA:15969,1983,0,0 -BRDA:15969,1983,1,0 -BRDA:15973,1984,0,0 -BRDA:15973,1984,1,0 -BRDA:15973,1985,0,0 -BRDA:15973,1985,1,0 -BRDA:15980,1986,0,0 -BRDA:15980,1986,1,0 -BRDA:15981,1987,0,0 -BRDA:15981,1987,1,0 -BRDA:15984,1988,0,0 -BRDA:15984,1988,1,0 -BRDA:15986,1989,0,0 -BRDA:15986,1989,1,0 -BRDA:15986,1990,0,0 -BRDA:15986,1990,1,0 -BRDA:15989,1991,0,0 -BRDA:15989,1991,1,0 -BRDA:15989,1992,0,0 -BRDA:15989,1992,1,0 -BRDA:15992,1993,0,0 -BRDA:15992,1993,1,0 -BRDA:15992,1994,0,0 -BRDA:15992,1994,1,0 -BRDA:15992,1994,2,0 -BRDA:15993,1995,0,0 -BRDA:15993,1995,1,0 -BRDA:16025,1996,0,0 -BRDA:16025,1996,1,0 -BRDA:16025,1997,0,0 -BRDA:16025,1997,1,0 -BRDA:16028,1998,0,0 -BRDA:16028,1998,1,0 -BRDA:16031,1999,0,0 -BRDA:16031,1999,1,0 -BRDA:16032,2000,0,0 -BRDA:16032,2000,1,0 -BRDA:16035,2001,0,0 -BRDA:16035,2001,1,0 -BRDA:16035,2002,0,0 -BRDA:16035,2002,1,0 -BRDA:16077,2003,0,0 -BRDA:16077,2003,1,0 -BRDA:16080,2004,0,0 -BRDA:16080,2004,1,0 -BRDA:16081,2005,0,0 -BRDA:16081,2005,1,0 -BRDA:16084,2006,0,0 -BRDA:16084,2006,1,0 -BRDA:16111,2007,0,0 -BRDA:16111,2007,1,0 -BRDA:16111,2008,0,0 -BRDA:16111,2008,1,0 -BRDA:16111,2008,2,0 -BRDA:16119,2009,0,0 -BRDA:16119,2009,1,0 -BRDA:16133,2010,0,0 -BRDA:16133,2010,1,0 -BRDA:16133,2011,0,0 -BRDA:16133,2011,1,0 -BRDA:16133,2011,2,0 -BRDA:16138,2012,0,0 -BRDA:16138,2012,1,0 -BRDA:16144,2013,0,0 -BRDA:16144,2013,1,0 -BRDA:16144,2014,0,0 -BRDA:16144,2014,1,0 -BRDA:16158,2015,0,0 -BRDA:16158,2015,1,0 -BRDA:16158,2016,0,0 -BRDA:16158,2016,1,0 -BRDA:16185,2017,0,0 -BRDA:16185,2017,1,0 -BRDA:16186,2018,0,0 -BRDA:16186,2018,1,0 -BRDA:16187,2019,0,0 -BRDA:16187,2019,1,0 -BRDA:16188,2020,0,0 -BRDA:16188,2020,1,0 -BRDA:16190,2021,0,0 -BRDA:16190,2021,1,0 -BRDA:16191,2022,0,0 -BRDA:16191,2022,1,0 -BRDA:16193,2023,0,0 -BRDA:16193,2023,1,0 -BRDA:16202,2024,0,0 -BRDA:16202,2024,1,0 -BRDA:16220,2025,0,0 -BRDA:16220,2025,1,0 -BRDA:16221,2026,0,0 -BRDA:16221,2026,1,0 -BRDA:16241,2027,0,0 -BRDA:16241,2027,1,0 -BRDA:16241,2028,0,0 -BRDA:16241,2028,1,0 -BRDA:16255,2029,0,0 -BRDA:16255,2029,1,0 -BRDA:16258,2030,0,0 -BRDA:16258,2030,1,0 -BRDA:16292,2031,0,0 -BRDA:16292,2031,1,0 -BRDA:16292,2032,0,0 -BRDA:16292,2032,1,0 -BRDA:16295,2033,0,0 -BRDA:16295,2033,1,0 -BRDA:16296,2034,0,0 -BRDA:16296,2034,1,0 -BRDA:16300,2035,0,0 -BRDA:16300,2035,1,0 -BRDA:16301,2036,0,0 -BRDA:16301,2036,1,0 -BRDA:16302,2037,0,0 -BRDA:16302,2037,1,0 -BRDA:16304,2038,0,0 -BRDA:16304,2038,1,0 -BRDA:16310,2039,0,0 -BRDA:16310,2039,1,0 -BRDA:16317,2040,0,0 -BRDA:16317,2040,1,0 -BRDA:16325,2041,0,0 -BRDA:16325,2041,1,0 -BRDA:16326,2042,0,0 -BRDA:16326,2042,1,0 -BRDA:16329,2043,0,0 -BRDA:16329,2043,1,0 -BRDA:16329,2044,0,0 -BRDA:16329,2044,1,0 -BRDA:16332,2045,0,0 -BRDA:16332,2045,1,0 -BRDA:16332,2046,0,0 -BRDA:16332,2046,1,0 -BRDA:16334,2047,0,0 -BRDA:16334,2047,1,0 -BRDA:16334,2048,0,0 -BRDA:16334,2048,1,0 -BRDA:16336,2049,0,0 -BRDA:16336,2049,1,0 -BRDA:16336,2050,0,0 -BRDA:16336,2050,1,0 -BRDA:16336,2050,2,0 -BRDA:16341,2051,0,0 -BRDA:16341,2051,1,0 -BRDA:16358,2052,0,0 -BRDA:16358,2052,1,0 -BRDA:16358,2053,0,0 -BRDA:16358,2053,1,0 -BRDA:16358,2053,2,0 -BRDA:16380,2054,0,0 -BRDA:16380,2054,1,0 -BRDA:16380,2055,0,0 -BRDA:16380,2055,1,0 -BRDA:16399,2056,0,0 -BRDA:16399,2056,1,0 -BRDA:16399,2057,0,0 -BRDA:16399,2057,1,0 -BRDA:16420,2058,0,0 -BRDA:16420,2058,1,0 -BRDA:16420,2059,0,0 -BRDA:16420,2059,1,0 -BRDA:16420,2060,0,0 -BRDA:16420,2060,1,0 -BRDA:16425,2061,0,0 -BRDA:16425,2061,1,0 -BRDA:16425,2062,0,0 -BRDA:16425,2062,1,0 -BRDA:16430,2063,0,0 -BRDA:16430,2063,1,0 -BRDA:16440,2064,0,0 -BRDA:16440,2064,1,0 -BRDA:16441,2065,0,0 -BRDA:16441,2065,1,0 -BRDA:16445,2066,0,0 -BRDA:16445,2066,1,0 -BRDA:16446,2067,0,0 -BRDA:16446,2067,1,0 -BRDA:16453,2068,0,0 -BRDA:16453,2068,1,0 -BRDA:16454,2069,0,0 -BRDA:16454,2069,1,0 -BRDA:16455,2070,0,0 -BRDA:16455,2070,1,0 -BRDA:16455,2071,0,0 -BRDA:16455,2071,1,0 -BRDA:16455,2071,2,0 -BRDA:16463,2072,0,0 -BRDA:16463,2072,1,0 -BRDA:16464,2073,0,0 -BRDA:16464,2073,1,0 -BRDA:16494,2074,0,0 -BRDA:16494,2074,1,0 -BRDA:16494,2074,2,0 -BRDA:16494,2074,3,0 -BRDA:16494,2074,4,0 -BRDA:16494,2074,5,0 -BRDA:16494,2074,6,0 -BRDA:16494,2074,7,0 -BRDA:16494,2074,8,0 -BRDA:16494,2074,9,0 -BRDA:16494,2074,10,0 -BRDA:16496,2075,0,0 -BRDA:16496,2075,1,0 -BRDA:16496,2076,0,0 -BRDA:16496,2076,1,0 -BRDA:16504,2077,0,0 -BRDA:16504,2077,1,0 -BRDA:16504,2078,0,0 -BRDA:16504,2078,1,0 -BRDA:16518,2079,0,0 -BRDA:16518,2079,1,0 -BRDA:16532,2080,0,0 -BRDA:16532,2080,1,0 -BRDA:16534,2081,0,0 -BRDA:16534,2081,1,0 -BRDA:16534,2082,0,0 -BRDA:16534,2082,1,0 -BRDA:16539,2083,0,0 -BRDA:16539,2083,1,0 -BRDA:16551,2084,0,0 -BRDA:16551,2084,1,0 -BRDA:16578,2085,0,0 -BRDA:16578,2085,1,0 -BRDA:16578,2086,0,0 -BRDA:16578,2086,1,0 -BRDA:16584,2087,0,0 -BRDA:16584,2087,1,0 -BRDA:16584,2088,0,0 -BRDA:16584,2088,1,0 -BRDA:16590,2089,0,0 -BRDA:16590,2089,1,0 -BRDA:16590,2090,0,0 -BRDA:16590,2090,1,0 -BRDA:16603,2091,0,0 -BRDA:16603,2091,1,0 -BRDA:16604,2092,0,0 -BRDA:16604,2092,1,0 -BRDA:16609,2093,0,0 -BRDA:16609,2093,1,0 -BRDA:16609,2094,0,0 -BRDA:16609,2094,1,0 -BRDA:16610,2095,0,0 -BRDA:16610,2095,1,0 -BRDA:16616,2096,0,0 -BRDA:16616,2096,1,0 -BRDA:16618,2097,0,0 -BRDA:16618,2097,1,0 -BRDA:16618,2098,0,0 -BRDA:16618,2098,1,0 -BRDA:16623,2099,0,0 -BRDA:16623,2099,1,0 -BRDA:16623,2100,0,0 -BRDA:16623,2100,1,0 -BRDA:16623,2100,2,0 -BRDA:16623,2100,3,0 -BRDA:16625,2101,0,0 -BRDA:16625,2101,1,0 -BRDA:16625,2101,2,0 -BRDA:16625,2101,3,0 -BRDA:16676,2102,0,0 -BRDA:16676,2102,1,0 -BRDA:16690,2103,0,0 -BRDA:16690,2103,1,0 -BRDA:16695,2104,0,0 -BRDA:16695,2104,1,0 -BRDA:16695,2105,0,0 -BRDA:16695,2105,1,0 -BRDA:16710,2106,0,0 -BRDA:16710,2106,1,0 -BRDA:16726,2107,0,0 -BRDA:16726,2107,1,0 -BRDA:16727,2108,0,0 -BRDA:16727,2108,1,0 -BRDA:16728,2109,0,0 -BRDA:16728,2109,1,0 -BRDA:16741,2110,0,0 -BRDA:16741,2110,1,0 -BRDA:16742,2111,0,0 -BRDA:16742,2111,1,0 -BRDA:16776,2112,0,0 -BRDA:16776,2112,1,0 -BRDA:16796,2113,0,0 -BRDA:16796,2113,1,0 -BRDA:16797,2114,0,0 -BRDA:16797,2114,1,0 -BRDA:16813,2115,0,0 -BRDA:16813,2115,1,0 -BRDA:16814,2116,0,0 -BRDA:16814,2116,1,0 -BRDA:16830,2117,0,0 -BRDA:16830,2117,1,0 -BRDA:16849,2118,0,0 -BRDA:16849,2118,1,0 -BRDA:16849,2119,0,0 -BRDA:16849,2119,1,0 -BRDA:16849,2119,2,0 -BRDA:16849,2119,3,0 -BRDA:16849,2119,4,0 -BRDA:16849,2119,5,0 -BRDA:16849,2119,6,0 -BRDA:16849,2119,7,0 -BRDA:16849,2119,8,0 -BRDA:16849,2119,9,0 -BRDA:16856,2120,0,0 -BRDA:16856,2120,1,0 -BRDA:16857,2121,0,0 -BRDA:16857,2121,1,0 -BRDA:16859,2122,0,0 -BRDA:16859,2122,1,0 -BRDA:16860,2123,0,0 -BRDA:16860,2123,1,0 -BRDA:16860,2123,2,0 -BRDA:16860,2123,3,0 -BRDA:16860,2123,4,0 -BRDA:16890,2124,0,0 -BRDA:16890,2124,1,0 -BRDA:16890,2124,2,0 -BRDA:16890,2124,3,0 -BRDA:16909,2125,0,0 -BRDA:16909,2125,1,0 -BRDA:16930,2126,0,0 -BRDA:16930,2126,1,0 -BRDA:16930,2127,0,0 -BRDA:16930,2127,1,0 -BRDA:16935,2128,0,0 -BRDA:16935,2128,1,0 -BRDA:16935,2129,0,0 -BRDA:16935,2129,1,0 -BRDA:16938,2130,0,0 -BRDA:16938,2130,1,0 -BRDA:16939,2131,0,0 -BRDA:16939,2131,1,0 -BRDA:16939,2131,2,0 -BRDA:16939,2131,3,0 -BRDA:16939,2131,4,0 -BRDA:16955,2132,0,0 -BRDA:16955,2132,1,0 -BRDA:16955,2133,0,0 -BRDA:16955,2133,1,0 -BRDA:16955,2133,2,0 -BRDA:16970,2134,0,0 -BRDA:16970,2134,1,0 -BRDA:16970,2135,0,0 -BRDA:16970,2135,1,0 -BRDA:16990,2136,0,0 -BRDA:16990,2136,1,0 -BRDA:16990,2136,2,0 -BRDA:16990,2136,3,0 -BRDA:16990,2136,4,0 -BRDA:16990,2136,5,0 -BRDA:16990,2136,6,0 -BRDA:16990,2136,7,0 -BRDA:16990,2136,8,0 -BRDA:16990,2136,9,0 -BRDA:16990,2136,10,0 -BRDA:16990,2136,11,0 -BRDA:16990,2136,12,0 -BRDA:16990,2136,13,0 -BRDA:16990,2136,14,0 -BRDA:16990,2136,15,0 -BRDA:16990,2136,16,0 -BRDA:16990,2136,17,0 -BRDA:16990,2136,18,0 -BRDA:17034,2137,0,0 -BRDA:17034,2137,1,0 -BRDA:17038,2138,0,0 -BRDA:17038,2138,1,0 -BRDA:17039,2139,0,0 -BRDA:17039,2139,1,0 -BRDA:17051,2140,0,0 -BRDA:17051,2140,1,0 -BRDA:17051,2140,2,0 -BRDA:17052,2141,0,0 -BRDA:17052,2141,1,0 -BRDA:17052,2141,2,0 -BRDA:17064,2142,0,0 -BRDA:17064,2142,1,0 -BRDA:17065,2143,0,0 -BRDA:17065,2143,1,0 -BRDA:17065,2143,2,0 -BRDA:17065,2143,3,0 -BRDA:17065,2143,4,0 -BRDA:17065,2143,5,0 -BRDA:17081,2144,0,0 -BRDA:17081,2144,1,0 -BRDA:17085,2145,0,0 -BRDA:17085,2145,1,0 -BRDA:17085,2146,0,0 -BRDA:17085,2146,1,0 -BRDA:17086,2147,0,0 -BRDA:17086,2147,1,0 -BRDA:17087,2148,0,0 -BRDA:17087,2148,1,0 -BRDA:17103,2149,0,0 -BRDA:17103,2149,1,0 -BRDA:17107,2150,0,0 -BRDA:17107,2150,1,0 -BRDA:17107,2151,0,0 -BRDA:17107,2151,1,0 -BRDA:17107,2151,2,0 -BRDA:17107,2151,3,0 -BRDA:17107,2151,4,0 -BRDA:17111,2152,0,0 -BRDA:17111,2152,1,0 -BRDA:17111,2152,2,0 -BRDA:17111,2152,3,0 -BRDA:17124,2153,0,0 -BRDA:17124,2153,1,0 -BRDA:17124,2154,0,0 -BRDA:17124,2154,1,0 -BRDA:17124,2154,2,0 -BRDA:17124,2154,3,0 -BRDA:17141,2155,0,0 -BRDA:17141,2155,1,0 -BRDA:17141,2156,0,0 -BRDA:17141,2156,1,0 -BRDA:17144,2157,0,0 -BRDA:17144,2157,1,0 -BRDA:17148,2158,0,0 -BRDA:17148,2158,1,0 -BRDA:17159,2159,0,0 -BRDA:17159,2159,1,0 -BRDA:17169,2160,0,0 -BRDA:17169,2160,1,0 -BRDA:17179,2161,0,0 -BRDA:17179,2161,1,0 -BRDA:17180,2162,0,0 -BRDA:17180,2162,1,0 -BRDA:17180,2162,2,0 -BRDA:17194,2163,0,0 -BRDA:17194,2163,1,0 -BRDA:17208,2164,0,0 -BRDA:17208,2164,1,0 -BRDA:17211,2165,0,0 -BRDA:17211,2165,1,0 -BRDA:17211,2165,2,0 -BRDA:17226,2166,0,0 -BRDA:17226,2166,1,0 -BRDA:17259,2167,0,0 -BRDA:17259,2167,1,0 -BRDA:17259,2167,2,0 -BRDA:17259,2167,3,0 -BRDA:17259,2167,4,0 -BRDA:17259,2167,5,0 -BRDA:17259,2167,6,0 -BRDA:17259,2167,7,0 -BRDA:17264,2168,0,0 -BRDA:17264,2168,1,0 -BRDA:17264,2169,0,0 -BRDA:17264,2169,1,0 -BRDA:17268,2170,0,0 -BRDA:17268,2170,1,0 -BRDA:17271,2171,0,0 -BRDA:17271,2171,1,0 -BRDA:17275,2172,0,0 -BRDA:17275,2172,1,0 -BRDA:17277,2173,0,0 -BRDA:17277,2173,1,0 -BRDA:17278,2174,0,0 -BRDA:17278,2174,1,0 -BRDA:17282,2175,0,0 -BRDA:17282,2175,1,0 -BRDA:17284,2176,0,0 -BRDA:17284,2176,1,0 -BRDA:17285,2177,0,0 -BRDA:17285,2177,1,0 -BRDA:17289,2178,0,0 -BRDA:17289,2178,1,0 -BRDA:17293,2179,0,0 -BRDA:17293,2179,1,0 -BRDA:17294,2180,0,0 -BRDA:17294,2180,1,0 -BRDA:17297,2181,0,0 -BRDA:17297,2181,1,0 -BRDA:17318,2182,0,0 -BRDA:17318,2182,1,0 -BRDA:17347,2183,0,0 -BRDA:17347,2183,1,0 -BRDA:17376,2184,0,0 -BRDA:17376,2184,1,0 -BRDA:17396,2185,0,0 -BRDA:17396,2185,1,0 -BRDA:17425,2186,0,0 -BRDA:17425,2186,1,0 -BRDA:17472,2187,0,0 -BRDA:17472,2187,1,0 -BRDA:17473,2188,0,0 -BRDA:17473,2188,1,0 -BRDA:17496,2189,0,0 -BRDA:17496,2189,1,0 -BRDA:17517,2190,0,0 -BRDA:17517,2190,1,0 -BRDA:17521,2191,0,0 -BRDA:17521,2191,1,0 -BRDA:17521,2192,0,0 -BRDA:17521,2192,1,0 -BRDA:17534,2193,0,0 -BRDA:17534,2193,1,0 -BRDA:17534,2194,0,0 -BRDA:17534,2194,1,0 -BRDA:17538,2195,0,0 -BRDA:17538,2195,1,0 -BRDA:17538,2196,0,0 -BRDA:17538,2196,1,0 -BRDA:17549,2197,0,0 -BRDA:17549,2197,1,0 -BRDA:17571,2198,0,0 -BRDA:17571,2198,1,0 -BRDA:17571,2199,0,0 -BRDA:17571,2199,1,0 -BRDA:17586,2200,0,0 -BRDA:17586,2200,1,0 -BRDA:17620,2201,0,0 -BRDA:17620,2201,1,0 -BRDA:17620,2202,0,0 -BRDA:17620,2202,1,0 -BRDA:17625,2203,0,0 -BRDA:17625,2203,1,0 -BRDA:17626,2204,0,0 -BRDA:17626,2204,1,0 -BRDA:17626,2205,0,0 -BRDA:17626,2205,1,0 -BRDA:17656,2206,0,0 -BRDA:17656,2206,1,0 -BRDA:17662,2207,0,0 -BRDA:17662,2207,1,0 -BRDA:17693,2208,0,0 -BRDA:17693,2208,1,0 -BRDA:17703,2209,0,0 -BRDA:17703,2209,1,0 -BRDA:17728,2210,0,0 -BRDA:17728,2210,1,0 -BRDA:17761,2211,0,0 -BRDA:17761,2211,1,0 -BRDA:17764,2212,0,0 -BRDA:17764,2212,1,0 -BRDA:17794,2213,0,0 -BRDA:17794,2213,1,0 -BRDA:17797,2214,0,0 -BRDA:17797,2214,1,0 -BRDA:17828,2215,0,0 -BRDA:17828,2215,1,0 -BRDA:17829,2216,0,0 -BRDA:17829,2216,1,0 -BRDA:17832,2217,0,0 -BRDA:17832,2217,1,0 -BRDA:17832,2218,0,0 -BRDA:17832,2218,1,0 -BRDA:17833,2219,0,0 -BRDA:17833,2219,1,0 -BRDA:17862,2220,0,0 -BRDA:17862,2220,1,0 -BRDA:17863,2221,0,0 -BRDA:17863,2221,1,0 -BRDA:17866,2222,0,0 -BRDA:17866,2222,1,0 -BRDA:17866,2223,0,0 -BRDA:17866,2223,1,0 -BRDA:17868,2224,0,0 -BRDA:17868,2224,1,0 -BRDA:17907,2225,0,0 -BRDA:17907,2225,1,0 -BRDA:17907,2226,0,0 -BRDA:17907,2226,1,0 -BRDA:17948,2227,0,0 -BRDA:17948,2227,1,0 -BRDA:17948,2228,0,0 -BRDA:17948,2228,1,0 -BRDA:17983,2229,0,0 -BRDA:17983,2229,1,0 -BRDA:17984,2230,0,0 -BRDA:17984,2230,1,0 -BRDA:17987,2231,0,0 -BRDA:17987,2231,1,0 -BRDA:17987,2232,0,0 -BRDA:17987,2232,1,0 -BRDA:17987,2232,2,0 -BRDA:18030,2233,0,0 -BRDA:18030,2233,1,0 -BRDA:18031,2234,0,0 -BRDA:18031,2234,1,0 -BRDA:18034,2235,0,0 -BRDA:18034,2235,1,0 -BRDA:18035,2236,0,0 -BRDA:18035,2236,1,0 -BRDA:18077,2237,0,0 -BRDA:18077,2237,1,0 -BRDA:18078,2238,0,0 -BRDA:18078,2238,1,0 -BRDA:18082,2239,0,0 -BRDA:18082,2239,1,0 -BRDA:18084,2240,0,0 -BRDA:18084,2240,1,0 -BRDA:18106,2241,0,0 -BRDA:18106,2241,1,0 -BRDA:18107,2242,0,0 -BRDA:18107,2242,1,0 -BRDA:18125,2243,0,0 -BRDA:18125,2243,1,0 -BRDA:18126,2244,0,0 -BRDA:18126,2244,1,0 -BRDA:18150,2245,0,0 -BRDA:18150,2245,1,0 -BRDA:18151,2246,0,0 -BRDA:18151,2246,1,0 -BRDA:18154,2247,0,0 -BRDA:18154,2247,1,0 -BRDA:18175,2248,0,0 -BRDA:18175,2248,1,0 -BRDA:18204,2249,0,0 -BRDA:18204,2249,1,0 -BRDA:18204,2250,0,0 -BRDA:18204,2250,1,0 -BRDA:18231,2251,0,0 -BRDA:18231,2251,1,0 -BRDA:18232,2252,0,0 -BRDA:18232,2252,1,0 -BRDA:18235,2253,0,0 -BRDA:18235,2253,1,0 -BRDA:18236,2254,0,0 -BRDA:18236,2254,1,0 -BRDA:18257,2255,0,0 -BRDA:18257,2255,1,0 -BRDA:18258,2256,0,0 -BRDA:18258,2256,1,0 -BRDA:18280,2257,0,0 -BRDA:18280,2257,1,0 -BRDA:18280,2258,0,0 -BRDA:18280,2258,1,0 -BRDA:18312,2259,0,0 -BRDA:18312,2259,1,0 -BRDA:18317,2260,0,0 -BRDA:18317,2260,1,0 -BRDA:18317,2261,0,0 -BRDA:18317,2261,1,0 -BRDA:18347,2262,0,0 -BRDA:18347,2262,1,0 -BRDA:18348,2263,0,0 -BRDA:18348,2263,1,0 -BRDA:18351,2264,0,0 -BRDA:18351,2264,1,0 -BRDA:18351,2265,0,0 -BRDA:18351,2265,1,0 -BRDA:18372,2266,0,0 -BRDA:18372,2266,1,0 -BRDA:18390,2267,0,0 -BRDA:18390,2267,1,0 -BRDA:18391,2268,0,0 -BRDA:18391,2268,1,0 -BRDA:18416,2269,0,0 -BRDA:18416,2269,1,0 -BRDA:18417,2270,0,0 -BRDA:18417,2270,1,0 -BRDA:18421,2271,0,0 -BRDA:18421,2271,1,0 -BRDA:18423,2272,0,0 -BRDA:18423,2272,1,0 -BRDA:18425,2273,0,0 -BRDA:18425,2273,1,0 -BRDA:18452,2274,0,0 -BRDA:18452,2274,1,0 -BRDA:18452,2275,0,0 -BRDA:18452,2275,1,0 -BRDA:18501,2276,0,0 -BRDA:18501,2276,1,0 -BRDA:18501,2277,0,0 -BRDA:18501,2277,1,0 -BRDA:18501,2277,2,0 -BRDA:18501,2277,3,0 -BRDA:18530,2278,0,0 -BRDA:18530,2278,1,0 -BRDA:18530,2279,0,0 -BRDA:18530,2279,1,0 -BRDA:18530,2279,2,0 -BRDA:18530,2279,3,0 -BRDA:18559,2280,0,0 -BRDA:18559,2280,1,0 -BRDA:18559,2281,0,0 -BRDA:18559,2281,1,0 -BRDA:18559,2281,2,0 -BRDA:18559,2281,3,0 -BRDA:18589,2282,0,0 -BRDA:18589,2282,1,0 -BRDA:18593,2283,0,0 -BRDA:18593,2283,1,0 -BRDA:18629,2284,0,0 -BRDA:18629,2284,1,0 -BRDA:18629,2285,0,0 -BRDA:18629,2285,1,0 -BRDA:18639,2286,0,0 -BRDA:18639,2286,1,0 -BRDA:18672,2287,0,0 -BRDA:18672,2287,1,0 -BRDA:18692,2288,0,0 -BRDA:18692,2288,1,0 -BRDA:18693,2289,0,0 -BRDA:18693,2289,1,0 -BRDA:18696,2290,0,0 -BRDA:18696,2290,1,0 -BRDA:18696,2291,0,0 -BRDA:18696,2291,1,0 -BRDA:18696,2291,2,0 -BRDA:18701,2292,0,0 -BRDA:18701,2292,1,0 -BRDA:18702,2293,0,0 -BRDA:18702,2293,1,0 -BRDA:18774,2294,0,0 -BRDA:18774,2294,1,0 -BRDA:18775,2295,0,0 -BRDA:18775,2295,1,0 -BRDA:18777,2296,0,0 -BRDA:18777,2296,1,0 -BRDA:18777,2297,0,0 -BRDA:18777,2297,1,0 -BRDA:18852,2298,0,0 -BRDA:18852,2298,1,0 -BRDA:18853,2299,0,0 -BRDA:18853,2299,1,0 -BRDA:18855,2300,0,0 -BRDA:18855,2300,1,0 -BRDA:18878,2301,0,0 -BRDA:18878,2301,1,0 -BRDA:18878,2302,0,0 -BRDA:18878,2302,1,0 -BRDA:18900,2303,0,0 -BRDA:18900,2303,1,0 -BRDA:18900,2304,0,0 -BRDA:18900,2304,1,0 -BRDA:18920,2305,0,0 -BRDA:18920,2305,1,0 -BRDA:18921,2306,0,0 -BRDA:18921,2306,1,0 -BRDA:18950,2307,0,0 -BRDA:18950,2307,1,0 -BRDA:18950,2308,0,0 -BRDA:18950,2308,1,0 -BRDA:18953,2309,0,0 -BRDA:18953,2309,1,0 -BRDA:18953,2310,0,0 -BRDA:18953,2310,1,0 -BRDA:18954,2311,0,0 -BRDA:18954,2311,1,0 -BRDA:18983,2312,0,0 -BRDA:18983,2312,1,0 -BRDA:18984,2313,0,0 -BRDA:18984,2313,1,0 -BRDA:18987,2314,0,0 -BRDA:18987,2314,1,0 -BRDA:18987,2315,0,0 -BRDA:18987,2315,1,0 -BRDA:18989,2316,0,0 -BRDA:18989,2316,1,0 -BRDA:19028,2317,0,0 -BRDA:19028,2317,1,0 -BRDA:19028,2318,0,0 -BRDA:19028,2318,1,0 -BRDA:19069,2319,0,0 -BRDA:19069,2319,1,0 -BRDA:19069,2320,0,0 -BRDA:19069,2320,1,0 -BRDA:19119,2321,0,0 -BRDA:19119,2321,1,0 -BRDA:19148,2322,0,0 -BRDA:19148,2322,1,0 -BRDA:19171,2323,0,0 -BRDA:19171,2323,1,0 -BRDA:19171,2324,0,0 -BRDA:19171,2324,1,0 -BRDA:19198,2325,0,0 -BRDA:19198,2325,1,0 -BRDA:19198,2326,0,0 -BRDA:19198,2326,1,0 -BRDA:19222,2327,0,0 -BRDA:19222,2327,1,0 -BRDA:19223,2328,0,0 -BRDA:19223,2328,1,0 -BRDA:19223,2329,0,0 -BRDA:19223,2329,1,0 -BRDA:19246,2330,0,0 -BRDA:19246,2330,1,0 -BRDA:19246,2331,0,0 -BRDA:19246,2331,1,0 -BRDA:19251,2332,0,0 -BRDA:19251,2332,1,0 -BRDA:19283,2333,0,0 -BRDA:19283,2333,1,0 -BRDA:19283,2334,0,0 -BRDA:19283,2334,1,0 -BRDA:19287,2335,0,0 -BRDA:19287,2335,1,0 -BRDA:19316,2336,0,0 -BRDA:19316,2336,1,0 -BRDA:19368,2337,0,0 -BRDA:19368,2337,1,0 -BRDA:19397,2338,0,0 -BRDA:19397,2338,1,0 -BRDA:19436,2339,0,0 -BRDA:19436,2339,1,0 -BRDA:19436,2340,0,0 -BRDA:19436,2340,1,0 -BRDA:19455,2341,0,0 -BRDA:19455,2341,1,0 -BRDA:19455,2342,0,0 -BRDA:19455,2342,1,0 -BRDA:19480,2343,0,0 -BRDA:19480,2343,1,0 -BRDA:19482,2344,0,0 -BRDA:19482,2344,1,0 -BRDA:19596,2345,0,0 -BRDA:19596,2345,1,0 -BRDA:19600,2346,0,0 -BRDA:19600,2346,1,0 -BRDA:19600,2347,0,0 -BRDA:19600,2347,1,0 -BRDA:19600,2347,2,0 -BRDA:19600,2347,3,0 -BRDA:19604,2348,0,0 -BRDA:19604,2348,1,0 -BRDA:19611,2349,0,0 -BRDA:19611,2349,1,0 -BRDA:19611,2350,0,0 -BRDA:19611,2350,1,0 -BRDA:19702,2351,0,0 -BRDA:19702,2351,1,0 -BRDA:19706,2352,0,0 -BRDA:19706,2352,1,0 -BRDA:19765,2353,0,0 -BRDA:19765,2353,1,0 -BRDA:19799,2354,0,0 -BRDA:19799,2354,1,0 -BRDA:19801,2355,0,0 -BRDA:19801,2355,1,0 -BRDA:19858,2356,0,0 -BRDA:19858,2356,1,0 -BRDA:19907,2357,0,0 -BRDA:19907,2357,1,0 -BRDA:19908,2358,0,0 -BRDA:19908,2358,1,0 -BRDA:19908,2359,0,0 -BRDA:19908,2359,1,0 -BRDA:19952,2360,0,0 -BRDA:19952,2360,1,0 -BRDA:20086,2361,0,0 -BRDA:20086,2361,1,0 -BRDA:20121,2362,0,0 -BRDA:20121,2362,1,0 -BRDA:20146,2363,0,0 -BRDA:20146,2363,1,0 -BRDA:20174,2364,0,0 -BRDA:20174,2364,1,0 -BRDA:20212,2365,0,0 -BRDA:20212,2365,1,0 -BRDA:20213,2366,0,0 -BRDA:20213,2366,1,0 -BRDA:20213,2367,0,0 -BRDA:20213,2367,1,0 -BRDA:20216,2368,0,0 -BRDA:20216,2368,1,0 -BRDA:20219,2369,0,0 -BRDA:20219,2369,1,0 -BRDA:20220,2370,0,0 -BRDA:20220,2370,1,0 -BRDA:20221,2371,0,0 -BRDA:20221,2371,1,0 -BRDA:20250,2372,0,0 -BRDA:20250,2372,1,0 -BRDA:20253,2373,0,0 -BRDA:20253,2373,1,0 -BRDA:20333,2374,0,0 -BRDA:20333,2374,1,0 -BRDA:20367,2375,0,0 -BRDA:20367,2375,1,0 -BRDA:20370,2376,0,0 -BRDA:20370,2376,1,0 -BRDA:20371,2377,0,0 -BRDA:20371,2377,1,0 -BRDA:20373,2378,0,0 -BRDA:20373,2378,1,0 -BRDA:20374,2379,0,0 -BRDA:20374,2379,1,0 -BRDA:20375,2380,0,0 -BRDA:20375,2380,1,0 -BRDA:20417,2381,0,0 -BRDA:20417,2381,1,0 -BRDA:20458,2382,0,0 -BRDA:20458,2382,1,0 -BRDA:20487,2383,0,0 -BRDA:20487,2383,1,0 -BRDA:20528,2384,0,0 -BRDA:20528,2384,1,0 -BRDA:20547,2385,0,0 -BRDA:20547,2385,1,0 -BRDA:20572,2386,0,0 -BRDA:20572,2386,1,0 -BRDA:20572,2387,0,0 -BRDA:20572,2387,1,0 -BRDA:20577,2388,0,0 -BRDA:20577,2388,1,0 -BRDA:20597,2389,0,0 -BRDA:20597,2389,1,0 -BRDA:20623,2390,0,0 -BRDA:20623,2390,1,0 -BRDA:20626,2391,0,0 -BRDA:20626,2391,1,0 -BRDA:20627,2392,0,0 -BRDA:20627,2392,1,0 -BRDA:20630,2393,0,0 -BRDA:20630,2393,1,0 -BRDA:20630,2394,0,0 -BRDA:20630,2394,1,0 -BRDA:20673,2395,0,0 -BRDA:20673,2395,1,0 -BRDA:20674,2396,0,0 -BRDA:20674,2396,1,0 -BRDA:20674,2397,0,0 -BRDA:20674,2397,1,0 -BRDA:20710,2398,0,0 -BRDA:20710,2398,1,0 -BRDA:20714,2399,0,0 -BRDA:20714,2399,1,0 -BRDA:20714,2400,0,0 -BRDA:20714,2400,1,0 -BRDA:20716,2401,0,0 -BRDA:20716,2401,1,0 -BRDA:20716,2402,0,0 -BRDA:20716,2402,1,0 -BRDA:20740,2403,0,0 -BRDA:20740,2403,1,0 -BRDA:20771,2404,0,0 -BRDA:20771,2404,1,0 -BRDA:20776,2405,0,0 -BRDA:20776,2405,1,0 -BRDA:20800,2406,0,0 -BRDA:20800,2406,1,0 -BRDA:20801,2407,0,0 -BRDA:20801,2407,1,0 -BRDA:20801,2408,0,0 -BRDA:20801,2408,1,0 -BRDA:20824,2409,0,0 -BRDA:20824,2409,1,0 -BRDA:20829,2410,0,0 -BRDA:20829,2410,1,0 -BRDA:20832,2411,0,0 -BRDA:20832,2411,1,0 -BRDA:20876,2412,0,0 -BRDA:20876,2412,1,0 -BRDA:20930,2413,0,0 -BRDA:20930,2413,1,0 -BRDA:20979,2414,0,0 -BRDA:20979,2414,1,0 -BRDA:21024,2415,0,0 -BRDA:21024,2415,1,0 -BRDA:21096,2416,0,0 -BRDA:21096,2416,1,0 -BRDA:21099,2417,0,0 -BRDA:21099,2417,1,0 -BRDA:21100,2418,0,0 -BRDA:21100,2418,1,0 -BRDA:21103,2419,0,0 -BRDA:21103,2419,1,0 -BRDA:21103,2420,0,0 -BRDA:21103,2420,1,0 -BRDA:21104,2421,0,0 -BRDA:21104,2421,1,0 -BRDA:21123,2422,0,0 -BRDA:21123,2422,1,0 -BRDA:21131,2423,0,0 -BRDA:21131,2423,1,0 -BRDA:21141,2424,0,0 -BRDA:21141,2424,1,0 -BRDA:21141,2424,2,0 -BRDA:21141,2424,3,0 -BRDA:21141,2424,4,0 -BRDA:21147,2425,0,0 -BRDA:21147,2425,1,0 -BRDA:21159,2426,0,0 -BRDA:21159,2426,1,0 -BRDA:21159,2427,0,0 -BRDA:21159,2427,1,0 -BRDA:21167,2428,0,0 -BRDA:21167,2428,1,0 -BRDA:21175,2429,0,0 -BRDA:21175,2429,1,0 -BRDA:21186,2430,0,0 -BRDA:21186,2430,1,0 -BRDA:21187,2431,0,0 -BRDA:21187,2431,1,0 -BRDA:21190,2432,0,0 -BRDA:21190,2432,1,0 -BRDA:21196,2433,0,0 -BRDA:21196,2433,1,0 -BRDA:21248,2434,0,0 -BRDA:21248,2434,1,0 -BRDA:21318,2435,0,0 -BRDA:21318,2435,1,0 -BRDA:21318,2436,0,0 -BRDA:21318,2436,1,0 -BRDA:21318,2436,2,0 -BRDA:21323,2437,0,0 -BRDA:21323,2437,1,0 -BRDA:21326,2438,0,0 -BRDA:21326,2438,1,0 -BRDA:21330,2439,0,0 -BRDA:21330,2439,1,0 -BRDA:21333,2440,0,0 -BRDA:21333,2440,1,0 -BRDA:21361,2441,0,0 -BRDA:21361,2441,1,0 -BRDA:21366,2442,0,0 -BRDA:21366,2442,1,0 -BRDA:21366,2442,2,0 -BRDA:21366,2442,3,0 -BRDA:21430,2443,0,0 -BRDA:21430,2443,1,0 -BRDA:21430,2444,0,0 -BRDA:21430,2444,1,0 -BRDA:21573,2445,0,0 -BRDA:21573,2445,1,0 -BRDA:21576,2446,0,0 -BRDA:21576,2446,1,0 -BRDA:21615,2447,0,0 -BRDA:21615,2447,1,0 -BRDA:21618,2448,0,0 -BRDA:21618,2448,1,0 -BRDA:21623,2449,0,0 -BRDA:21623,2449,1,0 -BRDA:21678,2450,0,0 -BRDA:21678,2450,1,0 -BRDA:21681,2451,0,0 -BRDA:21681,2451,1,0 -BRDA:21682,2452,0,0 -BRDA:21682,2452,1,0 -BRDA:21683,2453,0,0 -BRDA:21683,2453,1,0 -BRDA:21773,2454,0,0 -BRDA:21773,2454,1,0 -BRDA:21777,2455,0,0 -BRDA:21777,2455,1,0 -BRDA:21842,2456,0,0 -BRDA:21842,2456,1,0 -BRDA:21897,2457,0,0 -BRDA:21897,2457,1,0 -BRDA:21926,2458,0,0 -BRDA:21926,2458,1,0 -BRDA:21962,2459,0,0 -BRDA:21962,2459,1,0 -BRDA:21962,2459,2,0 -BRDA:22035,2460,0,0 -BRDA:22035,2460,1,0 -BRDA:22036,2461,0,0 -BRDA:22036,2461,1,0 -BRDA:22036,2461,2,0 -BRDA:22082,2462,0,0 -BRDA:22082,2462,1,0 -BRDA:22110,2463,0,0 -BRDA:22110,2463,1,0 -BRDA:22110,2463,2,0 -BRDA:22139,2464,0,0 -BRDA:22139,2464,1,0 -BRDA:22160,2465,0,0 -BRDA:22160,2465,1,0 -BRDA:22160,2465,2,0 -BRDA:22160,2465,3,0 -BRDA:22181,2466,0,0 -BRDA:22181,2466,1,0 -BRDA:22200,2467,0,0 -BRDA:22200,2467,1,0 -BRDA:22220,2468,0,0 -BRDA:22220,2468,1,0 -BRDA:22220,2468,2,0 -BRDA:22257,2469,0,0 -BRDA:22257,2469,1,0 -BRDA:22260,2470,0,0 -BRDA:22260,2470,1,0 -BRDA:22260,2471,0,0 -BRDA:22260,2471,1,0 -BRDA:22260,2471,2,0 -BRDA:22260,2471,3,0 -BRDA:22260,2471,4,0 -BRDA:22260,2471,5,0 -BRDA:22260,2471,6,0 -BRDA:22266,2472,0,0 -BRDA:22266,2472,1,0 -BRDA:22266,2473,0,0 -BRDA:22266,2473,1,0 -BRDA:22269,2474,0,0 -BRDA:22269,2474,1,0 -BRDA:22273,2475,0,0 -BRDA:22273,2475,1,0 -BRDA:22345,2476,0,0 -BRDA:22345,2476,1,0 -BRDA:22346,2477,0,0 -BRDA:22346,2477,1,0 -BRDA:22347,2478,0,0 -BRDA:22347,2478,1,0 -BRDA:22369,2479,0,0 -BRDA:22369,2479,1,0 -BRDA:22373,2480,0,0 -BRDA:22373,2480,1,0 -BRDA:22373,2480,2,0 -BRDA:22373,2480,3,0 -BRDA:22373,2480,4,0 -BRDA:22404,2481,0,0 -BRDA:22404,2481,1,0 -BRDA:22425,2482,0,0 -BRDA:22425,2482,1,0 -BRDA:22431,2483,0,0 -BRDA:22431,2483,1,0 -BRDA:22431,2483,2,0 -BRDA:22431,2483,3,0 -BRDA:22461,2484,0,0 -BRDA:22461,2484,1,0 -BRDA:22491,2485,0,0 -BRDA:22491,2485,1,0 -BRDA:22491,2485,2,0 -BRDA:22491,2485,3,0 -BRDA:22522,2486,0,0 -BRDA:22522,2486,1,0 -BRDA:22522,2486,2,0 -BRDA:22550,2487,0,0 -BRDA:22550,2487,1,0 -BRDA:22570,2488,0,0 -BRDA:22570,2488,1,0 -BRDA:22601,2489,0,0 -BRDA:22601,2489,1,0 -BRDA:22637,2490,0,0 -BRDA:22637,2490,1,0 -BRDA:22673,2491,0,0 -BRDA:22673,2491,1,0 -BRDA:22703,2492,0,0 -BRDA:22703,2492,1,0 -BRDA:22781,2493,0,0 -BRDA:22781,2493,1,0 -BRDA:22781,2493,2,0 -BRDA:22814,2494,0,0 -BRDA:22814,2494,1,0 -BRDA:22814,2495,0,0 -BRDA:22814,2495,1,0 -BRDA:22818,2496,0,0 -BRDA:22818,2496,1,0 -BRDA:22821,2497,0,0 -BRDA:22821,2497,1,0 -BRDA:22822,2498,0,0 -BRDA:22822,2498,1,0 -BRDA:22822,2498,2,0 -BRDA:22843,2499,0,0 -BRDA:22843,2499,1,0 -BRDA:22873,2500,0,0 -BRDA:22873,2500,1,0 -BRDA:22873,2500,2,0 -BRDA:22893,2501,0,0 -BRDA:22893,2501,1,0 -BRDA:22913,2502,0,0 -BRDA:22913,2502,1,0 -BRDA:22913,2502,2,0 -BRDA:22913,2502,3,0 -BRDA:22935,2503,0,0 -BRDA:22935,2503,1,0 -BRDA:22935,2503,2,0 -BRDA:22956,2504,0,0 -BRDA:22956,2504,1,0 -BRDA:22997,2505,0,0 -BRDA:22997,2505,1,0 -BRDA:23018,2506,0,0 -BRDA:23018,2506,1,0 -BRDA:23097,2507,0,0 -BRDA:23097,2507,1,0 -BRDA:23100,2508,0,0 -BRDA:23100,2508,1,0 -BRDA:23101,2509,0,0 -BRDA:23101,2509,1,0 -BRDA:23103,2510,0,0 -BRDA:23103,2510,1,0 -BRDA:23103,2511,0,0 -BRDA:23103,2511,1,0 -BRDA:23107,2512,0,0 -BRDA:23107,2512,1,0 -BRDA:23107,2513,0,0 -BRDA:23107,2513,1,0 -BRDA:23136,2514,0,0 -BRDA:23136,2514,1,0 -BRDA:23137,2515,0,0 -BRDA:23137,2515,1,0 -BRDA:23140,2516,0,0 -BRDA:23140,2516,1,0 -BRDA:23140,2517,0,0 -BRDA:23140,2517,1,0 -BRDA:23141,2518,0,0 -BRDA:23141,2518,1,0 -BRDA:23144,2519,0,0 -BRDA:23144,2519,1,0 -BRDA:23177,2520,0,0 -BRDA:23177,2520,1,0 -BRDA:23177,2521,0,0 -BRDA:23177,2521,1,0 -BRDA:23208,2522,0,0 -BRDA:23208,2522,1,0 -BRDA:23235,2523,0,0 -BRDA:23235,2523,1,0 -BRDA:23238,2524,0,0 -BRDA:23238,2524,1,0 -BRDA:23241,2525,0,0 -BRDA:23241,2525,1,0 -BRDA:23242,2526,0,0 -BRDA:23242,2526,1,0 -BRDA:23243,2527,0,0 -BRDA:23243,2527,1,0 -BRDA:23245,2528,0,0 -BRDA:23245,2528,1,0 -BRDA:23246,2529,0,0 -BRDA:23246,2529,1,0 -BRDA:23250,2530,0,0 -BRDA:23250,2530,1,0 -BRDA:23250,2531,0,0 -BRDA:23250,2531,1,0 -BRDA:23251,2532,0,0 -BRDA:23251,2532,1,0 -BRDA:23252,2533,0,0 -BRDA:23252,2533,1,0 -BRDA:23308,2534,0,0 -BRDA:23308,2534,1,0 -BRDA:23310,2535,0,0 -BRDA:23310,2535,1,0 -BRDA:23335,2536,0,0 -BRDA:23335,2536,1,0 -BRDA:23373,2537,0,0 -BRDA:23373,2537,1,0 -BRDA:23373,2538,0,0 -BRDA:23373,2538,1,0 -BRDA:23378,2539,0,0 -BRDA:23378,2539,1,0 -BRDA:23539,2540,0,0 -BRDA:23539,2540,1,0 -BRDA:23699,2541,0,0 -BRDA:23699,2541,1,0 -BRDA:23731,2542,0,0 -BRDA:23731,2542,1,0 -BRDA:23765,2543,0,0 -BRDA:23765,2543,1,0 -BRDA:23795,2544,0,0 -BRDA:23795,2544,1,0 -BRDA:23822,2545,0,0 -BRDA:23822,2545,1,0 -BRDA:23849,2546,0,0 -BRDA:23849,2546,1,0 -BRDA:23878,2547,0,0 -BRDA:23878,2547,1,0 -BRDA:23879,2548,0,0 -BRDA:23879,2548,1,0 -BRDA:23910,2549,0,0 -BRDA:23910,2549,1,0 -BRDA:23940,2550,0,0 -BRDA:23940,2550,1,0 -BRDA:23992,2551,0,0 -BRDA:23992,2551,1,0 -BRDA:24048,2552,0,0 -BRDA:24048,2552,1,0 -BRDA:24075,2553,0,0 -BRDA:24075,2553,1,0 -BRDA:24239,2554,0,0 -BRDA:24239,2554,1,0 -BRDA:24245,2555,0,0 -BRDA:24245,2555,1,0 -BRDA:24249,2556,0,0 -BRDA:24249,2556,1,0 -BRDA:24301,2557,0,0 -BRDA:24301,2557,1,0 -BRDA:24323,2558,0,0 -BRDA:24323,2558,1,0 -BRDA:24371,2559,0,0 -BRDA:24371,2559,1,0 -BRDA:24376,2560,0,0 -BRDA:24376,2560,1,0 -BRDA:24377,2561,0,0 -BRDA:24377,2561,1,0 -BRDA:24381,2562,0,0 -BRDA:24381,2562,1,0 -BRDA:24415,2563,0,0 -BRDA:24415,2563,1,0 -BRDA:24443,2564,0,0 -BRDA:24443,2564,1,0 -BRDA:24444,2565,0,0 -BRDA:24444,2565,1,0 -BRDA:24531,2566,0,0 -BRDA:24531,2566,1,0 -BRDA:24531,2566,2,0 -BRDA:24534,2567,0,0 -BRDA:24534,2567,1,0 -BRDA:24535,2568,0,0 -BRDA:24535,2568,1,0 -BRDA:24536,2569,0,0 -BRDA:24536,2569,1,0 -BRDA:24537,2570,0,0 -BRDA:24537,2570,1,0 -BRDA:24539,2571,0,0 -BRDA:24539,2571,1,0 -BRDA:24540,2572,0,0 -BRDA:24540,2572,1,0 -BRDA:24546,2573,0,0 -BRDA:24546,2573,1,0 -BRDA:24580,2574,0,0 -BRDA:24580,2574,1,0 -BRDA:24611,2575,0,0 -BRDA:24611,2575,1,0 -BRDA:24639,2576,0,0 -BRDA:24639,2576,1,0 -BRDA:24640,2577,0,0 -BRDA:24640,2577,1,0 -BRDA:24670,2578,0,0 -BRDA:24670,2578,1,0 -BRDA:24698,2579,0,0 -BRDA:24698,2579,1,0 -BRDA:24723,2580,0,0 -BRDA:24723,2580,1,0 -BRDA:24727,2581,0,0 -BRDA:24727,2581,1,0 -BRDA:24729,2582,0,0 -BRDA:24729,2582,1,0 -BRDA:24731,2583,0,0 -BRDA:24731,2583,1,0 -BRDA:24733,2584,0,0 -BRDA:24733,2584,1,0 -BRDA:24778,2585,0,0 -BRDA:24778,2585,1,0 -BRDA:24820,2586,0,0 -BRDA:24820,2586,1,0 -BRDA:24820,2587,0,0 -BRDA:24820,2587,1,0 -BRDA:24820,2587,2,0 -BRDA:24823,2588,0,0 -BRDA:24823,2588,1,0 -BRDA:24824,2589,0,0 -BRDA:24824,2589,1,0 -BRDA:24828,2590,0,0 -BRDA:24828,2590,1,0 -BRDA:24833,2591,0,0 -BRDA:24833,2591,1,0 -BRDA:24833,2592,0,0 -BRDA:24833,2592,1,0 -BRDA:24839,2593,0,0 -BRDA:24839,2593,1,0 -BRDA:24846,2594,0,0 -BRDA:24846,2594,1,0 -BRDA:24851,2595,0,0 -BRDA:24851,2595,1,0 -BRDA:24851,2596,0,0 -BRDA:24851,2596,1,0 -BRDA:24851,2596,2,0 -BRDA:24882,2597,0,0 -BRDA:24882,2597,1,0 -BRDA:24924,2598,0,0 -BRDA:24924,2598,1,0 -BRDA:24955,2599,0,0 -BRDA:24955,2599,1,0 -BRDA:24961,2600,0,0 -BRDA:24961,2600,1,0 -BRDA:24994,2601,0,0 -BRDA:24994,2601,1,0 -BRDA:24994,2602,0,0 -BRDA:24994,2602,1,0 -BRDA:25016,2603,0,0 -BRDA:25016,2603,1,0 -BRDA:25016,2604,0,0 -BRDA:25016,2604,1,0 -BRDA:25043,2605,0,0 -BRDA:25043,2605,1,0 -BRDA:25067,2606,0,0 -BRDA:25067,2606,1,0 -BRDA:25116,2607,0,0 -BRDA:25116,2607,1,0 -BRDA:25117,2608,0,0 -BRDA:25117,2608,1,0 -BRDA:25117,2609,0,0 -BRDA:25117,2609,1,0 -BRDA:25155,2610,0,0 -BRDA:25155,2610,1,0 -BRDA:25156,2611,0,0 -BRDA:25156,2611,1,0 -BRDA:25156,2612,0,0 -BRDA:25156,2612,1,0 -BRDA:25188,2613,0,0 -BRDA:25188,2613,1,0 -BRDA:25189,2614,0,0 -BRDA:25189,2614,1,0 -BRDA:25189,2615,0,0 -BRDA:25189,2615,1,0 -BRDA:25219,2616,0,0 -BRDA:25219,2616,1,0 -BRDA:25219,2617,0,0 -BRDA:25219,2617,1,0 -BRDA:25221,2618,0,0 -BRDA:25221,2618,1,0 -BRDA:25224,2619,0,0 -BRDA:25224,2619,1,0 -BRDA:25250,2620,0,0 -BRDA:25250,2620,1,0 -BRDA:25250,2621,0,0 -BRDA:25250,2621,1,0 -BRDA:25281,2622,0,0 -BRDA:25281,2622,1,0 -BRDA:25306,2623,0,0 -BRDA:25306,2623,1,0 -BRDA:25329,2624,0,0 -BRDA:25329,2624,1,0 -BRDA:25329,2625,0,0 -BRDA:25329,2625,1,0 -BRDA:25329,2625,2,0 -BRDA:25332,2626,0,0 -BRDA:25332,2626,1,0 -BRDA:25333,2627,0,0 -BRDA:25333,2627,1,0 -BRDA:25337,2628,0,0 -BRDA:25337,2628,1,0 -BRDA:25337,2629,0,0 -BRDA:25337,2629,1,0 -BRDA:25337,2629,2,0 -BRDA:25337,2629,3,0 -BRDA:25342,2630,0,0 -BRDA:25342,2630,1,0 -BRDA:25342,2631,0,0 -BRDA:25342,2631,1,0 -BRDA:25371,2632,0,0 -BRDA:25371,2632,1,0 -BRDA:25399,2633,0,0 -BRDA:25399,2633,1,0 -BRDA:25517,2634,0,0 -BRDA:25517,2634,1,0 -BRDA:25517,2635,0,0 -BRDA:25517,2635,1,0 -BRDA:25530,2636,0,0 -BRDA:25530,2636,1,0 -BRDA:25535,2637,0,0 -BRDA:25535,2637,1,0 -BRDA:25537,2638,0,0 -BRDA:25537,2638,1,0 -BRDA:25538,2639,0,0 -BRDA:25538,2639,1,0 -BRDA:25543,2640,0,0 -BRDA:25543,2640,1,0 -BRDA:25549,2641,0,0 -BRDA:25549,2641,1,0 -BRDA:25555,2642,0,0 -BRDA:25555,2642,1,0 -BRDA:25559,2643,0,0 -BRDA:25559,2643,1,0 -BRDA:25563,2644,0,0 -BRDA:25563,2644,1,0 -BRDA:25578,2645,0,0 -BRDA:25578,2645,1,0 -BRDA:25582,2646,0,0 -BRDA:25582,2646,1,0 -BRDA:25587,2647,0,0 -BRDA:25587,2647,1,0 -BRDA:25588,2648,0,0 -BRDA:25588,2648,1,0 -BRDA:25593,2649,0,0 -BRDA:25593,2649,1,0 -BRDA:25597,2650,0,0 -BRDA:25597,2650,1,0 -BRDA:25613,2651,0,0 -BRDA:25613,2651,1,0 -BRDA:25693,2652,0,0 -BRDA:25693,2652,1,0 -BRDA:25693,2653,0,0 -BRDA:25693,2653,1,0 -BRDA:25693,2653,2,0 -BRDA:25696,2654,0,0 -BRDA:25696,2654,1,0 -BRDA:25696,2655,0,0 -BRDA:25696,2655,1,0 -BRDA:25728,2656,0,0 -BRDA:25728,2656,1,0 -BRDA:25728,2657,0,0 -BRDA:25728,2657,1,0 -BRDA:25728,2657,2,0 -BRDA:25731,2658,0,0 -BRDA:25731,2658,1,0 -BRDA:25731,2659,0,0 -BRDA:25731,2659,1,0 -BRDA:25761,2660,0,0 -BRDA:25761,2660,1,0 -BRDA:25761,2661,0,0 -BRDA:25761,2661,1,0 -BRDA:25761,2661,2,0 -BRDA:25764,2662,0,0 -BRDA:25764,2662,1,0 -BRDA:25764,2663,0,0 -BRDA:25764,2663,1,0 -BRDA:25814,2664,0,0 -BRDA:25814,2664,1,0 -BRDA:25815,2665,0,0 -BRDA:25815,2665,1,0 -BRDA:25816,2666,0,0 -BRDA:25816,2666,1,0 -BRDA:25817,2667,0,0 -BRDA:25817,2667,1,0 -BRDA:25822,2668,0,0 -BRDA:25822,2668,1,0 -BRDA:25826,2669,0,0 -BRDA:25826,2669,1,0 -BRDA:25830,2670,0,0 -BRDA:25830,2670,1,0 -BRDA:25833,2671,0,0 -BRDA:25833,2671,1,0 -BRDA:25837,2672,0,0 -BRDA:25837,2672,1,0 -BRDA:25840,2673,0,0 -BRDA:25840,2673,1,0 -BRDA:25843,2674,0,0 -BRDA:25843,2674,1,0 -BRDA:25844,2675,0,0 -BRDA:25844,2675,1,0 -BRDA:25848,2676,0,0 -BRDA:25848,2676,1,0 -BRDA:25855,2677,0,0 -BRDA:25855,2677,1,0 -BRDA:25857,2678,0,0 -BRDA:25857,2678,1,0 -BRDA:25859,2679,0,0 -BRDA:25859,2679,1,0 -BRDA:25887,2680,0,0 -BRDA:25887,2680,1,0 -BRDA:25887,2681,0,0 -BRDA:25887,2681,1,0 -BRDA:25913,2682,0,0 -BRDA:25913,2682,1,0 -BRDA:25956,2683,0,0 -BRDA:25956,2683,1,0 -BRDA:25958,2684,0,0 -BRDA:25958,2684,1,0 -BRDA:25959,2685,0,0 -BRDA:25959,2685,1,0 -BRDA:25961,2686,0,0 -BRDA:25961,2686,1,0 -BRDA:25992,2687,0,0 -BRDA:25992,2687,1,0 -BRDA:26060,2688,0,0 -BRDA:26060,2688,1,0 -BRDA:26063,2689,0,0 -BRDA:26063,2689,1,0 -BRDA:26064,2690,0,0 -BRDA:26064,2690,1,0 -BRDA:26074,2691,0,0 -BRDA:26074,2691,1,0 -BRDA:26155,2692,0,0 -BRDA:26155,2692,1,0 -BRDA:26155,2693,0,0 -BRDA:26155,2693,1,0 -BRDA:26268,2694,0,0 -BRDA:26268,2694,1,0 -BRDA:26432,2695,0,0 -BRDA:26432,2695,1,0 -BRDA:26432,2696,0,0 -BRDA:26432,2696,1,0 -BRDA:26433,2697,0,0 -BRDA:26433,2697,1,0 -BRDA:26433,2697,2,0 -BRDA:26439,2698,0,0 -BRDA:26439,2698,1,0 -BRDA:26439,2699,0,0 -BRDA:26439,2699,1,0 -BRDA:26445,2700,0,0 -BRDA:26445,2700,1,0 -BRDA:26448,2701,0,0 -BRDA:26448,2701,1,0 -BRDA:26448,2702,0,0 -BRDA:26448,2702,1,0 -BRDA:26478,2703,0,0 -BRDA:26478,2703,1,0 -BRDA:26622,2704,0,0 -BRDA:26622,2704,1,0 -BRDA:26648,2705,0,0 -BRDA:26648,2705,1,0 -BRDA:26849,2706,0,0 -BRDA:26849,2706,1,0 -BRDA:26849,2707,0,0 -BRDA:26849,2707,1,0 -BRDA:26883,2708,0,0 -BRDA:26883,2708,1,0 -BRDA:26886,2709,0,0 -BRDA:26886,2709,1,0 -BRDA:27016,2710,0,0 -BRDA:27016,2710,1,0 -BRDA:27016,2711,0,0 -BRDA:27016,2711,1,0 -BRDA:27045,2712,0,0 -BRDA:27045,2712,1,0 -BRDA:27045,2713,0,0 -BRDA:27045,2713,1,0 -BRDA:27114,2714,0,0 -BRDA:27114,2714,1,0 -BRDA:27114,2715,0,0 -BRDA:27114,2715,1,0 -BRDA:27143,2716,0,0 -BRDA:27143,2716,1,0 -BRDA:27143,2717,0,0 -BRDA:27143,2717,1,0 -BRDA:27224,2718,0,0 -BRDA:27224,2718,1,0 -BRDA:27224,2719,0,0 -BRDA:27224,2719,1,0 -BRDA:27253,2720,0,0 -BRDA:27253,2720,1,0 -BRDA:27253,2721,0,0 -BRDA:27253,2721,1,0 -BRDA:27581,2722,0,0 -BRDA:27581,2722,1,0 -BRDA:27607,2723,0,0 -BRDA:27607,2723,1,0 -BRDA:27609,2724,0,0 -BRDA:27609,2724,1,0 -BRDA:27609,2725,0,0 -BRDA:27609,2725,1,0 -BRDA:27613,2726,0,0 -BRDA:27613,2726,1,0 -BRDA:27618,2727,0,0 -BRDA:27618,2727,1,0 -BRDA:27632,2728,0,0 -BRDA:27632,2728,1,0 -BRDA:27640,2729,0,0 -BRDA:27640,2729,1,0 -BRDA:27647,2730,0,0 -BRDA:27647,2730,1,0 -BRDA:27656,2731,0,0 -BRDA:27656,2731,1,0 -BRDA:27659,2732,0,0 -BRDA:27659,2732,1,0 -BRDA:27676,2733,0,0 -BRDA:27676,2733,1,0 -BRDA:27692,2734,0,0 -BRDA:27692,2734,1,0 -BRDA:27692,2735,0,0 -BRDA:27692,2735,1,0 -BRDA:27692,2735,2,0 -BRDA:27695,2736,0,0 -BRDA:27695,2736,1,0 -BRDA:27697,2737,0,0 -BRDA:27697,2737,1,0 -BRDA:27700,2738,0,0 -BRDA:27700,2738,1,0 -BRDA:27702,2739,0,0 -BRDA:27702,2739,1,0 -BRDA:27719,2740,0,0 -BRDA:27719,2740,1,0 -BRDA:27719,2741,0,0 -BRDA:27719,2741,1,0 -BRDA:27720,2742,0,0 -BRDA:27720,2742,1,0 -BRDA:27722,2743,0,0 -BRDA:27722,2743,1,0 -BRDA:27727,2744,0,0 -BRDA:27727,2744,1,0 -BRDA:27730,2745,0,0 -BRDA:27730,2745,1,0 -BRDA:27734,2746,0,0 -BRDA:27734,2746,1,0 -BRDA:27734,2747,0,0 -BRDA:27734,2747,1,0 -BRDA:27737,2748,0,0 -BRDA:27737,2748,1,0 -BRDA:27737,2749,0,0 -BRDA:27737,2749,1,0 -BRDA:27737,2749,2,0 -BRDA:27737,2749,3,0 -BRDA:27743,2750,0,0 -BRDA:27743,2750,1,0 -BRDA:27744,2751,0,0 -BRDA:27744,2751,1,0 -BRDA:27746,2752,0,0 -BRDA:27746,2752,1,0 -BRDA:27746,2753,0,0 -BRDA:27746,2753,1,0 -BRDA:27747,2754,0,0 -BRDA:27747,2754,1,0 -BRDA:27752,2755,0,0 -BRDA:27752,2755,1,0 -BRDA:27752,2756,0,0 -BRDA:27752,2756,1,0 -BRDA:27756,2757,0,0 -BRDA:27756,2757,1,0 -BRDA:27756,2758,0,0 -BRDA:27756,2758,1,0 -BRDA:27763,2759,0,0 -BRDA:27763,2759,1,0 -BRDA:27768,2760,0,0 -BRDA:27768,2760,1,0 -BRDA:27768,2761,0,0 -BRDA:27768,2761,1,0 -BRDA:27770,2762,0,0 -BRDA:27770,2762,1,0 -BRDA:27773,2763,0,0 -BRDA:27773,2763,1,0 -BRDA:27781,2764,0,0 -BRDA:27781,2764,1,0 -BRDA:27783,2765,0,0 -BRDA:27783,2765,1,0 -BRDA:27811,2766,0,0 -BRDA:27811,2766,1,0 -BRDA:27823,2767,0,0 -BRDA:27823,2767,1,0 -BRDA:27823,2768,0,0 -BRDA:27823,2768,1,0 -BRDA:27823,2768,2,0 -BRDA:27837,2769,0,0 -BRDA:27837,2769,1,0 -BRDA:27849,2770,0,0 -BRDA:27849,2770,1,0 -BRDA:27849,2771,0,0 -BRDA:27849,2771,1,0 -BRDA:27849,2772,0,0 -BRDA:27849,2772,1,0 -BRDA:27901,2773,0,0 -BRDA:27901,2773,1,0 -BRDA:27901,2774,0,0 -BRDA:27901,2774,1,0 -BRDA:27901,2774,2,0 -BRDA:27906,2775,0,0 -BRDA:27906,2775,1,0 -BRDA:27909,2776,0,0 -BRDA:27909,2776,1,0 -BRDA:27913,2777,0,0 -BRDA:27913,2777,1,0 -BRDA:27916,2778,0,0 -BRDA:27916,2778,1,0 -BRDA:27957,2779,0,0 -BRDA:27957,2779,1,0 -BRDA:27987,2780,0,0 -BRDA:27987,2780,1,0 -BRDA:27998,2781,0,0 -BRDA:27998,2781,1,0 -BRDA:28002,2782,0,0 -BRDA:28002,2782,1,0 -BRDA:28002,2783,0,0 -BRDA:28002,2783,1,0 -BRDA:28002,2783,2,0 -BRDA:28002,2783,3,0 -BRDA:28002,2783,4,0 -BRF:6057 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/dist/csvtojson.min.js -FN:2,a -FN:2,e -FN:2,(anonymous_2) -FN:2,(anonymous_3) -FN:2,(anonymous_4) -FN:2,(anonymous_5) -FN:2,d -FN:2,(anonymous_7) -FN:2,(anonymous_8) -FN:2,(anonymous_9) -FN:2,(anonymous_10) -FN:2,(anonymous_11) -FN:2,(anonymous_12) -FN:2,e -FN:2,(anonymous_14) -FN:2,f -FN:2,(anonymous_16) -FN:2,(anonymous_17) -FN:2,g -FN:2,h -FN:2,(anonymous_20) -FN:2,(anonymous_21) -FN:2,(anonymous_22) -FN:2,(anonymous_23) -FN:2,(anonymous_24) -FN:2,(anonymous_25) -FN:2,(anonymous_26) -FN:2,(anonymous_27) -FN:2,(anonymous_28) -FN:2,(anonymous_29) -FN:2,(anonymous_30) -FN:2,(anonymous_31) -FN:2,(anonymous_32) -FN:2,(anonymous_33) -FN:2,(anonymous_34) -FN:2,(anonymous_35) -FN:2,(anonymous_36) -FN:2,(anonymous_37) -FN:2,(anonymous_38) -FN:2,(anonymous_39) -FN:2,(anonymous_40) -FN:2,(anonymous_41) -FN:2,(anonymous_42) -FN:2,(anonymous_43) -FN:2,(anonymous_44) -FN:2,(anonymous_45) -FN:2,(anonymous_46) -FN:2,(anonymous_47) -FN:2,(anonymous_48) -FN:2,(anonymous_49) -FN:2,(anonymous_50) -FN:2,(anonymous_51) -FN:2,(anonymous_52) -FN:2,(anonymous_53) -FN:2,(anonymous_54) -FN:2,(anonymous_55) -FN:2,(anonymous_56) -FN:2,(anonymous_57) -FN:2,(anonymous_58) -FN:2,(anonymous_59) -FN:2,c -FN:2,(anonymous_61) -FN:2,(anonymous_62) -FN:2,(anonymous_63) -FN:2,(anonymous_64) -FN:2,(anonymous_65) -FN:2,(anonymous_66) -FN:2,(anonymous_67) -FN:2,(anonymous_68) -FN:2,d -FN:2,(anonymous_70) -FN:2,(anonymous_71) -FN:2,(anonymous_72) -FN:2,(anonymous_73) -FN:2,(anonymous_74) -FN:2,(anonymous_75) -FN:2,(anonymous_76) -FN:2,(anonymous_77) -FN:2,(anonymous_78) -FN:2,(anonymous_79) -FN:2,(anonymous_80) -FN:2,(anonymous_81) -FN:2,d -FN:2,(anonymous_83) -FN:2,(anonymous_84) -FN:2,(anonymous_85) -FN:2,(anonymous_86) -FN:2,d -FN:2,(anonymous_88) -FN:2,d -FN:2,e -FN:2,f -FN:2,g -FN:2,h -FN:2,i -FN:2,j -FN:2,k -FN:2,l -FN:2,m -FN:2,n -FN:2,o -FN:2,p -FN:2,q -FN:2,(anonymous_103) -FN:2,(anonymous_104) -FN:2,(anonymous_105) -FN:2,d -FN:2,(anonymous_107) -FN:2,(anonymous_108) -FN:2,(anonymous_109) -FN:2,(anonymous_110) -FN:2,(anonymous_111) -FN:2,(anonymous_112) -FN:2,(anonymous_113) -FN:2,(anonymous_114) -FN:2,(anonymous_115) -FN:2,(anonymous_116) -FN:2,d -FN:2,e -FN:2,c -FN:2,(anonymous_120) -FN:2,(anonymous_121) -FN:2,f -FN:2,g -FN:2,(anonymous_124) -FN:2,(anonymous_125) -FN:2,(anonymous_126) -FN:2,d -FN:2,e -FN:2,f -FN:2,(anonymous_130) -FN:2,(anonymous_131) -FN:2,(anonymous_132) -FN:2,e -FN:2,a -FN:2,b -FN:2,d -FN:2,(anonymous_137) -FN:2,e -FN:2,(anonymous_139) -FN:2,g -FN:2,(anonymous_141) -FN:2,(anonymous_142) -FN:2,f -FN:2,(anonymous_144) -FN:2,(anonymous_145) -FN:2,(anonymous_146) -FN:2,(anonymous_147) -FN:2,(anonymous_148) -FN:2,(anonymous_149) -FN:2,(anonymous_150) -FN:2,(anonymous_151) -FN:2,(anonymous_152) -FN:2,(anonymous_153) -FN:2,(anonymous_154) -FN:2,d -FN:2,(anonymous_156) -FN:2,(anonymous_157) -FN:2,(anonymous_158) -FN:2,e -FN:2,f -FN:2,(anonymous_161) -FN:2,(anonymous_162) -FN:2,(anonymous_163) -FN:2,d -FN:2,(anonymous_165) -FN:2,(anonymous_166) -FN:2,(anonymous_167) -FN:2,d -FN:2,d -FN:2,(anonymous_170) -FN:2,(anonymous_171) -FN:2,(anonymous_172) -FN:2,(anonymous_173) -FN:2,(anonymous_174) -FN:2,(anonymous_175) -FN:2,(anonymous_176) -FN:2,(anonymous_177) -FN:2,d -FN:2,a -FN:2,(anonymous_180) -FN:2,e -FN:2,f -FN:2,g -FN:2,h -FN:2,i -FN:2,j -FN:2,k -FN:2,l -FN:2,m -FN:2,n -FN:2,o -FN:2,p -FN:2,q -FN:2,r -FN:2,s -FN:2,t -FN:2,u -FN:2,v -FN:2,w -FN:2,x -FN:2,y -FN:2,z -FN:2,A -FN:2,B -FN:2,C -FN:2,D -FN:2,E -FN:2,F -FN:2,G -FN:2,H -FN:2,I -FN:2,J -FN:2,K -FN:2,L -FN:2,M -FN:2,N -FN:2,O -FN:2,P -FN:2,Q -FN:2,R -FN:2,S -FN:2,T -FN:2,U -FN:2,V -FN:2,(anonymous_225) -FN:3,(anonymous_226) -FN:3,(anonymous_227) -FN:3,(anonymous_228) -FN:3,(anonymous_229) -FN:3,(anonymous_230) -FN:3,(anonymous_231) -FN:3,(anonymous_232) -FN:3,(anonymous_233) -FN:3,c -FN:3,(anonymous_235) -FN:3,(anonymous_236) -FN:3,(anonymous_237) -FN:3,(anonymous_238) -FN:3,(anonymous_239) -FN:3,(anonymous_240) -FN:3,(anonymous_241) -FN:3,(anonymous_242) -FN:3,(anonymous_243) -FN:3,(anonymous_244) -FN:3,(anonymous_245) -FN:3,(anonymous_246) -FN:3,(anonymous_247) -FN:3,(anonymous_248) -FN:3,(anonymous_249) -FN:3,(anonymous_250) -FN:3,(anonymous_251) -FN:3,(anonymous_252) -FN:3,(anonymous_253) -FN:3,(anonymous_254) -FN:3,(anonymous_255) -FN:3,(anonymous_256) -FN:3,(anonymous_257) -FN:3,(anonymous_258) -FN:3,(anonymous_259) -FN:3,(anonymous_260) -FN:3,(anonymous_261) -FN:3,(anonymous_262) -FN:3,(anonymous_263) -FN:3,(anonymous_264) -FN:3,(anonymous_265) -FN:3,(anonymous_266) -FN:3,(anonymous_267) -FN:3,(anonymous_268) -FN:3,(anonymous_269) -FN:3,(anonymous_270) -FN:3,(anonymous_271) -FN:3,(anonymous_272) -FN:3,(anonymous_273) -FN:3,(anonymous_274) -FN:3,(anonymous_275) -FN:3,(anonymous_276) -FN:3,(anonymous_277) -FN:3,(anonymous_278) -FN:3,(anonymous_279) -FN:3,(anonymous_280) -FN:3,(anonymous_281) -FN:3,b -FN:3,c -FN:3,c -FN:3,e -FN:3,b -FN:3,c -FN:3,(anonymous_288) -FN:3,(anonymous_289) -FN:3,(anonymous_290) -FN:3,(anonymous_291) -FN:3,(anonymous_292) -FN:3,(anonymous_293) -FN:3,d -FN:3,e -FN:3,f -FN:3,g -FN:3,h -FN:3,(anonymous_299) -FN:3,(anonymous_300) -FN:3,(anonymous_301) -FN:3,(anonymous_302) -FN:3,c -FN:3,(anonymous_304) -FN:3,(anonymous_305) -FN:3,(anonymous_306) -FN:3,(anonymous_307) -FN:3,(anonymous_308) -FN:3,(anonymous_309) -FN:3,(anonymous_310) -FN:3,(anonymous_311) -FN:3,(anonymous_312) -FN:3,(anonymous_313) -FN:3,(anonymous_314) -FN:3,(anonymous_315) -FN:3,(anonymous_316) -FN:3,(anonymous_317) -FN:3,(anonymous_318) -FN:3,(anonymous_319) -FN:3,(anonymous_320) -FN:3,(anonymous_321) -FN:3,(anonymous_322) -FN:3,(anonymous_323) -FN:3,(anonymous_324) -FN:3,(anonymous_325) -FN:3,(anonymous_326) -FN:3,(anonymous_327) -FN:3,(anonymous_328) -FN:3,(anonymous_329) -FN:3,(anonymous_330) -FN:3,d -FN:3,e -FN:3,f -FN:3,g -FN:3,(anonymous_335) -FN:3,(anonymous_336) -FN:3,(anonymous_337) -FN:3,(anonymous_338) -FN:3,(anonymous_339) -FN:3,(anonymous_340) -FN:3,(anonymous_341) -FN:3,(anonymous_342) -FN:3,(anonymous_343) -FN:3,e -FN:3,f -FN:3,g -FN:3,h -FN:3,i -FN:3,(anonymous_349) -FN:3,j -FN:3,k -FN:3,l -FN:3,m -FN:3,n -FN:3,o -FN:3,(anonymous_356) -FN:3,p -FN:3,(anonymous_358) -FN:3,(anonymous_359) -FN:3,(anonymous_360) -FN:3,d -FN:3,(anonymous_362) -FN:3,(anonymous_363) -FN:3,(anonymous_364) -FN:3,d -FN:3,(anonymous_366) -FN:3,(anonymous_367) -FN:3,(anonymous_368) -FN:3,(anonymous_369) -FN:3,(anonymous_370) -FN:3,(anonymous_371) -FN:3,(anonymous_372) -FN:3,(anonymous_373) -FN:3,(anonymous_374) -FN:3,d -FN:3,e -FN:3,f -FN:3,(anonymous_378) -FN:3,(anonymous_379) -FN:3,d -FN:3,(anonymous_381) -FN:3,(anonymous_382) -FN:3,(anonymous_383) -FN:3,d -FN:3,e -FN:3,f -FN:3,g -FN:3,h -FN:3,i -FN:3,j -FN:3,k -FN:3,l -FN:3,m -FN:3,n -FN:3,o -FN:3,p -FN:3,(anonymous_397) -FN:3,q -FN:3,r -FN:3,s -FN:3,t -FN:3,u -FN:3,v -FN:3,w -FN:3,x -FN:3,y -FN:3,(anonymous_407) -FN:3,(anonymous_408) -FN:3,(anonymous_409) -FN:3,(anonymous_410) -FN:3,(anonymous_411) -FN:3,(anonymous_412) -FN:3,(anonymous_413) -FN:3,(anonymous_414) -FN:3,(anonymous_415) -FN:3,(anonymous_416) -FN:3,d -FN:3,e -FN:3,f -FN:3,g -FN:3,h -FN:3,i -FN:3,j -FN:3,k -FN:4,(anonymous_425) -FN:4,(anonymous_426) -FN:4,(anonymous_427) -FN:4,(anonymous_428) -FN:4,(anonymous_429) -FN:4,(anonymous_430) -FN:4,(anonymous_431) -FN:4,(anonymous_432) -FN:4,(anonymous_433) -FN:4,(anonymous_434) -FN:4,(anonymous_435) -FN:4,(anonymous_436) -FN:4,d -FN:4,(anonymous_438) -FN:4,e -FN:4,f -FN:4,(anonymous_441) -FN:4,(anonymous_442) -FN:4,g -FN:4,(anonymous_444) -FN:4,(anonymous_445) -FN:4,(anonymous_446) -FN:4,(anonymous_447) -FN:4,(anonymous_448) -FN:4,d -FN:4,e -FN:4,f -FN:4,(anonymous_452) -FN:4,g -FN:4,h -FN:4,i -FN:4,j -FN:4,k -FN:4,l -FN:4,m -FN:4,n -FN:4,o -FN:4,p -FN:4,q -FN:4,r -FN:4,(anonymous_465) -FN:4,s -FN:4,t -FN:4,u -FN:4,v -FN:4,(anonymous_470) -FN:4,(anonymous_471) -FN:4,(anonymous_472) -FN:4,(anonymous_473) -FN:4,(anonymous_474) -FN:4,(anonymous_475) -FN:4,(anonymous_476) -FN:4,(anonymous_477) -FN:4,(anonymous_478) -FN:4,(anonymous_479) -FN:4,(anonymous_480) -FN:4,(anonymous_481) -FN:4,(anonymous_482) -FN:4,b -FN:4,d -FN:4,e -FN:4,f -FN:4,g -FN:4,h -FN:4,i -FN:4,j -FN:4,k -FN:4,l -FN:4,m -FN:4,n -FN:4,o -FN:4,p -FN:4,q -FN:4,(anonymous_498) -FN:4,(anonymous_499) -FN:4,c -FN:4,(anonymous_501) -FN:4,(anonymous_502) -FN:4,(anonymous_503) -FN:4,c -FN:4,c -FN:4,d -FN:4,(anonymous_507) -FN:4,(anonymous_508) -FN:4,(anonymous_509) -FN:4,(anonymous_510) -FN:4,(anonymous_511) -FN:4,(anonymous_512) -FN:4,d -FN:4,(anonymous_514) -FN:4,c -FN:4,d -FN:4,f -FN:4,g -FN:4,h -FN:4,i -FN:4,(anonymous_521) -FN:4,(anonymous_522) -FN:4,(anonymous_523) -FN:4,(anonymous_524) -FN:4,(anonymous_525) -FN:4,(anonymous_526) -FN:4,b -FN:4,d -FN:4,(anonymous_529) -FN:4,(anonymous_530) -FN:4,f -FN:4,g -FN:4,(anonymous_533) -FN:4,(anonymous_534) -FN:4,(anonymous_535) -FN:4,(anonymous_536) -FN:4,(anonymous_537) -FN:4,(anonymous_538) -FN:4,(anonymous_539) -FN:4,(anonymous_540) -FN:4,(anonymous_541) -FN:4,(anonymous_542) -FN:4,(anonymous_543) -FN:4,(anonymous_544) -FN:4,(anonymous_545) -FN:4,(anonymous_546) -FN:4,(anonymous_547) -FN:4,(anonymous_548) -FN:4,(anonymous_549) -FN:4,(anonymous_550) -FN:4,(anonymous_551) -FN:4,(anonymous_552) -FN:4,(anonymous_553) -FN:4,(anonymous_554) -FN:4,(anonymous_555) -FN:4,(anonymous_556) -FN:4,(anonymous_557) -FN:4,(anonymous_558) -FN:4,(anonymous_559) -FN:4,(anonymous_560) -FN:4,(anonymous_561) -FN:4,h -FN:4,(anonymous_563) -FN:4,(anonymous_564) -FN:4,(anonymous_565) -FN:4,(anonymous_566) -FN:4,(anonymous_567) -FN:4,(anonymous_568) -FN:4,(anonymous_569) -FN:4,(anonymous_570) -FN:4,(anonymous_571) -FN:4,(anonymous_572) -FN:4,(anonymous_573) -FN:4,(anonymous_574) -FN:4,(anonymous_575) -FN:4,(anonymous_576) -FN:4,(anonymous_577) -FN:4,(anonymous_578) -FN:4,(anonymous_579) -FN:4,(anonymous_580) -FN:4,(anonymous_581) -FN:4,(anonymous_582) -FN:4,(anonymous_583) -FN:4,(anonymous_584) -FN:4,(anonymous_585) -FN:4,(anonymous_586) -FN:4,(anonymous_587) -FN:4,d -FN:4,e -FN:4,f -FN:4,g -FN:4,(anonymous_592) -FN:4,(anonymous_593) -FN:4,(anonymous_594) -FN:4,(anonymous_595) -FN:4,(anonymous_596) -FN:4,(anonymous_597) -FN:4,d -FN:4,e -FN:4,f -FN:4,g -FN:4,h -FN:4,i -FN:4,j -FN:4,k -FN:4,l -FN:4,(anonymous_607) -FN:4,(anonymous_608) -FN:5,(anonymous_609) -FN:5,(anonymous_610) -FN:5,(anonymous_611) -FN:5,(anonymous_612) -FN:5,(anonymous_613) -FN:5,(anonymous_614) -FN:5,(anonymous_615) -FN:5,(anonymous_616) -FN:5,(anonymous_617) -FN:5,(anonymous_618) -FN:5,(anonymous_619) -FN:5,e -FN:5,f -FN:5,g -FN:5,h -FN:5,(anonymous_624) -FN:5,i -FN:5,(anonymous_626) -FN:5,j -FN:5,k -FN:5,l -FN:5,(anonymous_630) -FN:5,m -FN:5,(anonymous_632) -FN:5,(anonymous_633) -FN:5,n -FN:5,(anonymous_635) -FN:5,o -FN:5,p -FN:5,q -FN:5,r -FN:5,s -FN:5,t -FN:5,u -FN:5,v -FN:5,w -FN:5,x -FN:5,y -FN:5,z -FN:5,A -FN:5,B -FN:5,C -FN:5,D -FN:5,E -FN:5,F -FN:5,(anonymous_654) -FN:5,(anonymous_655) -FN:5,f -FN:5,(anonymous_657) -FN:5,(anonymous_658) -FN:5,(anonymous_659) -FN:5,(anonymous_660) -FN:5,(anonymous_661) -FN:5,(anonymous_662) -FN:5,(anonymous_663) -FN:5,d -FN:5,(anonymous_665) -FN:5,(anonymous_666) -FN:5,(anonymous_667) -FN:5,d -FN:5,(anonymous_669) -FN:5,d -FN:5,(anonymous_671) -FN:5,(anonymous_672) -FN:5,d -FN:5,(anonymous_674) -FN:5,(anonymous_675) -FN:5,d -FN:5,(anonymous_677) -FN:5,d -FN:5,(anonymous_679) -FN:5,d -FN:5,(anonymous_681) -FN:5,d -FN:5,(anonymous_683) -FN:5,d -FN:5,(anonymous_685) -FN:5,d -FN:5,(anonymous_687) -FN:5,d -FN:5,(anonymous_689) -FN:5,d -FN:5,(anonymous_691) -FN:5,d -FN:5,(anonymous_693) -FN:5,(anonymous_694) -FN:5,(anonymous_695) -FN:5,(anonymous_696) -FN:5,(anonymous_697) -FN:5,(anonymous_698) -FN:5,d -FN:5,(anonymous_700) -FN:5,d -FN:5,(anonymous_702) -FN:5,d -FN:5,(anonymous_704) -FN:5,d -FN:5,(anonymous_706) -FN:5,d -FN:5,(anonymous_708) -FN:5,d -FN:5,(anonymous_710) -FN:5,d -FN:5,(anonymous_712) -FN:5,d -FN:5,(anonymous_714) -FN:5,d -FN:5,(anonymous_716) -FN:5,d -FN:5,(anonymous_718) -FN:5,d -FN:5,(anonymous_720) -FN:5,d -FN:5,(anonymous_722) -FN:5,d -FN:5,(anonymous_724) -FN:5,(anonymous_725) -FN:5,d -FN:5,(anonymous_727) -FN:5,d -FN:5,(anonymous_729) -FN:5,d -FN:5,(anonymous_731) -FN:5,d -FN:5,(anonymous_733) -FN:5,d -FN:5,(anonymous_735) -FN:5,d -FN:5,(anonymous_737) -FN:5,d -FN:5,(anonymous_739) -FN:5,d -FN:5,(anonymous_741) -FN:5,d -FN:5,(anonymous_743) -FN:5,d -FN:5,(anonymous_745) -FN:5,d -FN:5,(anonymous_747) -FN:5,(anonymous_748) -FN:5,(anonymous_749) -FN:5,d -FN:5,(anonymous_751) -FN:5,(anonymous_752) -FN:5,(anonymous_753) -FN:5,(anonymous_754) -FN:5,(anonymous_755) -FN:5,d -FN:5,(anonymous_757) -FN:5,d -FN:5,(anonymous_759) -FN:5,d -FN:5,(anonymous_761) -FN:5,(anonymous_762) -FN:5,d -FN:5,(anonymous_764) -FN:5,d -FN:5,(anonymous_766) -FN:5,d -FN:5,(anonymous_768) -FN:5,d -FN:5,(anonymous_770) -FN:5,(anonymous_771) -FN:5,(anonymous_772) -FN:5,d -FN:5,e -FN:5,f -FN:5,g -FN:5,h -FN:5,i -FN:5,j -FN:5,k -FN:5,l -FN:5,m -FN:5,n -FN:5,o -FN:5,p -FN:5,q -FN:5,r -FN:5,s -FN:5,t -FN:5,u -FN:5,(anonymous_791) -FN:5,v -FN:5,w -FN:5,x -FN:5,y -FN:5,z -FN:5,A -FN:5,(anonymous_798) -FN:5,B -FN:5,(anonymous_800) -FN:5,C -FN:5,(anonymous_802) -FN:5,D -FN:5,E -FN:5,F -FN:5,G -FN:5,(anonymous_807) -FN:5,H -FN:5,(anonymous_809) -FN:5,I -FN:5,(anonymous_811) -FN:5,J -FN:5,K -FN:5,L -FN:5,M -FN:5,N -FN:5,O -FN:5,P -FN:5,Q -FN:5,R -FN:5,S -FN:5,(anonymous_822) -FN:5,T -FN:5,(anonymous_824) -FN:5,U -FN:5,V -FN:5,(anonymous_827) -FN:5,W -FN:5,(anonymous_829) -FN:5,X -FN:5,Y -FN:5,Z -FN:5,$ -FN:5,_ -FN:5,aa -FN:5,ba -FN:5,(anonymous_837) -FN:5,wd -FN:5,b -FN:5,c -FN:5,s -FN:5,B -FN:6,X -FN:6,_ -FN:6,aa -FN:6,Pb -FN:6,_b -FN:6,ac -FN:6,bc -FN:6,cc -FN:6,dc -FN:6,ec -FN:6,fc -FN:6,gc -FN:6,hc -FN:6,ic -FN:6,jc -FN:6,kc -FN:6,lc -FN:6,mc -FN:6,nc -FN:6,oc -FN:6,pc -FN:6,qc -FN:6,rc -FN:6,sc -FN:6,tc -FN:6,uc -FN:6,vc -FN:6,wc -FN:6,xc -FN:6,yc -FN:6,zc -FN:6,Ac -FN:6,Bc -FN:6,Cc -FN:6,Dc -FN:6,Ec -FN:6,Fc -FN:6,Gc -FN:6,(anonymous_881) -FN:6,Hc -FN:6,Ic -FN:6,Jc -FN:6,Kc -FN:6,Lc -FN:6,Mc -FN:6,(anonymous_888) -FN:6,Nc -FN:6,(anonymous_890) -FN:6,Qc -FN:6,Rc -FN:6,(anonymous_893) -FN:6,Sc -FN:6,Tc -FN:6,(anonymous_896) -FN:6,Yc -FN:6,Zc -FN:6,$c -FN:6,(anonymous_900) -FN:6,_c -FN:6,cd -FN:6,dd -FN:6,fd -FN:6,(anonymous_905) -FN:6,gd -FN:6,id -FN:6,jd -FN:6,qd -FN:6,ud -FN:6,xd -FN:6,yd -FN:6,zd -FN:6,Ad -FN:6,(anonymous_915) -FN:6,Bd -FN:6,Cd -FN:6,Dd -FN:6,Ed -FN:6,Fd -FN:6,Gd -FN:6,Hd -FN:6,Id -FN:6,Jd -FN:6,Kd -FN:6,Ld -FN:6,Md -FN:6,Nd -FN:6,Od -FN:6,Pd -FN:6,Qd -FN:6,Rd -FN:6,(anonymous_933) -FN:6,Sd -FN:6,(anonymous_935) -FN:6,Td -FN:6,(anonymous_937) -FN:6,Ud -FN:6,(anonymous_939) -FN:6,Vd -FN:6,Wd -FN:6,Xd -FN:6,(anonymous_943) -FN:6,(anonymous_944) -FN:6,(anonymous_945) -FN:6,Yd -FN:6,(anonymous_947) -FN:6,Zd -FN:6,$d -FN:6,(anonymous_950) -FN:6,_d -FN:6,ae -FN:6,be -FN:6,ce -FN:6,de -FN:6,ee -FN:6,fe -FN:6,ge -FN:6,he -FN:6,ie -FN:6,je -FN:6,ke -FN:6,(anonymous_963) -FN:6,le -FN:6,me -FN:6,ne -FN:6,oe -FN:6,pe -FN:6,qe -FN:6,re -FN:6,se -FN:6,te -FN:6,ue -FN:6,(anonymous_974) -FN:6,ve -FN:6,we -FN:6,xe -FN:6,ye -FN:6,ze -FN:6,Ae -FN:6,Be -FN:6,Ce -FN:6,De -FN:6,Ee -FN:6,Fe -FN:6,Ge -FN:6,He -FN:6,Ie -FN:6,Je -FN:6,Ke -FN:6,Le -FN:6,Me -FN:6,Ne -FN:6,Oe -FN:6,Pe -FN:6,Qe -FN:6,Re -FN:6,(anonymous_998) -FN:6,Se -FN:6,(anonymous_1000) -FN:6,Te -FN:6,(anonymous_1002) -FN:6,Ue -FN:6,(anonymous_1004) -FN:6,Ve -FN:6,d -FN:6,We -FN:6,(anonymous_1008) -FN:6,Xe -FN:6,(anonymous_1010) -FN:6,Ye -FN:6,(anonymous_1012) -FN:6,Ze -FN:6,d -FN:6,$e -FN:6,(anonymous_1016) -FN:6,(anonymous_1017) -FN:6,_e -FN:6,(anonymous_1019) -FN:6,(anonymous_1020) -FN:6,af -FN:6,k -FN:6,bf -FN:6,(anonymous_1024) -FN:6,cf -FN:6,(anonymous_1026) -FN:6,df -FN:6,(anonymous_1028) -FN:6,(anonymous_1029) -FN:6,(anonymous_1030) -FN:6,ef -FN:6,ff -FN:6,e -FN:6,gf -FN:6,(anonymous_1035) -FN:6,hf -FN:6,(anonymous_1037) -FN:6,jf -FN:6,kf -FN:6,(anonymous_1040) -FN:6,lf -FN:6,(anonymous_1042) -FN:6,mf -FN:6,nf -FN:6,of -FN:6,pf -FN:6,qf -FN:6,(anonymous_1048) -FN:6,rf -FN:6,sf -FN:6,tf -FN:6,uf -FN:6,vf -FN:6,wf -FN:6,xf -FN:6,yf -FN:6,zf -FN:6,Af -FN:6,Bf -FN:6,Cf -FN:6,Df -FN:6,Ef -FN:6,Ff -FN:6,Gf -FN:6,Hf -FN:6,If -FN:6,Jf -FN:6,Kf -FN:6,Lf -FN:6,Mf -FN:6,Nf -FN:6,Of -FN:6,Pf -FN:6,Qf -FN:6,Rf -FN:6,Sf -FN:6,Tf -FN:6,(anonymous_1078) -FN:6,Uf -FN:6,(anonymous_1080) -FN:6,Vf -FN:6,Wf -FN:6,Xf -FN:6,Yf -FN:6,(anonymous_1085) -FN:6,Zf -FN:6,$f -FN:6,_f -FN:6,ag -FN:6,(anonymous_1090) -FN:6,bg -FN:6,cg -FN:6,dg -FN:6,eg -FN:6,(anonymous_1095) -FN:6,fg -FN:6,gg -FN:6,hg -FN:6,ig -FN:6,jg -FN:6,kg -FN:6,lg -FN:6,mg -FN:6,ng -FN:6,og -FN:6,pg -FN:6,qg -FN:6,rg -FN:6,sg -FN:6,tg -FN:6,ug -FN:6,vg -FN:6,wg -FN:6,xg -FN:6,yg -FN:6,zg -FN:6,Ag -FN:6,Bg -FN:6,Cg -FN:6,Dg -FN:6,Eg -FN:6,Fg -FN:6,Gg -FN:6,Hg -FN:6,Ig -FN:6,Jg -FN:6,Kg -FN:6,Lg -FN:6,Mg -FN:6,Ng -FN:6,Og -FN:6,Pg -FN:6,Qg -FN:6,Rg -FN:6,Sg -FN:6,Tg -FN:6,Ug -FN:6,Vg -FN:6,Wg -FN:6,Xg -FN:6,(anonymous_1141) -FN:6,(anonymous_1142) -FN:6,Yg -FN:6,(anonymous_1144) -FN:6,Zg -FN:6,$g -FN:6,_g -FN:6,ah -FN:6,bh -FN:6,ch -FN:6,dh -FN:6,eh -FN:6,fh -FN:6,gh -FN:6,hh -FN:6,ih -FN:6,jh -FN:6,kh -FN:6,lh -FN:6,mh -FN:6,nh -FN:6,oh -FN:6,ph -FN:6,qh -FN:6,rh -FN:6,sh -FN:6,th -FN:6,uh -FN:6,vh -FN:6,wh -FN:6,xh -FN:6,yh -FN:7,zh -FN:7,Ah -FN:7,Bh -FN:7,(anonymous_1176) -FN:7,Ch -FN:7,Dh -FN:7,(anonymous_1179) -FN:7,Eh -FN:7,Fh -FN:7,Gh -FN:7,d -FN:7,e -FN:7,f -FN:7,g -FN:7,h -FN:7,i -FN:7,j -FN:7,k -FN:7,l -FN:7,Hh -FN:7,Ih -FN:7,(anonymous_1194) -FN:7,Jh -FN:7,(anonymous_1196) -FN:7,Kh -FN:7,Lh -FN:7,Mh -FN:7,(anonymous_1200) -FN:7,Nh -FN:7,Oh -FN:7,Ph -FN:7,Qh -FN:7,Rh -FN:7,Sh -FN:7,Th -FN:7,Uh -FN:7,Vh -FN:7,Wh -FN:7,Xh -FN:7,Yh -FN:7,Zh -FN:7,$h -FN:7,_h -FN:7,ai -FN:7,bi -FN:7,ci -FN:7,di -FN:7,ei -FN:7,fi -FN:7,gi -FN:7,hi -FN:7,ii -FN:7,ji -FN:7,ki -FN:7,li -FN:7,mi -FN:7,ni -FN:7,oi -FN:7,pi -FN:7,qi -FN:7,ri -FN:7,si -FN:7,ti -FN:7,ui -FN:7,vi -FN:7,wi -FN:7,xi -FN:7,yi -FN:7,zi -FN:7,Ai -FN:7,Bi -FN:7,Ci -FN:7,Di -FN:7,Ei -FN:7,Fi -FN:7,Gi -FN:7,Hi -FN:7,Ii -FN:7,Ji -FN:7,Ki -FN:7,Li -FN:7,Mi -FN:7,Ni -FN:7,Oi -FN:7,Pi -FN:7,Qi -FN:7,Ri -FN:7,Si -FN:7,Ti -FN:7,(anonymous_1262) -FN:7,Ui -FN:7,(anonymous_1264) -FN:7,Vi -FN:7,Wi -FN:7,(anonymous_1267) -FN:7,(anonymous_1268) -FN:7,Xi -FN:7,Yi -FN:7,Zi -FN:7,$i -FN:7,(anonymous_1273) -FN:7,_i -FN:7,aj -FN:7,bj -FN:7,cj -FN:7,dj -FN:7,ej -FN:7,fj -FN:7,gj -FN:7,hj -FN:7,ij -FN:7,jj -FN:7,kj -FN:7,lj -FN:7,mj -FN:7,nj -FN:7,oj -FN:7,pj -FN:7,qj -FN:7,rj -FN:7,sj -FN:7,tj -FN:7,uj -FN:7,(anonymous_1296) -FN:7,(anonymous_1297) -FN:7,vj -FN:7,wj -FN:7,xj -FN:7,yj -FN:7,zj -FN:7,Aj -FN:7,Bj -FN:7,Cj -FN:7,Dj -FN:7,(anonymous_1307) -FN:7,(anonymous_1308) -FN:7,Ej -FN:7,Fj -FN:7,(anonymous_1311) -FN:7,Gj -FN:7,Hj -FN:7,Ij -FN:7,Jj -FN:7,Kj -FN:7,Lj -FN:7,(anonymous_1318) -FN:7,(anonymous_1319) -FN:7,Mj -FN:7,Nj -FN:7,Oj -FN:7,(anonymous_1323) -FN:7,Pj -FN:7,Qj -FN:7,(anonymous_1326) -FN:7,Rj -FN:7,Sj -FN:7,Tj -FN:7,Uj -FN:7,Vj -FN:7,Wj -FN:7,Xj -FN:7,Yj -FN:7,Zj -FN:7,$j -FN:7,_j -FN:7,ak -FN:7,bk -FN:7,ck -FN:7,dk -FN:7,ek -FN:7,(anonymous_1343) -FN:7,(anonymous_1344) -FN:7,(anonymous_1345) -FN:7,a -FN:7,(anonymous_1347) -FN:7,(anonymous_1348) -FN:7,(anonymous_1349) -FN:7,(anonymous_1350) -FN:7,(anonymous_1351) -FN:7,(anonymous_1352) -FN:7,(anonymous_1353) -FN:7,(anonymous_1354) -FN:7,(anonymous_1355) -FN:7,(anonymous_1356) -FN:7,(anonymous_1357) -FN:7,(anonymous_1358) -FN:7,(anonymous_1359) -FN:7,(anonymous_1360) -FN:7,(anonymous_1361) -FN:7,(anonymous_1362) -FN:7,(anonymous_1363) -FN:7,(anonymous_1364) -FN:7,(anonymous_1365) -FN:7,(anonymous_1366) -FN:7,(anonymous_1367) -FN:7,(anonymous_1368) -FN:7,(anonymous_1369) -FN:7,(anonymous_1370) -FN:7,(anonymous_1371) -FN:7,(anonymous_1372) -FN:7,(anonymous_1373) -FN:7,(anonymous_1374) -FN:7,(anonymous_1375) -FN:7,(anonymous_1376) -FN:7,(anonymous_1377) -FN:7,(anonymous_1378) -FN:7,(anonymous_1379) -FN:7,(anonymous_1380) -FN:7,(anonymous_1381) -FN:7,(anonymous_1382) -FN:7,(anonymous_1383) -FN:7,(anonymous_1384) -FN:7,(anonymous_1385) -FN:7,(anonymous_1386) -FN:7,(anonymous_1387) -FN:7,(anonymous_1388) -FN:7,(anonymous_1389) -FN:7,(anonymous_1390) -FN:7,(anonymous_1391) -FN:7,(anonymous_1392) -FN:7,(anonymous_1393) -FN:7,(anonymous_1394) -FN:7,(anonymous_1395) -FN:7,(anonymous_1396) -FN:7,(anonymous_1397) -FN:7,(anonymous_1398) -FN:7,(anonymous_1399) -FN:7,(anonymous_1400) -FN:7,(anonymous_1401) -FN:7,(anonymous_1402) -FN:7,(anonymous_1403) -FN:7,(anonymous_1404) -FN:7,(anonymous_1405) -FN:7,(anonymous_1406) -FN:7,(anonymous_1407) -FN:7,(anonymous_1408) -FN:7,(anonymous_1409) -FN:7,(anonymous_1410) -FN:7,(anonymous_1411) -FN:7,(anonymous_1412) -FN:7,(anonymous_1413) -FN:7,(anonymous_1414) -FN:7,(anonymous_1415) -FN:7,(anonymous_1416) -FN:7,(anonymous_1417) -FN:7,(anonymous_1418) -FN:7,(anonymous_1419) -FN:7,(anonymous_1420) -FN:7,(anonymous_1421) -FN:7,(anonymous_1422) -FN:7,(anonymous_1423) -FN:7,(anonymous_1424) -FN:7,(anonymous_1425) -FN:7,(anonymous_1426) -FN:7,(anonymous_1427) -FN:7,(anonymous_1428) -FN:7,(anonymous_1429) -FN:7,(anonymous_1430) -FN:7,(anonymous_1431) -FN:7,(anonymous_1432) -FN:7,(anonymous_1433) -FN:7,(anonymous_1434) -FN:7,(anonymous_1435) -FN:7,(anonymous_1436) -FN:7,(anonymous_1437) -FN:7,(anonymous_1438) -FN:7,(anonymous_1439) -FN:7,(anonymous_1440) -FN:7,(anonymous_1441) -FN:7,(anonymous_1442) -FN:7,(anonymous_1443) -FN:7,(anonymous_1444) -FN:7,(anonymous_1445) -FN:7,(anonymous_1446) -FN:7,(anonymous_1447) -FN:7,(anonymous_1448) -FN:7,(anonymous_1449) -FN:7,(anonymous_1450) -FN:7,(anonymous_1451) -FN:7,(anonymous_1452) -FN:7,(anonymous_1453) -FN:7,(anonymous_1454) -FN:7,(anonymous_1455) -FN:7,(anonymous_1456) -FN:7,(anonymous_1457) -FN:7,(anonymous_1458) -FN:7,(anonymous_1459) -FN:7,(anonymous_1460) -FN:7,d -FN:7,(anonymous_1462) -FN:7,(anonymous_1463) -FN:7,d -FN:7,(anonymous_1465) -FN:7,d -FN:7,(anonymous_1467) -FN:7,(anonymous_1468) -FN:7,(anonymous_1469) -FN:7,(anonymous_1470) -FN:7,(anonymous_1471) -FN:7,(anonymous_1472) -FNF:1473 -FNH:0 -FNDA:0,a -FNDA:0,e -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,d -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,e -FNDA:0,(anonymous_14) -FNDA:0,f -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,g -FNDA:0,h -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -FNDA:0,(anonymous_42) -FNDA:0,(anonymous_43) -FNDA:0,(anonymous_44) -FNDA:0,(anonymous_45) -FNDA:0,(anonymous_46) -FNDA:0,(anonymous_47) -FNDA:0,(anonymous_48) -FNDA:0,(anonymous_49) -FNDA:0,(anonymous_50) -FNDA:0,(anonymous_51) -FNDA:0,(anonymous_52) -FNDA:0,(anonymous_53) -FNDA:0,(anonymous_54) -FNDA:0,(anonymous_55) -FNDA:0,(anonymous_56) -FNDA:0,(anonymous_57) -FNDA:0,(anonymous_58) -FNDA:0,(anonymous_59) -FNDA:0,c -FNDA:0,(anonymous_61) -FNDA:0,(anonymous_62) -FNDA:0,(anonymous_63) -FNDA:0,(anonymous_64) -FNDA:0,(anonymous_65) -FNDA:0,(anonymous_66) -FNDA:0,(anonymous_67) -FNDA:0,(anonymous_68) -FNDA:0,d -FNDA:0,(anonymous_70) -FNDA:0,(anonymous_71) -FNDA:0,(anonymous_72) -FNDA:0,(anonymous_73) -FNDA:0,(anonymous_74) -FNDA:0,(anonymous_75) -FNDA:0,(anonymous_76) -FNDA:0,(anonymous_77) -FNDA:0,(anonymous_78) -FNDA:0,(anonymous_79) -FNDA:0,(anonymous_80) -FNDA:0,(anonymous_81) -FNDA:0,d -FNDA:0,(anonymous_83) -FNDA:0,(anonymous_84) -FNDA:0,(anonymous_85) -FNDA:0,(anonymous_86) -FNDA:0,d -FNDA:0,(anonymous_88) -FNDA:0,d -FNDA:0,e -FNDA:0,f -FNDA:0,g -FNDA:0,h -FNDA:0,i -FNDA:0,j -FNDA:0,k -FNDA:0,l -FNDA:0,m -FNDA:0,n -FNDA:0,o -FNDA:0,p -FNDA:0,q -FNDA:0,(anonymous_103) -FNDA:0,(anonymous_104) -FNDA:0,(anonymous_105) -FNDA:0,d -FNDA:0,(anonymous_107) -FNDA:0,(anonymous_108) -FNDA:0,(anonymous_109) -FNDA:0,(anonymous_110) -FNDA:0,(anonymous_111) -FNDA:0,(anonymous_112) -FNDA:0,(anonymous_113) -FNDA:0,(anonymous_114) -FNDA:0,(anonymous_115) -FNDA:0,(anonymous_116) -FNDA:0,d -FNDA:0,e -FNDA:0,c -FNDA:0,(anonymous_120) -FNDA:0,(anonymous_121) -FNDA:0,f -FNDA:0,g -FNDA:0,(anonymous_124) -FNDA:0,(anonymous_125) -FNDA:0,(anonymous_126) -FNDA:0,d -FNDA:0,e -FNDA:0,f -FNDA:0,(anonymous_130) -FNDA:0,(anonymous_131) -FNDA:0,(anonymous_132) -FNDA:0,e -FNDA:0,a -FNDA:0,b -FNDA:0,d -FNDA:0,(anonymous_137) -FNDA:0,e -FNDA:0,(anonymous_139) -FNDA:0,g -FNDA:0,(anonymous_141) -FNDA:0,(anonymous_142) -FNDA:0,f -FNDA:0,(anonymous_144) -FNDA:0,(anonymous_145) -FNDA:0,(anonymous_146) -FNDA:0,(anonymous_147) -FNDA:0,(anonymous_148) -FNDA:0,(anonymous_149) -FNDA:0,(anonymous_150) -FNDA:0,(anonymous_151) -FNDA:0,(anonymous_152) -FNDA:0,(anonymous_153) -FNDA:0,(anonymous_154) -FNDA:0,d -FNDA:0,(anonymous_156) -FNDA:0,(anonymous_157) -FNDA:0,(anonymous_158) -FNDA:0,e -FNDA:0,f -FNDA:0,(anonymous_161) -FNDA:0,(anonymous_162) -FNDA:0,(anonymous_163) -FNDA:0,d -FNDA:0,(anonymous_165) -FNDA:0,(anonymous_166) -FNDA:0,(anonymous_167) -FNDA:0,d -FNDA:0,d -FNDA:0,(anonymous_170) -FNDA:0,(anonymous_171) -FNDA:0,(anonymous_172) -FNDA:0,(anonymous_173) -FNDA:0,(anonymous_174) -FNDA:0,(anonymous_175) -FNDA:0,(anonymous_176) -FNDA:0,(anonymous_177) -FNDA:0,d -FNDA:0,a -FNDA:0,(anonymous_180) -FNDA:0,e -FNDA:0,f -FNDA:0,g -FNDA:0,h -FNDA:0,i -FNDA:0,j -FNDA:0,k -FNDA:0,l -FNDA:0,m -FNDA:0,n -FNDA:0,o -FNDA:0,p -FNDA:0,q -FNDA:0,r -FNDA:0,s -FNDA:0,t -FNDA:0,u -FNDA:0,v -FNDA:0,w -FNDA:0,x -FNDA:0,y -FNDA:0,z -FNDA:0,A -FNDA:0,B -FNDA:0,C -FNDA:0,D -FNDA:0,E -FNDA:0,F -FNDA:0,G -FNDA:0,H -FNDA:0,I -FNDA:0,J -FNDA:0,K -FNDA:0,L -FNDA:0,M -FNDA:0,N -FNDA:0,O -FNDA:0,P -FNDA:0,Q -FNDA:0,R -FNDA:0,S -FNDA:0,T -FNDA:0,U -FNDA:0,V -FNDA:0,(anonymous_225) -FNDA:0,(anonymous_226) -FNDA:0,(anonymous_227) -FNDA:0,(anonymous_228) -FNDA:0,(anonymous_229) -FNDA:0,(anonymous_230) -FNDA:0,(anonymous_231) -FNDA:0,(anonymous_232) -FNDA:0,(anonymous_233) -FNDA:0,c -FNDA:0,(anonymous_235) -FNDA:0,(anonymous_236) -FNDA:0,(anonymous_237) -FNDA:0,(anonymous_238) -FNDA:0,(anonymous_239) -FNDA:0,(anonymous_240) -FNDA:0,(anonymous_241) -FNDA:0,(anonymous_242) -FNDA:0,(anonymous_243) -FNDA:0,(anonymous_244) -FNDA:0,(anonymous_245) -FNDA:0,(anonymous_246) -FNDA:0,(anonymous_247) -FNDA:0,(anonymous_248) -FNDA:0,(anonymous_249) -FNDA:0,(anonymous_250) -FNDA:0,(anonymous_251) -FNDA:0,(anonymous_252) -FNDA:0,(anonymous_253) -FNDA:0,(anonymous_254) -FNDA:0,(anonymous_255) -FNDA:0,(anonymous_256) -FNDA:0,(anonymous_257) -FNDA:0,(anonymous_258) -FNDA:0,(anonymous_259) -FNDA:0,(anonymous_260) -FNDA:0,(anonymous_261) -FNDA:0,(anonymous_262) -FNDA:0,(anonymous_263) -FNDA:0,(anonymous_264) -FNDA:0,(anonymous_265) -FNDA:0,(anonymous_266) -FNDA:0,(anonymous_267) -FNDA:0,(anonymous_268) -FNDA:0,(anonymous_269) -FNDA:0,(anonymous_270) -FNDA:0,(anonymous_271) -FNDA:0,(anonymous_272) -FNDA:0,(anonymous_273) -FNDA:0,(anonymous_274) -FNDA:0,(anonymous_275) -FNDA:0,(anonymous_276) -FNDA:0,(anonymous_277) -FNDA:0,(anonymous_278) -FNDA:0,(anonymous_279) -FNDA:0,(anonymous_280) -FNDA:0,(anonymous_281) -FNDA:0,b -FNDA:0,c -FNDA:0,c -FNDA:0,e -FNDA:0,b -FNDA:0,c -FNDA:0,(anonymous_288) -FNDA:0,(anonymous_289) -FNDA:0,(anonymous_290) -FNDA:0,(anonymous_291) -FNDA:0,(anonymous_292) -FNDA:0,(anonymous_293) -FNDA:0,d -FNDA:0,e -FNDA:0,f -FNDA:0,g -FNDA:0,h -FNDA:0,(anonymous_299) -FNDA:0,(anonymous_300) -FNDA:0,(anonymous_301) -FNDA:0,(anonymous_302) -FNDA:0,c -FNDA:0,(anonymous_304) -FNDA:0,(anonymous_305) -FNDA:0,(anonymous_306) -FNDA:0,(anonymous_307) -FNDA:0,(anonymous_308) -FNDA:0,(anonymous_309) -FNDA:0,(anonymous_310) -FNDA:0,(anonymous_311) -FNDA:0,(anonymous_312) -FNDA:0,(anonymous_313) -FNDA:0,(anonymous_314) -FNDA:0,(anonymous_315) -FNDA:0,(anonymous_316) -FNDA:0,(anonymous_317) -FNDA:0,(anonymous_318) -FNDA:0,(anonymous_319) -FNDA:0,(anonymous_320) -FNDA:0,(anonymous_321) -FNDA:0,(anonymous_322) -FNDA:0,(anonymous_323) -FNDA:0,(anonymous_324) -FNDA:0,(anonymous_325) -FNDA:0,(anonymous_326) -FNDA:0,(anonymous_327) -FNDA:0,(anonymous_328) -FNDA:0,(anonymous_329) -FNDA:0,(anonymous_330) -FNDA:0,d -FNDA:0,e -FNDA:0,f -FNDA:0,g -FNDA:0,(anonymous_335) -FNDA:0,(anonymous_336) -FNDA:0,(anonymous_337) -FNDA:0,(anonymous_338) -FNDA:0,(anonymous_339) -FNDA:0,(anonymous_340) -FNDA:0,(anonymous_341) -FNDA:0,(anonymous_342) -FNDA:0,(anonymous_343) -FNDA:0,e -FNDA:0,f -FNDA:0,g -FNDA:0,h -FNDA:0,i -FNDA:0,(anonymous_349) -FNDA:0,j -FNDA:0,k -FNDA:0,l -FNDA:0,m -FNDA:0,n -FNDA:0,o -FNDA:0,(anonymous_356) -FNDA:0,p -FNDA:0,(anonymous_358) -FNDA:0,(anonymous_359) -FNDA:0,(anonymous_360) -FNDA:0,d -FNDA:0,(anonymous_362) -FNDA:0,(anonymous_363) -FNDA:0,(anonymous_364) -FNDA:0,d -FNDA:0,(anonymous_366) -FNDA:0,(anonymous_367) -FNDA:0,(anonymous_368) -FNDA:0,(anonymous_369) -FNDA:0,(anonymous_370) -FNDA:0,(anonymous_371) -FNDA:0,(anonymous_372) -FNDA:0,(anonymous_373) -FNDA:0,(anonymous_374) -FNDA:0,d -FNDA:0,e -FNDA:0,f -FNDA:0,(anonymous_378) -FNDA:0,(anonymous_379) -FNDA:0,d -FNDA:0,(anonymous_381) -FNDA:0,(anonymous_382) -FNDA:0,(anonymous_383) -FNDA:0,d -FNDA:0,e -FNDA:0,f -FNDA:0,g -FNDA:0,h -FNDA:0,i -FNDA:0,j -FNDA:0,k -FNDA:0,l -FNDA:0,m -FNDA:0,n -FNDA:0,o -FNDA:0,p -FNDA:0,(anonymous_397) -FNDA:0,q -FNDA:0,r -FNDA:0,s -FNDA:0,t -FNDA:0,u -FNDA:0,v -FNDA:0,w -FNDA:0,x -FNDA:0,y -FNDA:0,(anonymous_407) -FNDA:0,(anonymous_408) -FNDA:0,(anonymous_409) -FNDA:0,(anonymous_410) -FNDA:0,(anonymous_411) -FNDA:0,(anonymous_412) -FNDA:0,(anonymous_413) -FNDA:0,(anonymous_414) -FNDA:0,(anonymous_415) -FNDA:0,(anonymous_416) -FNDA:0,d -FNDA:0,e -FNDA:0,f -FNDA:0,g -FNDA:0,h -FNDA:0,i -FNDA:0,j -FNDA:0,k -FNDA:0,(anonymous_425) -FNDA:0,(anonymous_426) -FNDA:0,(anonymous_427) -FNDA:0,(anonymous_428) -FNDA:0,(anonymous_429) -FNDA:0,(anonymous_430) -FNDA:0,(anonymous_431) -FNDA:0,(anonymous_432) -FNDA:0,(anonymous_433) -FNDA:0,(anonymous_434) -FNDA:0,(anonymous_435) -FNDA:0,(anonymous_436) -FNDA:0,d -FNDA:0,(anonymous_438) -FNDA:0,e -FNDA:0,f -FNDA:0,(anonymous_441) -FNDA:0,(anonymous_442) -FNDA:0,g -FNDA:0,(anonymous_444) -FNDA:0,(anonymous_445) -FNDA:0,(anonymous_446) -FNDA:0,(anonymous_447) -FNDA:0,(anonymous_448) -FNDA:0,d -FNDA:0,e -FNDA:0,f -FNDA:0,(anonymous_452) -FNDA:0,g -FNDA:0,h -FNDA:0,i -FNDA:0,j -FNDA:0,k -FNDA:0,l -FNDA:0,m -FNDA:0,n -FNDA:0,o -FNDA:0,p -FNDA:0,q -FNDA:0,r -FNDA:0,(anonymous_465) -FNDA:0,s -FNDA:0,t -FNDA:0,u -FNDA:0,v -FNDA:0,(anonymous_470) -FNDA:0,(anonymous_471) -FNDA:0,(anonymous_472) -FNDA:0,(anonymous_473) -FNDA:0,(anonymous_474) -FNDA:0,(anonymous_475) -FNDA:0,(anonymous_476) -FNDA:0,(anonymous_477) -FNDA:0,(anonymous_478) -FNDA:0,(anonymous_479) -FNDA:0,(anonymous_480) -FNDA:0,(anonymous_481) -FNDA:0,(anonymous_482) -FNDA:0,b -FNDA:0,d -FNDA:0,e -FNDA:0,f -FNDA:0,g -FNDA:0,h -FNDA:0,i -FNDA:0,j -FNDA:0,k -FNDA:0,l -FNDA:0,m -FNDA:0,n -FNDA:0,o -FNDA:0,p -FNDA:0,q -FNDA:0,(anonymous_498) -FNDA:0,(anonymous_499) -FNDA:0,c -FNDA:0,(anonymous_501) -FNDA:0,(anonymous_502) -FNDA:0,(anonymous_503) -FNDA:0,c -FNDA:0,c -FNDA:0,d -FNDA:0,(anonymous_507) -FNDA:0,(anonymous_508) -FNDA:0,(anonymous_509) -FNDA:0,(anonymous_510) -FNDA:0,(anonymous_511) -FNDA:0,(anonymous_512) -FNDA:0,d -FNDA:0,(anonymous_514) -FNDA:0,c -FNDA:0,d -FNDA:0,f -FNDA:0,g -FNDA:0,h -FNDA:0,i -FNDA:0,(anonymous_521) -FNDA:0,(anonymous_522) -FNDA:0,(anonymous_523) -FNDA:0,(anonymous_524) -FNDA:0,(anonymous_525) -FNDA:0,(anonymous_526) -FNDA:0,b -FNDA:0,d -FNDA:0,(anonymous_529) -FNDA:0,(anonymous_530) -FNDA:0,f -FNDA:0,g -FNDA:0,(anonymous_533) -FNDA:0,(anonymous_534) -FNDA:0,(anonymous_535) -FNDA:0,(anonymous_536) -FNDA:0,(anonymous_537) -FNDA:0,(anonymous_538) -FNDA:0,(anonymous_539) -FNDA:0,(anonymous_540) -FNDA:0,(anonymous_541) -FNDA:0,(anonymous_542) -FNDA:0,(anonymous_543) -FNDA:0,(anonymous_544) -FNDA:0,(anonymous_545) -FNDA:0,(anonymous_546) -FNDA:0,(anonymous_547) -FNDA:0,(anonymous_548) -FNDA:0,(anonymous_549) -FNDA:0,(anonymous_550) -FNDA:0,(anonymous_551) -FNDA:0,(anonymous_552) -FNDA:0,(anonymous_553) -FNDA:0,(anonymous_554) -FNDA:0,(anonymous_555) -FNDA:0,(anonymous_556) -FNDA:0,(anonymous_557) -FNDA:0,(anonymous_558) -FNDA:0,(anonymous_559) -FNDA:0,(anonymous_560) -FNDA:0,(anonymous_561) -FNDA:0,h -FNDA:0,(anonymous_563) -FNDA:0,(anonymous_564) -FNDA:0,(anonymous_565) -FNDA:0,(anonymous_566) -FNDA:0,(anonymous_567) -FNDA:0,(anonymous_568) -FNDA:0,(anonymous_569) -FNDA:0,(anonymous_570) -FNDA:0,(anonymous_571) -FNDA:0,(anonymous_572) -FNDA:0,(anonymous_573) -FNDA:0,(anonymous_574) -FNDA:0,(anonymous_575) -FNDA:0,(anonymous_576) -FNDA:0,(anonymous_577) -FNDA:0,(anonymous_578) -FNDA:0,(anonymous_579) -FNDA:0,(anonymous_580) -FNDA:0,(anonymous_581) -FNDA:0,(anonymous_582) -FNDA:0,(anonymous_583) -FNDA:0,(anonymous_584) -FNDA:0,(anonymous_585) -FNDA:0,(anonymous_586) -FNDA:0,(anonymous_587) -FNDA:0,d -FNDA:0,e -FNDA:0,f -FNDA:0,g -FNDA:0,(anonymous_592) -FNDA:0,(anonymous_593) -FNDA:0,(anonymous_594) -FNDA:0,(anonymous_595) -FNDA:0,(anonymous_596) -FNDA:0,(anonymous_597) -FNDA:0,d -FNDA:0,e -FNDA:0,f -FNDA:0,g -FNDA:0,h -FNDA:0,i -FNDA:0,j -FNDA:0,k -FNDA:0,l -FNDA:0,(anonymous_607) -FNDA:0,(anonymous_608) -FNDA:0,(anonymous_609) -FNDA:0,(anonymous_610) -FNDA:0,(anonymous_611) -FNDA:0,(anonymous_612) -FNDA:0,(anonymous_613) -FNDA:0,(anonymous_614) -FNDA:0,(anonymous_615) -FNDA:0,(anonymous_616) -FNDA:0,(anonymous_617) -FNDA:0,(anonymous_618) -FNDA:0,(anonymous_619) -FNDA:0,e -FNDA:0,f -FNDA:0,g -FNDA:0,h -FNDA:0,(anonymous_624) -FNDA:0,i -FNDA:0,(anonymous_626) -FNDA:0,j -FNDA:0,k -FNDA:0,l -FNDA:0,(anonymous_630) -FNDA:0,m -FNDA:0,(anonymous_632) -FNDA:0,(anonymous_633) -FNDA:0,n -FNDA:0,(anonymous_635) -FNDA:0,o -FNDA:0,p -FNDA:0,q -FNDA:0,r -FNDA:0,s -FNDA:0,t -FNDA:0,u -FNDA:0,v -FNDA:0,w -FNDA:0,x -FNDA:0,y -FNDA:0,z -FNDA:0,A -FNDA:0,B -FNDA:0,C -FNDA:0,D -FNDA:0,E -FNDA:0,F -FNDA:0,(anonymous_654) -FNDA:0,(anonymous_655) -FNDA:0,f -FNDA:0,(anonymous_657) -FNDA:0,(anonymous_658) -FNDA:0,(anonymous_659) -FNDA:0,(anonymous_660) -FNDA:0,(anonymous_661) -FNDA:0,(anonymous_662) -FNDA:0,(anonymous_663) -FNDA:0,d -FNDA:0,(anonymous_665) -FNDA:0,(anonymous_666) -FNDA:0,(anonymous_667) -FNDA:0,d -FNDA:0,(anonymous_669) -FNDA:0,d -FNDA:0,(anonymous_671) -FNDA:0,(anonymous_672) -FNDA:0,d -FNDA:0,(anonymous_674) -FNDA:0,(anonymous_675) -FNDA:0,d -FNDA:0,(anonymous_677) -FNDA:0,d -FNDA:0,(anonymous_679) -FNDA:0,d -FNDA:0,(anonymous_681) -FNDA:0,d -FNDA:0,(anonymous_683) -FNDA:0,d -FNDA:0,(anonymous_685) -FNDA:0,d -FNDA:0,(anonymous_687) -FNDA:0,d -FNDA:0,(anonymous_689) -FNDA:0,d -FNDA:0,(anonymous_691) -FNDA:0,d -FNDA:0,(anonymous_693) -FNDA:0,(anonymous_694) -FNDA:0,(anonymous_695) -FNDA:0,(anonymous_696) -FNDA:0,(anonymous_697) -FNDA:0,(anonymous_698) -FNDA:0,d -FNDA:0,(anonymous_700) -FNDA:0,d -FNDA:0,(anonymous_702) -FNDA:0,d -FNDA:0,(anonymous_704) -FNDA:0,d -FNDA:0,(anonymous_706) -FNDA:0,d -FNDA:0,(anonymous_708) -FNDA:0,d -FNDA:0,(anonymous_710) -FNDA:0,d -FNDA:0,(anonymous_712) -FNDA:0,d -FNDA:0,(anonymous_714) -FNDA:0,d -FNDA:0,(anonymous_716) -FNDA:0,d -FNDA:0,(anonymous_718) -FNDA:0,d -FNDA:0,(anonymous_720) -FNDA:0,d -FNDA:0,(anonymous_722) -FNDA:0,d -FNDA:0,(anonymous_724) -FNDA:0,(anonymous_725) -FNDA:0,d -FNDA:0,(anonymous_727) -FNDA:0,d -FNDA:0,(anonymous_729) -FNDA:0,d -FNDA:0,(anonymous_731) -FNDA:0,d -FNDA:0,(anonymous_733) -FNDA:0,d -FNDA:0,(anonymous_735) -FNDA:0,d -FNDA:0,(anonymous_737) -FNDA:0,d -FNDA:0,(anonymous_739) -FNDA:0,d -FNDA:0,(anonymous_741) -FNDA:0,d -FNDA:0,(anonymous_743) -FNDA:0,d -FNDA:0,(anonymous_745) -FNDA:0,d -FNDA:0,(anonymous_747) -FNDA:0,(anonymous_748) -FNDA:0,(anonymous_749) -FNDA:0,d -FNDA:0,(anonymous_751) -FNDA:0,(anonymous_752) -FNDA:0,(anonymous_753) -FNDA:0,(anonymous_754) -FNDA:0,(anonymous_755) -FNDA:0,d -FNDA:0,(anonymous_757) -FNDA:0,d -FNDA:0,(anonymous_759) -FNDA:0,d -FNDA:0,(anonymous_761) -FNDA:0,(anonymous_762) -FNDA:0,d -FNDA:0,(anonymous_764) -FNDA:0,d -FNDA:0,(anonymous_766) -FNDA:0,d -FNDA:0,(anonymous_768) -FNDA:0,d -FNDA:0,(anonymous_770) -FNDA:0,(anonymous_771) -FNDA:0,(anonymous_772) -FNDA:0,d -FNDA:0,e -FNDA:0,f -FNDA:0,g -FNDA:0,h -FNDA:0,i -FNDA:0,j -FNDA:0,k -FNDA:0,l -FNDA:0,m -FNDA:0,n -FNDA:0,o -FNDA:0,p -FNDA:0,q -FNDA:0,r -FNDA:0,s -FNDA:0,t -FNDA:0,u -FNDA:0,(anonymous_791) -FNDA:0,v -FNDA:0,w -FNDA:0,x -FNDA:0,y -FNDA:0,z -FNDA:0,A -FNDA:0,(anonymous_798) -FNDA:0,B -FNDA:0,(anonymous_800) -FNDA:0,C -FNDA:0,(anonymous_802) -FNDA:0,D -FNDA:0,E -FNDA:0,F -FNDA:0,G -FNDA:0,(anonymous_807) -FNDA:0,H -FNDA:0,(anonymous_809) -FNDA:0,I -FNDA:0,(anonymous_811) -FNDA:0,J -FNDA:0,K -FNDA:0,L -FNDA:0,M -FNDA:0,N -FNDA:0,O -FNDA:0,P -FNDA:0,Q -FNDA:0,R -FNDA:0,S -FNDA:0,(anonymous_822) -FNDA:0,T -FNDA:0,(anonymous_824) -FNDA:0,U -FNDA:0,V -FNDA:0,(anonymous_827) -FNDA:0,W -FNDA:0,(anonymous_829) -FNDA:0,X -FNDA:0,Y -FNDA:0,Z -FNDA:0,$ -FNDA:0,_ -FNDA:0,aa -FNDA:0,ba -FNDA:0,(anonymous_837) -FNDA:0,wd -FNDA:0,b -FNDA:0,c -FNDA:0,s -FNDA:0,B -FNDA:0,X -FNDA:0,_ -FNDA:0,aa -FNDA:0,Pb -FNDA:0,_b -FNDA:0,ac -FNDA:0,bc -FNDA:0,cc -FNDA:0,dc -FNDA:0,ec -FNDA:0,fc -FNDA:0,gc -FNDA:0,hc -FNDA:0,ic -FNDA:0,jc -FNDA:0,kc -FNDA:0,lc -FNDA:0,mc -FNDA:0,nc -FNDA:0,oc -FNDA:0,pc -FNDA:0,qc -FNDA:0,rc -FNDA:0,sc -FNDA:0,tc -FNDA:0,uc -FNDA:0,vc -FNDA:0,wc -FNDA:0,xc -FNDA:0,yc -FNDA:0,zc -FNDA:0,Ac -FNDA:0,Bc -FNDA:0,Cc -FNDA:0,Dc -FNDA:0,Ec -FNDA:0,Fc -FNDA:0,Gc -FNDA:0,(anonymous_881) -FNDA:0,Hc -FNDA:0,Ic -FNDA:0,Jc -FNDA:0,Kc -FNDA:0,Lc -FNDA:0,Mc -FNDA:0,(anonymous_888) -FNDA:0,Nc -FNDA:0,(anonymous_890) -FNDA:0,Qc -FNDA:0,Rc -FNDA:0,(anonymous_893) -FNDA:0,Sc -FNDA:0,Tc -FNDA:0,(anonymous_896) -FNDA:0,Yc -FNDA:0,Zc -FNDA:0,$c -FNDA:0,(anonymous_900) -FNDA:0,_c -FNDA:0,cd -FNDA:0,dd -FNDA:0,fd -FNDA:0,(anonymous_905) -FNDA:0,gd -FNDA:0,id -FNDA:0,jd -FNDA:0,qd -FNDA:0,ud -FNDA:0,xd -FNDA:0,yd -FNDA:0,zd -FNDA:0,Ad -FNDA:0,(anonymous_915) -FNDA:0,Bd -FNDA:0,Cd -FNDA:0,Dd -FNDA:0,Ed -FNDA:0,Fd -FNDA:0,Gd -FNDA:0,Hd -FNDA:0,Id -FNDA:0,Jd -FNDA:0,Kd -FNDA:0,Ld -FNDA:0,Md -FNDA:0,Nd -FNDA:0,Od -FNDA:0,Pd -FNDA:0,Qd -FNDA:0,Rd -FNDA:0,(anonymous_933) -FNDA:0,Sd -FNDA:0,(anonymous_935) -FNDA:0,Td -FNDA:0,(anonymous_937) -FNDA:0,Ud -FNDA:0,(anonymous_939) -FNDA:0,Vd -FNDA:0,Wd -FNDA:0,Xd -FNDA:0,(anonymous_943) -FNDA:0,(anonymous_944) -FNDA:0,(anonymous_945) -FNDA:0,Yd -FNDA:0,(anonymous_947) -FNDA:0,Zd -FNDA:0,$d -FNDA:0,(anonymous_950) -FNDA:0,_d -FNDA:0,ae -FNDA:0,be -FNDA:0,ce -FNDA:0,de -FNDA:0,ee -FNDA:0,fe -FNDA:0,ge -FNDA:0,he -FNDA:0,ie -FNDA:0,je -FNDA:0,ke -FNDA:0,(anonymous_963) -FNDA:0,le -FNDA:0,me -FNDA:0,ne -FNDA:0,oe -FNDA:0,pe -FNDA:0,qe -FNDA:0,re -FNDA:0,se -FNDA:0,te -FNDA:0,ue -FNDA:0,(anonymous_974) -FNDA:0,ve -FNDA:0,we -FNDA:0,xe -FNDA:0,ye -FNDA:0,ze -FNDA:0,Ae -FNDA:0,Be -FNDA:0,Ce -FNDA:0,De -FNDA:0,Ee -FNDA:0,Fe -FNDA:0,Ge -FNDA:0,He -FNDA:0,Ie -FNDA:0,Je -FNDA:0,Ke -FNDA:0,Le -FNDA:0,Me -FNDA:0,Ne -FNDA:0,Oe -FNDA:0,Pe -FNDA:0,Qe -FNDA:0,Re -FNDA:0,(anonymous_998) -FNDA:0,Se -FNDA:0,(anonymous_1000) -FNDA:0,Te -FNDA:0,(anonymous_1002) -FNDA:0,Ue -FNDA:0,(anonymous_1004) -FNDA:0,Ve -FNDA:0,d -FNDA:0,We -FNDA:0,(anonymous_1008) -FNDA:0,Xe -FNDA:0,(anonymous_1010) -FNDA:0,Ye -FNDA:0,(anonymous_1012) -FNDA:0,Ze -FNDA:0,d -FNDA:0,$e -FNDA:0,(anonymous_1016) -FNDA:0,(anonymous_1017) -FNDA:0,_e -FNDA:0,(anonymous_1019) -FNDA:0,(anonymous_1020) -FNDA:0,af -FNDA:0,k -FNDA:0,bf -FNDA:0,(anonymous_1024) -FNDA:0,cf -FNDA:0,(anonymous_1026) -FNDA:0,df -FNDA:0,(anonymous_1028) -FNDA:0,(anonymous_1029) -FNDA:0,(anonymous_1030) -FNDA:0,ef -FNDA:0,ff -FNDA:0,e -FNDA:0,gf -FNDA:0,(anonymous_1035) -FNDA:0,hf -FNDA:0,(anonymous_1037) -FNDA:0,jf -FNDA:0,kf -FNDA:0,(anonymous_1040) -FNDA:0,lf -FNDA:0,(anonymous_1042) -FNDA:0,mf -FNDA:0,nf -FNDA:0,of -FNDA:0,pf -FNDA:0,qf -FNDA:0,(anonymous_1048) -FNDA:0,rf -FNDA:0,sf -FNDA:0,tf -FNDA:0,uf -FNDA:0,vf -FNDA:0,wf -FNDA:0,xf -FNDA:0,yf -FNDA:0,zf -FNDA:0,Af -FNDA:0,Bf -FNDA:0,Cf -FNDA:0,Df -FNDA:0,Ef -FNDA:0,Ff -FNDA:0,Gf -FNDA:0,Hf -FNDA:0,If -FNDA:0,Jf -FNDA:0,Kf -FNDA:0,Lf -FNDA:0,Mf -FNDA:0,Nf -FNDA:0,Of -FNDA:0,Pf -FNDA:0,Qf -FNDA:0,Rf -FNDA:0,Sf -FNDA:0,Tf -FNDA:0,(anonymous_1078) -FNDA:0,Uf -FNDA:0,(anonymous_1080) -FNDA:0,Vf -FNDA:0,Wf -FNDA:0,Xf -FNDA:0,Yf -FNDA:0,(anonymous_1085) -FNDA:0,Zf -FNDA:0,$f -FNDA:0,_f -FNDA:0,ag -FNDA:0,(anonymous_1090) -FNDA:0,bg -FNDA:0,cg -FNDA:0,dg -FNDA:0,eg -FNDA:0,(anonymous_1095) -FNDA:0,fg -FNDA:0,gg -FNDA:0,hg -FNDA:0,ig -FNDA:0,jg -FNDA:0,kg -FNDA:0,lg -FNDA:0,mg -FNDA:0,ng -FNDA:0,og -FNDA:0,pg -FNDA:0,qg -FNDA:0,rg -FNDA:0,sg -FNDA:0,tg -FNDA:0,ug -FNDA:0,vg -FNDA:0,wg -FNDA:0,xg -FNDA:0,yg -FNDA:0,zg -FNDA:0,Ag -FNDA:0,Bg -FNDA:0,Cg -FNDA:0,Dg -FNDA:0,Eg -FNDA:0,Fg -FNDA:0,Gg -FNDA:0,Hg -FNDA:0,Ig -FNDA:0,Jg -FNDA:0,Kg -FNDA:0,Lg -FNDA:0,Mg -FNDA:0,Ng -FNDA:0,Og -FNDA:0,Pg -FNDA:0,Qg -FNDA:0,Rg -FNDA:0,Sg -FNDA:0,Tg -FNDA:0,Ug -FNDA:0,Vg -FNDA:0,Wg -FNDA:0,Xg -FNDA:0,(anonymous_1141) -FNDA:0,(anonymous_1142) -FNDA:0,Yg -FNDA:0,(anonymous_1144) -FNDA:0,Zg -FNDA:0,$g -FNDA:0,_g -FNDA:0,ah -FNDA:0,bh -FNDA:0,ch -FNDA:0,dh -FNDA:0,eh -FNDA:0,fh -FNDA:0,gh -FNDA:0,hh -FNDA:0,ih -FNDA:0,jh -FNDA:0,kh -FNDA:0,lh -FNDA:0,mh -FNDA:0,nh -FNDA:0,oh -FNDA:0,ph -FNDA:0,qh -FNDA:0,rh -FNDA:0,sh -FNDA:0,th -FNDA:0,uh -FNDA:0,vh -FNDA:0,wh -FNDA:0,xh -FNDA:0,yh -FNDA:0,zh -FNDA:0,Ah -FNDA:0,Bh -FNDA:0,(anonymous_1176) -FNDA:0,Ch -FNDA:0,Dh -FNDA:0,(anonymous_1179) -FNDA:0,Eh -FNDA:0,Fh -FNDA:0,Gh -FNDA:0,d -FNDA:0,e -FNDA:0,f -FNDA:0,g -FNDA:0,h -FNDA:0,i -FNDA:0,j -FNDA:0,k -FNDA:0,l -FNDA:0,Hh -FNDA:0,Ih -FNDA:0,(anonymous_1194) -FNDA:0,Jh -FNDA:0,(anonymous_1196) -FNDA:0,Kh -FNDA:0,Lh -FNDA:0,Mh -FNDA:0,(anonymous_1200) -FNDA:0,Nh -FNDA:0,Oh -FNDA:0,Ph -FNDA:0,Qh -FNDA:0,Rh -FNDA:0,Sh -FNDA:0,Th -FNDA:0,Uh -FNDA:0,Vh -FNDA:0,Wh -FNDA:0,Xh -FNDA:0,Yh -FNDA:0,Zh -FNDA:0,$h -FNDA:0,_h -FNDA:0,ai -FNDA:0,bi -FNDA:0,ci -FNDA:0,di -FNDA:0,ei -FNDA:0,fi -FNDA:0,gi -FNDA:0,hi -FNDA:0,ii -FNDA:0,ji -FNDA:0,ki -FNDA:0,li -FNDA:0,mi -FNDA:0,ni -FNDA:0,oi -FNDA:0,pi -FNDA:0,qi -FNDA:0,ri -FNDA:0,si -FNDA:0,ti -FNDA:0,ui -FNDA:0,vi -FNDA:0,wi -FNDA:0,xi -FNDA:0,yi -FNDA:0,zi -FNDA:0,Ai -FNDA:0,Bi -FNDA:0,Ci -FNDA:0,Di -FNDA:0,Ei -FNDA:0,Fi -FNDA:0,Gi -FNDA:0,Hi -FNDA:0,Ii -FNDA:0,Ji -FNDA:0,Ki -FNDA:0,Li -FNDA:0,Mi -FNDA:0,Ni -FNDA:0,Oi -FNDA:0,Pi -FNDA:0,Qi -FNDA:0,Ri -FNDA:0,Si -FNDA:0,Ti -FNDA:0,(anonymous_1262) -FNDA:0,Ui -FNDA:0,(anonymous_1264) -FNDA:0,Vi -FNDA:0,Wi -FNDA:0,(anonymous_1267) -FNDA:0,(anonymous_1268) -FNDA:0,Xi -FNDA:0,Yi -FNDA:0,Zi -FNDA:0,$i -FNDA:0,(anonymous_1273) -FNDA:0,_i -FNDA:0,aj -FNDA:0,bj -FNDA:0,cj -FNDA:0,dj -FNDA:0,ej -FNDA:0,fj -FNDA:0,gj -FNDA:0,hj -FNDA:0,ij -FNDA:0,jj -FNDA:0,kj -FNDA:0,lj -FNDA:0,mj -FNDA:0,nj -FNDA:0,oj -FNDA:0,pj -FNDA:0,qj -FNDA:0,rj -FNDA:0,sj -FNDA:0,tj -FNDA:0,uj -FNDA:0,(anonymous_1296) -FNDA:0,(anonymous_1297) -FNDA:0,vj -FNDA:0,wj -FNDA:0,xj -FNDA:0,yj -FNDA:0,zj -FNDA:0,Aj -FNDA:0,Bj -FNDA:0,Cj -FNDA:0,Dj -FNDA:0,(anonymous_1307) -FNDA:0,(anonymous_1308) -FNDA:0,Ej -FNDA:0,Fj -FNDA:0,(anonymous_1311) -FNDA:0,Gj -FNDA:0,Hj -FNDA:0,Ij -FNDA:0,Jj -FNDA:0,Kj -FNDA:0,Lj -FNDA:0,(anonymous_1318) -FNDA:0,(anonymous_1319) -FNDA:0,Mj -FNDA:0,Nj -FNDA:0,Oj -FNDA:0,(anonymous_1323) -FNDA:0,Pj -FNDA:0,Qj -FNDA:0,(anonymous_1326) -FNDA:0,Rj -FNDA:0,Sj -FNDA:0,Tj -FNDA:0,Uj -FNDA:0,Vj -FNDA:0,Wj -FNDA:0,Xj -FNDA:0,Yj -FNDA:0,Zj -FNDA:0,$j -FNDA:0,_j -FNDA:0,ak -FNDA:0,bk -FNDA:0,ck -FNDA:0,dk -FNDA:0,ek -FNDA:0,(anonymous_1343) -FNDA:0,(anonymous_1344) -FNDA:0,(anonymous_1345) -FNDA:0,a -FNDA:0,(anonymous_1347) -FNDA:0,(anonymous_1348) -FNDA:0,(anonymous_1349) -FNDA:0,(anonymous_1350) -FNDA:0,(anonymous_1351) -FNDA:0,(anonymous_1352) -FNDA:0,(anonymous_1353) -FNDA:0,(anonymous_1354) -FNDA:0,(anonymous_1355) -FNDA:0,(anonymous_1356) -FNDA:0,(anonymous_1357) -FNDA:0,(anonymous_1358) -FNDA:0,(anonymous_1359) -FNDA:0,(anonymous_1360) -FNDA:0,(anonymous_1361) -FNDA:0,(anonymous_1362) -FNDA:0,(anonymous_1363) -FNDA:0,(anonymous_1364) -FNDA:0,(anonymous_1365) -FNDA:0,(anonymous_1366) -FNDA:0,(anonymous_1367) -FNDA:0,(anonymous_1368) -FNDA:0,(anonymous_1369) -FNDA:0,(anonymous_1370) -FNDA:0,(anonymous_1371) -FNDA:0,(anonymous_1372) -FNDA:0,(anonymous_1373) -FNDA:0,(anonymous_1374) -FNDA:0,(anonymous_1375) -FNDA:0,(anonymous_1376) -FNDA:0,(anonymous_1377) -FNDA:0,(anonymous_1378) -FNDA:0,(anonymous_1379) -FNDA:0,(anonymous_1380) -FNDA:0,(anonymous_1381) -FNDA:0,(anonymous_1382) -FNDA:0,(anonymous_1383) -FNDA:0,(anonymous_1384) -FNDA:0,(anonymous_1385) -FNDA:0,(anonymous_1386) -FNDA:0,(anonymous_1387) -FNDA:0,(anonymous_1388) -FNDA:0,(anonymous_1389) -FNDA:0,(anonymous_1390) -FNDA:0,(anonymous_1391) -FNDA:0,(anonymous_1392) -FNDA:0,(anonymous_1393) -FNDA:0,(anonymous_1394) -FNDA:0,(anonymous_1395) -FNDA:0,(anonymous_1396) -FNDA:0,(anonymous_1397) -FNDA:0,(anonymous_1398) -FNDA:0,(anonymous_1399) -FNDA:0,(anonymous_1400) -FNDA:0,(anonymous_1401) -FNDA:0,(anonymous_1402) -FNDA:0,(anonymous_1403) -FNDA:0,(anonymous_1404) -FNDA:0,(anonymous_1405) -FNDA:0,(anonymous_1406) -FNDA:0,(anonymous_1407) -FNDA:0,(anonymous_1408) -FNDA:0,(anonymous_1409) -FNDA:0,(anonymous_1410) -FNDA:0,(anonymous_1411) -FNDA:0,(anonymous_1412) -FNDA:0,(anonymous_1413) -FNDA:0,(anonymous_1414) -FNDA:0,(anonymous_1415) -FNDA:0,(anonymous_1416) -FNDA:0,(anonymous_1417) -FNDA:0,(anonymous_1418) -FNDA:0,(anonymous_1419) -FNDA:0,(anonymous_1420) -FNDA:0,(anonymous_1421) -FNDA:0,(anonymous_1422) -FNDA:0,(anonymous_1423) -FNDA:0,(anonymous_1424) -FNDA:0,(anonymous_1425) -FNDA:0,(anonymous_1426) -FNDA:0,(anonymous_1427) -FNDA:0,(anonymous_1428) -FNDA:0,(anonymous_1429) -FNDA:0,(anonymous_1430) -FNDA:0,(anonymous_1431) -FNDA:0,(anonymous_1432) -FNDA:0,(anonymous_1433) -FNDA:0,(anonymous_1434) -FNDA:0,(anonymous_1435) -FNDA:0,(anonymous_1436) -FNDA:0,(anonymous_1437) -FNDA:0,(anonymous_1438) -FNDA:0,(anonymous_1439) -FNDA:0,(anonymous_1440) -FNDA:0,(anonymous_1441) -FNDA:0,(anonymous_1442) -FNDA:0,(anonymous_1443) -FNDA:0,(anonymous_1444) -FNDA:0,(anonymous_1445) -FNDA:0,(anonymous_1446) -FNDA:0,(anonymous_1447) -FNDA:0,(anonymous_1448) -FNDA:0,(anonymous_1449) -FNDA:0,(anonymous_1450) -FNDA:0,(anonymous_1451) -FNDA:0,(anonymous_1452) -FNDA:0,(anonymous_1453) -FNDA:0,(anonymous_1454) -FNDA:0,(anonymous_1455) -FNDA:0,(anonymous_1456) -FNDA:0,(anonymous_1457) -FNDA:0,(anonymous_1458) -FNDA:0,(anonymous_1459) -FNDA:0,(anonymous_1460) -FNDA:0,d -FNDA:0,(anonymous_1462) -FNDA:0,(anonymous_1463) -FNDA:0,d -FNDA:0,(anonymous_1465) -FNDA:0,d -FNDA:0,(anonymous_1467) -FNDA:0,(anonymous_1468) -FNDA:0,(anonymous_1469) -FNDA:0,(anonymous_1470) -FNDA:0,(anonymous_1471) -FNDA:0,(anonymous_1472) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -LF:6 -LH:0 -BRDA:2,0,0,0 -BRDA:2,0,1,0 -BRDA:2,1,0,0 -BRDA:2,1,1,0 -BRDA:2,2,0,0 -BRDA:2,2,1,0 -BRDA:2,3,0,0 -BRDA:2,3,1,0 -BRDA:2,4,0,0 -BRDA:2,4,1,0 -BRDA:2,5,0,0 -BRDA:2,5,1,0 -BRDA:2,6,0,0 -BRDA:2,6,1,0 -BRDA:2,7,0,0 -BRDA:2,7,1,0 -BRDA:2,8,0,0 -BRDA:2,8,1,0 -BRDA:2,9,0,0 -BRDA:2,9,1,0 -BRDA:2,10,0,0 -BRDA:2,10,1,0 -BRDA:2,11,0,0 -BRDA:2,11,1,0 -BRDA:2,12,0,0 -BRDA:2,12,1,0 -BRDA:2,13,0,0 -BRDA:2,13,1,0 -BRDA:2,14,0,0 -BRDA:2,14,1,0 -BRDA:2,15,0,0 -BRDA:2,15,1,0 -BRDA:2,16,0,0 -BRDA:2,16,1,0 -BRDA:2,16,2,0 -BRDA:2,16,3,0 -BRDA:2,16,4,0 -BRDA:2,17,0,0 -BRDA:2,17,1,0 -BRDA:2,18,0,0 -BRDA:2,18,1,0 -BRDA:2,19,0,0 -BRDA:2,19,1,0 -BRDA:2,20,0,0 -BRDA:2,20,1,0 -BRDA:2,21,0,0 -BRDA:2,21,1,0 -BRDA:2,22,0,0 -BRDA:2,22,1,0 -BRDA:2,23,0,0 -BRDA:2,23,1,0 -BRDA:2,24,0,0 -BRDA:2,24,1,0 -BRDA:2,25,0,0 -BRDA:2,25,1,0 -BRDA:2,26,0,0 -BRDA:2,26,1,0 -BRDA:2,27,0,0 -BRDA:2,27,1,0 -BRDA:2,28,0,0 -BRDA:2,28,1,0 -BRDA:2,29,0,0 -BRDA:2,29,1,0 -BRDA:2,30,0,0 -BRDA:2,30,1,0 -BRDA:2,31,0,0 -BRDA:2,31,1,0 -BRDA:2,32,0,0 -BRDA:2,32,1,0 -BRDA:2,32,2,0 -BRDA:2,33,0,0 -BRDA:2,33,1,0 -BRDA:2,34,0,0 -BRDA:2,34,1,0 -BRDA:2,35,0,0 -BRDA:2,35,1,0 -BRDA:2,36,0,0 -BRDA:2,36,1,0 -BRDA:2,37,0,0 -BRDA:2,37,1,0 -BRDA:2,38,0,0 -BRDA:2,38,1,0 -BRDA:2,38,2,0 -BRDA:2,39,0,0 -BRDA:2,39,1,0 -BRDA:2,40,0,0 -BRDA:2,40,1,0 -BRDA:2,41,0,0 -BRDA:2,41,1,0 -BRDA:2,41,2,0 -BRDA:2,42,0,0 -BRDA:2,42,1,0 -BRDA:2,43,0,0 -BRDA:2,43,1,0 -BRDA:2,44,0,0 -BRDA:2,44,1,0 -BRDA:2,45,0,0 -BRDA:2,45,1,0 -BRDA:2,46,0,0 -BRDA:2,46,1,0 -BRDA:2,47,0,0 -BRDA:2,47,1,0 -BRDA:2,48,0,0 -BRDA:2,48,1,0 -BRDA:2,49,0,0 -BRDA:2,49,1,0 -BRDA:2,50,0,0 -BRDA:2,50,1,0 -BRDA:2,51,0,0 -BRDA:2,51,1,0 -BRDA:2,52,0,0 -BRDA:2,52,1,0 -BRDA:2,53,0,0 -BRDA:2,53,1,0 -BRDA:2,54,0,0 -BRDA:2,54,1,0 -BRDA:2,55,0,0 -BRDA:2,55,1,0 -BRDA:2,56,0,0 -BRDA:2,56,1,0 -BRDA:2,57,0,0 -BRDA:2,57,1,0 -BRDA:2,58,0,0 -BRDA:2,58,1,0 -BRDA:2,59,0,0 -BRDA:2,59,1,0 -BRDA:2,59,2,0 -BRDA:2,60,0,0 -BRDA:2,60,1,0 -BRDA:2,61,0,0 -BRDA:2,61,1,0 -BRDA:2,61,2,0 -BRDA:2,62,0,0 -BRDA:2,62,1,0 -BRDA:2,63,0,0 -BRDA:2,63,1,0 -BRDA:2,64,0,0 -BRDA:2,64,1,0 -BRDA:2,65,0,0 -BRDA:2,65,1,0 -BRDA:2,65,2,0 -BRDA:2,66,0,0 -BRDA:2,66,1,0 -BRDA:2,67,0,0 -BRDA:2,67,1,0 -BRDA:2,67,2,0 -BRDA:2,67,3,0 -BRDA:2,68,0,0 -BRDA:2,68,1,0 -BRDA:2,69,0,0 -BRDA:2,69,1,0 -BRDA:2,70,0,0 -BRDA:2,70,1,0 -BRDA:2,71,0,0 -BRDA:2,71,1,0 -BRDA:2,72,0,0 -BRDA:2,72,1,0 -BRDA:2,73,0,0 -BRDA:2,73,1,0 -BRDA:2,74,0,0 -BRDA:2,74,1,0 -BRDA:2,75,0,0 -BRDA:2,75,1,0 -BRDA:2,76,0,0 -BRDA:2,76,1,0 -BRDA:2,77,0,0 -BRDA:2,77,1,0 -BRDA:2,78,0,0 -BRDA:2,78,1,0 -BRDA:2,78,2,0 -BRDA:2,79,0,0 -BRDA:2,79,1,0 -BRDA:2,80,0,0 -BRDA:2,80,1,0 -BRDA:2,81,0,0 -BRDA:2,81,1,0 -BRDA:2,82,0,0 -BRDA:2,82,1,0 -BRDA:2,83,0,0 -BRDA:2,83,1,0 -BRDA:2,84,0,0 -BRDA:2,84,1,0 -BRDA:2,85,0,0 -BRDA:2,85,1,0 -BRDA:2,86,0,0 -BRDA:2,86,1,0 -BRDA:2,87,0,0 -BRDA:2,87,1,0 -BRDA:2,87,2,0 -BRDA:2,88,0,0 -BRDA:2,88,1,0 -BRDA:2,88,2,0 -BRDA:2,89,0,0 -BRDA:2,89,1,0 -BRDA:2,90,0,0 -BRDA:2,90,1,0 -BRDA:2,90,2,0 -BRDA:2,91,0,0 -BRDA:2,91,1,0 -BRDA:2,92,0,0 -BRDA:2,92,1,0 -BRDA:2,92,2,0 -BRDA:2,93,0,0 -BRDA:2,93,1,0 -BRDA:2,94,0,0 -BRDA:2,94,1,0 -BRDA:2,94,2,0 -BRDA:2,95,0,0 -BRDA:2,95,1,0 -BRDA:2,96,0,0 -BRDA:2,96,1,0 -BRDA:2,96,2,0 -BRDA:2,97,0,0 -BRDA:2,97,1,0 -BRDA:2,98,0,0 -BRDA:2,98,1,0 -BRDA:2,99,0,0 -BRDA:2,99,1,0 -BRDA:2,100,0,0 -BRDA:2,100,1,0 -BRDA:2,101,0,0 -BRDA:2,101,1,0 -BRDA:2,102,0,0 -BRDA:2,102,1,0 -BRDA:2,102,2,0 -BRDA:2,103,0,0 -BRDA:2,103,1,0 -BRDA:2,103,2,0 -BRDA:2,104,0,0 -BRDA:2,104,1,0 -BRDA:2,104,2,0 -BRDA:2,105,0,0 -BRDA:2,105,1,0 -BRDA:2,106,0,0 -BRDA:2,106,1,0 -BRDA:2,107,0,0 -BRDA:2,107,1,0 -BRDA:2,108,0,0 -BRDA:2,108,1,0 -BRDA:2,109,0,0 -BRDA:2,109,1,0 -BRDA:2,110,0,0 -BRDA:2,110,1,0 -BRDA:2,111,0,0 -BRDA:2,111,1,0 -BRDA:2,112,0,0 -BRDA:2,112,1,0 -BRDA:2,113,0,0 -BRDA:2,113,1,0 -BRDA:2,114,0,0 -BRDA:2,114,1,0 -BRDA:2,115,0,0 -BRDA:2,115,1,0 -BRDA:2,116,0,0 -BRDA:2,116,1,0 -BRDA:2,117,0,0 -BRDA:2,117,1,0 -BRDA:2,118,0,0 -BRDA:2,118,1,0 -BRDA:2,119,0,0 -BRDA:2,119,1,0 -BRDA:2,119,2,0 -BRDA:2,120,0,0 -BRDA:2,120,1,0 -BRDA:2,121,0,0 -BRDA:2,121,1,0 -BRDA:2,122,0,0 -BRDA:2,122,1,0 -BRDA:2,123,0,0 -BRDA:2,123,1,0 -BRDA:2,124,0,0 -BRDA:2,124,1,0 -BRDA:2,125,0,0 -BRDA:2,125,1,0 -BRDA:2,126,0,0 -BRDA:2,126,1,0 -BRDA:2,127,0,0 -BRDA:2,127,1,0 -BRDA:2,128,0,0 -BRDA:2,128,1,0 -BRDA:2,129,0,0 -BRDA:2,129,1,0 -BRDA:2,130,0,0 -BRDA:2,130,1,0 -BRDA:2,131,0,0 -BRDA:2,131,1,0 -BRDA:2,132,0,0 -BRDA:2,132,1,0 -BRDA:2,133,0,0 -BRDA:2,133,1,0 -BRDA:2,134,0,0 -BRDA:2,134,1,0 -BRDA:2,135,0,0 -BRDA:2,135,1,0 -BRDA:2,136,0,0 -BRDA:2,136,1,0 -BRDA:2,137,0,0 -BRDA:2,137,1,0 -BRDA:2,138,0,0 -BRDA:2,138,1,0 -BRDA:2,139,0,0 -BRDA:2,139,1,0 -BRDA:2,140,0,0 -BRDA:2,140,1,0 -BRDA:2,141,0,0 -BRDA:2,141,1,0 -BRDA:2,142,0,0 -BRDA:2,142,1,0 -BRDA:2,143,0,0 -BRDA:2,143,1,0 -BRDA:2,144,0,0 -BRDA:2,144,1,0 -BRDA:2,145,0,0 -BRDA:2,145,1,0 -BRDA:2,146,0,0 -BRDA:2,146,1,0 -BRDA:2,146,2,0 -BRDA:2,147,0,0 -BRDA:2,147,1,0 -BRDA:2,148,0,0 -BRDA:2,148,1,0 -BRDA:2,149,0,0 -BRDA:2,149,1,0 -BRDA:2,150,0,0 -BRDA:2,150,1,0 -BRDA:2,151,0,0 -BRDA:2,151,1,0 -BRDA:2,152,0,0 -BRDA:2,152,1,0 -BRDA:2,153,0,0 -BRDA:2,153,1,0 -BRDA:2,154,0,0 -BRDA:2,154,1,0 -BRDA:2,155,0,0 -BRDA:2,155,1,0 -BRDA:2,156,0,0 -BRDA:2,156,1,0 -BRDA:2,157,0,0 -BRDA:2,157,1,0 -BRDA:2,158,0,0 -BRDA:2,158,1,0 -BRDA:2,159,0,0 -BRDA:2,159,1,0 -BRDA:2,160,0,0 -BRDA:2,160,1,0 -BRDA:2,161,0,0 -BRDA:2,161,1,0 -BRDA:2,162,0,0 -BRDA:2,162,1,0 -BRDA:2,163,0,0 -BRDA:2,163,1,0 -BRDA:2,164,0,0 -BRDA:2,164,1,0 -BRDA:2,165,0,0 -BRDA:2,165,1,0 -BRDA:2,166,0,0 -BRDA:2,166,1,0 -BRDA:2,167,0,0 -BRDA:2,167,1,0 -BRDA:2,168,0,0 -BRDA:2,168,1,0 -BRDA:2,169,0,0 -BRDA:2,169,1,0 -BRDA:2,170,0,0 -BRDA:2,170,1,0 -BRDA:2,171,0,0 -BRDA:2,171,1,0 -BRDA:2,172,0,0 -BRDA:2,172,1,0 -BRDA:2,172,2,0 -BRDA:2,172,3,0 -BRDA:2,173,0,0 -BRDA:2,173,1,0 -BRDA:2,174,0,0 -BRDA:2,174,1,0 -BRDA:2,174,2,0 -BRDA:2,174,3,0 -BRDA:2,175,0,0 -BRDA:2,175,1,0 -BRDA:2,176,0,0 -BRDA:2,176,1,0 -BRDA:2,177,0,0 -BRDA:2,177,1,0 -BRDA:2,178,0,0 -BRDA:2,178,1,0 -BRDA:2,179,0,0 -BRDA:2,179,1,0 -BRDA:2,180,0,0 -BRDA:2,180,1,0 -BRDA:2,181,0,0 -BRDA:2,181,1,0 -BRDA:2,182,0,0 -BRDA:2,182,1,0 -BRDA:2,183,0,0 -BRDA:2,183,1,0 -BRDA:2,184,0,0 -BRDA:2,184,1,0 -BRDA:2,185,0,0 -BRDA:2,185,1,0 -BRDA:2,186,0,0 -BRDA:2,186,1,0 -BRDA:2,187,0,0 -BRDA:2,187,1,0 -BRDA:2,187,2,0 -BRDA:2,188,0,0 -BRDA:2,188,1,0 -BRDA:2,189,0,0 -BRDA:2,189,1,0 -BRDA:2,190,0,0 -BRDA:2,190,1,0 -BRDA:2,191,0,0 -BRDA:2,191,1,0 -BRDA:2,192,0,0 -BRDA:2,192,1,0 -BRDA:2,193,0,0 -BRDA:2,193,1,0 -BRDA:2,194,0,0 -BRDA:2,194,1,0 -BRDA:2,195,0,0 -BRDA:2,195,1,0 -BRDA:2,195,2,0 -BRDA:2,195,3,0 -BRDA:2,196,0,0 -BRDA:2,196,1,0 -BRDA:2,197,0,0 -BRDA:2,197,1,0 -BRDA:2,198,0,0 -BRDA:2,198,1,0 -BRDA:2,199,0,0 -BRDA:2,199,1,0 -BRDA:2,200,0,0 -BRDA:2,200,1,0 -BRDA:2,201,0,0 -BRDA:2,201,1,0 -BRDA:2,202,0,0 -BRDA:2,202,1,0 -BRDA:2,203,0,0 -BRDA:2,203,1,0 -BRDA:2,203,2,0 -BRDA:2,204,0,0 -BRDA:2,204,1,0 -BRDA:2,205,0,0 -BRDA:2,205,1,0 -BRDA:2,206,0,0 -BRDA:2,206,1,0 -BRDA:2,207,0,0 -BRDA:2,207,1,0 -BRDA:2,208,0,0 -BRDA:2,208,1,0 -BRDA:2,209,0,0 -BRDA:2,209,1,0 -BRDA:2,209,2,0 -BRDA:2,209,3,0 -BRDA:2,209,4,0 -BRDA:2,210,0,0 -BRDA:2,210,1,0 -BRDA:2,211,0,0 -BRDA:2,211,1,0 -BRDA:2,212,0,0 -BRDA:2,212,1,0 -BRDA:2,213,0,0 -BRDA:2,213,1,0 -BRDA:2,214,0,0 -BRDA:2,214,1,0 -BRDA:2,214,2,0 -BRDA:2,215,0,0 -BRDA:2,215,1,0 -BRDA:2,216,0,0 -BRDA:2,216,1,0 -BRDA:2,216,2,0 -BRDA:2,217,0,0 -BRDA:2,217,1,0 -BRDA:2,218,0,0 -BRDA:2,218,1,0 -BRDA:2,219,0,0 -BRDA:2,219,1,0 -BRDA:2,220,0,0 -BRDA:2,220,1,0 -BRDA:2,221,0,0 -BRDA:2,221,1,0 -BRDA:2,222,0,0 -BRDA:2,222,1,0 -BRDA:2,222,2,0 -BRDA:2,223,0,0 -BRDA:2,223,1,0 -BRDA:2,224,0,0 -BRDA:2,224,1,0 -BRDA:2,225,0,0 -BRDA:2,225,1,0 -BRDA:2,226,0,0 -BRDA:2,226,1,0 -BRDA:2,227,0,0 -BRDA:2,227,1,0 -BRDA:2,228,0,0 -BRDA:2,228,1,0 -BRDA:2,229,0,0 -BRDA:2,229,1,0 -BRDA:2,230,0,0 -BRDA:2,230,1,0 -BRDA:2,231,0,0 -BRDA:2,231,1,0 -BRDA:2,232,0,0 -BRDA:2,232,1,0 -BRDA:2,233,0,0 -BRDA:2,233,1,0 -BRDA:2,234,0,0 -BRDA:2,234,1,0 -BRDA:2,235,0,0 -BRDA:2,235,1,0 -BRDA:2,236,0,0 -BRDA:2,236,1,0 -BRDA:2,237,0,0 -BRDA:2,237,1,0 -BRDA:2,238,0,0 -BRDA:2,238,1,0 -BRDA:2,239,0,0 -BRDA:2,239,1,0 -BRDA:2,240,0,0 -BRDA:2,240,1,0 -BRDA:2,241,0,0 -BRDA:2,241,1,0 -BRDA:2,242,0,0 -BRDA:2,242,1,0 -BRDA:2,243,0,0 -BRDA:2,243,1,0 -BRDA:2,244,0,0 -BRDA:2,244,1,0 -BRDA:2,245,0,0 -BRDA:2,245,1,0 -BRDA:2,246,0,0 -BRDA:2,246,1,0 -BRDA:2,247,0,0 -BRDA:2,247,1,0 -BRDA:2,248,0,0 -BRDA:2,248,1,0 -BRDA:2,249,0,0 -BRDA:2,249,1,0 -BRDA:2,249,2,0 -BRDA:2,249,3,0 -BRDA:2,250,0,0 -BRDA:2,250,1,0 -BRDA:2,251,0,0 -BRDA:2,251,1,0 -BRDA:2,252,0,0 -BRDA:2,252,1,0 -BRDA:2,253,0,0 -BRDA:2,253,1,0 -BRDA:2,254,0,0 -BRDA:2,254,1,0 -BRDA:2,255,0,0 -BRDA:2,255,1,0 -BRDA:2,256,0,0 -BRDA:2,256,1,0 -BRDA:2,257,0,0 -BRDA:2,257,1,0 -BRDA:2,258,0,0 -BRDA:2,258,1,0 -BRDA:2,259,0,0 -BRDA:2,259,1,0 -BRDA:2,259,2,0 -BRDA:2,260,0,0 -BRDA:2,260,1,0 -BRDA:2,261,0,0 -BRDA:2,261,1,0 -BRDA:2,262,0,0 -BRDA:2,262,1,0 -BRDA:2,263,0,0 -BRDA:2,263,1,0 -BRDA:2,264,0,0 -BRDA:2,264,1,0 -BRDA:2,265,0,0 -BRDA:2,265,1,0 -BRDA:2,266,0,0 -BRDA:2,266,1,0 -BRDA:2,267,0,0 -BRDA:2,267,1,0 -BRDA:2,268,0,0 -BRDA:2,268,1,0 -BRDA:2,268,2,0 -BRDA:2,269,0,0 -BRDA:2,269,1,0 -BRDA:2,270,0,0 -BRDA:2,270,1,0 -BRDA:2,271,0,0 -BRDA:2,271,1,0 -BRDA:2,272,0,0 -BRDA:2,272,1,0 -BRDA:2,273,0,0 -BRDA:2,273,1,0 -BRDA:2,274,0,0 -BRDA:2,274,1,0 -BRDA:2,275,0,0 -BRDA:2,275,1,0 -BRDA:2,276,0,0 -BRDA:2,276,1,0 -BRDA:2,276,2,0 -BRDA:2,276,3,0 -BRDA:2,276,4,0 -BRDA:2,276,5,0 -BRDA:2,276,6,0 -BRDA:2,276,7,0 -BRDA:2,276,8,0 -BRDA:2,276,9,0 -BRDA:2,276,10,0 -BRDA:2,276,11,0 -BRDA:2,276,12,0 -BRDA:2,277,0,0 -BRDA:2,277,1,0 -BRDA:2,278,0,0 -BRDA:2,278,1,0 -BRDA:2,279,0,0 -BRDA:2,279,1,0 -BRDA:2,280,0,0 -BRDA:2,280,1,0 -BRDA:2,281,0,0 -BRDA:2,281,1,0 -BRDA:2,282,0,0 -BRDA:2,282,1,0 -BRDA:2,283,0,0 -BRDA:2,283,1,0 -BRDA:2,284,0,0 -BRDA:2,284,1,0 -BRDA:2,284,2,0 -BRDA:2,284,3,0 -BRDA:2,284,4,0 -BRDA:2,284,5,0 -BRDA:2,284,6,0 -BRDA:2,284,7,0 -BRDA:2,284,8,0 -BRDA:2,284,9,0 -BRDA:2,284,10,0 -BRDA:2,285,0,0 -BRDA:2,285,1,0 -BRDA:2,286,0,0 -BRDA:2,286,1,0 -BRDA:2,287,0,0 -BRDA:2,287,1,0 -BRDA:2,288,0,0 -BRDA:2,288,1,0 -BRDA:2,289,0,0 -BRDA:2,289,1,0 -BRDA:2,290,0,0 -BRDA:2,290,1,0 -BRDA:2,291,0,0 -BRDA:2,291,1,0 -BRDA:2,292,0,0 -BRDA:2,292,1,0 -BRDA:2,293,0,0 -BRDA:2,293,1,0 -BRDA:2,294,0,0 -BRDA:2,294,1,0 -BRDA:2,295,0,0 -BRDA:2,295,1,0 -BRDA:2,296,0,0 -BRDA:2,296,1,0 -BRDA:2,297,0,0 -BRDA:2,297,1,0 -BRDA:2,298,0,0 -BRDA:2,298,1,0 -BRDA:2,298,2,0 -BRDA:2,298,3,0 -BRDA:2,299,0,0 -BRDA:2,299,1,0 -BRDA:2,300,0,0 -BRDA:2,300,1,0 -BRDA:2,301,0,0 -BRDA:2,301,1,0 -BRDA:2,302,0,0 -BRDA:2,302,1,0 -BRDA:2,302,2,0 -BRDA:2,303,0,0 -BRDA:2,303,1,0 -BRDA:2,303,2,0 -BRDA:2,303,3,0 -BRDA:2,304,0,0 -BRDA:2,304,1,0 -BRDA:2,304,2,0 -BRDA:2,304,3,0 -BRDA:2,305,0,0 -BRDA:2,305,1,0 -BRDA:2,305,2,0 -BRDA:2,306,0,0 -BRDA:2,306,1,0 -BRDA:2,307,0,0 -BRDA:2,307,1,0 -BRDA:2,308,0,0 -BRDA:2,308,1,0 -BRDA:2,309,0,0 -BRDA:2,309,1,0 -BRDA:2,309,2,0 -BRDA:2,310,0,0 -BRDA:2,310,1,0 -BRDA:2,310,2,0 -BRDA:2,310,3,0 -BRDA:2,311,0,0 -BRDA:2,311,1,0 -BRDA:2,312,0,0 -BRDA:2,312,1,0 -BRDA:2,313,0,0 -BRDA:2,313,1,0 -BRDA:2,314,0,0 -BRDA:2,314,1,0 -BRDA:2,315,0,0 -BRDA:2,315,1,0 -BRDA:2,316,0,0 -BRDA:2,316,1,0 -BRDA:2,317,0,0 -BRDA:2,317,1,0 -BRDA:2,318,0,0 -BRDA:2,318,1,0 -BRDA:2,319,0,0 -BRDA:2,319,1,0 -BRDA:2,320,0,0 -BRDA:2,320,1,0 -BRDA:2,321,0,0 -BRDA:2,321,1,0 -BRDA:2,322,0,0 -BRDA:2,322,1,0 -BRDA:2,323,0,0 -BRDA:2,323,1,0 -BRDA:2,324,0,0 -BRDA:2,324,1,0 -BRDA:2,325,0,0 -BRDA:2,325,1,0 -BRDA:2,326,0,0 -BRDA:2,326,1,0 -BRDA:2,327,0,0 -BRDA:2,327,1,0 -BRDA:2,328,0,0 -BRDA:2,328,1,0 -BRDA:2,329,0,0 -BRDA:2,329,1,0 -BRDA:2,330,0,0 -BRDA:2,330,1,0 -BRDA:2,331,0,0 -BRDA:2,331,1,0 -BRDA:2,332,0,0 -BRDA:2,332,1,0 -BRDA:2,333,0,0 -BRDA:2,333,1,0 -BRDA:2,334,0,0 -BRDA:2,334,1,0 -BRDA:2,335,0,0 -BRDA:2,335,1,0 -BRDA:2,336,0,0 -BRDA:2,336,1,0 -BRDA:2,337,0,0 -BRDA:2,337,1,0 -BRDA:2,338,0,0 -BRDA:2,338,1,0 -BRDA:2,339,0,0 -BRDA:2,339,1,0 -BRDA:2,340,0,0 -BRDA:2,340,1,0 -BRDA:2,341,0,0 -BRDA:2,341,1,0 -BRDA:2,342,0,0 -BRDA:2,342,1,0 -BRDA:2,342,2,0 -BRDA:2,343,0,0 -BRDA:2,343,1,0 -BRDA:2,344,0,0 -BRDA:2,344,1,0 -BRDA:2,345,0,0 -BRDA:2,345,1,0 -BRDA:2,346,0,0 -BRDA:2,346,1,0 -BRDA:2,347,0,0 -BRDA:2,347,1,0 -BRDA:2,348,0,0 -BRDA:2,348,1,0 -BRDA:2,349,0,0 -BRDA:2,349,1,0 -BRDA:2,350,0,0 -BRDA:2,350,1,0 -BRDA:2,351,0,0 -BRDA:2,351,1,0 -BRDA:2,352,0,0 -BRDA:2,352,1,0 -BRDA:2,353,0,0 -BRDA:2,353,1,0 -BRDA:2,354,0,0 -BRDA:2,354,1,0 -BRDA:2,355,0,0 -BRDA:2,355,1,0 -BRDA:2,356,0,0 -BRDA:2,356,1,0 -BRDA:3,357,0,0 -BRDA:3,357,1,0 -BRDA:3,358,0,0 -BRDA:3,358,1,0 -BRDA:3,359,0,0 -BRDA:3,359,1,0 -BRDA:3,360,0,0 -BRDA:3,360,1,0 -BRDA:3,361,0,0 -BRDA:3,361,1,0 -BRDA:3,362,0,0 -BRDA:3,362,1,0 -BRDA:3,363,0,0 -BRDA:3,363,1,0 -BRDA:3,364,0,0 -BRDA:3,364,1,0 -BRDA:3,364,2,0 -BRDA:3,364,3,0 -BRDA:3,364,4,0 -BRDA:3,364,5,0 -BRDA:3,364,6,0 -BRDA:3,364,7,0 -BRDA:3,364,8,0 -BRDA:3,364,9,0 -BRDA:3,364,10,0 -BRDA:3,364,11,0 -BRDA:3,365,0,0 -BRDA:3,365,1,0 -BRDA:3,366,0,0 -BRDA:3,366,1,0 -BRDA:3,367,0,0 -BRDA:3,367,1,0 -BRDA:3,368,0,0 -BRDA:3,368,1,0 -BRDA:3,369,0,0 -BRDA:3,369,1,0 -BRDA:3,370,0,0 -BRDA:3,370,1,0 -BRDA:3,371,0,0 -BRDA:3,371,1,0 -BRDA:3,372,0,0 -BRDA:3,372,1,0 -BRDA:3,373,0,0 -BRDA:3,373,1,0 -BRDA:3,374,0,0 -BRDA:3,374,1,0 -BRDA:3,375,0,0 -BRDA:3,375,1,0 -BRDA:3,376,0,0 -BRDA:3,376,1,0 -BRDA:3,377,0,0 -BRDA:3,377,1,0 -BRDA:3,378,0,0 -BRDA:3,378,1,0 -BRDA:3,379,0,0 -BRDA:3,379,1,0 -BRDA:3,380,0,0 -BRDA:3,380,1,0 -BRDA:3,381,0,0 -BRDA:3,381,1,0 -BRDA:3,382,0,0 -BRDA:3,382,1,0 -BRDA:3,383,0,0 -BRDA:3,383,1,0 -BRDA:3,384,0,0 -BRDA:3,384,1,0 -BRDA:3,385,0,0 -BRDA:3,385,1,0 -BRDA:3,386,0,0 -BRDA:3,386,1,0 -BRDA:3,387,0,0 -BRDA:3,387,1,0 -BRDA:3,388,0,0 -BRDA:3,388,1,0 -BRDA:3,389,0,0 -BRDA:3,389,1,0 -BRDA:3,390,0,0 -BRDA:3,390,1,0 -BRDA:3,391,0,0 -BRDA:3,391,1,0 -BRDA:3,392,0,0 -BRDA:3,392,1,0 -BRDA:3,393,0,0 -BRDA:3,393,1,0 -BRDA:3,394,0,0 -BRDA:3,394,1,0 -BRDA:3,395,0,0 -BRDA:3,395,1,0 -BRDA:3,396,0,0 -BRDA:3,396,1,0 -BRDA:3,397,0,0 -BRDA:3,397,1,0 -BRDA:3,398,0,0 -BRDA:3,398,1,0 -BRDA:3,398,2,0 -BRDA:3,399,0,0 -BRDA:3,399,1,0 -BRDA:3,399,2,0 -BRDA:3,399,3,0 -BRDA:3,400,0,0 -BRDA:3,400,1,0 -BRDA:3,401,0,0 -BRDA:3,401,1,0 -BRDA:3,401,2,0 -BRDA:3,401,3,0 -BRDA:3,401,4,0 -BRDA:3,401,5,0 -BRDA:3,401,6,0 -BRDA:3,401,7,0 -BRDA:3,401,8,0 -BRDA:3,401,9,0 -BRDA:3,401,10,0 -BRDA:3,402,0,0 -BRDA:3,402,1,0 -BRDA:3,403,0,0 -BRDA:3,403,1,0 -BRDA:3,404,0,0 -BRDA:3,404,1,0 -BRDA:3,405,0,0 -BRDA:3,405,1,0 -BRDA:3,406,0,0 -BRDA:3,406,1,0 -BRDA:3,407,0,0 -BRDA:3,407,1,0 -BRDA:3,408,0,0 -BRDA:3,408,1,0 -BRDA:3,409,0,0 -BRDA:3,409,1,0 -BRDA:3,410,0,0 -BRDA:3,410,1,0 -BRDA:3,411,0,0 -BRDA:3,411,1,0 -BRDA:3,412,0,0 -BRDA:3,412,1,0 -BRDA:3,413,0,0 -BRDA:3,413,1,0 -BRDA:3,414,0,0 -BRDA:3,414,1,0 -BRDA:3,415,0,0 -BRDA:3,415,1,0 -BRDA:3,416,0,0 -BRDA:3,416,1,0 -BRDA:3,417,0,0 -BRDA:3,417,1,0 -BRDA:3,418,0,0 -BRDA:3,418,1,0 -BRDA:3,419,0,0 -BRDA:3,419,1,0 -BRDA:3,420,0,0 -BRDA:3,420,1,0 -BRDA:3,421,0,0 -BRDA:3,421,1,0 -BRDA:3,422,0,0 -BRDA:3,422,1,0 -BRDA:3,423,0,0 -BRDA:3,423,1,0 -BRDA:3,424,0,0 -BRDA:3,424,1,0 -BRDA:3,425,0,0 -BRDA:3,425,1,0 -BRDA:3,426,0,0 -BRDA:3,426,1,0 -BRDA:3,427,0,0 -BRDA:3,427,1,0 -BRDA:3,428,0,0 -BRDA:3,428,1,0 -BRDA:3,429,0,0 -BRDA:3,429,1,0 -BRDA:3,430,0,0 -BRDA:3,430,1,0 -BRDA:3,431,0,0 -BRDA:3,431,1,0 -BRDA:3,432,0,0 -BRDA:3,432,1,0 -BRDA:3,433,0,0 -BRDA:3,433,1,0 -BRDA:3,434,0,0 -BRDA:3,434,1,0 -BRDA:3,435,0,0 -BRDA:3,435,1,0 -BRDA:3,436,0,0 -BRDA:3,436,1,0 -BRDA:3,437,0,0 -BRDA:3,437,1,0 -BRDA:3,438,0,0 -BRDA:3,438,1,0 -BRDA:3,439,0,0 -BRDA:3,439,1,0 -BRDA:3,440,0,0 -BRDA:3,440,1,0 -BRDA:3,441,0,0 -BRDA:3,441,1,0 -BRDA:3,442,0,0 -BRDA:3,442,1,0 -BRDA:3,443,0,0 -BRDA:3,443,1,0 -BRDA:3,444,0,0 -BRDA:3,444,1,0 -BRDA:3,445,0,0 -BRDA:3,445,1,0 -BRDA:3,446,0,0 -BRDA:3,446,1,0 -BRDA:3,447,0,0 -BRDA:3,447,1,0 -BRDA:3,448,0,0 -BRDA:3,448,1,0 -BRDA:3,449,0,0 -BRDA:3,449,1,0 -BRDA:3,450,0,0 -BRDA:3,450,1,0 -BRDA:3,451,0,0 -BRDA:3,451,1,0 -BRDA:3,452,0,0 -BRDA:3,452,1,0 -BRDA:3,453,0,0 -BRDA:3,453,1,0 -BRDA:3,454,0,0 -BRDA:3,454,1,0 -BRDA:3,455,0,0 -BRDA:3,455,1,0 -BRDA:3,456,0,0 -BRDA:3,456,1,0 -BRDA:3,457,0,0 -BRDA:3,457,1,0 -BRDA:3,458,0,0 -BRDA:3,458,1,0 -BRDA:3,459,0,0 -BRDA:3,459,1,0 -BRDA:3,460,0,0 -BRDA:3,460,1,0 -BRDA:3,461,0,0 -BRDA:3,461,1,0 -BRDA:3,462,0,0 -BRDA:3,462,1,0 -BRDA:3,463,0,0 -BRDA:3,463,1,0 -BRDA:3,464,0,0 -BRDA:3,464,1,0 -BRDA:3,465,0,0 -BRDA:3,465,1,0 -BRDA:3,466,0,0 -BRDA:3,466,1,0 -BRDA:3,467,0,0 -BRDA:3,467,1,0 -BRDA:3,468,0,0 -BRDA:3,468,1,0 -BRDA:3,469,0,0 -BRDA:3,469,1,0 -BRDA:3,470,0,0 -BRDA:3,470,1,0 -BRDA:3,471,0,0 -BRDA:3,471,1,0 -BRDA:3,472,0,0 -BRDA:3,472,1,0 -BRDA:3,473,0,0 -BRDA:3,473,1,0 -BRDA:3,474,0,0 -BRDA:3,474,1,0 -BRDA:3,475,0,0 -BRDA:3,475,1,0 -BRDA:3,476,0,0 -BRDA:3,476,1,0 -BRDA:3,476,2,0 -BRDA:3,477,0,0 -BRDA:3,477,1,0 -BRDA:3,478,0,0 -BRDA:3,478,1,0 -BRDA:3,479,0,0 -BRDA:3,479,1,0 -BRDA:3,479,2,0 -BRDA:3,480,0,0 -BRDA:3,480,1,0 -BRDA:3,481,0,0 -BRDA:3,481,1,0 -BRDA:3,482,0,0 -BRDA:3,482,1,0 -BRDA:3,483,0,0 -BRDA:3,483,1,0 -BRDA:3,484,0,0 -BRDA:3,484,1,0 -BRDA:3,485,0,0 -BRDA:3,485,1,0 -BRDA:3,486,0,0 -BRDA:3,486,1,0 -BRDA:3,487,0,0 -BRDA:3,487,1,0 -BRDA:3,488,0,0 -BRDA:3,488,1,0 -BRDA:3,489,0,0 -BRDA:3,489,1,0 -BRDA:3,489,2,0 -BRDA:3,490,0,0 -BRDA:3,490,1,0 -BRDA:3,491,0,0 -BRDA:3,491,1,0 -BRDA:3,492,0,0 -BRDA:3,492,1,0 -BRDA:3,493,0,0 -BRDA:3,493,1,0 -BRDA:3,494,0,0 -BRDA:3,494,1,0 -BRDA:3,495,0,0 -BRDA:3,495,1,0 -BRDA:3,496,0,0 -BRDA:3,496,1,0 -BRDA:3,497,0,0 -BRDA:3,497,1,0 -BRDA:3,498,0,0 -BRDA:3,498,1,0 -BRDA:3,499,0,0 -BRDA:3,499,1,0 -BRDA:3,500,0,0 -BRDA:3,500,1,0 -BRDA:3,501,0,0 -BRDA:3,501,1,0 -BRDA:3,502,0,0 -BRDA:3,502,1,0 -BRDA:3,503,0,0 -BRDA:3,503,1,0 -BRDA:3,504,0,0 -BRDA:3,504,1,0 -BRDA:3,505,0,0 -BRDA:3,505,1,0 -BRDA:3,506,0,0 -BRDA:3,506,1,0 -BRDA:3,507,0,0 -BRDA:3,507,1,0 -BRDA:3,508,0,0 -BRDA:3,508,1,0 -BRDA:3,509,0,0 -BRDA:3,509,1,0 -BRDA:3,510,0,0 -BRDA:3,510,1,0 -BRDA:3,511,0,0 -BRDA:3,511,1,0 -BRDA:3,512,0,0 -BRDA:3,512,1,0 -BRDA:3,513,0,0 -BRDA:3,513,1,0 -BRDA:3,514,0,0 -BRDA:3,514,1,0 -BRDA:3,515,0,0 -BRDA:3,515,1,0 -BRDA:3,516,0,0 -BRDA:3,516,1,0 -BRDA:3,517,0,0 -BRDA:3,517,1,0 -BRDA:3,518,0,0 -BRDA:3,518,1,0 -BRDA:3,519,0,0 -BRDA:3,519,1,0 -BRDA:3,520,0,0 -BRDA:3,520,1,0 -BRDA:3,521,0,0 -BRDA:3,521,1,0 -BRDA:3,522,0,0 -BRDA:3,522,1,0 -BRDA:3,523,0,0 -BRDA:3,523,1,0 -BRDA:3,524,0,0 -BRDA:3,524,1,0 -BRDA:3,525,0,0 -BRDA:3,525,1,0 -BRDA:3,526,0,0 -BRDA:3,526,1,0 -BRDA:3,527,0,0 -BRDA:3,527,1,0 -BRDA:3,528,0,0 -BRDA:3,528,1,0 -BRDA:3,529,0,0 -BRDA:3,529,1,0 -BRDA:3,530,0,0 -BRDA:3,530,1,0 -BRDA:3,531,0,0 -BRDA:3,531,1,0 -BRDA:3,532,0,0 -BRDA:3,532,1,0 -BRDA:3,533,0,0 -BRDA:3,533,1,0 -BRDA:3,534,0,0 -BRDA:3,534,1,0 -BRDA:3,535,0,0 -BRDA:3,535,1,0 -BRDA:3,536,0,0 -BRDA:3,536,1,0 -BRDA:3,536,2,0 -BRDA:3,537,0,0 -BRDA:3,537,1,0 -BRDA:3,538,0,0 -BRDA:3,538,1,0 -BRDA:3,539,0,0 -BRDA:3,539,1,0 -BRDA:3,540,0,0 -BRDA:3,540,1,0 -BRDA:3,541,0,0 -BRDA:3,541,1,0 -BRDA:3,542,0,0 -BRDA:3,542,1,0 -BRDA:3,543,0,0 -BRDA:3,543,1,0 -BRDA:3,544,0,0 -BRDA:3,544,1,0 -BRDA:3,545,0,0 -BRDA:3,545,1,0 -BRDA:3,546,0,0 -BRDA:3,546,1,0 -BRDA:3,547,0,0 -BRDA:3,547,1,0 -BRDA:3,548,0,0 -BRDA:3,548,1,0 -BRDA:3,549,0,0 -BRDA:3,549,1,0 -BRDA:3,550,0,0 -BRDA:3,550,1,0 -BRDA:3,550,2,0 -BRDA:3,551,0,0 -BRDA:3,551,1,0 -BRDA:3,552,0,0 -BRDA:3,552,1,0 -BRDA:3,553,0,0 -BRDA:3,553,1,0 -BRDA:3,553,2,0 -BRDA:3,553,3,0 -BRDA:3,554,0,0 -BRDA:3,554,1,0 -BRDA:3,555,0,0 -BRDA:3,555,1,0 -BRDA:3,556,0,0 -BRDA:3,556,1,0 -BRDA:3,557,0,0 -BRDA:3,557,1,0 -BRDA:3,557,2,0 -BRDA:3,557,3,0 -BRDA:3,558,0,0 -BRDA:3,558,1,0 -BRDA:3,559,0,0 -BRDA:3,559,1,0 -BRDA:3,560,0,0 -BRDA:3,560,1,0 -BRDA:3,561,0,0 -BRDA:3,561,1,0 -BRDA:3,562,0,0 -BRDA:3,562,1,0 -BRDA:3,563,0,0 -BRDA:3,563,1,0 -BRDA:3,564,0,0 -BRDA:3,564,1,0 -BRDA:3,565,0,0 -BRDA:3,565,1,0 -BRDA:3,566,0,0 -BRDA:3,566,1,0 -BRDA:3,567,0,0 -BRDA:3,567,1,0 -BRDA:3,568,0,0 -BRDA:3,568,1,0 -BRDA:3,568,2,0 -BRDA:3,568,3,0 -BRDA:3,569,0,0 -BRDA:3,569,1,0 -BRDA:3,570,0,0 -BRDA:3,570,1,0 -BRDA:3,571,0,0 -BRDA:3,571,1,0 -BRDA:3,572,0,0 -BRDA:3,572,1,0 -BRDA:3,573,0,0 -BRDA:3,573,1,0 -BRDA:3,574,0,0 -BRDA:3,574,1,0 -BRDA:3,575,0,0 -BRDA:3,575,1,0 -BRDA:3,576,0,0 -BRDA:3,576,1,0 -BRDA:3,576,2,0 -BRDA:3,577,0,0 -BRDA:3,577,1,0 -BRDA:3,578,0,0 -BRDA:3,578,1,0 -BRDA:3,579,0,0 -BRDA:3,579,1,0 -BRDA:3,580,0,0 -BRDA:3,580,1,0 -BRDA:3,580,2,0 -BRDA:3,581,0,0 -BRDA:3,581,1,0 -BRDA:3,582,0,0 -BRDA:3,582,1,0 -BRDA:3,583,0,0 -BRDA:3,583,1,0 -BRDA:3,584,0,0 -BRDA:3,584,1,0 -BRDA:3,585,0,0 -BRDA:3,585,1,0 -BRDA:3,586,0,0 -BRDA:3,586,1,0 -BRDA:3,587,0,0 -BRDA:3,587,1,0 -BRDA:3,588,0,0 -BRDA:3,588,1,0 -BRDA:3,589,0,0 -BRDA:3,589,1,0 -BRDA:3,590,0,0 -BRDA:3,590,1,0 -BRDA:3,591,0,0 -BRDA:3,591,1,0 -BRDA:3,592,0,0 -BRDA:3,592,1,0 -BRDA:3,593,0,0 -BRDA:3,593,1,0 -BRDA:3,594,0,0 -BRDA:3,594,1,0 -BRDA:3,595,0,0 -BRDA:3,595,1,0 -BRDA:3,596,0,0 -BRDA:3,596,1,0 -BRDA:3,597,0,0 -BRDA:3,597,1,0 -BRDA:3,598,0,0 -BRDA:3,598,1,0 -BRDA:3,599,0,0 -BRDA:3,599,1,0 -BRDA:3,599,2,0 -BRDA:3,599,3,0 -BRDA:3,600,0,0 -BRDA:3,600,1,0 -BRDA:3,601,0,0 -BRDA:3,601,1,0 -BRDA:3,602,0,0 -BRDA:3,602,1,0 -BRDA:3,603,0,0 -BRDA:3,603,1,0 -BRDA:3,604,0,0 -BRDA:3,604,1,0 -BRDA:3,605,0,0 -BRDA:3,605,1,0 -BRDA:3,606,0,0 -BRDA:3,606,1,0 -BRDA:3,607,0,0 -BRDA:3,607,1,0 -BRDA:3,608,0,0 -BRDA:3,608,1,0 -BRDA:3,608,2,0 -BRDA:3,609,0,0 -BRDA:3,609,1,0 -BRDA:3,610,0,0 -BRDA:3,610,1,0 -BRDA:3,611,0,0 -BRDA:3,611,1,0 -BRDA:3,611,2,0 -BRDA:3,612,0,0 -BRDA:3,612,1,0 -BRDA:3,613,0,0 -BRDA:3,613,1,0 -BRDA:3,614,0,0 -BRDA:3,614,1,0 -BRDA:3,615,0,0 -BRDA:3,615,1,0 -BRDA:3,616,0,0 -BRDA:3,616,1,0 -BRDA:3,617,0,0 -BRDA:3,617,1,0 -BRDA:3,618,0,0 -BRDA:3,618,1,0 -BRDA:3,619,0,0 -BRDA:3,619,1,0 -BRDA:3,620,0,0 -BRDA:3,620,1,0 -BRDA:3,621,0,0 -BRDA:3,621,1,0 -BRDA:3,622,0,0 -BRDA:3,622,1,0 -BRDA:3,622,2,0 -BRDA:3,623,0,0 -BRDA:3,623,1,0 -BRDA:3,624,0,0 -BRDA:3,624,1,0 -BRDA:3,625,0,0 -BRDA:3,625,1,0 -BRDA:3,626,0,0 -BRDA:3,626,1,0 -BRDA:3,627,0,0 -BRDA:3,627,1,0 -BRDA:3,628,0,0 -BRDA:3,628,1,0 -BRDA:3,629,0,0 -BRDA:3,629,1,0 -BRDA:3,629,2,0 -BRDA:3,630,0,0 -BRDA:3,630,1,0 -BRDA:3,631,0,0 -BRDA:3,631,1,0 -BRDA:3,632,0,0 -BRDA:3,632,1,0 -BRDA:3,632,2,0 -BRDA:3,633,0,0 -BRDA:3,633,1,0 -BRDA:3,634,0,0 -BRDA:3,634,1,0 -BRDA:3,635,0,0 -BRDA:3,635,1,0 -BRDA:3,636,0,0 -BRDA:3,636,1,0 -BRDA:3,637,0,0 -BRDA:3,637,1,0 -BRDA:3,637,2,0 -BRDA:3,637,3,0 -BRDA:3,638,0,0 -BRDA:3,638,1,0 -BRDA:3,638,2,0 -BRDA:3,638,3,0 -BRDA:3,639,0,0 -BRDA:3,639,1,0 -BRDA:3,640,0,0 -BRDA:3,640,1,0 -BRDA:3,640,2,0 -BRDA:3,640,3,0 -BRDA:3,641,0,0 -BRDA:3,641,1,0 -BRDA:3,642,0,0 -BRDA:3,642,1,0 -BRDA:3,642,2,0 -BRDA:3,643,0,0 -BRDA:3,643,1,0 -BRDA:3,644,0,0 -BRDA:3,644,1,0 -BRDA:3,645,0,0 -BRDA:3,645,1,0 -BRDA:3,646,0,0 -BRDA:3,646,1,0 -BRDA:3,647,0,0 -BRDA:3,647,1,0 -BRDA:3,648,0,0 -BRDA:3,648,1,0 -BRDA:3,649,0,0 -BRDA:3,649,1,0 -BRDA:3,650,0,0 -BRDA:3,650,1,0 -BRDA:3,651,0,0 -BRDA:3,651,1,0 -BRDA:3,652,0,0 -BRDA:3,652,1,0 -BRDA:3,653,0,0 -BRDA:3,653,1,0 -BRDA:3,654,0,0 -BRDA:3,654,1,0 -BRDA:3,654,2,0 -BRDA:3,655,0,0 -BRDA:3,655,1,0 -BRDA:3,655,2,0 -BRDA:3,656,0,0 -BRDA:3,656,1,0 -BRDA:3,657,0,0 -BRDA:3,657,1,0 -BRDA:3,658,0,0 -BRDA:3,658,1,0 -BRDA:3,659,0,0 -BRDA:3,659,1,0 -BRDA:3,660,0,0 -BRDA:3,660,1,0 -BRDA:3,661,0,0 -BRDA:3,661,1,0 -BRDA:3,661,2,0 -BRDA:3,661,3,0 -BRDA:3,662,0,0 -BRDA:3,662,1,0 -BRDA:3,663,0,0 -BRDA:3,663,1,0 -BRDA:3,664,0,0 -BRDA:3,664,1,0 -BRDA:3,665,0,0 -BRDA:3,665,1,0 -BRDA:3,666,0,0 -BRDA:3,666,1,0 -BRDA:3,667,0,0 -BRDA:3,667,1,0 -BRDA:3,668,0,0 -BRDA:3,668,1,0 -BRDA:3,669,0,0 -BRDA:3,669,1,0 -BRDA:3,670,0,0 -BRDA:3,670,1,0 -BRDA:3,671,0,0 -BRDA:3,671,1,0 -BRDA:3,672,0,0 -BRDA:3,672,1,0 -BRDA:3,673,0,0 -BRDA:3,673,1,0 -BRDA:3,674,0,0 -BRDA:3,674,1,0 -BRDA:3,674,2,0 -BRDA:3,675,0,0 -BRDA:3,675,1,0 -BRDA:3,675,2,0 -BRDA:3,676,0,0 -BRDA:3,676,1,0 -BRDA:3,676,2,0 -BRDA:3,677,0,0 -BRDA:3,677,1,0 -BRDA:3,677,2,0 -BRDA:3,678,0,0 -BRDA:3,678,1,0 -BRDA:3,679,0,0 -BRDA:3,679,1,0 -BRDA:3,680,0,0 -BRDA:3,680,1,0 -BRDA:3,681,0,0 -BRDA:3,681,1,0 -BRDA:3,682,0,0 -BRDA:3,682,1,0 -BRDA:3,683,0,0 -BRDA:3,683,1,0 -BRDA:3,684,0,0 -BRDA:3,684,1,0 -BRDA:3,685,0,0 -BRDA:3,685,1,0 -BRDA:3,686,0,0 -BRDA:3,686,1,0 -BRDA:3,687,0,0 -BRDA:3,687,1,0 -BRDA:3,688,0,0 -BRDA:3,688,1,0 -BRDA:3,689,0,0 -BRDA:3,689,1,0 -BRDA:3,690,0,0 -BRDA:3,690,1,0 -BRDA:3,691,0,0 -BRDA:3,691,1,0 -BRDA:3,692,0,0 -BRDA:3,692,1,0 -BRDA:3,693,0,0 -BRDA:3,693,1,0 -BRDA:3,693,2,0 -BRDA:3,694,0,0 -BRDA:3,694,1,0 -BRDA:3,695,0,0 -BRDA:3,695,1,0 -BRDA:3,696,0,0 -BRDA:3,696,1,0 -BRDA:3,697,0,0 -BRDA:3,697,1,0 -BRDA:3,697,2,0 -BRDA:3,698,0,0 -BRDA:3,698,1,0 -BRDA:3,699,0,0 -BRDA:3,699,1,0 -BRDA:3,700,0,0 -BRDA:3,700,1,0 -BRDA:3,701,0,0 -BRDA:3,701,1,0 -BRDA:3,702,0,0 -BRDA:3,702,1,0 -BRDA:3,702,2,0 -BRDA:3,702,3,0 -BRDA:3,703,0,0 -BRDA:3,703,1,0 -BRDA:3,704,0,0 -BRDA:3,704,1,0 -BRDA:3,705,0,0 -BRDA:3,705,1,0 -BRDA:3,705,2,0 -BRDA:3,706,0,0 -BRDA:3,706,1,0 -BRDA:3,707,0,0 -BRDA:3,707,1,0 -BRDA:3,708,0,0 -BRDA:3,708,1,0 -BRDA:3,709,0,0 -BRDA:3,709,1,0 -BRDA:3,710,0,0 -BRDA:3,710,1,0 -BRDA:3,710,2,0 -BRDA:3,710,3,0 -BRDA:3,711,0,0 -BRDA:3,711,1,0 -BRDA:3,712,0,0 -BRDA:3,712,1,0 -BRDA:3,713,0,0 -BRDA:3,713,1,0 -BRDA:3,714,0,0 -BRDA:3,714,1,0 -BRDA:3,715,0,0 -BRDA:3,715,1,0 -BRDA:3,716,0,0 -BRDA:3,716,1,0 -BRDA:3,717,0,0 -BRDA:3,717,1,0 -BRDA:3,718,0,0 -BRDA:3,718,1,0 -BRDA:3,719,0,0 -BRDA:3,719,1,0 -BRDA:3,720,0,0 -BRDA:3,720,1,0 -BRDA:3,721,0,0 -BRDA:3,721,1,0 -BRDA:3,722,0,0 -BRDA:3,722,1,0 -BRDA:3,723,0,0 -BRDA:3,723,1,0 -BRDA:3,724,0,0 -BRDA:3,724,1,0 -BRDA:3,724,2,0 -BRDA:3,724,3,0 -BRDA:3,724,4,0 -BRDA:3,724,5,0 -BRDA:3,725,0,0 -BRDA:3,725,1,0 -BRDA:3,726,0,0 -BRDA:3,726,1,0 -BRDA:3,727,0,0 -BRDA:3,727,1,0 -BRDA:3,727,2,0 -BRDA:3,728,0,0 -BRDA:3,728,1,0 -BRDA:3,729,0,0 -BRDA:3,729,1,0 -BRDA:3,730,0,0 -BRDA:3,730,1,0 -BRDA:3,731,0,0 -BRDA:3,731,1,0 -BRDA:3,732,0,0 -BRDA:3,732,1,0 -BRDA:3,732,2,0 -BRDA:3,732,3,0 -BRDA:3,732,4,0 -BRDA:3,733,0,0 -BRDA:3,733,1,0 -BRDA:3,734,0,0 -BRDA:3,734,1,0 -BRDA:3,734,2,0 -BRDA:3,735,0,0 -BRDA:3,735,1,0 -BRDA:3,736,0,0 -BRDA:3,736,1,0 -BRDA:3,737,0,0 -BRDA:3,737,1,0 -BRDA:3,737,2,0 -BRDA:3,738,0,0 -BRDA:3,738,1,0 -BRDA:3,739,0,0 -BRDA:3,739,1,0 -BRDA:3,740,0,0 -BRDA:3,740,1,0 -BRDA:3,741,0,0 -BRDA:3,741,1,0 -BRDA:3,742,0,0 -BRDA:3,742,1,0 -BRDA:3,743,0,0 -BRDA:3,743,1,0 -BRDA:3,744,0,0 -BRDA:3,744,1,0 -BRDA:3,745,0,0 -BRDA:3,745,1,0 -BRDA:3,746,0,0 -BRDA:3,746,1,0 -BRDA:3,747,0,0 -BRDA:3,747,1,0 -BRDA:3,748,0,0 -BRDA:3,748,1,0 -BRDA:3,749,0,0 -BRDA:3,749,1,0 -BRDA:3,750,0,0 -BRDA:3,750,1,0 -BRDA:3,751,0,0 -BRDA:3,751,1,0 -BRDA:3,752,0,0 -BRDA:3,752,1,0 -BRDA:3,753,0,0 -BRDA:3,753,1,0 -BRDA:3,754,0,0 -BRDA:3,754,1,0 -BRDA:3,755,0,0 -BRDA:3,755,1,0 -BRDA:3,755,2,0 -BRDA:3,756,0,0 -BRDA:3,756,1,0 -BRDA:3,757,0,0 -BRDA:3,757,1,0 -BRDA:3,758,0,0 -BRDA:3,758,1,0 -BRDA:3,759,0,0 -BRDA:3,759,1,0 -BRDA:3,760,0,0 -BRDA:3,760,1,0 -BRDA:3,760,2,0 -BRDA:3,761,0,0 -BRDA:3,761,1,0 -BRDA:3,762,0,0 -BRDA:3,762,1,0 -BRDA:3,763,0,0 -BRDA:3,763,1,0 -BRDA:3,764,0,0 -BRDA:3,764,1,0 -BRDA:3,765,0,0 -BRDA:3,765,1,0 -BRDA:3,765,2,0 -BRDA:3,766,0,0 -BRDA:3,766,1,0 -BRDA:3,766,2,0 -BRDA:3,766,3,0 -BRDA:3,767,0,0 -BRDA:3,767,1,0 -BRDA:3,768,0,0 -BRDA:3,768,1,0 -BRDA:3,769,0,0 -BRDA:3,769,1,0 -BRDA:3,770,0,0 -BRDA:3,770,1,0 -BRDA:3,771,0,0 -BRDA:3,771,1,0 -BRDA:3,772,0,0 -BRDA:3,772,1,0 -BRDA:3,772,2,0 -BRDA:3,773,0,0 -BRDA:3,773,1,0 -BRDA:3,773,2,0 -BRDA:3,774,0,0 -BRDA:3,774,1,0 -BRDA:3,775,0,0 -BRDA:3,775,1,0 -BRDA:3,776,0,0 -BRDA:3,776,1,0 -BRDA:3,776,2,0 -BRDA:3,777,0,0 -BRDA:3,777,1,0 -BRDA:3,778,0,0 -BRDA:3,778,1,0 -BRDA:3,779,0,0 -BRDA:3,779,1,0 -BRDA:3,779,2,0 -BRDA:3,780,0,0 -BRDA:3,780,1,0 -BRDA:3,780,2,0 -BRDA:3,780,3,0 -BRDA:3,781,0,0 -BRDA:3,781,1,0 -BRDA:3,782,0,0 -BRDA:3,782,1,0 -BRDA:3,783,0,0 -BRDA:3,783,1,0 -BRDA:3,783,2,0 -BRDA:3,783,3,0 -BRDA:3,784,0,0 -BRDA:3,784,1,0 -BRDA:3,785,0,0 -BRDA:3,785,1,0 -BRDA:3,785,2,0 -BRDA:3,785,3,0 -BRDA:3,785,4,0 -BRDA:3,786,0,0 -BRDA:3,786,1,0 -BRDA:3,787,0,0 -BRDA:3,787,1,0 -BRDA:3,787,2,0 -BRDA:4,788,0,0 -BRDA:4,788,1,0 -BRDA:4,788,2,0 -BRDA:4,788,3,0 -BRDA:4,789,0,0 -BRDA:4,789,1,0 -BRDA:4,790,0,0 -BRDA:4,790,1,0 -BRDA:4,791,0,0 -BRDA:4,791,1,0 -BRDA:4,792,0,0 -BRDA:4,792,1,0 -BRDA:4,793,0,0 -BRDA:4,793,1,0 -BRDA:4,794,0,0 -BRDA:4,794,1,0 -BRDA:4,795,0,0 -BRDA:4,795,1,0 -BRDA:4,796,0,0 -BRDA:4,796,1,0 -BRDA:4,797,0,0 -BRDA:4,797,1,0 -BRDA:4,798,0,0 -BRDA:4,798,1,0 -BRDA:4,799,0,0 -BRDA:4,799,1,0 -BRDA:4,800,0,0 -BRDA:4,800,1,0 -BRDA:4,801,0,0 -BRDA:4,801,1,0 -BRDA:4,802,0,0 -BRDA:4,802,1,0 -BRDA:4,803,0,0 -BRDA:4,803,1,0 -BRDA:4,804,0,0 -BRDA:4,804,1,0 -BRDA:4,805,0,0 -BRDA:4,805,1,0 -BRDA:4,805,2,0 -BRDA:4,806,0,0 -BRDA:4,806,1,0 -BRDA:4,807,0,0 -BRDA:4,807,1,0 -BRDA:4,808,0,0 -BRDA:4,808,1,0 -BRDA:4,809,0,0 -BRDA:4,809,1,0 -BRDA:4,810,0,0 -BRDA:4,810,1,0 -BRDA:4,811,0,0 -BRDA:4,811,1,0 -BRDA:4,812,0,0 -BRDA:4,812,1,0 -BRDA:4,813,0,0 -BRDA:4,813,1,0 -BRDA:4,814,0,0 -BRDA:4,814,1,0 -BRDA:4,814,2,0 -BRDA:4,815,0,0 -BRDA:4,815,1,0 -BRDA:4,816,0,0 -BRDA:4,816,1,0 -BRDA:4,817,0,0 -BRDA:4,817,1,0 -BRDA:4,817,2,0 -BRDA:4,817,3,0 -BRDA:4,817,4,0 -BRDA:4,817,5,0 -BRDA:4,818,0,0 -BRDA:4,818,1,0 -BRDA:4,819,0,0 -BRDA:4,819,1,0 -BRDA:4,819,2,0 -BRDA:4,820,0,0 -BRDA:4,820,1,0 -BRDA:4,821,0,0 -BRDA:4,821,1,0 -BRDA:4,822,0,0 -BRDA:4,822,1,0 -BRDA:4,822,2,0 -BRDA:4,823,0,0 -BRDA:4,823,1,0 -BRDA:4,824,0,0 -BRDA:4,824,1,0 -BRDA:4,824,2,0 -BRDA:4,825,0,0 -BRDA:4,825,1,0 -BRDA:4,826,0,0 -BRDA:4,826,1,0 -BRDA:4,827,0,0 -BRDA:4,827,1,0 -BRDA:4,828,0,0 -BRDA:4,828,1,0 -BRDA:4,829,0,0 -BRDA:4,829,1,0 -BRDA:4,830,0,0 -BRDA:4,830,1,0 -BRDA:4,831,0,0 -BRDA:4,831,1,0 -BRDA:4,832,0,0 -BRDA:4,832,1,0 -BRDA:4,833,0,0 -BRDA:4,833,1,0 -BRDA:4,834,0,0 -BRDA:4,834,1,0 -BRDA:4,834,2,0 -BRDA:4,834,3,0 -BRDA:4,835,0,0 -BRDA:4,835,1,0 -BRDA:4,836,0,0 -BRDA:4,836,1,0 -BRDA:4,836,2,0 -BRDA:4,837,0,0 -BRDA:4,837,1,0 -BRDA:4,838,0,0 -BRDA:4,838,1,0 -BRDA:4,839,0,0 -BRDA:4,839,1,0 -BRDA:4,840,0,0 -BRDA:4,840,1,0 -BRDA:4,841,0,0 -BRDA:4,841,1,0 -BRDA:4,842,0,0 -BRDA:4,842,1,0 -BRDA:4,843,0,0 -BRDA:4,843,1,0 -BRDA:4,844,0,0 -BRDA:4,844,1,0 -BRDA:4,845,0,0 -BRDA:4,845,1,0 -BRDA:4,846,0,0 -BRDA:4,846,1,0 -BRDA:4,847,0,0 -BRDA:4,847,1,0 -BRDA:4,848,0,0 -BRDA:4,848,1,0 -BRDA:4,849,0,0 -BRDA:4,849,1,0 -BRDA:4,850,0,0 -BRDA:4,850,1,0 -BRDA:4,851,0,0 -BRDA:4,851,1,0 -BRDA:4,852,0,0 -BRDA:4,852,1,0 -BRDA:4,852,2,0 -BRDA:4,852,3,0 -BRDA:4,852,4,0 -BRDA:4,853,0,0 -BRDA:4,853,1,0 -BRDA:4,853,2,0 -BRDA:4,853,3,0 -BRDA:4,854,0,0 -BRDA:4,854,1,0 -BRDA:4,855,0,0 -BRDA:4,855,1,0 -BRDA:4,856,0,0 -BRDA:4,856,1,0 -BRDA:4,857,0,0 -BRDA:4,857,1,0 -BRDA:4,858,0,0 -BRDA:4,858,1,0 -BRDA:4,859,0,0 -BRDA:4,859,1,0 -BRDA:4,860,0,0 -BRDA:4,860,1,0 -BRDA:4,861,0,0 -BRDA:4,861,1,0 -BRDA:4,862,0,0 -BRDA:4,862,1,0 -BRDA:4,863,0,0 -BRDA:4,863,1,0 -BRDA:4,863,2,0 -BRDA:4,863,3,0 -BRDA:4,863,4,0 -BRDA:4,864,0,0 -BRDA:4,864,1,0 -BRDA:4,865,0,0 -BRDA:4,865,1,0 -BRDA:4,866,0,0 -BRDA:4,866,1,0 -BRDA:4,866,2,0 -BRDA:4,867,0,0 -BRDA:4,867,1,0 -BRDA:4,868,0,0 -BRDA:4,868,1,0 -BRDA:4,868,2,0 -BRDA:4,869,0,0 -BRDA:4,869,1,0 -BRDA:4,870,0,0 -BRDA:4,870,1,0 -BRDA:4,871,0,0 -BRDA:4,871,1,0 -BRDA:4,872,0,0 -BRDA:4,872,1,0 -BRDA:4,872,2,0 -BRDA:4,872,3,0 -BRDA:4,872,4,0 -BRDA:4,873,0,0 -BRDA:4,873,1,0 -BRDA:4,874,0,0 -BRDA:4,874,1,0 -BRDA:4,875,0,0 -BRDA:4,875,1,0 -BRDA:4,876,0,0 -BRDA:4,876,1,0 -BRDA:4,877,0,0 -BRDA:4,877,1,0 -BRDA:4,878,0,0 -BRDA:4,878,1,0 -BRDA:4,879,0,0 -BRDA:4,879,1,0 -BRDA:4,880,0,0 -BRDA:4,880,1,0 -BRDA:4,881,0,0 -BRDA:4,881,1,0 -BRDA:4,882,0,0 -BRDA:4,882,1,0 -BRDA:4,883,0,0 -BRDA:4,883,1,0 -BRDA:4,884,0,0 -BRDA:4,884,1,0 -BRDA:4,885,0,0 -BRDA:4,885,1,0 -BRDA:4,886,0,0 -BRDA:4,886,1,0 -BRDA:4,886,2,0 -BRDA:4,886,3,0 -BRDA:4,886,4,0 -BRDA:4,886,5,0 -BRDA:4,887,0,0 -BRDA:4,887,1,0 -BRDA:4,888,0,0 -BRDA:4,888,1,0 -BRDA:4,889,0,0 -BRDA:4,889,1,0 -BRDA:4,890,0,0 -BRDA:4,890,1,0 -BRDA:4,891,0,0 -BRDA:4,891,1,0 -BRDA:4,891,2,0 -BRDA:4,892,0,0 -BRDA:4,892,1,0 -BRDA:4,893,0,0 -BRDA:4,893,1,0 -BRDA:4,893,2,0 -BRDA:4,894,0,0 -BRDA:4,894,1,0 -BRDA:4,895,0,0 -BRDA:4,895,1,0 -BRDA:4,896,0,0 -BRDA:4,896,1,0 -BRDA:4,897,0,0 -BRDA:4,897,1,0 -BRDA:4,897,2,0 -BRDA:4,897,3,0 -BRDA:4,897,4,0 -BRDA:4,897,5,0 -BRDA:4,898,0,0 -BRDA:4,898,1,0 -BRDA:4,899,0,0 -BRDA:4,899,1,0 -BRDA:4,899,2,0 -BRDA:4,899,3,0 -BRDA:4,900,0,0 -BRDA:4,900,1,0 -BRDA:4,901,0,0 -BRDA:4,901,1,0 -BRDA:4,902,0,0 -BRDA:4,902,1,0 -BRDA:4,903,0,0 -BRDA:4,903,1,0 -BRDA:4,904,0,0 -BRDA:4,904,1,0 -BRDA:4,905,0,0 -BRDA:4,905,1,0 -BRDA:4,906,0,0 -BRDA:4,906,1,0 -BRDA:4,907,0,0 -BRDA:4,907,1,0 -BRDA:4,908,0,0 -BRDA:4,908,1,0 -BRDA:4,909,0,0 -BRDA:4,909,1,0 -BRDA:4,910,0,0 -BRDA:4,910,1,0 -BRDA:4,910,2,0 -BRDA:4,910,3,0 -BRDA:4,911,0,0 -BRDA:4,911,1,0 -BRDA:4,911,2,0 -BRDA:4,912,0,0 -BRDA:4,912,1,0 -BRDA:4,913,0,0 -BRDA:4,913,1,0 -BRDA:4,914,0,0 -BRDA:4,914,1,0 -BRDA:4,915,0,0 -BRDA:4,915,1,0 -BRDA:4,916,0,0 -BRDA:4,916,1,0 -BRDA:4,916,2,0 -BRDA:4,916,3,0 -BRDA:4,917,0,0 -BRDA:4,917,1,0 -BRDA:4,918,0,0 -BRDA:4,918,1,0 -BRDA:4,919,0,0 -BRDA:4,919,1,0 -BRDA:4,920,0,0 -BRDA:4,920,1,0 -BRDA:4,921,0,0 -BRDA:4,921,1,0 -BRDA:4,921,2,0 -BRDA:4,922,0,0 -BRDA:4,922,1,0 -BRDA:4,923,0,0 -BRDA:4,923,1,0 -BRDA:4,924,0,0 -BRDA:4,924,1,0 -BRDA:4,925,0,0 -BRDA:4,925,1,0 -BRDA:4,926,0,0 -BRDA:4,926,1,0 -BRDA:4,927,0,0 -BRDA:4,927,1,0 -BRDA:4,928,0,0 -BRDA:4,928,1,0 -BRDA:4,929,0,0 -BRDA:4,929,1,0 -BRDA:4,930,0,0 -BRDA:4,930,1,0 -BRDA:4,931,0,0 -BRDA:4,931,1,0 -BRDA:4,931,2,0 -BRDA:4,932,0,0 -BRDA:4,932,1,0 -BRDA:4,932,2,0 -BRDA:4,933,0,0 -BRDA:4,933,1,0 -BRDA:4,934,0,0 -BRDA:4,934,1,0 -BRDA:4,935,0,0 -BRDA:4,935,1,0 -BRDA:4,936,0,0 -BRDA:4,936,1,0 -BRDA:4,937,0,0 -BRDA:4,937,1,0 -BRDA:4,938,0,0 -BRDA:4,938,1,0 -BRDA:4,939,0,0 -BRDA:4,939,1,0 -BRDA:4,940,0,0 -BRDA:4,940,1,0 -BRDA:4,941,0,0 -BRDA:4,941,1,0 -BRDA:4,942,0,0 -BRDA:4,942,1,0 -BRDA:4,943,0,0 -BRDA:4,943,1,0 -BRDA:4,944,0,0 -BRDA:4,944,1,0 -BRDA:4,945,0,0 -BRDA:4,945,1,0 -BRDA:4,946,0,0 -BRDA:4,946,1,0 -BRDA:4,947,0,0 -BRDA:4,947,1,0 -BRDA:4,947,2,0 -BRDA:4,948,0,0 -BRDA:4,948,1,0 -BRDA:4,949,0,0 -BRDA:4,949,1,0 -BRDA:4,950,0,0 -BRDA:4,950,1,0 -BRDA:4,951,0,0 -BRDA:4,951,1,0 -BRDA:4,951,2,0 -BRDA:4,952,0,0 -BRDA:4,952,1,0 -BRDA:4,953,0,0 -BRDA:4,953,1,0 -BRDA:4,954,0,0 -BRDA:4,954,1,0 -BRDA:4,955,0,0 -BRDA:4,955,1,0 -BRDA:4,956,0,0 -BRDA:4,956,1,0 -BRDA:4,957,0,0 -BRDA:4,957,1,0 -BRDA:4,958,0,0 -BRDA:4,958,1,0 -BRDA:4,958,2,0 -BRDA:4,959,0,0 -BRDA:4,959,1,0 -BRDA:4,960,0,0 -BRDA:4,960,1,0 -BRDA:4,961,0,0 -BRDA:4,961,1,0 -BRDA:4,962,0,0 -BRDA:4,962,1,0 -BRDA:4,962,2,0 -BRDA:4,963,0,0 -BRDA:4,963,1,0 -BRDA:4,964,0,0 -BRDA:4,964,1,0 -BRDA:4,965,0,0 -BRDA:4,965,1,0 -BRDA:4,966,0,0 -BRDA:4,966,1,0 -BRDA:4,967,0,0 -BRDA:4,967,1,0 -BRDA:4,968,0,0 -BRDA:4,968,1,0 -BRDA:4,969,0,0 -BRDA:4,969,1,0 -BRDA:4,970,0,0 -BRDA:4,970,1,0 -BRDA:4,971,0,0 -BRDA:4,971,1,0 -BRDA:4,972,0,0 -BRDA:4,972,1,0 -BRDA:4,973,0,0 -BRDA:4,973,1,0 -BRDA:4,974,0,0 -BRDA:4,974,1,0 -BRDA:4,975,0,0 -BRDA:4,975,1,0 -BRDA:4,976,0,0 -BRDA:4,976,1,0 -BRDA:4,977,0,0 -BRDA:4,977,1,0 -BRDA:4,978,0,0 -BRDA:4,978,1,0 -BRDA:4,979,0,0 -BRDA:4,979,1,0 -BRDA:4,980,0,0 -BRDA:4,980,1,0 -BRDA:4,980,2,0 -BRDA:4,980,3,0 -BRDA:4,980,4,0 -BRDA:4,981,0,0 -BRDA:4,981,1,0 -BRDA:4,982,0,0 -BRDA:4,982,1,0 -BRDA:4,983,0,0 -BRDA:4,983,1,0 -BRDA:4,984,0,0 -BRDA:4,984,1,0 -BRDA:4,985,0,0 -BRDA:4,985,1,0 -BRDA:4,986,0,0 -BRDA:4,986,1,0 -BRDA:4,987,0,0 -BRDA:4,987,1,0 -BRDA:4,988,0,0 -BRDA:4,988,1,0 -BRDA:4,989,0,0 -BRDA:4,989,1,0 -BRDA:4,990,0,0 -BRDA:4,990,1,0 -BRDA:4,990,2,0 -BRDA:4,991,0,0 -BRDA:4,991,1,0 -BRDA:4,992,0,0 -BRDA:4,992,1,0 -BRDA:4,993,0,0 -BRDA:4,993,1,0 -BRDA:4,994,0,0 -BRDA:4,994,1,0 -BRDA:4,995,0,0 -BRDA:4,995,1,0 -BRDA:4,996,0,0 -BRDA:4,996,1,0 -BRDA:4,997,0,0 -BRDA:4,997,1,0 -BRDA:4,998,0,0 -BRDA:4,998,1,0 -BRDA:4,999,0,0 -BRDA:4,999,1,0 -BRDA:4,1000,0,0 -BRDA:4,1000,1,0 -BRDA:4,1001,0,0 -BRDA:4,1001,1,0 -BRDA:4,1002,0,0 -BRDA:4,1002,1,0 -BRDA:4,1002,2,0 -BRDA:4,1002,3,0 -BRDA:4,1003,0,0 -BRDA:4,1003,1,0 -BRDA:4,1004,0,0 -BRDA:4,1004,1,0 -BRDA:4,1005,0,0 -BRDA:4,1005,1,0 -BRDA:4,1006,0,0 -BRDA:4,1006,1,0 -BRDA:4,1007,0,0 -BRDA:4,1007,1,0 -BRDA:4,1008,0,0 -BRDA:4,1008,1,0 -BRDA:4,1008,2,0 -BRDA:4,1009,0,0 -BRDA:4,1009,1,0 -BRDA:4,1010,0,0 -BRDA:4,1010,1,0 -BRDA:4,1011,0,0 -BRDA:4,1011,1,0 -BRDA:4,1011,2,0 -BRDA:4,1012,0,0 -BRDA:4,1012,1,0 -BRDA:4,1013,0,0 -BRDA:4,1013,1,0 -BRDA:4,1014,0,0 -BRDA:4,1014,1,0 -BRDA:4,1014,2,0 -BRDA:4,1014,3,0 -BRDA:4,1015,0,0 -BRDA:4,1015,1,0 -BRDA:4,1016,0,0 -BRDA:4,1016,1,0 -BRDA:4,1016,2,0 -BRDA:4,1016,3,0 -BRDA:4,1017,0,0 -BRDA:4,1017,1,0 -BRDA:4,1018,0,0 -BRDA:4,1018,1,0 -BRDA:4,1019,0,0 -BRDA:4,1019,1,0 -BRDA:4,1020,0,0 -BRDA:4,1020,1,0 -BRDA:4,1021,0,0 -BRDA:4,1021,1,0 -BRDA:4,1022,0,0 -BRDA:4,1022,1,0 -BRDA:4,1023,0,0 -BRDA:4,1023,1,0 -BRDA:4,1023,2,0 -BRDA:4,1023,3,0 -BRDA:4,1023,4,0 -BRDA:4,1023,5,0 -BRDA:4,1024,0,0 -BRDA:4,1024,1,0 -BRDA:4,1025,0,0 -BRDA:4,1025,1,0 -BRDA:4,1026,0,0 -BRDA:4,1026,1,0 -BRDA:4,1027,0,0 -BRDA:4,1027,1,0 -BRDA:4,1028,0,0 -BRDA:4,1028,1,0 -BRDA:4,1029,0,0 -BRDA:4,1029,1,0 -BRDA:4,1029,2,0 -BRDA:4,1029,3,0 -BRDA:4,1029,4,0 -BRDA:4,1029,5,0 -BRDA:4,1029,6,0 -BRDA:4,1029,7,0 -BRDA:4,1029,8,0 -BRDA:4,1029,9,0 -BRDA:4,1029,10,0 -BRDA:4,1029,11,0 -BRDA:4,1030,0,0 -BRDA:4,1030,1,0 -BRDA:4,1031,0,0 -BRDA:4,1031,1,0 -BRDA:4,1031,2,0 -BRDA:4,1031,3,0 -BRDA:4,1031,4,0 -BRDA:4,1032,0,0 -BRDA:4,1032,1,0 -BRDA:4,1033,0,0 -BRDA:4,1033,1,0 -BRDA:4,1034,0,0 -BRDA:4,1034,1,0 -BRDA:4,1035,0,0 -BRDA:4,1035,1,0 -BRDA:4,1036,0,0 -BRDA:4,1036,1,0 -BRDA:4,1037,0,0 -BRDA:4,1037,1,0 -BRDA:4,1038,0,0 -BRDA:4,1038,1,0 -BRDA:4,1039,0,0 -BRDA:4,1039,1,0 -BRDA:4,1040,0,0 -BRDA:4,1040,1,0 -BRDA:4,1041,0,0 -BRDA:4,1041,1,0 -BRDA:4,1042,0,0 -BRDA:4,1042,1,0 -BRDA:4,1043,0,0 -BRDA:4,1043,1,0 -BRDA:4,1044,0,0 -BRDA:4,1044,1,0 -BRDA:4,1045,0,0 -BRDA:4,1045,1,0 -BRDA:4,1046,0,0 -BRDA:4,1046,1,0 -BRDA:4,1047,0,0 -BRDA:4,1047,1,0 -BRDA:4,1048,0,0 -BRDA:4,1048,1,0 -BRDA:4,1048,2,0 -BRDA:4,1049,0,0 -BRDA:4,1049,1,0 -BRDA:4,1050,0,0 -BRDA:4,1050,1,0 -BRDA:4,1050,2,0 -BRDA:4,1051,0,0 -BRDA:4,1051,1,0 -BRDA:4,1052,0,0 -BRDA:4,1052,1,0 -BRDA:4,1053,0,0 -BRDA:4,1053,1,0 -BRDA:4,1054,0,0 -BRDA:4,1054,1,0 -BRDA:4,1055,0,0 -BRDA:4,1055,1,0 -BRDA:4,1056,0,0 -BRDA:4,1056,1,0 -BRDA:4,1057,0,0 -BRDA:4,1057,1,0 -BRDA:4,1058,0,0 -BRDA:4,1058,1,0 -BRDA:4,1058,2,0 -BRDA:4,1059,0,0 -BRDA:4,1059,1,0 -BRDA:4,1059,2,0 -BRDA:4,1059,3,0 -BRDA:4,1060,0,0 -BRDA:4,1060,1,0 -BRDA:4,1061,0,0 -BRDA:4,1061,1,0 -BRDA:4,1061,2,0 -BRDA:4,1061,3,0 -BRDA:4,1062,0,0 -BRDA:4,1062,1,0 -BRDA:4,1062,2,0 -BRDA:4,1062,3,0 -BRDA:4,1063,0,0 -BRDA:4,1063,1,0 -BRDA:4,1064,0,0 -BRDA:4,1064,1,0 -BRDA:4,1065,0,0 -BRDA:4,1065,1,0 -BRDA:4,1065,2,0 -BRDA:4,1065,3,0 -BRDA:4,1066,0,0 -BRDA:4,1066,1,0 -BRDA:4,1067,0,0 -BRDA:4,1067,1,0 -BRDA:4,1068,0,0 -BRDA:4,1068,1,0 -BRDA:4,1069,0,0 -BRDA:4,1069,1,0 -BRDA:4,1070,0,0 -BRDA:4,1070,1,0 -BRDA:4,1071,0,0 -BRDA:4,1071,1,0 -BRDA:4,1072,0,0 -BRDA:4,1072,1,0 -BRDA:4,1073,0,0 -BRDA:4,1073,1,0 -BRDA:4,1074,0,0 -BRDA:4,1074,1,0 -BRDA:4,1075,0,0 -BRDA:4,1075,1,0 -BRDA:4,1076,0,0 -BRDA:4,1076,1,0 -BRDA:4,1077,0,0 -BRDA:4,1077,1,0 -BRDA:4,1078,0,0 -BRDA:4,1078,1,0 -BRDA:4,1079,0,0 -BRDA:4,1079,1,0 -BRDA:4,1080,0,0 -BRDA:4,1080,1,0 -BRDA:4,1081,0,0 -BRDA:4,1081,1,0 -BRDA:4,1082,0,0 -BRDA:4,1082,1,0 -BRDA:4,1083,0,0 -BRDA:4,1083,1,0 -BRDA:4,1084,0,0 -BRDA:4,1084,1,0 -BRDA:4,1085,0,0 -BRDA:4,1085,1,0 -BRDA:4,1086,0,0 -BRDA:4,1086,1,0 -BRDA:4,1087,0,0 -BRDA:4,1087,1,0 -BRDA:4,1088,0,0 -BRDA:4,1088,1,0 -BRDA:4,1089,0,0 -BRDA:4,1089,1,0 -BRDA:4,1090,0,0 -BRDA:4,1090,1,0 -BRDA:4,1091,0,0 -BRDA:4,1091,1,0 -BRDA:4,1091,2,0 -BRDA:4,1091,3,0 -BRDA:4,1092,0,0 -BRDA:4,1092,1,0 -BRDA:4,1093,0,0 -BRDA:4,1093,1,0 -BRDA:4,1094,0,0 -BRDA:4,1094,1,0 -BRDA:4,1095,0,0 -BRDA:4,1095,1,0 -BRDA:4,1096,0,0 -BRDA:4,1096,1,0 -BRDA:4,1097,0,0 -BRDA:4,1097,1,0 -BRDA:4,1098,0,0 -BRDA:4,1098,1,0 -BRDA:4,1099,0,0 -BRDA:4,1099,1,0 -BRDA:4,1100,0,0 -BRDA:4,1100,1,0 -BRDA:4,1101,0,0 -BRDA:4,1101,1,0 -BRDA:4,1102,0,0 -BRDA:4,1102,1,0 -BRDA:4,1103,0,0 -BRDA:4,1103,1,0 -BRDA:4,1104,0,0 -BRDA:4,1104,1,0 -BRDA:4,1104,2,0 -BRDA:4,1104,3,0 -BRDA:4,1105,0,0 -BRDA:4,1105,1,0 -BRDA:4,1105,2,0 -BRDA:4,1105,3,0 -BRDA:4,1106,0,0 -BRDA:4,1106,1,0 -BRDA:4,1106,2,0 -BRDA:4,1107,0,0 -BRDA:4,1107,1,0 -BRDA:4,1108,0,0 -BRDA:4,1108,1,0 -BRDA:4,1108,2,0 -BRDA:4,1108,3,0 -BRDA:4,1109,0,0 -BRDA:4,1109,1,0 -BRDA:4,1110,0,0 -BRDA:4,1110,1,0 -BRDA:4,1110,2,0 -BRDA:4,1111,0,0 -BRDA:4,1111,1,0 -BRDA:4,1112,0,0 -BRDA:4,1112,1,0 -BRDA:4,1112,2,0 -BRDA:5,1113,0,0 -BRDA:5,1113,1,0 -BRDA:5,1113,2,0 -BRDA:5,1114,0,0 -BRDA:5,1114,1,0 -BRDA:5,1115,0,0 -BRDA:5,1115,1,0 -BRDA:5,1116,0,0 -BRDA:5,1116,1,0 -BRDA:5,1117,0,0 -BRDA:5,1117,1,0 -BRDA:5,1118,0,0 -BRDA:5,1118,1,0 -BRDA:5,1119,0,0 -BRDA:5,1119,1,0 -BRDA:5,1119,2,0 -BRDA:5,1119,3,0 -BRDA:5,1120,0,0 -BRDA:5,1120,1,0 -BRDA:5,1121,0,0 -BRDA:5,1121,1,0 -BRDA:5,1122,0,0 -BRDA:5,1122,1,0 -BRDA:5,1123,0,0 -BRDA:5,1123,1,0 -BRDA:5,1124,0,0 -BRDA:5,1124,1,0 -BRDA:5,1125,0,0 -BRDA:5,1125,1,0 -BRDA:5,1126,0,0 -BRDA:5,1126,1,0 -BRDA:5,1127,0,0 -BRDA:5,1127,1,0 -BRDA:5,1128,0,0 -BRDA:5,1128,1,0 -BRDA:5,1129,0,0 -BRDA:5,1129,1,0 -BRDA:5,1130,0,0 -BRDA:5,1130,1,0 -BRDA:5,1131,0,0 -BRDA:5,1131,1,0 -BRDA:5,1132,0,0 -BRDA:5,1132,1,0 -BRDA:5,1133,0,0 -BRDA:5,1133,1,0 -BRDA:5,1134,0,0 -BRDA:5,1134,1,0 -BRDA:5,1135,0,0 -BRDA:5,1135,1,0 -BRDA:5,1136,0,0 -BRDA:5,1136,1,0 -BRDA:5,1137,0,0 -BRDA:5,1137,1,0 -BRDA:5,1138,0,0 -BRDA:5,1138,1,0 -BRDA:5,1138,2,0 -BRDA:5,1139,0,0 -BRDA:5,1139,1,0 -BRDA:5,1139,2,0 -BRDA:5,1139,3,0 -BRDA:5,1140,0,0 -BRDA:5,1140,1,0 -BRDA:5,1140,2,0 -BRDA:5,1141,0,0 -BRDA:5,1141,1,0 -BRDA:5,1141,2,0 -BRDA:5,1142,0,0 -BRDA:5,1142,1,0 -BRDA:5,1143,0,0 -BRDA:5,1143,1,0 -BRDA:5,1144,0,0 -BRDA:5,1144,1,0 -BRDA:5,1145,0,0 -BRDA:5,1145,1,0 -BRDA:5,1146,0,0 -BRDA:5,1146,1,0 -BRDA:5,1147,0,0 -BRDA:5,1147,1,0 -BRDA:5,1148,0,0 -BRDA:5,1148,1,0 -BRDA:5,1149,0,0 -BRDA:5,1149,1,0 -BRDA:5,1150,0,0 -BRDA:5,1150,1,0 -BRDA:5,1150,2,0 -BRDA:5,1151,0,0 -BRDA:5,1151,1,0 -BRDA:5,1152,0,0 -BRDA:5,1152,1,0 -BRDA:5,1153,0,0 -BRDA:5,1153,1,0 -BRDA:5,1154,0,0 -BRDA:5,1154,1,0 -BRDA:5,1155,0,0 -BRDA:5,1155,1,0 -BRDA:5,1156,0,0 -BRDA:5,1156,1,0 -BRDA:5,1157,0,0 -BRDA:5,1157,1,0 -BRDA:5,1158,0,0 -BRDA:5,1158,1,0 -BRDA:5,1159,0,0 -BRDA:5,1159,1,0 -BRDA:5,1160,0,0 -BRDA:5,1160,1,0 -BRDA:5,1161,0,0 -BRDA:5,1161,1,0 -BRDA:5,1162,0,0 -BRDA:5,1162,1,0 -BRDA:5,1162,2,0 -BRDA:5,1163,0,0 -BRDA:5,1163,1,0 -BRDA:5,1164,0,0 -BRDA:5,1164,1,0 -BRDA:5,1165,0,0 -BRDA:5,1165,1,0 -BRDA:5,1166,0,0 -BRDA:5,1166,1,0 -BRDA:5,1167,0,0 -BRDA:5,1167,1,0 -BRDA:5,1168,0,0 -BRDA:5,1168,1,0 -BRDA:5,1169,0,0 -BRDA:5,1169,1,0 -BRDA:5,1170,0,0 -BRDA:5,1170,1,0 -BRDA:5,1171,0,0 -BRDA:5,1171,1,0 -BRDA:5,1172,0,0 -BRDA:5,1172,1,0 -BRDA:5,1172,2,0 -BRDA:5,1172,3,0 -BRDA:5,1172,4,0 -BRDA:5,1173,0,0 -BRDA:5,1173,1,0 -BRDA:5,1173,2,0 -BRDA:5,1174,0,0 -BRDA:5,1174,1,0 -BRDA:5,1174,2,0 -BRDA:5,1175,0,0 -BRDA:5,1175,1,0 -BRDA:5,1176,0,0 -BRDA:5,1176,1,0 -BRDA:5,1177,0,0 -BRDA:5,1177,1,0 -BRDA:5,1178,0,0 -BRDA:5,1178,1,0 -BRDA:5,1179,0,0 -BRDA:5,1179,1,0 -BRDA:5,1180,0,0 -BRDA:5,1180,1,0 -BRDA:5,1181,0,0 -BRDA:5,1181,1,0 -BRDA:5,1181,2,0 -BRDA:5,1182,0,0 -BRDA:5,1182,1,0 -BRDA:5,1182,2,0 -BRDA:5,1183,0,0 -BRDA:5,1183,1,0 -BRDA:5,1184,0,0 -BRDA:5,1184,1,0 -BRDA:5,1184,2,0 -BRDA:5,1185,0,0 -BRDA:5,1185,1,0 -BRDA:5,1186,0,0 -BRDA:5,1186,1,0 -BRDA:5,1187,0,0 -BRDA:5,1187,1,0 -BRDA:5,1188,0,0 -BRDA:5,1188,1,0 -BRDA:5,1189,0,0 -BRDA:5,1189,1,0 -BRDA:5,1190,0,0 -BRDA:5,1190,1,0 -BRDA:5,1191,0,0 -BRDA:5,1191,1,0 -BRDA:5,1192,0,0 -BRDA:5,1192,1,0 -BRDA:5,1192,2,0 -BRDA:5,1192,3,0 -BRDA:5,1192,4,0 -BRDA:5,1193,0,0 -BRDA:5,1193,1,0 -BRDA:5,1194,0,0 -BRDA:5,1194,1,0 -BRDA:5,1195,0,0 -BRDA:5,1195,1,0 -BRDA:5,1196,0,0 -BRDA:5,1196,1,0 -BRDA:5,1197,0,0 -BRDA:5,1197,1,0 -BRDA:5,1198,0,0 -BRDA:5,1198,1,0 -BRDA:5,1199,0,0 -BRDA:5,1199,1,0 -BRDA:5,1200,0,0 -BRDA:5,1200,1,0 -BRDA:5,1201,0,0 -BRDA:5,1201,1,0 -BRDA:5,1202,0,0 -BRDA:5,1202,1,0 -BRDA:5,1203,0,0 -BRDA:5,1203,1,0 -BRDA:5,1204,0,0 -BRDA:5,1204,1,0 -BRDA:5,1204,2,0 -BRDA:5,1204,3,0 -BRDA:5,1204,4,0 -BRDA:5,1204,5,0 -BRDA:5,1205,0,0 -BRDA:5,1205,1,0 -BRDA:5,1206,0,0 -BRDA:5,1206,1,0 -BRDA:5,1207,0,0 -BRDA:5,1207,1,0 -BRDA:5,1208,0,0 -BRDA:5,1208,1,0 -BRDA:5,1209,0,0 -BRDA:5,1209,1,0 -BRDA:5,1209,2,0 -BRDA:5,1210,0,0 -BRDA:5,1210,1,0 -BRDA:5,1211,0,0 -BRDA:5,1211,1,0 -BRDA:5,1212,0,0 -BRDA:5,1212,1,0 -BRDA:5,1213,0,0 -BRDA:5,1213,1,0 -BRDA:5,1214,0,0 -BRDA:5,1214,1,0 -BRDA:5,1215,0,0 -BRDA:5,1215,1,0 -BRDA:5,1216,0,0 -BRDA:5,1216,1,0 -BRDA:5,1217,0,0 -BRDA:5,1217,1,0 -BRDA:5,1218,0,0 -BRDA:5,1218,1,0 -BRDA:5,1219,0,0 -BRDA:5,1219,1,0 -BRDA:5,1220,0,0 -BRDA:5,1220,1,0 -BRDA:5,1221,0,0 -BRDA:5,1221,1,0 -BRDA:5,1222,0,0 -BRDA:5,1222,1,0 -BRDA:5,1223,0,0 -BRDA:5,1223,1,0 -BRDA:5,1223,2,0 -BRDA:5,1224,0,0 -BRDA:5,1224,1,0 -BRDA:5,1225,0,0 -BRDA:5,1225,1,0 -BRDA:5,1226,0,0 -BRDA:5,1226,1,0 -BRDA:5,1227,0,0 -BRDA:5,1227,1,0 -BRDA:5,1228,0,0 -BRDA:5,1228,1,0 -BRDA:5,1229,0,0 -BRDA:5,1229,1,0 -BRDA:5,1230,0,0 -BRDA:5,1230,1,0 -BRDA:5,1231,0,0 -BRDA:5,1231,1,0 -BRDA:5,1232,0,0 -BRDA:5,1232,1,0 -BRDA:5,1233,0,0 -BRDA:5,1233,1,0 -BRDA:5,1234,0,0 -BRDA:5,1234,1,0 -BRDA:5,1235,0,0 -BRDA:5,1235,1,0 -BRDA:5,1236,0,0 -BRDA:5,1236,1,0 -BRDA:5,1237,0,0 -BRDA:5,1237,1,0 -BRDA:5,1238,0,0 -BRDA:5,1238,1,0 -BRDA:5,1239,0,0 -BRDA:5,1239,1,0 -BRDA:5,1240,0,0 -BRDA:5,1240,1,0 -BRDA:5,1241,0,0 -BRDA:5,1241,1,0 -BRDA:5,1242,0,0 -BRDA:5,1242,1,0 -BRDA:5,1243,0,0 -BRDA:5,1243,1,0 -BRDA:5,1244,0,0 -BRDA:5,1244,1,0 -BRDA:5,1245,0,0 -BRDA:5,1245,1,0 -BRDA:5,1246,0,0 -BRDA:5,1246,1,0 -BRDA:5,1247,0,0 -BRDA:5,1247,1,0 -BRDA:5,1248,0,0 -BRDA:5,1248,1,0 -BRDA:5,1249,0,0 -BRDA:5,1249,1,0 -BRDA:5,1250,0,0 -BRDA:5,1250,1,0 -BRDA:5,1251,0,0 -BRDA:5,1251,1,0 -BRDA:5,1252,0,0 -BRDA:5,1252,1,0 -BRDA:5,1253,0,0 -BRDA:5,1253,1,0 -BRDA:5,1254,0,0 -BRDA:5,1254,1,0 -BRDA:5,1254,2,0 -BRDA:5,1255,0,0 -BRDA:5,1255,1,0 -BRDA:5,1255,2,0 -BRDA:5,1255,3,0 -BRDA:5,1255,4,0 -BRDA:5,1255,5,0 -BRDA:5,1256,0,0 -BRDA:5,1256,1,0 -BRDA:5,1257,0,0 -BRDA:5,1257,1,0 -BRDA:5,1258,0,0 -BRDA:5,1258,1,0 -BRDA:5,1259,0,0 -BRDA:5,1259,1,0 -BRDA:5,1260,0,0 -BRDA:5,1260,1,0 -BRDA:5,1261,0,0 -BRDA:5,1261,1,0 -BRDA:5,1262,0,0 -BRDA:5,1262,1,0 -BRDA:5,1263,0,0 -BRDA:5,1263,1,0 -BRDA:5,1264,0,0 -BRDA:5,1264,1,0 -BRDA:5,1265,0,0 -BRDA:5,1265,1,0 -BRDA:5,1266,0,0 -BRDA:5,1266,1,0 -BRDA:5,1267,0,0 -BRDA:5,1267,1,0 -BRDA:5,1268,0,0 -BRDA:5,1268,1,0 -BRDA:5,1269,0,0 -BRDA:5,1269,1,0 -BRDA:5,1270,0,0 -BRDA:5,1270,1,0 -BRDA:5,1271,0,0 -BRDA:5,1271,1,0 -BRDA:5,1272,0,0 -BRDA:5,1272,1,0 -BRDA:5,1273,0,0 -BRDA:5,1273,1,0 -BRDA:5,1274,0,0 -BRDA:5,1274,1,0 -BRDA:5,1275,0,0 -BRDA:5,1275,1,0 -BRDA:5,1276,0,0 -BRDA:5,1276,1,0 -BRDA:5,1276,2,0 -BRDA:5,1276,3,0 -BRDA:5,1276,4,0 -BRDA:5,1277,0,0 -BRDA:5,1277,1,0 -BRDA:5,1278,0,0 -BRDA:5,1278,1,0 -BRDA:5,1278,2,0 -BRDA:5,1278,3,0 -BRDA:5,1279,0,0 -BRDA:5,1279,1,0 -BRDA:5,1280,0,0 -BRDA:5,1280,1,0 -BRDA:5,1280,2,0 -BRDA:5,1280,3,0 -BRDA:5,1280,4,0 -BRDA:5,1280,5,0 -BRDA:5,1280,6,0 -BRDA:5,1280,7,0 -BRDA:5,1280,8,0 -BRDA:5,1280,9,0 -BRDA:5,1280,10,0 -BRDA:5,1280,11,0 -BRDA:5,1280,12,0 -BRDA:5,1280,13,0 -BRDA:5,1280,14,0 -BRDA:5,1280,15,0 -BRDA:5,1280,16,0 -BRDA:5,1280,17,0 -BRDA:5,1281,0,0 -BRDA:5,1281,1,0 -BRDA:5,1282,0,0 -BRDA:5,1282,1,0 -BRDA:5,1282,2,0 -BRDA:5,1282,3,0 -BRDA:5,1282,4,0 -BRDA:5,1282,5,0 -BRDA:5,1282,6,0 -BRDA:5,1282,7,0 -BRDA:5,1282,8,0 -BRDA:5,1282,9,0 -BRDA:5,1282,10,0 -BRDA:5,1282,11,0 -BRDA:5,1282,12,0 -BRDA:5,1282,13,0 -BRDA:5,1282,14,0 -BRDA:5,1282,15,0 -BRDA:5,1282,16,0 -BRDA:5,1282,17,0 -BRDA:5,1282,18,0 -BRDA:5,1282,19,0 -BRDA:5,1282,20,0 -BRDA:5,1282,21,0 -BRDA:5,1283,0,0 -BRDA:5,1283,1,0 -BRDA:5,1284,0,0 -BRDA:5,1284,1,0 -BRDA:5,1285,0,0 -BRDA:5,1285,1,0 -BRDA:5,1286,0,0 -BRDA:5,1286,1,0 -BRDA:5,1286,2,0 -BRDA:5,1286,3,0 -BRDA:5,1286,4,0 -BRDA:5,1287,0,0 -BRDA:5,1287,1,0 -BRDA:5,1288,0,0 -BRDA:5,1288,1,0 -BRDA:5,1289,0,0 -BRDA:5,1289,1,0 -BRDA:5,1290,0,0 -BRDA:5,1290,1,0 -BRDA:5,1291,0,0 -BRDA:5,1291,1,0 -BRDA:5,1292,0,0 -BRDA:5,1292,1,0 -BRDA:5,1293,0,0 -BRDA:5,1293,1,0 -BRDA:5,1294,0,0 -BRDA:5,1294,1,0 -BRDA:5,1295,0,0 -BRDA:5,1295,1,0 -BRDA:5,1296,0,0 -BRDA:5,1296,1,0 -BRDA:5,1297,0,0 -BRDA:5,1297,1,0 -BRDA:5,1298,0,0 -BRDA:5,1298,1,0 -BRDA:5,1299,0,0 -BRDA:5,1299,1,0 -BRDA:5,1300,0,0 -BRDA:5,1300,1,0 -BRDA:5,1301,0,0 -BRDA:5,1301,1,0 -BRDA:5,1302,0,0 -BRDA:5,1302,1,0 -BRDA:5,1303,0,0 -BRDA:5,1303,1,0 -BRDA:5,1304,0,0 -BRDA:5,1304,1,0 -BRDA:5,1305,0,0 -BRDA:5,1305,1,0 -BRDA:5,1306,0,0 -BRDA:5,1306,1,0 -BRDA:5,1307,0,0 -BRDA:5,1307,1,0 -BRDA:5,1308,0,0 -BRDA:5,1308,1,0 -BRDA:5,1309,0,0 -BRDA:5,1309,1,0 -BRDA:5,1310,0,0 -BRDA:5,1310,1,0 -BRDA:5,1311,0,0 -BRDA:5,1311,1,0 -BRDA:5,1312,0,0 -BRDA:5,1312,1,0 -BRDA:5,1313,0,0 -BRDA:5,1313,1,0 -BRDA:5,1314,0,0 -BRDA:5,1314,1,0 -BRDA:5,1315,0,0 -BRDA:5,1315,1,0 -BRDA:5,1315,2,0 -BRDA:5,1315,3,0 -BRDA:5,1316,0,0 -BRDA:5,1316,1,0 -BRDA:5,1317,0,0 -BRDA:5,1317,1,0 -BRDA:5,1318,0,0 -BRDA:5,1318,1,0 -BRDA:5,1319,0,0 -BRDA:5,1319,1,0 -BRDA:5,1320,0,0 -BRDA:5,1320,1,0 -BRDA:5,1321,0,0 -BRDA:5,1321,1,0 -BRDA:5,1322,0,0 -BRDA:5,1322,1,0 -BRDA:5,1323,0,0 -BRDA:5,1323,1,0 -BRDA:5,1324,0,0 -BRDA:5,1324,1,0 -BRDA:5,1325,0,0 -BRDA:5,1325,1,0 -BRDA:5,1326,0,0 -BRDA:5,1326,1,0 -BRDA:5,1327,0,0 -BRDA:5,1327,1,0 -BRDA:5,1328,0,0 -BRDA:5,1328,1,0 -BRDA:5,1329,0,0 -BRDA:5,1329,1,0 -BRDA:5,1330,0,0 -BRDA:5,1330,1,0 -BRDA:5,1331,0,0 -BRDA:5,1331,1,0 -BRDA:5,1332,0,0 -BRDA:5,1332,1,0 -BRDA:5,1333,0,0 -BRDA:5,1333,1,0 -BRDA:5,1334,0,0 -BRDA:5,1334,1,0 -BRDA:5,1335,0,0 -BRDA:5,1335,1,0 -BRDA:5,1336,0,0 -BRDA:5,1336,1,0 -BRDA:5,1337,0,0 -BRDA:5,1337,1,0 -BRDA:5,1337,2,0 -BRDA:5,1337,3,0 -BRDA:5,1337,4,0 -BRDA:5,1337,5,0 -BRDA:5,1338,0,0 -BRDA:5,1338,1,0 -BRDA:5,1339,0,0 -BRDA:5,1339,1,0 -BRDA:5,1340,0,0 -BRDA:5,1340,1,0 -BRDA:5,1340,2,0 -BRDA:5,1340,3,0 -BRDA:5,1340,4,0 -BRDA:5,1341,0,0 -BRDA:5,1341,1,0 -BRDA:5,1341,2,0 -BRDA:5,1341,3,0 -BRDA:5,1342,0,0 -BRDA:5,1342,1,0 -BRDA:5,1343,0,0 -BRDA:5,1343,1,0 -BRDA:5,1343,2,0 -BRDA:5,1343,3,0 -BRDA:5,1344,0,0 -BRDA:5,1344,1,0 -BRDA:5,1345,0,0 -BRDA:5,1345,1,0 -BRDA:5,1345,2,0 -BRDA:5,1345,3,0 -BRDA:5,1346,0,0 -BRDA:5,1346,1,0 -BRDA:5,1347,0,0 -BRDA:5,1347,1,0 -BRDA:5,1348,0,0 -BRDA:5,1348,1,0 -BRDA:5,1349,0,0 -BRDA:5,1349,1,0 -BRDA:5,1350,0,0 -BRDA:5,1350,1,0 -BRDA:5,1351,0,0 -BRDA:5,1351,1,0 -BRDA:5,1352,0,0 -BRDA:5,1352,1,0 -BRDA:5,1353,0,0 -BRDA:5,1353,1,0 -BRDA:5,1354,0,0 -BRDA:5,1354,1,0 -BRDA:5,1355,0,0 -BRDA:5,1355,1,0 -BRDA:5,1355,2,0 -BRDA:5,1355,3,0 -BRDA:5,1356,0,0 -BRDA:5,1356,1,0 -BRDA:5,1356,2,0 -BRDA:5,1357,0,0 -BRDA:5,1357,1,0 -BRDA:5,1358,0,0 -BRDA:5,1358,1,0 -BRDA:5,1359,0,0 -BRDA:5,1359,1,0 -BRDA:5,1360,0,0 -BRDA:5,1360,1,0 -BRDA:5,1361,0,0 -BRDA:5,1361,1,0 -BRDA:5,1362,0,0 -BRDA:5,1362,1,0 -BRDA:5,1363,0,0 -BRDA:5,1363,1,0 -BRDA:5,1364,0,0 -BRDA:5,1364,1,0 -BRDA:5,1365,0,0 -BRDA:5,1365,1,0 -BRDA:5,1365,2,0 -BRDA:5,1366,0,0 -BRDA:5,1366,1,0 -BRDA:5,1367,0,0 -BRDA:5,1367,1,0 -BRDA:5,1367,2,0 -BRDA:5,1367,3,0 -BRDA:5,1368,0,0 -BRDA:5,1368,1,0 -BRDA:5,1368,2,0 -BRDA:5,1369,0,0 -BRDA:5,1369,1,0 -BRDA:5,1370,0,0 -BRDA:5,1370,1,0 -BRDA:5,1370,2,0 -BRDA:5,1371,0,0 -BRDA:5,1371,1,0 -BRDA:5,1371,2,0 -BRDA:5,1371,3,0 -BRDA:5,1372,0,0 -BRDA:5,1372,1,0 -BRDA:5,1373,0,0 -BRDA:5,1373,1,0 -BRDA:5,1374,0,0 -BRDA:5,1374,1,0 -BRDA:5,1375,0,0 -BRDA:5,1375,1,0 -BRDA:5,1376,0,0 -BRDA:5,1376,1,0 -BRDA:5,1377,0,0 -BRDA:5,1377,1,0 -BRDA:5,1378,0,0 -BRDA:5,1378,1,0 -BRDA:5,1379,0,0 -BRDA:5,1379,1,0 -BRDA:5,1380,0,0 -BRDA:5,1380,1,0 -BRDA:5,1381,0,0 -BRDA:5,1381,1,0 -BRDA:5,1382,0,0 -BRDA:5,1382,1,0 -BRDA:5,1383,0,0 -BRDA:5,1383,1,0 -BRDA:5,1384,0,0 -BRDA:5,1384,1,0 -BRDA:5,1385,0,0 -BRDA:5,1385,1,0 -BRDA:5,1386,0,0 -BRDA:5,1386,1,0 -BRDA:5,1387,0,0 -BRDA:5,1387,1,0 -BRDA:5,1388,0,0 -BRDA:5,1388,1,0 -BRDA:5,1389,0,0 -BRDA:5,1389,1,0 -BRDA:5,1390,0,0 -BRDA:5,1390,1,0 -BRDA:5,1391,0,0 -BRDA:5,1391,1,0 -BRDA:5,1392,0,0 -BRDA:5,1392,1,0 -BRDA:5,1393,0,0 -BRDA:5,1393,1,0 -BRDA:5,1394,0,0 -BRDA:5,1394,1,0 -BRDA:5,1395,0,0 -BRDA:5,1395,1,0 -BRDA:5,1396,0,0 -BRDA:5,1396,1,0 -BRDA:5,1397,0,0 -BRDA:5,1397,1,0 -BRDA:5,1398,0,0 -BRDA:5,1398,1,0 -BRDA:5,1399,0,0 -BRDA:5,1399,1,0 -BRDA:5,1399,2,0 -BRDA:5,1400,0,0 -BRDA:5,1400,1,0 -BRDA:5,1401,0,0 -BRDA:5,1401,1,0 -BRDA:5,1402,0,0 -BRDA:5,1402,1,0 -BRDA:5,1403,0,0 -BRDA:5,1403,1,0 -BRDA:5,1404,0,0 -BRDA:5,1404,1,0 -BRDA:5,1405,0,0 -BRDA:5,1405,1,0 -BRDA:5,1406,0,0 -BRDA:5,1406,1,0 -BRDA:5,1406,2,0 -BRDA:5,1406,3,0 -BRDA:5,1407,0,0 -BRDA:5,1407,1,0 -BRDA:5,1407,2,0 -BRDA:5,1407,3,0 -BRDA:5,1408,0,0 -BRDA:5,1408,1,0 -BRDA:5,1408,2,0 -BRDA:5,1409,0,0 -BRDA:5,1409,1,0 -BRDA:5,1409,2,0 -BRDA:5,1409,3,0 -BRDA:5,1410,0,0 -BRDA:5,1410,1,0 -BRDA:5,1410,2,0 -BRDA:5,1410,3,0 -BRDA:5,1410,4,0 -BRDA:5,1411,0,0 -BRDA:5,1411,1,0 -BRDA:5,1412,0,0 -BRDA:5,1412,1,0 -BRDA:5,1413,0,0 -BRDA:5,1413,1,0 -BRDA:5,1413,2,0 -BRDA:5,1414,0,0 -BRDA:5,1414,1,0 -BRDA:5,1415,0,0 -BRDA:5,1415,1,0 -BRDA:5,1416,0,0 -BRDA:5,1416,1,0 -BRDA:5,1417,0,0 -BRDA:5,1417,1,0 -BRDA:5,1418,0,0 -BRDA:5,1418,1,0 -BRDA:5,1419,0,0 -BRDA:5,1419,1,0 -BRDA:5,1420,0,0 -BRDA:5,1420,1,0 -BRDA:5,1421,0,0 -BRDA:5,1421,1,0 -BRDA:5,1421,2,0 -BRDA:5,1422,0,0 -BRDA:5,1422,1,0 -BRDA:5,1423,0,0 -BRDA:5,1423,1,0 -BRDA:6,1424,0,0 -BRDA:6,1424,1,0 -BRDA:6,1425,0,0 -BRDA:6,1425,1,0 -BRDA:6,1426,0,0 -BRDA:6,1426,1,0 -BRDA:6,1427,0,0 -BRDA:6,1427,1,0 -BRDA:6,1428,0,0 -BRDA:6,1428,1,0 -BRDA:6,1428,2,0 -BRDA:6,1428,3,0 -BRDA:6,1429,0,0 -BRDA:6,1429,1,0 -BRDA:6,1430,0,0 -BRDA:6,1430,1,0 -BRDA:6,1431,0,0 -BRDA:6,1431,1,0 -BRDA:6,1432,0,0 -BRDA:6,1432,1,0 -BRDA:6,1433,0,0 -BRDA:6,1433,1,0 -BRDA:6,1434,0,0 -BRDA:6,1434,1,0 -BRDA:6,1435,0,0 -BRDA:6,1435,1,0 -BRDA:6,1436,0,0 -BRDA:6,1436,1,0 -BRDA:6,1437,0,0 -BRDA:6,1437,1,0 -BRDA:6,1438,0,0 -BRDA:6,1438,1,0 -BRDA:6,1439,0,0 -BRDA:6,1439,1,0 -BRDA:6,1440,0,0 -BRDA:6,1440,1,0 -BRDA:6,1441,0,0 -BRDA:6,1441,1,0 -BRDA:6,1442,0,0 -BRDA:6,1442,1,0 -BRDA:6,1443,0,0 -BRDA:6,1443,1,0 -BRDA:6,1444,0,0 -BRDA:6,1444,1,0 -BRDA:6,1445,0,0 -BRDA:6,1445,1,0 -BRDA:6,1446,0,0 -BRDA:6,1446,1,0 -BRDA:6,1447,0,0 -BRDA:6,1447,1,0 -BRDA:6,1448,0,0 -BRDA:6,1448,1,0 -BRDA:6,1449,0,0 -BRDA:6,1449,1,0 -BRDA:6,1450,0,0 -BRDA:6,1450,1,0 -BRDA:6,1451,0,0 -BRDA:6,1451,1,0 -BRDA:6,1452,0,0 -BRDA:6,1452,1,0 -BRDA:6,1453,0,0 -BRDA:6,1453,1,0 -BRDA:6,1454,0,0 -BRDA:6,1454,1,0 -BRDA:6,1455,0,0 -BRDA:6,1455,1,0 -BRDA:6,1456,0,0 -BRDA:6,1456,1,0 -BRDA:6,1457,0,0 -BRDA:6,1457,1,0 -BRDA:6,1458,0,0 -BRDA:6,1458,1,0 -BRDA:6,1458,2,0 -BRDA:6,1459,0,0 -BRDA:6,1459,1,0 -BRDA:6,1459,2,0 -BRDA:6,1459,3,0 -BRDA:6,1460,0,0 -BRDA:6,1460,1,0 -BRDA:6,1460,2,0 -BRDA:6,1460,3,0 -BRDA:6,1461,0,0 -BRDA:6,1461,1,0 -BRDA:6,1462,0,0 -BRDA:6,1462,1,0 -BRDA:6,1462,2,0 -BRDA:6,1462,3,0 -BRDA:6,1462,4,0 -BRDA:6,1462,5,0 -BRDA:6,1462,6,0 -BRDA:6,1462,7,0 -BRDA:6,1462,8,0 -BRDA:6,1462,9,0 -BRDA:6,1462,10,0 -BRDA:6,1462,11,0 -BRDA:6,1462,12,0 -BRDA:6,1463,0,0 -BRDA:6,1463,1,0 -BRDA:6,1464,0,0 -BRDA:6,1464,1,0 -BRDA:6,1464,2,0 -BRDA:6,1464,3,0 -BRDA:6,1464,4,0 -BRDA:6,1465,0,0 -BRDA:6,1465,1,0 -BRDA:6,1465,2,0 -BRDA:6,1465,3,0 -BRDA:6,1465,4,0 -BRDA:6,1466,0,0 -BRDA:6,1466,1,0 -BRDA:6,1467,0,0 -BRDA:6,1467,1,0 -BRDA:6,1468,0,0 -BRDA:6,1468,1,0 -BRDA:6,1469,0,0 -BRDA:6,1469,1,0 -BRDA:6,1470,0,0 -BRDA:6,1470,1,0 -BRDA:6,1471,0,0 -BRDA:6,1471,1,0 -BRDA:6,1472,0,0 -BRDA:6,1472,1,0 -BRDA:6,1473,0,0 -BRDA:6,1473,1,0 -BRDA:6,1474,0,0 -BRDA:6,1474,1,0 -BRDA:6,1475,0,0 -BRDA:6,1475,1,0 -BRDA:6,1476,0,0 -BRDA:6,1476,1,0 -BRDA:6,1477,0,0 -BRDA:6,1477,1,0 -BRDA:6,1478,0,0 -BRDA:6,1478,1,0 -BRDA:6,1479,0,0 -BRDA:6,1479,1,0 -BRDA:6,1480,0,0 -BRDA:6,1480,1,0 -BRDA:6,1481,0,0 -BRDA:6,1481,1,0 -BRDA:6,1482,0,0 -BRDA:6,1482,1,0 -BRDA:6,1483,0,0 -BRDA:6,1483,1,0 -BRDA:6,1484,0,0 -BRDA:6,1484,1,0 -BRDA:6,1485,0,0 -BRDA:6,1485,1,0 -BRDA:6,1486,0,0 -BRDA:6,1486,1,0 -BRDA:6,1486,2,0 -BRDA:6,1486,3,0 -BRDA:6,1487,0,0 -BRDA:6,1487,1,0 -BRDA:6,1488,0,0 -BRDA:6,1488,1,0 -BRDA:6,1489,0,0 -BRDA:6,1489,1,0 -BRDA:6,1490,0,0 -BRDA:6,1490,1,0 -BRDA:6,1491,0,0 -BRDA:6,1491,1,0 -BRDA:6,1492,0,0 -BRDA:6,1492,1,0 -BRDA:6,1493,0,0 -BRDA:6,1493,1,0 -BRDA:6,1494,0,0 -BRDA:6,1494,1,0 -BRDA:6,1495,0,0 -BRDA:6,1495,1,0 -BRDA:6,1496,0,0 -BRDA:6,1496,1,0 -BRDA:6,1497,0,0 -BRDA:6,1497,1,0 -BRDA:6,1498,0,0 -BRDA:6,1498,1,0 -BRDA:6,1499,0,0 -BRDA:6,1499,1,0 -BRDA:6,1500,0,0 -BRDA:6,1500,1,0 -BRDA:6,1501,0,0 -BRDA:6,1501,1,0 -BRDA:6,1502,0,0 -BRDA:6,1502,1,0 -BRDA:6,1503,0,0 -BRDA:6,1503,1,0 -BRDA:6,1503,2,0 -BRDA:6,1504,0,0 -BRDA:6,1504,1,0 -BRDA:6,1505,0,0 -BRDA:6,1505,1,0 -BRDA:6,1506,0,0 -BRDA:6,1506,1,0 -BRDA:6,1507,0,0 -BRDA:6,1507,1,0 -BRDA:6,1508,0,0 -BRDA:6,1508,1,0 -BRDA:6,1509,0,0 -BRDA:6,1509,1,0 -BRDA:6,1510,0,0 -BRDA:6,1510,1,0 -BRDA:6,1511,0,0 -BRDA:6,1511,1,0 -BRDA:6,1512,0,0 -BRDA:6,1512,1,0 -BRDA:6,1513,0,0 -BRDA:6,1513,1,0 -BRDA:6,1514,0,0 -BRDA:6,1514,1,0 -BRDA:6,1515,0,0 -BRDA:6,1515,1,0 -BRDA:6,1516,0,0 -BRDA:6,1516,1,0 -BRDA:6,1517,0,0 -BRDA:6,1517,1,0 -BRDA:6,1518,0,0 -BRDA:6,1518,1,0 -BRDA:6,1519,0,0 -BRDA:6,1519,1,0 -BRDA:6,1520,0,0 -BRDA:6,1520,1,0 -BRDA:6,1521,0,0 -BRDA:6,1521,1,0 -BRDA:6,1522,0,0 -BRDA:6,1522,1,0 -BRDA:6,1523,0,0 -BRDA:6,1523,1,0 -BRDA:6,1524,0,0 -BRDA:6,1524,1,0 -BRDA:6,1525,0,0 -BRDA:6,1525,1,0 -BRDA:6,1526,0,0 -BRDA:6,1526,1,0 -BRDA:6,1527,0,0 -BRDA:6,1527,1,0 -BRDA:6,1528,0,0 -BRDA:6,1528,1,0 -BRDA:6,1529,0,0 -BRDA:6,1529,1,0 -BRDA:6,1530,0,0 -BRDA:6,1530,1,0 -BRDA:6,1531,0,0 -BRDA:6,1531,1,0 -BRDA:6,1532,0,0 -BRDA:6,1532,1,0 -BRDA:6,1533,0,0 -BRDA:6,1533,1,0 -BRDA:6,1534,0,0 -BRDA:6,1534,1,0 -BRDA:6,1535,0,0 -BRDA:6,1535,1,0 -BRDA:6,1536,0,0 -BRDA:6,1536,1,0 -BRDA:6,1537,0,0 -BRDA:6,1537,1,0 -BRDA:6,1538,0,0 -BRDA:6,1538,1,0 -BRDA:6,1539,0,0 -BRDA:6,1539,1,0 -BRDA:6,1540,0,0 -BRDA:6,1540,1,0 -BRDA:6,1541,0,0 -BRDA:6,1541,1,0 -BRDA:6,1542,0,0 -BRDA:6,1542,1,0 -BRDA:6,1543,0,0 -BRDA:6,1543,1,0 -BRDA:6,1544,0,0 -BRDA:6,1544,1,0 -BRDA:6,1545,0,0 -BRDA:6,1545,1,0 -BRDA:6,1546,0,0 -BRDA:6,1546,1,0 -BRDA:6,1546,2,0 -BRDA:6,1547,0,0 -BRDA:6,1547,1,0 -BRDA:6,1548,0,0 -BRDA:6,1548,1,0 -BRDA:6,1548,2,0 -BRDA:6,1548,3,0 -BRDA:6,1549,0,0 -BRDA:6,1549,1,0 -BRDA:6,1550,0,0 -BRDA:6,1550,1,0 -BRDA:6,1551,0,0 -BRDA:6,1551,1,0 -BRDA:6,1552,0,0 -BRDA:6,1552,1,0 -BRDA:6,1553,0,0 -BRDA:6,1553,1,0 -BRDA:6,1554,0,0 -BRDA:6,1554,1,0 -BRDA:6,1555,0,0 -BRDA:6,1555,1,0 -BRDA:6,1556,0,0 -BRDA:6,1556,1,0 -BRDA:6,1557,0,0 -BRDA:6,1557,1,0 -BRDA:6,1558,0,0 -BRDA:6,1558,1,0 -BRDA:6,1559,0,0 -BRDA:6,1559,1,0 -BRDA:6,1560,0,0 -BRDA:6,1560,1,0 -BRDA:6,1561,0,0 -BRDA:6,1561,1,0 -BRDA:6,1562,0,0 -BRDA:6,1562,1,0 -BRDA:6,1563,0,0 -BRDA:6,1563,1,0 -BRDA:6,1564,0,0 -BRDA:6,1564,1,0 -BRDA:6,1565,0,0 -BRDA:6,1565,1,0 -BRDA:6,1566,0,0 -BRDA:6,1566,1,0 -BRDA:6,1566,2,0 -BRDA:6,1566,3,0 -BRDA:6,1567,0,0 -BRDA:6,1567,1,0 -BRDA:6,1568,0,0 -BRDA:6,1568,1,0 -BRDA:6,1569,0,0 -BRDA:6,1569,1,0 -BRDA:6,1570,0,0 -BRDA:6,1570,1,0 -BRDA:6,1571,0,0 -BRDA:6,1571,1,0 -BRDA:6,1572,0,0 -BRDA:6,1572,1,0 -BRDA:6,1573,0,0 -BRDA:6,1573,1,0 -BRDA:6,1574,0,0 -BRDA:6,1574,1,0 -BRDA:6,1575,0,0 -BRDA:6,1575,1,0 -BRDA:6,1576,0,0 -BRDA:6,1576,1,0 -BRDA:6,1577,0,0 -BRDA:6,1577,1,0 -BRDA:6,1578,0,0 -BRDA:6,1578,1,0 -BRDA:6,1579,0,0 -BRDA:6,1579,1,0 -BRDA:6,1580,0,0 -BRDA:6,1580,1,0 -BRDA:6,1581,0,0 -BRDA:6,1581,1,0 -BRDA:6,1582,0,0 -BRDA:6,1582,1,0 -BRDA:6,1583,0,0 -BRDA:6,1583,1,0 -BRDA:6,1584,0,0 -BRDA:6,1584,1,0 -BRDA:6,1585,0,0 -BRDA:6,1585,1,0 -BRDA:6,1586,0,0 -BRDA:6,1586,1,0 -BRDA:6,1587,0,0 -BRDA:6,1587,1,0 -BRDA:6,1588,0,0 -BRDA:6,1588,1,0 -BRDA:6,1589,0,0 -BRDA:6,1589,1,0 -BRDA:6,1590,0,0 -BRDA:6,1590,1,0 -BRDA:6,1591,0,0 -BRDA:6,1591,1,0 -BRDA:6,1592,0,0 -BRDA:6,1592,1,0 -BRDA:6,1593,0,0 -BRDA:6,1593,1,0 -BRDA:6,1594,0,0 -BRDA:6,1594,1,0 -BRDA:6,1595,0,0 -BRDA:6,1595,1,0 -BRDA:6,1596,0,0 -BRDA:6,1596,1,0 -BRDA:6,1597,0,0 -BRDA:6,1597,1,0 -BRDA:6,1598,0,0 -BRDA:6,1598,1,0 -BRDA:6,1599,0,0 -BRDA:6,1599,1,0 -BRDA:6,1600,0,0 -BRDA:6,1600,1,0 -BRDA:6,1601,0,0 -BRDA:6,1601,1,0 -BRDA:6,1602,0,0 -BRDA:6,1602,1,0 -BRDA:6,1603,0,0 -BRDA:6,1603,1,0 -BRDA:6,1604,0,0 -BRDA:6,1604,1,0 -BRDA:6,1605,0,0 -BRDA:6,1605,1,0 -BRDA:6,1606,0,0 -BRDA:6,1606,1,0 -BRDA:6,1607,0,0 -BRDA:6,1607,1,0 -BRDA:6,1607,2,0 -BRDA:6,1608,0,0 -BRDA:6,1608,1,0 -BRDA:6,1609,0,0 -BRDA:6,1609,1,0 -BRDA:6,1610,0,0 -BRDA:6,1610,1,0 -BRDA:6,1611,0,0 -BRDA:6,1611,1,0 -BRDA:6,1612,0,0 -BRDA:6,1612,1,0 -BRDA:6,1613,0,0 -BRDA:6,1613,1,0 -BRDA:6,1613,2,0 -BRDA:6,1614,0,0 -BRDA:6,1614,1,0 -BRDA:6,1615,0,0 -BRDA:6,1615,1,0 -BRDA:6,1615,2,0 -BRDA:6,1615,3,0 -BRDA:6,1616,0,0 -BRDA:6,1616,1,0 -BRDA:6,1617,0,0 -BRDA:6,1617,1,0 -BRDA:6,1618,0,0 -BRDA:6,1618,1,0 -BRDA:6,1619,0,0 -BRDA:6,1619,1,0 -BRDA:6,1620,0,0 -BRDA:6,1620,1,0 -BRDA:6,1621,0,0 -BRDA:6,1621,1,0 -BRDA:6,1622,0,0 -BRDA:6,1622,1,0 -BRDA:6,1623,0,0 -BRDA:6,1623,1,0 -BRDA:6,1624,0,0 -BRDA:6,1624,1,0 -BRDA:6,1625,0,0 -BRDA:6,1625,1,0 -BRDA:6,1626,0,0 -BRDA:6,1626,1,0 -BRDA:6,1627,0,0 -BRDA:6,1627,1,0 -BRDA:6,1628,0,0 -BRDA:6,1628,1,0 -BRDA:6,1629,0,0 -BRDA:6,1629,1,0 -BRDA:6,1630,0,0 -BRDA:6,1630,1,0 -BRDA:6,1631,0,0 -BRDA:6,1631,1,0 -BRDA:6,1632,0,0 -BRDA:6,1632,1,0 -BRDA:6,1633,0,0 -BRDA:6,1633,1,0 -BRDA:6,1633,2,0 -BRDA:6,1634,0,0 -BRDA:6,1634,1,0 -BRDA:6,1635,0,0 -BRDA:6,1635,1,0 -BRDA:6,1635,2,0 -BRDA:6,1636,0,0 -BRDA:6,1636,1,0 -BRDA:6,1637,0,0 -BRDA:6,1637,1,0 -BRDA:6,1638,0,0 -BRDA:6,1638,1,0 -BRDA:6,1639,0,0 -BRDA:6,1639,1,0 -BRDA:6,1640,0,0 -BRDA:6,1640,1,0 -BRDA:6,1641,0,0 -BRDA:6,1641,1,0 -BRDA:6,1642,0,0 -BRDA:6,1642,1,0 -BRDA:6,1643,0,0 -BRDA:6,1643,1,0 -BRDA:6,1643,2,0 -BRDA:6,1643,3,0 -BRDA:6,1644,0,0 -BRDA:6,1644,1,0 -BRDA:6,1645,0,0 -BRDA:6,1645,1,0 -BRDA:6,1646,0,0 -BRDA:6,1646,1,0 -BRDA:6,1647,0,0 -BRDA:6,1647,1,0 -BRDA:6,1648,0,0 -BRDA:6,1648,1,0 -BRDA:6,1649,0,0 -BRDA:6,1649,1,0 -BRDA:6,1650,0,0 -BRDA:6,1650,1,0 -BRDA:6,1651,0,0 -BRDA:6,1651,1,0 -BRDA:6,1652,0,0 -BRDA:6,1652,1,0 -BRDA:6,1653,0,0 -BRDA:6,1653,1,0 -BRDA:6,1654,0,0 -BRDA:6,1654,1,0 -BRDA:6,1655,0,0 -BRDA:6,1655,1,0 -BRDA:6,1656,0,0 -BRDA:6,1656,1,0 -BRDA:6,1657,0,0 -BRDA:6,1657,1,0 -BRDA:6,1658,0,0 -BRDA:6,1658,1,0 -BRDA:6,1659,0,0 -BRDA:6,1659,1,0 -BRDA:6,1659,2,0 -BRDA:6,1660,0,0 -BRDA:6,1660,1,0 -BRDA:6,1661,0,0 -BRDA:6,1661,1,0 -BRDA:6,1662,0,0 -BRDA:6,1662,1,0 -BRDA:6,1663,0,0 -BRDA:6,1663,1,0 -BRDA:6,1664,0,0 -BRDA:6,1664,1,0 -BRDA:6,1665,0,0 -BRDA:6,1665,1,0 -BRDA:6,1666,0,0 -BRDA:6,1666,1,0 -BRDA:6,1667,0,0 -BRDA:6,1667,1,0 -BRDA:6,1668,0,0 -BRDA:6,1668,1,0 -BRDA:6,1669,0,0 -BRDA:6,1669,1,0 -BRDA:6,1670,0,0 -BRDA:6,1670,1,0 -BRDA:6,1671,0,0 -BRDA:6,1671,1,0 -BRDA:6,1672,0,0 -BRDA:6,1672,1,0 -BRDA:6,1673,0,0 -BRDA:6,1673,1,0 -BRDA:6,1674,0,0 -BRDA:6,1674,1,0 -BRDA:6,1675,0,0 -BRDA:6,1675,1,0 -BRDA:6,1676,0,0 -BRDA:6,1676,1,0 -BRDA:6,1676,2,0 -BRDA:6,1677,0,0 -BRDA:6,1677,1,0 -BRDA:6,1678,0,0 -BRDA:6,1678,1,0 -BRDA:6,1678,2,0 -BRDA:6,1679,0,0 -BRDA:6,1679,1,0 -BRDA:6,1680,0,0 -BRDA:6,1680,1,0 -BRDA:6,1681,0,0 -BRDA:6,1681,1,0 -BRDA:6,1682,0,0 -BRDA:6,1682,1,0 -BRDA:6,1683,0,0 -BRDA:6,1683,1,0 -BRDA:6,1683,2,0 -BRDA:6,1684,0,0 -BRDA:6,1684,1,0 -BRDA:6,1685,0,0 -BRDA:6,1685,1,0 -BRDA:6,1685,2,0 -BRDA:6,1685,3,0 -BRDA:6,1686,0,0 -BRDA:6,1686,1,0 -BRDA:6,1687,0,0 -BRDA:6,1687,1,0 -BRDA:6,1687,2,0 -BRDA:6,1687,3,0 -BRDA:6,1687,4,0 -BRDA:6,1688,0,0 -BRDA:6,1688,1,0 -BRDA:6,1689,0,0 -BRDA:6,1689,1,0 -BRDA:6,1690,0,0 -BRDA:6,1690,1,0 -BRDA:6,1691,0,0 -BRDA:6,1691,1,0 -BRDA:6,1692,0,0 -BRDA:6,1692,1,0 -BRDA:6,1693,0,0 -BRDA:6,1693,1,0 -BRDA:6,1694,0,0 -BRDA:6,1694,1,0 -BRDA:6,1695,0,0 -BRDA:6,1695,1,0 -BRDA:6,1696,0,0 -BRDA:6,1696,1,0 -BRDA:6,1697,0,0 -BRDA:6,1697,1,0 -BRDA:6,1698,0,0 -BRDA:6,1698,1,0 -BRDA:6,1699,0,0 -BRDA:6,1699,1,0 -BRDA:6,1700,0,0 -BRDA:6,1700,1,0 -BRDA:6,1701,0,0 -BRDA:6,1701,1,0 -BRDA:6,1702,0,0 -BRDA:6,1702,1,0 -BRDA:6,1703,0,0 -BRDA:6,1703,1,0 -BRDA:6,1704,0,0 -BRDA:6,1704,1,0 -BRDA:6,1705,0,0 -BRDA:6,1705,1,0 -BRDA:6,1706,0,0 -BRDA:6,1706,1,0 -BRDA:6,1707,0,0 -BRDA:6,1707,1,0 -BRDA:6,1708,0,0 -BRDA:6,1708,1,0 -BRDA:6,1709,0,0 -BRDA:6,1709,1,0 -BRDA:6,1710,0,0 -BRDA:6,1710,1,0 -BRDA:6,1711,0,0 -BRDA:6,1711,1,0 -BRDA:6,1712,0,0 -BRDA:6,1712,1,0 -BRDA:6,1713,0,0 -BRDA:6,1713,1,0 -BRDA:6,1714,0,0 -BRDA:6,1714,1,0 -BRDA:6,1715,0,0 -BRDA:6,1715,1,0 -BRDA:6,1716,0,0 -BRDA:6,1716,1,0 -BRDA:6,1717,0,0 -BRDA:6,1717,1,0 -BRDA:6,1718,0,0 -BRDA:6,1718,1,0 -BRDA:6,1719,0,0 -BRDA:6,1719,1,0 -BRDA:6,1720,0,0 -BRDA:6,1720,1,0 -BRDA:6,1721,0,0 -BRDA:6,1721,1,0 -BRDA:6,1722,0,0 -BRDA:6,1722,1,0 -BRDA:6,1723,0,0 -BRDA:6,1723,1,0 -BRDA:6,1724,0,0 -BRDA:6,1724,1,0 -BRDA:6,1725,0,0 -BRDA:6,1725,1,0 -BRDA:6,1726,0,0 -BRDA:6,1726,1,0 -BRDA:6,1727,0,0 -BRDA:6,1727,1,0 -BRDA:6,1728,0,0 -BRDA:6,1728,1,0 -BRDA:6,1729,0,0 -BRDA:6,1729,1,0 -BRDA:6,1730,0,0 -BRDA:6,1730,1,0 -BRDA:6,1731,0,0 -BRDA:6,1731,1,0 -BRDA:6,1732,0,0 -BRDA:6,1732,1,0 -BRDA:6,1733,0,0 -BRDA:6,1733,1,0 -BRDA:6,1734,0,0 -BRDA:6,1734,1,0 -BRDA:6,1735,0,0 -BRDA:6,1735,1,0 -BRDA:6,1736,0,0 -BRDA:6,1736,1,0 -BRDA:6,1737,0,0 -BRDA:6,1737,1,0 -BRDA:6,1738,0,0 -BRDA:6,1738,1,0 -BRDA:6,1739,0,0 -BRDA:6,1739,1,0 -BRDA:6,1740,0,0 -BRDA:6,1740,1,0 -BRDA:6,1741,0,0 -BRDA:6,1741,1,0 -BRDA:6,1742,0,0 -BRDA:6,1742,1,0 -BRDA:6,1743,0,0 -BRDA:6,1743,1,0 -BRDA:6,1744,0,0 -BRDA:6,1744,1,0 -BRDA:6,1745,0,0 -BRDA:6,1745,1,0 -BRDA:6,1746,0,0 -BRDA:6,1746,1,0 -BRDA:6,1747,0,0 -BRDA:6,1747,1,0 -BRDA:6,1748,0,0 -BRDA:6,1748,1,0 -BRDA:6,1748,2,0 -BRDA:6,1748,3,0 -BRDA:6,1748,4,0 -BRDA:6,1748,5,0 -BRDA:6,1748,6,0 -BRDA:6,1748,7,0 -BRDA:6,1748,8,0 -BRDA:6,1748,9,0 -BRDA:6,1748,10,0 -BRDA:6,1748,11,0 -BRDA:6,1748,12,0 -BRDA:6,1748,13,0 -BRDA:6,1748,14,0 -BRDA:6,1749,0,0 -BRDA:6,1749,1,0 -BRDA:6,1750,0,0 -BRDA:6,1750,1,0 -BRDA:6,1750,2,0 -BRDA:6,1750,3,0 -BRDA:6,1750,4,0 -BRDA:6,1750,5,0 -BRDA:6,1750,6,0 -BRDA:6,1750,7,0 -BRDA:6,1750,8,0 -BRDA:6,1750,9,0 -BRDA:6,1750,10,0 -BRDA:6,1750,11,0 -BRDA:6,1750,12,0 -BRDA:6,1750,13,0 -BRDA:6,1750,14,0 -BRDA:6,1751,0,0 -BRDA:6,1751,1,0 -BRDA:6,1752,0,0 -BRDA:6,1752,1,0 -BRDA:6,1753,0,0 -BRDA:6,1753,1,0 -BRDA:6,1754,0,0 -BRDA:6,1754,1,0 -BRDA:6,1754,2,0 -BRDA:6,1755,0,0 -BRDA:6,1755,1,0 -BRDA:6,1755,2,0 -BRDA:6,1756,0,0 -BRDA:6,1756,1,0 -BRDA:6,1757,0,0 -BRDA:6,1757,1,0 -BRDA:6,1758,0,0 -BRDA:6,1758,1,0 -BRDA:6,1759,0,0 -BRDA:6,1759,1,0 -BRDA:6,1760,0,0 -BRDA:6,1760,1,0 -BRDA:6,1761,0,0 -BRDA:6,1761,1,0 -BRDA:6,1762,0,0 -BRDA:6,1762,1,0 -BRDA:6,1763,0,0 -BRDA:6,1763,1,0 -BRDA:6,1764,0,0 -BRDA:6,1764,1,0 -BRDA:6,1765,0,0 -BRDA:6,1765,1,0 -BRDA:6,1766,0,0 -BRDA:6,1766,1,0 -BRDA:6,1766,2,0 -BRDA:6,1767,0,0 -BRDA:6,1767,1,0 -BRDA:6,1768,0,0 -BRDA:6,1768,1,0 -BRDA:6,1769,0,0 -BRDA:6,1769,1,0 -BRDA:6,1770,0,0 -BRDA:6,1770,1,0 -BRDA:6,1771,0,0 -BRDA:6,1771,1,0 -BRDA:6,1772,0,0 -BRDA:6,1772,1,0 -BRDA:6,1773,0,0 -BRDA:6,1773,1,0 -BRDA:6,1774,0,0 -BRDA:6,1774,1,0 -BRDA:6,1775,0,0 -BRDA:6,1775,1,0 -BRDA:6,1776,0,0 -BRDA:6,1776,1,0 -BRDA:6,1776,2,0 -BRDA:6,1777,0,0 -BRDA:6,1777,1,0 -BRDA:6,1778,0,0 -BRDA:6,1778,1,0 -BRDA:6,1779,0,0 -BRDA:6,1779,1,0 -BRDA:6,1780,0,0 -BRDA:6,1780,1,0 -BRDA:6,1781,0,0 -BRDA:6,1781,1,0 -BRDA:6,1781,2,0 -BRDA:6,1781,3,0 -BRDA:6,1781,4,0 -BRDA:6,1781,5,0 -BRDA:6,1781,6,0 -BRDA:6,1781,7,0 -BRDA:6,1782,0,0 -BRDA:6,1782,1,0 -BRDA:6,1783,0,0 -BRDA:6,1783,1,0 -BRDA:6,1784,0,0 -BRDA:6,1784,1,0 -BRDA:6,1784,2,0 -BRDA:6,1785,0,0 -BRDA:6,1785,1,0 -BRDA:6,1786,0,0 -BRDA:6,1786,1,0 -BRDA:6,1787,0,0 -BRDA:6,1787,1,0 -BRDA:6,1787,2,0 -BRDA:6,1788,0,0 -BRDA:6,1788,1,0 -BRDA:6,1789,0,0 -BRDA:6,1789,1,0 -BRDA:6,1790,0,0 -BRDA:6,1790,1,0 -BRDA:6,1791,0,0 -BRDA:6,1791,1,0 -BRDA:6,1792,0,0 -BRDA:6,1792,1,0 -BRDA:6,1793,0,0 -BRDA:6,1793,1,0 -BRDA:6,1793,2,0 -BRDA:6,1794,0,0 -BRDA:6,1794,1,0 -BRDA:6,1795,0,0 -BRDA:6,1795,1,0 -BRDA:6,1796,0,0 -BRDA:6,1796,1,0 -BRDA:6,1797,0,0 -BRDA:6,1797,1,0 -BRDA:6,1797,2,0 -BRDA:6,1797,3,0 -BRDA:6,1797,4,0 -BRDA:6,1798,0,0 -BRDA:6,1798,1,0 -BRDA:6,1799,0,0 -BRDA:6,1799,1,0 -BRDA:6,1800,0,0 -BRDA:6,1800,1,0 -BRDA:6,1801,0,0 -BRDA:6,1801,1,0 -BRDA:6,1801,2,0 -BRDA:6,1802,0,0 -BRDA:6,1802,1,0 -BRDA:6,1803,0,0 -BRDA:6,1803,1,0 -BRDA:6,1804,0,0 -BRDA:6,1804,1,0 -BRDA:6,1805,0,0 -BRDA:6,1805,1,0 -BRDA:6,1806,0,0 -BRDA:6,1806,1,0 -BRDA:6,1807,0,0 -BRDA:6,1807,1,0 -BRDA:6,1808,0,0 -BRDA:6,1808,1,0 -BRDA:6,1809,0,0 -BRDA:6,1809,1,0 -BRDA:6,1810,0,0 -BRDA:6,1810,1,0 -BRDA:6,1810,2,0 -BRDA:6,1811,0,0 -BRDA:6,1811,1,0 -BRDA:6,1811,2,0 -BRDA:6,1812,0,0 -BRDA:6,1812,1,0 -BRDA:6,1812,2,0 -BRDA:6,1812,3,0 -BRDA:6,1813,0,0 -BRDA:6,1813,1,0 -BRDA:6,1814,0,0 -BRDA:6,1814,1,0 -BRDA:6,1815,0,0 -BRDA:6,1815,1,0 -BRDA:6,1816,0,0 -BRDA:6,1816,1,0 -BRDA:6,1817,0,0 -BRDA:6,1817,1,0 -BRDA:6,1818,0,0 -BRDA:6,1818,1,0 -BRDA:6,1819,0,0 -BRDA:6,1819,1,0 -BRDA:6,1820,0,0 -BRDA:6,1820,1,0 -BRDA:6,1821,0,0 -BRDA:6,1821,1,0 -BRDA:6,1822,0,0 -BRDA:6,1822,1,0 -BRDA:6,1823,0,0 -BRDA:6,1823,1,0 -BRDA:6,1824,0,0 -BRDA:6,1824,1,0 -BRDA:6,1825,0,0 -BRDA:6,1825,1,0 -BRDA:6,1826,0,0 -BRDA:6,1826,1,0 -BRDA:6,1827,0,0 -BRDA:6,1827,1,0 -BRDA:6,1827,2,0 -BRDA:6,1827,3,0 -BRDA:6,1828,0,0 -BRDA:6,1828,1,0 -BRDA:6,1829,0,0 -BRDA:6,1829,1,0 -BRDA:6,1830,0,0 -BRDA:6,1830,1,0 -BRDA:6,1831,0,0 -BRDA:6,1831,1,0 -BRDA:6,1831,2,0 -BRDA:6,1832,0,0 -BRDA:6,1832,1,0 -BRDA:6,1833,0,0 -BRDA:6,1833,1,0 -BRDA:6,1834,0,0 -BRDA:6,1834,1,0 -BRDA:6,1835,0,0 -BRDA:6,1835,1,0 -BRDA:6,1836,0,0 -BRDA:6,1836,1,0 -BRDA:6,1837,0,0 -BRDA:6,1837,1,0 -BRDA:6,1838,0,0 -BRDA:6,1838,1,0 -BRDA:6,1839,0,0 -BRDA:6,1839,1,0 -BRDA:6,1840,0,0 -BRDA:6,1840,1,0 -BRDA:6,1841,0,0 -BRDA:6,1841,1,0 -BRDA:6,1842,0,0 -BRDA:6,1842,1,0 -BRDA:6,1843,0,0 -BRDA:6,1843,1,0 -BRDA:6,1844,0,0 -BRDA:6,1844,1,0 -BRDA:6,1845,0,0 -BRDA:6,1845,1,0 -BRDA:6,1846,0,0 -BRDA:6,1846,1,0 -BRDA:6,1847,0,0 -BRDA:6,1847,1,0 -BRDA:6,1848,0,0 -BRDA:6,1848,1,0 -BRDA:6,1849,0,0 -BRDA:6,1849,1,0 -BRDA:6,1850,0,0 -BRDA:6,1850,1,0 -BRDA:6,1851,0,0 -BRDA:6,1851,1,0 -BRDA:6,1852,0,0 -BRDA:6,1852,1,0 -BRDA:6,1853,0,0 -BRDA:6,1853,1,0 -BRDA:6,1854,0,0 -BRDA:6,1854,1,0 -BRDA:6,1855,0,0 -BRDA:6,1855,1,0 -BRDA:6,1856,0,0 -BRDA:6,1856,1,0 -BRDA:6,1857,0,0 -BRDA:6,1857,1,0 -BRDA:6,1857,2,0 -BRDA:6,1858,0,0 -BRDA:6,1858,1,0 -BRDA:6,1859,0,0 -BRDA:6,1859,1,0 -BRDA:6,1860,0,0 -BRDA:6,1860,1,0 -BRDA:6,1861,0,0 -BRDA:6,1861,1,0 -BRDA:6,1862,0,0 -BRDA:6,1862,1,0 -BRDA:6,1862,2,0 -BRDA:6,1863,0,0 -BRDA:6,1863,1,0 -BRDA:6,1864,0,0 -BRDA:6,1864,1,0 -BRDA:6,1865,0,0 -BRDA:6,1865,1,0 -BRDA:6,1865,2,0 -BRDA:6,1866,0,0 -BRDA:6,1866,1,0 -BRDA:6,1866,2,0 -BRDA:6,1867,0,0 -BRDA:6,1867,1,0 -BRDA:6,1868,0,0 -BRDA:6,1868,1,0 -BRDA:6,1869,0,0 -BRDA:6,1869,1,0 -BRDA:6,1870,0,0 -BRDA:6,1870,1,0 -BRDA:6,1871,0,0 -BRDA:6,1871,1,0 -BRDA:6,1872,0,0 -BRDA:6,1872,1,0 -BRDA:6,1873,0,0 -BRDA:6,1873,1,0 -BRDA:6,1874,0,0 -BRDA:6,1874,1,0 -BRDA:6,1875,0,0 -BRDA:6,1875,1,0 -BRDA:6,1876,0,0 -BRDA:6,1876,1,0 -BRDA:6,1877,0,0 -BRDA:6,1877,1,0 -BRDA:6,1878,0,0 -BRDA:6,1878,1,0 -BRDA:6,1879,0,0 -BRDA:6,1879,1,0 -BRDA:6,1880,0,0 -BRDA:6,1880,1,0 -BRDA:6,1881,0,0 -BRDA:6,1881,1,0 -BRDA:6,1882,0,0 -BRDA:6,1882,1,0 -BRDA:6,1882,2,0 -BRDA:6,1883,0,0 -BRDA:6,1883,1,0 -BRDA:6,1884,0,0 -BRDA:6,1884,1,0 -BRDA:6,1885,0,0 -BRDA:6,1885,1,0 -BRDA:6,1885,2,0 -BRDA:6,1885,3,0 -BRDA:6,1885,4,0 -BRDA:6,1885,5,0 -BRDA:6,1885,6,0 -BRDA:6,1885,7,0 -BRDA:6,1885,8,0 -BRDA:6,1885,9,0 -BRDA:6,1885,10,0 -BRDA:6,1886,0,0 -BRDA:6,1886,1,0 -BRDA:6,1887,0,0 -BRDA:6,1887,1,0 -BRDA:6,1888,0,0 -BRDA:6,1888,1,0 -BRDA:6,1889,0,0 -BRDA:6,1889,1,0 -BRDA:6,1890,0,0 -BRDA:6,1890,1,0 -BRDA:6,1891,0,0 -BRDA:6,1891,1,0 -BRDA:6,1892,0,0 -BRDA:6,1892,1,0 -BRDA:6,1893,0,0 -BRDA:6,1893,1,0 -BRDA:6,1894,0,0 -BRDA:6,1894,1,0 -BRDA:6,1895,0,0 -BRDA:6,1895,1,0 -BRDA:6,1896,0,0 -BRDA:6,1896,1,0 -BRDA:6,1897,0,0 -BRDA:6,1897,1,0 -BRDA:6,1898,0,0 -BRDA:6,1898,1,0 -BRDA:6,1899,0,0 -BRDA:6,1899,1,0 -BRDA:6,1900,0,0 -BRDA:6,1900,1,0 -BRDA:6,1901,0,0 -BRDA:6,1901,1,0 -BRDA:6,1902,0,0 -BRDA:6,1902,1,0 -BRDA:6,1903,0,0 -BRDA:6,1903,1,0 -BRDA:6,1904,0,0 -BRDA:6,1904,1,0 -BRDA:6,1905,0,0 -BRDA:6,1905,1,0 -BRDA:6,1906,0,0 -BRDA:6,1906,1,0 -BRDA:6,1907,0,0 -BRDA:6,1907,1,0 -BRDA:6,1908,0,0 -BRDA:6,1908,1,0 -BRDA:6,1909,0,0 -BRDA:6,1909,1,0 -BRDA:6,1910,0,0 -BRDA:6,1910,1,0 -BRDA:6,1910,2,0 -BRDA:6,1910,3,0 -BRDA:6,1910,4,0 -BRDA:6,1911,0,0 -BRDA:6,1911,1,0 -BRDA:6,1911,2,0 -BRDA:6,1911,3,0 -BRDA:6,1912,0,0 -BRDA:6,1912,1,0 -BRDA:6,1913,0,0 -BRDA:6,1913,1,0 -BRDA:6,1914,0,0 -BRDA:6,1914,1,0 -BRDA:6,1915,0,0 -BRDA:6,1915,1,0 -BRDA:6,1916,0,0 -BRDA:6,1916,1,0 -BRDA:6,1917,0,0 -BRDA:6,1917,1,0 -BRDA:6,1918,0,0 -BRDA:6,1918,1,0 -BRDA:6,1919,0,0 -BRDA:6,1919,1,0 -BRDA:6,1920,0,0 -BRDA:6,1920,1,0 -BRDA:6,1921,0,0 -BRDA:6,1921,1,0 -BRDA:6,1922,0,0 -BRDA:6,1922,1,0 -BRDA:6,1923,0,0 -BRDA:6,1923,1,0 -BRDA:6,1923,2,0 -BRDA:6,1923,3,0 -BRDA:6,1924,0,0 -BRDA:6,1924,1,0 -BRDA:6,1925,0,0 -BRDA:6,1925,1,0 -BRDA:6,1926,0,0 -BRDA:6,1926,1,0 -BRDA:6,1927,0,0 -BRDA:6,1927,1,0 -BRDA:6,1928,0,0 -BRDA:6,1928,1,0 -BRDA:6,1929,0,0 -BRDA:6,1929,1,0 -BRDA:6,1930,0,0 -BRDA:6,1930,1,0 -BRDA:6,1930,2,0 -BRDA:6,1930,3,0 -BRDA:6,1930,4,0 -BRDA:6,1931,0,0 -BRDA:6,1931,1,0 -BRDA:6,1931,2,0 -BRDA:6,1931,3,0 -BRDA:6,1932,0,0 -BRDA:6,1932,1,0 -BRDA:6,1933,0,0 -BRDA:6,1933,1,0 -BRDA:6,1934,0,0 -BRDA:6,1934,1,0 -BRDA:6,1934,2,0 -BRDA:6,1934,3,0 -BRDA:6,1934,4,0 -BRDA:6,1934,5,0 -BRDA:6,1934,6,0 -BRDA:6,1934,7,0 -BRDA:6,1934,8,0 -BRDA:6,1934,9,0 -BRDA:6,1934,10,0 -BRDA:6,1934,11,0 -BRDA:6,1934,12,0 -BRDA:6,1934,13,0 -BRDA:6,1934,14,0 -BRDA:6,1934,15,0 -BRDA:6,1934,16,0 -BRDA:6,1934,17,0 -BRDA:6,1934,18,0 -BRDA:6,1935,0,0 -BRDA:6,1935,1,0 -BRDA:6,1936,0,0 -BRDA:6,1936,1,0 -BRDA:6,1937,0,0 -BRDA:6,1937,1,0 -BRDA:6,1938,0,0 -BRDA:6,1938,1,0 -BRDA:6,1938,2,0 -BRDA:6,1939,0,0 -BRDA:6,1939,1,0 -BRDA:6,1939,2,0 -BRDA:6,1940,0,0 -BRDA:6,1940,1,0 -BRDA:6,1941,0,0 -BRDA:6,1941,1,0 -BRDA:6,1941,2,0 -BRDA:6,1941,3,0 -BRDA:6,1941,4,0 -BRDA:6,1941,5,0 -BRDA:6,1942,0,0 -BRDA:6,1942,1,0 -BRDA:6,1943,0,0 -BRDA:6,1943,1,0 -BRDA:6,1944,0,0 -BRDA:6,1944,1,0 -BRDA:6,1945,0,0 -BRDA:6,1945,1,0 -BRDA:6,1946,0,0 -BRDA:6,1946,1,0 -BRDA:6,1947,0,0 -BRDA:6,1947,1,0 -BRDA:6,1948,0,0 -BRDA:6,1948,1,0 -BRDA:6,1949,0,0 -BRDA:6,1949,1,0 -BRDA:6,1949,2,0 -BRDA:6,1949,3,0 -BRDA:6,1949,4,0 -BRDA:6,1950,0,0 -BRDA:6,1950,1,0 -BRDA:6,1950,2,0 -BRDA:6,1950,3,0 -BRDA:6,1951,0,0 -BRDA:6,1951,1,0 -BRDA:6,1952,0,0 -BRDA:6,1952,1,0 -BRDA:6,1952,2,0 -BRDA:6,1952,3,0 -BRDA:6,1953,0,0 -BRDA:6,1953,1,0 -BRDA:6,1954,0,0 -BRDA:6,1954,1,0 -BRDA:6,1955,0,0 -BRDA:6,1955,1,0 -BRDA:6,1956,0,0 -BRDA:6,1956,1,0 -BRDA:6,1957,0,0 -BRDA:6,1957,1,0 -BRDA:6,1958,0,0 -BRDA:6,1958,1,0 -BRDA:6,1959,0,0 -BRDA:6,1959,1,0 -BRDA:6,1959,2,0 -BRDA:6,1960,0,0 -BRDA:6,1960,1,0 -BRDA:6,1961,0,0 -BRDA:6,1961,1,0 -BRDA:6,1962,0,0 -BRDA:6,1962,1,0 -BRDA:6,1962,2,0 -BRDA:6,1963,0,0 -BRDA:6,1963,1,0 -BRDA:6,1964,0,0 -BRDA:6,1964,1,0 -BRDA:6,1964,2,0 -BRDA:6,1964,3,0 -BRDA:6,1964,4,0 -BRDA:6,1964,5,0 -BRDA:6,1964,6,0 -BRDA:6,1964,7,0 -BRDA:6,1965,0,0 -BRDA:6,1965,1,0 -BRDA:6,1966,0,0 -BRDA:6,1966,1,0 -BRDA:6,1967,0,0 -BRDA:6,1967,1,0 -BRDA:6,1968,0,0 -BRDA:6,1968,1,0 -BRDA:6,1969,0,0 -BRDA:6,1969,1,0 -BRDA:6,1970,0,0 -BRDA:6,1970,1,0 -BRDA:6,1971,0,0 -BRDA:6,1971,1,0 -BRDA:6,1972,0,0 -BRDA:6,1972,1,0 -BRDA:6,1973,0,0 -BRDA:6,1973,1,0 -BRDA:6,1974,0,0 -BRDA:6,1974,1,0 -BRDA:6,1975,0,0 -BRDA:6,1975,1,0 -BRDA:6,1976,0,0 -BRDA:6,1976,1,0 -BRDA:6,1977,0,0 -BRDA:6,1977,1,0 -BRDA:6,1978,0,0 -BRDA:6,1978,1,0 -BRDA:6,1979,0,0 -BRDA:6,1979,1,0 -BRDA:6,1980,0,0 -BRDA:6,1980,1,0 -BRDA:6,1981,0,0 -BRDA:6,1981,1,0 -BRDA:6,1982,0,0 -BRDA:6,1982,1,0 -BRDA:6,1983,0,0 -BRDA:6,1983,1,0 -BRDA:6,1984,0,0 -BRDA:6,1984,1,0 -BRDA:6,1985,0,0 -BRDA:6,1985,1,0 -BRDA:6,1986,0,0 -BRDA:6,1986,1,0 -BRDA:6,1987,0,0 -BRDA:6,1987,1,0 -BRDA:6,1988,0,0 -BRDA:6,1988,1,0 -BRDA:6,1989,0,0 -BRDA:6,1989,1,0 -BRDA:6,1990,0,0 -BRDA:6,1990,1,0 -BRDA:6,1991,0,0 -BRDA:6,1991,1,0 -BRDA:6,1991,2,0 -BRDA:6,1992,0,0 -BRDA:6,1992,1,0 -BRDA:6,1993,0,0 -BRDA:6,1993,1,0 -BRDA:6,1994,0,0 -BRDA:6,1994,1,0 -BRDA:6,1995,0,0 -BRDA:6,1995,1,0 -BRDA:6,1996,0,0 -BRDA:6,1996,1,0 -BRDA:6,1997,0,0 -BRDA:6,1997,1,0 -BRDA:6,1998,0,0 -BRDA:6,1998,1,0 -BRDA:6,1999,0,0 -BRDA:6,1999,1,0 -BRDA:6,2000,0,0 -BRDA:6,2000,1,0 -BRDA:6,2001,0,0 -BRDA:6,2001,1,0 -BRDA:6,2002,0,0 -BRDA:6,2002,1,0 -BRDA:6,2003,0,0 -BRDA:6,2003,1,0 -BRDA:6,2004,0,0 -BRDA:6,2004,1,0 -BRDA:6,2005,0,0 -BRDA:6,2005,1,0 -BRDA:6,2006,0,0 -BRDA:6,2006,1,0 -BRDA:6,2007,0,0 -BRDA:6,2007,1,0 -BRDA:6,2008,0,0 -BRDA:6,2008,1,0 -BRDA:6,2009,0,0 -BRDA:6,2009,1,0 -BRDA:6,2010,0,0 -BRDA:6,2010,1,0 -BRDA:6,2011,0,0 -BRDA:6,2011,1,0 -BRDA:6,2012,0,0 -BRDA:6,2012,1,0 -BRDA:6,2013,0,0 -BRDA:6,2013,1,0 -BRDA:6,2014,0,0 -BRDA:6,2014,1,0 -BRDA:6,2015,0,0 -BRDA:6,2015,1,0 -BRDA:6,2016,0,0 -BRDA:6,2016,1,0 -BRDA:6,2017,0,0 -BRDA:6,2017,1,0 -BRDA:6,2017,2,0 -BRDA:6,2017,3,0 -BRDA:6,2018,0,0 -BRDA:6,2018,1,0 -BRDA:6,2019,0,0 -BRDA:6,2019,1,0 -BRDA:6,2020,0,0 -BRDA:6,2020,1,0 -BRDA:6,2021,0,0 -BRDA:6,2021,1,0 -BRDA:6,2022,0,0 -BRDA:6,2022,1,0 -BRDA:6,2023,0,0 -BRDA:6,2023,1,0 -BRDA:6,2024,0,0 -BRDA:6,2024,1,0 -BRDA:6,2025,0,0 -BRDA:6,2025,1,0 -BRDA:6,2026,0,0 -BRDA:6,2026,1,0 -BRDA:6,2027,0,0 -BRDA:6,2027,1,0 -BRDA:6,2028,0,0 -BRDA:6,2028,1,0 -BRDA:6,2029,0,0 -BRDA:6,2029,1,0 -BRDA:6,2030,0,0 -BRDA:6,2030,1,0 -BRDA:6,2031,0,0 -BRDA:6,2031,1,0 -BRDA:6,2032,0,0 -BRDA:6,2032,1,0 -BRDA:6,2033,0,0 -BRDA:6,2033,1,0 -BRDA:6,2034,0,0 -BRDA:6,2034,1,0 -BRDA:6,2035,0,0 -BRDA:6,2035,1,0 -BRDA:6,2036,0,0 -BRDA:6,2036,1,0 -BRDA:6,2037,0,0 -BRDA:6,2037,1,0 -BRDA:6,2038,0,0 -BRDA:6,2038,1,0 -BRDA:6,2039,0,0 -BRDA:6,2039,1,0 -BRDA:6,2040,0,0 -BRDA:6,2040,1,0 -BRDA:6,2041,0,0 -BRDA:6,2041,1,0 -BRDA:6,2042,0,0 -BRDA:6,2042,1,0 -BRDA:6,2043,0,0 -BRDA:6,2043,1,0 -BRDA:6,2044,0,0 -BRDA:6,2044,1,0 -BRDA:6,2045,0,0 -BRDA:6,2045,1,0 -BRDA:6,2046,0,0 -BRDA:6,2046,1,0 -BRDA:6,2047,0,0 -BRDA:6,2047,1,0 -BRDA:6,2048,0,0 -BRDA:6,2048,1,0 -BRDA:6,2049,0,0 -BRDA:6,2049,1,0 -BRDA:6,2050,0,0 -BRDA:6,2050,1,0 -BRDA:6,2051,0,0 -BRDA:6,2051,1,0 -BRDA:6,2052,0,0 -BRDA:6,2052,1,0 -BRDA:6,2052,2,0 -BRDA:6,2052,3,0 -BRDA:6,2053,0,0 -BRDA:6,2053,1,0 -BRDA:6,2054,0,0 -BRDA:6,2054,1,0 -BRDA:6,2054,2,0 -BRDA:6,2054,3,0 -BRDA:6,2055,0,0 -BRDA:6,2055,1,0 -BRDA:6,2056,0,0 -BRDA:6,2056,1,0 -BRDA:6,2056,2,0 -BRDA:6,2056,3,0 -BRDA:6,2057,0,0 -BRDA:6,2057,1,0 -BRDA:6,2058,0,0 -BRDA:6,2058,1,0 -BRDA:6,2059,0,0 -BRDA:6,2059,1,0 -BRDA:6,2060,0,0 -BRDA:6,2060,1,0 -BRDA:6,2061,0,0 -BRDA:6,2061,1,0 -BRDA:6,2062,0,0 -BRDA:6,2062,1,0 -BRDA:6,2063,0,0 -BRDA:6,2063,1,0 -BRDA:6,2064,0,0 -BRDA:6,2064,1,0 -BRDA:6,2064,2,0 -BRDA:6,2065,0,0 -BRDA:6,2065,1,0 -BRDA:6,2066,0,0 -BRDA:6,2066,1,0 -BRDA:6,2067,0,0 -BRDA:6,2067,1,0 -BRDA:6,2068,0,0 -BRDA:6,2068,1,0 -BRDA:6,2069,0,0 -BRDA:6,2069,1,0 -BRDA:6,2070,0,0 -BRDA:6,2070,1,0 -BRDA:6,2071,0,0 -BRDA:6,2071,1,0 -BRDA:6,2072,0,0 -BRDA:6,2072,1,0 -BRDA:6,2073,0,0 -BRDA:6,2073,1,0 -BRDA:6,2074,0,0 -BRDA:6,2074,1,0 -BRDA:6,2075,0,0 -BRDA:6,2075,1,0 -BRDA:6,2076,0,0 -BRDA:6,2076,1,0 -BRDA:6,2077,0,0 -BRDA:6,2077,1,0 -BRDA:6,2078,0,0 -BRDA:6,2078,1,0 -BRDA:6,2079,0,0 -BRDA:6,2079,1,0 -BRDA:6,2080,0,0 -BRDA:6,2080,1,0 -BRDA:6,2081,0,0 -BRDA:6,2081,1,0 -BRDA:6,2082,0,0 -BRDA:6,2082,1,0 -BRDA:6,2083,0,0 -BRDA:6,2083,1,0 -BRDA:6,2084,0,0 -BRDA:6,2084,1,0 -BRDA:6,2085,0,0 -BRDA:6,2085,1,0 -BRDA:6,2086,0,0 -BRDA:6,2086,1,0 -BRDA:6,2087,0,0 -BRDA:6,2087,1,0 -BRDA:6,2088,0,0 -BRDA:6,2088,1,0 -BRDA:6,2089,0,0 -BRDA:6,2089,1,0 -BRDA:6,2090,0,0 -BRDA:6,2090,1,0 -BRDA:6,2091,0,0 -BRDA:6,2091,1,0 -BRDA:6,2092,0,0 -BRDA:6,2092,1,0 -BRDA:6,2093,0,0 -BRDA:6,2093,1,0 -BRDA:6,2094,0,0 -BRDA:6,2094,1,0 -BRDA:6,2095,0,0 -BRDA:6,2095,1,0 -BRDA:6,2096,0,0 -BRDA:6,2096,1,0 -BRDA:6,2097,0,0 -BRDA:6,2097,1,0 -BRDA:6,2098,0,0 -BRDA:6,2098,1,0 -BRDA:6,2099,0,0 -BRDA:6,2099,1,0 -BRDA:6,2100,0,0 -BRDA:6,2100,1,0 -BRDA:6,2101,0,0 -BRDA:6,2101,1,0 -BRDA:6,2102,0,0 -BRDA:6,2102,1,0 -BRDA:6,2103,0,0 -BRDA:6,2103,1,0 -BRDA:6,2104,0,0 -BRDA:6,2104,1,0 -BRDA:6,2105,0,0 -BRDA:6,2105,1,0 -BRDA:6,2106,0,0 -BRDA:6,2106,1,0 -BRDA:6,2107,0,0 -BRDA:6,2107,1,0 -BRDA:6,2108,0,0 -BRDA:6,2108,1,0 -BRDA:6,2109,0,0 -BRDA:6,2109,1,0 -BRDA:6,2110,0,0 -BRDA:6,2110,1,0 -BRDA:6,2111,0,0 -BRDA:6,2111,1,0 -BRDA:6,2112,0,0 -BRDA:6,2112,1,0 -BRDA:6,2113,0,0 -BRDA:6,2113,1,0 -BRDA:6,2114,0,0 -BRDA:6,2114,1,0 -BRDA:6,2115,0,0 -BRDA:6,2115,1,0 -BRDA:6,2116,0,0 -BRDA:6,2116,1,0 -BRDA:6,2117,0,0 -BRDA:6,2117,1,0 -BRDA:6,2117,2,0 -BRDA:6,2118,0,0 -BRDA:6,2118,1,0 -BRDA:6,2119,0,0 -BRDA:6,2119,1,0 -BRDA:6,2120,0,0 -BRDA:6,2120,1,0 -BRDA:6,2121,0,0 -BRDA:6,2121,1,0 -BRDA:6,2122,0,0 -BRDA:6,2122,1,0 -BRDA:6,2123,0,0 -BRDA:6,2123,1,0 -BRDA:6,2124,0,0 -BRDA:6,2124,1,0 -BRDA:6,2125,0,0 -BRDA:6,2125,1,0 -BRDA:6,2126,0,0 -BRDA:6,2126,1,0 -BRDA:6,2127,0,0 -BRDA:6,2127,1,0 -BRDA:6,2128,0,0 -BRDA:6,2128,1,0 -BRDA:6,2129,0,0 -BRDA:6,2129,1,0 -BRDA:6,2130,0,0 -BRDA:6,2130,1,0 -BRDA:6,2131,0,0 -BRDA:6,2131,1,0 -BRDA:6,2132,0,0 -BRDA:6,2132,1,0 -BRDA:6,2133,0,0 -BRDA:6,2133,1,0 -BRDA:6,2134,0,0 -BRDA:6,2134,1,0 -BRDA:6,2135,0,0 -BRDA:6,2135,1,0 -BRDA:6,2136,0,0 -BRDA:6,2136,1,0 -BRDA:6,2137,0,0 -BRDA:6,2137,1,0 -BRDA:6,2138,0,0 -BRDA:6,2138,1,0 -BRDA:6,2139,0,0 -BRDA:6,2139,1,0 -BRDA:6,2140,0,0 -BRDA:6,2140,1,0 -BRDA:6,2141,0,0 -BRDA:6,2141,1,0 -BRDA:6,2142,0,0 -BRDA:6,2142,1,0 -BRDA:6,2143,0,0 -BRDA:6,2143,1,0 -BRDA:7,2144,0,0 -BRDA:7,2144,1,0 -BRDA:7,2145,0,0 -BRDA:7,2145,1,0 -BRDA:7,2146,0,0 -BRDA:7,2146,1,0 -BRDA:7,2147,0,0 -BRDA:7,2147,1,0 -BRDA:7,2148,0,0 -BRDA:7,2148,1,0 -BRDA:7,2149,0,0 -BRDA:7,2149,1,0 -BRDA:7,2150,0,0 -BRDA:7,2150,1,0 -BRDA:7,2150,2,0 -BRDA:7,2151,0,0 -BRDA:7,2151,1,0 -BRDA:7,2152,0,0 -BRDA:7,2152,1,0 -BRDA:7,2153,0,0 -BRDA:7,2153,1,0 -BRDA:7,2154,0,0 -BRDA:7,2154,1,0 -BRDA:7,2155,0,0 -BRDA:7,2155,1,0 -BRDA:7,2156,0,0 -BRDA:7,2156,1,0 -BRDA:7,2157,0,0 -BRDA:7,2157,1,0 -BRDA:7,2158,0,0 -BRDA:7,2158,1,0 -BRDA:7,2159,0,0 -BRDA:7,2159,1,0 -BRDA:7,2160,0,0 -BRDA:7,2160,1,0 -BRDA:7,2161,0,0 -BRDA:7,2161,1,0 -BRDA:7,2162,0,0 -BRDA:7,2162,1,0 -BRDA:7,2163,0,0 -BRDA:7,2163,1,0 -BRDA:7,2163,2,0 -BRDA:7,2163,3,0 -BRDA:7,2163,4,0 -BRDA:7,2164,0,0 -BRDA:7,2164,1,0 -BRDA:7,2165,0,0 -BRDA:7,2165,1,0 -BRDA:7,2166,0,0 -BRDA:7,2166,1,0 -BRDA:7,2167,0,0 -BRDA:7,2167,1,0 -BRDA:7,2168,0,0 -BRDA:7,2168,1,0 -BRDA:7,2169,0,0 -BRDA:7,2169,1,0 -BRDA:7,2170,0,0 -BRDA:7,2170,1,0 -BRDA:7,2171,0,0 -BRDA:7,2171,1,0 -BRDA:7,2172,0,0 -BRDA:7,2172,1,0 -BRDA:7,2173,0,0 -BRDA:7,2173,1,0 -BRDA:7,2174,0,0 -BRDA:7,2174,1,0 -BRDA:7,2175,0,0 -BRDA:7,2175,1,0 -BRDA:7,2176,0,0 -BRDA:7,2176,1,0 -BRDA:7,2177,0,0 -BRDA:7,2177,1,0 -BRDA:7,2178,0,0 -BRDA:7,2178,1,0 -BRDA:7,2179,0,0 -BRDA:7,2179,1,0 -BRDA:7,2180,0,0 -BRDA:7,2180,1,0 -BRDA:7,2180,2,0 -BRDA:7,2181,0,0 -BRDA:7,2181,1,0 -BRDA:7,2182,0,0 -BRDA:7,2182,1,0 -BRDA:7,2183,0,0 -BRDA:7,2183,1,0 -BRDA:7,2184,0,0 -BRDA:7,2184,1,0 -BRDA:7,2185,0,0 -BRDA:7,2185,1,0 -BRDA:7,2186,0,0 -BRDA:7,2186,1,0 -BRDA:7,2186,2,0 -BRDA:7,2186,3,0 -BRDA:7,2187,0,0 -BRDA:7,2187,1,0 -BRDA:7,2188,0,0 -BRDA:7,2188,1,0 -BRDA:7,2189,0,0 -BRDA:7,2189,1,0 -BRDA:7,2190,0,0 -BRDA:7,2190,1,0 -BRDA:7,2191,0,0 -BRDA:7,2191,1,0 -BRDA:7,2192,0,0 -BRDA:7,2192,1,0 -BRDA:7,2193,0,0 -BRDA:7,2193,1,0 -BRDA:7,2194,0,0 -BRDA:7,2194,1,0 -BRDA:7,2195,0,0 -BRDA:7,2195,1,0 -BRDA:7,2196,0,0 -BRDA:7,2196,1,0 -BRDA:7,2197,0,0 -BRDA:7,2197,1,0 -BRDA:7,2198,0,0 -BRDA:7,2198,1,0 -BRDA:7,2199,0,0 -BRDA:7,2199,1,0 -BRDA:7,2200,0,0 -BRDA:7,2200,1,0 -BRDA:7,2201,0,0 -BRDA:7,2201,1,0 -BRDA:7,2201,2,0 -BRDA:7,2202,0,0 -BRDA:7,2202,1,0 -BRDA:7,2202,2,0 -BRDA:7,2203,0,0 -BRDA:7,2203,1,0 -BRDA:7,2204,0,0 -BRDA:7,2204,1,0 -BRDA:7,2204,2,0 -BRDA:7,2204,3,0 -BRDA:7,2205,0,0 -BRDA:7,2205,1,0 -BRDA:7,2205,2,0 -BRDA:7,2206,0,0 -BRDA:7,2206,1,0 -BRDA:7,2207,0,0 -BRDA:7,2207,1,0 -BRDA:7,2208,0,0 -BRDA:7,2208,1,0 -BRDA:7,2208,2,0 -BRDA:7,2208,3,0 -BRDA:7,2208,4,0 -BRDA:7,2208,5,0 -BRDA:7,2208,6,0 -BRDA:7,2209,0,0 -BRDA:7,2209,1,0 -BRDA:7,2210,0,0 -BRDA:7,2210,1,0 -BRDA:7,2211,0,0 -BRDA:7,2211,1,0 -BRDA:7,2212,0,0 -BRDA:7,2212,1,0 -BRDA:7,2213,0,0 -BRDA:7,2213,1,0 -BRDA:7,2214,0,0 -BRDA:7,2214,1,0 -BRDA:7,2215,0,0 -BRDA:7,2215,1,0 -BRDA:7,2216,0,0 -BRDA:7,2216,1,0 -BRDA:7,2217,0,0 -BRDA:7,2217,1,0 -BRDA:7,2217,2,0 -BRDA:7,2217,3,0 -BRDA:7,2217,4,0 -BRDA:7,2218,0,0 -BRDA:7,2218,1,0 -BRDA:7,2219,0,0 -BRDA:7,2219,1,0 -BRDA:7,2220,0,0 -BRDA:7,2220,1,0 -BRDA:7,2220,2,0 -BRDA:7,2220,3,0 -BRDA:7,2221,0,0 -BRDA:7,2221,1,0 -BRDA:7,2222,0,0 -BRDA:7,2222,1,0 -BRDA:7,2222,2,0 -BRDA:7,2222,3,0 -BRDA:7,2223,0,0 -BRDA:7,2223,1,0 -BRDA:7,2223,2,0 -BRDA:7,2224,0,0 -BRDA:7,2224,1,0 -BRDA:7,2225,0,0 -BRDA:7,2225,1,0 -BRDA:7,2226,0,0 -BRDA:7,2226,1,0 -BRDA:7,2227,0,0 -BRDA:7,2227,1,0 -BRDA:7,2228,0,0 -BRDA:7,2228,1,0 -BRDA:7,2229,0,0 -BRDA:7,2229,1,0 -BRDA:7,2229,2,0 -BRDA:7,2230,0,0 -BRDA:7,2230,1,0 -BRDA:7,2231,0,0 -BRDA:7,2231,1,0 -BRDA:7,2232,0,0 -BRDA:7,2232,1,0 -BRDA:7,2233,0,0 -BRDA:7,2233,1,0 -BRDA:7,2234,0,0 -BRDA:7,2234,1,0 -BRDA:7,2234,2,0 -BRDA:7,2235,0,0 -BRDA:7,2235,1,0 -BRDA:7,2235,2,0 -BRDA:7,2236,0,0 -BRDA:7,2236,1,0 -BRDA:7,2236,2,0 -BRDA:7,2236,3,0 -BRDA:7,2237,0,0 -BRDA:7,2237,1,0 -BRDA:7,2237,2,0 -BRDA:7,2238,0,0 -BRDA:7,2238,1,0 -BRDA:7,2239,0,0 -BRDA:7,2239,1,0 -BRDA:7,2240,0,0 -BRDA:7,2240,1,0 -BRDA:7,2241,0,0 -BRDA:7,2241,1,0 -BRDA:7,2242,0,0 -BRDA:7,2242,1,0 -BRDA:7,2243,0,0 -BRDA:7,2243,1,0 -BRDA:7,2244,0,0 -BRDA:7,2244,1,0 -BRDA:7,2245,0,0 -BRDA:7,2245,1,0 -BRDA:7,2246,0,0 -BRDA:7,2246,1,0 -BRDA:7,2247,0,0 -BRDA:7,2247,1,0 -BRDA:7,2248,0,0 -BRDA:7,2248,1,0 -BRDA:7,2249,0,0 -BRDA:7,2249,1,0 -BRDA:7,2250,0,0 -BRDA:7,2250,1,0 -BRDA:7,2251,0,0 -BRDA:7,2251,1,0 -BRDA:7,2252,0,0 -BRDA:7,2252,1,0 -BRDA:7,2253,0,0 -BRDA:7,2253,1,0 -BRDA:7,2254,0,0 -BRDA:7,2254,1,0 -BRDA:7,2255,0,0 -BRDA:7,2255,1,0 -BRDA:7,2256,0,0 -BRDA:7,2256,1,0 -BRDA:7,2257,0,0 -BRDA:7,2257,1,0 -BRDA:7,2258,0,0 -BRDA:7,2258,1,0 -BRDA:7,2259,0,0 -BRDA:7,2259,1,0 -BRDA:7,2260,0,0 -BRDA:7,2260,1,0 -BRDA:7,2261,0,0 -BRDA:7,2261,1,0 -BRDA:7,2262,0,0 -BRDA:7,2262,1,0 -BRDA:7,2263,0,0 -BRDA:7,2263,1,0 -BRDA:7,2264,0,0 -BRDA:7,2264,1,0 -BRDA:7,2265,0,0 -BRDA:7,2265,1,0 -BRDA:7,2266,0,0 -BRDA:7,2266,1,0 -BRDA:7,2267,0,0 -BRDA:7,2267,1,0 -BRDA:7,2268,0,0 -BRDA:7,2268,1,0 -BRDA:7,2269,0,0 -BRDA:7,2269,1,0 -BRDA:7,2270,0,0 -BRDA:7,2270,1,0 -BRDA:7,2271,0,0 -BRDA:7,2271,1,0 -BRDA:7,2272,0,0 -BRDA:7,2272,1,0 -BRDA:7,2273,0,0 -BRDA:7,2273,1,0 -BRDA:7,2274,0,0 -BRDA:7,2274,1,0 -BRDA:7,2275,0,0 -BRDA:7,2275,1,0 -BRDA:7,2276,0,0 -BRDA:7,2276,1,0 -BRDA:7,2277,0,0 -BRDA:7,2277,1,0 -BRDA:7,2278,0,0 -BRDA:7,2278,1,0 -BRDA:7,2279,0,0 -BRDA:7,2279,1,0 -BRDA:7,2280,0,0 -BRDA:7,2280,1,0 -BRDA:7,2281,0,0 -BRDA:7,2281,1,0 -BRDA:7,2282,0,0 -BRDA:7,2282,1,0 -BRDA:7,2283,0,0 -BRDA:7,2283,1,0 -BRDA:7,2284,0,0 -BRDA:7,2284,1,0 -BRDA:7,2285,0,0 -BRDA:7,2285,1,0 -BRDA:7,2286,0,0 -BRDA:7,2286,1,0 -BRDA:7,2287,0,0 -BRDA:7,2287,1,0 -BRDA:7,2288,0,0 -BRDA:7,2288,1,0 -BRDA:7,2289,0,0 -BRDA:7,2289,1,0 -BRDA:7,2290,0,0 -BRDA:7,2290,1,0 -BRDA:7,2290,2,0 -BRDA:7,2291,0,0 -BRDA:7,2291,1,0 -BRDA:7,2292,0,0 -BRDA:7,2292,1,0 -BRDA:7,2293,0,0 -BRDA:7,2293,1,0 -BRDA:7,2294,0,0 -BRDA:7,2294,1,0 -BRDA:7,2295,0,0 -BRDA:7,2295,1,0 -BRDA:7,2296,0,0 -BRDA:7,2296,1,0 -BRDA:7,2297,0,0 -BRDA:7,2297,1,0 -BRDA:7,2298,0,0 -BRDA:7,2298,1,0 -BRDA:7,2299,0,0 -BRDA:7,2299,1,0 -BRDA:7,2300,0,0 -BRDA:7,2300,1,0 -BRDA:7,2301,0,0 -BRDA:7,2301,1,0 -BRDA:7,2302,0,0 -BRDA:7,2302,1,0 -BRDA:7,2303,0,0 -BRDA:7,2303,1,0 -BRDA:7,2304,0,0 -BRDA:7,2304,1,0 -BRDA:7,2305,0,0 -BRDA:7,2305,1,0 -BRDA:7,2306,0,0 -BRDA:7,2306,1,0 -BRDA:7,2307,0,0 -BRDA:7,2307,1,0 -BRDA:7,2308,0,0 -BRDA:7,2308,1,0 -BRDA:7,2309,0,0 -BRDA:7,2309,1,0 -BRDA:7,2310,0,0 -BRDA:7,2310,1,0 -BRDA:7,2311,0,0 -BRDA:7,2311,1,0 -BRDA:7,2311,2,0 -BRDA:7,2311,3,0 -BRDA:7,2312,0,0 -BRDA:7,2312,1,0 -BRDA:7,2313,0,0 -BRDA:7,2313,1,0 -BRDA:7,2314,0,0 -BRDA:7,2314,1,0 -BRDA:7,2315,0,0 -BRDA:7,2315,1,0 -BRDA:7,2316,0,0 -BRDA:7,2316,1,0 -BRDA:7,2317,0,0 -BRDA:7,2317,1,0 -BRDA:7,2318,0,0 -BRDA:7,2318,1,0 -BRDA:7,2319,0,0 -BRDA:7,2319,1,0 -BRDA:7,2319,2,0 -BRDA:7,2320,0,0 -BRDA:7,2320,1,0 -BRDA:7,2321,0,0 -BRDA:7,2321,1,0 -BRDA:7,2322,0,0 -BRDA:7,2322,1,0 -BRDA:7,2323,0,0 -BRDA:7,2323,1,0 -BRDA:7,2324,0,0 -BRDA:7,2324,1,0 -BRDA:7,2325,0,0 -BRDA:7,2325,1,0 -BRDA:7,2326,0,0 -BRDA:7,2326,1,0 -BRDA:7,2327,0,0 -BRDA:7,2327,1,0 -BRDA:7,2328,0,0 -BRDA:7,2328,1,0 -BRDA:7,2329,0,0 -BRDA:7,2329,1,0 -BRDA:7,2330,0,0 -BRDA:7,2330,1,0 -BRDA:7,2331,0,0 -BRDA:7,2331,1,0 -BRDA:7,2332,0,0 -BRDA:7,2332,1,0 -BRDA:7,2333,0,0 -BRDA:7,2333,1,0 -BRDA:7,2334,0,0 -BRDA:7,2334,1,0 -BRDA:7,2335,0,0 -BRDA:7,2335,1,0 -BRDA:7,2336,0,0 -BRDA:7,2336,1,0 -BRDA:7,2337,0,0 -BRDA:7,2337,1,0 -BRDA:7,2338,0,0 -BRDA:7,2338,1,0 -BRDA:7,2339,0,0 -BRDA:7,2339,1,0 -BRDA:7,2340,0,0 -BRDA:7,2340,1,0 -BRDA:7,2341,0,0 -BRDA:7,2341,1,0 -BRDA:7,2342,0,0 -BRDA:7,2342,1,0 -BRDA:7,2343,0,0 -BRDA:7,2343,1,0 -BRDA:7,2343,2,0 -BRDA:7,2343,3,0 -BRDA:7,2344,0,0 -BRDA:7,2344,1,0 -BRDA:7,2345,0,0 -BRDA:7,2345,1,0 -BRDA:7,2346,0,0 -BRDA:7,2346,1,0 -BRDA:7,2347,0,0 -BRDA:7,2347,1,0 -BRDA:7,2347,2,0 -BRDA:7,2347,3,0 -BRDA:7,2347,4,0 -BRDA:7,2348,0,0 -BRDA:7,2348,1,0 -BRDA:7,2349,0,0 -BRDA:7,2349,1,0 -BRDA:7,2350,0,0 -BRDA:7,2350,1,0 -BRDA:7,2350,2,0 -BRDA:7,2351,0,0 -BRDA:7,2351,1,0 -BRDA:7,2352,0,0 -BRDA:7,2352,1,0 -BRDA:7,2353,0,0 -BRDA:7,2353,1,0 -BRDA:7,2354,0,0 -BRDA:7,2354,1,0 -BRDA:7,2355,0,0 -BRDA:7,2355,1,0 -BRDA:7,2356,0,0 -BRDA:7,2356,1,0 -BRDA:7,2357,0,0 -BRDA:7,2357,1,0 -BRDA:7,2358,0,0 -BRDA:7,2358,1,0 -BRDA:7,2359,0,0 -BRDA:7,2359,1,0 -BRDA:7,2360,0,0 -BRDA:7,2360,1,0 -BRDA:7,2361,0,0 -BRDA:7,2361,1,0 -BRDA:7,2362,0,0 -BRDA:7,2362,1,0 -BRDA:7,2363,0,0 -BRDA:7,2363,1,0 -BRDA:7,2364,0,0 -BRDA:7,2364,1,0 -BRDA:7,2365,0,0 -BRDA:7,2365,1,0 -BRDA:7,2366,0,0 -BRDA:7,2366,1,0 -BRDA:7,2367,0,0 -BRDA:7,2367,1,0 -BRDA:7,2368,0,0 -BRDA:7,2368,1,0 -BRDA:7,2368,2,0 -BRDA:7,2369,0,0 -BRDA:7,2369,1,0 -BRDA:7,2370,0,0 -BRDA:7,2370,1,0 -BRDA:7,2371,0,0 -BRDA:7,2371,1,0 -BRDA:7,2372,0,0 -BRDA:7,2372,1,0 -BRDA:7,2372,2,0 -BRDA:7,2373,0,0 -BRDA:7,2373,1,0 -BRDA:7,2374,0,0 -BRDA:7,2374,1,0 -BRDA:7,2375,0,0 -BRDA:7,2375,1,0 -BRDA:7,2376,0,0 -BRDA:7,2376,1,0 -BRDA:7,2376,2,0 -BRDA:7,2377,0,0 -BRDA:7,2377,1,0 -BRDA:7,2378,0,0 -BRDA:7,2378,1,0 -BRDA:7,2379,0,0 -BRDA:7,2379,1,0 -BRDA:7,2380,0,0 -BRDA:7,2380,1,0 -BRDA:7,2381,0,0 -BRDA:7,2381,1,0 -BRDA:7,2382,0,0 -BRDA:7,2382,1,0 -BRDA:7,2383,0,0 -BRDA:7,2383,1,0 -BRDA:7,2384,0,0 -BRDA:7,2384,1,0 -BRDA:7,2385,0,0 -BRDA:7,2385,1,0 -BRDA:7,2386,0,0 -BRDA:7,2386,1,0 -BRDA:7,2387,0,0 -BRDA:7,2387,1,0 -BRDA:7,2388,0,0 -BRDA:7,2388,1,0 -BRDA:7,2389,0,0 -BRDA:7,2389,1,0 -BRDA:7,2390,0,0 -BRDA:7,2390,1,0 -BRDA:7,2391,0,0 -BRDA:7,2391,1,0 -BRDA:7,2392,0,0 -BRDA:7,2392,1,0 -BRDA:7,2393,0,0 -BRDA:7,2393,1,0 -BRDA:7,2394,0,0 -BRDA:7,2394,1,0 -BRDA:7,2395,0,0 -BRDA:7,2395,1,0 -BRDA:7,2396,0,0 -BRDA:7,2396,1,0 -BRDA:7,2397,0,0 -BRDA:7,2397,1,0 -BRDA:7,2398,0,0 -BRDA:7,2398,1,0 -BRDA:7,2399,0,0 -BRDA:7,2399,1,0 -BRDA:7,2400,0,0 -BRDA:7,2400,1,0 -BRDA:7,2401,0,0 -BRDA:7,2401,1,0 -BRDA:7,2402,0,0 -BRDA:7,2402,1,0 -BRDA:7,2403,0,0 -BRDA:7,2403,1,0 -BRDA:7,2404,0,0 -BRDA:7,2404,1,0 -BRDA:7,2405,0,0 -BRDA:7,2405,1,0 -BRDA:7,2406,0,0 -BRDA:7,2406,1,0 -BRDA:7,2407,0,0 -BRDA:7,2407,1,0 -BRDA:7,2408,0,0 -BRDA:7,2408,1,0 -BRDA:7,2408,2,0 -BRDA:7,2408,3,0 -BRDA:7,2408,4,0 -BRDA:7,2409,0,0 -BRDA:7,2409,1,0 -BRDA:7,2409,2,0 -BRDA:7,2410,0,0 -BRDA:7,2410,1,0 -BRDA:7,2411,0,0 -BRDA:7,2411,1,0 -BRDA:7,2412,0,0 -BRDA:7,2412,1,0 -BRDA:7,2413,0,0 -BRDA:7,2413,1,0 -BRDA:7,2414,0,0 -BRDA:7,2414,1,0 -BRDA:7,2415,0,0 -BRDA:7,2415,1,0 -BRDA:7,2416,0,0 -BRDA:7,2416,1,0 -BRDA:7,2417,0,0 -BRDA:7,2417,1,0 -BRDA:7,2418,0,0 -BRDA:7,2418,1,0 -BRDA:7,2419,0,0 -BRDA:7,2419,1,0 -BRDA:7,2420,0,0 -BRDA:7,2420,1,0 -BRDA:7,2421,0,0 -BRDA:7,2421,1,0 -BRDA:7,2422,0,0 -BRDA:7,2422,1,0 -BRDA:7,2423,0,0 -BRDA:7,2423,1,0 -BRDA:7,2424,0,0 -BRDA:7,2424,1,0 -BRDA:7,2425,0,0 -BRDA:7,2425,1,0 -BRDA:7,2426,0,0 -BRDA:7,2426,1,0 -BRDA:7,2427,0,0 -BRDA:7,2427,1,0 -BRDA:7,2428,0,0 -BRDA:7,2428,1,0 -BRDA:7,2429,0,0 -BRDA:7,2429,1,0 -BRDA:7,2430,0,0 -BRDA:7,2430,1,0 -BRDA:7,2431,0,0 -BRDA:7,2431,1,0 -BRDA:7,2432,0,0 -BRDA:7,2432,1,0 -BRDA:7,2433,0,0 -BRDA:7,2433,1,0 -BRDA:7,2433,2,0 -BRDA:7,2433,3,0 -BRDA:7,2434,0,0 -BRDA:7,2434,1,0 -BRDA:7,2435,0,0 -BRDA:7,2435,1,0 -BRDA:7,2436,0,0 -BRDA:7,2436,1,0 -BRDA:7,2437,0,0 -BRDA:7,2437,1,0 -BRDA:7,2438,0,0 -BRDA:7,2438,1,0 -BRDA:7,2439,0,0 -BRDA:7,2439,1,0 -BRDA:7,2440,0,0 -BRDA:7,2440,1,0 -BRDA:7,2441,0,0 -BRDA:7,2441,1,0 -BRDA:7,2441,2,0 -BRDA:7,2442,0,0 -BRDA:7,2442,1,0 -BRDA:7,2443,0,0 -BRDA:7,2443,1,0 -BRDA:7,2444,0,0 -BRDA:7,2444,1,0 -BRDA:7,2445,0,0 -BRDA:7,2445,1,0 -BRDA:7,2446,0,0 -BRDA:7,2446,1,0 -BRDA:7,2447,0,0 -BRDA:7,2447,1,0 -BRDA:7,2448,0,0 -BRDA:7,2448,1,0 -BRDA:7,2449,0,0 -BRDA:7,2449,1,0 -BRDA:7,2450,0,0 -BRDA:7,2450,1,0 -BRDA:7,2451,0,0 -BRDA:7,2451,1,0 -BRDA:7,2452,0,0 -BRDA:7,2452,1,0 -BRDA:7,2453,0,0 -BRDA:7,2453,1,0 -BRDA:7,2454,0,0 -BRDA:7,2454,1,0 -BRDA:7,2455,0,0 -BRDA:7,2455,1,0 -BRDA:7,2456,0,0 -BRDA:7,2456,1,0 -BRDA:7,2457,0,0 -BRDA:7,2457,1,0 -BRDA:7,2458,0,0 -BRDA:7,2458,1,0 -BRDA:7,2459,0,0 -BRDA:7,2459,1,0 -BRDA:7,2459,2,0 -BRDA:7,2459,3,0 -BRDA:7,2459,4,0 -BRDA:7,2459,5,0 -BRDA:7,2459,6,0 -BRDA:7,2459,7,0 -BRDA:7,2459,8,0 -BRDA:7,2459,9,0 -BRDA:7,2459,10,0 -BRDA:7,2460,0,0 -BRDA:7,2460,1,0 -BRDA:7,2461,0,0 -BRDA:7,2461,1,0 -BRDA:7,2462,0,0 -BRDA:7,2462,1,0 -BRDA:7,2463,0,0 -BRDA:7,2463,1,0 -BRDA:7,2463,2,0 -BRDA:7,2463,3,0 -BRDA:7,2463,4,0 -BRDA:7,2464,0,0 -BRDA:7,2464,1,0 -BRDA:7,2465,0,0 -BRDA:7,2465,1,0 -BRDA:7,2466,0,0 -BRDA:7,2466,1,0 -BRDA:7,2467,0,0 -BRDA:7,2467,1,0 -BRDA:7,2468,0,0 -BRDA:7,2468,1,0 -BRDA:7,2469,0,0 -BRDA:7,2469,1,0 -BRDA:7,2470,0,0 -BRDA:7,2470,1,0 -BRDA:7,2471,0,0 -BRDA:7,2471,1,0 -BRDA:7,2472,0,0 -BRDA:7,2472,1,0 -BRDA:7,2473,0,0 -BRDA:7,2473,1,0 -BRDA:7,2474,0,0 -BRDA:7,2474,1,0 -BRDA:7,2475,0,0 -BRDA:7,2475,1,0 -BRDA:7,2476,0,0 -BRDA:7,2476,1,0 -BRDA:7,2477,0,0 -BRDA:7,2477,1,0 -BRDA:7,2478,0,0 -BRDA:7,2478,1,0 -BRDA:7,2479,0,0 -BRDA:7,2479,1,0 -BRDA:7,2480,0,0 -BRDA:7,2480,1,0 -BRDA:7,2481,0,0 -BRDA:7,2481,1,0 -BRDA:7,2482,0,0 -BRDA:7,2482,1,0 -BRDA:7,2483,0,0 -BRDA:7,2483,1,0 -BRDA:7,2484,0,0 -BRDA:7,2484,1,0 -BRDA:7,2485,0,0 -BRDA:7,2485,1,0 -BRDA:7,2486,0,0 -BRDA:7,2486,1,0 -BRDA:7,2487,0,0 -BRDA:7,2487,1,0 -BRDA:7,2488,0,0 -BRDA:7,2488,1,0 -BRDA:7,2489,0,0 -BRDA:7,2489,1,0 -BRDA:7,2490,0,0 -BRDA:7,2490,1,0 -BRDA:7,2491,0,0 -BRDA:7,2491,1,0 -BRDA:7,2492,0,0 -BRDA:7,2492,1,0 -BRDA:7,2493,0,0 -BRDA:7,2493,1,0 -BRDA:7,2494,0,0 -BRDA:7,2494,1,0 -BRDA:7,2494,2,0 -BRDA:7,2495,0,0 -BRDA:7,2495,1,0 -BRDA:7,2496,0,0 -BRDA:7,2496,1,0 -BRDA:7,2497,0,0 -BRDA:7,2497,1,0 -BRDA:7,2497,2,0 -BRDA:7,2498,0,0 -BRDA:7,2498,1,0 -BRDA:7,2499,0,0 -BRDA:7,2499,1,0 -BRDA:7,2500,0,0 -BRDA:7,2500,1,0 -BRDA:7,2501,0,0 -BRDA:7,2501,1,0 -BRDA:7,2502,0,0 -BRDA:7,2502,1,0 -BRDA:7,2503,0,0 -BRDA:7,2503,1,0 -BRDA:7,2504,0,0 -BRDA:7,2504,1,0 -BRDA:7,2505,0,0 -BRDA:7,2505,1,0 -BRDA:7,2506,0,0 -BRDA:7,2506,1,0 -BRDA:7,2506,2,0 -BRDA:7,2507,0,0 -BRDA:7,2507,1,0 -BRDA:7,2508,0,0 -BRDA:7,2508,1,0 -BRDA:7,2509,0,0 -BRDA:7,2509,1,0 -BRDA:7,2510,0,0 -BRDA:7,2510,1,0 -BRDA:7,2511,0,0 -BRDA:7,2511,1,0 -BRDA:7,2512,0,0 -BRDA:7,2512,1,0 -BRDA:7,2513,0,0 -BRDA:7,2513,1,0 -BRDA:7,2514,0,0 -BRDA:7,2514,1,0 -BRDA:7,2514,2,0 -BRDA:7,2515,0,0 -BRDA:7,2515,1,0 -BRDA:7,2516,0,0 -BRDA:7,2516,1,0 -BRDA:7,2517,0,0 -BRDA:7,2517,1,0 -BRDA:7,2518,0,0 -BRDA:7,2518,1,0 -BRDA:7,2519,0,0 -BRDA:7,2519,1,0 -BRDA:7,2520,0,0 -BRDA:7,2520,1,0 -BRDA:7,2521,0,0 -BRDA:7,2521,1,0 -BRDA:7,2522,0,0 -BRDA:7,2522,1,0 -BRDA:7,2523,0,0 -BRDA:7,2523,1,0 -BRDA:7,2524,0,0 -BRDA:7,2524,1,0 -BRDA:7,2525,0,0 -BRDA:7,2525,1,0 -BRDA:7,2526,0,0 -BRDA:7,2526,1,0 -BRDA:7,2527,0,0 -BRDA:7,2527,1,0 -BRDA:7,2528,0,0 -BRDA:7,2528,1,0 -BRDA:7,2529,0,0 -BRDA:7,2529,1,0 -BRDA:7,2530,0,0 -BRDA:7,2530,1,0 -BRDA:7,2531,0,0 -BRDA:7,2531,1,0 -BRDA:7,2532,0,0 -BRDA:7,2532,1,0 -BRDA:7,2533,0,0 -BRDA:7,2533,1,0 -BRDA:7,2534,0,0 -BRDA:7,2534,1,0 -BRDA:7,2535,0,0 -BRDA:7,2535,1,0 -BRDA:7,2536,0,0 -BRDA:7,2536,1,0 -BRDA:7,2537,0,0 -BRDA:7,2537,1,0 -BRDA:7,2538,0,0 -BRDA:7,2538,1,0 -BRDA:7,2539,0,0 -BRDA:7,2539,1,0 -BRDA:7,2540,0,0 -BRDA:7,2540,1,0 -BRDA:7,2541,0,0 -BRDA:7,2541,1,0 -BRDA:7,2542,0,0 -BRDA:7,2542,1,0 -BRDA:7,2543,0,0 -BRDA:7,2543,1,0 -BRDA:7,2544,0,0 -BRDA:7,2544,1,0 -BRDA:7,2545,0,0 -BRDA:7,2545,1,0 -BRDA:7,2546,0,0 -BRDA:7,2546,1,0 -BRDA:7,2547,0,0 -BRDA:7,2547,1,0 -BRDA:7,2548,0,0 -BRDA:7,2548,1,0 -BRDA:7,2549,0,0 -BRDA:7,2549,1,0 -BRDA:7,2550,0,0 -BRDA:7,2550,1,0 -BRDA:7,2550,2,0 -BRDA:7,2551,0,0 -BRDA:7,2551,1,0 -BRDA:7,2552,0,0 -BRDA:7,2552,1,0 -BRDA:7,2553,0,0 -BRDA:7,2553,1,0 -BRDA:7,2554,0,0 -BRDA:7,2554,1,0 -BRDA:7,2555,0,0 -BRDA:7,2555,1,0 -BRDA:7,2556,0,0 -BRDA:7,2556,1,0 -BRDA:7,2557,0,0 -BRDA:7,2557,1,0 -BRDA:7,2558,0,0 -BRDA:7,2558,1,0 -BRDA:7,2559,0,0 -BRDA:7,2559,1,0 -BRDA:7,2560,0,0 -BRDA:7,2560,1,0 -BRDA:7,2561,0,0 -BRDA:7,2561,1,0 -BRDA:7,2562,0,0 -BRDA:7,2562,1,0 -BRDA:7,2563,0,0 -BRDA:7,2563,1,0 -BRDA:7,2563,2,0 -BRDA:7,2563,3,0 -BRDA:7,2563,4,0 -BRDA:7,2564,0,0 -BRDA:7,2564,1,0 -BRDA:7,2565,0,0 -BRDA:7,2565,1,0 -BRDA:7,2566,0,0 -BRDA:7,2566,1,0 -BRDA:7,2567,0,0 -BRDA:7,2567,1,0 -BRDA:7,2568,0,0 -BRDA:7,2568,1,0 -BRDA:7,2569,0,0 -BRDA:7,2569,1,0 -BRDA:7,2570,0,0 -BRDA:7,2570,1,0 -BRDA:7,2571,0,0 -BRDA:7,2571,1,0 -BRDA:7,2572,0,0 -BRDA:7,2572,1,0 -BRDA:7,2573,0,0 -BRDA:7,2573,1,0 -BRDA:7,2574,0,0 -BRDA:7,2574,1,0 -BRDA:7,2575,0,0 -BRDA:7,2575,1,0 -BRDA:7,2576,0,0 -BRDA:7,2576,1,0 -BRDA:7,2577,0,0 -BRDA:7,2577,1,0 -BRDA:7,2578,0,0 -BRDA:7,2578,1,0 -BRDA:7,2579,0,0 -BRDA:7,2579,1,0 -BRDA:7,2580,0,0 -BRDA:7,2580,1,0 -BRDA:7,2581,0,0 -BRDA:7,2581,1,0 -BRDA:7,2582,0,0 -BRDA:7,2582,1,0 -BRDA:7,2582,2,0 -BRDA:7,2583,0,0 -BRDA:7,2583,1,0 -BRDA:7,2584,0,0 -BRDA:7,2584,1,0 -BRDA:7,2585,0,0 -BRDA:7,2585,1,0 -BRDA:7,2586,0,0 -BRDA:7,2586,1,0 -BRDA:7,2587,0,0 -BRDA:7,2587,1,0 -BRDA:7,2588,0,0 -BRDA:7,2588,1,0 -BRDA:7,2588,2,0 -BRDA:7,2589,0,0 -BRDA:7,2589,1,0 -BRDA:7,2590,0,0 -BRDA:7,2590,1,0 -BRDA:7,2591,0,0 -BRDA:7,2591,1,0 -BRDA:7,2592,0,0 -BRDA:7,2592,1,0 -BRDA:7,2593,0,0 -BRDA:7,2593,1,0 -BRDA:7,2594,0,0 -BRDA:7,2594,1,0 -BRDA:7,2595,0,0 -BRDA:7,2595,1,0 -BRDA:7,2596,0,0 -BRDA:7,2596,1,0 -BRDA:7,2597,0,0 -BRDA:7,2597,1,0 -BRDA:7,2597,2,0 -BRDA:7,2597,3,0 -BRDA:7,2597,4,0 -BRF:5826 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/csv2json.js -FNF:0 -FNH:0 -DA:2,0 -DA:5,0 -DA:6,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/CSVError.js -FN:3,CSVError -FN:13,(anonymous_1) -FN:17,(anonymous_2) -FN:21,(anonymous_3) -FN:25,(anonymous_4) -FNF:5 -FNH:0 -FNDA:0,CSVError -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:17,0 -DA:18,0 -DA:21,0 -DA:22,0 -DA:25,0 -DA:26,0 -LF:17 -LH:0 -BRDA:8,0,0,0 -BRDA:8,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/Converter.js -FN:15,Converter -FN:49,(anonymous_1) -FN:79,emitDone -FN:80,(anonymous_3) -FN:83,(anonymous_4) -FN:91,bufFromString -FN:100,(anonymous_6) -FN:122,(anonymous_7) -FN:142,(anonymous_8) -FN:151,(anonymous_9) -FN:163,(anonymous_10) -FN:167,(anonymous_11) -FN:202,(anonymous_12) -FN:216,(anonymous_13) -FN:225,(anonymous_14) -FN:230,(anonymous_15) -FN:238,(anonymous_16) -FN:243,(anonymous_17) -FN:272,(anonymous_18) -FN:341,configIgnoreIncludeColumns -FN:354,(anonymous_20) -FN:373,(anonymous_21) -FN:384,(anonymous_22) -FN:436,(anonymous_23) -FN:441,(anonymous_24) -FN:445,(anonymous_25) -FN:447,(anonymous_26) -FN:462,(anonymous_27) -FN:471,(anonymous_28) -FN:479,(anonymous_29) -FN:487,(anonymous_30) -FN:508,(anonymous_31) -FN:515,(anonymous_32) -FN:520,(anonymous_33) -FN:531,(anonymous_34) -FN:539,(anonymous_35) -FN:544,(anonymous_36) -FN:551,(anonymous_37) -FN:556,(anonymous_38) -FN:569,(anonymous_39) -FN:571,(anonymous_40) -FN:574,(anonymous_41) -FN:580,(anonymous_42) -FNF:43 -FNH:0 -FNDA:0,Converter -FNDA:0,(anonymous_1) -FNDA:0,emitDone -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,bufFromString -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,configIgnoreIncludeColumns -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -FNDA:0,(anonymous_42) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:53,0 -DA:54,0 -DA:56,0 -DA:57,0 -DA:59,0 -DA:60,0 -DA:62,0 -DA:63,0 -DA:65,0 -DA:66,0 -DA:68,0 -DA:69,0 -DA:72,0 -DA:75,0 -DA:78,0 -DA:80,0 -DA:81,0 -DA:82,0 -DA:83,0 -DA:84,0 -DA:92,0 -DA:93,0 -DA:96,0 -DA:97,0 -DA:100,0 -DA:101,0 -DA:102,0 -DA:103,0 -DA:111,0 -DA:112,0 -DA:113,0 -DA:115,0 -DA:117,0 -DA:118,0 -DA:119,0 -DA:120,0 -DA:121,0 -DA:122,0 -DA:123,0 -DA:124,0 -DA:126,0 -DA:128,0 -DA:131,0 -DA:132,0 -DA:133,0 -DA:134,0 -DA:135,0 -DA:136,0 -DA:137,0 -DA:141,0 -DA:142,0 -DA:143,0 -DA:144,0 -DA:146,0 -DA:151,0 -DA:152,0 -DA:153,0 -DA:154,0 -DA:156,0 -DA:158,0 -DA:163,0 -DA:164,0 -DA:167,0 -DA:168,0 -DA:169,0 -DA:170,0 -DA:172,0 -DA:173,0 -DA:174,0 -DA:175,0 -DA:177,0 -DA:178,0 -DA:179,0 -DA:181,0 -DA:182,0 -DA:184,0 -DA:185,0 -DA:186,0 -DA:187,0 -DA:188,0 -DA:189,0 -DA:190,0 -DA:191,0 -DA:193,0 -DA:197,0 -DA:198,0 -DA:202,0 -DA:203,0 -DA:204,0 -DA:205,0 -DA:206,0 -DA:207,0 -DA:209,0 -DA:210,0 -DA:213,0 -DA:216,0 -DA:217,0 -DA:218,0 -DA:219,0 -DA:220,0 -DA:221,0 -DA:225,0 -DA:226,0 -DA:227,0 -DA:230,0 -DA:231,0 -DA:232,0 -DA:238,0 -DA:239,0 -DA:240,0 -DA:241,0 -DA:242,0 -DA:243,0 -DA:245,0 -DA:246,0 -DA:247,0 -DA:248,0 -DA:249,0 -DA:250,0 -DA:251,0 -DA:253,0 -DA:254,0 -DA:256,0 -DA:257,0 -DA:258,0 -DA:259,0 -DA:260,0 -DA:265,0 -DA:269,0 -DA:272,0 -DA:273,0 -DA:274,0 -DA:275,0 -DA:278,0 -DA:280,0 -DA:281,0 -DA:282,0 -DA:283,0 -DA:284,0 -DA:285,0 -DA:286,0 -DA:287,0 -DA:288,0 -DA:289,0 -DA:291,0 -DA:292,0 -DA:293,0 -DA:294,0 -DA:296,0 -DA:300,0 -DA:301,0 -DA:302,0 -DA:303,0 -DA:305,0 -DA:306,0 -DA:307,0 -DA:309,0 -DA:312,0 -DA:313,0 -DA:315,0 -DA:318,0 -DA:319,0 -DA:320,0 -DA:321,0 -DA:323,0 -DA:324,0 -DA:325,0 -DA:326,0 -DA:328,0 -DA:329,0 -DA:330,0 -DA:332,0 -DA:335,0 -DA:336,0 -DA:337,0 -DA:339,0 -DA:342,0 -DA:343,0 -DA:344,0 -DA:345,0 -DA:346,0 -DA:347,0 -DA:348,0 -DA:350,0 -DA:354,0 -DA:356,0 -DA:357,0 -DA:358,0 -DA:359,0 -DA:360,0 -DA:361,0 -DA:362,0 -DA:364,0 -DA:369,0 -DA:370,0 -DA:373,0 -DA:374,0 -DA:375,0 -DA:376,0 -DA:377,0 -DA:379,0 -DA:384,0 -DA:385,0 -DA:386,0 -DA:387,0 -DA:388,0 -DA:389,0 -DA:390,0 -DA:391,0 -DA:392,0 -DA:394,0 -DA:396,0 -DA:397,0 -DA:398,0 -DA:399,0 -DA:402,0 -DA:403,0 -DA:404,0 -DA:406,0 -DA:407,0 -DA:409,0 -DA:410,0 -DA:411,0 -DA:413,0 -DA:415,0 -DA:416,0 -DA:418,0 -DA:419,0 -DA:421,0 -DA:422,0 -DA:424,0 -DA:425,0 -DA:427,0 -DA:428,0 -DA:429,0 -DA:431,0 -DA:436,0 -DA:437,0 -DA:441,0 -DA:442,0 -DA:445,0 -DA:446,0 -DA:447,0 -DA:448,0 -DA:449,0 -DA:450,0 -DA:452,0 -DA:453,0 -DA:454,0 -DA:457,0 -DA:458,0 -DA:459,0 -DA:460,0 -DA:462,0 -DA:463,0 -DA:466,0 -DA:468,0 -DA:471,0 -DA:472,0 -DA:473,0 -DA:475,0 -DA:476,0 -DA:478,0 -DA:479,0 -DA:480,0 -DA:483,0 -DA:487,0 -DA:488,0 -DA:489,0 -DA:490,0 -DA:491,0 -DA:492,0 -DA:494,0 -DA:496,0 -DA:497,0 -DA:498,0 -DA:499,0 -DA:502,0 -DA:505,0 -DA:508,0 -DA:509,0 -DA:510,0 -DA:511,0 -DA:512,0 -DA:513,0 -DA:515,0 -DA:516,0 -DA:517,0 -DA:520,0 -DA:521,0 -DA:522,0 -DA:523,0 -DA:525,0 -DA:528,0 -DA:531,0 -DA:532,0 -DA:533,0 -DA:535,0 -DA:536,0 -DA:539,0 -DA:540,0 -DA:541,0 -DA:544,0 -DA:545,0 -DA:546,0 -DA:547,0 -DA:550,0 -DA:551,0 -DA:554,0 -DA:555,0 -DA:556,0 -DA:557,0 -DA:558,0 -DA:560,0 -DA:561,0 -DA:562,0 -DA:565,0 -DA:566,0 -DA:569,0 -DA:570,0 -DA:571,0 -DA:573,0 -DA:574,0 -DA:575,0 -DA:576,0 -DA:580,0 -DA:581,0 -DA:582,0 -DA:583,0 -DA:585,0 -DA:589,0 -LF:374 -LH:0 -BRDA:17,0,0,0 -BRDA:17,0,1,0 -BRDA:29,1,0,0 -BRDA:29,1,1,0 -BRDA:50,2,0,0 -BRDA:50,2,1,0 -BRDA:53,3,0,0 -BRDA:53,3,1,0 -BRDA:56,4,0,0 -BRDA:56,4,1,0 -BRDA:59,5,0,0 -BRDA:59,5,1,0 -BRDA:62,6,0,0 -BRDA:62,6,1,0 -BRDA:65,7,0,0 -BRDA:65,7,1,0 -BRDA:66,8,0,0 -BRDA:66,8,1,0 -BRDA:66,8,2,0 -BRDA:66,8,3,0 -BRDA:66,8,4,0 -BRDA:68,9,0,0 -BRDA:68,9,1,0 -BRDA:69,10,0,0 -BRDA:69,10,1,0 -BRDA:72,11,0,0 -BRDA:72,11,1,0 -BRDA:81,12,0,0 -BRDA:81,12,1,0 -BRDA:93,13,0,0 -BRDA:93,13,1,0 -BRDA:111,14,0,0 -BRDA:111,14,1,0 -BRDA:117,15,0,0 -BRDA:117,15,1,0 -BRDA:123,16,0,0 -BRDA:123,16,1,0 -BRDA:132,17,0,0 -BRDA:132,17,1,0 -BRDA:135,18,0,0 -BRDA:135,18,1,0 -BRDA:136,19,0,0 -BRDA:136,19,1,0 -BRDA:143,20,0,0 -BRDA:143,20,1,0 -BRDA:143,21,0,0 -BRDA:143,21,1,0 -BRDA:152,22,0,0 -BRDA:152,22,1,0 -BRDA:152,23,0,0 -BRDA:152,23,1,0 -BRDA:153,24,0,0 -BRDA:153,24,1,0 -BRDA:169,25,0,0 -BRDA:169,25,1,0 -BRDA:169,26,0,0 -BRDA:169,26,1,0 -BRDA:174,27,0,0 -BRDA:174,27,1,0 -BRDA:177,28,0,0 -BRDA:177,28,1,0 -BRDA:178,29,0,0 -BRDA:178,29,1,0 -BRDA:178,30,0,0 -BRDA:178,30,1,0 -BRDA:181,31,0,0 -BRDA:181,31,1,0 -BRDA:184,32,0,0 -BRDA:184,32,1,0 -BRDA:206,33,0,0 -BRDA:206,33,1,0 -BRDA:218,34,0,0 -BRDA:218,34,1,0 -BRDA:246,35,0,0 -BRDA:246,35,1,0 -BRDA:249,36,0,0 -BRDA:249,36,1,0 -BRDA:258,37,0,0 -BRDA:258,37,1,0 -BRDA:274,38,0,0 -BRDA:274,38,1,0 -BRDA:283,39,0,0 -BRDA:283,39,1,0 -BRDA:288,40,0,0 -BRDA:288,40,1,0 -BRDA:291,41,0,0 -BRDA:291,41,1,0 -BRDA:301,42,0,0 -BRDA:301,42,1,0 -BRDA:301,43,0,0 -BRDA:301,43,1,0 -BRDA:305,44,0,0 -BRDA:305,44,1,0 -BRDA:306,45,0,0 -BRDA:306,45,1,0 -BRDA:312,46,0,0 -BRDA:312,46,1,0 -BRDA:320,47,0,0 -BRDA:320,47,1,0 -BRDA:320,48,0,0 -BRDA:320,48,1,0 -BRDA:325,49,0,0 -BRDA:325,49,1,0 -BRDA:329,50,0,0 -BRDA:329,50,1,0 -BRDA:342,51,0,0 -BRDA:342,51,1,0 -BRDA:345,52,0,0 -BRDA:345,52,1,0 -BRDA:347,53,0,0 -BRDA:347,53,1,0 -BRDA:356,54,0,0 -BRDA:356,54,1,0 -BRDA:359,55,0,0 -BRDA:359,55,1,0 -BRDA:361,56,0,0 -BRDA:361,56,1,0 -BRDA:376,57,0,0 -BRDA:376,57,1,0 -BRDA:391,58,0,0 -BRDA:391,58,1,0 -BRDA:396,59,0,0 -BRDA:396,59,1,0 -BRDA:396,60,0,0 -BRDA:396,60,1,0 -BRDA:398,61,0,0 -BRDA:398,61,1,0 -BRDA:402,62,0,0 -BRDA:402,62,1,0 -BRDA:402,63,0,0 -BRDA:402,63,1,0 -BRDA:406,64,0,0 -BRDA:406,64,1,0 -BRDA:409,65,0,0 -BRDA:409,65,1,0 -BRDA:410,66,0,0 -BRDA:410,66,1,0 -BRDA:415,67,0,0 -BRDA:415,67,1,0 -BRDA:415,68,0,0 -BRDA:415,68,1,0 -BRDA:418,69,0,0 -BRDA:418,69,1,0 -BRDA:421,70,0,0 -BRDA:421,70,1,0 -BRDA:421,71,0,0 -BRDA:421,71,1,0 -BRDA:421,71,2,0 -BRDA:424,72,0,0 -BRDA:424,72,1,0 -BRDA:424,73,0,0 -BRDA:424,73,1,0 -BRDA:427,74,0,0 -BRDA:427,74,1,0 -BRDA:428,75,0,0 -BRDA:428,75,1,0 -BRDA:431,76,0,0 -BRDA:431,76,1,0 -BRDA:449,77,0,0 -BRDA:449,77,1,0 -BRDA:453,78,0,0 -BRDA:453,78,1,0 -BRDA:457,79,0,0 -BRDA:457,79,1,0 -BRDA:459,80,0,0 -BRDA:459,80,1,0 -BRDA:472,81,0,0 -BRDA:472,81,1,0 -BRDA:475,82,0,0 -BRDA:475,82,1,0 -BRDA:475,83,0,0 -BRDA:475,83,1,0 -BRDA:478,84,0,0 -BRDA:478,84,1,0 -BRDA:478,85,0,0 -BRDA:478,85,1,0 -BRDA:488,86,0,0 -BRDA:488,86,1,0 -BRDA:488,87,0,0 -BRDA:488,87,1,0 -BRDA:490,88,0,0 -BRDA:490,88,1,0 -BRDA:491,89,0,0 -BRDA:491,89,1,0 -BRDA:497,90,0,0 -BRDA:497,90,1,0 -BRDA:505,91,0,0 -BRDA:505,91,1,0 -BRDA:511,92,0,0 -BRDA:511,92,1,0 -BRDA:511,93,0,0 -BRDA:511,93,1,0 -BRDA:516,94,0,0 -BRDA:516,94,1,0 -BRDA:516,95,0,0 -BRDA:516,95,1,0 -BRDA:521,96,0,0 -BRDA:521,96,1,0 -BRDA:532,97,0,0 -BRDA:532,97,1,0 -BRDA:532,98,0,0 -BRDA:532,98,1,0 -BRDA:545,99,0,0 -BRDA:545,99,1,0 -BRDA:546,100,0,0 -BRDA:546,100,1,0 -BRDA:546,101,0,0 -BRDA:546,101,1,0 -BRDA:550,102,0,0 -BRDA:550,102,1,0 -BRDA:550,103,0,0 -BRDA:550,103,1,0 -BRDA:557,104,0,0 -BRDA:557,104,1,0 -BRDA:570,105,0,0 -BRDA:570,105,1,0 -BRDA:573,106,0,0 -BRDA:573,106,1,0 -BRDA:573,107,0,0 -BRDA:573,107,1,0 -BRDA:575,108,0,0 -BRDA:575,108,1,0 -BRDA:582,109,0,0 -BRDA:582,109,1,0 -BRDA:582,110,0,0 -BRDA:582,110,1,0 -BRF:226 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/csvline.js -FN:9,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:1,0 -DA:2,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:22,0 -LF:13 -LH:0 -BRDA:15,0,0,0 -BRDA:15,0,1,0 -BRDA:15,1,0,0 -BRDA:15,1,1,0 -BRDA:19,2,0,0 -BRDA:19,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/dataToCSVLine.js -FN:9,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:1,0 -DA:2,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/defParam.js -FN:2,(anonymous_0) -FN:53,(anonymous_1) -FN:61,getEnv -FNF:3 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,getEnv -DA:1,0 -DA:2,0 -DA:3,0 -DA:31,0 -DA:32,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:39,0 -DA:43,0 -DA:44,0 -DA:46,0 -DA:47,0 -DA:50,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:58,0 -DA:62,0 -DA:63,0 -DA:65,0 -LF:22 -LH:0 -BRDA:31,0,0,0 -BRDA:31,0,1,0 -BRDA:35,1,0,0 -BRDA:35,1,1,0 -BRDA:36,2,0,0 -BRDA:36,2,1,0 -BRDA:43,3,0,0 -BRDA:43,3,1,0 -BRDA:43,4,0,0 -BRDA:43,4,1,0 -BRDA:46,5,0,0 -BRDA:46,5,1,0 -BRDA:46,6,0,0 -BRDA:46,6,1,0 -BRDA:50,7,0,0 -BRDA:50,7,1,0 -BRDA:50,8,0,0 -BRDA:50,8,1,0 -BRDA:52,9,0,0 -BRDA:52,9,1,0 -BRDA:62,10,0,0 -BRDA:62,10,1,0 -BRF:22 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/fileLineToCSVLine.js -FN:8,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:1,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/fileline.js -FN:8,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:1,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/filterRow.js -FN:1,filterRow -FNF:1 -FNH:0 -FNDA:0,filterRow -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:16,0 -DA:18,0 -LF:12 -LH:0 -BRDA:2,0,0,0 -BRDA:2,0,1,0 -BRDA:2,1,0,0 -BRDA:2,1,1,0 -BRDA:4,2,0,0 -BRDA:4,2,1,0 -BRDA:9,3,0,0 -BRDA:9,3,1,0 -BRDA:9,4,0,0 -BRDA:9,4,1,0 -BRDA:12,5,0,0 -BRDA:12,5,1,0 -BRF:12 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/getDelimiter.js -FN:3,getDelimiter -FN:14,(anonymous_1) -FNF:2 -FNH:0 -FNDA:0,getDelimiter -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:21,0 -LF:15 -LH:0 -BRDA:5,0,0,0 -BRDA:5,0,1,0 -BRDA:7,1,0,0 -BRDA:7,1,1,0 -BRDA:16,2,0,0 -BRDA:16,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/getEol.js -FN:3,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:19,0 -LF:14 -LH:0 -BRDA:4,0,0,0 -BRDA:4,0,1,0 -BRDA:4,1,0,0 -BRDA:4,1,1,0 -BRDA:6,2,0,0 -BRDA:6,2,1,0 -BRDA:7,3,0,0 -BRDA:7,3,1,0 -BRDA:9,4,0,0 -BRDA:9,4,1,0 -BRDA:13,5,0,0 -BRDA:13,5,1,0 -BRF:12 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/index.js -FN:4,constructor -FNF:1 -FNH:0 -FNDA:0,constructor -DA:1,0 -DA:2,0 -DA:5,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/linesToJson.js -FN:11,(anonymous_0) -FN:26,justReturnRows -FN:39,processRows -FN:50,processRow -FN:71,convertRowToJson -FN:121,(anonymous_5) -FN:123,getConvFunc -FN:146,setPath -FN:156,getFlag -FN:168,getTitle -FN:178,checkType -FN:192,numberType -FN:200,stringType -FN:204,dynamicType -FN:220,booleanType -FN:229,jsonType -FNF:16 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,justReturnRows -FNDA:0,processRows -FNDA:0,processRow -FNDA:0,convertRowToJson -FNDA:0,(anonymous_5) -FNDA:0,getConvFunc -FNDA:0,setPath -FNDA:0,getFlag -FNDA:0,getTitle -FNDA:0,checkType -FNDA:0,numberType -FNDA:0,stringType -FNDA:0,dynamicType -FNDA:0,booleanType -FNDA:0,jsonType -DA:1,0 -DA:2,0 -DA:3,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:22,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:36,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:47,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:61,0 -DA:67,0 -DA:72,0 -DA:73,0 -DA:75,0 -DA:77,0 -DA:79,0 -DA:80,0 -DA:82,0 -DA:84,0 -DA:85,0 -DA:86,0 -DA:88,0 -DA:89,0 -DA:90,0 -DA:91,0 -DA:92,0 -DA:95,0 -DA:96,0 -DA:97,0 -DA:99,0 -DA:100,0 -DA:101,0 -DA:103,0 -DA:104,0 -DA:105,0 -DA:107,0 -DA:111,0 -DA:112,0 -DA:114,0 -DA:118,0 -DA:124,0 -DA:125,0 -DA:127,0 -DA:128,0 -DA:129,0 -DA:131,0 -DA:132,0 -DA:133,0 -DA:134,0 -DA:135,0 -DA:137,0 -DA:139,0 -DA:140,0 -DA:142,0 -DA:147,0 -DA:148,0 -DA:149,0 -DA:150,0 -DA:152,0 -DA:157,0 -DA:158,0 -DA:159,0 -DA:160,0 -DA:161,0 -DA:162,0 -DA:164,0 -DA:169,0 -DA:170,0 -DA:173,0 -DA:174,0 -DA:175,0 -DA:179,0 -DA:180,0 -DA:181,0 -DA:182,0 -DA:183,0 -DA:184,0 -DA:185,0 -DA:186,0 -DA:188,0 -DA:193,0 -DA:194,0 -DA:195,0 -DA:197,0 -DA:201,0 -DA:205,0 -DA:206,0 -DA:207,0 -DA:209,0 -DA:210,0 -DA:211,0 -DA:212,0 -DA:213,0 -DA:214,0 -DA:216,0 -DA:221,0 -DA:222,0 -DA:223,0 -DA:225,0 -DA:230,0 -DA:231,0 -DA:233,0 -LF:121 -LH:0 -BRDA:12,0,0,0 -BRDA:12,0,1,0 -BRDA:13,1,0,0 -BRDA:13,1,1,0 -BRDA:13,2,0,0 -BRDA:13,2,1,0 -BRDA:16,3,0,0 -BRDA:16,3,1,0 -BRDA:43,4,0,0 -BRDA:43,4,1,0 -BRDA:52,5,0,0 -BRDA:52,5,1,0 -BRDA:52,6,0,0 -BRDA:52,6,1,0 -BRDA:60,7,0,0 -BRDA:60,7,1,0 -BRDA:79,8,0,0 -BRDA:79,8,1,0 -BRDA:79,9,0,0 -BRDA:79,9,1,0 -BRDA:85,10,0,0 -BRDA:85,10,1,0 -BRDA:85,11,0,0 -BRDA:85,11,1,0 -BRDA:89,12,0,0 -BRDA:89,12,1,0 -BRDA:91,13,0,0 -BRDA:91,13,1,0 -BRDA:96,14,0,0 -BRDA:96,14,1,0 -BRDA:99,15,0,0 -BRDA:99,15,1,0 -BRDA:104,16,0,0 -BRDA:104,16,1,0 -BRDA:104,17,0,0 -BRDA:104,17,1,0 -BRDA:111,18,0,0 -BRDA:111,18,1,0 -BRDA:124,19,0,0 -BRDA:124,19,1,0 -BRDA:128,20,0,0 -BRDA:128,20,1,0 -BRDA:131,21,0,0 -BRDA:131,21,1,0 -BRDA:134,22,0,0 -BRDA:134,22,1,0 -BRDA:139,23,0,0 -BRDA:139,23,1,0 -BRDA:149,24,0,0 -BRDA:149,24,1,0 -BRDA:157,25,0,0 -BRDA:157,25,1,0 -BRDA:159,26,0,0 -BRDA:159,26,1,0 -BRDA:161,27,0,0 -BRDA:161,27,1,0 -BRDA:169,28,0,0 -BRDA:169,28,1,0 -BRDA:179,29,0,0 -BRDA:179,29,1,0 -BRDA:181,30,0,0 -BRDA:181,30,1,0 -BRDA:183,31,0,0 -BRDA:183,31,1,0 -BRDA:185,32,0,0 -BRDA:185,32,1,0 -BRDA:194,33,0,0 -BRDA:194,33,1,0 -BRDA:206,34,0,0 -BRDA:206,34,1,0 -BRDA:209,35,0,0 -BRDA:209,35,1,0 -BRDA:211,36,0,0 -BRDA:211,36,1,0 -BRDA:211,37,0,0 -BRDA:211,37,1,0 -BRDA:211,37,2,0 -BRDA:211,37,3,0 -BRDA:213,38,0,0 -BRDA:213,38,1,0 -BRDA:213,39,0,0 -BRDA:213,39,1,0 -BRDA:213,39,2,0 -BRDA:213,39,3,0 -BRDA:222,40,0,0 -BRDA:222,40,1,0 -BRDA:222,41,0,0 -BRDA:222,41,1,0 -BRF:88 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/parser.js -FN:3,Parser -FN:20,(anonymous_1) -FN:53,(anonymous_2) -FN:57,(anonymous_3) -FN:61,(anonymous_4) -FN:65,(anonymous_5) -FN:78,(anonymous_6) -FN:82,(anonymous_7) -FN:103,(anonymous_8) -FN:112,(anonymous_9) -FNF:10 -FNH:0 -FNDA:0,Parser -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:1,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:15,0 -DA:16,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:44,0 -DA:47,0 -DA:50,0 -DA:53,0 -DA:54,0 -DA:57,0 -DA:58,0 -DA:61,0 -DA:62,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:69,0 -DA:70,0 -DA:71,0 -DA:72,0 -DA:74,0 -DA:78,0 -DA:79,0 -DA:82,0 -DA:83,0 -DA:84,0 -DA:86,0 -DA:87,0 -DA:88,0 -DA:90,0 -DA:91,0 -DA:92,0 -DA:93,0 -DA:95,0 -DA:98,0 -DA:99,0 -DA:103,0 -DA:104,0 -DA:105,0 -DA:106,0 -DA:107,0 -DA:109,0 -DA:112,0 -DA:113,0 -DA:116,0 -LF:72 -LH:0 -BRDA:4,0,0,0 -BRDA:4,0,1,0 -BRDA:8,1,0,0 -BRDA:8,1,1,0 -BRDA:9,2,0,0 -BRDA:9,2,1,0 -BRDA:15,3,0,0 -BRDA:15,3,1,0 -BRDA:22,4,0,0 -BRDA:22,4,1,0 -BRDA:24,5,0,0 -BRDA:24,5,1,0 -BRDA:29,6,0,0 -BRDA:29,6,1,0 -BRDA:29,7,0,0 -BRDA:29,7,1,0 -BRDA:29,7,2,0 -BRDA:31,8,0,0 -BRDA:31,8,1,0 -BRDA:34,9,0,0 -BRDA:34,9,1,0 -BRDA:36,10,0,0 -BRDA:36,10,1,0 -BRDA:36,11,0,0 -BRDA:36,11,1,0 -BRDA:38,12,0,0 -BRDA:38,12,1,0 -BRDA:38,13,0,0 -BRDA:38,13,1,0 -BRDA:40,14,0,0 -BRDA:40,14,1,0 -BRDA:40,15,0,0 -BRDA:40,15,1,0 -BRDA:40,15,2,0 -BRDA:40,15,3,0 -BRDA:58,16,0,0 -BRDA:58,16,1,0 -BRDA:66,17,0,0 -BRDA:66,17,1,0 -BRDA:71,18,0,0 -BRDA:71,18,1,0 -BRDA:87,19,0,0 -BRDA:87,19,1,0 -BRDA:91,20,0,0 -BRDA:91,20,1,0 -BRDA:98,21,0,0 -BRDA:98,21,1,0 -BRDA:99,22,0,0 -BRDA:99,22,1,0 -BRF:49 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/parserMgr.js -FN:6,registerParser -FN:12,getParser -FN:14,getParserByName -FN:16,(anonymous_3) -FN:28,(anonymous_4) -FN:44,addParser -FN:49,addSafeParser -FN:53,initParsers -FN:55,(anonymous_8) -FN:61,(anonymous_9) -FNF:10 -FNH:0 -FNDA:0,registerParser -FNDA:0,getParser -FNDA:0,getParserByName -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,addParser -FNDA:0,addSafeParser -FNDA:0,initParsers -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:2,0 -DA:3,0 -DA:4,0 -DA:7,0 -DA:8,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:37,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:45,0 -DA:46,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:58,0 -DA:61,0 -DA:63,0 -DA:67,0 -DA:68,0 -DA:69,0 -LF:34 -LH:0 -BRDA:7,0,0,0 -BRDA:7,0,1,0 -BRDA:7,1,0,0 -BRDA:7,1,1,0 -BRDA:17,2,0,0 -BRDA:17,2,1,0 -BRDA:21,3,0,0 -BRDA:21,3,1,0 -BRDA:27,4,0,0 -BRDA:27,4,1,0 -BRDA:29,5,0,0 -BRDA:29,5,1,0 -BRDA:33,6,0,0 -BRDA:33,6,1,0 -BRF:14 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/rowSplit.js -FN:10,rowSplit -FN:89,isQuoteOpen -FN:96,isQuoteClose -FN:108,twoDoubleQuote -FN:118,_escapeQuote -FNF:5 -FNH:0 -FNDA:0,rowSplit -FNDA:0,isQuoteOpen -FNDA:0,isQuoteClose -FNDA:0,twoDoubleQuote -FNDA:0,_escapeQuote -DA:1,0 -DA:2,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:48,0 -DA:49,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:60,0 -DA:61,0 -DA:63,0 -DA:68,0 -DA:69,0 -DA:72,0 -DA:90,0 -DA:91,0 -DA:92,0 -DA:97,0 -DA:98,0 -DA:99,0 -DA:100,0 -DA:101,0 -DA:102,0 -DA:103,0 -DA:105,0 -DA:109,0 -DA:110,0 -DA:111,0 -DA:112,0 -DA:114,0 -DA:117,0 -DA:120,0 -DA:121,0 -DA:126,0 -DA:128,0 -DA:130,0 -LF:70 -LH:0 -BRDA:11,0,0,0 -BRDA:11,0,1,0 -BRDA:17,1,0,0 -BRDA:17,1,1,0 -BRDA:17,2,0,0 -BRDA:17,2,1,0 -BRDA:22,3,0,0 -BRDA:22,3,1,0 -BRDA:30,4,0,0 -BRDA:30,4,1,0 -BRDA:30,5,0,0 -BRDA:30,5,1,0 -BRDA:34,6,0,0 -BRDA:34,6,1,0 -BRDA:35,7,0,0 -BRDA:35,7,1,0 -BRDA:37,8,0,0 -BRDA:37,8,1,0 -BRDA:52,9,0,0 -BRDA:52,9,1,0 -BRDA:57,10,0,0 -BRDA:57,10,1,0 -BRDA:68,11,0,0 -BRDA:68,11,1,0 -BRDA:68,12,0,0 -BRDA:68,12,1,0 -BRDA:92,13,0,0 -BRDA:92,13,1,0 -BRDA:92,13,2,0 -BRDA:92,13,3,0 -BRDA:92,13,4,0 -BRDA:101,14,0,0 -BRDA:101,14,1,0 -BRDA:121,15,0,0 -BRDA:121,15,1,0 -BRF:35 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/worker.js -FN:17,(anonymous_0) -FN:28,processMsg -FN:45,initParams -FN:54,processData -FN:75,(anonymous_4) -FN:82,sendData -FNF:6 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,processMsg -FNDA:0,initParams -FNDA:0,processData -FNDA:0,(anonymous_4) -FNDA:0,sendData -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:27,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:34,0 -DA:35,0 -DA:37,0 -DA:38,0 -DA:40,0 -DA:46,0 -DA:55,0 -DA:56,0 -DA:57,0 -DA:59,0 -DA:60,0 -DA:61,0 -DA:62,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:68,0 -DA:74,0 -DA:75,0 -DA:76,0 -DA:77,0 -DA:79,0 -DA:83,0 -LF:45 -LH:0 -BRDA:29,0,0,0 -BRDA:29,0,1,0 -BRDA:32,1,0,0 -BRDA:32,1,1,0 -BRDA:32,1,2,0 -BRDA:55,2,0,0 -BRDA:55,2,1,0 -BRDA:66,3,0,0 -BRDA:66,3,1,0 -BRDA:67,4,0,0 -BRDA:67,4,1,0 -BRDA:76,5,0,0 -BRDA:76,5,1,0 -BRF:13 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/workerMgr.js -FN:6,workerMgr -FN:12,(anonymous_1) -FN:19,initWorker -FN:28,isRunning -FN:31,destroyWorker -FN:32,(anonymous_5) -FN:37,sendWorker -FN:41,(anonymous_7) -FN:62,setParams -FN:63,(anonymous_9) -FN:70,Worker -FN:83,(anonymous_11) -FN:94,(anonymous_12) -FN:104,(anonymous_13) -FN:122,(anonymous_14) -FN:138,(anonymous_15) -FN:144,(anonymous_16) -FN:148,(anonymous_17) -FNF:18 -FNH:0 -FNDA:0,workerMgr -FNDA:0,(anonymous_1) -FNDA:0,initWorker -FNDA:0,isRunning -FNDA:0,destroyWorker -FNDA:0,(anonymous_5) -FNDA:0,sendWorker -FNDA:0,(anonymous_7) -FNDA:0,setParams -FNDA:0,(anonymous_9) -FNDA:0,Worker -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:29,0 -DA:32,0 -DA:33,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:56,0 -DA:58,0 -DA:63,0 -DA:64,0 -DA:67,0 -DA:71,0 -DA:72,0 -DA:79,0 -DA:80,0 -DA:81,0 -DA:82,0 -DA:83,0 -DA:84,0 -DA:85,0 -DA:86,0 -DA:87,0 -DA:88,0 -DA:90,0 -DA:94,0 -DA:95,0 -DA:96,0 -DA:104,0 -DA:105,0 -DA:106,0 -DA:107,0 -DA:108,0 -DA:110,0 -DA:111,0 -DA:112,0 -DA:113,0 -DA:114,0 -DA:116,0 -DA:118,0 -DA:119,0 -DA:120,0 -DA:121,0 -DA:122,0 -DA:123,0 -DA:124,0 -DA:131,0 -DA:133,0 -DA:138,0 -DA:139,0 -DA:140,0 -DA:141,0 -DA:144,0 -DA:145,0 -DA:148,0 -DA:149,0 -LF:79 -LH:0 -BRDA:38,0,0,0 -BRDA:38,0,1,0 -BRDA:49,1,0,0 -BRDA:49,1,1,0 -BRDA:49,2,0,0 -BRDA:49,2,1,0 -BRDA:51,3,0,0 -BRDA:51,3,1,0 -BRDA:105,4,0,0 -BRDA:105,4,1,0 -BRDA:108,5,0,0 -BRDA:108,5,1,0 -BRDA:110,6,0,0 -BRDA:110,6,1,0 -BRDA:118,7,0,0 -BRDA:118,7,1,0 -BRDA:127,8,0,0 -BRDA:127,8,1,0 -BRF:18 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/index.js -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_array.js -FN:5,parser_array -FNF:1 -FNH:0 -FNDA:0,parser_array -DA:1,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -LF:5 -LH:0 -BRDA:7,0,0,0 -BRDA:7,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_flat.js -FN:5,parser_flat -FNF:1 -FNH:0 -FNDA:0,parser_flat -DA:1,0 -DA:6,0 -DA:7,0 -DA:8,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_json.js -FN:4,processHead -FN:36,parser_json -FNF:2 -FNH:0 -FNDA:0,processHead -FNDA:0,parser_json -DA:1,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:30,0 -DA:32,0 -DA:37,0 -DA:38,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:50,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:55,0 -DA:57,0 -DA:60,0 -DA:63,0 -DA:64,0 -DA:66,0 -LF:39 -LH:0 -BRDA:9,0,0,0 -BRDA:9,0,1,0 -BRDA:10,1,0,0 -BRDA:10,1,1,0 -BRDA:11,2,0,0 -BRDA:11,2,1,0 -BRDA:16,3,0,0 -BRDA:16,3,1,0 -BRDA:19,4,0,0 -BRDA:19,4,1,0 -BRDA:24,5,0,0 -BRDA:24,5,1,0 -BRDA:38,6,0,0 -BRDA:38,6,1,0 -BRDA:38,7,0,0 -BRDA:38,7,1,0 -BRDA:41,8,0,0 -BRDA:41,8,1,0 -BRDA:43,9,0,0 -BRDA:43,9,1,0 -BRDA:43,10,0,0 -BRDA:43,10,1,0 -BRDA:44,11,0,0 -BRDA:44,11,1,0 -BRDA:47,12,0,0 -BRDA:47,12,1,0 -BRDA:47,13,0,0 -BRDA:47,13,1,0 -BRDA:50,14,0,0 -BRDA:50,14,1,0 -BRDA:52,15,0,0 -BRDA:52,15,1,0 -BRDA:63,16,0,0 -BRDA:63,16,1,0 -BRF:34 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_jsonarray.js -FN:5,parser_jsonarray -FNF:1 -FNH:0 -FNDA:0,parser_jsonarray -DA:1,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:20,0 -LF:13 -LH:0 -BRDA:11,0,0,0 -BRDA:11,0,1,0 -BRDA:17,1,0,0 -BRDA:17,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/core/defaultParsers/parser_omit.js -FN:5,parser_omit -FNF:1 -FNH:0 -FNDA:0,parser_omit -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/interfaces/index.js -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/interfaces/cli/index.js -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/libs/interfaces/cli/main.js -FN:7,_initConverter -FN:11,(anonymous_1) -FN:22,(anonymous_2) -FN:25,(anonymous_3) -FN:31,convertFile -FN:36,convertString -FNF:6 -FNH:0 -FNDA:0,_initConverter -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,convertFile -FNDA:0,convertString -DA:6,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:20,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:29,0 -DA:32,0 -DA:33,0 -DA:37,0 -DA:38,0 -DA:41,0 -DA:42,0 -LF:23 -LH:0 -BRDA:12,0,0,0 -BRDA:12,0,1,0 -BRDA:16,1,0,0 -BRDA:16,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/src/CSVError.ts -FN:2,(anonymous_5) -FN:12,CSVError -FN:3,(anonymous_7) -FN:6,(anonymous_8) -FN:9,(anonymous_9) -FN:20,(anonymous_10) -FNF:6 -FNH:4 -FNDA:1,(anonymous_5) -FNDA:6,CSVError -FNDA:2,(anonymous_7) -FNDA:4,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -DA:1,1 -DA:2,1 -DA:3,1 -DA:4,2 -DA:6,1 -DA:7,4 -DA:9,1 -DA:10,0 -DA:13,6 -DA:14,6 -DA:15,6 -DA:17,6 -DA:18,6 -DA:20,1 -DA:21,0 -DA:23,1 -LF:16 -LH:14 -BRDA:17,0,0,6 -BRDA:17,0,1,0 -BRDA:17,1,0,4 -BRDA:17,1,1,2 -BRF:4 -BRH:3 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/src/Converter.ts -FN:17,(anonymous_6) -FN:102,Converter -FN:112,(anonymous_8) -FN:115,(anonymous_9) -FN:18,(anonymous_10) -FN:21,(anonymous_11) -FN:24,(anonymous_12) -FN:35,(anonymous_13) -FN:43,(anonymous_14) -FN:53,(anonymous_15) -FN:57,(anonymous_16) -FN:61,(anonymous_17) -FN:72,(anonymous_18) -FN:73,(anonymous_19) -FN:75,(anonymous_20) -FN:82,(anonymous_21) -FN:92,(anonymous_22) -FN:95,(anonymous_23) -FN:123,(anonymous_24) -FN:125,(anonymous_25) -FN:131,(anonymous_26) -FN:133,(anonymous_27) -FN:140,(anonymous_28) -FN:145,(anonymous_29) -FN:150,(anonymous_30) -FN:158,(anonymous_31) -FN:166,(anonymous_32) -FN:171,(anonymous_33) -FNF:28 -FNH:27 -FNDA:1,(anonymous_6) -FNDA:73,Converter -FNDA:6,(anonymous_8) -FNDA:6,(anonymous_9) -FNDA:2,(anonymous_10) -FNDA:1,(anonymous_11) -FNDA:17,(anonymous_12) -FNDA:5,(anonymous_13) -FNDA:5,(anonymous_14) -FNDA:25,(anonymous_15) -FNDA:16,(anonymous_16) -FNDA:37,(anonymous_17) -FNDA:49,(anonymous_18) -FNDA:49,(anonymous_19) -FNDA:46,(anonymous_20) -FNDA:2,(anonymous_21) -FNDA:165734,(anonymous_22) -FNDA:436312,(anonymous_23) -FNDA:124,(anonymous_24) -FNDA:122,(anonymous_25) -FNDA:122,(anonymous_26) -FNDA:2,(anonymous_27) -FNDA:65,(anonymous_28) -FNDA:28,(anonymous_29) -FNDA:28,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:61,(anonymous_32) -FNDA:4,(anonymous_33) -DA:1,1 -DA:2,1 -DA:3,1 -DA:4,1 -DA:12,1 -DA:13,1 -DA:14,1 -DA:15,1 -DA:17,1 -DA:18,1 -DA:19,2 -DA:21,1 -DA:22,1 -DA:24,1 -DA:28,17 -DA:33,17 -DA:35,5 -DA:36,5 -DA:43,5 -DA:44,5 -DA:45,5 -DA:46,5 -DA:48,0 -DA:51,5 -DA:53,1 -DA:54,25 -DA:55,25 -DA:57,1 -DA:58,16 -DA:59,16 -DA:60,16 -DA:61,16 -DA:62,37 -DA:63,16 -DA:65,21 -DA:66,21 -DA:67,21 -DA:70,16 -DA:72,49 -DA:73,49 -DA:74,49 -DA:76,46 -DA:77,46 -DA:79,0 -DA:83,2 -DA:84,2 -DA:86,0 -DA:92,1 -DA:93,165734 -DA:95,1 -DA:96,436312 -DA:102,217 -DA:103,73 -DA:104,73 -DA:105,73 -DA:106,73 -DA:107,73 -DA:108,0 -DA:110,73 -DA:112,73 -DA:114,6 -DA:115,6 -DA:116,6 -DA:121,73 -DA:123,124 -DA:124,124 -DA:126,122 -DA:127,70 -DA:128,70 -DA:132,122 -DA:134,2 -DA:135,2 -DA:136,2 -DA:137,2 -DA:140,65 -DA:141,65 -DA:142,28 -DA:143,28 -DA:144,28 -DA:146,28 -DA:147,24 -DA:151,28 -DA:152,4 -DA:154,24 -DA:159,0 -DA:160,0 -DA:163,37 -DA:166,1 -DA:167,61 -DA:168,61 -DA:169,61 -DA:171,1 -DA:172,4 -DA:174,1 -LF:94 -LH:88 -BRDA:102,0,0,71 -BRDA:102,0,1,2 -BRDA:103,1,0,73 -BRDA:103,1,1,73 -BRDA:107,2,0,0 -BRDA:107,2,1,73 -BRDA:44,3,0,5 -BRDA:44,3,1,0 -BRDA:62,4,0,16 -BRDA:62,4,1,21 -BRDA:76,5,0,46 -BRDA:76,5,1,0 -BRDA:83,6,0,2 -BRDA:83,6,1,0 -BRDA:126,7,0,70 -BRDA:126,7,1,52 -BRDA:141,8,0,28 -BRDA:141,8,1,37 -BRDA:141,9,0,65 -BRDA:141,9,1,64 -BRDA:146,10,0,24 -BRDA:146,10,1,4 -BRDA:151,11,0,4 -BRDA:151,11,1,24 -BRDA:151,12,0,28 -BRDA:151,12,1,28 -BRF:26 -BRH:22 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/src/Processor.ts -FN:7,(anonymous_0) -FN:10,Processor -FNF:2 -FNH:2 -FNDA:1,(anonymous_0) -FNDA:75,Processor -DA:7,1 -DA:10,75 -DA:11,75 -DA:12,75 -DA:15,1 -LF:5 -LH:5 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/src/ProcessorLocal.test.ts -FN:9,(anonymous_13) -FN:10,(anonymous_14) -FN:20,(anonymous_17) -FNF:3 -FNH:3 -FNDA:1,(anonymous_13) -FNDA:1,(anonymous_14) -FNDA:1,(anonymous_17) -DA:1,1 -DA:2,1 -DA:4,1 -DA:5,1 -DA:6,1 -DA:8,1 -DA:9,1 -DA:10,1 -DA:11,1 -DA:12,1 -DA:13,1 -DA:14,1 -DA:15,1 -DA:16,1 -DA:17,1 -DA:18,1 -DA:20,1 -DA:21,1 -DA:22,1 -DA:23,1 -DA:25,1 -LF:21 -LH:21 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/src/ProcessorLocal.ts -FN:11,(anonymous_6) -FN:15,(anonymous_8) -FN:23,(anonymous_9) -FN:30,(anonymous_10) -FN:39,(anonymous_11) -FN:46,(anonymous_12) -FN:54,(anonymous_13) -FN:82,(anonymous_14) -FN:99,(anonymous_15) -FN:140,(anonymous_16) -FN:179,(anonymous_17) -FN:198,(anonymous_18) -FN:208,(anonymous_19) -FN:209,(anonymous_20) -FN:210,(anonymous_21) -FN:221,processLineHook -FN:232,(anonymous_23) -FNF:17 -FNH:16 -FNDA:76,(anonymous_6) -FNDA:154,(anonymous_8) -FNDA:67,(anonymous_9) -FNDA:154,(anonymous_10) -FNDA:154,(anonymous_11) -FNDA:154,(anonymous_12) -FNDA:154,(anonymous_13) -FNDA:106,(anonymous_14) -FNDA:68,(anonymous_15) -FNDA:4,(anonymous_16) -FNDA:105,(anonymous_17) -FNDA:290,(anonymous_18) -FNDA:1,(anonymous_19) -FNDA:1,(anonymous_20) -FNDA:1,(anonymous_21) -FNDA:1,processLineHook -FNDA:0,(anonymous_23) -DA:1,1 -DA:2,1 -DA:3,1 -DA:4,1 -DA:5,1 -DA:6,1 -DA:7,1 -DA:8,1 -DA:11,75 -DA:12,75 -DA:13,75 -DA:14,75 -DA:15,1 -DA:16,154 -DA:17,68 -DA:19,154 -DA:21,75 -DA:22,75 -DA:23,1 -DA:24,67 -DA:25,67 -DA:27,67 -DA:30,280 -DA:32,154 -DA:33,28 -DA:35,126 -DA:38,154 -DA:40,154 -DA:41,4 -DA:43,150 -DA:47,154 -DA:48,154 -DA:50,0 -DA:54,154 -DA:55,154 -DA:56,154 -DA:57,154 -DA:58,105 -DA:60,154 -DA:61,2 -DA:62,2 -DA:65,154 -DA:66,1 -DA:68,154 -DA:69,154 -DA:70,126 -DA:72,28 -DA:73,28 -DA:75,154 -DA:76,106 -DA:77,106 -DA:78,1 -DA:80,105 -DA:82,106 -DA:83,106 -DA:86,68 -DA:88,38 -DA:95,48 -DA:99,1 -DA:100,68 -DA:101,8 -DA:102,4 -DA:104,4 -DA:107,60 -DA:108,60 -DA:109,60 -DA:110,60 -DA:111,60 -DA:112,60 -DA:113,59 -DA:114,59 -DA:115,59 -DA:117,1 -DA:120,60 -DA:122,60 -DA:123,1 -DA:125,59 -DA:126,2 -DA:128,57 -DA:131,67 -DA:132,4 -DA:134,67 -DA:135,4 -DA:136,4 -DA:138,67 -DA:140,1 -DA:141,4 -DA:142,4 -DA:143,4 -DA:144,4 -DA:145,22 -DA:146,5 -DA:147,1 -DA:148,0 -DA:150,1 -DA:153,4 -DA:155,17 -DA:156,17 -DA:157,6 -DA:160,0 -DA:175,4 -DA:179,1 -DA:180,105 -DA:181,1 -DA:183,104 -DA:184,104 -DA:185,104 -DA:186,2 -DA:188,102 -DA:198,1 -DA:199,290 -DA:200,290 -DA:201,138 -DA:203,152 -DA:208,1 -DA:209,1 -DA:210,1 -DA:211,1 -DA:212,0 -DA:214,1 -DA:219,1 -DA:224,1 -DA:225,0 -DA:227,1 -DA:228,1 -DA:229,1 -DA:230,1 -DA:231,1 -DA:232,0 -DA:233,0 -DA:234,0 -DA:237,1 -DA:238,1 -DA:239,1 -DA:240,1 -DA:242,1 -DA:245,0 -LF:137 -LH:128 -BRDA:11,0,0,75 -BRDA:11,0,1,75 -BRDA:11,0,2,75 -BRDA:16,1,0,68 -BRDA:16,1,1,86 -BRDA:24,2,0,67 -BRDA:24,2,1,0 -BRDA:30,3,0,126 -BRDA:30,3,1,28 -BRDA:32,4,0,28 -BRDA:32,4,1,126 -BRDA:40,5,0,4 -BRDA:40,5,1,150 -BRDA:47,6,0,154 -BRDA:47,6,1,0 -BRDA:47,7,0,154 -BRDA:47,7,1,154 -BRDA:57,8,0,105 -BRDA:57,8,1,49 -BRDA:60,9,0,2 -BRDA:60,9,1,152 -BRDA:60,10,0,154 -BRDA:60,10,1,4 -BRDA:60,10,2,2 -BRDA:65,11,0,1 -BRDA:65,11,1,153 -BRDA:65,12,0,154 -BRDA:65,12,1,1 -BRDA:69,13,0,126 -BRDA:69,13,1,28 -BRDA:75,14,0,106 -BRDA:75,14,1,48 -BRDA:77,15,0,1 -BRDA:77,15,1,105 -BRDA:83,16,0,68 -BRDA:83,16,1,38 -BRDA:83,17,0,106 -BRDA:83,17,1,72 -BRDA:100,18,0,8 -BRDA:100,18,1,60 -BRDA:101,19,0,4 -BRDA:101,19,1,4 -BRDA:112,20,0,59 -BRDA:112,20,1,1 -BRDA:122,21,0,1 -BRDA:122,21,1,59 -BRDA:125,22,0,2 -BRDA:125,22,1,57 -BRDA:131,23,0,4 -BRDA:131,23,1,63 -BRDA:131,24,0,67 -BRDA:131,24,1,66 -BRDA:134,25,0,4 -BRDA:134,25,1,63 -BRDA:134,26,0,67 -BRDA:134,26,1,4 -BRDA:142,27,0,4 -BRDA:142,27,1,0 -BRDA:145,28,0,5 -BRDA:145,28,1,17 -BRDA:146,29,0,1 -BRDA:146,29,1,4 -BRDA:147,30,0,0 -BRDA:147,30,1,1 -BRDA:147,31,0,1 -BRDA:147,31,1,0 -BRDA:155,32,0,17 -BRDA:155,32,1,0 -BRDA:156,33,0,6 -BRDA:156,33,1,11 -BRDA:180,34,0,1 -BRDA:180,34,1,104 -BRDA:185,35,0,2 -BRDA:185,35,1,102 -BRDA:199,36,0,290 -BRDA:199,36,1,0 -BRDA:200,37,0,138 -BRDA:200,37,1,152 -BRDA:211,38,0,0 -BRDA:211,38,1,1 -BRDA:224,39,0,0 -BRDA:224,39,1,1 -BRDA:227,40,0,1 -BRDA:227,40,1,0 -BRDA:231,41,0,0 -BRDA:231,41,1,1 -BRDA:231,42,0,1 -BRDA:231,42,1,1 -BRF:88 -BRH:77 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/src/Result.ts -FN:6,(anonymous_1) -FN:21,Result -FN:7,(anonymous_3) -FN:11,(anonymous_4) -FN:17,(anonymous_5) -FN:22,(anonymous_6) -FN:25,(anonymous_7) -FN:32,(anonymous_8) -FN:47,(anonymous_9) -FN:53,(anonymous_10) -FN:61,(anonymous_11) -FN:73,processLineByLine -FN:91,(anonymous_13) -FN:130,processRecursive -FN:144,pushDownstream -FNF:15 -FNH:13 -FNDA:1,(anonymous_1) -FNDA:73,Result -FNDA:94,(anonymous_3) -FNDA:102,(anonymous_4) -FNDA:155,(anonymous_5) -FNDA:94,(anonymous_6) -FNDA:94,(anonymous_7) -FNDA:31,(anonymous_8) -FNDA:94,(anonymous_9) -FNDA:6,(anonymous_10) -FNDA:61,(anonymous_11) -FNDA:31,processLineByLine -FNDA:0,(anonymous_13) -FNDA:0,processRecursive -FNDA:10586,pushDownstream -DA:3,1 -DA:6,1 -DA:7,1 -DA:8,94 -DA:11,1 -DA:12,102 -DA:13,63 -DA:15,102 -DA:17,1 -DA:18,155 -DA:20,73 -DA:21,73 -DA:22,94 -DA:23,94 -DA:25,94 -DA:26,94 -DA:27,31 -DA:33,31 -DA:34,0 -DA:36,31 -DA:37,31 -DA:42,63 -DA:43,63 -DA:47,1 -DA:48,94 -DA:49,73 -DA:51,94 -DA:53,1 -DA:54,6 -DA:55,0 -DA:57,6 -DA:58,2 -DA:61,1 -DA:62,61 -DA:63,46 -DA:64,46 -DA:67,61 -DA:68,0 -DA:71,1 -DA:81,31 -DA:82,0 -DA:84,31 -DA:85,23 -DA:86,23 -DA:87,23 -DA:88,23 -DA:90,23 -DA:91,0 -DA:92,0 -DA:96,23 -DA:97,1 -DA:99,23 -DA:100,10592 -DA:101,10592 -DA:102,10592 -DA:103,10592 -DA:104,1 -DA:107,23 -DA:117,8 -DA:118,8 -DA:119,10584 -DA:120,10584 -DA:124,8 -DA:139,0 -DA:140,0 -DA:142,0 -DA:145,10586 -DA:146,10584 -DA:148,2 -LF:69 -LH:60 -BRDA:8,0,0,94 -BRDA:8,0,1,23 -BRDA:8,0,2,71 -BRDA:12,1,0,63 -BRDA:12,1,1,39 -BRDA:13,2,0,63 -BRDA:13,2,1,58 -BRDA:26,3,0,31 -BRDA:26,3,1,63 -BRDA:33,4,0,0 -BRDA:33,4,1,31 -BRDA:48,5,0,73 -BRDA:48,5,1,21 -BRDA:54,6,0,0 -BRDA:54,6,1,6 -BRDA:54,7,0,6 -BRDA:54,7,1,0 -BRDA:57,8,0,2 -BRDA:57,8,1,4 -BRDA:57,9,0,6 -BRDA:57,9,1,2 -BRDA:62,10,0,46 -BRDA:62,10,1,15 -BRDA:63,11,0,46 -BRDA:63,11,1,0 -BRDA:63,12,0,46 -BRDA:63,12,1,46 -BRDA:67,13,0,0 -BRDA:67,13,1,61 -BRDA:67,14,0,61 -BRDA:67,14,1,17 -BRDA:81,15,0,0 -BRDA:81,15,1,31 -BRDA:84,16,0,23 -BRDA:84,16,1,8 -BRDA:84,17,0,31 -BRDA:84,17,1,23 -BRDA:90,18,0,0 -BRDA:90,18,1,23 -BRDA:90,19,0,23 -BRDA:90,19,1,0 -BRDA:96,20,0,1 -BRDA:96,20,1,22 -BRDA:103,21,0,1 -BRDA:103,21,1,10591 -BRDA:117,22,0,8 -BRDA:117,22,1,0 -BRDA:139,23,0,0 -BRDA:139,23,1,0 -BRDA:145,24,0,10584 -BRDA:145,24,1,2 -BRDA:145,25,0,10586 -BRDA:145,25,1,10586 -BRF:53 -BRH:42 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/src/Worker.ts -FN:4,(anonymous_0) -FNF:1 -FNH:0 -FNDA:0,(anonymous_0) -LF:0 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/src/dataClean.ts -FN:17,concatLeftChunk -FNF:1 -FNH:1 -FNDA:126,concatLeftChunk -DA:8,1 -DA:9,126 -DA:10,126 -DA:12,126 -DA:18,126 -DA:26,14 -DA:41,126 -LF:7 -LH:7 -BRDA:18,0,0,0 -BRDA:18,0,1,1 -BRDA:18,1,0,1 -BRDA:18,1,1,1 -BRF:4 -BRH:3 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/src/fileline.test.ts -FNF:0 -FNH:0 -DA:3,1 -DA:6,1 -DA:7,1 -DA:8,1 -LF:4 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/src/fileline.ts -FNF:0 -FNH:0 -DA:9,1 -DA:10,1 -LF:2 -LH:2 -BRDA:9,0,0,1 -BRDA:9,0,1,1 -BRF:2 -BRH:2 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/src/getEol.ts -FNF:0 -FNH:0 -LF:0 -LH:0 -BRDA:3,0,0,282 -BRDA:3,0,1,150 -BRDA:17,1,0,83 -BRF:3 -BRH:3 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/src/index.ts -FN:4,(anonymous_0) -FNF:1 -FNH:1 -FNDA:15,(anonymous_0) -DA:3,1 -DA:4,1 -DA:5,15 -DA:8,1 -DA:9,1 -LF:5 -LH:5 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/src/lineToJson.ts -FN:9,default_1 -FN:23,processRow -FN:38,convertRowToJson -FN:84,(anonymous_4) -FN:86,getConvFunc -FN:112,setPath -FN:132,flatSetter -FN:135,jsonSetter -FN:140,checkType -FN:154,numberType -FN:162,stringType -FN:166,dynamicType -FN:182,booleanType -FN:191,jsonType -FNF:14 -FNH:13 -FNDA:102,default_1 -FNDA:32101,processRow -FNDA:32099,convertRowToJson -FNDA:0,(anonymous_4) -FNDA:65781,getConvFunc -FNDA:65781,setPath -FNDA:64992,flatSetter -FNDA:789,jsonSetter -FNDA:75,checkType -FNDA:13,numberType -FNDA:60,stringType -FNDA:75,dynamicType -FNDA:2,booleanType -FNDA:5,jsonType -DA:2,1 -DA:4,1 -DA:7,1 -DA:9,1 -DA:10,102 -DA:11,102 -DA:12,32101 -DA:13,32099 -DA:14,32090 -DA:17,100 -DA:25,32101 -DA:26,2 -DA:29,32099 -DA:30,32099 -DA:31,32099 -DA:32,32090 -DA:34,9 -DA:39,32099 -DA:40,32099 -DA:42,32099 -DA:43,65788 -DA:45,65788 -DA:46,7 -DA:48,65781 -DA:50,65781 -DA:51,65781 -DA:52,50 -DA:54,65781 -DA:55,65781 -DA:56,6 -DA:57,6 -DA:58,6 -DA:65,65775 -DA:66,75 -DA:67,75 -DA:69,65775 -DA:70,65775 -DA:74,32099 -DA:75,32090 -DA:77,9 -DA:81,1 -DA:87,65781 -DA:88,65243 -DA:90,538 -DA:91,538 -DA:92,533 -DA:94,5 -DA:95,1 -DA:97,5 -DA:98,4 -DA:99,4 -DA:100,4 -DA:101,4 -DA:103,0 -DA:105,1 -DA:106,1 -DA:108,0 -DA:113,65781 -DA:114,538 -DA:115,3 -DA:117,535 -DA:118,103 -DA:119,1 -DA:121,102 -DA:124,432 -DA:128,65781 -DA:133,64992 -DA:136,789 -DA:141,75 -DA:142,9 -DA:143,66 -DA:144,0 -DA:145,66 -DA:146,0 -DA:147,66 -DA:148,66 -DA:150,0 -DA:155,13 -DA:156,13 -DA:157,0 -DA:159,13 -DA:163,60 -DA:167,75 -DA:168,75 -DA:169,13 -DA:171,62 -DA:172,13 -DA:173,49 -DA:174,2 -DA:175,47 -DA:176,5 -DA:178,42 -DA:183,2 -DA:184,2 -DA:185,0 -DA:187,2 -DA:192,5 -DA:193,5 -DA:195,0 -LF:99 -LH:91 -BRDA:13,0,0,32090 -BRDA:13,0,1,9 -BRDA:25,1,0,2 -BRDA:25,1,1,32099 -BRDA:25,2,0,32101 -BRDA:25,2,1,5 -BRDA:25,2,2,5 -BRDA:29,3,0,32099 -BRDA:29,3,1,0 -BRDA:31,4,0,32090 -BRDA:31,4,1,9 -BRDA:45,5,0,7 -BRDA:45,5,1,65781 -BRDA:45,6,0,65788 -BRDA:45,6,1,18 -BRDA:51,7,0,50 -BRDA:51,7,1,65731 -BRDA:51,8,0,65781 -BRDA:51,8,1,65731 -BRDA:55,9,0,6 -BRDA:55,9,1,65775 -BRDA:57,10,0,6 -BRDA:57,10,1,0 -BRDA:65,11,0,75 -BRDA:65,11,1,65700 -BRDA:69,12,0,65775 -BRDA:69,12,1,0 -BRDA:74,13,0,32090 -BRDA:74,13,1,9 -BRDA:87,14,0,65243 -BRDA:87,14,1,538 -BRDA:91,15,0,533 -BRDA:91,15,1,5 -BRDA:94,16,0,1 -BRDA:94,16,1,4 -BRDA:95,17,0,1 -BRDA:95,17,1,1 -BRDA:97,18,0,4 -BRDA:97,18,1,1 -BRDA:100,19,0,4 -BRDA:100,19,1,0 -BRDA:105,20,0,1 -BRDA:105,20,1,0 -BRDA:113,21,0,538 -BRDA:113,21,1,65243 -BRDA:114,22,0,3 -BRDA:114,22,1,535 -BRDA:117,23,0,103 -BRDA:117,23,1,432 -BRDA:118,24,0,1 -BRDA:118,24,1,102 -BRDA:118,25,0,103 -BRDA:118,25,1,1 -BRDA:141,26,0,9 -BRDA:141,26,1,66 -BRDA:143,27,0,0 -BRDA:143,27,1,66 -BRDA:145,28,0,0 -BRDA:145,28,1,66 -BRDA:147,29,0,66 -BRDA:147,29,1,0 -BRDA:156,30,0,0 -BRDA:156,30,1,13 -BRDA:168,31,0,13 -BRDA:168,31,1,62 -BRDA:171,32,0,13 -BRDA:171,32,1,49 -BRDA:173,33,0,2 -BRDA:173,33,1,47 -BRDA:173,34,0,49 -BRDA:173,34,1,6 -BRDA:173,34,2,49 -BRDA:173,34,3,7 -BRDA:175,35,0,5 -BRDA:175,35,1,42 -BRDA:175,36,0,47 -BRDA:175,36,1,3 -BRDA:175,36,2,44 -BRDA:175,36,3,2 -BRDA:184,37,0,0 -BRDA:184,37,1,2 -BRDA:184,38,0,2 -BRDA:184,38,1,0 -BRF:83 -BRH:72 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/src/rowSplit.test.ts -FNF:0 -FNH:0 -DA:1,1 -DA:17,1 -DA:18,4 -DA:19,1 -DA:25,1 -DA:26,1 -DA:27,1 -DA:32,1 -DA:33,1 -DA:35,1 -DA:39,1 -DA:40,1 -DA:42,1 -DA:47,1 -DA:52,1 -DA:58,3 -DA:70,1 -DA:71,1 -DA:73,1 -DA:80,1 -DA:86,1 -DA:87,1 -DA:93,1 -DA:95,1 -DA:99,1 -DA:100,3 -DA:101,1 -DA:103,1 -DA:107,1 -DA:108,1 -DA:110,1 -LF:31 -LH:31 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/src/rowSplit.ts -FN:8,(anonymous_1) -FN:21,RowSplit -FN:15,(anonymous_3) -FN:26,(anonymous_4) -FN:50,(anonymous_5) -FN:103,(anonymous_6) -FN:114,(anonymous_7) -FN:123,(anonymous_8) -FN:130,(anonymous_9) -FN:145,(anonymous_10) -FN:155,(anonymous_11) -FN:164,(anonymous_12) -FNF:12 -FNH:11 -FNDA:1,(anonymous_1) -FNDA:77,RowSplit -FNDA:32192,(anonymous_3) -FNDA:32200,(anonymous_4) -FNDA:32192,(anonymous_5) -FNDA:8,(anonymous_6) -FNDA:33,(anonymous_7) -FNDA:66643,(anonymous_8) -FNDA:272,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:133,(anonymous_11) -FNDA:107,(anonymous_12) -DA:4,1 -DA:5,1 -DA:7,1 -DA:8,1 -DA:12,77 -DA:13,77 -DA:14,77 -DA:15,1 -DA:16,32192 -DA:17,70 -DA:19,32192 -DA:21,77 -DA:22,77 -DA:23,77 -DA:24,77 -DA:26,1 -DA:27,32200 -DA:28,8 -DA:30,32192 -DA:31,32192 -DA:32,32192 -DA:33,32192 -DA:34,4 -DA:37,32192 -DA:38,2 -DA:39,2 -DA:41,32192 -DA:42,32192 -DA:43,32192 -DA:44,0 -DA:46,32192 -DA:50,1 -DA:51,32192 -DA:52,32192 -DA:53,32192 -DA:54,32192 -DA:55,66757 -DA:56,66757 -DA:57,66625 -DA:59,66757 -DA:60,66757 -DA:61,66643 -DA:62,158 -DA:63,158 -DA:64,107 -DA:65,107 -DA:66,107 -DA:67,107 -DA:69,51 -DA:70,51 -DA:71,51 -DA:74,66485 -DA:75,66473 -DA:77,66485 -DA:78,66485 -DA:81,114 -DA:82,26 -DA:83,26 -DA:84,26 -DA:85,26 -DA:86,26 -DA:87,26 -DA:89,26 -DA:90,26 -DA:92,88 -DA:101,32192 -DA:103,1 -DA:105,8 -DA:106,6 -DA:107,2 -DA:108,1 -DA:110,1 -DA:112,7 -DA:113,7 -DA:114,7 -DA:115,33 -DA:116,33 -DA:117,13 -DA:118,13 -DA:121,7 -DA:123,1 -DA:124,66643 -DA:125,66643 -DA:126,66643 -DA:130,1 -DA:131,272 -DA:132,272 -DA:133,272 -DA:134,266 -DA:136,272 -DA:137,272 -DA:138,272 -DA:139,191 -DA:140,191 -DA:142,272 -DA:145,1 -DA:146,0 -DA:147,0 -DA:148,0 -DA:149,0 -DA:151,0 -DA:155,1 -DA:156,133 -DA:157,133 -DA:158,25 -DA:160,133 -DA:162,133 -DA:164,1 -DA:165,107 -DA:166,107 -DA:167,107 -DA:168,32137 -DA:169,32137 -DA:170,32137 -DA:171,32116 -DA:172,18 -DA:174,32098 -DA:177,32116 -DA:179,21 -DA:182,107 -DA:184,1 -LF:121 -LH:115 -BRDA:16,0,0,70 -BRDA:16,0,1,32122 -BRDA:27,1,0,8 -BRDA:27,1,1,32192 -BRDA:33,2,0,4 -BRDA:33,2,1,32188 -BRDA:33,3,0,32192 -BRDA:33,3,1,32192 -BRDA:37,4,0,2 -BRDA:37,4,1,32190 -BRDA:37,5,0,32192 -BRDA:37,5,1,10 -BRDA:43,6,0,0 -BRDA:43,6,1,32192 -BRDA:56,7,0,66625 -BRDA:56,7,1,132 -BRDA:56,8,0,66757 -BRDA:56,8,1,66643 -BRDA:60,9,0,66643 -BRDA:60,9,1,114 -BRDA:61,10,0,158 -BRDA:61,10,1,66485 -BRDA:63,11,0,107 -BRDA:63,11,1,51 -BRDA:74,12,0,66473 -BRDA:74,12,1,12 -BRDA:81,13,0,26 -BRDA:81,13,1,88 -BRDA:86,14,0,26 -BRDA:86,14,1,0 -BRDA:105,15,0,6 -BRDA:105,15,1,2 -BRDA:107,16,0,1 -BRDA:107,16,1,1 -BRDA:116,17,0,13 -BRDA:116,17,1,20 -BRDA:126,18,0,66643 -BRDA:126,18,1,167 -BRDA:126,18,2,13 -BRDA:126,18,3,13 -BRDA:126,18,4,11 -BRDA:133,19,0,266 -BRDA:133,19,1,6 -BRDA:138,20,0,463 -BRDA:138,20,1,273 -BRDA:157,21,0,25 -BRDA:157,21,1,108 -BRDA:170,22,0,32116 -BRDA:170,22,1,21 -BRDA:170,23,0,32137 -BRDA:170,23,1,23 -BRDA:171,24,0,18 -BRDA:171,24,1,32098 -BRDA:179,25,0,21 -BRDA:179,25,1,0 -BRF:55 -BRH:52 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/src/test.ts -FNF:0 -FNH:0 -LF:0 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/src/util.ts -FNF:0 -FNH:0 -DA:1,290 -DA:12,22 -LF:2 -LH:2 -BRDA:2,0,0,290 -BRDA:2,0,1,0 -BRF:2 -BRH:1 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/testNew/testCSVConverter.ts -FN:4,(anonymous_1) -FN:101,(anonymous_16) -FN:283,(anonymous_41) -FN:425,(anonymous_57) -FN:447,(anonymous_60) -FNF:5 -FNH:5 -FNDA:1,(anonymous_1) -FNDA:1,(anonymous_16) -FNDA:5290,(anonymous_41) -FNDA:1,(anonymous_57) -FNDA:1,(anonymous_60) -DA:1,1 -DA:2,1 -DA:4,1 -DA:5,1 -DA:8,1 -DA:9,1 -DA:15,28 -DA:16,1 -DA:26,1 -DA:28,1 -DA:29,1 -DA:43,1 -DA:61,1 -DA:62,1 -DA:73,1 -DA:74,1 -DA:84,1 -DA:89,1 -DA:90,1 -DA:91,1 -DA:92,1 -DA:107,1 -DA:116,25 -DA:117,5 -DA:118,25 -DA:125,1 -DA:131,0 -DA:132,1 -DA:133,1 -DA:136,1 -DA:143,1 -DA:144,1 -DA:145,1 -DA:157,1 -DA:158,1 -DA:160,1 -DA:170,1 -DA:171,1 -DA:172,1 -DA:186,1 -DA:187,1 -DA:188,1 -DA:197,1 -DA:198,1 -DA:199,1 -DA:201,1 -DA:214,1 -DA:215,1 -DA:229,1 -DA:231,1 -DA:245,1 -DA:246,1 -DA:255,1 -DA:257,1 -DA:275,1 -DA:279,1 -DA:288,1 -DA:293,1 -DA:294,1 -DA:303,1 -DA:308,1 -DA:309,1 -DA:310,1 -DA:312,1 -DA:316,1 -DA:318,1 -DA:326,1 -DA:327,1 -DA:328,1 -DA:330,1 -DA:333,1 -DA:335,1 -DA:340,1 -DA:341,1 -DA:347,1 -DA:348,1 -DA:350,1 -DA:358,1 -DA:359,1 -DA:365,1 -DA:367,1 -DA:369,1 -DA:376,1 -DA:377,1 -DA:384,1 -DA:397,1 -DA:398,1 -DA:405,1 -DA:417,1 -DA:418,1 -DA:426,1 -DA:438,1 -DA:439,1 -DA:441,1 -DA:449,1 -LF:95 -LH:94 -BRDA:104,0,0,1 -BRF:1 -BRH:1 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/testNew/testCSVConverter2.ts -FN:2,(anonymous_1) -FN:78,(anonymous_13) -FN:91,(anonymous_15) -FN:176,(anonymous_29) -FN:180,(anonymous_30) -FN:208,(anonymous_32) -FN:223,(anonymous_34) -FN:243,(anonymous_37) -FN:277,(anonymous_42) -FN:300,(anonymous_45) -FN:418,(anonymous_62) -FN:463,(anonymous_69) -FN:497,(anonymous_72) -FN:564,(anonymous_81) -FN:565,(anonymous_82) -FNF:15 -FNH:15 -FNDA:1,(anonymous_1) -FNDA:1,(anonymous_13) -FNDA:1,(anonymous_15) -FNDA:1,(anonymous_29) -FNDA:1,(anonymous_30) -FNDA:1,(anonymous_32) -FNDA:1,(anonymous_34) -FNDA:1,(anonymous_37) -FNDA:1,(anonymous_42) -FNDA:1,(anonymous_45) -FNDA:1,(anonymous_62) -FNDA:1,(anonymous_69) -FNDA:1,(anonymous_72) -FNDA:1,(anonymous_81) -FNDA:1,(anonymous_82) -DA:2,1 -DA:3,1 -DA:7,1 -DA:8,1 -DA:19,1 -DA:24,1 -DA:44,1 -DA:45,1 -DA:59,1 -DA:60,1 -DA:74,1 -DA:80,1 -DA:88,1 -DA:93,1 -DA:102,1 -DA:103,0 -DA:104,1 -DA:116,1 -DA:117,1 -DA:129,1 -DA:144,1 -DA:145,1 -DA:146,1 -DA:156,1 -DA:157,1 -DA:159,1 -DA:172,1 -DA:174,1 -DA:175,1 -DA:176,1 -DA:177,1 -DA:179,1 -DA:180,1 -DA:181,1 -DA:182,1 -DA:185,1 -DA:205,1 -DA:206,1 -DA:207,1 -DA:211,1 -DA:220,1 -DA:221,1 -DA:222,1 -DA:227,1 -DA:236,1 -DA:237,1 -DA:238,1 -DA:245,1 -DA:252,1 -DA:253,1 -DA:254,1 -DA:264,1 -DA:272,1 -DA:273,1 -DA:291,1 -DA:299,1 -DA:315,1 -DA:316,1 -DA:327,1 -DA:339,1 -DA:340,1 -DA:350,1 -DA:351,1 -DA:352,1 -DA:356,1 -DA:358,1 -DA:359,1 -DA:371,1 -DA:372,1 -DA:373,1 -DA:374,1 -DA:378,1 -DA:380,1 -DA:383,1 -DA:384,1 -DA:392,2 -DA:393,2 -DA:403,1 -DA:405,1 -DA:421,1 -DA:442,1 -DA:443,1 -DA:444,1 -DA:445,2 -DA:460,1 -DA:464,1 -DA:465,1 -DA:473,1 -DA:474,1 -DA:499,1 -DA:503,1 -DA:504,0 -DA:522,1 -DA:528,1 -DA:534,1 -DA:536,1 -DA:549,1 -DA:550,6 -DA:557,6 -DA:566,1 -LF:100 -LH:98 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/testNew/testCSVConverter3.ts -FNF:0 -FNH:0 -DA:1,1 -DA:2,1 -DA:3,1 -DA:5,1 -LF:4 -LH:4 -BRF:0 -BRH:0 -end_of_record -TN: -SF:/Users/kxiang/work/projects/csv2json/testNew/testErrorHandle.ts -FN:33,(anonymous_5) -FN:54,(anonymous_8) -FNF:2 -FNH:2 -FNDA:1,(anonymous_5) -FNDA:1,(anonymous_8) -DA:1,1 -DA:3,1 -DA:8,1 -DA:9,1 -DA:21,1 -DA:25,1 -DA:38,1 -DA:42,1 -DA:47,1 -DA:50,1 -DA:51,1 -DA:56,1 -LF:12 -LH:12 -BRF:0 -BRH:0 -end_of_record diff --git a/node_modules/csvtojson/coverage/lineToJson.ts.html b/node_modules/csvtojson/coverage/lineToJson.ts.html deleted file mode 100644 index f221773..0000000 --- a/node_modules/csvtojson/coverage/lineToJson.ts.html +++ /dev/null @@ -1,660 +0,0 @@ - - - - Code coverage report for lineToJson.ts - - - - - - - -
-
-

- All files lineToJson.ts -

-
-
- 93.94% - Statements - 93/99 -
-
- 91.57% - Branches - 76/83 -
-
- 100% - Functions - 14/14 -
-
- 93.94% - Lines - 93/99 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198  -1x -  -1x -  -  -1x -  -1x -118x -118x -32118x -32116x -32107x -  -  -116x -  -  -  -  -  -  -  -32118x -2x -  -  -32116x -32116x -32116x -32107x -  -9x -  -  -  -  -32116x -32116x -  -32116x -65845x -  -65845x -7x -  -65838x -  -65838x -65838x -51x -  -65838x -65838x -10x -10x -8x -  -  -  -  -  -  -65828x -75x -75x -  -65828x -65828x -  -  -  -32116x -32107x -  -9x -  -  -  -1x -  -  -  -  -  -65838x -65275x -  -563x -563x -556x -  -7x -1x -  -7x -6x -6x -6x -6x -  -  -  -1x -1x -  -  -  -  -  -  -65836x -562x -3x -  -559x -103x -1x -  -102x -  -  -456x -  -  -  -65836x -  -  -  -  -65047x -  -  -789x -  -  -  -  -75x -9x -66x -  -66x -  -66x -66x -  -  -  -  -  -  -15x -15x -1x -  -14x -  -  -  -58x -  -  -  -75x -75x -13x -  -62x -13x -49x -4x -45x -5x -  -40x -  -  -  -  -4x -4x -2x -  -2x -  -  -  -  -5x -5x -  -  -  -  - 
import { Converter } from "./Converter";
-import CSVError from "./CSVError";
-import { CellParser, ColumnParam } from "./Parameters";
-import set from "lodash/set";
-import { ParseRuntime } from "./ParseRuntime";
- 
-var numReg = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;
- 
-export default function (csvRows: string[][], conv: Converter): JSONResult[] {
-  const res: JSONResult[] = [];
-  for (let i = 0, len = csvRows.length; i < len; i++) {
-    const r = processRow(csvRows[i], conv, i);
-    if (r) {
-      res.push(r);
-    }
-  }
-  return res;
-};
-export type JSONResult = {
-  [key: string]: any
-}
- 
-function processRow(row: string[], conv: Converter, index): JSONResult | null {
- 
-  if (conv.parseParam.checkColumn && conv.parseRuntime.headers && row.length !== conv.parseRuntime.headers.length) {
-    throw (CSVError.column_mismatched(conv.parseRuntime.parsedLineNumber + index))
-  }
- 
-  const headRow = conv.parseRuntime.headers || [];
-  const resultRow = convertRowToJson(row, headRow, conv);
-  if (resultRow) {
-    return resultRow;
-  } else {
-    return null;
-  }
-}
- 
-function convertRowToJson(row: string[], headRow: string[], conv: Converter): { [key: string]: any } | null {
-  let hasValue = false;
-  const resultRow = {};
-  
-  for (let i = 0, len = row.length; i < len; i++) {
-    let item = row[i];
- 
-    if (conv.parseParam.ignoreEmpty && item === '') {
-      continue;
-    }
-    hasValue = true;
- 
-    let head = headRow[i];
-    if (!head || head === "") {
-      head = headRow[i] = "field" + (i + 1);
-    }
-    const convFunc = getConvFunc(head, i, conv);
-    if (convFunc) {
-      const convRes = convFunc(item, head, resultRow, row, i);
-      if (convRes !== undefined) {
-        setPath(resultRow, head, convRes, conv,i);
-      }
-    } else {
-      // var flag = getFlag(head, i, param);
-      // if (flag === 'omit') {
-      //   continue;
-      // }
-      if (conv.parseParam.checkType) {
-        const convertFunc = checkType(item, head, i, conv);
-        item = convertFunc(item);
-      }
-      Eif (item !== undefined) {
-        setPath(resultRow, head, item, conv,i);
-      }
-    }
-  }
-  if (hasValue) {
-    return resultRow;
-  } else {
-    return null;
-  }
-}
- 
-const builtInConv: { [key: string]: CellParser } = {
-  "string": stringType,
-  "number": numberType,
-  "omit": function () { }
-}
-function getConvFunc(head: string, i: number, conv: Converter): CellParser | null {
-  if (conv.parseRuntime.columnConv[i] !== undefined) {
-    return conv.parseRuntime.columnConv[i];
-  } else {
-    let flag = conv.parseParam.colParser[head];
-    if (flag === undefined) {
-      return conv.parseRuntime.columnConv[i] = null;
-    }
-    if (typeof flag === "object") {
-      flag = (flag as ColumnParam).cellParser || "string";
-    }
-    if (typeof flag === "string") {
-      flag = flag.trim().toLowerCase();
-      const builtInFunc = builtInConv[flag];
-      Eif (builtInFunc) {
-        return conv.parseRuntime.columnConv[i] = builtInFunc;
-      } else {
-        return conv.parseRuntime.columnConv[i] = null;
-      }
-    } else Eif (typeof flag === "function") {
-      return conv.parseRuntime.columnConv[i] = flag;
-    } else {
-      return conv.parseRuntime.columnConv[i] = null;
-    }
-  }
-}
-function setPath(resultJson: any, head: string, value: any, conv: Converter,headIdx:number) {
-  if (!conv.parseRuntime.columnValueSetter[headIdx]) {
-    if (conv.parseParam.flatKeys) {
-      conv.parseRuntime.columnValueSetter[headIdx] = flatSetter;
-    } else {
-      if (head.indexOf(".") > -1) {
-        if (conv.parseParam.colParser[head] && (conv.parseParam.colParser[head] as ColumnParam).flat) {
-          conv.parseRuntime.columnValueSetter[headIdx] = flatSetter;
-        } else {
-          conv.parseRuntime.columnValueSetter[headIdx] = jsonSetter;
-        }
-      } else {
-        conv.parseRuntime.columnValueSetter[headIdx] = flatSetter;
-      }
-    }
-  }
-  conv.parseRuntime.columnValueSetter[headIdx](resultJson, head, value);
-  // flatSetter(resultJson, head, value);
- 
-}
-function flatSetter(resultJson: any, head: string, value: any) {
-  resultJson[head] = value;
-}
-function jsonSetter(resultJson: any, head: string, value: any) {
-  set(resultJson, head, value);
-}
- 
- 
-function checkType(item: string, head: string, headIdx: number, conv: Converter): Function {
-  if (conv.parseRuntime.headerType[headIdx]) {
-    return conv.parseRuntime.headerType[headIdx];
-  } else Iif (head.indexOf('number#!') > -1) {
-    return conv.parseRuntime.headerType[headIdx] = numberType;
-  } else Iif (head.indexOf('string#!') > -1) {
-    return conv.parseRuntime.headerType[headIdx] = stringType;
-  } else Eif (conv.parseParam.checkType) {
-    return conv.parseRuntime.headerType[headIdx] = dynamicType;
-  } else {
-    return conv.parseRuntime.headerType[headIdx] = stringType;
-  }
-}
- 
-function numberType(item) {
-  var rtn = parseFloat(item);
-  if (isNaN(rtn)) {
-    return item;
-  }
-  return rtn;
-}
- 
-function stringType(item: string): string {
-  return item.toString();
-}
- 
-function dynamicType(item) {
-  var trimed = item.trim();
-  if (trimed === "") {
-    return stringType(item);
-  }
-  if (numReg.test(trimed)) {
-    return numberType(item);
-  } else if (trimed.length === 5 && trimed.toLowerCase() === "false" || trimed.length === 4 && trimed.toLowerCase() === "true") {
-    return booleanType(item);
-  } else if (trimed[0] === "{" && trimed[trimed.length - 1] === "}" || trimed[0] === "[" && trimed[trimed.length - 1] === "]") {
-    return jsonType(item);
-  } else {
-    return stringType(item);
-  }
-}
- 
-function booleanType(item) {
-  var trimed = item.trim();
-  if (trimed.length === 5 && trimed.toLowerCase() === "false") {
-    return false;
-  } else {
-    return true;
-  }
-}
- 
-function jsonType(item) {
-  try {
-    return JSON.parse(item);
-  } catch (e) {
-    return item;
-  }
-}
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/prettify.css b/node_modules/csvtojson/coverage/prettify.css deleted file mode 100644 index b317a7c..0000000 --- a/node_modules/csvtojson/coverage/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/node_modules/csvtojson/coverage/prettify.js b/node_modules/csvtojson/coverage/prettify.js deleted file mode 100644 index ef51e03..0000000 --- a/node_modules/csvtojson/coverage/prettify.js +++ /dev/null @@ -1 +0,0 @@ -window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/node_modules/csvtojson/coverage/rowSplit.test.ts.html b/node_modules/csvtojson/coverage/rowSplit.test.ts.html deleted file mode 100644 index 3c8c692..0000000 --- a/node_modules/csvtojson/coverage/rowSplit.test.ts.html +++ /dev/null @@ -1,399 +0,0 @@ - - - - Code coverage report for rowSplit.test.ts - - - - - - - -
-
-

- All files rowSplit.test.ts -

-
-
- 100% - Statements - 31/31 -
-
- 100% - Branches - 0/0 -
-
- 100% - Functions - 0/0 -
-
- 100% - Lines - 31/31 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -1111x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -4x -1x -  -  -  -  -  -1x -1x -1x -  -  -  -  -1x -1x -  -1x -  -  -  -1x -1x -  -1x -  -  -  -  -1x -  -  -  -  -1x -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -1x -1x -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -1x -1x -  -  -  -  -  -1x -  -1x -  -  -  -1x -3x -1x -  -1x -  -  -  -1x -1x -  -1x - 
import { RowSplit, MultipleRowResult, RowSplitResult } from "./rowSplit";
-import { Converter } from "./Converter";
-const assert = require("assert");
- 
-describe("Test delimiters", function () {
-  const getDelimiter = (str, opt: { delimiter: string | string[] }): string => {
-    return RowSplit.prototype["getDelimiter"].call({
-      conv: {
-        parseParam: {
-          delimiter: opt.delimiter
-        }
-      }
-    }, str);
-  }
- 
-  it("should return the explicitly specified delimiter", function () {
-    var delimiter = ";";
-    var rowStr = "a;b;c";
-    var returnedDelimiter = getDelimiter(rowStr, { delimiter: ";" });
-    assert.equal(returnedDelimiter, delimiter);
-  });
- 
-  it("should return the autodetected delimiter if 'auto' specified", function () {
-    var rowStr = "a;b;c";
-    var returnedDelimiter = getDelimiter(rowStr, { delimiter: "auto" });
-    assert(returnedDelimiter === ";");
-  });
- 
-  it("should return the ',' delimiter if delimiter cannot be specified, in case of 'auto'", function () {
-    var rowStr = "abc";
-    var returnedDelimiter = getDelimiter(rowStr, { delimiter: "auto" });
-    assert(returnedDelimiter === ",");
-  });
- 
-  it("should accetp an array with potential delimiters", function () {
-    var rowStr = "a$b$c";
-    var returnedDelimiter = getDelimiter(rowStr, { delimiter: [",", ";", "$"] });
-    assert(returnedDelimiter === '$');
-  });
-});
- 
-describe("ParseMultiLine function", function () {
-  const rowSplit = new RowSplit(new Converter());
-  const func = (lines: string[]): MultipleRowResult => {
-    return rowSplit.parseMultiLines(lines);
-  }
-  it("should convert lines to csv lines", function () {
-    var lines = [
-      "a,b,c,d",
-      "hello,world,csvtojson,abc",
-      "1,2,3,4"
-    ];
-    var res = func(lines);
-    assert.equal(res.rowsCells.length, 3);
-    assert.equal(res.partial, "");
-  });
- 
-  it("should process line breaks", function () {
-    var lines = [
-      "a,b,c",
-      '15",hello,"ab',
-      "cde\"",
-      "\"b\"\"b\",cc,dd"
-    ];
-    var res = func(lines);
-    assert.equal(res.rowsCells.length, 3);
-    assert.equal(res.rowsCells[1][0], "15\"");
-    assert.equal(res.rowsCells[1][2], "ab\ncde");
-    assert.equal(res.rowsCells[2][0], "b\"b");
-    assert.equal(res.partial, "");
-  });
- 
-  it("should return partial if line not closed", function () {
-    var lines = [
-      "a,b,c",
-      '15",hello,"ab',
-      "d,e,f"
-    ];
-    var res = func(lines);
-    assert.equal(res.rowsCells.length, 1);
-    assert.equal(res.partial, "15\",hello,\"ab\nd,e,f\n");
-  });
-});
- 
-describe("RowSplit.parse function", function () {
-  const rowSplit = new RowSplit(new Converter());
-  const func = (str): RowSplitResult => {
-    return rowSplit.parse(str);
-  }
-  it("should split complete csv line", function () {
-    var str = "hello,world,csvtojson,awesome";
-    var res = func(str);
-    assert.equal(res.cells.length, 4);
-    assert.equal(res.closed, true);
-  });
- 
-  it("should split incomplete csv line", function () {
-    var str = "hello,world,\"csvtojson,awesome";
-    var res = func(str);
-    assert.equal(res.closed, false);
-  });
- 
-  it("should allow multiple line", function () {
-    var str = "\"he\"llo\",world,\"csvtojson,a\"\nwesome\"";
-    var res = func(str);
-    assert.equal(res.closed, true);
-    assert.equal(res.cells[2], 'csvtojson,a"\nwesome');
-  });
- 
-});
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/rowSplit.ts.html b/node_modules/csvtojson/coverage/rowSplit.ts.html deleted file mode 100644 index 8649604..0000000 --- a/node_modules/csvtojson/coverage/rowSplit.ts.html +++ /dev/null @@ -1,681 +0,0 @@ - - - - Code coverage report for rowSplit.ts - - - - - - - -
-
-

- All files rowSplit.ts -

-
-
- 100% - Statements - 119/119 -
-
- 94.74% - Branches - 54/57 -
-
- 100% - Functions - 11/11 -
-
- 100% - Lines - 118/118 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 -163 -164 -165 -166 -167 -168 -169 -170 -171 -172 -173 -174 -175 -176 -177 -178 -179 -180 -181 -182 -183 -184 -185 -186 -187 -188 -189 -190 -191 -192 -193 -194 -195 -196 -197 -198 -199 -200 -201 -202 -203 -204 -205  -  -  -1x -1x -  -1x -1x -  -  -  -88x -88x -88x -1x -32226x -78x -  -32226x -  -88x -88x -88x -88x -  -1x -32234x -8x -  -32226x -32226x -32226x -32226x -4x -  -  -32226x -2x -2x -  -32226x -32226x -32226x -3x -3x -9x -  -  -3x -  -32223x -  -  -  -1x -32223x -32223x -32223x -32223x -66882x -66882x -66715x -  -66882x -66882x -66733x -173x -173x -113x -113x -113x -113x -  -60x -60x -60x -  -  -66560x -66548x -  -66560x -66560x -  -  -149x -26x -26x -26x -26x -26x -26x -  -26x -26x -  -123x -  -  -  -  -  -  -  -  -32223x -  -1x -  -8x -6x -2x -1x -  -1x -  -7x -7x -7x -33x -33x -13x -13x -  -  -7x -  -1x -66733x -66733x -66733x -  -  -  -1x -322x -322x -322x -316x -  -322x -322x -322x -223x -223x -  -322x -  -  -  -  -  -  -  -  -  -  -  -  -1x -139x -139x -26x -  -139x -  -139x -  -1x -123x -123x -123x -32163x -32163x -32163x -32134x -20x -  -32114x -  -  -32134x -  -29x -  -  -123x -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import { CSVParseParam } from "./Parameters";
-import { Converter } from "./Converter";
-import { Fileline } from "./fileline";
-import getEol from "./getEol";
-import { filterArray } from "./util";
- 
-const defaulDelimiters = [",", "|", "\t", ";", ":"];
-export class RowSplit {
-  private quote: string;
-  private trim: boolean;
-  private escape: string;
-  private cachedRegExp: { [key: string]: RegExp } = {};
-  private delimiterEmitted = false;
-  private _needEmitDelimiter?: boolean = undefined;
-  private get needEmitDelimiter() {
-    if (this._needEmitDelimiter === undefined) {
-      this._needEmitDelimiter = this.conv.listeners("delimiter").length > 0;
-    }
-    return this._needEmitDelimiter;
-  }
-  constructor(private conv: Converter) {
-    this.quote = conv.parseParam.quote;
-    this.trim = conv.parseParam.trim;
-    this.escape = conv.parseParam.escape;
-  }
-  parse(fileline: Fileline): RowSplitResult {
-    if (fileline === "") {
-      return { cells: [], closed: true };
-    }
-    const quote = this.quote;
-    const trim = this.trim;
-    const escape = this.escape;
-    if (this.conv.parseRuntime.delimiter instanceof Array || this.conv.parseRuntime.delimiter.toLowerCase() === "auto") {
-      this.conv.parseRuntime.delimiter = this.getDelimiter(fileline);
- 
-    }
-    if (this.needEmitDelimiter && !this.delimiterEmitted) {
-      this.conv.emit("delimiter", this.conv.parseRuntime.delimiter);
-      this.delimiterEmitted = true;
-    }
-    const delimiter = this.conv.parseRuntime.delimiter;
-    const rowArr = fileline.split(delimiter);
-    if (quote === "off") {
-      Eif (trim){
-        for (let i =0;i<rowArr.length;i++){
-          rowArr[i]=rowArr[i].trim();
-        }
-      }
-      return { cells: rowArr, closed: true };
-    } else {
-      return this.toCSVRow(rowArr, trim, quote, delimiter);
-    }
- 
-  }
-  private toCSVRow(rowArr: string[], trim: boolean, quote: string, delimiter: string): RowSplitResult {
-    const row: string[] = [];
-    let inquote = false;
-    let quoteBuff = '';
-    for (let i = 0, rowLen = rowArr.length; i < rowLen; i++) {
-      let e = rowArr[i];
-      if (!inquote && trim) {
-        e = e.trimLeft();
-      }
-      const len = e.length;
-      if (!inquote) {
-        if (this.isQuoteOpen(e)) { //quote open
-          e = e.substr(1);
-          if (this.isQuoteClose(e)) { //quote close
-            e = e.substring(0, e.lastIndexOf(quote));
-            e = this.escapeQuote(e);
-            row.push(e);
-            continue;
-          } else {
-            inquote = true;
-            quoteBuff += e;
-            continue;
-          }
-        } else {
-          if (trim) {
-            e = e.trimRight();
-          }
-          row.push(e);
-          continue;
-        }
-      } else { //previous quote not closed
-        if (this.isQuoteClose(e)) { //close double quote
-          inquote = false;
-          e = e.substr(0, len - 1);
-          quoteBuff += delimiter + e;
-          quoteBuff = this.escapeQuote(quoteBuff);
-          Eif (trim) {
-            quoteBuff = quoteBuff.trimRight();
-          }
-          row.push(quoteBuff);
-          quoteBuff = "";
-        } else {
-          quoteBuff += delimiter + e;
-        }
-      }
-    }
- 
-    // if (!inquote && param._needFilterRow) {
-    //   row = filterRow(row, param);
-    // }
- 
-    return { cells: row, closed: !inquote };
-  }
-  private getDelimiter(fileline: Fileline): string {
-    let checker;
-    if (this.conv.parseParam.delimiter === "auto") {
-      checker = defaulDelimiters;
-    } else if (this.conv.parseParam.delimiter instanceof Array) {
-      checker = this.conv.parseParam.delimiter;
-    } else {
-      return this.conv.parseParam.delimiter;
-    }
-    let count = 0;
-    let rtn = ",";
-    checker.forEach(function (delim) {
-      const delimCount = fileline.split(delim).length;
-      if (delimCount > count) {
-        rtn = delim;
-        count = delimCount;
-      }
-    });
-    return rtn;
-  }
-  private isQuoteOpen(str: string): boolean {
-    const quote = this.quote;
-    const escape = this.escape;
-    return str[0] === quote && (
-      str[1] !== quote ||
-      str[1] === escape && (str[2] === quote || str.length === 2));
-  }
-  private isQuoteClose(str: string): boolean {
-    const quote = this.quote;
-    const escape = this.escape;
-    if (this.conv.parseParam.trim) {
-      str = str.trimRight();
-    }
-    let count = 0;
-    let idx = str.length - 1;
-    while (str[idx] === quote || str[idx] === escape) {
-      idx--;
-      count++;
-    }
-    return count % 2 !== 0;
-  }
- 
-  // private twoDoubleQuote(str: string): string {
-  //   var twoQuote = this.quote + this.quote;
-  //   var curIndex = -1;
-  //   while ((curIndex = str.indexOf(twoQuote, curIndex)) > -1) {
-  //     str = str.substring(0, curIndex) + str.substring(++curIndex);
-  //   }
-  //   return str;
-  // }
- 
- 
-  private escapeQuote(segment: string): string {
-    const key = "es|" + this.quote + "|" + this.escape;
-    if (this.cachedRegExp[key] === undefined) {
-      this.cachedRegExp[key] = new RegExp('\\' + this.escape + '\\' + this.quote, 'g');
-    }
-    const regExp = this.cachedRegExp[key];
-    // console.log(regExp,segment);
-    return segment.replace(regExp, this.quote);
-  }
-  parseMultiLines(lines: Fileline[]): MultipleRowResult {
-    const csvLines: string[][] = [];
-    let left = "";
-    while (lines.length) {
-      const line = left + lines.shift();
-      const row = this.parse(line);
-      if (row.closed || this.conv.parseParam.alwaysSplitAtEOL) {
-        if (this.conv.parseRuntime.selectedColumns) {
-          csvLines.push(filterArray(row.cells, this.conv.parseRuntime.selectedColumns));
-        } else {
-          csvLines.push(row.cells);
-        }
- 
-        left = "";
-      } else {
-        left = line + (getEol(line, this.conv.parseRuntime) || "\n");
-      }
-    }
-    return { rowsCells: csvLines, partial: left };
-  }
-}
-export interface MultipleRowResult {
-  rowsCells: string[][];
-  partial: string;
-}
-export interface RowSplitResult {
-  /**
-   * csv row array. ["a","b","c"]
-   */
-  cells: string[],
-  /**
-   * if the passed fileline is a complete row
-   */
-  closed: boolean
-}
- 
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/sort-arrow-sprite.png b/node_modules/csvtojson/coverage/sort-arrow-sprite.png deleted file mode 100644 index 03f704a609c6fd0dbfdac63466a7d7c958b5cbf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jii$m5978H@?Fn+^JD|Y9yzj{W`447Gxa{7*dM7nnnD-Lb z6^}Hx2)'; - } - } - return cols; - } - // attaches a data attribute to every tr element with an object - // of data values keyed by column name - function loadRowData(tableRow) { - var tableCols = tableRow.querySelectorAll('td'), - colNode, - col, - data = {}, - i, - val; - for (i = 0; i < tableCols.length; i += 1) { - colNode = tableCols[i]; - col = cols[i]; - val = colNode.getAttribute('data-value'); - if (col.type === 'number') { - val = Number(val); - } - data[col.key] = val; - } - return data; - } - // loads all row data - function loadData() { - var rows = getTableBody().querySelectorAll('tr'), - i; - - for (i = 0; i < rows.length; i += 1) { - rows[i].data = loadRowData(rows[i]); - } - } - // sorts the table using the data for the ith column - function sortByIndex(index, desc) { - var key = cols[index].key, - sorter = function (a, b) { - a = a.data[key]; - b = b.data[key]; - return a < b ? -1 : a > b ? 1 : 0; - }, - finalSorter = sorter, - tableBody = document.querySelector('.coverage-summary tbody'), - rowNodes = tableBody.querySelectorAll('tr'), - rows = [], - i; - - if (desc) { - finalSorter = function (a, b) { - return -1 * sorter(a, b); - }; - } - - for (i = 0; i < rowNodes.length; i += 1) { - rows.push(rowNodes[i]); - tableBody.removeChild(rowNodes[i]); - } - - rows.sort(finalSorter); - - for (i = 0; i < rows.length; i += 1) { - tableBody.appendChild(rows[i]); - } - } - // removes sort indicators for current column being sorted - function removeSortIndicators() { - var col = getNthColumn(currentSort.index), - cls = col.className; - - cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); - col.className = cls; - } - // adds sort indicators for current column being sorted - function addSortIndicators() { - getNthColumn(currentSort.index).className += currentSort.desc ? ' sorted-desc' : ' sorted'; - } - // adds event listeners for all sorter widgets - function enableUI() { - var i, - el, - ithSorter = function ithSorter(i) { - var col = cols[i]; - - return function () { - var desc = col.defaultDescSort; - - if (currentSort.index === i) { - desc = !currentSort.desc; - } - sortByIndex(i, desc); - removeSortIndicators(); - currentSort.index = i; - currentSort.desc = desc; - addSortIndicators(); - }; - }; - for (i =0 ; i < cols.length; i += 1) { - if (cols[i].sortable) { - // add the click event handler on the th so users - // dont have to click on those tiny arrows - el = getNthColumn(i).querySelector('.sorter').parentElement; - if (el.addEventListener) { - el.addEventListener('click', ithSorter(i)); - } else { - el.attachEvent('onclick', ithSorter(i)); - } - } - } - } - // adds sorting functionality to the UI - return function () { - if (!getTable()) { - return; - } - cols = loadColumns(); - loadData(cols); - addSortIndicators(); - enableUI(); - }; -})(); - -window.addEventListener('load', addSorting); diff --git a/node_modules/csvtojson/coverage/test.ts.html b/node_modules/csvtojson/coverage/test.ts.html deleted file mode 100644 index 84aa2ed..0000000 --- a/node_modules/csvtojson/coverage/test.ts.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - Code coverage report for test.ts - - - - - - - -
-
-

- All files test.ts -

-
-
- 0% - Statements - 0/0 -
-
- 0% - Branches - 0/0 -
-
- 0% - Functions - 0/0 -
-
- 0% - Lines - 0/0 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5  -  -  -  - 
import a from "./index";
- 
- 
-// a("sss","CCc");
- 
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/coverage/util.ts.html b/node_modules/csvtojson/coverage/util.ts.html deleted file mode 100644 index d173301..0000000 --- a/node_modules/csvtojson/coverage/util.ts.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - Code coverage report for util.ts - - - - - - - -
-
-

- All files util.ts -

-
-
- 75% - Statements - 3/4 -
-
- 25% - Branches - 1/4 -
-
- 100% - Functions - 0/0 -
-
- 66.67% - Lines - 2/3 -
-
-

- Press n or j to go to the next uncovered block, b, p or k for the previous block. -

-
-
-

-
-
1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25322x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -25x -  -  -  -  -  - 
export function bufFromString(str: string): Buffer {
-  const length = Buffer.byteLength(str);
-  const buffer = Buffer.allocUnsafe
-    ? Buffer.allocUnsafe(length)
-    : new Buffer(length);
-  buffer.write(str);
-  return buffer;
-}
- 
-export function emptyBuffer(): Buffer{
-  const buffer = Buffer.allocUnsafe
-    ? Buffer.allocUnsafe(0)
-    : new Buffer(0);
-  return buffer;
-}
- 
-export function filterArray(arr: any[], filter: number[]): any[] {
-  const rtn: any[] = [];
-  for (let i = 0; i < arr.length; i++) {
-    if (filter.indexOf(i) > -1) {
-      rtn.push(arr[i]);
-    }
-  }
-  return rtn;
-}
-
-
- - - - - - - - diff --git a/node_modules/csvtojson/index.d.ts b/node_modules/csvtojson/index.d.ts deleted file mode 100644 index 0107e38..0000000 --- a/node_modules/csvtojson/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import csv=require("./v2"); - -export=csv; - diff --git a/node_modules/csvtojson/index.js b/node_modules/csvtojson/index.js deleted file mode 100644 index 6a9e64c..0000000 --- a/node_modules/csvtojson/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports=require("./v2"); \ No newline at end of file diff --git a/node_modules/csvtojson/package.json b/node_modules/csvtojson/package.json deleted file mode 100644 index 93e53a3..0000000 --- a/node_modules/csvtojson/package.json +++ /dev/null @@ -1,315 +0,0 @@ -{ - "name": "csvtojson", - "description": "A tool concentrating on converting csv data to JSON with customised parser supporting", - "author": "Keyang Xiang ", - "homepage": "https://github.com/Keyang/node-csvtojson", - "bugs": "https://github.com/Keyang/node-csvtojson/issues", - "repository": { - "type": "git", - "url": "https://github.com/Keyang/node-csvtojson.git" - }, - "contributors": [ - { - "name": "Dane Petersen", - "email": null, - "url": "https://github.com/thegreatsunra", - "contributions": 1, - "additions": 18920, - "deletions": 8429, - "hireable": null - }, - { - "name": "Jessica Good", - "email": null, - "url": "https://github.com/jessicagood", - "contributions": 1, - "additions": 8, - "deletions": 5, - "hireable": null - }, - { - "name": null, - "email": null, - "url": "https://github.com/nbelakovski", - "contributions": 2, - "additions": 2, - "deletions": 2, - "hireable": null - }, - { - "name": "Robert Porter", - "email": null, - "url": "https://github.com/colarob", - "contributions": 1, - "additions": 64, - "deletions": 21, - "hireable": null - }, - { - "name": "Dimitri Kennedy", - "email": null, - "url": "https://github.com/roodboi", - "contributions": 2, - "additions": 3, - "deletions": 3, - "hireable": null - }, - { - "name": "José Expósito", - "email": null, - "url": "https://github.com/JoseExposito", - "contributions": 1, - "additions": 9, - "deletions": 3, - "hireable": null - }, - { - "name": "Daniel Cohen", - "email": null, - "url": "https://github.com/dcohenb", - "contributions": 1, - "additions": 1, - "deletions": 6, - "hireable": true - }, - { - "name": "Richard Pringle", - "email": null, - "url": "https://github.com/richardpringle", - "contributions": 1, - "additions": 1, - "deletions": 1, - "hireable": null - }, - { - "name": "Bert Verhelst", - "email": null, - "url": "https://github.com/bertyhell", - "contributions": 1, - "additions": 17, - "deletions": 0, - "hireable": null - }, - { - "name": null, - "email": null, - "url": "https://github.com/jondayft", - "contributions": 1, - "additions": 18, - "deletions": 0, - "hireable": null - }, - { - "name": "Bruce Johnson", - "email": null, - "url": "https://github.com/brucejo75", - "contributions": 1, - "additions": 36, - "deletions": 1, - "hireable": null - }, - { - "name": "Jimi Ford", - "email": null, - "url": "https://github.com/JimiHFord", - "contributions": 1, - "additions": 5, - "deletions": 5, - "hireable": true - }, - { - "name": "Alec Fenichel", - "email": null, - "url": "https://github.com/fenichelar", - "contributions": 1, - "additions": 1, - "deletions": 1, - "hireable": true - }, - { - "name": "Hocine Moukaideche", - "email": null, - "url": "https://github.com/Off76", - "contributions": 1, - "additions": 1, - "deletions": 1, - "hireable": true - }, - { - "name": "Blake Blackshear", - "email": null, - "url": "https://github.com/blakeblackshear", - "contributions": 2, - "additions": 8, - "deletions": 8, - "hireable": null - }, - { - "name": "Amila Welihinda", - "email": null, - "url": "https://github.com/amilajack", - "contributions": 1, - "additions": 2, - "deletions": 1, - "hireable": true - }, - { - "name": "Zsolt R. Molnar", - "email": null, - "url": "https://github.com/molnarzs", - "contributions": 1, - "additions": 40, - "deletions": 2, - "hireable": true - }, - { - "name": "Ionică Bizău (Johnny B.)", - "email": null, - "url": "https://github.com/IonicaBizau", - "contributions": 1, - "additions": 98, - "deletions": 86, - "hireable": null - }, - { - "name": "Keita Akutsu", - "email": null, - "url": "https://github.com/kakts", - "contributions": 4, - "additions": 821, - "deletions": 784, - "hireable": true - }, - { - "name": null, - "email": null, - "url": "https://github.com/markwithers", - "contributions": 1, - "additions": 1, - "deletions": 1, - "hireable": null - }, - { - "name": "Trang", - "email": null, - "url": "https://github.com/trangtungn", - "contributions": 1, - "additions": 6, - "deletions": 1, - "hireable": true - }, - { - "name": "Keyang Xiang", - "email": null, - "url": "https://github.com/Keyang", - "contributions": 141, - "additions": 70357, - "deletions": 66412, - "hireable": null - }, - { - "name": "Jeff Johnson", - "email": null, - "url": "https://github.com/jeffcjohnson", - "contributions": 1, - "additions": 1, - "deletions": 1, - "hireable": null - }, - { - "name": "Sean Lang", - "email": null, - "url": "https://github.com/slang800", - "contributions": 2, - "additions": 2, - "deletions": 1, - "hireable": true - }, - { - "name": "Matthias Lienau", - "email": null, - "url": "https://github.com/atufkas", - "contributions": 9, - "additions": 74, - "deletions": 45, - "hireable": null - }, - { - "name": "Ron Korving", - "email": null, - "url": "https://github.com/ronkorving", - "contributions": 3, - "additions": 3, - "deletions": 3, - "hireable": null - } - ], - "version": "2.0.10", - "keywords": [ - "csv", - "csv parser", - "parse csv", - "csvtojson", - "json", - "csv to json", - "csv convert", - "tojson", - "convert csv to json", - "csv-json" - ], - "bin": { - "csvtojson": "./bin/csvtojson" - }, - "license": "MIT", - "engines": { - "node": ">=4.0.0" - }, - "devDependencies": { - "@types/bluebird": "^3.5.20", - "@types/mocha": "^5.2.0", - "@types/node": "^10.0.1", - "babel-plugin-syntax-dynamic-import": "^6.18.0", - "coveralls": "^3.0.1", - "minimist": "^1.2.0", - "mocha": "^5.1.1", - "nyc": "^11.7.3", - "sinon": "^3.2.3", - "ts-node": "^6.0.3", - "typescript": "^2.8.3", - "uglifyjs-webpack-plugin": "^1.2.7", - "webpack": "^4.16.4", - "webpack-cli": "^3.1.0" - }, - "dependencies": { - "bluebird": "^3.5.1", - "lodash": "^4.17.3", - "strip-bom": "^2.0.0" - }, - "nyc": { - "extension": [ - ".ts", - ".tsx" - ], - "include": [ - "./src/**/*.ts" - ], - "all": true - }, - "scripts": { - "dev": "tsc -w", - "build": "rm -Rf ./v2 && tsc && npm run build:browser && npm run build:browser:window", - "build:browser": "webpack --config ./webpack.config.js", - "build:browser:window": "webpack --config ./webpack.config.js --output-library-target=window --output-library=csv --output-filename=csvtojson.min.js", - "test": "rm -Rf .ts-node && TS_NODE_CACHE_DIRECTORY=.ts-node mocha -r ts-node/register src/**/*.test.ts ./test/*.ts -R spec", - "travis": "nyc --reporter lcov mocha -r ts-node/register src/**/*.test.ts ./test/*.ts -R spec", - "test:debug": "mocha debug -r ts-node/register src/**/*.test.ts ./test/*.ts -R spec", - "test:function": "mocha -r ts-node/register test/**/*.ts", - "test-all": "mocha ./test -R spec && CSV_WORKER=3 mocha ./test -R spec ", - "test:unit": "mocha -r ts-node/register src/**/*.ts", - "test:all:debug": "mocha debug ./testNew -R spec", - "coverage": "nyc --reporter html mocha -r ts-node/register src/**/*.test.ts ./test/*.ts -R spec", - "coveralls": "cat ./coverage/lcov.info | ./node_modules/.bin/coveralls" - }, - "browser": "./browser/browser.js", - "main": "./v2/index.js" -} diff --git a/node_modules/csvtojson/readme-old.md b/node_modules/csvtojson/readme-old.md deleted file mode 100644 index 6f7a009..0000000 --- a/node_modules/csvtojson/readme-old.md +++ /dev/null @@ -1,914 +0,0 @@ -[![Build Status](https://travis-ci.org/Keyang/node-csvtojson.svg?branch=master)](https://travis-ci.org/Keyang/node-csvtojson) - -# CSVTOJSON -All you need nodejs csv to json converter. -* Large CSV data -* Command Line Tool and Node.JS Lib -* Complex/nested JSON -* Easy Customised Parser -* Stream based -* multi CPU core support -* Easy Usage -* more! - -# Demo - -[Here](http://keyangxiang.com/csvtojson/) is a free online csv to json service ultilising latest csvtojson module. - -## Menu -* [Installation](#installation) -* [Usage](#usage) - * [Library](#library) - * [Convert from a file](#from-file) - * [Convert from a web resource / Readable stream](#from-web) - * [Convert from CSV string](#from-string) -* [Parameters](#params) -* [Result Transform](#result-transform) - * [Synchronouse Transformer](#synchronouse-transformer) - * [Asynchronouse Transformer](#asynchronouse-transformer) - * [Convert to other data type](#convert-to-other-data-type) -* [Hooks](#hooks) -* [Events](#events) -* [Flags](#flags) -* [Big CSV File Streaming](#big-csv-file) -* [Process Big CSV File in CLI](#convert-big-csv-file-with-command-line-tool) -* [Parse String](#parse-string) -* [Empowered JSON Parser](#empowered-json-parser) -* [Field Type](#field-type) -* [Multi-Core / Fork Process](#multi-cpu-core) -* [Header Configuration](#header-configuration) -* [Error Handling](#error-handling) -* [Customised Parser](#parser) -* [Stream Options](#stream-options) -* [Change Log](#change-log) - -GitHub: https://github.com/Keyang/node-csvtojson - -## Installation - ->npm install -g csvtojson - ->npm install csvtojson --save - -## Usage - -### library - -#### From File - -You can use File stream - -```js -//Converter Class -var Converter = require("csvtojson").Converter; -var converter = new Converter({}); - -//end_parsed will be emitted once parsing finished -converter.on("end_parsed", function (jsonArray) { - console.log(jsonArray); //here is your result jsonarray -}); - -//read from file -require("fs").createReadStream("./file.csv").pipe(converter); -``` - -Or use fromFile convenient function - -```js -//Converter Class -var Converter = require("csvtojson").Converter; -var converter = new Converter({}); -converter.fromFile("./file.csv",function(err,result){ - -}); -``` - -#### From Web - -To convert any CSV data from readable stream just simply pipe in the data. - -```js -//Converter Class -var Converter = require("csvtojson").Converter; -var converter = new Converter({constructResult:false}); //for big csv data - -//record_parsed will be emitted each csv row being processed -converter.on("record_parsed", function (jsonObj) { - console.log(jsonObj); //here is your result json object -}); - -require("request").get("http://csvwebserver").pipe(converter); - -``` - -#### From String - -```js -var Converter = require("csvtojson").Converter; -var converter = new Converter({}); -converter.fromString(csvString, function(err,result){ - //your code here -}); -``` - -### Command Line Tools - ->csvtojson - -Example - ->csvtojson ./myCSVFile - -Or use pipe: - ->cat myCSVFile | csvtojson - -Check current version: - ->csvtojson version - -Advanced usage with parameters support, check help: - ->csvtojson --help - -# Params - -The constructor of csv Converter allows parameters: - -```js -var converter=new require("csvtojson").Converter({ - constructResult:false, - workerNum:4, - noheader:true -}); -``` - -Following parameters are supported: - -* **constructResult**: true/false. Whether to construct final json object in memory which will be populated in "end_parsed" event. Set to false if deal with huge csv data. default: true. -* **delimiter**: delimiter used for seperating columns. Use "auto" if delimiter is unknown in advance, in this case, delimiter will be auto-detected (by best attempt). Use an array to give a list of potential delimiters e.g. [",","|","$"]. default: "," -* **quote**: If a column contains delimiter, it is able to use quote character to surround the column content. e.g. "hello, world" wont be split into two columns while parsing. Set to "off" will ignore all quotes. default: " (double quote) -* **trim**: Indicate if parser trim off spaces surrounding column content. e.g. " content " will be trimmed to "content". Default: true -* **checkType**: This parameter turns on and off weather check field type. default is true. See [Field type](#field-type) -* **toArrayString**: Stringify the stream output to JSON array. This is useful when pipe output to a file which expects stringified JSON array. default is false and only stringified JSON (without []) will be pushed to downstream. -* **ignoreEmpty**: Ignore the empty value in CSV columns. If a column value is not giving, set this to true to skip them. Defalut: false. -* **workerNum**: Number of worker processes. The worker process will use multi-cores to help process CSV data. Set to number of Core to improve the performance of processing large csv file. Keep 1 for small csv files. Default 1. -* **fork(Deprecated, same as workerNum=2)**: Use another CPU core to process the CSV stream. -* **noheader**:Indicating csv data has no header row and first row is data row. Default is false. See [header configuration](#header-configuration) -* **headers**: An array to specify the headers of CSV data. If --noheader is false, this value will override CSV header row. Default: null. Example: ["my field","name"]. See [header configuration](#header-configuration) -* **flatKeys**: Don't interpret dots (.) and square brackets in header fields as nested object or array identifiers at all (treat them like regular characters for JSON field identifiers). Default: false. -* **maxRowLength**: the max character a csv row could have. 0 means infinite. If max number exceeded, parser will emit "error" of "row_exceed". if a possibly corrupted csv data provided, give it a number like 65535 so the parser wont consume memory. default: 0 -* **checkColumn**: whether check column number of a row is the same as headers. If column number mismatched headers number, an error of "mismatched_column" will be emitted.. default: false -* **eol**: End of line character. If omitted, parser will attempt retrieve it from first chunk of CSV data. If no valid eol found, then operation system eol will be used. -* **escape**: escape character used in quoted column. Default is double quote (") according to RFC4108. Change to back slash (\) or other chars for your own case. - -All parameters can be used in Command Line tool. see - -``` -csvtojson --help -``` - -# Result Transform - -To transform JSON result, (e.g. change value of one column), just simply add 'transform handler'. - -## Synchronouse transformer - -```js -var Converter=require("csvtojson").Converter; -var csvConverter=new Converter({}); -csvConverter.transform=function(json,row,index){ - json["rowIndex"]=index; - /* some other examples: - delete json["myfield"]; //remove a field - json["dateOfBirth"]=new Date(json["dateOfBirth"]); // convert a field type - */ -}; -csvConverter.fromString(csvString,function(err,result){ - //all result rows will add a field 'rowIndex' indicating the row number of the csv data: - /* - [{ - field1:value1, - rowIndex: 0 - }] - */ -}); -``` - -As shown in example above, it is able to apply any changes to the result json which will be pushed to down stream and "record_parsed" event. - -## Asynchronouse Transformer - -Asynchronouse transformation can be achieve either through "record_parsed" event or creating a Writable stream. - -### Use record_parsed - -To transform data asynchronously, it is suggested to use csvtojson with [Async Queue](https://github.com/caolan/async#queue). - -This mainly is used when transformation of each csv row needs be mashed with data retrieved from external such as database / server / file system. - -However this approach will **not** change the json result pushed to downstream. - -Here is an example: - -```js -var Conv=require("csvtojson").Converter; -var async=require("async"); -var rs=require("fs").createReadStream("path/to/csv"); // or any readable stream to csv data. -var q=async.queue(function(json,callback){ - //process the json asynchronously. - require("request").get("http://myserver/user/"+json.userId,function(err,user){ - //do the data mash here - json.user=user; - callback(); - }); -},10);//10 concurrent worker same time -q.saturated=function(){ - rs.pause(); //if queue is full, it is suggested to pause the readstream so csvtojson will suspend populating json data. It is ok to not to do so if CSV data is not very large. -} -q.empty=function(){ - rs.resume();//Resume the paused readable stream. you may need check if the readable stream isPaused() (this is since node 0.12) or finished. -} -var conv=new Conv({construct:false}); -conv.transform=function(json){ - q.push(json); -}; -conv.on("end_parsed",function(){ - q.drain=function(){ - //code when Queue process finished. - } -}) -rs.pipe(conv); -``` - -In example above, the transformation will happen if one csv rown being processed. The related user info will be pulled from a web server and mashed into json result. - -There will be at most 10 data transformation woker working concurrently with the help of Async Queue. - -### Use Stream - -It is able to create a Writable stream (or Transform) which process data asynchronously. See [Here](https://nodejs.org/dist/latest-v4.x/docs/api/stream.html#stream_class_stream_transform) for more details. - -## Convert to other data type - -Below is an example of result tranformation which converts csv data to a column array rather than a JSON. - -```js -var Converter=require("csvtojson").Converter; -var columArrData=__dirname+"/data/columnArray"; -var rs=fs.createReadStream(columArrData); -var result = {} -var csvConverter=new Converter(); -//end_parsed will be emitted once parsing finished -csvConverter.on("end_parsed", function(jsonObj) { - console.log(result); - console.log("Finished parsing"); - done(); -}); - -//record_parsed will be emitted each time a row has been parsed. -csvConverter.on("record_parsed", function(resultRow, rawRow, rowIndex) { - - for (var key in resultRow) { - if (!result[key] || !result[key] instanceof Array) { - result[key] = []; - } - result[key][rowIndex] = resultRow[key]; - } - -}); -rs.pipe(csvConverter); -``` - -Here is an example: - -```csv - TIMESTAMP,UPDATE,UID,BYTES SENT,BYTES RCVED - 1395426422,n,10028,1213,5461 - 1395426422,n,10013,9954,13560 - 1395426422,n,10109,221391500,141836 - 1395426422,n,10007,53448,308549 - 1395426422,n,10022,15506,72125 -``` - -It will be converted to: - -```json -{ - "TIMESTAMP": ["1395426422", "1395426422", "1395426422", "1395426422", "1395426422"], - "UPDATE": ["n", "n", "n", "n", "n"], - "UID": ["10028", "10013", "10109", "10007", "10022"], - "BYTES SENT": ["1213", "9954", "221391500", "53448", "15506"], - "BYTES RCVED": ["5461", "13560", "141836", "308549", "72125"] -} -``` - -# Hooks -## preProcessRaw -This hook is called when parser received any data from upper stream and allow developers to change it. e.g. -```js -/* -CSV data: -a,b,c,d,e -12,e3,fb,w2,dd -*/ - -var conv=new Converter(); -conv.preProcessRaw=function(data,cb){ - //change all 12 to 23 - cb(data.replace("12","23")); -} -conv.fromString(csv,function(err,json){ - //json:{a:23 ....} -}) -``` -By default, the preProcessRaw just returns the data from the source -```js -Converter.prototype.preProcessRaw=function(data,cb){ - cb(data); -} -``` -It is also very good to sanitise/prepare the CSV data stream. -```js -var headWhiteSpaceRemoved=false; -conv.preProcessRaw=function(data,cb){ - if (!headWhiteSpaceRemoved){ - data=data.replace(/^\s+/,""); - cb(data); - }else{ - cb(data); - } -} -``` -## preProcessLine -this hook is called when a file line is emitted. It is called with two parameters `fileLineData,lineNumber`. The `lineNumber` is starting from 1. -```js -/* -CSV data: -a,b,c,d,e -12,e3,fb,w2,dd -*/ - -var conv=new Converter(); -conv.preProcessLine=function(line,lineNumber){ - //only change 12 to 23 for line 2 - if (lineNumber === 2){ - line=line.replace("12","23"); - } - return line; -} -conv.fromString(csv,function(err,json){ - //json:{a:23 ....} -}) -``` -Notice that preProcessLine does not support async changes not like preProcessRaw hook. - - -# Events - -Following events are used for Converter class: - -* end_parsed: It is emitted when parsing finished. the callback function will contain the JSON object if constructResult is set to true. -* record_parsed: it is emitted each time a row has been parsed. The callback function has following parameters: result row JSON object reference, Original row array object reference, row index of current row in csv (header row does not count, first row content will start from 0) - -To subscribe the event: - -```js -//Converter Class -var Converter=require("csvtojson").Converter; - -//end_parsed will be emitted once parsing finished -csvConverter.on("end_parsed",function(jsonObj){ - console.log(jsonObj); //here is your result json object -}); - -//record_parsed will be emitted each time a row has been parsed. -csvConverter.on("record_parsed",function(resultRow,rawRow,rowIndex){ - console.log(resultRow); //here is your result json object -}); -``` - -# Flags - -There are flags in the library: - -\*omit\*: Omit a column. The values in the column will not be built into JSON result. - -\*flat\*: Mark a head column as is the key of its JSON result. - -Example: - -```csv -*flat*user.name, user.age, *omit*user.gender -Joe , 40, Male -``` - -It will be converted to: - -```js -[{ - "user.name":"Joe", - "user":{ - "age":40 - } -}] -``` - -# Big CSV File -csvtojson library was designed to accept big csv file converting. To avoid memory consumption, it is recommending to use read stream and write stream. - -```js -var Converter=require("csvtojson").Converter; -var csvConverter=new Converter({constructResult:false}); // The parameter false will turn off final result construction. It can avoid huge memory consumption while parsing. The trade off is final result will not be populated to end_parsed event. - -var readStream=require("fs").createReadStream("inputData.csv"); - -var writeStream=require("fs").createWriteStream("outpuData.json"); - -readStream.pipe(csvConverter).pipe(writeStream); -``` - -The constructResult:false will tell the constructor not to combine the final result which would drain the memory as progressing. The output is piped directly to writeStream. - -# Convert Big CSV File with Command line tool -csvtojson command line tool supports streaming in big csv file and stream out json file. - -It is very convenient to process any kind of big csv file. It's proved having no issue to proceed csv files over 3,000,000 lines (over 500MB) with memory usage under 30MB. - -Once you have installed [csvtojson](#installation), you could use the tool with command: - -``` -csvtojson [path to bigcsvdata] > converted.json -``` - -Or if you prefer streaming data in from another application: - -``` -cat [path to bigcsvdata] | csvtojson > converted.json -``` - -They will do the same job. - - - -# Parse String -To parse a string, simply call fromString(csvString,callback) method. The callback parameter is optional. - -For example: - -```js -var testData=__dirname+"/data/testData"; -var data=fs.readFileSync(testData).toString(); -var csvConverter=new CSVConverter(); - -//end_parsed will be emitted once parsing finished -csvConverter.on("end_parsed", function(jsonObj) { - //final result poped here as normal. -}); -csvConverter.fromString(data,function(err,jsonObj){ - if (err){ - //err handle - } - console.log(jsonObj); -}); - -``` - -# Empowered JSON Parser - -*Note: If you want to maintain the original CSV data header values as JSON keys "as is" without being -interpreted as (complex) JSON structures you can set the option `--flatKeys=true`.* - -Since version 0.3.8, csvtojson now can replicate any complex JSON structure. -As we know, JSON object represents a graph while CSV is only 2-dimension data structure (table). -To make JSON and CSV containing same amount information, we need "flatten" some information in JSON. - -Here is an example. Original CSV: - -```csv -fieldA.title, fieldA.children[0].name, fieldA.children[0].id,fieldA.children[1].name, fieldA.children[1].employee[].name,fieldA.children[1].employee[].name, fieldA.address[],fieldA.address[], description -Food Factory, Oscar, 0023, Tikka, Tim, Joe, 3 Lame Road, Grantstown, A fresh new food factory -Kindom Garden, Ceil, 54, Pillow, Amst, Tom, 24 Shaker Street, HelloTown, Awesome castle - -``` -The data above contains nested JSON including nested array of JSON objects and plain texts. - -Using csvtojson to convert, the result would be like: - -```json -[{ - "fieldA": { - "title": "Food Factory", - "children": [{ - "name": "Oscar", - "id": "0023" - }, { - "name": "Tikka", - "employee": [{ - "name": "Tim" - }, { - "name": "Joe" - }] - }], - "address": ["3 Lame Road", "Grantstown"] - }, - "description": "A fresh new food factory" -}, { - "fieldA": { - "title": "Kindom Garden", - "children": [{ - "name": "Ceil", - "id": "54" - }, { - "name": "Pillow", - "employee": [{ - "name": "Amst" - }, { - "name": "Tom" - }] - }], - "address": ["24 Shaker Street", "HelloTown"] - }, - "description": "Awesome castle" -}] -``` - -Here is the rule for CSV data headers: - -* Use dot(.) to represent nested JSON. e.g. field1.field2.field3 will be converted to {field1:{field2:{field3:< value >}}} -* Use square brackets([]) to represent an Array. e.g. field1.field2[< index >] will be converted to {field1:{field2:[< values >]}}. Different column with same header name will be added to same array. -* Array could contain nested JSON object. e.g. field1.field2[< index >].name will be converted to {field1:{field2:[{name:< value >}]}} -* The index could be omitted in some situation. However it causes information lost. Therefore Index should **NOT** be omitted if array contains JSON objects with more than 1 field (See example above fieldA.children[1].employee field, it is still ok if child JSON contains only 1 field). - -Since 0.3.8, JSON parser is the default parser. It does not need to add "\*json\*" to column titles. Theoretically, the JSON parser now should have functionality of "Array" parser, "JSONArray" parser, and old "JSON" parser. - -This mainly purposes on the next few versions where csvtojson could convert a JSON object back to CSV format without losing information. -It can be used to process JSON data exported from no-sql database like MongoDB. - -# Field Type - -From version 0.3.14, type of fields are supported by csvtojson. -The parameter checkType is used to whether to check and convert the field type. -See [here](#params) for the parameter usage. - -Thank all who have contributed to ticket [#20](https://github.com/Keyang/node-csvtojson/issues/20). - -## Implict Type - -When checkType is turned on, parser will try to convert value to its implicit type if it is not explicitly specified. - -For example, csv data: -```csv -name, age, married, msg -Tom, 12, false, {"hello":"world","total":23} - -``` -Will be converted into: - -```json -{ - "name":"Tom", - "age":12, - "married":false, - "msg":{ - "hello":"world", - "total":"23" - } -} -``` -If checkType is turned **OFF**, it will be converted to: - -```json -{ - "name":"Tom", - "age":"12", - "married":"false", - "msg":"{\"hello\":\"world\",\"total\":23}" -} -``` - - -## Explicit Type -CSV header column can explicitly define the type of the field. -Simply add type before column name with a hash and exclaimation (#!). - -### Supported types: -* string -* number - -### Define Type -To define the field type, see following example - -```csv -string#!appNumber, string#!finished, *flat*string#!user.msg, unknown#!msg -201401010002, true, {"hello":"world","total":23},a message -``` -The data will be converted to: - -```json -{ - "appNumber":"201401010002", - "finished":"true", - "user.msg":"{\"hello\":\"world\",\"total\":23}" -} -``` - -## Multi-CPU (Core) -Since version 0.4.0, csvtojson supports multiple CPU cores to process large csv files. -The implementation and benchmark result can be found [here](http://keyangxiang.com/2015/06/11/node-js-multi-core-programming-pracitse/). - -To enable multi-core, just pass the worker number as parameter of constructor: - -```js - var Converter=require("csvtojson").Converter; - var converter=new Converter({ - workerNum:2 //use two cores - }); -``` -The minimum worker number is 1. When worker number is larger than 1, the parser will balance the job load among workers. - -For command line, to use worker just use ```--workerNum``` argument: - -``` -csvtojson --workerNum=3 ./myfile.csv -``` - -It is worth to mention that for small size of CSV file it actually costs more time to create processes and keep the communication between them. Therefore, use less workers for small CSV files. - -### Fork Process (Deprecated since 0.5.0) -*Node.JS is running on single thread. You will not want to convert a large csv file on the same process where your node.js webserver is running. csvtojson gives an option to fork the whole conversion process to a new system process while the origin process will only pipe the input and result in and out. It very simple to enable this feature: - -```js -var Converter=require("csvtojson").Converter; - var converter=new Converter({ - fork:true //use child process to convert - }); -``` -Same as multi-workers, fork a new process will cause extra cost on process communication and life cycle management. Use it wisely.* - -Since 0.5.0, fork=true is the same as workerNum=2. - -### Header configuration - -CSV header row can be configured programmatically. - -the *noheader* parameter indicate if first row of csv is header row or not. e.g. CSV data: - -``` -CC102-PDMI-001,eClass_5.1.3,10/3/2014,12,40,green,40 -CC200-009-001,eClass_5.1.3,11/3/2014,5,3,blue,38,extra field! -``` - -With noheader=true - -``` -csvtojson ./test/data/noheadercsv --noheader=true -``` - -we can get following result: - -```json -[ -{"field1":"CC102-PDMI-001","field2":"eClass_5.1.3","field3":"10/3/2014","field4":"12","field5":"40","field6":"green","field7":"40"}, -{"field1":"CC200-009-001","field2":"eClass_5.1.3","field3":"11/3/2014","field4":"5","field5":"3","field6":"blue","field7":"38","field8":"extra field!"} -] -``` - -or we can use it in code: - -```js -var converter=new require("csvtojson").Converter({noheader:true}); -``` - -the *headers* parameter specify the header row in an array. If *noheader* is false, this value will override csv header row. With csv data above, run command: - -``` -csvtojson ./test/data/noheadercsv --noheader=true --headers='["hell","csv"]' -``` - -we get following results: - -```json -[ - {"hell":"CC102-PDMI-001","csv":"eClass_5.1.3","field3":"10/3/2014","field4":"12","field5":"40","field6":"green","field7":"40"}, - {"hell":"CC200-009-001","csv":"eClass_5.1.3","field3":"11/3/2014","field4":"5","field5":"3","field6":"blue","field7":"38","field8":"extra field!"} -] -``` - -If length of headers array is smaller than the column of csv, converter will automatically fill the column with "field*". where * is current column index starting from 1. - -Also we can use it in code: - -```js -var converter=new require("csvtojson").Converter({headers:["my header1","hello world"]}); -``` - -# Error handling - -Since version 0.4.4, parser detects CSV data corruption. It is important to catch those erros if CSV data is not guranteed correct. Just simply register a listener to error event: - -```js - var converter=new require("csvtojson").Converter(); - converter.on("error",function(errMsg,errData){ - //do error handling here - }); -``` - -Once an error is emitted, the parser will continously parse csv data if up stream is still populating data. Therefore, a general practise is to close / destroy up stream once error is captured. - -Here are built-in error messages and corresponding error data: - -* unclosed_quote: If quote in csv is not closed, this error will be populated. The error data is a string which contains un-closed csv row. -* row_exceed: If maxRowLength is given a number larger than 0 and a row is longer than the value, this error will be populated. The error data is a string which contains the csv row exceeding the length. -* row_process: Any error happened while parser processing a csv row will populate this error message. The error data is detailed error message (e.g. checkColumn is true and column size of a row does not match that of header). - - -# Parser - -** Parser will be replaced by [Result Transform](#result-transform) and [Flags](#flags) ** - -This feature will be disabled in future. - -CSVTOJSON allows adding customised parsers which concentrating on what to parse and how to parse. -It is the main power of the tool that developer only needs to concentrate on how to deal with the data and other concerns like streaming, memory, web, cli etc are done automatically. - -How to add a customised parser: - -```js -//Parser Manager -var parserMgr=require("csvtojson").parserMgr; - -parserMgr.addParser("myParserName",/^\*parserRegExp\*/,function (params){ - var columnTitle=params.head; //params.head be like: *parserRegExp*ColumnName; - var fieldName=columnTitle.replace(this.regExp, ""); //this.regExp is the regular expression above. - params.resultRow[fieldName]="Hello my parser"+params.item; -}); -``` - -parserMgr's addParser function take three parameters: - -1. parser name: the name of your parser. It should be unique. - -2. Regular Expression: It is used to test if a column of CSV data is using this parser. In the example above any column's first row starting with *parserRegExp* will be using it. - -3. Parse function call back: It is where the parse happens. The converter works row by row and therefore the function will be called each time needs to parse a cell in CSV data. - -The parameter of Parse function is a JSON object. It contains following fields: - -**head**: The column's first row's data. It generally contains field information. e.g. *array*items - -**item**: The data inside current cell. e.g. item1 - -**itemIndex**: the index of current cell of a row. e.g. 0 - -**rawRow**: the reference of current row in array format. e.g. ["item1", 23 ,"hello"] - -**resultRow**: the reference of result row in JSON format. e.g. {"name":"Joe"} - -**rowIndex**: the index of current row in CSV data. start from 1 since 0 is the head. e.g. 1 - -**resultObject**: the reference of result object in JSON format. It always has a field called csvRows which is in Array format. It changes as parsing going on. e.g. - -```json -{ - "csvRows":[ - { - "itemName":"item1", - "number":10 - }, - { - "itemName":"item2", - "number":4 - } - ] -} -``` -#Stream Options -Since version 1.0.0, the Converter constructor takes stream options as second parameter. - -```js -const conv=new Converter(params,{ - objectMode:true, // stream down JSON object instead of JSON array - highWaterMark:65535 //Buffer level -}) - -``` - -See more detailed information [here](https://nodejs.org/api/stream.html#stream_class_stream_transform). - - -#Change Log - -## 1.1.0 - -* Remove support of `new Converter(true)` - -## 1.0.2 -* supported ndjson format as per #113 and #87 -* issue: #120 - -## 1.0.0 -* Add [Stream Options](#stream-options) -* Change version syntax to follow x.y.z - -## 0.5.12 -* Added support for scientific notation number support (#100) -* Added "off" option to quote parameter - -## 0.5.4 -* Added new feature: accept special delimiter "auto" and array - -## 0.5.2 - -* Changed type separator from # to #! -* Fixed bugs - -## 0.5.0 - -* Fixed some bugs -* Performance improvement -* **Implicity type for numbers now use RegExp:/^[-+]?[0-9]*\.?[0-9]+$/. Previously 00131 is a string now will be recognised as number type** -* **If a column has no head, now it will use current column index as column name: 'field*'. previously parser uses a fixed index starting from 1. e.g. csv data: 'aa,bb,cc' with head 'a,b'. previously it will convert to {'a':'aa','b':'bb','field1':'cc'} and now it is {'a':'aa','b':'bb','field3':'cc'}** - -## 0.4.7 -* ignoreEmpty now ignores empty rows as well -* optimised performance -* added fromFile method - -## 0.4.4 -* Add error handling for corrupted CSV data -* Exposed "eol" param - -## 0.4.3 -* Added header configuration -* Refactored worker code -* **Number type field now returns 0 if parseFloat returns NaN with the value of the field. Previously it returns original value in string.** - -## 0.4.0 -* Added Multi-core CPU support to increase performance -* Added "fork" option to delegate csv converting work to another process. -* Refactoring general flow - -## 0.3.21 -* Refactored Command Line Tool. -* Added ignoreEmpty parameter. - -## 0.3.18 -* Fixed double qoute parse as per CSV standard. - -## 0.3.14 -* Added field type support -* Fixed some minor bugs - -## 0.3.8 -* Empowered built-in JSON parser. -* Change: Use JSON parser as default parser. -* Added parameter trim in constructor. default: true. trim will trim content spaces. - -## 0.3.5 -* Added fromString method to support direct string input - -## 0.3.4 -* Added more parameters to command line tool. - -## 0.3.2 -* Added quote in parameter to support quoted column content containing delimiters -* Changed row index starting from 0 instead of 1 when populated from record_parsed event - -## 0.3 -* Removed all dependencies -* Deprecated applyWebServer -* Added construct parameter for Converter Class -* Converter Class now works as a proper stream object - -# IMPORTANT!! -Since version 0.3, the core class of csvtojson has been inheriting from stream.Transform class. Therefore, it will behave like a normal Stream object and CSV features will not be available any more. Now the usage is like: -```js -//Converter Class -var fs = require("fs"); -var Converter = require("csvtojson").Converter; -var fileStream = fs.createReadStream("./file.csv"); -//new converter instance -var converter = new Converter({constructResult:true}); -//end_parsed will be emitted once parsing finished -converter.on("end_parsed", function (jsonObj) { - console.log(jsonObj); //here is your result json object -}); -//read from file -fileStream.pipe(converter); -``` - -To convert from a string, previously the code was: -```js -csvConverter.from(csvString); -``` - -Now it is: -```js -csvConverter.fromString(csvString, callback); -``` - -The callback function above is optional. see [Parse String](#parse-string). - -After version 0.3, csvtojson requires node 0.10 and above. - diff --git a/node_modules/csvtojson/readme.md b/node_modules/csvtojson/readme.md deleted file mode 100644 index 8fff914..0000000 --- a/node_modules/csvtojson/readme.md +++ /dev/null @@ -1,680 +0,0 @@ -[![Build Status](https://travis-ci.org/Keyang/node-csvtojson.svg?branch=master)](https://travis-ci.org/Keyang/node-csvtojson) -[![Coverage Status](https://coveralls.io/repos/github/Keyang/node-csvtojson/badge.svg?branch=master)](https://coveralls.io/github/Keyang/node-csvtojson?branch=master) -[![OpenCollective](https://opencollective.com/csvtojson/backers/badge.svg)](#backers) -[![OpenCollective](https://opencollective.com/csvtojson/sponsors/badge.svg)](#sponsors) - -# CSVTOJSON - -`csvtojson` module is a comprehensive nodejs csv parser to convert csv to json or column arrays. It can be used as node.js library / command line tool / or in browser. Below are some features: - -* Strictly follow CSV definition [RF4180](https://www.loc.gov/preservation/digital/formats/fdd/fdd000323.shtml) -* Work with millions of lines of CSV data -* Provide comprehensive parsing parameters -* Provide out of box CSV parsing tool for Command Line -* Blazing fast -- [Focus on performance](https://github.com/Keyang/csvbench) -* Give flexibility to developer with 'pre-defined' helpers -* Allow async / streaming parsing -* Provide a csv parser for both Node.JS and browsers -* Easy to use API - - -# csvtojson online - -[Here](http://keyangxiang.com/csvtojson/) is a free online csv to json convert service utilizing latest `csvtojson` module. - -# Upgrade to V2 - -`csvtojson` has released version `2.0.0`. -* To upgrade to v2, please follow [upgrading guide](https://github.com/Keyang/node-csvtojson/blob/master/docs/csvtojson-v2.md) -* If you are looking for documentation for `v1`, open [this page](https://github.com/Keyang/node-csvtojson/blob/master/docs/readme.v1.md) - -It is still able to use v1 with `csvtojson@2.0.0` - -```js -// v1 -const csvtojsonV1=require("csvtojson/v1"); -// v2 -const csvtojsonV2=require("csvtojson"); -const csvtojsonV2=require("csvtojson/v2"); - -``` - -# Menu - -* [Quick Start](#quick-start) -* [API](#api) -* [Browser Usage](#browser-usage) -* [Contribution](#contribution) - -# Quick Start - -* [As Library](#library) -* [As Command Line Tool](#command-line-usage) - -## Library - -### Installation - -``` -npm i --save csvtojson -``` - -### From CSV File to JSON Array - -```js -/** csv file -a,b,c -1,2,3 -4,5,6 -*/ -const csvFilePath='' -const csv=require('csvtojson') -csv() -.fromFile(csvFilePath) -.then((jsonObj)=>{ - console.log(jsonObj); - /** - * [ - * {a:"1", b:"2", c:"3"}, - * {a:"4", b:"5". c:"6"} - * ] - */ -}) - -// Async / await usage -const jsonArray=await csv().fromFile(csvFilePath); - -``` - -### From CSV String to CSV Row - -```js -/** -csvStr: -1,2,3 -4,5,6 -7,8,9 -*/ -const csv=require('csvtojson') -csv({ - noheader:true, - output: "csv" -}) -.fromString(csvStr) -.then((csvRow)=>{ - console.log(csvRow) // => [["1","2","3"], ["4","5","6"], ["7","8","9"]] -}) - -``` - - -### Asynchronously process each line from csv url - -```js -const request=require('request') -const csv=require('csvtojson') - -csv() -.fromStream(request.get('http://mywebsite.com/mycsvfile.csv')) -.subscribe((json)=>{ - return new Promise((resolve,reject)=>{ - // long operation for each json e.g. transform / write into database. - }) -},onError,onComplete); - -``` - -### Convert to CSV lines - -```js -/** -csvStr: -a,b,c -1,2,3 -4,5,6 -*/ - -const csv=require('csvtojson') -csv({output:"line"}) -.fromString(csvStr) -.subscribe((csvLine)=>{ - // csvLine => "1,2,3" and "4,5,6" -}) -``` - -### Use Stream - -```js -const csv=require('csvtojson'); - -const readStream=require('fs').createReadStream(csvFilePath); - -const writeStream=request.put('http://mysite.com/obj.json'); - -readStream.pipe(csv()).pipe(writeStream); - -``` - -To find more detailed usage, please see [API](#api) section - -## Command Line Usage - -### Installation - -``` -$ npm i -g csvtojson -``` - -### Usage - - -``` -$ csvtojson [options] -``` - -### Example - -Convert csv file and save result to json file: - -``` -$ csvtojson source.csv > converted.json -``` - -Pipe in csv data: - -``` -$ cat ./source.csv | csvtojson > converted.json -``` - -Print Help: - -``` -$ csvtojson -``` - -# API - -* [Parameters](#parameters) -* [Asynchronous Result Process](#asynchronous-result-process) -* [Events](#events) -* [Hook / Transform](#hook--transform) -* [Nested JSON Structure](#nested-json-structure) -* [Header Row](#header-row) -* [Column Parser](#column-parser) - - -## Parameters - -`require('csvtojson')` returns a constructor function which takes 2 arguments: - -1. Parser parameters -2. Stream options - -```js -const csv=require('csvtojson') -const converter=csv(parserParameters, streamOptions) -``` -Both arguments are optional. - -For `Stream Options` please read [Stream Option](https://nodejs.org/api/stream.html#stream_new_stream_transform_options) from Node.JS - -`parserParameters` is a JSON object like: - -```js -const converter=csv({ - noheader:true, - trim:true, -}) -``` -Following parameters are supported: - -* **output**: The format to be converted to. "json" (default) -- convert csv to json. "csv" -- convert csv to csv row array. "line" -- convert csv to csv line string -* **delimiter**: delimiter used for separating columns. Use "auto" if delimiter is unknown in advance, in this case, delimiter will be auto-detected (by best attempt). Use an array to give a list of potential delimiters e.g. [",","|","$"]. default: "," -* **quote**: If a column contains delimiter, it is able to use quote character to surround the column content. e.g. "hello, world" won't be split into two columns while parsing. Set to "off" will ignore all quotes. default: " (double quote) -* **trim**: Indicate if parser trim off spaces surrounding column content. e.g. " content " will be trimmed to "content". Default: true -* **checkType**: This parameter turns on and off whether check field type. Default is false. (The default is `true` if version < 1.1.4) -* **ignoreEmpty**: Ignore the empty value in CSV columns. If a column value is not given, set this to true to skip them. Default: false. -* **fork (experimental)**: Fork another process to parse the CSV stream. It is effective if many concurrent parsing sessions for large csv files. Default: false -* **noheader**:Indicating csv data has no header row and first row is data row. Default is false. See [header row](#header-row) -* **headers**: An array to specify the headers of CSV data. If --noheader is false, this value will override CSV header row. Default: null. Example: ["my field","name"]. See [header row](#header-row) -* **flatKeys**: Don't interpret dots (.) and square brackets in header fields as nested object or array identifiers at all (treat them like regular characters for JSON field identifiers). Default: false. -* **maxRowLength**: the max character a csv row could have. 0 means infinite. If max number exceeded, parser will emit "error" of "row_exceed". if a possibly corrupted csv data provided, give it a number like 65535 so the parser won't consume memory. default: 0 -* **checkColumn**: whether check column number of a row is the same as headers. If column number mismatched headers number, an error of "mismatched_column" will be emitted.. default: false -* **eol**: End of line character. If omitted, parser will attempt to retrieve it from the first chunks of CSV data. -* **escape**: escape character used in quoted column. Default is double quote (") according to RFC4108. Change to back slash (\\) or other chars for your own case. -* **includeColumns**: This parameter instructs the parser to include only those columns as specified by the regular expression. Example: /(name|age)/ will parse and include columns whose header contains "name" or "age" -* **ignoreColumns**: This parameter instructs the parser to ignore columns as specified by the regular expression. Example: /(name|age)/ will ignore columns whose header contains "name" or "age" -* **colParser**: Allows override parsing logic for a specific column. It accepts a JSON object with fields like: `headName: ` . e.g. {field1:'number'} will use built-in number parser to convert value of the `field1` column to number. For more information See [details below](#column-parser) -* **alwaysSplitAtEOL**: Always interpret each line (as defined by `eol` like `\n`) as a row. This will prevent `eol` characters from being used within a row (even inside a quoted field). Default is false. Change to true if you are confident no inline line breaks (like line break in a cell which has multi line text). -* **nullObject**: How to parse if a csv cell contains "null". Default false will keep "null" as string. Change to true if a null object is needed. -* **downstreamFormat**: Option to set what JSON array format is needed by downstream. "line" is also called ndjson format. This format will write lines of JSON (without square brackets and commas) to downstream. "array" will write complete JSON array string to downstream (suitable for file writable stream etc). Default "line" -* **needEmitAll**: Parser will build JSON result is `.then` is called (or await is used). If this is not desired, set this to false. Default is true. -All parameters can be used in Command Line tool. - -## Asynchronous Result Process - -Since `v2.0.0`, asynchronous processing has been fully supported. - -e.g. Process each JSON result asynchronously. - -```js -csv().fromFile(csvFile) -.subscribe((json)=>{ - return new Promise((resolve,reject)=>{ - // Async operation on the json - // don't forget to call resolve and reject - }) -}) -``` -For more details please read: - -* [Add Promise and Async / Await support](https://github.com/Keyang/node-csvtojson/blob/master/docs/csvtojson-v2.md#add-promise-and-async--await-support) -* [Add asynchronous line by line processing support](https://github.com/Keyang/node-csvtojson/blob/master/docs/csvtojson-v2.md#add-asynchronous-line-by-line-processing-support) -* [Async Hooks Support](https://github.com/Keyang/node-csvtojson/blob/master/docs/csvtojson-v2.md#async-hooks-support) - - -## Events - -`Converter` class defined a series of events. - -### header - -`header` event is emitted for each CSV file once. It passes an array object which contains the names of the header row. - -```js -const csv=require('csvtojson') -csv() -.on('header',(header)=>{ - //header=> [header1, header2, header3] -}) -``` - -`header` is always an array of strings without types. - -### data - -`data` event is emitted for each parsed CSV line. It passes buffer of stringified JSON in [ndjson format](http://ndjson.org/) unless `objectMode` is set true in stream option. - -```js -const csv=require('csvtojson') -csv() -.on('data',(data)=>{ - //data is a buffer object - const jsonStr= data.toString('utf8') -}) -``` - -### error -`error` event is emitted if any errors happened during parsing. - -```js -const csv=require('csvtojson') -csv() -.on('error',(err)=>{ - console.log(err) -}) -``` - -Note that if `error` being emitted, the process will stop as node.js will automatically `unpipe()` upper-stream and chained down-stream1. This will cause `end` event never being emitted because `end` event is only emitted when all data being consumed 2. If need to know when parsing finished, use `done` event instead of `end`. - -1. [Node.JS Readable Stream](https://github.com/nodejs/node/blob/master/lib/_stream_readable.js#L572-L583) -2. [Writable end Event](https://nodejs.org/api/stream.html#stream_event_end) - -### done - -`done` event is emitted either after parsing successfully finished or any error happens. This indicates the processor has stopped. - -```js -const csv=require('csvtojson') -csv() -.on('done',(error)=>{ - //do some stuff -}) -``` - -if any error during parsing, it will be passed in callback. - -## Hook & Transform - -### Raw CSV Data Hook - -the hook -- `preRawData` will be called with csv string passed to parser. - -```js -const csv=require('csvtojson') -// synchronouse -csv() -.preRawData((csvRawData)=>{ - var newData=csvRawData.replace('some value','another value'); - return newData; -}) - -// asynchronous -csv() -.preRawData((csvRawData)=>{ - return new Promise((resolve,reject)=>{ - var newData=csvRawData.replace('some value','another value'); - resolve(newData); - }) - -}) -``` - -### CSV File Line Hook - -The function is called each time a file line has been parsed in csv stream. The `lineIdx` is the file line number in the file starting with 0. - -```js -const csv=require('csvtojson') -// synchronouse -csv() -.preFileLine((fileLineString, lineIdx)=>{ - if (lineIdx === 2){ - return fileLineString.replace('some value','another value') - } - return fileLineString -}) - -// asynchronous -csv() -.preFileLine((fileLineString, lineIdx)=>{ - return new Promise((resolve,reject)=>{ - // async function processing the data. - }) - - -}) -``` - - - -### Result transform - -To transform result that is sent to downstream, use `.subscribe` method for each json populated. - -```js -const csv=require('csvtojson') -csv() -.subscribe((jsonObj,index)=>{ - jsonObj.myNewKey='some value' - // OR asynchronously - return new Promise((resolve,reject)=>{ - jsonObj.myNewKey='some value'; - resolve(); - }) -}) -.on('data',(jsonObj)=>{ - console.log(jsonObj.myNewKey) // some value -}); -``` - - -## Nested JSON Structure - -`csvtojson` is able to convert csv line to a nested JSON by correctly defining its csv header row. This is default out-of-box feature. - -Here is an example. Original CSV: - -```csv -fieldA.title, fieldA.children.0.name, fieldA.children.0.id,fieldA.children.1.name, fieldA.children.1.employee.0.name,fieldA.children.1.employee.1.name, fieldA.address.0,fieldA.address.1, description -Food Factory, Oscar, 0023, Tikka, Tim, Joe, 3 Lame Road, Grantstown, A fresh new food factory -Kindom Garden, Ceil, 54, Pillow, Amst, Tom, 24 Shaker Street, HelloTown, Awesome castle - -``` -The data above contains nested JSON including nested array of JSON objects and plain texts. - -Using csvtojson to convert, the result would be like: - -```json -[{ - "fieldA": { - "title": "Food Factory", - "children": [{ - "name": "Oscar", - "id": "0023" - }, { - "name": "Tikka", - "employee": [{ - "name": "Tim" - }, { - "name": "Joe" - }] - }], - "address": ["3 Lame Road", "Grantstown"] - }, - "description": "A fresh new food factory" -}, { - "fieldA": { - "title": "Kindom Garden", - "children": [{ - "name": "Ceil", - "id": "54" - }, { - "name": "Pillow", - "employee": [{ - "name": "Amst" - }, { - "name": "Tom" - }] - }], - "address": ["24 Shaker Street", "HelloTown"] - }, - "description": "Awesome castle" -}] -``` - -### Flat Keys - -In order to not produce nested JSON, simply set `flatKeys:true` in parameters. - -```js -/** -csvStr: -a.b,a.c -1,2 -*/ -csv({flatKeys:true}) -.fromString(csvStr) -.subscribe((jsonObj)=>{ - //{"a.b":1,"a.c":2} rather than {"a":{"b":1,"c":2}} -}); - -``` - -## Header Row - -`csvtojson` uses csv header row as generator of JSON keys. However, it does not require the csv source containing a header row. There are 4 ways to define header rows: - -1. First row of csv source. Use first row of csv source as header row. This is default. -2. If first row of csv source is header row but it is incorrect and need to be replaced. Use `headers:[]` and `noheader:false` parameters. -3. If original csv source has no header row but the header definition can be defined. Use `headers:[]` and `noheader:true` parameters. -4. If original csv source has no header row and the header definition is unknown. Use `noheader:true`. This will automatically add `fieldN` header to csv cells - - -### Example - -```js -// replace header row (first row) from original source with 'header1, header2' -csv({ - noheader: false, - headers: ['header1','header2'] -}) - -// original source has no header row. add 'field1' 'field2' ... 'fieldN' as csv header -csv({ - noheader: true -}) - -// original source has no header row. use 'header1' 'header2' as its header row -csv({ - noheader: true, - headers: ['header1','header2'] -}) - -``` - -## Column Parser - -`Column Parser` allows writing a custom parser for a column in CSV data. - -**What is Column Parser** - -When `csvtojson` walks through csv data, it converts value in a cell to something else. For example, if `checkType` is `true`, `csvtojson` will attempt to find a proper type parser according to the cell value. That is, if cell value is "5", a `numberParser` will be used and all value under that column will use the `numberParser` to transform data. - -### Built-in parsers - -There are currently following built-in parser: - -* string: Convert value to string -* number: Convert value to number -* omit: omit the whole column - -This will override types infered from `checkType:true` parameter. More built-in parsers will be added as requested in [issues page](https://github.com/Keyang/node-csvtojson/issues). - -Example: - -```js -/*csv string -column1,column2 -hello,1234 -*/ -csv({ - colParser:{ - "column1":"omit", - "column2":"string", - }, - checkType:true -}) -.fromString(csvString) -.subscribe((jsonObj)=>{ - //jsonObj: {column2:"1234"} -}) -``` - -### Custom parsers function - -Sometimes, developers want to define custom parser. It is able to pass a function to specific column in `colParser`. - -Example: - -```js -/*csv data -name, birthday -Joe, 1970-01-01 -*/ -csv({ - colParser:{ - "birthday":function(item, head, resultRow, row , colIdx){ - /* - item - "1970-01-01" - head - "birthday" - resultRow - {name:"Joe"} - row - ["Joe","1970-01-01"] - colIdx - 1 - */ - return new Date(item); - } - } -}) -``` - -Above example will convert `birthday` column into a js `Date` object. - -The returned value will be used in result JSON object. Returning `undefined` will not change result JSON object. - -### Flat key column - -It is also able to mark a column as `flat`: - -```js - -/*csv string -person.comment,person.number -hello,1234 -*/ -csv({ - colParser:{ - "person.number":{ - flat:true, - cellParser: "number" // string or a function - } - } -}) -.fromString(csvString) -.subscribe((jsonObj)=>{ - //jsonObj: {"person.number":1234,"person":{"comment":"hello"}} -}) -``` - -# Contribution - -Very much appreciate any types of donation and support. - -## Code - -`csvtojson` follows github convention for contributions. Here are some steps: - -1. Fork the repo to your github account -2. Checkout code from your github repo to your local machine. -3. Make code changes and don't forget add related tests. -4. Run `npm test` locally before pushing code back. -5. Create a [Pull Request](https://help.github.com/articles/creating-a-pull-request/) on github. -6. Code review and merge -7. Changes will be published to NPM within next version. - -Thanks all the [contributors](https://github.com/Keyang/node-csvtojson/graphs/contributors) - -## Backers - -Thank you to all our backers! [[Become a backer](https://opencollective.com/csvtojson#backer)] - -[![OpenCollective](https://opencollective.com/csvtojson/backers.svg?width=890)](https://opencollective.com/csvtojson#backer) - -## Sponsors - -Thank you to all our sponsors! (please ask your company to also support this open source project by [becoming a sponsor](https://opencollective.com/csvtojson#sponsor)) - -## Paypal - -[![donate](https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=DUBQLRPJADJFQ) - -# Browser Usage - -To use `csvtojson` in browser is quite simple. There are two ways: - -**1. Embed script directly into script tag** - -There is a pre-built script located in `browser/csvtojson.min.js`. Simply include that file in a `script` tag in `index.html` page: - -```html - - - -``` -then use a global `csv` function -```html - -``` - - - -**2. Use webpack or browserify** - -If a module packager is preferred, just simply `require("csvtojson")`: - -```js -var csv=require("csvtojson"); - -// or with import -import * as csv from "csvtojson"; - -//then use csv as normal -``` diff --git a/node_modules/csvtojson/src/CSVError.test.ts b/node_modules/csvtojson/src/CSVError.test.ts deleted file mode 100644 index 3c908b6..0000000 --- a/node_modules/csvtojson/src/CSVError.test.ts +++ /dev/null @@ -1,6 +0,0 @@ -import CSVError from "./CSVError"; -import assert from "assert"; -describe("CSVError",()=>{ - it ("should toString()",()=>{ - }) -}) \ No newline at end of file diff --git a/node_modules/csvtojson/src/CSVError.ts b/node_modules/csvtojson/src/CSVError.ts deleted file mode 100644 index 220ca20..0000000 --- a/node_modules/csvtojson/src/CSVError.ts +++ /dev/null @@ -1,27 +0,0 @@ -export default class CSVError extends Error { - static column_mismatched(index: number, extra?: string) { - return new CSVError("column_mismatched", index, extra); - } - static unclosed_quote(index: number, extra?: string) { - return new CSVError("unclosed_quote", index, extra); - } - static fromJSON(obj) { - return new CSVError(obj.err, obj.line, obj.extra); - } - constructor( - public err: string, - public line: number, - public extra?: string - ) { - super("Error: " + err + ". JSON Line number: " + line + (extra ? " near: " + extra : "")); - this.name = "CSV Parse Error"; - } - toJSON() { - return { - err: this.err, - line: this.line, - extra: this.extra - } - } - -} diff --git a/node_modules/csvtojson/src/Converter.ts b/node_modules/csvtojson/src/Converter.ts deleted file mode 100644 index 83f076e..0000000 --- a/node_modules/csvtojson/src/Converter.ts +++ /dev/null @@ -1,189 +0,0 @@ -import { Transform, TransformOptions, Readable } from "stream"; -import { CSVParseParam, mergeParams } from "./Parameters"; -import { ParseRuntime, initParseRuntime } from "./ParseRuntime"; -import P from "bluebird"; -import { stringToLines } from "./fileline"; -import { map } from "lodash/map"; -import { RowSplit, RowSplitResult } from "./rowSplit"; -import getEol from "./getEol"; -import lineToJson, { JSONResult } from "./lineToJson"; -import { Processor, ProcessLineResult } from "./Processor"; -// import { ProcessorFork } from "./ProcessFork"; -import { ProcessorLocal } from "./ProcessorLocal"; -import { Result } from "./Result"; -import CSVError from "./CSVError"; -import { bufFromString } from "./util"; - - - -export class Converter extends Transform implements PromiseLike { - preRawData(onRawData: PreRawDataCallback): Converter { - this.runtime.preRawDataHook = onRawData; - return this; - } - preFileLine(onFileLine: PreFileLineCallback): Converter { - this.runtime.preFileLineHook = onFileLine; - return this; - } - subscribe( - onNext?: (data: any, lineNumber: number) => void | PromiseLike, - onError?: (err: CSVError) => void, - onCompleted?: () => void): Converter { - this.parseRuntime.subscribe = { - onNext, - onError, - onCompleted - } - return this; - } - fromFile(filePath: string, options?: string | CreateReadStreamOption | undefined): Converter { - const fs = require("fs"); - // var rs = null; - // this.wrapCallback(cb, function () { - // if (rs && rs.destroy) { - // rs.destroy(); - // } - // }); - fs.exists(filePath, (exist) => { - if (exist) { - const rs = fs.createReadStream(filePath, options); - rs.pipe(this); - } else { - this.emit('error', new Error("File does not exist. Check to make sure the file path to your csv is correct.")); - } - }); - return this; - } - fromStream(readStream: Readable): Converter { - readStream.pipe(this); - return this; - } - fromString(csvString: string): Converter { - const csv = csvString.toString(); - const read = new Readable(); - let idx = 0; - read._read = function (size) { - if (idx >= csvString.length) { - this.push(null); - } else { - const str = csvString.substr(idx, size); - this.push(str); - idx += size; - } - } - return this.fromStream(read); - } - then(onfulfilled?: (value: any[]) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): PromiseLike { - return new P((resolve, reject) => { - this.parseRuntime.then = { - onfulfilled: (value: any[]) => { - if (onfulfilled) { - resolve(onfulfilled(value)); - } else { - resolve(value as any); - } - }, - onrejected: (err: Error) => { - if (onrejected) { - resolve(onrejected(err)); - } else { - reject(err); - } - } - } - }); - } - public get parseParam(): CSVParseParam { - return this.params; - } - public get parseRuntime(): ParseRuntime { - return this.runtime; - } - private params: CSVParseParam; - private runtime: ParseRuntime; - private processor: Processor; - private result: Result; - constructor(param?: Partial, public options: TransformOptions = {}) { - super(options); - this.params = mergeParams(param); - this.runtime = initParseRuntime(this); - this.result = new Result(this); - // if (this.params.fork) { - // this.processor = new ProcessorFork(this); - // } else { - this.processor = new ProcessorLocal(this); - // } - this.once("error", (err: any) => { - // console.log("BBB"); - //wait for next cycle to emit the errors. - setImmediate(() => { - this.result.processError(err); - this.emit("done", err); - }); - - }); - this.once("done", () => { - this.processor.destroy(); - }) - - return this; - } - _transform(chunk: any, encoding: string, cb: Function) { - this.processor.process(chunk) - .then((result) => { - // console.log(result); - if (result.length > 0) { - this.runtime.started = true; - - return this.result.processResult(result); - } - }) - .then(() => { - this.emit("drained"); - cb(); - }, (error) => { - this.runtime.hasError = true; - this.runtime.error = error; - this.emit("error", error); - cb(); - }); - } - _flush(cb: Function) { - this.processor.flush() - .then((data) => { - if (data.length > 0) { - - return this.result.processResult(data); - } - }) - .then(() => { - this.processEnd(cb); - }, (err) => { - this.emit("error", err); - cb(); - }) - } - private processEnd(cb) { - this.result.endProcess(); - this.emit("done"); - cb(); - } - get parsedLineNumber(): number { - return this.runtime.parsedLineNumber; - } -} -export interface CreateReadStreamOption { - flags?: string; - encoding?: string; - fd?: number; - mode?: number; - autoClose?: boolean; - start?: number; - end?: number; - highWaterMark?: number; -} -export type CallBack = (err: Error, data: Array) => void; - - -export type PreFileLineCallback = (line: string, lineNumber: number) => string | PromiseLike; -export type PreRawDataCallback = (csvString: string) => string | PromiseLike; diff --git a/node_modules/csvtojson/src/Parameters.ts b/node_modules/csvtojson/src/Parameters.ts deleted file mode 100644 index 0c42cbb..0000000 --- a/node_modules/csvtojson/src/Parameters.ts +++ /dev/null @@ -1,136 +0,0 @@ -export interface CSVParseParam { - /** - * delimiter used for seperating columns. Use "auto" if delimiter is unknown in advance, in this case, delimiter will be auto-detected (by best attempt). Use an array to give a list of potential delimiters e.g. [",","|","$"]. default: "," - */ - delimiter: string | string[]; - /** - * This parameter instructs the parser to ignore columns as specified by the regular expression. Example: /(name|age)/ will ignore columns whose header contains "name" or "age" - */ - ignoreColumns?: RegExp; - /** - * This parameter instructs the parser to include only those columns as specified by the regular expression. Example: /(name|age)/ will parse and include columns whose header contains "name" or "age" - */ - includeColumns?: RegExp; - /** - * If a column contains delimiter, it is able to use quote character to surround the column content. e.g. "hello, world" wont be split into two columns while parsing. Set to "off" will ignore all quotes. default: " (double quote) - */ - quote: string; - /** - * Indicate if parser trim off spaces surrounding column content. e.g. " content " will be trimmed to "content". Default: true - */ - trim: boolean; - /** - * This parameter turns on and off whether check field type. Default is false. - */ - checkType: boolean; - /** - * Ignore the empty value in CSV columns. If a column value is not given, set this to true to skip them. Default: false. - */ - ignoreEmpty: boolean; - /** - * Delegate parsing work to another process. - */ - // fork: boolean; - /** - * Indicating csv data has no header row and first row is data row. Default is false. - */ - noheader: boolean; - /** - * An array to specify the headers of CSV data. If --noheader is false, this value will override CSV header row. Default: null. Example: ["my field","name"]. - */ - headers?: string[]; - /** - * Don't interpret dots (.) and square brackets in header fields as nested object or array identifiers at all (treat them like regular characters for JSON field identifiers). Default: false. - */ - flatKeys: boolean; - /** - * the max character a csv row could have. 0 means infinite. If max number exceeded, parser will emit "error" of "row_exceed". if a possibly corrupted csv data provided, give it a number like 65535 so the parser wont consume memory. default: 0 - */ - maxRowLength: number; - /** - * whether check column number of a row is the same as headers. If column number mismatched headers number, an error of "mismatched_column" will be emitted.. default: false - */ - checkColumn: boolean; - /** - * escape character used in quoted column. Default is double quote (") according to RFC4108. Change to back slash (\) or other chars for your own case. - */ - escape: string; - /** - * Allows override parsing logic for a specific column. It accepts a JSON object with fields like: headName: . e.g. {field1:'number'} will use built-in number parser to convert value of the field1 column to number. Another example {"name":nameProcessFunc} will use specified function to parse the value. - */ - colParser: { - [key: string]: string | CellParser | ColumnParam - }; - /** - * End of line character. If omitted, parser will attempt to retrieve it from the first chunks of CSV data - */ - eol?: string; - /** - * Always interpret each line (as defined by eol) as a row. This will prevent eol characters from being used within a row (even inside a quoted field). Default is false. Change to true if you are confident no inline line breaks (like line break in a cell which has multi line text) - */ - alwaysSplitAtEOL: boolean; - /** - * The format to be converted to. "json" (default) -- convert csv to json. "csv" -- convert csv to csv row array. "line" -- convert csv to csv line string - */ - output: "json" | "csv" | "line"; - - /** - * Convert string "null" to null object in JSON outputs. Default is false. - */ - nullObject:boolean; - /** - * Define the format required by downstream (this parameter does not work if objectMode is on). `line` -- json is emitted in a single line separated by a line breake like "json1\njson2" . `array` -- downstream requires array format like "[json1,json2]". Default is line. - */ - downstreamFormat: "line" | "array"; - /** - * Define whether .then(callback) returns all JSON data in its callback. Default is true. Change to false to save memory if subscribing json lines. - */ - needEmitAll: boolean; -} - -export type CellParser = (item: string, head: string, resultRow: any, row: string[], columnIndex: number) => any; - -export interface ColumnParam { - flat?: boolean; - cellParser?: string | CellParser; -} - -export function mergeParams(params?: Partial): CSVParseParam { - const defaultParam: CSVParseParam = { - delimiter: ',', - ignoreColumns: undefined, - includeColumns: undefined, - quote: '"', - trim: true, - checkType: false, - ignoreEmpty: false, - // fork: false, - noheader: false, - headers: undefined, - flatKeys: false, - maxRowLength: 0, - checkColumn: false, - escape: '"', - colParser: {}, - eol: undefined, - alwaysSplitAtEOL: false, - output: "json", - nullObject: false, - downstreamFormat:"line", - needEmitAll:true - } - if (!params) { - params = {}; - } - for (let key in params) { - if (params.hasOwnProperty(key)) { - if (Array.isArray(params[key])) { - defaultParam[key] = [].concat(params[key]); - } else { - defaultParam[key] = params[key]; - } - } - } - return defaultParam; -} - diff --git a/node_modules/csvtojson/src/ParseRuntime.ts b/node_modules/csvtojson/src/ParseRuntime.ts deleted file mode 100644 index 2601ea2..0000000 --- a/node_modules/csvtojson/src/ParseRuntime.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { CSVParseParam, CellParser } from "./Parameters"; -import { Converter, PreRawDataCallback, PreFileLineCallback } from "./Converter"; -import { ChildProcess } from "child_process"; -import CSVError from "./CSVError"; - -export interface ParseRuntime { - /** - * If need convert ignoreColumn from column name(string) to column index (number). Parser needs column index. - */ - needProcessIgnoreColumn: boolean; - /** - * If need convert includeColumn from column name(string) to column index (number). Parser needs column index. - */ - needProcessIncludeColumn: boolean; - /** - * the indexes of columns to reserve, undefined means reserve all, [] means hide all - */ - selectedColumns?: number[]; - ended: boolean; - hasError: boolean; - error?: Error; - /** - * Inferred delimiter - */ - delimiter: string | string[]; - /** - * Inferred eol - */ - eol?: string; - /** - * Converter function for a column. Populated at runtime. - */ - columnConv: (CellParser | null)[], - headerType: any[], - headerTitle: string[], - headerFlag: any[], - /** - * Inferred headers - */ - headers?: any[], - csvLineBuffer?: Buffer, - - /** - * after first chunk of data being processed and emitted, started will become true. - */ - started: boolean, - preRawDataHook?: PreRawDataCallback, - preFileLineHook?: PreFileLineCallback, - parsedLineNumber: number, - - columnValueSetter: Function[]; - subscribe?: { - onNext?: (data: any, lineNumber:number) => void | PromiseLike; - onError?: (err: CSVError) => void; - onCompleted?: () => void; - }; - then?: { - onfulfilled: (value: any[]) => any; - onrejected: (err: Error) => any; - } - -} -export function initParseRuntime(converter: Converter): ParseRuntime { - const params = converter.parseParam; - const rtn: ParseRuntime = { - needProcessIgnoreColumn: false, - needProcessIncludeColumn: false, - selectedColumns: undefined, - ended: false, - hasError: false, - error: undefined, - delimiter: converter.parseParam.delimiter, - eol: converter.parseParam.eol, - columnConv: [], - headerType: [], - headerTitle: [], - headerFlag: [], - headers: undefined, - started: false, - parsedLineNumber: 0, - columnValueSetter: [], - } - if (params.ignoreColumns) { - rtn.needProcessIgnoreColumn = true; - } - if (params.includeColumns) { - rtn.needProcessIncludeColumn = true; - } - return rtn; -} \ No newline at end of file diff --git a/node_modules/csvtojson/src/ProcessFork.ts b/node_modules/csvtojson/src/ProcessFork.ts deleted file mode 100644 index 346d894..0000000 --- a/node_modules/csvtojson/src/ProcessFork.ts +++ /dev/null @@ -1,150 +0,0 @@ -import { Processor, ProcessLineResult } from "./Processor"; -import P from "bluebird" -import { Converter } from "./Converter"; -import { ChildProcess } from "child_process"; -import { CSVParseParam, mergeParams } from "./Parameters"; -import { ParseRuntime } from "./ParseRuntime"; -import { Readable, Writable } from "stream"; -import { bufFromString, emptyBuffer } from "./util"; -import CSVError from "./CSVError"; - -export class ProcessorFork extends Processor { - flush(): P { - return new P((resolve, reject) => { - // console.log("flush"); - this.finalChunk = true; - this.next = resolve; - this.childProcess.stdin.end(); - // this.childProcess.stdout.on("end",()=>{ - // // console.log("!!!!"); - // this.flushResult(); - // }) - }); - } - destroy(): P { - this.childProcess.kill(); - return P.resolve(); - } - childProcess: ChildProcess; - inited: boolean = false; - private resultBuf: ProcessLineResult[] = []; - private leftChunk: string = ""; - private finalChunk: boolean = false; - private next?: (result: ProcessLineResult[]) => any; - constructor(protected converter: Converter) { - super(converter); - this.childProcess = require("child_process").spawn(process.execPath, [__dirname + "/../v2/worker.js"], { - stdio: ["pipe", "pipe", "pipe", "ipc"] - }); - this.initWorker(); - } - private prepareParam(param:CSVParseParam):any{ - const clone:any=mergeParams(param); - if (clone.ignoreColumns){ - clone.ignoreColumns={ - source:clone.ignoreColumns.source, - flags:clone.ignoreColumns.flags - } - } - if (clone.includeColumns){ - clone.includeColumns={ - source:clone.includeColumns.source, - flags:clone.includeColumns.flags - } - } - return clone; - } - private initWorker() { - this.childProcess.on("exit",()=>{ - this.flushResult(); - }) - this.childProcess.send({ - cmd: "init", - params: this.prepareParam(this.converter.parseParam) - } as InitMessage); - this.childProcess.on("message", (msg: Message) => { - if (msg.cmd === "inited") { - this.inited = true; - } else if (msg.cmd === "eol") { - if (this.converter.listeners("eol").length > 0){ - this.converter.emit("eol",(msg as StringMessage).value); - } - }else if (msg.cmd === "header") { - if (this.converter.listeners("header").length > 0){ - this.converter.emit("header",(msg as StringMessage).value); - } - }else if (msg.cmd === "done"){ - - // this.flushResult(); - } - - }); - this.childProcess.stdout.on("data", (data) => { - // console.log("stdout", data.toString()); - const res = data.toString(); - // console.log(res); - this.appendBuf(res); - - }); - this.childProcess.stderr.on("data", (data) => { - // console.log("stderr", data.toString()); - this.converter.emit("error", CSVError.fromJSON(JSON.parse(data.toString()))); - }); - - } - private flushResult() { - // console.log("flush result", this.resultBuf.length); - if (this.next) { - this.next(this.resultBuf); - } - this.resultBuf = []; - } - private appendBuf(data: string) { - const res = this.leftChunk + data; - const list = res.split("\n"); - let counter = 0; - const lastBit = list[list.length - 1]; - if (lastBit !== "") { - this.leftChunk = list.pop() || ""; - } else { - this.leftChunk = ""; - } - this.resultBuf=this.resultBuf.concat(list); - // while (list.length) { - // let item = list.shift() || ""; - // if (item.length === 0 ) { - // continue; - // } - // // if (this.params.output !== "line") { - // // item = JSON.parse(item); - // // } - // this.resultBuf.push(item); - // counter++; - // } - // console.log("buf length",this.resultBuf.length); - } - - process(chunk: Buffer): P { - return new P((resolve, reject) => { - // console.log("chunk", chunk.length); - this.next = resolve; - // this.appendReadBuf(chunk); - this.childProcess.stdin.write(chunk, () => { - // console.log("chunk callback"); - this.flushResult(); - }); - }); - } -} - -export interface Message { - cmd: string -} - -export interface InitMessage extends Message { - params: any; -} -export interface StringMessage extends Message { - value: string -} -export const EOM = "\x03"; \ No newline at end of file diff --git a/node_modules/csvtojson/src/Processor.ts b/node_modules/csvtojson/src/Processor.ts deleted file mode 100644 index 97d1b17..0000000 --- a/node_modules/csvtojson/src/Processor.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Converter } from "./Converter"; -import P from "bluebird"; -import { JSONResult } from "./lineToJson"; -import { CSVParseParam } from "./Parameters"; -import { ParseRuntime } from "./ParseRuntime"; - -export abstract class Processor { - protected params: CSVParseParam; - protected runtime: ParseRuntime; - constructor(protected converter: Converter) { - this.params = converter.parseParam; - this.runtime = converter.parseRuntime; - } - abstract process(chunk: Buffer,finalChunk?:boolean): P - abstract destroy():P; - abstract flush(): P; -} -export type ProcessLineResult = string | string[] | JSONResult; diff --git a/node_modules/csvtojson/src/ProcessorLocal.test.ts b/node_modules/csvtojson/src/ProcessorLocal.test.ts deleted file mode 100644 index f4d66ab..0000000 --- a/node_modules/csvtojson/src/ProcessorLocal.test.ts +++ /dev/null @@ -1,40 +0,0 @@ -import {ProcessorLocal} from "./ProcessorLocal"; -import { Converter } from "./Converter"; -import P from "bluebird"; -import {readFileSync} from "fs"; -import path from "path"; -import assert from "assert"; -import { JSONResult } from "./lineToJson"; -const dataDir=path.join(__dirname,"../test/data/"); -describe("ProcessLocal",()=>{ - it ("should process csv chunks and output json",async function (){ - const processor=new ProcessorLocal(new Converter()); - const data=readFileSync(dataDir+"/complexJSONCSV"); - const lines=await processor.process(data); - assert(lines.length === 2); - const line0=lines[0] as JSONResult; - assert.equal(line0.fieldA.title,"Food Factory"); - assert.equal(line0.fieldA.children.length,2); - assert.equal(line0.fieldA.children[1].employee[0].name,"Tim"); - }) - it ("should process csv chunks and output csv rows",async function (){ - const processor=new ProcessorLocal(new Converter({output:"line"})); - const data=readFileSync(dataDir+"/complexJSONCSV"); - const lines=await processor.process(data); - - assert(lines.length === 2); - }) - it ("should return empty array if preRawHook removed the data",()=>{ - const conv=new Converter(); - conv.preRawData((str)=>{ - return ""; - }); - const processor=new ProcessorLocal(conv); - const data=readFileSync(dataDir+"/complexJSONCSV"); - return processor.process(data) - .then((list)=>{ - assert.equal(list.length,0); - }) - }) -}) - diff --git a/node_modules/csvtojson/src/ProcessorLocal.ts b/node_modules/csvtojson/src/ProcessorLocal.ts deleted file mode 100644 index 01ba50c..0000000 --- a/node_modules/csvtojson/src/ProcessorLocal.ts +++ /dev/null @@ -1,270 +0,0 @@ -import { Processor, ProcessLineResult } from "./Processor"; -import P from "bluebird"; -import { prepareData } from "./dataClean"; -import getEol from "./getEol"; -import { stringToLines } from "./fileline"; -import { bufFromString, filterArray,trimLeft } from "./util"; -import { RowSplit } from "./rowSplit"; -import lineToJson from "./lineToJson"; -import { ParseRuntime } from "./ParseRuntime"; -import CSVError from "./CSVError"; - - - -export class ProcessorLocal extends Processor { - flush(): P { - if (this.runtime.csvLineBuffer && this.runtime.csvLineBuffer.length > 0) { - const buf = this.runtime.csvLineBuffer; - this.runtime.csvLineBuffer = undefined; - return this.process(buf, true) - .then((res) => { - if (this.runtime.csvLineBuffer && this.runtime.csvLineBuffer.length > 0) { - return P.reject(CSVError.unclosed_quote(this.runtime.parsedLineNumber, this.runtime.csvLineBuffer.toString())) - } else { - return P.resolve(res); - } - }) - } else { - return P.resolve([]); - } - } - destroy(): P { - return P.resolve(); - } - private rowSplit: RowSplit = new RowSplit(this.converter); - private eolEmitted = false; - private _needEmitEol?: boolean = undefined; - private get needEmitEol() { - if (this._needEmitEol === undefined) { - this._needEmitEol = this.converter.listeners("eol").length > 0; - } - return this._needEmitEol; - } - private headEmitted = false; - private _needEmitHead?: boolean = undefined; - private get needEmitHead() { - if (this._needEmitHead === undefined) { - this._needEmitHead = this.converter.listeners("header").length > 0; - } - return this._needEmitHead; - - } - process(chunk: Buffer, finalChunk = false): P { - let csvString: string; - if (finalChunk) { - csvString = chunk.toString(); - } else { - csvString = prepareData(chunk, this.converter.parseRuntime); - - } - return P.resolve() - .then(() => { - if (this.runtime.preRawDataHook) { - return this.runtime.preRawDataHook(csvString); - } else { - return csvString; - } - }) - .then((csv) => { - if (csv && csv.length > 0) { - return this.processCSV(csv, finalChunk); - } else { - return P.resolve([]); - } - }) - } - private processCSV(csv: string, finalChunk: boolean): P { - const params = this.params; - const runtime = this.runtime; - if (!runtime.eol) { - getEol(csv, runtime); - } - if (this.needEmitEol && !this.eolEmitted && runtime.eol) { - this.converter.emit("eol", runtime.eol); - this.eolEmitted = true; - } - // trim csv file has initial blank lines. - if (params.ignoreEmpty && !runtime.started) { - csv = trimLeft(csv); - } - const stringToLineResult = stringToLines(csv, runtime); - if (!finalChunk) { - this.prependLeftBuf(bufFromString(stringToLineResult.partial)); - } else { - stringToLineResult.lines.push(stringToLineResult.partial); - stringToLineResult.partial = ""; - } - if (stringToLineResult.lines.length > 0) { - let prom: P; - if (runtime.preFileLineHook) { - prom = this.runPreLineHook(stringToLineResult.lines); - } else { - prom = P.resolve(stringToLineResult.lines); - } - return prom.then((lines) => { - if (!runtime.started - && !this.runtime.headers - ) { - return this.processDataWithHead(lines); - } else { - return this.processCSVBody(lines); - } - - }) - - } else { - - return P.resolve([]); - } - - } - private processDataWithHead(lines: string[]): ProcessLineResult[] { - if (this.params.noheader) { - if (this.params.headers) { - this.runtime.headers = this.params.headers; - } else { - this.runtime.headers = []; - } - } else { - let left = ""; - let headerRow: string[] = []; - while (lines.length) { - const line = left + lines.shift(); - const row = this.rowSplit.parse(line); - if (row.closed) { - headerRow = row.cells; - left = ""; - break; - } else { - left = line + getEol(line, this.runtime); - } - } - this.prependLeftBuf(bufFromString(left)); - - if (headerRow.length === 0) { - return []; - } - if (this.params.headers) { - this.runtime.headers = this.params.headers; - } else { - this.runtime.headers = headerRow; - } - } - if (this.runtime.needProcessIgnoreColumn || this.runtime.needProcessIncludeColumn) { - this.filterHeader(); - } - if (this.needEmitHead && !this.headEmitted) { - this.converter.emit("header", this.runtime.headers); - this.headEmitted = true; - } - return this.processCSVBody(lines); - } - private filterHeader() { - this.runtime.selectedColumns = []; - if (this.runtime.headers) { - const headers = this.runtime.headers; - for (let i = 0; i < headers.length; i++) { - if (this.params.ignoreColumns) { - if (this.params.ignoreColumns.test(headers[i])) { - if (this.params.includeColumns && this.params.includeColumns.test(headers[i])) { - this.runtime.selectedColumns.push(i); - } else { - continue; - } - } else { - this.runtime.selectedColumns.push(i); - } - } else if (this.params.includeColumns) { - if (this.params.includeColumns.test(headers[i])) { - this.runtime.selectedColumns.push(i); - } - } else { - this.runtime.selectedColumns.push(i); - } - // if (this.params.includeColumns && this.params.includeColumns.test(headers[i])){ - // this.runtime.selectedColumns.push(i); - // }else{ - // if (this.params.ignoreColumns && this.params.ignoreColumns.test(headers[i])){ - // continue; - // }else{ - // if (this.params.ignoreColumns && !this.params.includeColumns){ - // this.runtime.selectedColumns.push(i); - // } - - // } - // } - } - this.runtime.headers = filterArray(this.runtime.headers, this.runtime.selectedColumns); - } - - } - private processCSVBody(lines: string[]): ProcessLineResult[] { - if (this.params.output === "line") { - return lines; - } else { - const result = this.rowSplit.parseMultiLines(lines); - this.prependLeftBuf(bufFromString(result.partial)); - if (this.params.output === "csv") { - return result.rowsCells; - } else { - return lineToJson(result.rowsCells, this.converter); - } - } - - // var jsonArr = linesToJson(lines.lines, params, this.recordNum); - // this.processResult(jsonArr); - // this.lastIndex += jsonArr.length; - // this.recordNum += jsonArr.length; - } - - private prependLeftBuf(buf: Buffer) { - if (buf) { - if (this.runtime.csvLineBuffer) { - this.runtime.csvLineBuffer = Buffer.concat([buf, this.runtime.csvLineBuffer]); - } else { - this.runtime.csvLineBuffer = buf; - } - } - - } - private runPreLineHook(lines: string[]): P { - return new P((resolve, reject) => { - processLineHook(lines, this.runtime, 0, (err) => { - if (err) { - reject(err); - } else { - resolve(lines); - } - }) - }); - } -} - -function processLineHook(lines: string[], runtime: ParseRuntime, offset: number, - cb: (err?) => void -) { - if (offset >= lines.length) { - cb(); - } else { - if (runtime.preFileLineHook) { - const line = lines[offset]; - const res = runtime.preFileLineHook(line, runtime.parsedLineNumber + offset); - offset++; - if (res && (res as PromiseLike).then) { - (res as PromiseLike).then((value) => { - lines[offset - 1] = value; - processLineHook(lines, runtime, offset, cb); - }); - } else { - lines[offset - 1] = res as string; - while (offset < lines.length) { - lines[offset] = runtime.preFileLineHook(lines[offset], runtime.parsedLineNumber + offset) as string; - offset++; - } - cb(); - } - } else { - cb(); - } - } -} \ No newline at end of file diff --git a/node_modules/csvtojson/src/Result.test.ts b/node_modules/csvtojson/src/Result.test.ts deleted file mode 100644 index 9797c07..0000000 --- a/node_modules/csvtojson/src/Result.test.ts +++ /dev/null @@ -1,22 +0,0 @@ -import {Result} from "./Result"; -import { Converter } from "./Converter"; -import P from "bluebird"; -import {readFileSync} from "fs"; -import path from "path"; -import assert from "assert"; -import { JSONResult } from "./lineToJson"; -const dataDir=path.join(__dirname,"../test/data/"); - -describe("Result",()=>{ - it ("should return need push downstream based on needEmitAll parameter",function (){ - const conv=new Converter(); - const res=new Result(conv); - assert.equal(res["needEmitAll"],false); - conv.then(); - assert.equal(res["needEmitAll"],true); - conv.parseParam.needEmitAll=false; - assert.equal(res["needEmitAll"],false); - }); - -}) - diff --git a/node_modules/csvtojson/src/Result.ts b/node_modules/csvtojson/src/Result.ts deleted file mode 100644 index 7c376ab..0000000 --- a/node_modules/csvtojson/src/Result.ts +++ /dev/null @@ -1,164 +0,0 @@ -import { Converter } from "./Converter"; -import { ProcessLineResult } from "./Processor"; -import P from "bluebird"; -import CSVError from "./CSVError"; -import { EOL } from "os"; -export class Result { - private get needEmitLine(): boolean { - return !!this.converter.parseRuntime.subscribe && !!this.converter.parseRuntime.subscribe.onNext || this.needPushDownstream - } - private _needPushDownstream?: boolean; - private get needPushDownstream(): boolean { - if (this._needPushDownstream === undefined) { - this._needPushDownstream = this.converter.listeners("data").length > 0 || this.converter.listeners("readable").length > 0; - } - return this._needPushDownstream; - } - private get needEmitAll(): boolean { - return !!this.converter.parseRuntime.then && this.converter.parseParam.needEmitAll; - // return !!this.converter.parseRuntime.then; - } - private finalResult: any[] = []; - constructor(private converter: Converter) { } - processResult(resultLines: ProcessLineResult[]): P { - const startPos = this.converter.parseRuntime.parsedLineNumber; - if (this.needPushDownstream && this.converter.parseParam.downstreamFormat === "array") { - if (startPos === 0) { - pushDownstream(this.converter, "[" + EOL); - } - } - // let prom: P; - return new P((resolve, reject) => { - if (this.needEmitLine) { - processLineByLine( - resultLines, - this.converter, - 0, - this.needPushDownstream, - (err) => { - if (err) { - reject(err); - } else { - this.appendFinalResult(resultLines); - resolve(); - } - }, - ) - // resolve(); - } else { - this.appendFinalResult(resultLines); - resolve(); - } - }) - } - appendFinalResult(lines: any[]) { - if (this.needEmitAll) { - this.finalResult = this.finalResult.concat(lines); - } - this.converter.parseRuntime.parsedLineNumber += lines.length; - } - processError(err: CSVError) { - if (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onError) { - this.converter.parseRuntime.subscribe.onError(err); - } - if (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onrejected) { - this.converter.parseRuntime.then.onrejected(err); - } - } - endProcess() { - - if (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onfulfilled) { - if (this.needEmitAll) { - this.converter.parseRuntime.then.onfulfilled(this.finalResult); - }else{ - this.converter.parseRuntime.then.onfulfilled([]); - } - } - if (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onCompleted) { - this.converter.parseRuntime.subscribe.onCompleted(); - } - if (this.needPushDownstream && this.converter.parseParam.downstreamFormat === "array") { - pushDownstream(this.converter, "]" + EOL); - } - } -} - -function processLineByLine( - lines: ProcessLineResult[], - - conv: Converter, - offset: number, - needPushDownstream: boolean, - cb: (err?) => void, -) { - if (offset >= lines.length) { - cb(); - } else { - if (conv.parseRuntime.subscribe && conv.parseRuntime.subscribe.onNext) { - const hook = conv.parseRuntime.subscribe.onNext; - const nextLine = lines[offset]; - const res = hook(nextLine, conv.parseRuntime.parsedLineNumber + offset); - offset++; - // if (isAsync === undefined) { - if (res && res.then) { - res.then(function () { - processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine); - }, cb); - } else { - // processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, false); - if (needPushDownstream) { - pushDownstream(conv, nextLine); - } - while (offset < lines.length) { - const line = lines[offset]; - hook(line, conv.parseRuntime.parsedLineNumber + offset); - offset++; - if (needPushDownstream) { - pushDownstream(conv, line); - } - } - cb(); - } - // } else if (isAsync === true) { - // (res as PromiseLike).then(function () { - // processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, true); - // }, cb); - // } else if (isAsync === false) { - // processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, false); - // } - } else { - if (needPushDownstream) { - while (offset < lines.length) { - const line = lines[offset++]; - pushDownstream(conv, line); - } - - } - cb(); - } - - } -} - -function processRecursive( - lines: ProcessLineResult[], - hook: (data: any, lineNumber: number) => void | PromiseLike, - conv: Converter, - offset: number, - needPushDownstream: boolean, - cb: (err?) => void, - res: ProcessLineResult, -) { - if (needPushDownstream) { - pushDownstream(conv, res); - } - processLineByLine(lines, conv, offset, needPushDownstream, cb); -} -function pushDownstream(conv: Converter, res: ProcessLineResult) { - if (typeof res === "object" && !conv.options.objectMode) { - const data = JSON.stringify(res); - conv.push(data + (conv.parseParam.downstreamFormat === "array" ? "," + EOL : EOL), "utf8"); - } else { - conv.push(res); - } -} \ No newline at end of file diff --git a/node_modules/csvtojson/src/dataClean.ts b/node_modules/csvtojson/src/dataClean.ts deleted file mode 100644 index 7014202..0000000 --- a/node_modules/csvtojson/src/dataClean.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { ParseRuntime } from "./ParseRuntime"; -import stripBom from "strip-bom"; -/** - * For each data chunk coming to parser: - * 1. append the data to the buffer that is left from last chunk - * 2. check if utf8 chars being split, if does, stripe the bytes and add to left buffer. - * 3. stripBom - */ -export function prepareData(chunk: Buffer, runtime: ParseRuntime): string { - const workChunk = concatLeftChunk(chunk, runtime); - runtime.csvLineBuffer = undefined; - const cleanCSVString = cleanUtf8Split(workChunk, runtime).toString("utf8"); - if (runtime.started === false) { - return stripBom(cleanCSVString); - } else { - return cleanCSVString; - } -} -/** - * append data to buffer that is left form last chunk - */ -function concatLeftChunk(chunk: Buffer, runtime: ParseRuntime): Buffer { - if (runtime.csvLineBuffer && runtime.csvLineBuffer.length > 0) { - return Buffer.concat([runtime.csvLineBuffer, chunk]); - } else { - return chunk; - } -} -/** - * check if utf8 chars being split, if does, stripe the bytes and add to left buffer. - */ -function cleanUtf8Split(chunk: Buffer, runtime: ParseRuntime): Buffer { - let idx = chunk.length - 1; - /** - * From Keyang: - * The code below is to check if a single utf8 char (which could be multiple bytes) being split. - * If the char being split, the buffer from two chunk needs to be concat - * check how utf8 being encoded to understand the code below. - * If anyone has any better way to do this, please let me know. - */ - if ((chunk[idx] & 1 << 7) != 0) { - while ((chunk[idx] & 3 << 6) === 128) { - idx--; - } - idx--; - } - if (idx != chunk.length - 1) { - runtime.csvLineBuffer = chunk.slice(idx + 1); - return chunk.slice(0, idx + 1) - // var _cb=cb; - // var self=this; - // cb=function(){ - // if (self._csvLineBuffer){ - // self._csvLineBuffer=Buffer.concat([bufFromString(self._csvLineBuffer,"utf8"),left]); - // }else{ - // self._csvLineBuffer=left; - // } - // _cb(); - // } - } else { - return chunk; - } -} \ No newline at end of file diff --git a/node_modules/csvtojson/src/fileline.test.ts b/node_modules/csvtojson/src/fileline.test.ts deleted file mode 100644 index 1f2bbc8..0000000 --- a/node_modules/csvtojson/src/fileline.test.ts +++ /dev/null @@ -1,14 +0,0 @@ -import {stringToLines} from "./fileline"; -import { mergeParams } from "./Parameters"; -import { Converter } from "./Converter"; -var assert = require("assert"); -describe("fileline function", function() { - it ("should convert data to multiple lines ", function() { - const conv=new Converter(); - var data = "abcde\nefef"; - var result = stringToLines(data, conv.parseRuntime); - assert.equal(result.lines.length, 1); - assert.equal(result.partial, "efef"); - assert.equal(result.lines[0], "abcde"); - }); -}); diff --git a/node_modules/csvtojson/src/fileline.ts b/node_modules/csvtojson/src/fileline.ts deleted file mode 100644 index 9b6ed49..0000000 --- a/node_modules/csvtojson/src/fileline.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ParseRuntime } from "./ParseRuntime"; -import getEol from "./getEol"; -// const getEol = require("./getEol"); -/** - * convert data chunk to file lines array - * @param {string} data data chunk as utf8 string - * @param {object} param Converter param object - * @return {Object} {lines:[line1,line2...],partial:String} - */ -export function stringToLines(data: string, param: ParseRuntime): StringToLinesResult { - const eol = getEol(data, param); - const lines = data.split(eol); - const partial = lines.pop() || ""; - return { lines: lines, partial: partial }; -}; - - -export interface StringToLinesResult { - lines: Fileline[], - /** - * last line which could be incomplete line. - */ - partial: string -} -export type Fileline = string; \ No newline at end of file diff --git a/node_modules/csvtojson/src/getEol.ts b/node_modules/csvtojson/src/getEol.ts deleted file mode 100644 index cb10f9b..0000000 --- a/node_modules/csvtojson/src/getEol.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { ParseRuntime } from "./ParseRuntime"; -//return first eol found from a data chunk. -export default function (data: string, param: ParseRuntime): string { - if (!param.eol && data) { - for (var i = 0, len = data.length; i < len; i++) { - if (data[i] === "\r") { - if (data[i + 1] === "\n") { - param.eol = "\r\n"; - break; - } else if (data[i + 1]) { - param.eol = "\r"; - break; - } - } else if (data[i] === "\n") { - param.eol = "\n"; - break; - } - } - } - return param.eol || "\n"; -}; diff --git a/node_modules/csvtojson/src/index.ts b/node_modules/csvtojson/src/index.ts deleted file mode 100644 index 82a8e6c..0000000 --- a/node_modules/csvtojson/src/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { TransformOptions } from "stream"; -import { CSVParseParam } from "./Parameters"; -import { Converter } from "./Converter"; - -const helper = function (param?: Partial, options?: TransformOptions): Converter { - return new Converter(param, options); -} -helper["csv"] = helper; -helper["Converter"] = Converter; -export =helper; diff --git a/node_modules/csvtojson/src/lineToJson.ts b/node_modules/csvtojson/src/lineToJson.ts deleted file mode 100644 index b89ee81..0000000 --- a/node_modules/csvtojson/src/lineToJson.ts +++ /dev/null @@ -1,210 +0,0 @@ -import { Converter } from "./Converter"; -import CSVError from "./CSVError"; -import { CellParser, ColumnParam } from "./Parameters"; -import set from "lodash/set"; -import { ParseRuntime } from "./ParseRuntime"; - -var numReg = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/; - -export default function (csvRows: string[][], conv: Converter): JSONResult[] { - const res: JSONResult[] = []; - for (let i = 0, len = csvRows.length; i < len; i++) { - const r = processRow(csvRows[i], conv, i); - if (r) { - res.push(r); - } - } - return res; -}; -export type JSONResult = { - [key: string]: any -} - -function processRow(row: string[], conv: Converter, index): JSONResult | null { - - if (conv.parseParam.checkColumn && conv.parseRuntime.headers && row.length !== conv.parseRuntime.headers.length) { - throw (CSVError.column_mismatched(conv.parseRuntime.parsedLineNumber + index)) - } - - const headRow = conv.parseRuntime.headers || []; - const resultRow = convertRowToJson(row, headRow, conv); - if (resultRow) { - return resultRow; - } else { - return null; - } -} - -function convertRowToJson(row: string[], headRow: string[], conv: Converter): { [key: string]: any } | null { - let hasValue = false; - const resultRow = {}; - - for (let i = 0, len = row.length; i < len; i++) { - let item = row[i]; - - if (conv.parseParam.ignoreEmpty && item === '') { - continue; - } - hasValue = true; - - let head = headRow[i]; - if (!head || head === "") { - head = headRow[i] = "field" + (i + 1); - } - const convFunc = getConvFunc(head, i, conv); - if (convFunc) { - const convRes = convFunc(item, head, resultRow, row, i); - if (convRes !== undefined) { - setPath(resultRow, head, convRes, conv,i); - } - } else { - // var flag = getFlag(head, i, param); - // if (flag === 'omit') { - // continue; - // } - if (conv.parseParam.checkType) { - const convertFunc = checkType(item, head, i, conv); - item = convertFunc(item); - } - if (item !== undefined) { - setPath(resultRow, head, item, conv,i); - } - } - } - if (hasValue) { - return resultRow; - } else { - return null; - } -} - -const builtInConv: { [key: string]: CellParser } = { - "string": stringType, - "number": numberType, - "omit": function () { } -} -function getConvFunc(head: string, i: number, conv: Converter): CellParser | null { - if (conv.parseRuntime.columnConv[i] !== undefined) { - return conv.parseRuntime.columnConv[i]; - } else { - let flag = conv.parseParam.colParser[head]; - if (flag === undefined) { - return conv.parseRuntime.columnConv[i] = null; - } - if (typeof flag === "object") { - flag = (flag as ColumnParam).cellParser || "string"; - } - if (typeof flag === "string") { - flag = flag.trim().toLowerCase(); - const builtInFunc = builtInConv[flag]; - if (builtInFunc) { - return conv.parseRuntime.columnConv[i] = builtInFunc; - } else { - return conv.parseRuntime.columnConv[i] = null; - } - } else if (typeof flag === "function") { - return conv.parseRuntime.columnConv[i] = flag; - } else { - return conv.parseRuntime.columnConv[i] = null; - } - } -} -function setPath(resultJson: any, head: string, value: any, conv: Converter,headIdx:number) { - if (!conv.parseRuntime.columnValueSetter[headIdx]) { - if (conv.parseParam.flatKeys) { - conv.parseRuntime.columnValueSetter[headIdx] = flatSetter; - } else { - - if (head.indexOf(".") > -1) { - const headArr=head.split("."); - let jsonHead=true; - while(headArr.length>0){ - const headCom=headArr.shift(); - if (headCom!.length===0){ - jsonHead=false; - break; - } - } - if (!jsonHead || conv.parseParam.colParser[head] && (conv.parseParam.colParser[head] as ColumnParam).flat) { - conv.parseRuntime.columnValueSetter[headIdx] = flatSetter; - } else { - conv.parseRuntime.columnValueSetter[headIdx] = jsonSetter; - } - } else { - conv.parseRuntime.columnValueSetter[headIdx] = flatSetter; - } - } - } - if (conv.parseParam.nullObject ===true && value ==="null"){ - value=null; - } - conv.parseRuntime.columnValueSetter[headIdx](resultJson, head, value); - // flatSetter(resultJson, head, value); - -} -function flatSetter(resultJson: any, head: string, value: any) { - resultJson[head] = value; -} -function jsonSetter(resultJson: any, head: string, value: any) { - set(resultJson, head, value); -} - - -function checkType(item: string, head: string, headIdx: number, conv: Converter): Function { - if (conv.parseRuntime.headerType[headIdx]) { - return conv.parseRuntime.headerType[headIdx]; - } else if (head.indexOf('number#!') > -1) { - return conv.parseRuntime.headerType[headIdx] = numberType; - } else if (head.indexOf('string#!') > -1) { - return conv.parseRuntime.headerType[headIdx] = stringType; - } else if (conv.parseParam.checkType) { - return conv.parseRuntime.headerType[headIdx] = dynamicType; - } else { - return conv.parseRuntime.headerType[headIdx] = stringType; - } -} - -function numberType(item) { - var rtn = parseFloat(item); - if (isNaN(rtn)) { - return item; - } - return rtn; -} - -function stringType(item: string): string { - return item.toString(); -} - -function dynamicType(item) { - var trimed = item.trim(); - if (trimed === "") { - return stringType(item); - } - if (numReg.test(trimed)) { - return numberType(item); - } else if (trimed.length === 5 && trimed.toLowerCase() === "false" || trimed.length === 4 && trimed.toLowerCase() === "true") { - return booleanType(item); - } else if (trimed[0] === "{" && trimed[trimed.length - 1] === "}" || trimed[0] === "[" && trimed[trimed.length - 1] === "]") { - return jsonType(item); - } else { - return stringType(item); - } -} - -function booleanType(item) { - var trimed = item.trim(); - if (trimed.length === 5 && trimed.toLowerCase() === "false") { - return false; - } else { - return true; - } -} - -function jsonType(item) { - try { - return JSON.parse(item); - } catch (e) { - return item; - } -} diff --git a/node_modules/csvtojson/src/rowSplit.test.ts b/node_modules/csvtojson/src/rowSplit.test.ts deleted file mode 100644 index 3598a62..0000000 --- a/node_modules/csvtojson/src/rowSplit.test.ts +++ /dev/null @@ -1,142 +0,0 @@ -import { RowSplit, MultipleRowResult, RowSplitResult } from "./rowSplit"; -import { Converter } from "./Converter"; -const assert = require("assert"); - -describe("Test delimiters", function () { - const getDelimiter = (str, opt: { delimiter: string | string[] }): string => { - return RowSplit.prototype["getDelimiter"].call({ - conv: { - parseParam: { - delimiter: opt.delimiter - } - } - }, str); - } - - it("should return the explicitly specified delimiter", function () { - var delimiter = ";"; - var rowStr = "a;b;c"; - var returnedDelimiter = getDelimiter(rowStr, { delimiter: ";" }); - assert.equal(returnedDelimiter, delimiter); - }); - - it("should return the autodetected delimiter if 'auto' specified", function () { - var rowStr = "a;b;c"; - var returnedDelimiter = getDelimiter(rowStr, { delimiter: "auto" }); - assert(returnedDelimiter === ";"); - }); - - it("should return the ',' delimiter if delimiter cannot be specified, in case of 'auto'", function () { - var rowStr = "abc"; - var returnedDelimiter = getDelimiter(rowStr, { delimiter: "auto" }); - assert(returnedDelimiter === ","); - }); - - it("should accetp an array with potential delimiters", function () { - var rowStr = "a$b$c"; - var returnedDelimiter = getDelimiter(rowStr, { delimiter: [",", ";", "$"] }); - assert(returnedDelimiter === '$'); - }); -}); - -describe("ParseMultiLine function", function () { - const rowSplit = new RowSplit(new Converter()); - const func = (lines: string[]): MultipleRowResult => { - return rowSplit.parseMultiLines(lines); - } - it("should convert lines to csv lines", function () { - var lines = [ - "a,b,c,d", - "hello,world,csvtojson,abc", - "1,2,3,4" - ]; - var res = func(lines); - assert.equal(res.rowsCells.length, 3); - assert.equal(res.partial, ""); - }); - - it("should process line breaks", function () { - var lines = [ - "a,b,c", - '15",hello,"ab', - "cde\"", - "\"b\"\"b\",cc,dd" - ]; - var res = func(lines); - assert.equal(res.rowsCells.length, 3); - assert.equal(res.rowsCells[1][0], "15\""); - assert.equal(res.rowsCells[1][2], "ab\ncde"); - assert.equal(res.rowsCells[2][0], "b\"b"); - assert.equal(res.partial, ""); - }); - - it("should return partial if line not closed", function () { - var lines = [ - "a,b,c", - '15",hello,"ab', - "d,e,f" - ]; - var res = func(lines); - assert.equal(res.rowsCells.length, 1); - assert.equal(res.partial, "15\",hello,\"ab\nd,e,f\n"); - }); -}); - -describe("RowSplit.parse function", function () { - const rowSplit = new RowSplit(new Converter()); - const func = (str): RowSplitResult => { - return rowSplit.parse(str); - } - it("should split complete csv line", function () { - var str = "hello,world,csvtojson,awesome"; - var res = func(str); - assert.equal(res.cells.length, 4); - assert.equal(res.closed, true); - }); - - it("should split incomplete csv line", function () { - var str = "hello,world,\"csvtojson,awesome"; - var res = func(str); - assert.equal(res.closed, false); - }); - - it("should allow multiple line", function () { - var str = "\"he\"llo\",world,\"csvtojson,a\"\nwesome\""; - var res = func(str); - assert.equal(res.closed, true); - assert.equal(res.cells[2], 'csvtojson,a"\nwesome'); - }); - it("should allow blank quotes", () => { - const data = "a|^^|^b^"; - - const rowSplit = new RowSplit(new Converter({ - delimiter: '|', - quote: '^', - noheader: true - })); - const res = rowSplit.parse(data); - assert.equal(res.cells[1], ""); - }) - it("should allow blank quotes in quotes", () => { - const data = 'a,"hello,this,"", test"'; - - const rowSplit = new RowSplit(new Converter({ - noheader: true - })); - const res = rowSplit.parse(data); - assert.equal(res.cells[1], 'hello,this,", test'); - }) - it("should smart detect if an initial quote is only part of value ", () => { - const data = '"Weight" (kg),Error code,"Height" (m)'; - const rowSplit = new RowSplit(new Converter({ - noheader: true - })); - const res = rowSplit.parse(data); - assert.equal(res.cells.length, 3); - assert(res.closed); - assert.equal(res.cells[0],'"Weight" (kg)'); - assert.equal(res.cells[1],'Error code'); - assert.equal(res.cells[2],'"Height" (m)'); - - }) -}); diff --git a/node_modules/csvtojson/src/rowSplit.ts b/node_modules/csvtojson/src/rowSplit.ts deleted file mode 100644 index e4b268e..0000000 --- a/node_modules/csvtojson/src/rowSplit.ts +++ /dev/null @@ -1,235 +0,0 @@ -import { CSVParseParam } from "./Parameters"; -import { Converter } from "./Converter"; -import { Fileline } from "./fileline"; -import getEol from "./getEol"; -import { filterArray, trimLeft, trimRight } from "./util"; - -const defaulDelimiters = [",", "|", "\t", ";", ":"]; -export class RowSplit { - private quote: string; - private trim: boolean; - private escape: string; - private cachedRegExp: { [key: string]: RegExp } = {}; - private delimiterEmitted = false; - private _needEmitDelimiter?: boolean = undefined; - private get needEmitDelimiter() { - if (this._needEmitDelimiter === undefined) { - this._needEmitDelimiter = this.conv.listeners("delimiter").length > 0; - } - return this._needEmitDelimiter; - } - constructor(private conv: Converter) { - this.quote = conv.parseParam.quote; - this.trim = conv.parseParam.trim; - this.escape = conv.parseParam.escape; - } - parse(fileline: Fileline): RowSplitResult { - if (fileline.length === 0 || (this.conv.parseParam.ignoreEmpty && fileline.trim().length === 0)) { - return { cells: [], closed: true }; - } - const quote = this.quote; - const trim = this.trim; - const escape = this.escape; - if (this.conv.parseRuntime.delimiter instanceof Array || this.conv.parseRuntime.delimiter.toLowerCase() === "auto") { - this.conv.parseRuntime.delimiter = this.getDelimiter(fileline); - - } - if (this.needEmitDelimiter && !this.delimiterEmitted) { - this.conv.emit("delimiter", this.conv.parseRuntime.delimiter); - this.delimiterEmitted = true; - } - const delimiter = this.conv.parseRuntime.delimiter; - const rowArr = fileline.split(delimiter); - if (quote === "off") { - if (trim) { - for (let i = 0; i < rowArr.length; i++) { - rowArr[i] = rowArr[i].trim(); - } - } - return { cells: rowArr, closed: true }; - } else { - return this.toCSVRow(rowArr, trim, quote, delimiter); - } - - } - private toCSVRow(rowArr: string[], trim: boolean, quote: string, delimiter: string): RowSplitResult { - const row: string[] = []; - let inquote = false; - let quoteBuff = ''; - for (let i = 0, rowLen = rowArr.length; i < rowLen; i++) { - let e = rowArr[i]; - if (!inquote && trim) { - e = trimLeft(e); - } - const len = e.length; - if (!inquote) { - if (len === 2 && e === this.quote + this.quote) { - row.push(""); - continue; - } else if (this.isQuoteOpen(e)) { //quote open - e = e.substr(1); - if (this.isQuoteClose(e)) { //quote close - e = e.substring(0, e.lastIndexOf(quote)); - e = this.escapeQuote(e); - row.push(e); - continue; - } else if (e.indexOf(quote) !== -1) { - let count = 0; - let prev = ""; - for (const c of e) { - // count quotes only if previous character is not escape char - if (c === quote && prev !== this.escape) { - count++; - prev = ""; - } else { - // save previous char to temp variable - prev = c; - } - } - if (count % 2 === 1) { - if (trim) { - e = trimRight(e); - } - row.push(quote + e); - continue; - }else{ - inquote = true; - quoteBuff += e; - continue; - } - } - else { - inquote = true; - quoteBuff += e; - continue; - } - } else { - if (trim) { - e = trimRight(e); - } - row.push(e); - continue; - } - } else { //previous quote not closed - if (this.isQuoteClose(e)) { //close double quote - inquote = false; - e = e.substr(0, len - 1); - quoteBuff += delimiter + e; - quoteBuff = this.escapeQuote(quoteBuff); - if (trim) { - quoteBuff = trimRight(quoteBuff); - } - row.push(quoteBuff); - quoteBuff = ""; - } else { - quoteBuff += delimiter + e; - } - } - } - - // if (!inquote && param._needFilterRow) { - // row = filterRow(row, param); - // } - - return { cells: row, closed: !inquote }; - } - private getDelimiter(fileline: Fileline): string { - let checker; - if (this.conv.parseParam.delimiter === "auto") { - checker = defaulDelimiters; - } else if (this.conv.parseParam.delimiter instanceof Array) { - checker = this.conv.parseParam.delimiter; - } else { - return this.conv.parseParam.delimiter; - } - let count = 0; - let rtn = ","; - checker.forEach(function (delim) { - const delimCount = fileline.split(delim).length; - if (delimCount > count) { - rtn = delim; - count = delimCount; - } - }); - return rtn; - } - private isQuoteOpen(str: string): boolean { - const quote = this.quote; - const escape = this.escape; - return str[0] === quote && ( - str[1] !== quote || - str[1] === escape && (str[2] === quote || str.length === 2)); - } - private isQuoteClose(str: string): boolean { - const quote = this.quote; - const escape = this.escape; - if (this.conv.parseParam.trim) { - str = trimRight(str); - } - let count = 0; - let idx = str.length - 1; - while (str[idx] === quote || str[idx] === escape) { - idx--; - count++; - } - return count % 2 !== 0; - } - - // private twoDoubleQuote(str: string): string { - // var twoQuote = this.quote + this.quote; - // var curIndex = -1; - // while ((curIndex = str.indexOf(twoQuote, curIndex)) > -1) { - // str = str.substring(0, curIndex) + str.substring(++curIndex); - // } - // return str; - // } - - - private escapeQuote(segment: string): string { - const key = "es|" + this.quote + "|" + this.escape; - if (this.cachedRegExp[key] === undefined) { - this.cachedRegExp[key] = new RegExp('\\' + this.escape + '\\' + this.quote, 'g'); - } - const regExp = this.cachedRegExp[key]; - // console.log(regExp,segment); - return segment.replace(regExp, this.quote); - } - parseMultiLines(lines: Fileline[]): MultipleRowResult { - const csvLines: string[][] = []; - let left = ""; - while (lines.length) { - const line = left + lines.shift(); - const row = this.parse(line); - if (row.cells.length === 0 && this.conv.parseParam.ignoreEmpty) { - continue; - } - if (row.closed || this.conv.parseParam.alwaysSplitAtEOL) { - if (this.conv.parseRuntime.selectedColumns) { - csvLines.push(filterArray(row.cells, this.conv.parseRuntime.selectedColumns)); - } else { - csvLines.push(row.cells); - } - - left = ""; - } else { - left = line + (getEol(line, this.conv.parseRuntime) || "\n"); - } - } - return { rowsCells: csvLines, partial: left }; - } -} -export interface MultipleRowResult { - rowsCells: string[][]; - partial: string; -} -export interface RowSplitResult { - /** - * csv row array. ["a","b","c"] - */ - cells: string[], - /** - * if the passed fileline is a complete row - */ - closed: boolean -} - diff --git a/node_modules/csvtojson/src/util.ts b/node_modules/csvtojson/src/util.ts deleted file mode 100644 index d68bf96..0000000 --- a/node_modules/csvtojson/src/util.ts +++ /dev/null @@ -1,37 +0,0 @@ -export function bufFromString(str: string): Buffer { - const length = Buffer.byteLength(str); - const buffer = Buffer.allocUnsafe - ? Buffer.allocUnsafe(length) - : new Buffer(length); - buffer.write(str); - return buffer; -} - -export function emptyBuffer(): Buffer{ - const buffer = Buffer.allocUnsafe - ? Buffer.allocUnsafe(0) - : new Buffer(0); - return buffer; -} - -export function filterArray(arr: any[], filter: number[]): any[] { - const rtn: any[] = []; - for (let i = 0; i < arr.length; i++) { - if (filter.indexOf(i) > -1) { - rtn.push(arr[i]); - } - } - return rtn; -} - -export const trimLeft=String.prototype.trimLeft?function trimLeftNative(str:string){ - return str.trimLeft(); -}:function trimLeftRegExp(str:string){ - return str.replace(/^\s+/, ""); -} - -export const trimRight=String.prototype.trimRight?function trimRightNative(str:string){ - return str.trimRight(); -}:function trimRightRegExp(str:string){ - return str.replace(/\s+$/, ""); -} diff --git a/node_modules/csvtojson/src/worker.ts b/node_modules/csvtojson/src/worker.ts deleted file mode 100644 index 2c78509..0000000 --- a/node_modules/csvtojson/src/worker.ts +++ /dev/null @@ -1,76 +0,0 @@ -// import { Converter } from "./Converter"; -// import { Message, InitMessage, EOM } from "./ProcessFork"; -// import CSVError from "./CSVError"; -// import { CSVParseParam } from "./Parameters"; -// process.on("message", processMsg); -// let conv: Converter; -// function processMsg(msg: Message) { -// if (msg.cmd === "init") { -// const param = prepareParams((msg as InitMessage).params); -// param.fork = false; -// conv = new Converter(param); -// process.stdin.pipe(conv).pipe(process.stdout); -// conv.on("error", (err) => { -// if ((err as CSVError).line) { -// process.stderr.write(JSON.stringify({ -// err: (err as CSVError).err, -// line: (err as CSVError).line, -// extra: (err as CSVError).extra -// })) -// } else { -// process.stderr.write(JSON.stringify({ -// err: err.message, -// line: -1, -// extra: "Unknown error" -// })); -// } - -// }); -// conv.on("eol", (eol) => { -// // console.log("eol!!!",eol); -// if (process.send) -// process.send({ cmd: "eol", "value": eol }); -// }) -// conv.on("header", (header) => { -// if (process.send) -// process.send({ cmd: "header", "value": header }); -// }) -// conv.on("done", () => { -// const drained = process.stdout.write("", () => { -// if (drained) { -// gracelyExit(); -// } -// }); -// if (!drained) { -// process.stdout.on("drain", gracelyExit) -// } - - -// // process.stdout.write(EOM); -// }) -// if (process.send) { -// process.send({ cmd: "inited" }); -// } - - -// } -// } -// function gracelyExit(){ -// setTimeout(()=>{ -// conv.removeAllListeners(); -// process.removeAllListeners(); -// },50); -// } -// function prepareParams(p: any): CSVParseParam { -// if (p.ignoreColumns) { -// p.ignoreColumns = new RegExp(p.ignoreColumns.source, p.ignoreColumns.flags) -// } -// if (p.includeColumns) { -// p.includeColumns = new RegExp(p.includeColumns.source, p.includeColumns.flags) -// } -// return p; -// } - -// process.on("disconnect", () => { -// process.exit(-1); -// }); \ No newline at end of file diff --git a/node_modules/csvtojson/test/data/columnArray b/node_modules/csvtojson/test/data/columnArray deleted file mode 100644 index 33020f3..0000000 --- a/node_modules/csvtojson/test/data/columnArray +++ /dev/null @@ -1,6 +0,0 @@ -TIMESTAMP,UPDATE,UID,BYTES SENT,BYTES RCVED -1395426422,n,10028,1213,5461 -1395426422,n,10013,9954,13560 -1395426422,n,10109,221391500,141836 -1395426422,n,10007,53448,308549 -1395426422,n,10022,15506,72125 \ No newline at end of file diff --git a/node_modules/csvtojson/test/data/complexJSONCSV b/node_modules/csvtojson/test/data/complexJSONCSV deleted file mode 100644 index 8feeb1a..0000000 --- a/node_modules/csvtojson/test/data/complexJSONCSV +++ /dev/null @@ -1,3 +0,0 @@ -fieldA.title, fieldA.children.0.name, fieldA.children.0.id,fieldA.children.1.name, fieldA.children.1.employee.0.name,fieldA.children.1.employee.1.name, fieldA.address.0,fieldA.address.1, description -Food Factory, Oscar, 0023, Tikka, Tim, Joe, 3 Lame Road, Grantstown, A fresh new food factory -Kindom Garden, Ceil, 54, Pillow, Amst, Tom, 24 Shaker Street, HelloTown, Awesome castle diff --git a/node_modules/csvtojson/test/data/csvWithUnclosedHeader b/node_modules/csvtojson/test/data/csvWithUnclosedHeader deleted file mode 100644 index 8cc1233..0000000 --- a/node_modules/csvtojson/test/data/csvWithUnclosedHeader +++ /dev/null @@ -1,3 +0,0 @@ -Date and time,Sample no.,Status,Sample type,Patient ID,Last name,First name,Sex of patient,Patient birth date,Patient note,Patient department,Accession number,Sample site,Physician,Operator,Department,Note,Test order code,Draw time,Approval status,Approval time,Report layout,Patient account number,,Errors detected during measurement,"Age" (years),Error code,"Weight" (kg),Error code,"Height" (m),Error code,"HCG_Beta(P)" (mIU/mL),Error code,"Troponin_I(P)" (ng/mL),Error code,"CK_MB(P)" (ng/mL),Error code,"D-Dimer(P)" (ng/mL),Error code,"hsCRP(P)" (mg/L),Error code,"Myoglobin(P)" (ng/mL),Error code,"NT-proBNP" (pg/mL),Error code,"CRP" (mg/dL),Error code,"BNP" (ng/L),Error code,"TnT" (ng/mL),Error code,"Demo(P)" (AQT),Error code,"PCT" (ng/mL),Error code, -"06/14/2018 10:34 AM","12669","OK","","4206454447","","","Unknown","","","","4206454447","","","Anonymous","","","400",,"Not reviewed","","New","",,"",,,,,,,,,,,,,,,,,,,168,"",,,,,,,,,, -"06/14/2018 10:19 AM","12668","OK","","4206454403","","","Unknown","","","","4206454403","","","Anonymous","","","101",,"Not reviewed","","New","",,"",,,,,,,,,<0.010,"",4.2,"",,,,,,,,,,,,,,,,,, diff --git a/node_modules/csvtojson/test/data/data#139 b/node_modules/csvtojson/test/data/data#139 deleted file mode 100644 index 07ba477..0000000 --- a/node_modules/csvtojson/test/data/data#139 +++ /dev/null @@ -1,4 +0,0 @@ -field1, field2, field3, field4, -2005088801,A1,9001009395, -2005088806,A6,9001009395 9001009990, -2005088807,A7,9001009989, diff --git a/node_modules/csvtojson/test/data/dataDiffDelimiter b/node_modules/csvtojson/test/data/dataDiffDelimiter deleted file mode 100644 index f35be22..0000000 --- a/node_modules/csvtojson/test/data/dataDiffDelimiter +++ /dev/null @@ -1,3 +0,0 @@ -annee;jour;date;b_1;b_2;devise; -2015029;LUNDI ;09/03/2015;35;31;eur; -2015028;SAMEDI ;07/03/2015;48;9;eur; diff --git a/node_modules/csvtojson/test/data/dataIgnoreEmpty b/node_modules/csvtojson/test/data/dataIgnoreEmpty deleted file mode 100644 index 396e43b..0000000 --- a/node_modules/csvtojson/test/data/dataIgnoreEmpty +++ /dev/null @@ -1,13 +0,0 @@ - - - -col1, col2.0, col2.1,col4.col3,col4.col5 -d1,,d3,,world - -d2,d,d,d,d -,,,, -d4,d2,d3 - - - - diff --git a/node_modules/csvtojson/test/data/dataNoTrimBOM b/node_modules/csvtojson/test/data/dataNoTrimBOM deleted file mode 100644 index 3d1e8ca..0000000 --- a/node_modules/csvtojson/test/data/dataNoTrimBOM +++ /dev/null @@ -1,3 +0,0 @@ -"name","age" -"joe","20" -"sam","30" diff --git a/node_modules/csvtojson/test/data/dataNoTrimCRLF b/node_modules/csvtojson/test/data/dataNoTrimCRLF deleted file mode 100644 index e248aa6..0000000 --- a/node_modules/csvtojson/test/data/dataNoTrimCRLF +++ /dev/null @@ -1,3 +0,0 @@ -name,age -joe,20 -sam,30 \ No newline at end of file diff --git a/node_modules/csvtojson/test/data/dataTsv b/node_modules/csvtojson/test/data/dataTsv deleted file mode 100644 index 14e0cb5..0000000 --- a/node_modules/csvtojson/test/data/dataTsv +++ /dev/null @@ -1,201 +0,0 @@ -name dob address.street address.city address.country guid -Edward 09-26-15 155-5699 Lobortis, Street Sauveni�re Guinea 7DEC987B-CD15-2967-BB88-98A9DE869AC2 -Jason 12-24-14 Ap #394-4852 Lorem, Rd. Barchi Niger F8A268A9-70F9-8298-CADA-22E29CC973E9 -Colin 04-15-15 Ap #738-1831 Pretium Avenue Lafayette Tuvalu 99C2A67A-82FD-4FD2-B13D-41021A93CD34 -Ulric 07-13-15 335-3099 Cum St. Aix-en-Provence Mozambique 59844D4F-FB53-E903-67C4-7B0DCA451420 -Vance 11-08-15 Ap #805-4137 Nulla Road Ligney South Sudan CB3B9B77-12C0-1D8D-96AF-982CFBDC04D8 -Mason 06-06-15 Ap #750-6911 Aliquam St. Maisi�res Benin D5E21534-EF42-0C7C-5761-8D55A418F78C -Jesse 08-04-15 P.O. Box 371, 2374 Malesuada Ave Aschersleben Pitcairn Islands FFB87D4C-C25B-8B2A-C65D-0C0CF04ECD19 -Xenos 01-08-15 P.O. Box 302, 9020 Sed Avenue Ancaster Town Guam 5ACC0483-30D0-194F-8E0A-F2BB9CB7E41C -Dalton 04-10-15 Ap #987-4193 Suspendisse Street Bromyard United States E0DE1186-15BD-025A-425E-5A551CB66FCA -Maxwell 01-03-15 P.O. Box 297, 2759 Per Avenue Rae-Edzo Namibia 5E880371-EB39-D705-B6BA-B1C47A0FB20F -Josiah 12-29-15 481-4517 Justo. Rd. Vreren Ethiopia 6146E324-1713-031D-4A05-00DA9A6E0A72 -Dillon 01-15-15 903-2925 Sed Rd. Bath Solomon Islands B6784798-C745-6B8B-EFC3-DDB456766B3A -Lucas 04-07-16 Ap #212-4291 Non Ave Mount Isa Bermuda 4BF02F00-6543-E955-2CB3-147DB5ACC996 -Kane 10-27-15 Ap #855-8041 Aliquam Road Bloomington Isle of Man 7D5F7EF0-1DA1-2956-913E-9DD0232FE82B -Jermaine 02-08-16 6536 Sollicitudin Rd. Lens-Saint-Servais Laos 98480101-570D-3989-8607-DF037CE2C04D -Scott 05-11-16 982-7468 Aliquam Avenue Eckville Wallis and Futuna F9E86E1B-C940-93BC-F269-90120A50A828 -Ronan 07-02-15 P.O. Box 351, 6427 Sociis St. R�dermark Kenya 13E31F6C-A4BE-3B63-C208-0F9EDC33231C -Paul 09-17-16 4613 Tortor, Av. Riksingen Central African Republic 2830470E-9126-E1F0-EFE7-75E16F47E605 -Fulton 04-16-16 4351 Elit, Road Sint-Gillis Cape Verde 5B8782C1-12C1-0EE0-5229-5AB14D06BD57 -Lamar 05-18-16 9263 Mollis. Road Veerle Nepal 4ED58B8B-35D8-732C-C232-4228154A009A -Charles 12-27-14 Ap #239-2452 Nec Avenue Saskatoon New Caledonia E7C99399-87EA-F908-59E9-CCB1B40AF168 -Kaseem 09-28-16 Ap #958-9657 Cursus Road Sunset Point Ukraine 5BAA6A09-9E8C-8AEA-962D-B7371368DB8C -Baxter 09-14-15 P.O. Box 566, 4372 Feugiat Av. LaSalle Serbia 8190712E-A2AD-3CC9-89B4-2301F9570595 -Lionel 05-12-16 3005 Suspendisse St. Zuienkerke Mali 2CD8B4BB-6CD5-2D4C-9074-FBBF5462E471 -Quinn 12-20-15 P.O. Box 799, 2708 Augue Ave Chapadinha Mongolia 9BDB232A-24B6-4020-CF05-2195FCC7A683 -Channing 10-12-15 P.O. Box 263, 6647 Eleifend Road Ajaccio Botswana 88C7710E-4B0A-739A-CCFA-68656D352511 -Evan 10-12-15 877-3353 In St. Torella del Sannio Togo 936FDD4C-7489-285F-B391-28F15291FA15 -Deacon 01-01-15 P.O. Box 896, 2131 Mollis. Rd. San Pietro al Tanagro Niue D0489775-4C8B-B6A4-B13F-69F1EFE6A2BB -Hyatt 08-09-15 Ap #628-8427 Semper Street Northallerton Ireland 1645C905-04E6-3187-05FD-FF3EF3B1909C -Mason 03-08-15 1919 Rhoncus. Road La Matap�dia Latvia 948764BD-0D67-8193-7F71-DB8B75405BB8 -Aquila 07-16-16 Ap #367-5036 Lobortis Street Wasseiges Christmas Island 9D78ECF4-D785-16F6-1506-EFEC7A2E680C -Jesse 12-09-14 Ap #524-1274 Nec Rd. Elgin Faroe Islands 4A4F0E32-EFF6-B1C7-7FE6-8701C4849DAD -Norman 06-08-16 365-7493 Proin Ave Pitlochry Norfolk Island C4002F4B-703A-356B-3B52-EF349E11BBD2 -Dale 05-07-16 P.O. Box 149, 7946 Bibendum. St. Narbonne Cayman Islands DCAFA688-BDF2-DFC9-F545-B6191F3AABBA -Fletcher 10-08-16 Ap #984-4339 Id Avenue Appelterre-Eichem Nauru C870B22E-A1DC-A376-0589-63A6E97F4459 -Murphy 07-02-16 P.O. Box 736, 2911 Ut Rd. Dorval Pitcairn Islands D2F75F2B-2CC8-9BD3-2DF1-6F6C1537F228 -Carson 10-11-16 4270 Nulla Rd. Halen Israel A3EC0D50-A0C9-9625-28AD-B3933A81C5F1 -Brennan 12-11-14 P.O. Box 142, 9526 Ante, Avenue Cochin Bonaire, Sint Eustatius and Saba BB02EC4A-C57C-1F61-9298-45C7C3EB55B5 -Dennis 09-14-16 Ap #292-9945 Iaculis Street Santander Mayotte 93ACD6FF-E620-D8A4-985F-2DB67BE630B7 -Amir 10-10-15 P.O. Box 369, 979 Senectus Av. Wardin Armenia 79FF5F4E-03F8-7DAC-09B4-A8076E3F39A9 -Palmer 10-09-16 3086 Eu Road Sossano Cameroon 66ABAEF0-2A60-27C5-2B4D-6C1D08F0148F -Dorian 06-27-16 483-7380 Etiam Av. Zierikzee Ireland FCC92CC2-C59B-07A4-034D-7AC1F56FF893 -Donovan 10-19-16 P.O. Box 282, 1555 Molestie Avenue Kırıkhan Equatorial Guinea 6E1C773F-7579-01A6-2C2F-50CD28E99AC5 -Wesley 08-26-15 P.O. Box 557, 4171 Eget St. Banchory Jersey D889335F-815F-B91A-7C92-814CF8491944 -Damon 08-13-15 Ap #724-7527 Lobortis, Avenue Juneau Mauritius 65336375-864D-DA66-043D-C4461F3B3A21 -Cooper 08-25-16 832-3247 In Road Pike Creek Somalia 57CAFF15-A497-D20D-9D36-E3AE78C77F2B -Flynn 10-12-15 401 Congue, Street Rouvroy Paraguay 81FE1E24-7843-25EA-BE5B-C2598C4453BF -Declan 03-12-15 686-1101 Dignissim. Rd. Bad Oldesloe Trinidad and Tobago 124E4702-21AA-3617-D6EF-0A680BF287F9 -Ryder 10-21-16 1151 Eu Ave Orsara di Puglia Chad 6947FFF6-F8F2-637D-4DB2-EF746659E965 -Allen 06-30-15 Ap #756-3480 Accumsan Street Carnoustie Taiwan 5631AE3E-6E47-53BD-8891-817B4CC3512D -Charles 01-02-15 P.O. Box 940, 6735 Sed, Street Mandi Burewala Nauru 876E1717-ECCC-6359-47B5-97BA80A2B29C -Travis 10-07-15 P.O. Box 162, 8293 Duis St. Geesthacht Samoa BB3CEE82-1B41-F4B9-8045-08F1C9B7A17F -Beck 06-01-16 2021 Maecenas St. Hugli-Chinsurah Pakistan F7ABADF7-9EC5-F5C6-FF32-ADAE093ACA10 -Chadwick 02-24-15 286-4943 Sodales St. Stockport Mauritania C04926C6-A52C-B7EF-1569-F9A5B5EDD8B7 -Eric 03-22-16 Ap #443-2598 Malesuada Rd. Sutton Jersey 70152CA1-69C1-F88E-E19F-D0DFB191072C -Jarrod 02-28-16 P.O. Box 573, 5483 Mattis. Street Treglio Djibouti 4477A21E-68A0-BB81-C78B-009276AC2309 -Sebastian 08-10-16 P.O. Box 486, 5119 Dis Av. Weesp Singapore C4396AD3-9AA0-423B-A372-DE21B5AE757F -Robert 10-20-15 9597 Morbi Ave Haren Micronesia DAE70851-B015-A9FC-0222-57DF9EE41EDE -Garrison 01-29-16 112-727 Sed St. Pickering Dominican Republic FD8F4927-407A-F57C-A668-732631AEE69F -Dominic 10-22-16 P.O. Box 379, 6763 Neque St. Colwood Cocos (Keeling) Islands BAB8741F-A3FA-C1DF-77CE-4E05C483CA6C -Adrian 01-30-15 P.O. Box 993, 5994 Tempus, Av. Kelowna Korea, North 35627FC0-8C04-45EE-52C0-DA52EFA4331C -Cullen 01-15-15 Ap #119-8754 Parturient St. Mazy Haiti 008EE5DE-9370-1F99-9F53-3E27D088D1FD -Gray 05-02-16 P.O. Box 694, 9954 Posuere Av. Magdeburg Korea, North C2C7C509-8D31-FE4C-8B1F-D4798D03CC27 -Rogan 02-03-15 203 Diam St. Rimbey Trinidad and Tobago 775A58E6-3F69-DE34-2795-10A4FA610E59 -Plato 12-11-15 Ap #973-9650 Primis St. Colwood Tokelau E89C96FA-D021-A966-D8B7-4012C2B7D08A -Jarrod 12-21-14 741-959 Pede Av. Bad Vilbel Honduras 2833D3A2-A195-90CC-5344-DCD810C95ABD -Forrest 03-19-15 8901 Magna Avenue Esterzili United Kingdom (Great Britain) 75F9D959-8A54-E131-628A-13AE6B5A470E -Erich 01-05-15 P.O. Box 527, 4985 Luctus Street Ponte nelle Alpi Iran 1552F559-B952-06C7-5192-BD07E359AE35 -Dalton 06-18-16 576-7919 Ut St. Merzig Holy See (Vatican City State) 8583B5E6-2403-FD3E-C565-462B8FD7612F -Hasad 02-15-16 P.O. Box 208, 7841 Conubia Street Rothesay Marshall Islands 79B9F905-C923-552D-EDAD-1BA121782459 -Tate 06-18-15 P.O. Box 724, 3627 Magna. St. Iowa City Peru 6F0D2D02-10CD-B4E2-052D-96F7583D2BFE -Amos 05-05-15 644-6779 Nascetur Ave Brixton Tunisia 8684D7A8-5EAF-6437-E11F-627463B1F18A -Todd 01-19-15 7501 Metus. Street Galbiate Yemen 6EF8DEBF-367C-EDA3-0095-4CE84EEE0B5F -Magee 02-28-15 840-3378 Porttitor Avenue Rocky View Benin 0E78AEB3-5837-C394-0F74-521A5197D00C -Amal 12-10-14 P.O. Box 985, 561 Risus. Street Mirzapur-cum-Vindhyachal Congo, the Democratic Republic of the 24BF71D4-1656-A0AA-4297-B981FE305195 -Ahmed 09-05-15 P.O. Box 973, 9430 Neque. Rd. Oromocto Belgium 1F254A19-2447-39BD-DF00-CEDBC8D54356 -Jackson 01-02-16 P.O. Box 756, 8760 Ultricies Avenue Chartres Dominica CE19C68C-FCF8-D069-0B97-D4547CE34851 -Mannix 10-04-16 P.O. Box 381, 2207 Cum Rd. Hartford Korea, South 5B6F4C08-92DE-53CD-92BD-B0ACB55DB9AD -Adrian 08-14-15 P.O. Box 214, 2410 Amet Street Ipatinga Côte D'Ivoire (Ivory Coast) 70F29ED9-D666-B24B-2266-C9556148D161 -Flynn 08-10-16 P.O. Box 149, 5993 Mollis Road Siracusa Belarus FA5AE1AE-E808-1DBC-4C94-4532BBC7F71B -Armand 12-13-15 Ap #175-342 Vitae, Avenue Saint-Rhémy-en-Bosses Togo CCBA04A7-8D9A-0811-06E8-83167FDCB56A -Warren 01-07-15 130-3775 Massa. Road Brixton Papua New Guinea F294CBEE-CC10-8F2E-7C1F-82B2E9DD70AF -David 10-17-16 245-1747 Blandit Rd. Bastia Umbra Cocos (Keeling) Islands B6579554-4C36-6452-1495-9E01D652436C -Hu 09-11-16 453-2346 Ante Ave Whitehaven Bouvet Island 188370B5-9285-24B8-9E03-D5B4F9BCA3E2 -James 03-08-15 2669 Nam Av. Cambridge Guinea 71D87ECA-94CD-CBA7-A557-9CD119C8C752 -Dexter 02-26-16 653-3752 Nunc Street Hearst Austria 84429BD8-70A3-0A9D-5619-33F749C0858F -Theodore 09-09-16 Ap #645-9999 Nam Rd. Maidenhead Gabon 7F801674-E786-AB3A-A822-202776D33212 -Yasir 11-09-15 283-2518 Accumsan Road Kempten Heard Island and Mcdonald Islands 3D46A729-E760-CA01-4C90-32938AE5E952 -Marvin 04-24-16 P.O. Box 467, 2421 Gravida Rd. Siena Slovakia 0027CB01-3982-D9A8-C8D8-024F5DBAF0CC -Travis 04-20-16 Ap #669-4818 Nisl Rd. Mosciano Sant'Angelo Armenia EF3BB505-4054-E7DF-3212-B6BA09FB6FE2 -Cullen 02-14-15 P.O. Box 902, 5025 Aliquam Street Tintange Colombia E0242050-CDAF-1EEF-6BCC-CE1B1D4BEF7C -Griffin 03-28-15 Ap #990-3013 Aliquet. Rd. Wepion Brunei 5E282F96-ED09-D0EE-5B23-AB496871DDBC -Keegan 06-02-16 Ap #390-8084 Elementum Street Idaho Falls Nauru 0EEB2712-4DBC-CA61-5DC2-7D8E2519E831 -Gavin 03-31-15 P.O. Box 635, 4723 Hendrerit Rd. Torrevieja Macao 19D3F50A-951A-17B0-242F-1013E8EAC8F9 -Paki 12-17-15 P.O. Box 512, 277 Augue St. Horsham Cape Verde C1AB7BEF-7DCA-5A79-D4D0-42C70D212677 -Oleg 05-22-15 P.O. Box 398, 6647 Quis Rd. Eisden Ethiopia DA124388-152B-EB65-669A-34927AF30596 -Orlando 07-20-15 Ap #575-4637 Non St. Cerreto di Spoleto Solomon Islands CC8A6504-0489-A622-8AEA-CE2FF0CE001F -Xander 02-26-15 Ap #977-190 Eu Rd. Vespolate Guyana D98E0C02-55C1-C5A4-0723-D637099CA8CE -Ishmael 08-19-16 151-6314 Varius St. Sulzano Syria 8DBB274F-1417-6B03-7907-24FF5E2A1761 -Isaiah 09-27-15 Ap #584-7955 Ut Street H�villers Indonesia 8AE27E32-0759-EDAD-1AC2-F2664B4D2CA0 -Edward 09-26-15 155-5699 Lobortis, Street Sauveni�re Guinea 7DEC987B-CD15-2967-BB88-98A9DE869AC2 -Jason 12-24-14 Ap #394-4852 Lorem, Rd. Barchi Niger F8A268A9-70F9-8298-CADA-22E29CC973E9 -Colin 04-15-15 Ap #738-1831 Pretium Avenue Lafayette Tuvalu 99C2A67A-82FD-4FD2-B13D-41021A93CD34 -Ulric 07-13-15 335-3099 Cum St. Aix-en-Provence Mozambique 59844D4F-FB53-E903-67C4-7B0DCA451420 -Vance 11-08-15 Ap #805-4137 Nulla Road Ligney South Sudan CB3B9B77-12C0-1D8D-96AF-982CFBDC04D8 -Mason 06-06-15 Ap #750-6911 Aliquam St. Maisi�res Benin D5E21534-EF42-0C7C-5761-8D55A418F78C -Jesse 08-04-15 P.O. Box 371, 2374 Malesuada Ave Aschersleben Pitcairn Islands FFB87D4C-C25B-8B2A-C65D-0C0CF04ECD19 -Xenos 01-08-15 P.O. Box 302, 9020 Sed Avenue Ancaster Town Guam 5ACC0483-30D0-194F-8E0A-F2BB9CB7E41C -Dalton 04-10-15 Ap #987-4193 Suspendisse Street Bromyard United States E0DE1186-15BD-025A-425E-5A551CB66FCA -Maxwell 01-03-15 P.O. Box 297, 2759 Per Avenue Rae-Edzo Namibia 5E880371-EB39-D705-B6BA-B1C47A0FB20F -Josiah 12-29-15 481-4517 Justo. Rd. Vreren Ethiopia 6146E324-1713-031D-4A05-00DA9A6E0A72 -Dillon 01-15-15 903-2925 Sed Rd. Bath Solomon Islands B6784798-C745-6B8B-EFC3-DDB456766B3A -Lucas 04-07-16 Ap #212-4291 Non Ave Mount Isa Bermuda 4BF02F00-6543-E955-2CB3-147DB5ACC996 -Kane 10-27-15 Ap #855-8041 Aliquam Road Bloomington Isle of Man 7D5F7EF0-1DA1-2956-913E-9DD0232FE82B -Jermaine 02-08-16 6536 Sollicitudin Rd. Lens-Saint-Servais Laos 98480101-570D-3989-8607-DF037CE2C04D -Scott 05-11-16 982-7468 Aliquam Avenue Eckville Wallis and Futuna F9E86E1B-C940-93BC-F269-90120A50A828 -Ronan 07-02-15 P.O. Box 351, 6427 Sociis St. R�dermark Kenya 13E31F6C-A4BE-3B63-C208-0F9EDC33231C -Paul 09-17-16 4613 Tortor, Av. Riksingen Central African Republic 2830470E-9126-E1F0-EFE7-75E16F47E605 -Fulton 04-16-16 4351 Elit, Road Sint-Gillis Cape Verde 5B8782C1-12C1-0EE0-5229-5AB14D06BD57 -Lamar 05-18-16 9263 Mollis. Road Veerle Nepal 4ED58B8B-35D8-732C-C232-4228154A009A -Charles 12-27-14 Ap #239-2452 Nec Avenue Saskatoon New Caledonia E7C99399-87EA-F908-59E9-CCB1B40AF168 -Kaseem 09-28-16 Ap #958-9657 Cursus Road Sunset Point Ukraine 5BAA6A09-9E8C-8AEA-962D-B7371368DB8C -Baxter 09-14-15 P.O. Box 566, 4372 Feugiat Av. LaSalle Serbia 8190712E-A2AD-3CC9-89B4-2301F9570595 -Lionel 05-12-16 3005 Suspendisse St. Zuienkerke Mali 2CD8B4BB-6CD5-2D4C-9074-FBBF5462E471 -Quinn 12-20-15 P.O. Box 799, 2708 Augue Ave Chapadinha Mongolia 9BDB232A-24B6-4020-CF05-2195FCC7A683 -Channing 10-12-15 P.O. Box 263, 6647 Eleifend Road Ajaccio Botswana 88C7710E-4B0A-739A-CCFA-68656D352511 -Evan 10-12-15 877-3353 In St. Torella del Sannio Togo 936FDD4C-7489-285F-B391-28F15291FA15 -Deacon 01-01-15 P.O. Box 896, 2131 Mollis. Rd. San Pietro al Tanagro Niue D0489775-4C8B-B6A4-B13F-69F1EFE6A2BB -Hyatt 08-09-15 Ap #628-8427 Semper Street Northallerton Ireland 1645C905-04E6-3187-05FD-FF3EF3B1909C -Mason 03-08-15 1919 Rhoncus. Road La Matap�dia Latvia 948764BD-0D67-8193-7F71-DB8B75405BB8 -Aquila 07-16-16 Ap #367-5036 Lobortis Street Wasseiges Christmas Island 9D78ECF4-D785-16F6-1506-EFEC7A2E680C -Jesse 12-09-14 Ap #524-1274 Nec Rd. Elgin Faroe Islands 4A4F0E32-EFF6-B1C7-7FE6-8701C4849DAD -Norman 06-08-16 365-7493 Proin Ave Pitlochry Norfolk Island C4002F4B-703A-356B-3B52-EF349E11BBD2 -Dale 05-07-16 P.O. Box 149, 7946 Bibendum. St. Narbonne Cayman Islands DCAFA688-BDF2-DFC9-F545-B6191F3AABBA -Fletcher 10-08-16 Ap #984-4339 Id Avenue Appelterre-Eichem Nauru C870B22E-A1DC-A376-0589-63A6E97F4459 -Murphy 07-02-16 P.O. Box 736, 2911 Ut Rd. Dorval Pitcairn Islands D2F75F2B-2CC8-9BD3-2DF1-6F6C1537F228 -Carson 10-11-16 4270 Nulla Rd. Halen Israel A3EC0D50-A0C9-9625-28AD-B3933A81C5F1 -Brennan 12-11-14 P.O. Box 142, 9526 Ante, Avenue Cochin Bonaire, Sint Eustatius and Saba BB02EC4A-C57C-1F61-9298-45C7C3EB55B5 -Dennis 09-14-16 Ap #292-9945 Iaculis Street Santander Mayotte 93ACD6FF-E620-D8A4-985F-2DB67BE630B7 -Amir 10-10-15 P.O. Box 369, 979 Senectus Av. Wardin Armenia 79FF5F4E-03F8-7DAC-09B4-A8076E3F39A9 -Palmer 10-09-16 3086 Eu Road Sossano Cameroon 66ABAEF0-2A60-27C5-2B4D-6C1D08F0148F -Dorian 06-27-16 483-7380 Etiam Av. Zierikzee Ireland FCC92CC2-C59B-07A4-034D-7AC1F56FF893 -Donovan 10-19-16 P.O. Box 282, 1555 Molestie Avenue Kırıkhan Equatorial Guinea 6E1C773F-7579-01A6-2C2F-50CD28E99AC5 -Wesley 08-26-15 P.O. Box 557, 4171 Eget St. Banchory Jersey D889335F-815F-B91A-7C92-814CF8491944 -Damon 08-13-15 Ap #724-7527 Lobortis, Avenue Juneau Mauritius 65336375-864D-DA66-043D-C4461F3B3A21 -Cooper 08-25-16 832-3247 In Road Pike Creek Somalia 57CAFF15-A497-D20D-9D36-E3AE78C77F2B -Flynn 10-12-15 401 Congue, Street Rouvroy Paraguay 81FE1E24-7843-25EA-BE5B-C2598C4453BF -Declan 03-12-15 686-1101 Dignissim. Rd. Bad Oldesloe Trinidad and Tobago 124E4702-21AA-3617-D6EF-0A680BF287F9 -Ryder 10-21-16 1151 Eu Ave Orsara di Puglia Chad 6947FFF6-F8F2-637D-4DB2-EF746659E965 -Allen 06-30-15 Ap #756-3480 Accumsan Street Carnoustie Taiwan 5631AE3E-6E47-53BD-8891-817B4CC3512D -Charles 01-02-15 P.O. Box 940, 6735 Sed, Street Mandi Burewala Nauru 876E1717-ECCC-6359-47B5-97BA80A2B29C -Travis 10-07-15 P.O. Box 162, 8293 Duis St. Geesthacht Samoa BB3CEE82-1B41-F4B9-8045-08F1C9B7A17F -Beck 06-01-16 2021 Maecenas St. Hugli-Chinsurah Pakistan F7ABADF7-9EC5-F5C6-FF32-ADAE093ACA10 -Chadwick 02-24-15 286-4943 Sodales St. Stockport Mauritania C04926C6-A52C-B7EF-1569-F9A5B5EDD8B7 -Eric 03-22-16 Ap #443-2598 Malesuada Rd. Sutton Jersey 70152CA1-69C1-F88E-E19F-D0DFB191072C -Jarrod 02-28-16 P.O. Box 573, 5483 Mattis. Street Treglio Djibouti 4477A21E-68A0-BB81-C78B-009276AC2309 -Sebastian 08-10-16 P.O. Box 486, 5119 Dis Av. Weesp Singapore C4396AD3-9AA0-423B-A372-DE21B5AE757F -Robert 10-20-15 9597 Morbi Ave Haren Micronesia DAE70851-B015-A9FC-0222-57DF9EE41EDE -Garrison 01-29-16 112-727 Sed St. Pickering Dominican Republic FD8F4927-407A-F57C-A668-732631AEE69F -Dominic 10-22-16 P.O. Box 379, 6763 Neque St. Colwood Cocos (Keeling) Islands BAB8741F-A3FA-C1DF-77CE-4E05C483CA6C -Adrian 01-30-15 P.O. Box 993, 5994 Tempus, Av. Kelowna Korea, North 35627FC0-8C04-45EE-52C0-DA52EFA4331C -Cullen 01-15-15 Ap #119-8754 Parturient St. Mazy Haiti 008EE5DE-9370-1F99-9F53-3E27D088D1FD -Gray 05-02-16 P.O. Box 694, 9954 Posuere Av. Magdeburg Korea, North C2C7C509-8D31-FE4C-8B1F-D4798D03CC27 -Rogan 02-03-15 203 Diam St. Rimbey Trinidad and Tobago 775A58E6-3F69-DE34-2795-10A4FA610E59 -Plato 12-11-15 Ap #973-9650 Primis St. Colwood Tokelau E89C96FA-D021-A966-D8B7-4012C2B7D08A -Jarrod 12-21-14 741-959 Pede Av. Bad Vilbel Honduras 2833D3A2-A195-90CC-5344-DCD810C95ABD -Forrest 03-19-15 8901 Magna Avenue Esterzili United Kingdom (Great Britain) 75F9D959-8A54-E131-628A-13AE6B5A470E -Erich 01-05-15 P.O. Box 527, 4985 Luctus Street Ponte nelle Alpi Iran 1552F559-B952-06C7-5192-BD07E359AE35 -Dalton 06-18-16 576-7919 Ut St. Merzig Holy See (Vatican City State) 8583B5E6-2403-FD3E-C565-462B8FD7612F -Hasad 02-15-16 P.O. Box 208, 7841 Conubia Street Rothesay Marshall Islands 79B9F905-C923-552D-EDAD-1BA121782459 -Tate 06-18-15 P.O. Box 724, 3627 Magna. St. Iowa City Peru 6F0D2D02-10CD-B4E2-052D-96F7583D2BFE -Amos 05-05-15 644-6779 Nascetur Ave Brixton Tunisia 8684D7A8-5EAF-6437-E11F-627463B1F18A -Todd 01-19-15 7501 Metus. Street Galbiate Yemen 6EF8DEBF-367C-EDA3-0095-4CE84EEE0B5F -Magee 02-28-15 840-3378 Porttitor Avenue Rocky View Benin 0E78AEB3-5837-C394-0F74-521A5197D00C -Amal 12-10-14 P.O. Box 985, 561 Risus. Street Mirzapur-cum-Vindhyachal Congo, the Democratic Republic of the 24BF71D4-1656-A0AA-4297-B981FE305195 -Ahmed 09-05-15 P.O. Box 973, 9430 Neque. Rd. Oromocto Belgium 1F254A19-2447-39BD-DF00-CEDBC8D54356 -Jackson 01-02-16 P.O. Box 756, 8760 Ultricies Avenue Chartres Dominica CE19C68C-FCF8-D069-0B97-D4547CE34851 -Mannix 10-04-16 P.O. Box 381, 2207 Cum Rd. Hartford Korea, South 5B6F4C08-92DE-53CD-92BD-B0ACB55DB9AD -Adrian 08-14-15 P.O. Box 214, 2410 Amet Street Ipatinga Côte D'Ivoire (Ivory Coast) 70F29ED9-D666-B24B-2266-C9556148D161 -Flynn 08-10-16 P.O. Box 149, 5993 Mollis Road Siracusa Belarus FA5AE1AE-E808-1DBC-4C94-4532BBC7F71B -Armand 12-13-15 Ap #175-342 Vitae, Avenue Saint-Rhémy-en-Bosses Togo CCBA04A7-8D9A-0811-06E8-83167FDCB56A -Warren 01-07-15 130-3775 Massa. Road Brixton Papua New Guinea F294CBEE-CC10-8F2E-7C1F-82B2E9DD70AF -David 10-17-16 245-1747 Blandit Rd. Bastia Umbra Cocos (Keeling) Islands B6579554-4C36-6452-1495-9E01D652436C -Hu 09-11-16 453-2346 Ante Ave Whitehaven Bouvet Island 188370B5-9285-24B8-9E03-D5B4F9BCA3E2 -James 03-08-15 2669 Nam Av. Cambridge Guinea 71D87ECA-94CD-CBA7-A557-9CD119C8C752 -Dexter 02-26-16 653-3752 Nunc Street Hearst Austria 84429BD8-70A3-0A9D-5619-33F749C0858F -Theodore 09-09-16 Ap #645-9999 Nam Rd. Maidenhead Gabon 7F801674-E786-AB3A-A822-202776D33212 -Yasir 11-09-15 283-2518 Accumsan Road Kempten Heard Island and Mcdonald Islands 3D46A729-E760-CA01-4C90-32938AE5E952 -Marvin 04-24-16 P.O. Box 467, 2421 Gravida Rd. Siena Slovakia 0027CB01-3982-D9A8-C8D8-024F5DBAF0CC -Travis 04-20-16 Ap #669-4818 Nisl Rd. Mosciano Sant'Angelo Armenia EF3BB505-4054-E7DF-3212-B6BA09FB6FE2 -Cullen 02-14-15 P.O. Box 902, 5025 Aliquam Street Tintange Colombia E0242050-CDAF-1EEF-6BCC-CE1B1D4BEF7C -Griffin 03-28-15 Ap #990-3013 Aliquet. Rd. Wepion Brunei 5E282F96-ED09-D0EE-5B23-AB496871DDBC -Keegan 06-02-16 Ap #390-8084 Elementum Street Idaho Falls Nauru 0EEB2712-4DBC-CA61-5DC2-7D8E2519E831 -Gavin 03-31-15 P.O. Box 635, 4723 Hendrerit Rd. Torrevieja Macao 19D3F50A-951A-17B0-242F-1013E8EAC8F9 -Paki 12-17-15 P.O. Box 512, 277 Augue St. Horsham Cape Verde C1AB7BEF-7DCA-5A79-D4D0-42C70D212677 -Oleg 05-22-15 P.O. Box 398, 6647 Quis Rd. Eisden Ethiopia DA124388-152B-EB65-669A-34927AF30596 -Orlando 07-20-15 Ap #575-4637 Non St. Cerreto di Spoleto Solomon Islands CC8A6504-0489-A622-8AEA-CE2FF0CE001F -Xander 02-26-15 Ap #977-190 Eu Rd. Vespolate Guyana D98E0C02-55C1-C5A4-0723-D637099CA8CE -Ishmael 08-19-16 151-6314 Varius St. Sulzano Syria 8DBB274F-1417-6B03-7907-24FF5E2A1761 -Isaiah 09-27-15 Ap #584-7955 Ut Street H�villers Indonesia 8AE27E32-0759-EDAD-1AC2-F2664B4D2CA0 diff --git a/node_modules/csvtojson/test/data/dataWithAutoDelimiter b/node_modules/csvtojson/test/data/dataWithAutoDelimiter deleted file mode 100644 index 7b47fbb..0000000 --- a/node_modules/csvtojson/test/data/dataWithAutoDelimiter +++ /dev/null @@ -1,5 +0,0 @@ -col1:col2:col3:col4:col5:col6:col7:col8:col9:col10 -"Mini. Sectt:hisar S.O":125001:S.O:Non-Delivery:Hissar:Ambala HQ:Haryana:Hisar:Hisar:HARYANA -#Mini. Sectt:hisar S.O#:125001:S.O:Non-Delivery:Hissar:Ambala HQ:Haryana:Hisar:Hisar:HARYANA -#Mini. Sectt:hisar S.O#:125001:S.O:Non-Delivery:Hissar:Ambala HQ:Haryana:Hisar:Hisar:HARYANA -#Mini. Sectt:hisar S.O#:#125001:fenvkdsf#:S.O:Non-Delivery:Hissar:Ambala HQ:Haryana:Hisar:Hisar:HARYANA \ No newline at end of file diff --git a/node_modules/csvtojson/test/data/dataWithComma b/node_modules/csvtojson/test/data/dataWithComma deleted file mode 100644 index b905672..0000000 --- a/node_modules/csvtojson/test/data/dataWithComma +++ /dev/null @@ -1,5 +0,0 @@ -col1,col2,col3,col4,col5,col6,col7,col8,col9,col10 -"Mini. Sectt,hisar S.O",125001,S.O,Non-Delivery,Hissar,Ambala HQ,Haryana,Hisar,Hisar,HARYANA -#Mini. Sectt,hisar S.O#,125001,S.O,Non-Delivery,Hissar,Ambala HQ,Haryana,Hisar,Hisar,HARYANA -#Mini. Sectt,hisar S.O#,125001,S.O,Non-Delivery,Hissar,Ambala HQ,Haryana,Hisar,Hisar,HARYANA -#Mini. Sectt,hisar S.O#,#125001,fenvkdsf#,S.O,Non-Delivery,Hissar,Ambala HQ,Haryana,Hisar,Hisar,HARYANA \ No newline at end of file diff --git a/node_modules/csvtojson/test/data/dataWithEmptyString b/node_modules/csvtojson/test/data/dataWithEmptyString deleted file mode 100644 index 6f01ca5..0000000 --- a/node_modules/csvtojson/test/data/dataWithEmptyString +++ /dev/null @@ -1 +0,0 @@ -green,40, "" diff --git a/node_modules/csvtojson/test/data/dataWithLongRow b/node_modules/csvtojson/test/data/dataWithLongRow deleted file mode 100644 index b72ec5e..0000000 --- a/node_modules/csvtojson/test/data/dataWithLongRow +++ /dev/null @@ -1,2 +0,0 @@ -fieldA.title, fieldA.children[0].name, fieldA.children[0].id,fieldA.children[1].name, fieldA.children[1].employee[].name,fieldA.children[1].employee[].name, fieldA.address[],fieldA.address[], description -Food Factory, Oscar, 0023, Tikka, Tim, Joe, 3 Lame Road, Grantstown, AAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factoryAA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factoryA fresh new food factory fresh new food factory diff --git a/node_modules/csvtojson/test/data/dataWithMismatchedColumn b/node_modules/csvtojson/test/data/dataWithMismatchedColumn deleted file mode 100644 index 4d2ebb2..0000000 --- a/node_modules/csvtojson/test/data/dataWithMismatchedColumn +++ /dev/null @@ -1,5 +0,0 @@ -fieldA.title, fieldA.children[0].name, fieldA.children[0].id,fieldA.children[1].name, fieldA.children[1].employee[].name,fieldA.children[1].employee[].name, fieldA.address[],fieldA.address[], description -Food Factory, Oscar, 0023, Tikka, Tim, Joe, 3 Lame Road, Grantstown, A fresh new food factory -Kindom Garden, Ceil, 54, Pillow, Amst, Tom, 24 Shaker Street, HelloTown, Awesome castle -Kindom Garden, Ceil, -Kindom Garden, Ceil, 54, Pillow, Amst, Tom, 24 Shaker Street, HelloTown, Awesome castle \ No newline at end of file diff --git a/node_modules/csvtojson/test/data/dataWithMultipleLineRow b/node_modules/csvtojson/test/data/dataWithMultipleLineRow deleted file mode 100644 index 1e21b16..0000000 --- a/node_modules/csvtojson/test/data/dataWithMultipleLineRow +++ /dev/null @@ -1,4 +0,0 @@ -aa,bb -ss,"12345 -6789,abcde"" -ddee" diff --git a/node_modules/csvtojson/test/data/dataWithPipeAsDelimiter b/node_modules/csvtojson/test/data/dataWithPipeAsDelimiter deleted file mode 100644 index a3a782c..0000000 --- a/node_modules/csvtojson/test/data/dataWithPipeAsDelimiter +++ /dev/null @@ -1,3 +0,0 @@ -date|*json*employee.name|*json*employee.age|*json*employee.number|*array*address|*array*address|*jsonarray*employee.key|*jsonarray*employee.key|*omit*id -2012-02-12|Eric|31|51234|Dunno Street|Kilkeny Road|key1|key2|2 -2012-03-06|Ted|28|51289|O FUTEBOL.¿|Tormore|key3|key4|4 diff --git a/node_modules/csvtojson/test/data/dataWithQoutes b/node_modules/csvtojson/test/data/dataWithQoutes deleted file mode 100644 index fd7d1c9..0000000 --- a/node_modules/csvtojson/test/data/dataWithQoutes +++ /dev/null @@ -1,8 +0,0 @@ -TIMESTAMP,UPDATE,UID,BYTES SENT,BYTES RCVED -"13954264""22","n",""10028"",""1213"",""5461"" -"abc, def, ccc", n,10013,9954,13560 -1395426422,n,10013,9954,13560 -1395426422,n,10109,221391500,141836 -1395426422,n,10007,53448,308549 -1395426422,n,10022,15506,72125 - diff --git a/node_modules/csvtojson/test/data/dataWithSlashEscape b/node_modules/csvtojson/test/data/dataWithSlashEscape deleted file mode 100644 index fa6bc6b..0000000 --- a/node_modules/csvtojson/test/data/dataWithSlashEscape +++ /dev/null @@ -1,2 +0,0 @@ -id,raw -0,"{\"hello\":\"world\",\"test\":true}" \ No newline at end of file diff --git a/node_modules/csvtojson/test/data/dataWithSlashEscapeAndDelimiterBetweenQuotes b/node_modules/csvtojson/test/data/dataWithSlashEscapeAndDelimiterBetweenQuotes deleted file mode 100644 index 21f9f1d..0000000 --- a/node_modules/csvtojson/test/data/dataWithSlashEscapeAndDelimiterBetweenQuotes +++ /dev/null @@ -1,2 +0,0 @@ -id,raw -0,"\"hello,\"world\"" \ No newline at end of file diff --git a/node_modules/csvtojson/test/data/dataWithTabAsDelimiter b/node_modules/csvtojson/test/data/dataWithTabAsDelimiter deleted file mode 100644 index ae5f986..0000000 --- a/node_modules/csvtojson/test/data/dataWithTabAsDelimiter +++ /dev/null @@ -1,3 +0,0 @@ -date *json*employee.name *json*employee.age *json*employee.number *array*address *array*address *jsonarray*employee.key *jsonarray*employee.key *omit*id -2012-02-12 Eric 31 51234 Dunno Street Kilkeny Road key1 key2 2 -2012-03-06 Ted 28 51289 O FUTEBOL.¿ Tormore key3 key4 4 diff --git a/node_modules/csvtojson/test/data/dataWithTripleQoutes b/node_modules/csvtojson/test/data/dataWithTripleQoutes deleted file mode 100644 index 3f21edb..0000000 --- a/node_modules/csvtojson/test/data/dataWithTripleQoutes +++ /dev/null @@ -1,5 +0,0 @@ -Year,Make,Model,Description,Price -1997,Ford,E350,"ac, abs, moon",3000.00 -1999,Chevy,"Venture ""Extended Edition""","",4900.00 -1999,Chevy,"Venture ""Extended Edition, Very Large""",,5000.00 -1996,Jeep,Grand Cherokee,"MUST SELL!air, moon roof, loaded",4799.00 \ No newline at end of file diff --git a/node_modules/csvtojson/test/data/dataWithType b/node_modules/csvtojson/test/data/dataWithType deleted file mode 100644 index 241fb44..0000000 --- a/node_modules/csvtojson/test/data/dataWithType +++ /dev/null @@ -1,2 +0,0 @@ -column1,user.name,column2,column3, colume4, column5, column6 , column7, column8, column9,column10.0,column10.1,name#!,column11 -1234,hello world,a1234,2012-01-01,someinvaliddate, {"hello":"world"}, {"hello":"world"}, 1234,abcd, true,23,31,false,[{"hello":"world"}] diff --git a/node_modules/csvtojson/test/data/dataWithUnclosedQuotes b/node_modules/csvtojson/test/data/dataWithUnclosedQuotes deleted file mode 100644 index 8e3f0c6..0000000 --- a/node_modules/csvtojson/test/data/dataWithUnclosedQuotes +++ /dev/null @@ -1,8 +0,0 @@ -TIMESTAMP,UPDATE,UID,BYTES SENT,BYTES RCVED -"13954264""22","n,""10028"",""1213"",""5461"" -"abc, -def, ccc", n,10013,9954,13560 -1395426422,n,10013,9954,13560 -1395426422,n,10109,221391500,141836 -1395426422,n,10007,53448,308549 -"1395426422,n,10022,15506,72125 diff --git a/node_modules/csvtojson/test/data/dataWithWhiteSpace b/node_modules/csvtojson/test/data/dataWithWhiteSpace deleted file mode 100644 index 358dca7..0000000 --- a/node_modules/csvtojson/test/data/dataWithWhiteSpace +++ /dev/null @@ -1,2 +0,0 @@ -"Column 1" , "Column 2", "Column 3" ,"Email" -Column1Row1,Column2Row1,Column3Row1,Row1@example.com \ No newline at end of file diff --git a/node_modules/csvtojson/test/data/emptyFile b/node_modules/csvtojson/test/data/emptyFile deleted file mode 100644 index e69de29..0000000 diff --git a/node_modules/csvtojson/test/data/invalidHeader b/node_modules/csvtojson/test/data/invalidHeader deleted file mode 100644 index a353646..0000000 --- a/node_modules/csvtojson/test/data/invalidHeader +++ /dev/null @@ -1,6 +0,0 @@ -header1,header1.filed1,header1.file2,header2,header2.field1.0,header2.field1.1,header2.filed2 -5OlFPc,q7,ejpJdw,DIgNVqB7h9jI,f8ayrzv,undefinedzvTY3Qd3pSkKOk,S7cVvW7m50t9U -0TaUGQVPqPkOr,lT,GA,UPUuORnuaDjXdl,V6G4QFddmPH8b,65NxWPl,Lclhl0fy -,ex4,1gjT4YPJ,QtJ8S5TQ,M4zO4OppCAR4,Pg7VipESqZmHwY5,mPzz -FEEa,,B1B,U9,kjxHGy,McW,6FWKBP0JoCiWn -0,,Fj0o9IPB,jwFuChbeqZdVVR,hGqs3Ps7dMEo6,Zundefined00Xqvw,hT7lN6iVUHDx diff --git a/node_modules/csvtojson/test/data/large-csv-sample.csv b/node_modules/csvtojson/test/data/large-csv-sample.csv deleted file mode 100644 index 55eece5..0000000 --- a/node_modules/csvtojson/test/data/large-csv-sample.csv +++ /dev/null @@ -1,5291 +0,0 @@ -ID,Number -0157181,8002 -0157741,6523 -0158106,11339 -0158685,1246589927 -0159044,10240 -0159470,6320 -0161143,1246588356 -0161144,1246589434 -0162198,9277 -0163115,1246589222 -0164058,6387 -0164113,9740 -0164594,6400 -0164595,7069 -0164610,10274 -0165440,8355 -0165487,7476 -0165558,7370 -0165595,5385 -0165708,6792 -0166697,662 -0168640,7339 -0169031,6793 -0169034,6901 -0169675,5417 -0170304,1246588372 -0171512,9833 -0172140,10304 -0172289,1246589196 -0172290,29 -0172385,6518 -0172720,7916 -0172721,9667 -0173283,6728 -0174026,10321 -0174395,10328 -0175160,7056 -0175226,1246589672 -0175599,90 -0175857,6999 -0175921,1659 -0175922,10419 -0176047,1246589629 -0176305,10336 -017631,7492 -0176603,1246588044 -0177068,10454 -0178263,4238 -0178317,2026 -0178721,10884 -0178880,10291 -0179073,9362 -0179344,9371 -0179421,10531 -0179477,7247 -0179784,10446 -0179921,7271 -0181559,8301 -0000004,9920 -00000042,7567 -00000048,7698 -0000009,1246589130 -0000022,8207 -0000025,9928 -0000028,6778 -0000030,7921 -0000033,9726 -0000036,9931 -0000037,28 -0000038,9932 -0000040,7653 -0000046,2082 -0000049,5267 -0000054,4574 -0000070,6994 -0000086,1246589135 -0000089,1995 -0000235,2087 -0000778,10107 -000090,11063 -0000910,8848 -0001175,7202 -0001192,2032 -0001193,7505 -0001199,3119 -0001201,3168 -0001210,2126 -0001211,9953 -0001216,9955 -0001222,9959 -0001232,4569 -0001247,10077 -0001250,7483 -0001251,1246588777 -0001253,9969 -0001257,9971 -0001259,3897 -0001272,55 -0001277,5039 -0001288,6986 -0001290,9979 -0001297,2590 -0001300,10036 -0001310,9990 -0001314,1246586920 -0001320,7481 -0001322,9995 -0001323,3097 -0001325,10076 -0001326,7348 -0001328,9997 -0001329,7313 -0001333,7489 -0001339,8174 -0001343,774 -0001351,7662 -0001370,7910 -0001372,7739 -0001373,3153 -0001377,10016 -0001380,10017 -0001381,10018 -0001382,7318 -0001383,87 -0001393,7817 -0001394,7345 -0001397,93 -0001398,10025 -0001400,2356 -0001402,4157 -0001403,4750 -0001404,7943 -0001408,10029 -0001410,4237 -0001411,1721 -0001425,1246590167 -0001428,10039 -0001431,9771 -0001433,8001 -0001480,7649 -0001580,7171 -0001588,8051 -0001748,7541 -0002338,1246589514 -0002462,3266 -0002802,1246589463 -0003252,10011 -0003288,3581 -0004078,8985 -0004288,3229 -0004354,6785 -0004639,3166 -0004696,7667 -0005353,10174 -0005571,7812 -0005975,1246585847 -0008079,6212 -0008635,9830 -0008748,8189 -0008785,9949 -0008861,1246589691 -0008874,8191 -0009404,8598 -0009530,9772 -0010344,7637 -0010974,7703 -0011169,9832 -0011187,4628 -0012259,9882 -0012463,7797 -0012486,7203 -001285,8216 -0012995,2483 -001405,1246590174 -0014411,8341 -0014450,8979 -0014628,6159 -0015392,1246588600 -0015397,9885 -0015408,7588 -0017053,7479 -0017952,7868 -0018594,6826 -0020280,1246589529 -0021597,7469 -0022928,7837 -0024571,59 -0024632,101 -0024640,7707 -0024832,8105 -0025206,7627 -0025391,2030 -0025666,10225 -0026120,3164 -0026452,4568 -0026501,1704 -0026711,7961 -0026803,7668 -0028100,6974 -0030309,9944 -0034584,1246586917 -0037075,10021 -0037156,1246589617 -0037872,3185 -0040096,49 -0040300,3318 -00410329,6688 -0045356,5413 -0045938,2088 -0048536,9988 -0048605,7655 -0048821,9941 -0051423,7847 -0056880,11045 -0058672,7568 -0058772,8192 -0059348,7529 -0062578,868 -0063313,7740 -0063567,6096 -0067208,9825 -0068308,1246588716 -0068892,5278 -0069272,9974 -0069422,7829 -0069441,8977 -0069466,7572 -0070129,135 -0070827,9994 -0070990,9769 -0071225,9749 -0078774,7702 -0078790,3280 -0080303,8057 -0086049,10042 -0087027,10867 -0087203,8011 -0088852,10750 -0090077,6329 -0090299,4239 -0090860,6736 -0091969,3893 -0092244,6995 -0092425,1246589528 -0092592,7465 -0094320,10955 -0094809,6207 -0096907,1246589612 -0097388,6735 -0097827,99 -0098695,9002 -0098758,7537 -0099508,1246589540 -0099910,8177 -0101045,1094 -0103122,7709 -0103355,83 -0105061,7530 -0105179,5305 -0106867,4582 -0110092,7335 -0111439,1246588816 -0111484,7639 -0111714,3879 -01135,7341 -0116396,10904 -0119897,5062 -0122935,5404 -0123242,9896 -0123456,1246588884 -0129025,780 -0132760,4573 -0134573,9908 -0141701,7070 -0142181,10156 -0142517,1246589394 -0142565,7495 -0142588,6372 -0142733,9415 -0142745,5847 -0142842,9208 -0143022,8132 -0143023,10361 -0143077,6361 -0143093,1246589105 -0143489,6907 -0143491,1246589051 -0143503,4853 -0143536,6430 -0143708,1246589098 -0144290,1246588421 -0144309,6364 -0144353,9554 -0144558,4846 -0144570,7858 -0144941,7728 -0144946,6589 -0145039,7103 -0145104,8469 -0145343,1246589083 -0145460,9266 -0145849,11233 -0146090,8783 -0146196,1246589069 -0146358,9070 -0146617,7117 -0146618,10360 -0146715,9269 -0146934,4777 -0146961,7493 -0147011,7290 -0147122,10264 -0147198,1246589853 -0147286,1246589092 -0147640,4867 -0147835,5645 -0147837,10230 -0147838,1246589176 -0148212,1246588649 -0148294,6375 -0148369,10259 -0149046,10294 -0149101,10041 -0149350,7694 -0149516,1246589384 -0149527,11065 -0149529,10733 -0150602,7865 -0150675,6865 -0150911,144 -0150920,8015 -0150962,8049 -0151001,7958 -0151140,1246589688 -0151775,7532 -0153283,4576 -0153668,3935 -0153671,11206 -0154551,9877 -0156946,9122 -0181560,10378 -0181659,6918 -0182503,10788 -0186475,1246588773 -0186476,10739 -0186530,6593 -0194315,7670 -0206219,7800 -0212449,10402 -0219479,1246588444 -0219482,8793 -0219548,4703 -0219550,7135 -0219655,10559 -0219810,6353 -0219826,8307 -0219887,8786 -0220605,1221 -0221248,392 -0221494,8903 -0221961,7081 -0222416,9206 -0222417,1246589339 -0222419,7738 -0222506,140 -0222524,10130 -0222759,1246588652 -0223058,9461 -0223059,1246589112 -0223337,7587 -0223568,6781 -0224454,8537 -0224564,6678 -0224987,7393 -0225187,7666 -0225604,3886 -0225778,1246589070 -0226196,3118 -0226587,3885 -0226597,2007 -0227566,10747 -0227831,7749 -0229119,778 -0229613,6625 -0231951,7811 -0233835,10212 -0234475,7874 -0234527,2486 -0234810,10517 -0235437,8173 -0235791,4773 -0235792,5812 -0235818,6841 -0236450,7523 -0236451,7462 -0236452,10568 -0236453,1246589423 -0239251,6566 -0240518,9096 -0243731,7705 -0243734,1246589197 -0243738,6499 -0243739,10775 -0243799,10737 -0246093,1246588997 -0247790,1987 -0247981,1246589208 -0249433,9898 -0249722,7711 -0249769,7843 -0249799,6083 -0249802,9853 -0253391,10712 -0256876,775 -0257464,2153 -0258304,8340 -0258406,76 -0260321,1246590175 -0261866,7562 -0262288,7715 -0262507,7769 -0263630,11095 -0263846,9042 -0263887,150 -0264116,7937 -0264256,6160 -0264561,36 -0264799,8284 -0265236,10199 -0265390,9789 -0266438,7209 -0267386,8468 -0267494,5639 -0267516,7970 -0270429,1246588050 -0271963,4240 -0271965,10925 -0272103,1254 -0272914,41 -0273285,5592 -0273458,1246589076 -0273546,10544 -0273631,1246590114 -0275117,10584 -0282588,9998 -0282593,477 -0283902,6288 -0284062,7654 -0284222,6484 -0284540,1986 -0284696,6318 -0285207,9850 -0285611,4817 -0285756,1246589118 -0285788,10885 -0285794,9207 -0285915,1999 -0286026,2029 -0287047,6473 -0287898,7480 -0288025,4836 -0288391,8316 -0288405,1246589288 -0288499,7600 -0288932,10191 -0289130,1246588700 -0290252,9222 -0291060,7880 -0291310,776 -0292547,1246589507 -0292683,4024 -0294078,7791 -0295361,2597 -0295736,7331 -0295738,7539 -0297619,663 -0297947,11194 -0297949,1246589590 -0298365,6989 -0298611,10095 -0299464,9899 -0299886,6604 -0300659,767 -0302393,9884 -0302533,1246590285 -0303205,7052 -0303277,10359 -0303724,8953 -0303902,7737 -0304078,10510 -0304157,7657 -0304178,7310 -0304194,7358 -0304408,6847 -0304890,11166 -0306562,1246589391 -0306563,10741 -0307021,7835 -0307290,9721 -0307461,6208 -0308427,7642 -0308817,7918 -0308887,6439 -0309197,1641 -0309426,1246589994 -0309670,1246588813 -0310085,4831 -0310267,9887 -0310352,7882 -0310580,5808 -0310663,1246588374 -0311294,10792 -0311886,7827 -0311911,7558 -0312418,4651 -0312740,4649 -0312880,4397 -0312899,8012 -0312997,9831 -0313214,7774 -0313260,7914 -0313428,7586 -0313543,7795 -0314881,7954 -0315469,7962 -0315471,10475 -0315472,9263 -0315658,1246588780 -0315809,4783 -0315857,10922 -0318229,6860 -0318584,7664 -0318602,7388 -0318693,9905 -0318928,11090 -0320286,1246589941 -0321717,1246590368 -0321870,7912 -0321984,5851 -0322201,10869 -0322564,6797 -0322868,4761 -0323011,7474 -0323025,7836 -0323518,4676 -0323612,9036 -0323670,7710 -0323989,10932 -0324177,6135 -0324748,9782 -03250301,9157 -0326363,6752 -0326462,7496 -0326520,6187 -0326563,7356 -0327753,7367 -0328600,6977 -0328773,1246589676 -0328882,6313 -0328965,7549 -0329054,5604 -0329733,6521 -0329980,7674 -0329986,5881 -0330421,9736 -0330574,5744 -0330630,7771 -0330972,3218 -0331756,5965 -0331885,4197 -0332232,8166 -0332455,7878 -0332604,7806 -0332607,8133 -0332610,7798 -0332966,7807 -0332968,3411 -0333038,6771 -0333339,5655 -0334111,5957 -0334155,6996 -0334222,1246588800 -0334626,5999 -0334641,7992 -0334956,7526 -0335220,7328 -0335354,4712 -0336297,4354 -0336522,3303 -0337149,4341 -0337472,4666 -0337772,7852 -0337831,1246589489 -0337948,3314 -0338145,8044 -0338152,8063 -0338247,7820 -0338385,6180 -0338386,7638 -0338439,4306 -0338476,8129 -0338642,7960 -0338756,7928 -0338774,4760 -0338780,7885 -0339192,7923 -0339246,7325 -0339376,5601 -0339392,9660 -0339941,7862 -0340242,7777 -0340277,7652 -0340292,7503 -0340300,7782 -0340398,7770 -0340414,6834 -0340431,7336 -0340438,7671 -0340533,1246590373 -0340734,7003 -0340740,7004 -0340950,7533 -0341100,7968 -0341124,5469 -0341248,7816 -0341957,5353 -0342085,8095 -0342266,8955 -0342304,7635 -0342613,4788 -0343070,6767 -0343558,4842 -0343600,7839 -0343821,5210 -0344025,4787 -0344040,7993 -0344054,4723 -0344161,6305 -0344208,1246588695 -0344231,7746 -0344245,7487 -0344565,7814 -0344674,8188 -0344768,7804 -0344784,5786 -0344901,7498 -0344950,6538 -0345411,3920 -0345483,5259 -0345553,7754 -0345571,6109 -0345662,7902 -0345787,1246589517 -0345822,5015 -0346290,7499 -0346292,6414 -0346533,4881 -0348895,5886 -0348982,7550 -0349142,4667 -0349311,7582 -0349402,7849 -0349502,7634 -0349516,7641 -0349899,7949 -0350028,7904 -0350328,8043 -0350428,10865 -0350489,5789 -0350734,10154 -0350925,7504 -0351128,6757 -0351381,4821 -0351422,5648 -0351631,6800 -0351668,9055 -0351745,6633 -0351747,1246588154 -0351784,4816 -0351840,9804 -0351863,6386 -0352084,8038 -0352203,7557 -0352693,7927 -0352801,1246588724 -0353013,4713 -0353025,7824 -0353057,7846 -0353497,7911 -0353528,4877 -0353536,8106 -0353845,4872 -0353863,7786 -0354031,7873 -0354036,4858 -0354153,9761 -0354406,5234 -0354455,1246589506 -0354511,5241 -0354643,4657 -0354839,7352 -0354949,10183 -0355226,7792 -0355228,6677 -0355358,7945 -0355381,4744 -0355394,5451 -0355562,7860 -0355563,7788 -0355602,8983 -0355618,7350 -0355767,4174 -0355792,5779 -0355863,9880 -0355946,9132 -0355949,7905 -0356189,7311 -0356243,6776 -0356466,7741 -0356742,11175 -0356774,6647 -0356869,7908 -0357035,7944 -0357194,9466 -0357279,8948 -0357375,7805 -0357499,4844 -0357558,9107 -0357565,8037 -0357570,7870 -0357707,7875 -0357712,9398 -0357877,7689 -0357924,4745 -0358034,5008 -0358038,6978 -0358117,4808 -0358131,7243 -0358145,4740 -0358167,4695 -0358176,7764 -0358182,5004 -0358201,7834 -0358208,4798 -0358212,7830 -0358228,7934 -0358248,8833 -0358364,7809 -0358368,7545 -0358377,7440 -0358564,6717 -0358584,5843 -0358586,7621 -0358713,4811 -0358786,4779 -0358864,8134 -0359125,7636 -0359154,4826 -0359287,7889 -0359568,7473 -0359670,4849 -0359691,4880 -0359693,4711 -0359694,7826 -0359711,7864 -0359776,6076 -0359779,7819 -0359946,5200 -0359960,6822 -0360011,5890 -0360162,5923 -0360280,7953 -0360568,7421 -0360669,7658 -0360712,4741 -0360929,8169 -0361005,9390 -0361046,7984 -0361191,7776 -0361249,7915 -0361329,10333 -0361335,6537 -0361519,7432 -0361649,8167 -0361700,4176 -0361745,5215 -0361770,7845 -0361867,5980 -0361935,4458 -0361936,4658 -0361956,7831 -0361965,7879 -0361977,5963 -0362438,7956 -0362478,1246589166 -0366488,4818 -0366526,4545 -0366564,6449 -0366753,5769 -0366770,6704 -0366779,4672 -0366819,5191 -0366839,7607 -0366869,5701 -0367249,7971 -0367411,5799 -0367501,8087 -0367717,7887 -0367726,7673 -0367770,4876 -0367783,7810 -0367797,7907 -0367864,4552 -0367919,5213 -0367931,4555 -0368114,5845 -0368276,5941 -0368329,7609 -0368369,6813 -0368574,7574 -0368897,7783 -0369270,4690 -0369285,7801 -0369332,5775 -0369342,7695 -0369353,7890 -0369416,6511 -0369451,4700 -0369472,6661 -0369473,7947 -0369479,7899 -0369540,5935 -0369558,8949 -0369584,8077 -0369594,5997 -0369633,6026 -0369639,4807 -0369708,4786 -0369781,5977 -0369824,9568 -0369884,7997 -0370075,7808 -0370110,5790 -0370159,5017 -0370272,5933 -0370279,6070 -0370303,7109 -0370308,6101 -0370330,6084 -0370499,7153 -0370536,7744 -0370541,6846 -0370542,7008 -0370611,7765 -0370612,6941 -0370661,6660 -0370734,7082 -0370750,8010 -0370838,7704 -0370969,5892 -0371112,6060 -0371128,6905 -0371133,9561 -0371185,5855 -0371202,6976 -0371206,4827 -0371222,5938 -0371358,1246589789 -0371375,6046 -0371387,5805 -0371410,5212 -0371457,6012 -0371524,5955 -0371575,7900 -0371602,7554 -0371662,7611 -0371710,4675 -0371826,4847 -0371829,7536 -0371858,7946 -0371916,5981 -0372020,6429 -0372079,7756 -0372124,6684 -0372125,8091 -0372158,7772 -0372162,7828 -0372176,5781 -0372225,7089 -0372242,5688 -0372280,5820 -0372281,7455 -0372314,7861 -0372392,7303 -0372451,7524 -0372547,7939 -0372548,8107 -0372633,6019 -0372654,4814 -0372683,7886 -0372755,7840 -0372777,7361 -0372784,5995 -0372801,5618 -0372814,6024 -0372853,5803 -0372868,7552 -0372877,7138 -0372924,7936 -0372939,7917 -0372945,6681 -0372974,6953 -0373019,5912 -0373069,7071 -0373079,5642 -0373083,5982 -0373129,6772 -0373256,6588 -0373298,7853 -0373302,6334 -0373339,5010 -0373352,9838 -0373447,7502 -0373465,7564 -0373496,6418 -0373499,7632 -0373546,4663 -0373597,7838 -0373602,5726 -0373666,7565 -0373677,5668 -0373713,8056 -0373760,5322 -0373776,6605 -0373798,4739 -0373837,7266 -0373865,1246590318 -0373869,5678 -0373878,4698 -0373952,7392 -0373958,4749 -0373964,7583 -0374023,7497 -0374059,7573 -0374082,7713 -0374102,5871 -0374162,7821 -0374194,7232 -0374203,4624 -0374205,5301 -0374239,4623 -0374391,6178 -0374440,7515 -0374698,6992 -0374730,5983 -0374742,6014 -0374779,5972 -0374792,5244 -0374837,5314 -0481055,10365 -0481063,10375 -0481068,10380 -0481071,10450 -0481078,10513 -0481093,10227 -0481098,9906 -0481112,10233 -0481133,10279 -0481142,10462 -0481149,10290 -0481157,10441 -0481159,10298 -0481168,1246588258 -0481189,10342 -0481190,10349 -0481191,10236 -0481207,10410 -0481209,9841 -0481212,10265 -0481219,10773 -0481239,10536 -0481240,10826 -0481252,10411 -0481292,1246588281 -0481323,10500 -0481327,10326 -0481337,10293 -0481344,10434 -0481360,9242 -0481403,10447 -0481440,10426 -0481450,9802 -0481471,10453 -0481480,10386 -0481482,10282 -0481488,10827 -0481489,10400 -0481506,1246587872 -0481539,10271 -0481552,9744 -0481563,10137 -0481580,9651 -0481595,9855 -0481597,9655 -0481610,9814 -0481615,9834 -0481616,9806 -0481622,9867 -0481623,10873 -0481642,10543 -0481644,10395 -0481674,10504 -0481678,10723 -0481689,10520 -0481692,10555 -0481720,11221 -0481723,9784 -0481757,9658 -0481772,10414 -0481776,10348 -0481781,10355 -0481783,10535 -0481788,10339 -0481796,10292 -0481801,10496 -0481805,10340 -0481823,10244 -0481888,10757 -0481893,10377 -0481923,1246588142 -0481944,10358 -0481956,10556 -0481993,11246 -0482043,10473 -0482099,10162 -0482102,11199 -0482175,1246588842 -0482177,9760 -0482287,10281 -0482311,10428 -0482322,10408 -0482327,9775 -0482328,10280 -0482329,10503 -0482338,1246588069 -0482361,10404 -0482363,10552 -0482364,10297 -0482386,1246589446 -0482409,10549 -0482414,10831 -0482418,10427 -0482440,1246589621 -0482443,10759 -0482448,1246588349 -0482454,10113 -0482456,1246589781 -0482457,10519 -0482481,10758 -0482512,10422 -0482513,11289 -0482586,10529 -0482694,10296 -0482731,9851 -0482737,10522 -0482754,10541 -0482764,10320 -0482779,10420 -0482794,10791 -0482799,9799 -0482800,9881 -0482802,10553 -0482805,10033 -0482846,10724 -0482875,10309 -0482876,10308 -0482882,10562 -0482883,10392 -0482884,10514 -0482887,9836 -0482890,10779 -0482892,10055 -0482899,11019 -0482922,9890 -0482924,1246588388 -0482941,10393 -0482945,10774 -0482959,1246588715 -0482968,10611 -0482983,9860 -0482985,10493 -0482991,10270 -0482995,10540 -0483038,10539 -0483046,10470 -0483070,10736 -0483072,10780 -0483095,10564 -0483099,10383 -0483123,10257 -0483127,1246588130 -0483148,10839 -0483149,10315 -0483193,9894 -0483201,9897 -0483247,1246589526 -0483292,10313 -0483298,10725 -0483310,1246589811 -0483313,10346 -0483354,10764 -0483379,10840 -0483392,1246588068 -0483426,10357 -0483429,10261 -0483433,1246588085 -0483459,10222 -0483469,10505 -0483482,10416 -0483483,10399 -0483550,9907 -0483555,10727 -0483563,10790 -0483583,10828 -0483586,1246589440 -0483618,1246588111 -0483718,10516 -0483776,10558 -0483810,10567 -0483817,10461 -0483818,10262 -0483819,10305 -0483843,10467 -0483844,1246589397 -0483846,10772 -0483873,9917 -0483901,10263 -0484011,10310 -0484015,10518 -0484027,10239 -0484028,10344 -0484043,10152 -0484048,1246588105 -0484140,10067 -0484148,10468 -0484155,10135 -0484160,10269 -0484171,10301 -0484173,11212 -0484226,10268 -0484239,10258 -0484243,10316 -0484251,1246588141 -0484286,1246589289 -0484299,10387 -0484327,10155 -0484350,10153 -0484367,10388 -0484372,1246589442 -0484373,10413 -0484393,10351 -0484407,10132 -0484410,10766 -0484412,10995 -0485904,1246588362 -0485918,10149 -0485925,1246588072 -0485927,10561 -0485969,10587 -0485971,10275 -0485980,10300 -0485991,10253 -0486005,10133 -0486013,10412 -0486019,10528 -0486026,1246588633 -0486045,10369 -0486046,10286 -0486047,10532 -0486056,10403 -0486062,10487 -0486122,1246588389 -0486146,10551 -0486184,10323 -0486194,10554 -0486221,1246589132 -0486226,10722 -0486266,10721 -0486281,1246588137 -0486300,1246588353 -0486303,10056 -0486322,10234 -0486331,1246588143 -0486343,10719 -0486358,10147 -0486360,10530 -0486365,10439 -0486371,10384 -0486432,10247 -0486446,1246588402 -0486461,10415 -0486485,10488 -0486548,10266 -0486555,10527 -0486562,10537 -0486581,10755 -0486589,10431 -0486592,10816 -0486643,10444 -0486697,10381 -0486698,10566 -0486700,10440 -0486709,10159 -0486779,10732 -0486819,10718 -0486830,10334 -0486847,10738 -0486860,10391 -0486862,10078 -0486996,1246588460 -0487026,1246588343 -0487043,10735 -0487062,10188 -0487068,10356 -0487099,10565 -0487110,10485 -0487131,10499 -0487149,10350 -0487155,10479 -0487161,11154 -0487181,10726 -0487182,10232 -0487190,10484 -0487199,10398 -0487201,11311 -0487211,10091 -0487266,10731 -0487272,11159 -0487285,10347 -0487409,10163 -0487446,1246590125 -0487490,1246589457 -0487496,11031 -0487501,10177 -0487522,10734 -0487528,10277 -0487533,10708 -0487568,1246589221 -0487570,1246588153 -0487627,10343 -0487637,1246588431 -0487664,10459 -0487669,1246589555 -0487670,10248 -0487703,10229 -0487712,10495 -0487725,11072 -0487729,10242 -0487754,10246 -0487757,1246589716 -0487791,10238 -0487808,10795 -0487897,10458 -0487934,1246588457 -0487948,1246588184 -0487967,10396 -0487986,1246588320 -0487993,10094 -0487998,1246589662 -0488039,10469 -0488042,10249 -0488058,10742 -0488167,1246588803 -0488207,10345 -0488224,10097 -0488235,10430 -0488258,10186 -0488300,10119 -0488309,10252 -0488316,10182 -0488318,11021 -0488321,11083 -0488357,10109 -0488368,10720 -0488380,10776 -0488413,10124 -0488415,10524 -0488464,10548 -0488494,1246589023 -0488541,1246588437 -0488604,1246588783 -0488672,10489 -0488806,1246588679 -0488843,11245 -0488851,1246588404 -0488852,1246588443 -0488879,10201 -0488881,10751 -0488909,11135 -0488923,11272 -0488950,1246588426 -0489013,1246589306 -0489034,1246588123 -0489062,10560 -0489122,1246588789 -0489267,10550 -0489275,10374 -0489349,1246589017 -0489351,10914 -0489366,10538 -0489373,10783 -0489425,10194 -0489438,10717 -0489448,10480 -0489451,10449 -0489452,10492 -0489462,10506 -0489483,10189 -0489497,10472 -0489519,1246588096 -0489545,1246588429 -0489547,11270 -0489552,1246589319 -0489563,10542 -0489622,1246590121 -0489625,1246588175 -0489758,1246589673 -0489759,10198 -0489760,10210 -0489825,11300 -0489873,10793 -0489929,10206 -0489963,10207 -0490038,10762 -0490099,10284 -0490139,10752 -0490143,10754 -0490161,10707 -0490168,1246588892 -0490196,10777 -0490248,1246588413 -0490346,1246588450 -0490347,1246588387 -0490376,10771 -0490381,10729 -0490893,1246588342 -0490908,1246588097 -0490919,1246588164 -0490921,10769 -0374858,8178 -0374919,8947 -0374930,7948 -0374932,7850 -0374951,6064 -0375276,8078 -0375332,8553 -0375407,7692 -0375439,5910 -0375466,5707 -0375590,7544 -0375898,5734 -0375997,6066 -0376048,6108 -0376162,5724 -0376691,5765 -0376792,7883 -0376797,6796 -0376828,5776 -0376894,9717 -0376905,7991 -0377023,7757 -0377103,7534 -0377106,8124 -0377108,6078 -0377228,5206 -0377278,6571 -0377295,10478 -0377297,4638 -0377312,6010 -0377313,6673 -0377318,6015 -0377326,5836 -0377345,6025 -0377423,8014 -0377476,5905 -0377489,6080 -0377508,10090 -0377617,6041 -0377621,5662 -0377623,6043 -0377627,5766 -0377629,5898 -0377689,7818 -0377692,6332 -0377760,5932 -0377788,7580 -0377792,5954 -0377890,5870 -0377903,5913 -0377938,6115 -0377939,5877 -0377955,7922 -0378005,8981 -0378012,5826 -0378067,7833 -0378071,5934 -0378096,7803 -0378111,6054 -0378242,5958 -0378355,5657 -0378373,6033 -0378377,8950 -0378404,6050 -0378419,4796 -0378499,8097 -0378502,5951 -0378562,5968 -0378604,5703 -0378701,7906 -0378712,6044 -0378750,6001 -0378817,7416 -0378834,6068 -0378850,5696 -0378889,5317 -0378913,7779 -0378923,6699 -0378935,6188 -0378964,10081 -0378978,6749 -0379011,7596 -0379071,5617 -0379096,5764 -0379100,5866 -0379102,5950 -0379126,7999 -0379139,5961 -0379145,5807 -0379159,6821 -0379177,6983 -0379201,7866 -0379212,5825 -0379215,5943 -0379242,6727 -0379300,5797 -0379318,7901 -0379319,5915 -0379321,7559 -0379329,5792 -0379331,6095 -0379363,5737 -0379492,5729 -0379498,6984 -0379519,5917 -0379560,5993 -0379602,6039 -0379643,5942 -0379676,5853 -0379686,5974 -0379695,7863 -0379696,5887 -0379730,5759 -0379739,5930 -0379767,9259 -0379791,6021 -0379808,5835 -0379820,7995 -0379943,5831 -0379946,7842 -0379952,5921 -0379980,5647 -0379982,5956 -0379983,8018 -0380007,5894 -0380053,5745 -0380114,5640 -0380140,7708 -0380168,7761 -0380170,1246589782 -0380218,5715 -0380238,5612 -0380242,7780 -0380285,1246588923 -0380347,6005 -0380433,8821 -0380457,6435 -0380505,8128 -0381521,3999 -0381524,5405 -0386538,7696 -0386604,5865 -0386607,5419 -0386635,6378 -0386670,5699 -0386708,8172 -0386710,6516 -0386725,5967 -0386792,5830 -0386842,5939 -0386865,6052 -0387014,7871 -0387019,5988 -0387042,8040 -0387052,5753 -0387091,8588 -0387092,5953 -0387153,6018 -0387194,6864 -0387244,5901 -0387252,5732 -0387306,6031 -0387398,6349 -0387423,5667 -0387492,8513 -0387495,7234 -0387582,6455 -0387583,6815 -0387758,10141 -0387791,6531 -0387869,1246589627 -0387873,5969 -0387905,8917 -0388067,5952 -0388072,5992 -0388107,6889 -0388139,6035 -0388213,5760 -0388291,5714 -0388303,7622 -0388313,10311 -0388460,5908 -0388473,10999 -0388499,5434 -0388560,7612 -0388614,5879 -0388690,5731 -0388771,6357 -0388790,5704 -0388832,6540 -0388909,7790 -0389096,6500 -0389156,6585 -0389158,5811 -0389159,6638 -0389182,6316 -0389220,6715 -0389223,5928 -0389311,5798 -0389423,6515 -0389456,7903 -0389718,9555 -0389770,6833 -0389777,7075 -0389841,8090 -0389860,6621 -0389903,7732 -0389979,5750 -0390008,7548 -0390091,5842 -0390094,5406 -0390231,1246589626 -0390235,6480 -0390283,7522 -0390333,6067 -0390363,8647 -0390430,6896 -0390431,6897 -0390503,6037 -0390544,5697 -0390552,6003 -0390563,6979 -0390608,5918 -0390612,7141 -0390727,5802 -0390804,5421 -0390811,6510 -0390840,5973 -0390866,7136 -0390883,6468 -0390934,5761 -0391015,5987 -0391042,7990 -0391060,6034 -0391150,6011 -0391170,8702 -0391178,6027 -0391187,6327 -0391194,6117 -0391273,5874 -0391369,6428 -0391382,6463 -0391394,5452 -0391711,5675 -0391719,7854 -0391746,1246589538 -0391875,5730 -0392028,5664 -0392086,7616 -0392205,5821 -0392213,5880 -0392222,5742 -0392227,8656 -0392249,5736 -0392268,5777 -0392325,5702 -0392337,5686 -0392533,6062 -0392762,5684 -0393049,7781 -0393055,5780 -0393100,6723 -0393151,9549 -0393162,5683 -0393223,7477 -0393264,7867 -0393312,6754 -0393334,6359 -0393343,5681 -0393434,6705 -0393590,5651 -0393623,7768 -0393627,5903 -0393680,7755 -0393703,5816 -0393756,5788 -0393834,5975 -0393839,8000 -0393928,5672 -0393930,9049 -0393986,5649 -0394078,6051 -0394100,1246589665 -0394114,6311 -0394116,1246589848 -0394181,5857 -0394235,6304 -0394246,6059 -0394249,7097 -0394255,5869 -0394400,6857 -0394404,8019 -0394454,7823 -0394474,10998 -0394537,6032 -0394540,7242 -0394607,6295 -0394705,1246589577 -0394734,5666 -0394791,5740 -0394801,6520 -0394821,6314 -0395025,8225 -0395028,7090 -0395036,7149 -0395045,6370 -0395047,6497 -0395181,6360 -0395184,7556 -0395458,10438 -0395478,6351 -0395492,9106 -0395495,6766 -0395757,6624 -0395823,6651 -0395907,5614 -0395910,7789 -0395960,6478 -0396070,6377 -0396095,5725 -0396120,6574 -0396175,1246589509 -0396200,6535 -0396215,7661 -0396280,6546 -0396346,6409 -0396491,6665 -0396509,7663 -0396559,6599 -0396605,6548 -0396645,8194 -0396657,6643 -0396664,6587 -0396674,6343 -0396687,6710 -0396705,6539 -0396715,8515 -0396784,6310 -0396793,6619 -0396805,5810 -0396852,7543 -0396854,5620 -0396875,6399 -0396876,6401 -0396885,8218 -0396893,6603 -0396896,6447 -0396908,6481 -0397006,7398 -0397026,6517 -0397095,6659 -0397212,8357 -0397213,6827 -0397251,6336 -0397252,6817 -0397261,6645 -0397282,6565 -0397288,6682 -0397303,6583 -0397318,6590 -0397347,6607 -0397356,5721 -0397632,7579 -0397657,6617 -0397678,6416 -0397680,6493 -0397739,6441 -0397825,6544 -0397842,6492 -0397867,6657 -0397874,6561 -0397891,7012 -0397900,7759 -0397913,6486 -0397943,7625 -0397956,6770 -0397985,6306 -0398144,6532 -0398247,6888 -0398291,6553 -0398292,6156 -0398326,6908 -0398328,6915 -0398339,6942 -0398363,7478 -0398365,6394 -0398371,6397 -0398372,6454 -0398382,6557 -0398394,6580 -0398395,6608 -0398413,6509 -0398439,6554 -0398468,6450 -0398501,7546 -0398643,5632 -0398656,6422 -0398678,6508 -0398764,6496 -0398767,6552 -0399044,8034 -0399087,5919 -0399090,6402 -0399164,5832 -0399333,6086 -0399337,6081 -0399341,6309 -0399377,6536 -0399395,6968 -0399490,6475 -0399521,8837 -0399529,10910 -0399534,6502 -0399549,8062 -0399609,7604 -0399634,6457 -0399848,6358 -0399858,6307 -0399937,7126 -0399944,7618 -0400028,6579 -0400059,6149 -0400069,6181 -0400501,6501 -0400509,6584 -0400561,6413 -0400585,6346 -0400615,6875 -0400616,6384 -0400618,7086 -0400622,6325 -0400630,6708 -0400649,6634 -0400664,6658 -0400675,6642 -0400689,10366 -0400819,7371 -0400864,9345 -0400873,7125 -0405635,7631 -0405651,8114 -0405653,6382 -0405657,6606 -0409683,6542 -0409684,6543 -0409687,6367 -0409697,6572 -0409707,1246589827 -0409709,6512 -0409795,8176 -0409821,6720 -0409865,8725 -0409895,7055 -0410096,6461 -0410197,6592 -0410236,6182 -0410238,8027 -0410242,6545 -0410270,7106 -0410292,6491 -0410308,6319 -0410337,6524 -0410354,7897 -0410399,6460 -0410408,6620 -0410423,1246588685 -0410439,6878 -0410444,6556 -0410445,6459 -0410486,7825 -0410574,7434 -0410613,7063 -0410658,7417 -0410666,6373 -0410668,6558 -0410705,6356 -0410717,9059 -0410718,9739 -0410827,6452 -0410911,6341 -0410960,7369 -0410964,7832 -0410984,6324 -0410994,9811 -0410998,8876 -0411071,6597 -041111,6350 -0411118,6466 -0411135,9728 -0411184,6308 -0411187,6691 -0411206,6602 -0411252,6337 -0411280,7143 -0411363,7872 -0411365,6966 -0411420,8564 -0411472,6899 -0411536,6629 -0411542,8119 -0411593,7299 -0411630,6470 -0411636,6186 -0411649,6514 -0411665,6437 -0411666,6794 -0411684,6616 -0411721,6522 -0412165,1246588647 -0412184,6713 -0412297,6667 -0412754,6697 -0413740,6488 -0413746,6887 -0413763,6453 -0413779,7869 -0413798,7463 -0413890,8117 -0413895,7603 -0413927,6601 -0413944,6436 -0413950,7470 -0414006,8283 -0415029,6596 -0415153,6944 -0415157,6879 -0415210,6174 -0415331,6850 -0415346,6534 -0415416,6656 -0415437,6626 -0415463,6426 -0415551,8140 -0415556,6339 -0415605,6456 -0415618,6471 -0415760,7431 -0415823,6936 -0415842,7251 -0415856,9198 -0415860,6393 -0415861,1246589687 -0415865,6965 -0415887,6442 -0415896,6408 -0415947,6612 -0415955,6672 -0415971,6270 -0415974,6391 -0415991,6389 -0415997,6595 -0416005,7248 -0416011,7424 -0416013,6317 -0416014,6668 -0416087,6628 -0416110,6876 -0416158,7148 -0416184,6586 -0416198,6529 -0416202,9737 -0416203,7660 -0416212,8068 -0416283,6679 -0416331,6951 -0416332,6954 -0416347,9170 -0416354,6390 -0416410,6707 -0416411,6671 -0416413,8463 -0416417,8462 -0416470,10891 -0416483,6424 -0416488,6622 -0416496,8110 -0416497,6926 -0416507,6498 -0416509,7758 -0416510,8165 -0416587,6519 -041661,6323 -0416625,6820 -0416627,7096 -0416658,6443 -0416665,8236 -0416694,7606 -0416736,6906 -0416780,7295 -0416787,7105 -0416796,7302 -0416808,7087 -0416812,7263 -0416944,8662 -0416946,6967 -0417009,6411 -0417165,6547 -0417183,7633 -0417238,6331 -0417326,6859 -0417338,8121 -0417397,6623 -0417404,6687 -0417406,8232 -0417419,8125 -0417434,6376 -0417435,6695 -0417463,7225 -0417528,7365 -0417529,6945 -0417533,8815 -0417614,6991 -0417628,6832 -0417630,7785 -0417637,7773 -0417657,7384 -0417658,8646 -0417659,7851 -0417716,6868 -0417765,6894 -0417780,8265 -0417782,8555 -0417796,6886 -0417818,6503 -0417826,6928 -0417850,7093 -0417862,7129 -0417866,7373 -0417867,7506 -0417869,6998 -0417997,7254 -0418012,6476 -0418023,7267 -0418032,6923 -0418034,7286 -0418037,6504 -0418050,6396 -0418123,6479 -0418127,7408 -0418184,7108 -0418203,6395 -0418218,6433 -0418219,7677 -0418252,6970 -0418308,6882 -0418359,7235 -0418406,6694 -0418543,7378 -0418549,6962 -0418552,7265 -0418588,7244 -0418634,11053 -0418668,8657 -0418731,6526 -0418773,7091 -0418788,6690 -0418789,7684 -0418802,6937 -0418864,6379 -0418885,9904 -0418915,7472 -0418980,6869 -0419025,7466 -0419042,7877 -0419072,7144 -0419086,7134 -0419098,6425 -0419104,7151 -0419221,6206 -0419236,7297 -0419263,7379 -0419324,1246590316 -0419330,6403 -0419372,8582 -0419426,9062 -0419489,6273 -0419490,7796 -0419528,6287 -0419597,8271 -0419598,10312 -0419599,1246589767 -0419633,7061 -0419684,7046 -0419714,6676 -0419735,8541 -0419807,7228 -0419871,7064 -0419875,7128 -0419891,7066 -0420004,7050 -0420006,6871 -0420011,7221 -0420014,7223 -0420034,7491 -0420043,7237 -0420050,6922 -0420051,7123 -0420091,6326 -0420133,6663 -0420135,6567 -0420168,6980 -0420197,7457 -0420204,1246588817 -0420254,9565 -0420308,8256 -0420343,7700 -0420359,7570 -0420371,7216 -0420376,6874 -0420394,7403 -0420401,6292 -0420421,7276 -0420425,7511 -0420426,7512 -0420430,7293 -0420441,7084 -0420463,6929 -0420471,7111 -0420487,6903 -0420571,7273 -0420581,7280 -0420606,6919 -0420621,7288 -0420627,7291 -0420695,9570 -0420721,10157 -0420733,6955 -0420745,6956 -0420790,6861 -0420798,7147 -0420801,9576 -0420822,7092 -0420824,6914 -0420892,7279 -0420896,7624 -0420902,8558 -0420919,6893 -0420954,7107 -0420957,7256 -0420966,7213 -0420967,7215 -0420972,9065 -0420975,6885 -0420986,7072 -0420987,7390 -0421002,8495 -0421006,6910 -0421013,8229 -0421015,7270 -0421026,7102 -0421033,7374 -0421082,6291 -0421203,7289 -0421214,8228 -0421236,8276 -0421335,6210 -0421371,6290 -0421407,7475 -0421423,9805 -0421466,7095 -0421479,7743 -0421491,6958 -0421505,7452 -0421543,9563 -0421544,7119 -0421595,11035 -0421608,8761 -0421610,6352 -0421616,7441 -0421620,8565 -0421654,6898 -0421673,7509 -0421678,6884 -0421716,6912 -0421752,6891 -0421788,7745 -0421800,7101 -0421815,7252 -0421837,7701 -0421859,7429 -0421861,6933 -0421864,7253 -0421873,7121 -0421893,9105 -0421913,6803 -0421946,7762 -0421947,6700 -0421954,8258 -0421979,7287 -0421981,7110 -0421982,8298 -0421995,10859 -0422130,7255 -0422132,7753 -0422133,7000 -0422146,9826 -0422172,8320 -0422191,7088 -0422203,7053 -0422209,10810 -0422237,6902 -0422260,6964 -0422271,1246589686 -0422272,7240 -0422314,7742 -0422356,8004 -0422365,7258 -0422366,6988 -0422375,7383 -0422396,6809 -0422419,7438 -0422466,8552 -0422476,8261 -0422510,9235 -0422517,7058 -0422548,7813 -0422640,9557 -0422694,7127 -0422727,6938 -0422780,8053 -0422823,6920 -0422825,7051 -0422844,7422 -0422865,8520 -0422882,8275 -0422927,8730 -0427332,7227 -0427886,1246588693 -0427892,7399 -0429712,6930 -0429718,7282 -0429742,7219 -0429757,6946 -0429825,7985 -0429834,8767 -0429855,7514 -0429950,6917 -0429982,7799 -0429991,7517 -0429992,10525 -0430029,6931 -0430048,1246588871 -0430087,9871 -0430132,7137 -0430137,8288 -0430169,7233 -0430205,6921 -0430207,1246588879 -0430238,8507 -0430243,6935 -0430257,7372 -0430300,8643 -0430327,9061 -0430362,7401 -0430363,6961 -0430364,1246588894 -0430376,7246 -0430407,7060 -0430414,8058 -0430418,7433 -0430457,7407 -0430479,7250 -0430576,7068 -0430617,6806 -0430624,6808 -0430627,7083 -0430629,7131 -0430688,7067 -0430730,7716 -0430758,10814 -0430777,8544 -0430827,7104 -0430835,7080 -0430837,7077 -0430845,7306 -0430862,7453 -0430907,8570 -0430964,8645 -0430965,8267 -0430993,6883 -0430998,6934 -0431006,7054 -0431068,7217 -0431106,7285 -0431174,8509 -0431175,7074 -0431176,8503 -0431226,7510 -0431237,7386 -0431302,8260 -0431379,6940 -0431400,8581 -0431418,9064 -0431441,10044 -0431470,7078 -0431516,8500 -0431517,7269 -0431542,10161 -0431569,7343 -0431596,7414 -0431603,7454 -0431659,7794 -0431669,6963 -0431702,7130 -0431726,6880 -0431754,7264 -0431764,7059 -0431786,7406 -0431789,7437 -0431795,6909 -0431840,7132 -0431847,7292 -0431987,8586 -0432039,8239 -0432049,8576 -0432077,8680 -0432278,6993 -0432285,7114 -0432305,8514 -0432354,9159 -0432372,7226 -0432402,8332 -0432443,7450 -0432450,7049 -0432468,7220 -0432498,8771 -0432509,7448 -0432581,7411 -0432583,6870 -0432673,8560 -0432722,10185 -0432731,7380 -0432767,7112 -0432771,11110 -0432885,6881 -0432894,7456 -0432971,7305 -0432973,7300 -0432987,6843 -0433049,7079 -0433224,8127 -0433454,7894 -0433485,7391 -0433489,7516 -0433503,7272 -0433556,7094 -0433562,7099 -0433576,7298 -0433769,8359 -0433812,7396 -0433815,9865 -0433870,7412 -0433895,7447 -0433897,7400 -0433900,7249 -0434157,10812 -0434250,7218 -0434446,1246589624 -0435860,7443 -0435871,7521 -0435877,10546 -0435888,7294 -0436166,10166 -0436187,7085 -0436236,6957 -0436355,6810 -0436371,6943 -0436381,9803 -0436382,6877 -0436383,6947 -0436423,7098 -0436424,7304 -0436432,7360 -0436489,7342 -0436501,7513 -0436503,7262 -0436509,10615 -0436532,7375 -0436636,8118 -0436650,8302 -0436668,6950 -0436701,7224 -0436721,8681 -0436733,7402 -0436737,7277 -0436747,7377 -0436765,7547 -0436766,8361 -0436769,7608 -0436774,7154 -0436789,6195 -0436791,8744 -0436800,7278 -0436819,7413 -0436847,7260 -0436858,6890 -0436970,7686 -0436984,7471 -0437004,7460 -0437005,7236 -0437049,8665 -0437069,7451 -0437111,7231 -0437128,9060 -0437147,8575 -0437286,7427 -0437322,8538 -0437331,7362 -0437382,8712 -0437383,7615 -0437390,11073 -0437391,7047 -0437411,9179 -0437428,8719 -0437493,8277 -0437498,1246589171 -0437502,8217 -0437540,7446 -0437549,8477 -0437559,1246589818 -0437567,7394 -0437628,7241 -0437643,7229 -0437644,7425 -0437651,8550 -0437660,7275 -0437666,10165 -0437683,9673 -0437693,9052 -0437699,7239 -0437724,9816 -0437727,8512 -0437748,8526 -0437777,7748 -0437799,7665 -0437805,8563 -0437808,7676 -0437834,7520 -0437844,8756 -0437911,7610 -0437938,8573 -0437965,7420 -0437975,7359 -0437995,8519 -0438068,7073 -0438070,7519 -0438109,7542 -0438131,7418 -0438145,8363 -0438197,6698 -0438207,8545 -0438306,8660 -0438344,8696 -0438370,7133 -0438373,7116 -0438391,7620 -0438412,7490 -0438416,7613 -0438419,7449 -0438451,10120 -0438454,6855 -0438492,7363 -0438495,8654 -0438503,7445 -0438505,7415 -0438507,1246588949 -0438591,8716 -0438621,8510 -0438622,8803 -0438652,8499 -0438660,8326 -0438692,7385 -0438714,7428 -0438715,7725 -0438726,8290 -0438730,7626 -0438731,7284 -0438790,8289 -0438801,6932 -0438807,7410 -0438876,7120 -0438878,7605 -0438896,7581 -0438900,7405 -0438904,7409 -0438910,9194 -0438911,1246589314 -0438934,8250 -0439052,8752 -0439114,9303 -0439125,7623 -0439126,7364 -0439164,8230 -0439165,8081 -0439166,8248 -0439185,7444 -0439193,8571 -0439214,7507 -0439221,7459 -0439237,8249 -0439238,8292 -0439253,9735 -0439254,7439 -0439260,8739 -0439272,8770 -0439298,7599 -0439398,8322 -0439431,7001 -0439435,8506 -0439471,10069 -0439512,7619 -0439534,10146 -0439549,7602 -0439592,8536 -0439608,8502 -0439615,8743 -0439665,8528 -0439671,7458 -0439692,8524 -0439701,7344 -0439702,8314 -0439726,8710 -0439756,7685 -0439774,7419 -0439801,7353 -0439863,8501 -0439868,8243 -0439873,8242 -0439876,1246589143 -0439881,8769 -0439902,8533 -0439903,8490 -0439921,8795 -0439933,8281 -0439936,8669 -0439941,8807 -0439942,8691 -0439945,8779 -0439955,8577 -0439979,8683 -0439980,8768 -0439988,8542 -0439989,10545 -0440008,8291 -0440012,8334 -0440020,8525 -0440059,8486 -0440102,8492 -0440109,8670 -0440118,7002 -0440142,7687 -0440153,8676 -0440174,8723 -0440175,8478 -0440184,8285 -0440208,9293 -0440218,7601 -0440267,7767 -0440291,8016 -0440296,11009 -0440313,8296 -0440317,7656 -0440319,7747 -0440366,8130 -0440399,7640 -0440403,8306 -0440436,1246588335 -0440439,9189 -0440462,9573 -0440487,7617 -0440489,8274 -0440493,7724 -0440494,7717 -0440498,7718 -0440536,8303 -0440537,1246588872 -0440557,8753 -0440563,8273 -0440566,9318 -0440576,8649 -0440607,9794 -0440611,8531 -0440615,8309 -0440618,8574 -0440634,8325 -0440646,8496 -0440664,8686 -0440668,8474 -0440691,8299 -0440695,1246588857 -0440704,8264 -0440708,8672 -0440711,8632 -0440719,8257 -0440726,9434 -0440737,8279 -0440742,8317 -0440763,7680 -0440794,8518 -0440857,8112 -0440923,7723 -0440931,8823 -0440932,8817 -0440937,9168 -0440939,8484 -0440986,8784 -0440990,8572 -0441005,8699 -0441026,8323 -0441032,8790 -0441069,7691 -0441070,7714 -0441071,7938 -0441094,8480 -0441119,8304 -0441120,10958 -0441142,8485 -0441151,8688 -0441158,8293 -0441163,9044 -0441165,8713 -0441221,1246589822 -0441234,8651 -0441253,8693 -0441316,7892 -0441326,8244 -0441327,1246588979 -0441336,8270 -0441363,8701 -0441376,8652 -0441382,7891 -0441388,8111 -0441434,7848 -0441435,10617 -0441437,7802 -0441440,8642 -0441544,8187 -0441579,8548 -0441580,8255 -0441629,8747 -0441642,9733 -0441649,8738 -0441690,8237 -0441695,8321 -0441792,8664 -0441796,10145 -0441798,8539 -0441820,8687 -0441832,8294 -0441877,8319 -0441905,8482 -0442052,8650 -0442072,8559 -0442101,9795 -0442126,8534 -0442127,8535 -0442185,8706 -0442209,11013 -0442320,8940 -0442431,8297 -0442439,8707 -0442448,8797 -0442453,8801 -0442455,8324 -0442460,8522 -0442472,7969 -0442511,8758 -0442521,8781 -0442525,8305 -0442529,8812 -0442535,8330 -0442553,8511 -0442584,8822 -0442593,8631 -0442625,1246589474 -0442639,8523 -0442640,9800 -0442641,8263 -0442644,8658 -0442696,8308 -0442733,8628 -0442736,8498 -0442768,8827 -0442771,9490 -0442786,8638 -0442803,8655 -0442810,8530 -0442811,8667 -0442816,8547 -0442838,8488 -0442853,8241 -0442854,8491 -0442855,8551 -0442858,8082 -0442861,8084 -0442870,8731 -0442878,8516 -0442900,8796 -0442916,8737 -0442918,8789 -0442928,8116 -0442952,8521 -0442954,8268 -0442961,8568 -0444312,9662 -0450807,8311 -0450835,7976 -0450885,8835 -0450895,8508 -0450904,8282 -0450909,8689 -0450910,9305 -0450953,8663 -0450992,8800 -0450999,9443 -0451015,8247 -0451018,8825 -0451050,8794 -0451146,8483 -0451152,8083 -0451170,8714 -0451211,8684 -0451232,9426 -0451258,9072 -0451264,8543 -0451279,8312 -0451283,8315 -0451306,8580 -0451323,8668 -0451325,8766 -0451344,8763 -0451352,9900 -0451397,8639 -0451429,1246589145 -0451457,8259 -0451463,8703 -0451465,8566 -0451466,8287 -0451476,1246585674 -0451488,8113 -0451522,8745 -0451531,9310 -0451544,8335 -0451554,8556 -0451591,8764 -0451617,9256 -0451622,8155 -0451628,8808 -0451657,8331 -0451677,1246588988 -0451686,8733 -0451717,9145 -0451726,8286 -0451747,8549 -0451798,8489 -0451807,9090 -0451809,8318 -0451827,8685 -0451838,8329 -0451852,8640 -0451878,10526 -0451890,8557 -0451902,8017 -0451926,8157 -0451938,8877 -0451941,8629 -0451954,8013 -0451956,8115 -0451976,8159 -0452018,8666 -0452024,8700 -0452058,8234 -0452071,8585 -0452182,8333 -0452192,8587 -0452213,8773 -0452223,8697 -0452245,8235 -0452262,8673 -0452266,8788 -0452275,8245 -0452287,8262 -0452312,8742 -0452342,8497 -0452366,8705 -0452441,9153 -0452491,8728 -0452532,8266 -0452663,8123 -0452690,8238 -0452729,8160 -0452730,8035 -0452744,8254 -0452766,9224 -0452770,8924 -0452836,8648 -0452849,8694 -0452908,8671 -0452909,8682 -0452942,8240 -0452946,8678 -0452988,8772 -0453045,8310 -0453058,8561 -0453104,8085 -0453204,9405 -0453222,8774 -0453232,8704 -0453237,8481 -0453369,9221 -0453371,8754 -0453377,8246 -0453381,8505 -0453457,8179 -0453460,8778 -0453516,8759 -0453541,8108 -0453543,8637 -0453615,9738 -0453650,8360 -0453651,9436 -0453729,9547 -0453837,8695 -0453893,8802 -0453965,8540 -0454004,8554 -0454010,8757 -0454028,8740 -0454050,8927 -0454103,8251 -0454135,8916 -0454225,10710 -0454265,8233 -0454286,8633 -0454288,9457 -0454292,8579 -0454337,8741 -0454338,8722 -0454339,8726 -0454344,8493 -0454347,8776 -0454356,8567 -0454364,8358 -0454367,8820 -0454374,10905 -0454375,8532 -0454392,8076 -0454414,8600 -0454428,8569 -0454441,9455 -0454449,8644 -0454472,9158 -0454477,9341 -0454498,8755 -0454518,9261 -0454522,8589 -045454,7693 -0454546,9475 -0454559,9366 -0454583,8729 -0454591,1246588334 -0454713,8487 -0454716,8736 -0454717,8735 -0454865,8792 -0454908,8470 -0454913,10140 -0454918,8882 -0454921,8749 -0454953,8727 -0454979,8690 -0455017,10899 -0455031,9451 -0455042,9418 -0455046,8634 -0455048,8879 -0455061,8596 -0455783,8636 -0456421,10709 -0456832,8811 -0457012,8630 -0457049,8720 -0457285,1246589614 -0458330,9283 -0458336,9401 -0458410,9481 -0458412,9169 -0458423,9353 -0458433,9552 -0458434,8751 -0458435,8798 -0458457,8750 -0458477,8709 -0458528,8674 -0458530,8529 -0458541,10425 -0458557,9349 -0458563,9182 -0458582,8777 -0458614,9372 -0458636,8641 -0458652,9199 -0458672,9200 -0458711,9411 -0458719,8818 -0458720,8782 -0458736,8734 -0458737,8476 -0458756,8816 -0458788,9239 -0458802,9321 -0458835,9697 -0458837,8475 -0458862,9350 -0458906,8362 -0458917,8878 -0458920,1246588238 -0458949,8870 -0458950,8904 -0458987,8839 -0459031,9163 -0459151,9505 -0459153,9212 -0459204,8732 -0459214,8775 -0459239,8344 -0459240,8841 -0459250,9447 -0459298,9497 -0459300,8653 -0459303,9419 -0459406,8935 -0459431,9139 -0459468,9180 -0459494,9453 -0459515,8219 -0459551,1246588325 -0459597,9360 -0459646,9485 -0459647,10809 -0459658,8212 -0459701,9437 -0459747,9176 -0459750,1246589502 -0459751,9140 -0459775,8834 -0459777,8931 -0459794,9706 -0459832,9693 -0459861,11263 -0459867,9265 -0459888,8787 -0459925,9291 -0459928,8765 -0459933,9227 -0459943,8659 -0459955,9183 -0459987,7527 -0460013,10423 -0460015,10371 -0460051,9331 -0460064,8799 -0460140,8367 -0460142,8721 -0460143,8887 -0460148,9325 -0460153,9471 -0460161,8838 -0460167,10906 -0460196,1246588855 -0460242,8824 -0460278,8711 -0460283,8826 -0460286,9085 -0460288,9368 -0460289,8814 -0460303,9201 -0460304,9209 -0460409,9039 -0460412,8527 -0460416,8466 -0460422,8748 -0460429,9149 -0460432,8338 -0460436,9164 -0460486,9569 -0460511,9252 -0460526,9258 -0460532,8909 -0460536,9286 -0460547,9308 -0460565,9807 -0460591,8836 -0460597,9307 -0460612,9385 -0460613,8597 -0460620,9057 -0460621,1246589648 -0460645,9420 -0460652,8901 -0460662,9454 -0460670,8760 -0460718,9144 -0460725,9700 -0460740,9469 -0460744,9448 -0460759,9162 -0460768,9273 -0460773,9312 -0460776,9173 -0460778,9333 -0460783,9338 -0460819,9361 -0460860,9278 -0460875,9247 -0460877,8346 -0460883,10616 -0460891,8810 -0460905,9408 -0460911,9228 -0460913,10813 -0460939,9233 -0461010,9456 -0461077,1246588798 -0461136,1246589808 -0461144,9692 -0461156,9354 -0461158,1246588456 -0461163,9494 -0461183,9315 -0461210,9181 -0461222,8930 -0461233,8831 -0461260,9236 -0461266,8900 -0461267,8898 -0461268,8627 -0461272,9282 -0461279,8348 -0461306,9210 -0461344,9161 -0461394,10329 -0461425,1246588321 -0461529,9369 -0461549,8967 -0461560,9342 -0461608,9452 -0461626,9271 -0461632,9244 -0461634,9304 -0461650,10363 -0461691,10278 -0461758,10916 -0461763,9393 -0461834,9429 -0461842,10933 -0461848,10327 -0461850,10228 -0461894,10471 -0461895,9698 -0461908,8914 -0461921,9715 -0461930,9226 -0461946,8923 -0461949,8884 -0461955,9193 -0461974,9267 -0461976,9151 -0461983,9319 -0461985,9240 -0461995,9474 -0461996,10811 -0461999,9473 -0462000,1246586248 -0462010,8845 -0462011,9893 -0462022,9395 -0462045,9192 -0462052,9257 -0462053,9487 -0462078,8961 -0462079,10283 -0462084,9156 -0462094,9689 -0462099,10319 -0462100,10318 -0462107,9186 -0462109,9148 -0462117,8859 -0462123,9231 -0462125,9355 -0462126,9213 -0462136,9690 -0462137,9407 -0462151,9143 -0462165,9374 -0462225,9384 -0462244,8943 -0462332,9204 -0462336,9188 -0462338,9155 -0462339,9377 -0462372,10760 -0462378,9472 -0462384,9464 -0462394,1246589824 -0462398,9314 -0462403,10367 -0462406,9396 -0462434,9459 -0462446,10226 -0462450,9379 -0462463,1246589819 -0462469,10364 -0462500,9275 -0462559,9504 -0462580,8938 -0462582,9708 -0462598,8934 -0462600,8944 -0462601,9255 -0462602,9666 -0462608,10782 -0462620,10763 -0462625,10789 -0462633,9356 -0462653,9571 -0462663,8936 -0462666,8937 -0462680,1246590439 -0462685,8946 -0462700,9465 -0462719,9146 -0462743,9359 -0462769,9400 -0462770,9220 -0462783,9701 -0462793,9389 -0462804,9334 -0462805,9069 -0462812,10448 -0462826,9223 -0462852,9268 -0462872,9870 -0462879,9214 -0462947,9323 -0462953,9248 -0462954,9404 -0462986,8962 -0462989,9367 -0462990,9298 -0463011,9150 -0463109,9165 -0463137,9688 -0463167,9175 -0463174,9327 -0463175,9177 -0463182,9178 -0463220,9184 -0463276,9357 -0463313,9364 -0463314,9365 -0463317,9202 -0463338,9375 -0463341,9376 -0463347,9562 -0463362,9382 -0463393,9253 -0463523,9675 -0463815,9410 -0463880,9489 -0463884,9087 -0463912,10429 -0463915,9486 -0463929,9713 -0463934,9340 -0463942,9684 -0464053,1246590338 -0464091,9339 -0464101,9358 -0464129,9217 -0464140,9810 -0464153,9234 -0464157,9680 -0464174,9363 -0464203,9462 -0464204,9716 -0464218,9665 -0464242,9695 -0464259,9669 -0464268,9704 -0464269,1246588324 -0464277,9413 -0464288,9441 -0464295,9147 -0464342,9295 -0464414,9480 -0464426,1246588683 -0464428,9654 -0464464,9311 -0464478,9185 -0464504,9387 -0464506,9211 -0464513,9421 -0464522,9292 -0464530,9433 -0464532,9470 -0464534,9270 -0464543,9691 -0464566,9703 -0464590,9249 -0464619,9154 -0464637,9187 -0464830,9431 -0464831,9439 -0464850,9656 -0464871,9399 -0464936,9294 -0464949,9215 -0465035,9445 -0465041,9332 -0465050,9381 -0465057,9792 -0465127,9670 -0465174,10989 -0465180,9383 -0465199,9699 -0465202,9391 -0465261,8980 -0465289,9301 -0465328,9337 -0465340,9300 -0465362,10534 -0465379,9442 -0465403,10276 -0465427,10432 -0465452,10368 -0465471,10325 -0465507,10491 -0465508,10324 -0465514,10379 -0465517,9422 -0465522,9709 -0465537,9225 -0466577,9089 -0466583,9324 -0466605,9229 -0467584,9142 -0467587,9296 -0467588,9297 -0467597,9351 -0469492,6981 -0470671,10508 -0470696,9425 -0470769,9218 -0470776,9205 -0470804,9195 -0470827,10476 -0470840,9288 -0470843,9335 -0470880,9677 -0470922,9378 -0470931,9352 -0471018,9262 -0471041,9545 -0471071,9702 -0471076,10331 -0471282,9254 -0471607,9274 -0471683,9279 -0471875,9174 -0471957,9718 -0472420,9348 -0472547,11066 -0472553,9488 -0472923,10151 -0473187,9671 -0473254,9216 -0473377,9417 -0473537,9500 -0473877,9468 -0474021,9506 -0474061,9336 -0474132,9759 -0474135,9344 -0474148,9250 -0474187,9309 -0474252,10486 -0474254,10498 -0474267,9317 -0474275,9284 -0474295,11007 -0474310,10512 -0474317,9289 -0474321,9276 -0474335,9287 -0474376,9370 -0474450,10372 -0474457,9446 -0474501,9280 -0474506,9245 -0474511,9460 -0474512,9403 -0474526,9160 -0474562,9328 -0474572,10341 -0474631,10289 -0474658,9427 -0474668,10287 -0474689,9479 -0474691,1246589601 -0474708,9409 -0474759,9219 -0474908,9503 -0474994,11343 -0475007,9435 -0475020,10424 -0475027,10267 -0475050,11189 -0475069,10501 -0475099,9412 -0475102,9306 -0475130,9197 -0475174,9299 -0475243,9084 -0475250,9347 -0475270,10187 -0475292,9322 -0475295,10307 -0475329,9043 -0475343,10385 -0475349,10563 -0475355,9373 -0475398,9313 -0475414,9566 -0475462,9444 -0475464,9264 -0475494,10332 -0475510,9329 -0475517,10158 -0475522,1246589139 -0475528,10231 -0475603,1246588240 -0475616,9316 -0475646,9285 -0475703,1246590378 -0475739,1246589649 -0475821,9272 -0475856,9191 -0475857,9251 -0475894,9326 -0475924,9501 -0475953,10382 -0475988,9394 -0475989,10861 -0476165,9663 -0476201,9141 -0476235,10254 -0476240,9575 -0476288,9440 -0476301,9491 -0476380,9392 -0476398,9230 -0476452,9058 -0476467,9056 -0476472,9707 -0476473,1246587995 -0476480,9705 -0476496,9719 -0476566,9246 -0476648,9038 -0476679,9743 -0476767,10421 -0476772,9071 -0476793,11008 -0476794,9028 -0476824,10101 -0476883,9676 -0476889,9438 -0476893,9430 -0476899,9668 -0477025,9463 -0477136,9406 -0477137,10401 -0477174,10618 -0477177,1246588915 -0477179,9476 -0477180,9843 -0477181,9281 -0477246,10926 -0477273,9450 -0477274,9694 -0477348,10352 -0477420,9432 -0477428,9035 -0477499,9203 -0477537,9560 -0477548,9495 -0477555,9232 -0477608,9712 -0477615,10260 -0477618,10443 -0477624,10299 -0477644,10306 -0477664,9685 -0477679,10370 -0477688,9734 -0477695,10406 -0477713,9553 -0477717,1246588294 -0477930,10362 -0477934,9054 -0477938,9548 -0477942,9302 -0477990,9166 -0478003,1246589100 -0478010,10767 -0478040,9745 -0478116,9710 -0478154,9260 -0478156,10142 -0478200,1246588895 -0478238,9720 -0478253,9696 -0478274,9731 -0478291,1246588315 -0478298,1246588319 -0478364,9546 -0478371,9742 -0478393,1246588386 -0478515,10595 -0478631,9402 -0478634,9683 -0478644,1246588156 -0478665,9558 -0478673,9346 -0478682,9290 -0478695,10389 -0478814,9449 -0478817,9110 -0478819,10846 -0478996,10445 -0479056,9725 -0479079,9796 -0479128,9729 -0479213,9686 -0479279,10302 -0479308,9746 -0479335,10397 -0479344,9386 -0479347,9572 -0479420,10373 -0479466,9815 -0479542,9482 -0479600,9130 -0479668,9679 -0479674,10418 -0479734,9467 -0479736,9747 -0479743,9559 -0479783,9808 -0479789,9682 -0479848,10482 -0479864,10778 -0479865,11068 -0479882,9809 -0479895,9152 -0479909,10481 -0479919,10237 -0479925,10765 -0480023,10337 -0480024,10417 -0480061,9496 -0480066,10740 -0480105,9492 -0480108,9138 -0480138,10250 -0480148,10451 -0480162,10494 -0480169,9919 -0480173,10335 -0480217,1246589678 -0480221,11180 -0480232,1246588189 -0480246,9741 -0480248,9681 -0480288,9732 -0480308,10835 -0480501,9730 -0480503,9414 -0480535,10515 -0480574,10509 -0480608,10129 -0480629,9493 -0480650,1246586786 -0480664,9564 -0480671,10251 -0480676,9847 -0480687,1246589127 -0480688,10273 -0480700,10338 -0480733,9812 -0480734,1246588750 -0480743,9657 -0480744,9388 -0480768,10288 -0480813,1246588645 -0480843,9674 -0480846,9672 -0480853,9556 -0480856,10460 -0480897,9550 -0480925,10452 -0480928,9664 -0480949,10272 -0480984,10353 -0481015,9845 -0481033,10255 -0481036,10317 -0481037,10477 -0481040,10322 -0481051,10483 -0490954,11235 -0490972,1246588458 -0491120,1246589558 -0491204,11184 -0491271,10756 -0491277,10761 -0491359,1246576928 -0491404,10730 -0491497,10619 -0491500,1246590071 -0491584,1246589926 -0491600,1246588606 -0491605,10223 -0491606,1246588075 -0491608,10808 -0491638,1246588371 -0491684,1246588081 -0491718,1246588113 -0491729,1246588434 -0491746,1246588120 -0491952,1246589403 -0491957,1246588597 -0491963,10521 -0491969,10570 -0491978,1246589468 -0492104,10497 -0492198,1246588136 -0492206,11271 -0492227,11264 -0492264,1246588169 -0492392,10842 -0492396,10843 -0492413,10557 -0492425,10728 -0492450,10533 -0492513,1246588653 -0492522,10784 -0492582,10860 -0492585,1246588914 -0492619,1246588678 -0492630,1246588419 -0492636,1246588447 -0492657,1246588065 -0492660,1246588354 -0492671,11211 -0492695,11204 -0492710,1246588162 -0492712,11217 -0492713,1246588415 -0492741,1246588423 -0492752,1246588752 -0492758,10463 -0492767,1246589080 -0492773,1246589901 -0492787,11188 -0492790,10830 -0492801,10845 -0492803,10844 -0492845,1246590289 -0492861,1246588148 -0492864,11278 -0492866,1246588178 -0492887,11293 -0492900,10848 -0492930,10711 -0492963,10579 -0492969,10881 -0492975,11327 -0492982,11164 -0492984,11186 -0492990,1246588866 -0493001,1246589211 -0493028,11149 -0493031,1246588209 -0493057,1246588455 -0493072,1246588088 -0493073,1246588326 -0493092,10586 -0493098,1246588403 -0493104,11176 -0493108,11179 -0493121,1246588759 -0493153,1246588357 -0493170,1246588219 -0493223,1246588441 -0493329,11273 -0493353,11230 -0493422,1246588230 -0493436,10744 -0493497,1246588674 -0493538,10748 -0493564,1246588197 -0493586,11254 -0493609,10753 -0493620,1246588232 -0493621,1246588999 -0493631,1246588229 -0493672,1246588346 -0493689,10915 -0493710,1246588440 -0493730,1246588459 -0493732,10794 -0493736,1246588064 -0493796,1246588786 -0493807,1246588668 -0493832,10847 -0493842,1246588602 -0493870,1246588363 -0493873,1246589014 -0493876,10909 -0493901,1246589183 -0493927,1246590009 -0493944,1246588405 -0493952,10878 -0493974,1246588348 -0494002,1246588373 -0494004,1246588430 -0494007,10868 -0494023,1246588436 -0494027,1246588345 -0494028,1246588622 -0494049,1246588083 -0494073,1246588211 -0494087,1246588395 -0494089,1246588185 -0494134,1246588058 -0494143,1246588742 -0494185,1246588424 -0494197,1246588629 -0494208,11229 -0494219,1246589018 -0494220,1246588180 -0494227,1246589675 -0494245,1246588463 -0494274,1246588370 -0494275,1246589393 -0494281,1246588091 -0494305,10866 -0494319,1246589447 -0494394,1246589064 -0494416,1246588608 -0494441,10901 -0494444,1246588384 -0494445,11210 -0494449,1246588383 -0494455,11151 -0494480,10902 -0494481,1246588804 -0494488,10917 -0494491,11268 -0494493,10908 -0494496,1246588391 -0494502,11150 -0494518,11303 -0494520,1246588313 -0494535,10940 -0494541,1246588367 -0494542,1246588214 -0494559,1246588877 -0494563,1246588599 -0494564,10996 -0494566,11265 -0494567,11329 -0494569,10978 -0494589,1246588376 -0494591,10935 -0494593,1246588427 -0494594,1246588385 -0494598,1246588155 -0494612,11171 -0494618,11249 -0494619,1246588183 -0494627,1246588159 -0494633,1246588336 -0494636,1246588076 -0494643,1246588623 -0494651,1246588259 -0494657,1246588151 -0494675,1246588095 -0494706,1246588144 -0494743,1246588392 -0494753,1246588234 -0494762,1246588195 -0494928,1246588382 -0495312,1246588453 -0495421,1246588190 -0495425,1246588428 -0495444,11024 -0495469,10937 -0495529,1246588171 -0495531,1246588213 -0495586,1246588394 -0495605,11178 -0495606,1246588393 -0495610,11146 -0495619,11145 -0495625,1246588381 -0495725,1246588237 -0495730,11038 -0495748,11290 -0495758,11297 -0495759,11173 -0495764,1246588203 -0495778,11305 -0495785,1246588226 -0496043,1246588098 -0496145,1246588110 -0496182,1246588380 -0496402,11232 -0496545,1246588433 -0496795,1246589364 -0496909,1246588057 -0496910,10966 -0496939,1246589554 -0496951,1246589607 -0496953,1246588621 -0496975,11200 -0497004,1246588347 -0497006,1246588298 -0497007,10943 -0497008,1246588390 -0497011,11197 -0497101,1246588864 -0497114,1246588378 -0497139,1246588350 -0497144,11162 -0497151,1246588167 -0497153,11172 -0497163,1246588124 -0497189,1246588397 -0497269,10954 -0497295,1246589102 -0497362,1246588432 -0497371,11296 -0497379,1246589148 -0497380,1246589227 -0497383,1246588409 -0497391,1246590034 -0497393,1246588396 -0497399,1246588188 -0497430,1246588379 -0497438,1246590266 -0497439,1246588222 -0497443,1246588416 -0497457,1246588212 -0499382,1246588129 -0499543,1246588168 -0499546,1246588408 -0499548,1246588227 -0499554,11139 -0499571,1246589085 -0499582,1246588399 -0499593,1246588748 -0499623,1246588603 -0499636,1246588435 -0499742,1246588461 -0499757,1246588452 -0499779,11032 -0499848,1246588368 -0499893,1246589342 -0499899,11277 -0499938,1246588609 -0499982,1246588283 -0499998,11023 -0500000,11046 -0500006,1246588598 -0500014,1246589193 -0500026,1246590044 -0500054,1246589040 -0500100,11248 -0500105,1246588760 -0500154,1246588360 -0500192,1246588361 -0500363,11324 -0500740,1246588438 -0501094,1246588235 -0501226,1246588412 -0501231,1246589505 -0501271,11238 -0501280,1246588670 -0501327,1246588172 -0501664,1246588150 -0501669,1246588407 -0501754,1246589530 -0502076,1246588401 -0502229,1246588059 -0502284,1246589046 -0502293,1246588414 -0502297,11165 -0502338,1246588119 -0502346,11039 -0502350,11203 -0502351,1246589010 -0502356,1246588147 -0502365,1246588208 -0502372,1246589041 -0502387,1246589115 -0502468,1246588449 -0502498,11143 -0502499,1246588331 -0502505,1246588355 -0502506,1246588194 -0502515,11198 -0502536,1246589328 -0502567,1246588650 -0502579,1246588865 -0502666,11237 -0502729,1246589268 -0502774,1246588422 -0502775,1246588352 -0502781,1246587948 -0502795,1246589334 -0502796,1246589060 -0502824,11282 -0502830,1246589318 -0502834,1246589107 -0502835,1246589236 -0502837,1246589016 -0502869,11093 -0502880,1246588070 -0502886,1246588643 -0502887,1246588223 -0502890,11242 -0502891,1246588638 -0502936,1246589305 -0502969,1246589367 -0502978,1246589220 -0502980,1246589415 -0503008,1246588322 -0503026,1246589072 -0503028,1246589799 -0503089,1246590302 -0503124,1246589121 -0503139,1246589204 -0503141,11156 -0503179,1246589405 -0503187,1246589407 -0503203,11003 -0503226,1246589065 -0503280,1246588640 -0503296,1246590144 -0503328,1246589330 -0503329,1246589536 -0503330,1246588339 -0503338,11181 -0503340,1246588317 -0503345,1246588375 -0503370,11132 -0503371,1246588338 -0503447,1246589286 -0503454,1246588451 -0503469,11276 -0503476,1246588666 -0503490,1246588689 -0503495,1246588448 -0503776,1246590402 -0503827,1246588377 -0503914,1246588411 -0503926,1246583555 -0503959,11328 -0504071,1246589937 -0504074,1246588425 -0504086,1246588332 -0504250,1246588676 -0504251,1246588454 -0504278,11042 -0504280,11134 -0504282,11043 -0504287,11050 -0504305,1246588446 -0504321,1246588442 -0504330,1246588671 -0504331,11086 -0504340,1246588340 -0504346,1246588314 -0504347,1246588358 -0504355,1246588364 -0504372,1246589124 -0504376,1246588328 -0504402,1246589283 -0504415,1246589346 -0504497,1246589077 -0504509,1246588146 -0504561,1246589254 -0504562,1246588236 -0504565,1246589036 -0504566,1246588297 -0504572,1246588860 -0504576,1246589259 -0504594,1246589056 -0504595,1246588661 -0504619,1246588624 -0504620,1246588641 -0504621,1246588417 -0504625,1246588445 -0504628,11075 -0504676,1246589126 -0504677,1246588351 -0504679,11078 -0504683,1246588359 -0504696,11161 -0504703,1246588658 -0504710,1246588648 -0504728,1246588667 -0504758,11133 -0504766,1246588179 -0504771,1246588016 -0504778,1246589088 -0504779,1246589969 -0504802,1246588135 -0504803,11205 -0504823,1246589042 -0504839,1246588323 -0504864,11098 -0504879,1246589007 -0504896,1246589963 -0504897,1246588682 -0504907,11099 -0504921,11224 -0504956,1246589943 -0504968,1246588186 -0505000,11097 -0505011,1246588439 -0505016,1246589114 -0505088,1246589068 -0505094,1246589263 -0505095,1246588808 -0505098,1246589344 -0505099,1246588462 -0505129,1246588118 -0505136,1246589400 -0505142,11193 -0505146,1246589296 -0505147,1246588626 -0505148,11158 -0505155,1246588398 -0505159,1246588418 -0505161,1246588327 -0505177,1246588220 -0505178,11274 -0505189,1246588644 -0505200,1246589186 -0505213,1246588310 -0505229,1246589123 -0505238,1246589375 -0505260,1246589053 -0505290,1246589863 -0505305,1246589022 -0505325,1246588636 -0505338,1246588601 -0505355,1246588669 -0505363,1246588420 -0505369,1246589206 -0505370,1246589357 -0505380,1246588675 -0505436,1246588710 -0505440,1246588316 -0505442,1246589049 -0505461,1246589292 -0505464,1246589213 -0505479,1246588677 -0505488,1246589178 -0505500,1246588732 -0505501,1246588040 -0505507,1246588043 -0505510,1246588042 -0505511,1246588041 -0505521,1246589421 -0505522,1246588045 -0505537,1246588312 -0505549,11119 -0505564,1246589119 -0505582,1246588607 -0505590,1246588400 -0505593,1246588366 -0505608,1246589350 -0505648,11120 -0505675,1246589011 -0505683,1246588651 -0505734,1246588705 -0505746,1246589066 -0505782,1246588329 -0505799,1246589307 -0505815,1246588365 -0505831,1246589483 -0505842,1246589055 -0505858,1246589469 -0505860,1246589301 -0505874,1246589291 -0505890,1246589269 -0505909,1246589224 -0505950,11121 -0505956,1246589244 -0505972,1246590200 -0506026,1246589349 -0506107,1246589117 -0506137,1246589043 -0506187,1246589032 -0506242,1246588686 -0506296,1246588410 -0506309,1246588634 -0506324,1246589287 -0506329,1246589682 -0506334,1246588369 -0506365,1246588794 -0506393,1246588659 -0506428,1246589191 -0506448,1246589448 -0506488,1246588627 -0506506,1246588660 -0506532,1246588657 -0506537,1246588654 -0506567,1246589245 -0506575,1246588054 -0506576,1246589433 -0506582,1246588776 -0506585,1246588690 -0506603,1246589343 -0506605,1246588646 -0506667,1246589231 -0506697,1246589059 -0506741,1246588672 -0506744,1246588886 -0506790,1246589370 -0506820,1246590216 -0506850,1246588604 -0506856,1246588788 -0506904,1246588681 -0506958,1246589215 -0506967,1246589262 -0507013,1246589048 -0507018,1246589275 -0507045,1246589027 -0507051,1246589303 -0507052,1246589304 -0507053,1246589320 -0507059,11340 -0507078,1246588665 -0507079,1246588673 -0507081,1246588635 -0507099,1246588707 -0507106,1246589353 -0507111,11342 -0507121,1246588688 -0507166,1246588273 -0507175,1246588709 -0507202,1246589090 -0507229,1246590141 -0507231,1246588720 -0507241,1246589031 -0507248,1246589000 -0507251,1246589341 -0507254,11349 -0507259,11348 -0507272,1246588625 -0507287,1246588275 -0507291,1246588642 -0507297,1246588684 -0507314,1246589294 -0507315,1246589485 -0507348,1246589432 -0507359,1246589054 -0507373,1246589325 -0507378,1246589087 -0507384,1246589473 -0507405,1246589109 -0507421,1246589321 -0507431,1246589282 -0507436,1246588637 -0507438,1246588611 -0507454,1246590068 -0507477,1246589249 -0507485,1246588610 -0507492,1246589408 -0507495,1246589074 -0507503,1246588735 -0507507,1246588749 -0507513,1246589313 -0507528,1246589953 -0507534,1246588614 -0507539,1246588893 -0507543,1246588727 -0507571,1246589354 -0507578,1246589347 -0507601,1246589246 -0507639,1246589005 -0507664,1246589309 -0507687,1246589428 -0507777,1246589226 -0507780,1246588663 -0507786,1246589061 -0507788,1246588664 -0507798,1246589004 -0507802,1246589372 -0507810,1246588737 -0507830,1246589012 -0507831,1246589013 -0507833,1246589443 -0507840,1246589333 -0507865,1246589327 -0507867,1246588691 -0507870,1246589331 -0507873,1246589295 -0507896,1246588692 -0507898,1246590277 -0507904,1246588736 -0507920,1246588708 -0507934,1246589930 -0507953,1246589089 -0507971,1246588699 -0508021,1246588697 -0508025,1246589934 -0508033,1246590026 -0508049,1246590249 -0508055,1246589413 -0508066,1246589081 -0508075,1246589071 -0508076,1246589047 -0508114,1246589212 -0508116,1246589409 -0508121,1246589234 -0508126,1246589214 -0508136,1246589267 -0508138,1246589035 -0508147,1246589487 -0508154,1246590224 -0508189,1246589111 -0508198,1246589272 -0508201,1246589075 -0508204,1246589125 -0508210,1246589082 -0508217,1246589187 -0508222,1246589020 -0508234,1246589398 -0508237,1246589238 -0508251,1246588725 -0508269,1246589280 -0508277,1246589029 -0508280,1246589034 -0508291,1246589396 -0508305,1246588880 -0508321,1246588802 -0508322,1246588801 -0508323,1246588746 -0508351,1246588774 -0508352,1246588782 -0508363,1246588790 -0508376,1246588797 -0508377,1246588793 -0508385,1246588856 -0508386,1246588799 -0508535,1246588898 -0508539,1246588819 -0508580,1246589001 -0508597,1246588878 -0508607,1246588859 -0508644,1246589033 -0508678,1246589025 -0508694,1246589079 -0508742,1246589411 -0508749,1246588869 -0508797,1246589638 -0510811,1246589899 -0512093,1246589368 -0512102,1246589019 -0512145,1246589122 -0512153,1246589302 -0512175,1246589373 -0512188,1246589078 -0512209,1246589315 -0512210,1246589039 -0512220,1246589129 -0512227,1246588831 -0512276,1246589037 -0512329,1246589250 -0512380,1246589625 -0512394,1246589534 -0512404,1246589310 -0512411,1246589329 -0512437,1246589273 -0512456,1246589755 -0512474,1246589230 -0512477,1246589128 -0512498,1246589006 -0512518,1246589044 -0512540,1246589264 -0512547,1246589252 -0512558,1246589104 -0512810,1246589057 -0512825,1246588838 -0512826,1246588839 -0512849,1246589255 -0512851,1246589189 -0512899,1246589228 -0512915,1246589919 -0512917,1246589422 -0512920,1246589471 -0512935,1246589416 -0512937,1246589002 -0512941,1246589449 -0513005,1246589265 -0513038,1246589388 -0513051,1246589406 -0513055,1246589335 -0513057,1246589360 -0513109,1246589390 -0513116,1246589184 -0513120,1246589095 -0513123,1246589096 -0513127,1246588887 -0513142,1246589279 -0513175,1246589026 -0513289,1246590019 -0513298,1246589293 -0513301,1246589374 -0513332,1246589052 -0513338,1246589138 -0513359,1246589365 -0513409,1246589476 -0513447,1246589382 -0513493,1246589180 -0513510,1246589202 -0513547,1246589389 -0513618,1246589179 -0513691,1246589355 -0513706,1246589581 -0513728,1246589021 -0513737,1246589299 -0513803,1246589247 -0513936,1246589371 -0513950,1246589233 -0513978,1246589192 -0514112,1246589008 -0514133,1246589486 -0514138,1246589084 -0514141,1246589201 -0514144,1246589856 -0514165,1246589426 -0514178,1246589450 -0514183,1246589547 -0514209,1246589028 -0514214,1246589203 -0514248,1246589404 -0514253,1246588862 -0514277,1246588917 -0514286,1246589477 -0514310,1246588910 -0514318,1246589058 -0514326,1246589103 -0514348,1246589217 -0514351,1246589684 -0514357,1246589093 -0514369,1246589276 -0514378,1246589435 -0514434,1246589317 -0514444,1246589188 -0514457,1246589024 -0514484,1246589248 -0514500,1246589073 -0514506,1246589062 -0514529,1246589281 -0514553,1246589101 -0514598,1246588888 -0514600,1246589618 -0514611,1246589419 -0514626,1246589345 -0514631,1246589067 -0514632,1246589270 -0514646,1246589232 -0514649,1246589439 -0514654,1246589116 -0514678,1246589257 -0514683,1246589337 -0514691,1246589241 -0514701,1246589312 -0514722,1246589424 -0514761,1246588867 -0514767,1246589160 -0514773,1246589298 -0514780,1246589015 -0514797,1246589198 -0514813,1246589210 -0514819,1246589300 -0514827,1246589383 -0514850,1246589438 -0514863,1246589030 -0514913,1246589260 -0514918,1246589003 -0514929,1246589235 -0514932,1246589223 -0514944,1246589242 -0514959,1246589324 -0514973,1246588868 -0514986,1246589256 -0515009,1246589376 -0515028,1246590349 -0515054,1246589361 -0515059,1246589050 -0515063,1246589322 -0515103,1246589097 -0515108,1246589229 -0515112,1246589359 -0515119,1246589348 -0515139,1246589243 -0515158,1246589207 -0515164,1246589549 -0515172,1246588882 -0515173,1246588883 -0515181,1246589163 -0515213,1246588950 -0515216,1246589205 -0515221,1246589377 -0515252,1246589484 -0515269,1246589063 -0515291,1246589395 -0515293,1246589610 -0515310,1246589560 -0515311,1246589086 -0515330,1246589472 -0515348,1246589149 -0515369,1246589271 -0515382,1246589009 -0515407,1246589038 -0515445,1246589402 -0515458,1246589110 -0515492,1246590214 -0515525,1246589336 -0515527,1246589378 -0515561,1246589218 -0515564,1246589182 -0515566,1246588918 -0515592,1246589190 -0515599,1246589362 -0515608,1246589418 -0515631,1246589140 -0515634,1246589533 -0515637,1246589113 -0515672,1246588926 -0515679,1246589351 -0515687,1246589323 -0515693,1246589592 -0515724,1246589786 -0515745,1246589308 -0515755,1246589340 -0515760,1246589452 -0515762,1246589455 -0515764,1246589194 -0515773,1246589164 -0515776,1246588929 -0515784,1246589161 -0515786,1246589290 -0515809,1246589498 -0515820,1246589181 -0515821,1246589523 -0515855,1246589358 -0515862,1246589266 -0515875,1246588964 -0515876,1246589108 -0515888,1246589284 -0515890,1246589366 -0515901,1246588965 -0515914,1246589520 -0515917,1246589338 -0515945,1246589459 -0515946,1246589401 -0515949,1246589106 -0515967,1246589561 -0516045,1246589091 -0516062,1246589274 -0516069,1246589199 -0516071,1246589399 -0516086,1246589441 -0516096,1246589277 -0516102,1246589458 -0516104,1246589379 -0516107,1246589420 -0516115,1246589832 -0516145,1246589200 -0516250,1246589045 -0516274,1246590399 -0516281,1246589410 -0516299,1246589137 -0516304,1246589174 -0516328,1246589316 -0516343,1246589175 -0516359,1246589094 -0516380,1246589251 -0516392,1246589142 -0516455,1246590387 -0516484,1246589099 -0516496,1246589151 -0516499,1246589414 -0516510,1246589387 -0516521,1246589427 -0516553,1246589381 -0516569,1246589436 -0516582,1246589219 -0516614,1246589454 -0516622,1246589285 -0516627,1246589467 -0516636,1246589616 -0516659,1246589646 -0516667,1246589278 -0516671,1246589504 -0516684,1246589356 -0516687,1246589481 -0516697,1246589503 -0516703,1246589591 -0516704,1246589165 -0516718,1246589596 -0516748,1246589451 -0516757,1246589760 -0516779,1246589162 -0516785,1246589490 -0516815,1246589177 -0516826,1246589636 -0516827,1246589453 -0516830,1246589603 -0516838,1246589444 -0516882,1246589326 -0516890,1246589609 -0516896,1246589369 -0516936,1246589525 -0516938,1246589134 -0516942,1246589153 -0516955,1246589479 -0516966,1246589657 -0516984,1246589548 -0516993,1246589150 -0516997,1246589654 -0517005,1246589928 -0517008,1246589152 -0517011,1246589445 -0517017,1246589482 -0517018,1246589154 -0517081,1246589542 -0517085,1246589635 -0517116,1246589589 -0517121,1246590095 -0517168,1246590020 -0517177,1246589508 -0517181,1246590182 -0517184,1246589510 -0517185,1246589511 -0517191,1246589971 -0517196,1246589949 -0517200,1246589515 -0517209,1246589634 -0517211,1246589518 -0517212,1246589516 -0517213,1246590112 -0517220,1246589622 -0517242,1246589965 -0517261,1246589579 -0517264,1246589981 -0517265,1246589598 -0517272,1246589604 -0517284,1246590084 -0517302,1246589605 -0517308,1246590181 -0517317,1246589582 -0517342,1246590048 -0517354,1246590123 -0517382,1246589961 -0517399,1246589667 -0517400,1246589976 -0517418,1246589608 -0517421,1246590243 -0517422,1246590030 -0517453,1246590295 -0517457,1246589942 -0517458,1246589931 -0517465,1246589987 -0517474,1246590276 -0517480,1246589995 -0517487,1246590017 -0517490,1246589628 -0517495,1246590024 -0517497,1246590083 -0517516,1246589929 -0517523,1246590050 -0517533,1246590094 -0517537,1246589613 -0517545,1246590075 -0517570,1246590000 -0517571,1246590062 -0517580,1246590191 -0517588,1246590194 -0517592,1246590025 -0517608,1246589623 -0517625,1246590128 -0517629,1246589620 -0517632,1246589619 -0517642,1246590066 -0517649,1246590060 -0517652,1246589658 -0517653,1246590049 -0517656,1246590058 -0517666,1246590013 -0517669,1246589637 -0517673,1246590043 -0517681,1246590242 -0517718,1246589653 -0517719,1246590262 -0517724,1246589652 -0517729,1246589936 -0517737,1246590021 -0517742,1246590334 -0517759,1246589661 -0517760,1246589659 -0517761,1246589666 -0517768,1246589944 -0517771,1246589923 -0517772,1246590006 -0517781,1246590032 -0517795,1246590040 -0517807,1246590218 -0517822,1246589918 -0517856,1246589957 -0517864,1246590073 -0517866,1246589989 -0517869,1246589765 -0517887,1246589991 -0517893,1246590111 -0517895,1246589920 -0517897,1246589996 -0517900,1246590189 -0517906,1246590233 -0517912,1246590016 -0517920,1246589895 -0517922,1246590064 -0517925,1246590225 -0517932,1246589914 -0517963,1246589984 -0517968,1246590193 -0517973,1246590093 -0517980,1246589998 -0517999,1246590288 -0518005,1246589911 -0518019,1246589967 -0518036,1246590007 -0518045,1246589980 -0518056,1246590133 -0518059,1246590265 -0518066,1246589916 -0518067,1246590055 -0518075,1246590105 -0518100,1246590015 -0518109,1246589900 -0518124,1246589990 -0518131,1246590086 -0518140,1246589956 -0518143,1246589939 -0518148,1246590079 -0518166,1246589907 -0518167,1246589985 -0518196,1246590283 -0518199,1246590035 -0518200,1246590208 -0518247,1246590011 -0518258,1246589993 -0518264,1246590056 -0518301,1246589999 -0518318,1246590010 -0518325,1246590029 -0518334,1246590294 -0518349,1246590045 -0518400,1246589951 -0518406,1246590098 -0518421,1246590082 -0518422,1246590198 -0518427,1246590051 -0518456,1246590001 -0518506,1246589913 -0518509,1246590143 -0518517,1246590096 -0518527,1246589791 -0518531,1246590036 -0518550,1246589997 -0518563,1246590273 -0518617,1246590244 -0518620,1246590097 -0518626,1246589982 -0518642,1246590078 -0518652,1246590352 -0518654,1246590236 -0518681,1246590247 -0518694,1246589689 -0522209,1246590235 -0522215,1246590003 -0522226,1246590268 -0522235,1246589921 -0522291,1246589935 -0522323,1246589908 -0522325,1246590074 -0522346,1246590199 -0522364,1246590346 -0522365,1246590031 -0522388,1246590135 -0522420,1246590052 -0522432,1246590274 -0522478,1246589924 -0522498,1246590136 -0522505,1246590217 -0522516,1246590299 -0522526,1246589905 -0522585,1246590004 -0522587,1246589912 -0522591,1246590227 -0522592,1246590290 -0522606,1246590306 -0522613,1246590107 -0522618,1246589902 -0522621,1246590296 -0522624,1246590063 -0522633,1246590102 -0522639,1246589964 -0522666,1246590297 -0522690,1246590196 -0522695,1246590229 -0522709,1246590023 -0522737,1246590231 -0522740,1246589896 -0522746,1246590267 -0522747,1246589785 -0522821,1246590070 -0522827,1246590344 -0522835,1246589946 -0522864,1246589973 -0522871,1246589904 -0522883,1246590065 -0522898,1246590047 -0522904,1246589698 -0522918,1246590039 -0522922,1246590033 -0522923,1246590309 -0522935,1246589906 -0522937,1246590002 -0522947,1246589978 -0522964,1246590327 -0522981,1246590257 -0522986,1246590120 -0522995,1246590300 -0522996,1246590450 -0523015,1246590137 -0523024,1246590301 -0523039,1246590140 -0523045,1246590272 -0523049,1246590041 -0523051,1246589959 -0523053,1246590364 -0523064,1246590109 -0523068,1246590103 -0523082,1246590139 -0523083,1246590053 -0523143,1246590090 -0523162,1246590104 -0523165,1246590185 -0523186,1246590256 -0523197,1246589702 -0523200,1246590245 -0523211,1246589955 -0523237,1246590028 -0523246,1246590317 -0523260,1246589917 -0523287,1246590341 -0523297,1246589903 -0523300,1246590180 -0523305,1246590038 -0523324,1246589763 -0523334,1246590250 -0523343,1246590042 -0523356,1246590054 -0523388,1246590220 -0523391,1246589968 -0523412,1246589966 -0523440,1246590260 -0523447,1246590261 -0523465,1246590037 -0523478,1246590077 -0523479,1246590076 -0523530,1246589788 -0523534,1246590278 -0523549,1246590298 -0523557,1246589780 -0523576,1246589983 -0523578,1246590279 -0523605,1246589962 -0523640,1246590311 -0523641,1246590226 -0523647,1246590110 -0523651,1246590012 -0523661,1246590333 -0523685,1246590211 -0523688,1246590210 -0523697,1246589952 -0523699,1246590069 -0523710,1246590223 -0523715,1246590186 -0523734,1246590108 -0523739,1246589897 -0523740,1246590124 -0523747,1246590305 -0523772,1246590271 -0523775,1246590255 -0523786,1246590187 -0523796,1246590358 -0523799,1246590310 -0523807,1246589977 -0523809,1246590067 -0523817,1246589771 -0523824,1246589774 -0523826,1246590307 -0523828,1246589773 -0523833,1246589842 -0523835,1246590252 -0523836,1246589770 -0523840,1246590221 -0523841,1246589844 -0523856,1246589974 -0523917,1246589839 -0523932,1246590027 -0524062,1246589979 -0524070,1246590203 -0524078,1246590085 -0524086,1246590127 -0524095,1246590080 -0524126,1246589898 -0524142,1246589945 -0524149,1246590130 -0524172,1246590184 -0524181,1246590337 -0524185,1246590345 -0524209,1246589783 -0524210,1246589841 -0524224,1246590022 -0524230,1246589970 -0524249,1246590357 -0524279,1246590046 -0524285,1246589940 -0524331,1246590087 -0524346,1246590190 -0524366,1246590254 -0524391,1246590275 -0524395,1246590269 -0524421,1246589836 -0524441,1246590282 -0524464,1246590308 -0524472,1246590291 -0524497,1246590057 -0524510,1246590293 -0524513,1246590092 -0524570,1246589800 -0524589,1246589830 -0524590,1246589938 -0524655,1246590263 -0524658,1246589793 -0524660,1246589825 -0524691,1246589792 -0524697,1246590209 -0524744,1246589972 -0524745,1246590371 -0524747,1246589915 -0524778,1246590343 -0524792,1246589794 -0524839,1246589831 -0524843,1246589829 -0524849,1246590366 -0524872,1246590081 -0525026,1246590204 -0525029,1246590101 -0525048,1246590117 -0525078,1246589823 -0525088,1246590303 -0525091,1246589828 -0525092,1246590215 -0525093,1246589958 -0525114,1246590246 -0525115,1246589992 -0525136,1246589950 -0525137,1246590202 -0525153,1246590284 -0525166,1246590131 -0525171,1246589988 -0525172,1246589933 -0525182,1246589986 -0525208,1246590264 -0525218,1246590195 -0525271,1246590251 -0525272,1246590197 -0525277,1246589834 -0525285,1246589954 -0525287,1246590248 -0525300,1246590205 -0525343,1246590183 -0525348,1246589909 -0525349,1246590188 -0525366,1246590240 -0525374,1246589845 -0525379,1246590259 -0525395,1246590331 -0525396,1246590286 -0525431,1246590207 -0525462,1246589947 -0525479,1246590340 -0525519,1246589922 -0525600,1246590005 -0525678,1246590192 -0525681,1246590008 -0525698,1246589886 -0525725,1246590241 -0525729,1246590369 -0525743,1246589975 -0525778,1246590356 -0525782,1246590234 -0525793,1246590206 -0525803,1246590292 -0525820,1246590304 -0525831,1246590228 -0525836,1246590134 -0525837,1246590237 -0525853,1246589869 -0525858,1246590398 -0525859,1246590359 -0525869,1246590313 -0525870,1246590213 -0525886,1246590138 -0525891,1246589873 -0525915,1246590129 -0525921,1246589932 -0525932,1246590336 -0525956,1246590230 -0525972,1246590354 -0525989,1246590232 -0525999,1246589893 -0526023,1246589885 -0526054,1246590201 -0526069,1246590178 -0526074,1246590258 -0526082,1246590347 -0526148,1246590061 -0526151,1246590239 -0526179,1246589889 -0526206,1246589892 -0526231,1246590238 -0526279,1246590219 -0526303,1246589891 -0526319,1246590376 -0526336,1246590280 -0526373,1246590126 -0526383,1246590253 -0526388,1246590355 -0526403,1246590281 -0526417,1246590287 -0526434,1246590360 -0526439,1246590270 -0526454,1246590332 -0526457,1246590348 -0526480,1246590314 -0526503,1246590118 -0526534,1246590342 -0526633,1246590323 -0526713,1246590153 -0526727,1246590160 -0526760,1246590374 -0526763,1246590372 -0526861,1246590440 -0526896,1246590335 -0526973,1246590386 -0527124,1246590391 -0527292,1246590388 -0527374,1246590457 -0527516,1246590418 -059214,10837 -072301,6975 -078937,148 -08000304,9097 -08000421,11074 -0800223,8182 -09000100,11056 -09000106001,11101 -09000153,10167 -09000177001,10936 -09000180,10985 -09000181,11027 -1234567,2 -1302001,1246588978 -1529791,8065 -186185,1246589851 -3392314,9824 -353070,5818 -356039,5752 -369080,5893 -375227,7973 -418916,6731 -482018,9844 -494475,10928 -505292,11104 -507295,1246588474 -523190,1246589850 -523191,1246589849 -525046,1246589852 -55007,56 -8000100,7467 -8000101,9094 -8000102,7486 -8000104,7201 -8000105,7942 -8000107,7208 -8000108,8804 -8000109,7314 -8000110,7351 -8000112,7346 -8000113,7998 -8000114,7706 -8000115,7651 -8000116,7468 -8000118,7329 -8000119,7330 -8000121,7338 -8000122,7584 -8000124,7528 -8000125,7357 -8000127,7355 -8000128,7309 -8000129,7750 -8000130,7683 -8000131,7540 -8000133,8969 -8000134,7629 -8000135,7679 -8000136,7646 -8000139,7323 -8000140,7324 -8000141,7815 -8000142,7482 -8000143,7308 -8000144,7207 -8000145,7206 -8000147,7322 -8000148,7326 -8000149,6997 -8000150,7488 -8000151,7312 -8000152,7551 -8000153,7354 -8000154,7321 -8000155,7628 -8000156,7535 -8000157,7585 -8000158,7630 -8000159,7682 -8000161,7681 -8000162,7688 -8000163,7888 -8000164,7857 -8000165,7919 -8000166,7935 -8000167,7929 -8000168,7930 -8000169,8066 -8000170,7957 -8000171,7940 -8000172,7951 -8000173,7963 -8000174,8404 -8000175,7955 -8000176,7966 -8000177,7979 -8000178,7978 -8000179,7986 -8000180,8003 -8000182,7994 -8000185,7987 -8000186,7988 -8000189,10099 -8000190,10863 -8000192,8022 -8000194,8054 -8000195,8026 -8000196,8024 -8000197,8029 -8000198,8028 -8000200,8031 -8000201,8032 -8000202,8033 -8000203,8100 -8000204,8039 -8000205,7924 -8000206,8045 -8000207,8060 -8000208,8059 -8000209,8042 -8000210,8052 -8000211,8055 -8000212,8061 -8000213,8846 -8000214,8908 -8000215,8092 -8000216,8096 -8000217,8079 -8000218,8072 -8000219,8080 -8000221,8098 -8000222,8104 -8000225,8190 -8000226,8198 -8000227,8197 -8000228,8199 -8000229,8214 -8000230,8213 -8000231,8221 -8000232,8224 -8000233,8339 -8000234,8342 -8000235,8347 -8000236,4757 -8000237,8349 -8000238,8364 -8000239,8365 -8000240,8366 -8000241,8460 -8000242,8874 -8000243,8896 -8000244,6125 -8000245,8458 -8000246,8805 -8000247,8813 -8000248,8892 -8000249,8902 -8000250,8891 -8000251,8893 -8000252,8907 -8000253,8906 -8000254,8897 -8000255,8988 -8000256,8941 -8000257,7334 -8000258,8957 -8000259,6987 -8000260,7327 -8000261,8972 -8000262,9023 -8000263,8970 -8000264,8971 -8000265,8973 -8000266,8975 -8000267,8974 -8000268,8978 -8000269,8984 -8000270,8986 -8000271,8987 -8000272,8989 -8000274,7822 -8000275,7525 -8000276,8992 -8000277,8995 -8000278,8994 -8000279,8996 -8000280,9019 -8000281,9003 -8000282,9004 -8000283,9025 -8000284,9011 -8000285,9018 -8000286,9017 -8000287,9015 -8000288,9016 -8000289,9022 -8000290,9020 -8000291,9021 -8000292,7952 -8000293,9024 -8000294,9029 -8000295,9030 -8000296,9034 -8000298,9040 -8000299,7876 -8000301,9050 -8000302,9099 -8000303,9095 -8000304,9101 -8000305,9103 -8000306,9109 -8000307,9123 -8000308,9124 -8000309,9125 -8000310,9131 -8000311,9129 -8000312,9127 -8000313,9136 -8000314,9134 -8000315,9869 -8000316,6753 -8000317,9756 -8000318,10435 -8000319,10713 -8000320,9790 -8000321,9791 -8000322,9722 -8000324,9724 -8000325,9862 -8000326,9748 -8000327,9727 -8000330,9842 -8000331,9889 -8000336,9901 -8000337,9916 -8000338,10035 -8000339,9918 -8000341,10050 -8000342,10048 -8000343,10049 -8000344,10061 -8000345,10062 -8000347,10063 -8000349,10057 -8000350,10060 -8000352,10073 -8000354,10075 -8000355,10080 -8000356,10084 -8000357,10083 -8000358,10088 -8000359,10089 -8000360,10092 -8000362,10105 -8000363,10106 -8000364,10116 -8000365,10171 -80003666,10172 -8000367,10180 -8000369,10217 -8000370,10218 -8000373,10457 -8000374,10456 -8000377,10464 -8000378,10576 -8000380,10715 -8000382,10786 -8000383,7268 -8000385,10836 -8000388,6702 -8000390,5878 -8000391,7569 -8000392,6614 -8000393,10934 -8000394,7397 -8000395,10945 -8000396,10946 -8000397,10947 -8000398,10950 -8000399,10948 -8000400,10949 -8000401,10956 -8000402,6505 -8000403,10963 -8000404,10093 -8000405,10967 -8000406,10971 -8000407,7778 -8000408,8088 -8000409,10974 -8000410,10975 -8000412,10976 -8000416,11025 -8000417,11036 -8000418,11055 -8000419,11054 -8000420,11062 -8000422,11105 -8000423,11106 -8000425,10920 -8000426,1246588656 -8000428,10743 -8000432,1246588906 -8000435,1246588983 -8000436,1246588987 -8000437,1246588975 -8000438,1246588981 -8000439,1246588993 -8000441,1246589146 -8000442,1246589462 -8000445,1246589701 -8000446,1246589766 -8000448,5896 -8000449,1246589862 -8000501,1246589858 -8000502,1246589857 -8000503,1246589860 -8000504,1246589867 -8000505,1246589871 -9000100,1246588968 -9000101,11064 -9000103,1246589136 -9000104,1246589147 -9000105,7591 -9000106,1246588778 -9000107,9128 -9000109,1246588792 -9000110,1246588806 -9000111,1246588809 -9000112,7950 -9000114,1246589671 -9000115,8101 -9000116,8102 -9000117,8103 -9000120,8200 -9000121,8215 -9000122,10100 -9000123,9005 -9000124,10102 -9000125,9007 -9000126,10104 -9000127,9009 -9000128,9010 -9000129,9051 -9000130,9909 -9000131,10043 -9000132,10054 -9000133,10058 -9000134,10066 -9000135,10065 -9000136,10059 -9000137,10074 -9000138,10108 -9000139,7320 -9000140,10111 -9000141,10064 -9000143,9892 -9000144,10112 -9000145,10114 -9000146,10115 -9000147001,10117 -9000148001,10121 -9000150,10122 -9000151,10127 -9000152001,10128 -9000154,10168 -9000155,10169 -9000156,1246589460 -9000157,10071 -9000158,10173 -9000159,9839 -9000160,10175 -9000161,10192 -9000162,10193 -9000163,10200 -9000164,1246589602 -9000165,10203 -9000166,10204 -9000167,1246589669 -9000168,10211 -9000169,10220 -9000170,1246589668 -9000171,10437 -9000172,10818 -9000175,1246589642 -9000176,10930 -9000178,10870 -9000179,10962 -9000181,1246588828 -9000182001,11123 -9000183,1246588843 -9000184,1246588875 -9000187,1246589670 -9000189,1246589695 -9000200,1246589816 -9000201,1246589847 -9000202,11092 -9000203,1246589859 -9000204,1246590381 -9000205,10213 -9000206,1246590397 -9000207,1246590416 -9000245,11033 -9000500,1246588832 -9000501,11084 -9000502,11332 -9000503,1246588985 -9000504,1246588986 -9000505,1246588814 -9000506,1246588820 -9000507,1246588994 -9000508,1246589133 -9000509,1246589679 -9000510,1246589680 -9000511,10047 -9000512,1246589820 -9000513,8183 -9000514,7964 -9000515,8186 -9000516,8185 -9000517,8196 -9000518,8195 -9000521,8203 -9000522,8204 -9000523,8208 -9000524,8210 -9000525,8209 -9000529,8226 -9000530,8336 -9000531,8337 -9000532,8911 -9000533,8910 -9000534,8912 -9000535,8956 -9000536,8958 -9000537,8990 -9000538,7752 -9000539,7751 -9000540,10938 -9000541,9041 -9000542,10961 -9000597,1246589764 -9000598,1246589700 -9000599,1246589699 -9000600,8109 -9000601,1246589866 diff --git a/node_modules/csvtojson/test/data/large-utf8.csv b/node_modules/csvtojson/test/data/large-utf8.csv deleted file mode 100644 index d60ec90..0000000 --- a/node_modules/csvtojson/test/data/large-utf8.csv +++ /dev/null @@ -1,5291 +0,0 @@ -Field1,Field2 -абеубкб,каав1 -абеуудб,тево -абекбат,ббооэ -абектке,бвдтекээву -абеэадд,бавда -абеэдуа,това -абтббдо,бвдтеккоет -абтббдд,бвдтекэдод -абтвбэк,эвуу -абтоббе,бвдтекэввв -абтдаек,току -абтдббо,эуда -абтдеэд,тдаа -абтдеэе,уатэ -абтдтба,бавуд -абтедда,коее -абтедку,удут -абтееек,уоуа -абтееэе,еоке -абтеуак,туэв -абтттэу,ттв -абтктда,уооэ -абтэаоб,туэо -абтэаод,тэаб -абтэтуе,едбу -абуаоад,бвдтеккоув -абубебв,экоо -абувбда,баоад -абуввкэ,бвдтекэбэт -абуввэа,вэ -абувоке,тебк -абувува,уэбт -абувувб,этту -абуовко,тувк -абудавт,баовб -абудоэе,баовк -абуебта,уает -абуеввт,бвдтекэтув -абуееээ,эа -абуекеу,тэээ -абуеэвб,бтеэ -абуеэвв,бадбэ -абутаду,бвдтекэтвэ -абутоае,баоот -абутоб,удэв -абуттао,бвдтеккадд -абууатк,бадед -абуквто,двок -абукобу,вавт -абукувб,баккд -абуккка,бавэб -абуэауо,эотв -абуэодд,эоуб -абуэдвб,баеоб -абуэдуу,увду -абуэукд,баддт -абуээвб,увуб -абкбееэ,коаб -аааааад,ээва -аааааадв,уету -аааааадк,утэк -ааааааэ,бвдтекэбоа -ааааавв,квау -аааааве,ээвк -ааааавк,туук -аааааоа,уэвб -аааааоо,эувт -аааааот,ээоб -аааааоу,вк -аааааок,ээов -ааааада,утео -ааааадт,вакв -ааааадэ,евту -аааааед,деуд -ааааауа,тээд -ааааакт,бвдтекэбое -ааааакэ,бээе -аааавое,ваку -аааауук,бабау -ааааэа,ббато -ааааэба,ккдк -аааббуе,ував -аааббэв,ваов -аааббэо,уеае -аааббээ,оббэ -ааабваб,обтк -ааабвба,вбвт -ааабвбб,ээео -ааабвбт,ээее -ааабввв,ээеэ -ааабвов,детэ -ааабвду,баауу -ааабвеа,удко -ааабвеб,бвдтеккууу -ааабвео,ээтэ -ааабвеу,ээуб -ааабвеэ,окэу -ааабвув,ее -ааабвуу,еаоэ -ааабвкк,тэкт -ааабвэа,ээуэ -ааабвэу,веэа -ааабоаа,бааот -ааабоба,эээа -ааабобд,бвдтектэва -ааабова,удкб -ааабовв,эээе -ааабово,оаэу -ааабове,бааут -ааабовт,уодк -ааабовк,эээу -ааабовэ,уобо -ааабооо,удкэ -ааабооэ,кбуд -ааабодо,ууд -ааабоеб,уттв -ааабоуа,уэба -ааабоув,ууоэ -ааабоуо,обео -ааабоуу,баабт -ааабока,баабу -ааабокб,баабк -ааабокв,уобк -ааабоко,ку -ааабоэо,укбу -ааабоэд,уоде -ааабоэу,эо -ааабоэк,бааве -ааабдаа,воет -ааабдав,дбеу -ааабдао,дуеа -ааабдад,уэдо -ааабдак,баавэ -ааабдба,двоу -ааабдбб,бувб -ааабдве,бвдтеэабту -ааабдвк,бааоэ -ааабдоб,эууб -ааабдоо,кааб -ааабдка,утдэ -ааабека,убуб -ааабекк,каеб -ааабудк,уедб -ааавоок,бвдтекэебд -ааавдтв,овтт -ааавкав,бвдтекэдто -аааовев,баабб -аааовкк,оекб -ааадаук,кэке -ааадвкк,оввэ -ааадоед,туке -ааадтоэ,обтт -ааадтэт,утту -аааеоео,бабуд -аааееуб,укбв -аааеэуе,бвдтекекду -ааакауэ,твбв -ааактое,экоа -ааакудк,кбкэ -ааакуке,ээдэ -ааакктб,бвдтекэтэб -аааккуд,кбэб -аааэдад,кеэк -аааэеоа,эуув -аабаодд,утоу -аабаэуд,ууао -аабббтэ,эков -аабббку,дтвк -аабввеэ,эккв -аабвдто,ууэу -аабвдкт,увао -аабвке,квбт -аабвээе,вдко -аабдае,бвдтеэабуд -аабддбб,кодб -аабддеа,кэуэ -аабдтвк,тбеэ -аабеоэв,бвдтекктаа -аабеоэу,экке -аабедак,уекк -аабуаео,удуэ -аабуэев,уктк -аабкеэд,тквт -аававка,бвдтекэевэ -аавбеэу,удтэ -ааввэвк,укоу -аавдеуб,еэ -аавдтов,баб -аавдтда,ууау -аавдков,кбае -аавеват,утву -аавеоэб,ваоа -ааветтт,бавве -аавтбва,обтд -аавтдев,детк -аавтеаб,буад -аавтубб,уэтб -аавткао,уттк -аавкбаа,тэуд -ааоаоаэ,ээдд -ааодекд,бвдтектэбу -ааоуауе,баавб -ааоубет,бвдтекэтбу -ааоукув,обке -аадааэт,дэ -аадаоаа,ообк -аадбаовэ,тткк -аадеоет,едбо -аадеэок,вакк -аадкеот,ээкк -аадктае,утее -аадкквб,ээдб -ааебдво,укду -ааеткка,ббаде -ааектув,уетк -ааекуув,кбэв -ааеэодк,уевэ -аатвеук,ктк -аатообо,ууда -аатоету,таэт -аатувак,экве -ааткоак,бвдтеккубт -аатккэв,евук -аатэвув,ээуд -аатэдвв,уквэ -аатэддб,кэуу -аатэдтт,уеув -аауабвэ,бое -аауакву,эээд -аауаээа,эутэ -ааубвве,эудэ -ааукууд,ууав -ааукуэа,овка -аакаоао,каеу -аактадэ,баадв -аакуаву,бакту -аакувао,кабб -аакккев,бауеа -ааэаауу,товэ -ааэавээ,двоэ -ааэакта,туот -ааэбэтэ,окэо -ааэввдд,тээе -ааэвдве,бвдтекэевк -ааэвеэв,удте -ааэдова,баэее -ааэдкаэ,твау -ааэтэау,бвдтекэтбв -ааэуокк,туое -ааэукву,ээ -ааэктэе,эаав -ааэкуек,уеоу -ааээеак,бвдтекэеда -ааэээба,кбуу -абабаде,баэд -абаобвв,ууаэ -абаооее,ко -абаеатб,уеоа -абаебуэ,еоае -абаткту,декв -аббааэв,уоое -абббдоэ,бвдтекккбт -абббдкд,утоэ -абббубд,окуэ -аббое,уодб -аббтоэт,баэад -аббэкэу,еатв -абввэое,едад -абвовдв,экэт -абводет,бвдтеккккд -абвэаве,ука -абовута,деуо -абодеуо,ээак -абдбуаб,уауа -абдвбкб,бабет -абдвебу,бвдтекэоэд -абдвете,удэе -абдвекк,тоув -абдвуоо,эдбе -абдвуде,екду -абдвкдв,эвак -абдоавв,кбов -абдоаво,баотб -абдоауу,тотб -абдоаэо,бвдтекэбае -абдодкэ,тэау -абдодэб,бвдтекэаеб -абдоеао,дкео -абдоеот,тдоа -абдоуак,бвдтекэаэк -абддвэа,бвдтеккдвб -абддоаэ,тотд -абддоео,эеед -абддеек,дкдт -абддеуа,укек -абддэдб,уувк -абддэдт,текэ -абдеаоэ,убао -абдебад,кдтэ -абдеодо,бвдтекэако -абдедта,эвтт -абдекдэ,ббвоо -абдтаэа,куко -абдтбэт,бвдтекэатэ -абдтоек,эауа -абдттбу,уббу -абдттбк,баота -абдтубе,эвтэ -абдтэод,дууу -абдтэтб,удэо -абдуабб,увэа -абдубвв,бавтд -абдубэк,бвдтекэкео -абдувкт,бвдтекэаэв -абдутда,дкту -абдукое,етде -абдукоу,бавоа -абдукок,бвдтекэбут -абдквбв,бвдтекктдэ -абдквэд,тоуе -абдкотэ,бавеэ -абдэадт,бавэд -абдэбаб,баадб -абдэоеа,утэд -абдэебт,бвдтекэокд -абдэеву,ббате -абдэевэ,бауоо -абеатав,укте -абеатуе,ткте -абеаэбб,бдд -абеаэва,кабе -абеаэтв,кадэ -абебааб,уэек -абеббда,бвдтекэткк -абебууе,уеов -абеовко,деут -абеоттк,оэое -абеотуб,ббват -абедееб,экуу -абетэдт,эбвв -абкбета,баоук -абкбтеэ,тэбк -абквеао,баукк -абктдуе,бвдтеккууо -абктдут,бауоэ -абктеоа,теэо -абэдобе,утуа -аватвбэ,укаа -авбвддэ,бадав -авбэдуэ,бвдтеккддд -авбэдкв,куэо -авбэедк,дуао -авбэееа,убое -авбэтее,баееэ -авбэкба,тоео -авбэквт,коау -авбэкку,кукт -авватае,бввб -аввбвдк,оэв -аввбдэд,кэао -аввбэтб,уакб -авввдбт,эват -авввдбу,бвдтекэооэ -авввдбэ,ууок -авввеат,бда -авввевд,бабоа -авввуеэ,бвдтекктев -аввоаек,эдтб -аввоаеэ,бвдтекэббв -аввоооу,уеку -аввоетк,тукб -аввддед,кеоу -аввдетд,ттук -аввдэку,уоэо -аввебку,уттт -авветад,оккт -аввеуук,бвдтекэауа -аввтбэт,оббк -аввтеку,окке -аввтеэу,ваау -аввуетт,бауду -аввукоб,уудэ -аввэббэ,уук -аввэтбо,ттве -авобэеб,укбб -авоокое,бавбв -аводдуе,укуд -аводеву,вдкт -аводкба,баебу -авоедоу,кбуо -авоеуэб,дууо -авоеуэв,екбв -авоекбк,ткдб -авотдеа,уево -авотдеб,удтв -авотдев,баетк -авотдео,бвдтекэдво -авоэвеб,тетт -авдаебк,эаэт -авдоуоб,ууае -авдоуод,бвдтекэбэу -авдоуок,тдээ -авдоуоэ,баууе -авдоуээ,бауоу -авдтаэо,бвдтеккээу -авдууэа,бэку -авдуэкб,бвдтекэвак -авдэдоо,экэк -авдэувв,уубб -авдэутэ,укдо -авдэуээ,тако -авдэкав,экео -авеооэб,баубв -аветкут,ууе -авеудтд,вбео -авекоад,кода -авекдат,ут -автаовб,бвдтеэабуе -автбктт,уетв -автввкк,уубе -автвеау,уутэ -автотоа,ббаэе -автокдт,эадв -автокку,беа -автдббт,уэоу -автдвет,тбта -автдетб,от -автдуээ,квкд -автевот,бабээ -автеоэа,эукэ -авттдок,уваэ -автуокт,кдтк -автудэд,етоэ -автуебт,уэуа -авуадвэ,бвдтеккаеа -авубэто,двда -авубэте,баэве -авувбао,бвед -авувэбд,дб -авуовке,ееэв -авуодек,бвдтекэаут -авуоедт,баедд -авуотоб,бвдтеэаббд -авуеббу,баекд -авквекк,эээк -авквеэо,дуу -авкоэав,твкк -авкдатв,утед -авкдввв,тдкд -авкдеда,бэкт -авкдтэт,тобк -авкевау,экеа -авкетбб,дкбу -авкеует,бвдтекэббк -авкеукк,бакке -авкеуэд,эвау -авкеэбе,бэээ -авктавт,вавэ -авкуаду,тдуо -авкукэк,удка -авккаве,дкот -авккоэб,кобт -авккдае,бвдтекэвкк -авккдээ,утаа -авккэов,бабэб -авкэбоа,бвдтеккуаа -авэавев,эввв -авэбата,укка -авэбоба,уут -авэведу,бвдтекэеау -авэвтко,давд -авэдаук,ууэб -авэеотб,веэу -авэеуот,уооб -авэеуок,уеоэ -авэутбэ,тто -авэуэду,бббэд -авэуэдэ,бвдтекэеэа -авэкоте,тэкэ -авэктбб,бааэе -авээдтд,экээ -авээккт,ттад -аоаатеэ,уту -аоавоэо,эккд -аоавеоо,бвдтеэавке -аоаовае,уаев -аоаовуу,баоеэ -аоаоувд,кэео -аоаоэав,ууоу -аоадаук,баеба -аоадбеу,утеу -аоадбук,уоба -аоадбэд,уоек -аоаддак,ткду -аоадкэа,бббтт -аоатетв,бвдтекэоэб -аоатето,баудб -аоауавб,укое -аоаувэа,эувб -аоаудтб,твак -аоакдву,утдв -аоаккбу,уэбк -аоаккку,тдоэ -аоаэбэу,бтдб -аоаэдвт,бвдтекэээд -аоаэтуа,бвдтекккбо -аобааке,дкоб -аобавту,экку -аобаоев,уккв -аобаека,екак -аобатто,бвдтеккоуд -аоббвэд,бауэв -аоббккт,укву -аоббэбб,уеек -аобвдбк,дтеб -аобвуда,дтдэ -аобвкка,доэу -аобвкээ,кабв -аобвээу,экоб -аобовбд,уууд -аобовта,уэбд -аободвк,уект -аобоедо,ууэе -аобдккб,уэед -аобедтэ,уэтв -аобедуб,бадуе -аобедув,эвто -аобетек,бвдтеккука -аобекаэ,дуко -аобекеу,баэвв -аобкввэ,ткта -аобкекд,уттд -аобктав,уокк -аобктэо,ээае -аобкэвк,ббаэа -аовавкт,бвдтекээдб -аовбубу,бвдтеэаотк -аовбкуа,уэбв -аовбэкд,екеб -аоввваб,бактэ -аовветд,туэу -аоввктк,дутб -аовоабб,удуд -аовоаве,укот -аовоебк,дтут -аовотбв,эаот -аовотуа,ууба -аовоэкэ,баэов -аовдбуу,тбое -аовдудк,эукв -аовеаоаб,эбеу -аовтото,туев -аовтдтв,удэт -аовтева,тбку -аовтето,уоет -аовууео,уоту -аовктаа,тэуу -аовкууо,бвдтекэтут -аовкккв,тобо -аовкэте,уедэ -аовэаед,етад -аовэуоо,тевб -аовээка,утуд -аовээкт,еккб -аооадвб,эуот -аооаеуд,еудд -аооатоа,уууб -аооаэув,овбк -аообует,еэте -аообкке,дбэу -аооввов,кбтт -аоовдее,укук -аоовтад,укат -аоовтау,кбоо -аоовтба,ууэк -аоовэтт,укау -аоовэтк,одбб -аоооаок,тууб -аоооооэ,етее -аоодббб,еэеу -аоодбее,тээт -аоодввв,бвдтекккаа -аоодтвт,еэээ -аоодтдб,уээв -аоодэет,уевт -аооевва,уовк -аооеоед,дубв -аоотвэу,доед -аоотевв,ооао -аооубдэ,додб -аооудув,дттт -аооууув,укев -аооукоб,бвдтекэдкэ -аооуэдк,ообд -аоокбде,кадд -аоокбев,като -аооквду,уква -аоококе,тбка -аоококт,уток -аоокдоэ,доат -аоокдут,кбвэ -аооктдв,уэта -аоокует,уэвк -аоокууд,дута -аоокука,укке -аооэбэв,уэво -аооэвдт,уове -аооэоут,етаб -аооэоэв,этта -аооээдб,уктв -аодавдв,уууу -аодавуу,утев -аодавэв,уеао -аодаоаа,уукв -аодаоэк,уууа -аодадбд,ткод -аодадоб,уоот -аодадок,утуб -аодаеоо,бвдтеэаоуо -аодауод,уаао -аодауда,уаад -аодаэеа,уеоо -аодббаа,уэтк -аодббвд,едтэ -аодбвдк,укбт -аодбэеу,еоео -аодваке,каэе -аодввтт,кэее -аодвоад,утое -аодвтбо,дукк -аодоауа,туту -аодоеек,дкдв -аодотаа,укоэ -аодоквб,евба -аоддаве,дуку -аоддада,уээо -аоддаед,дуво -аоддбтб,тоае -аоддвак,бвдтекктэе -аоддвоб,уудт -аоддвде,удку -аоддете,укбд -аоддтуд,кбкк -аоддутк,укад -аоддукд,еукт -аоддэаб,удэк -аоддэеа,теок -аодедбб,оэва -аодедко,евеэ -аодееео,ууед -аодееуб,тбаэ -аодеттв,уэав -аодеуку,бвдтекэебу -аодеквв,еабе -аодтвэа,удээ -аодтвэв,тдбд -аодтеоо,дккб -аодккэе,еккт -аодкэкв,уееа -аодэбдв,дтту -аодэобб,уекв -аодэдав,укдэ -аодэеав,утод -аодэебт,утдб -аодэкээ,уэдэ -аоеаавк,уэад -аоеаовк,кадо -аоеадвк,бакте -аоеадкэ,еукэ -аоеауод,бабед -аоеаэве,уеад -аоеббвк,туеу -аоебокб,дквб -аоебдвв,етдк -аоебтоб,ткаа -аоебттк,эаее -аоебуде,ттоо -аоебуду,бвдтеккбед -аоебукд,дкбт -аоебкда,экад -аоебкто,токт -аоевакд,каок -аоеввао,уееу -аоевтэо,уэву -аоевкаб,бвдтеккувд -аоеоабо,дубо -аоеоаве,уквд -аоеоаеу,укдт -аоеодэу,уэбб -аоеоевк,дкуу -аоеоеот,кбат -аоеокде,дкув -аоеокто,уукт -аоедаоб,укуо -аоедаот,дкек -аоедбео,эутб -аоеддат,евод -аоеддее,бвдтекэеат -аоедебб,евдб -аоедтдо,дтеу -аоедкоэ,уоев -аоедэдэ,бабко -аоееввт,ууэв -аоееввк,ттуу -аоееоек,уэде -аоееокб,дудд -аоееоэд,едеб -аоееетв,укта -аоееето,уукк -аоеетав,кэко -аоеетбк,уоеа -аоееуту,дбуд -аоееуэв,еууэ -аоеекто,экка -аоееэдт,эбов -аоееэдэ,уэае -аоетбкэ,уобб -аоетвдо,туут -аоетдтт,уудб -аоетудв,бббуе -аоетууд,ттду -аоетктэ,уэак -аоеуаое,уэдд -аоеубэд,эдтт -аоеувуэ,кэдк -аоеуоуе,укае -аоеудээ,дкдд -аоеуеек,эбау -аоеуете,каоу -аоеуеуа,укуа -аоеууау,укуе -аоеуубв,эоэк -аоеукуу,уткэ -аоеуэвд,дуде -аоекаод,еаак -аоекаок,тэук -аоекббу,дкак -аоекбоб,увдо -аоекбде,дуда -аоекбту,дтэе -аоекбут,уутд -аоекбкв,еаад -аоекваб,укод -аоеквак,дуэк -аоеквбв,укоа -аоекввк,уэод -аоеквдк,ккоо -аоекотд,укаэ -аоекотк,уеде -аоекоуу,удда -аоекетд,тубу -аоекекд,екдо -аоекект,утвб -аоекубо,дкбб -аоекукт,дууэ -аоекктд,кбод -аоеэбве,утот -аоеэбед,дквт -аоеэвку,уккэ -аоеэетк,удуо -аоеэтуа,дкдэ -аоеэтэб,дкка -аоеэтэо,дубб -аоеэтэд,уквт -аоеэубб,уктд -аоеэуут,таут -аоеэууэ,укбэ -аоеээдт,еваа -аоеээта,тквв -аотаабб,екэа -аотабтв,еэво -аотавка,уэео -аотаетк,удвб -аотаттэ,утек -аотаубв,дудб -аотаэвэ,кбтэ -аотбаае,эоэа -аотбадт,уэкд -аотббэб,ууут -аотбвдэ,уэбе -аотбовэ,баооо -аотбоое,теоу -аотбебэ,удов -аотбтдэ,кбту -аотбуаа,дбут -аотбуде,евбе -аотбууа,укде -аотбкту,еэка -аотбэое,ддек -аотбэот,дтек -аотбэет,укоб -аотбэте,укуэ -аотбэуу,еэто -аотвдок,уэет -аотвдук,бвдтекэбтт -аоттдкк,дкбк -аоттевт,деде -аоттетд,тддэ -аоттуео,еутэ -аоттууа,туад -аоттууэ,дтув -аотткбэ,ебэб -аотткоэ,утау -аоттктэ,еуаб -аотувдэ,уэуб -аотудбб,еуээ -аотуеаб,каку -аотуубу,укку -аотуувт,утуо -аотуууа,дкут -аотууко,укба -аотууэу,уэау -аотуктд,деев -аотуэбэ,евбо -аотуэоб,деее -аоткббд,екде -аотквут,еэдб -аотковэ,утаэ -аоткотэ,ткбо -аоткеуд,уеуд -аотккэу,ууко -аотэвуа,дтэа -аотэвке,укаб -аотэоов,еууе -аотэодв,утэе -аотэоео,укэа -аотэдбт,тебб -аотэдеб,дуаа -аотэдув,тттб -аотэдуо,уэду -аотэдуэ,укээ -аотэеда,еэое -аотэеек,кэдэ -аотэекд,кауу -аотэеэд,еээу -аотэтоо,тавт -аотэтоэ,дкау -аотэуак,дукт -аотэукб,еэуу -аотэквд,эетк -аотэккд,уээу -аоуаауе,укак -аоуабба,еуэа -аоуабеэ,еабу -аоуавув,еэоо -аоуавуэ,тауа -аоуаоао,убаэ -аоуаоак,тбаб -аоуаооа,такд -аоуадээ,убео -аоуаеот,уудд -аоуаедб,ткдт -аоуаедв,уаак -аоуатбб,ууте -аоуатбв,тэдб -аоуаттб,ттта -аоуауод,уакв -аоуауеа,каба -аоуакок,ууад -аоуаэтэ,екэв -аоубббв,тата -аоуббвк,тэае -аоуббоо,эетб -аоуббке,екее -аоубвав,тэут -аоубват,дкву -аоубввв,еэок -аоубоек,бвдтекэукэ -аоубоуе,тадт -аоубоку,екае -аоубдба,евбв -аоубдеу,табв -аоубевд,еэее -аоубеуе,уэаа -аоубтав,уеед -аоубттв,утбб -аоубуба,дтуе -аоубквт,дкду -аоубквэ,уеот -аоубкек,уэдт -аоубэбт,еэкб -аоувава,тдвэ -аоувауэ,уует -аоувбвд,тткд -аоувбве,каэб -аоувбек,ууув -аоувбтв,уквк -аоувбут,еукб -аоуввве,уакэ -аоуввдв,еткк -аоуввка,еква -аоуввкб,удее -аоувобд,уктб -аоувоэв,уоао -аоувдеб,уевд -аоуведу,уэоэ -аоуведк,кбау -аоувтоо,табэ -аоувтед,дкбд -аоувтко,уккт -аоувуее,укда -аоувууу,уотб -аоувукд,еээе -аоувкаб,етбк -аоувкбд,тавд -аоувкео,екао -аоувктк,уеев -аоувкуу,убок -аоувэвд,уэот -аоувэоэ,уэбу -аоувэде,тткб -аоувэуд,тэео -аоуоабэ,еэбв -аоуоатэ,уауб -аоуоауэ,етдв -аоуоако,еэкв -аоуобвэ,туув -аоуовет,текк -аоуовэк,укео -аоуооав,тоод -аоуоооэ,еаба -аоуооев,экок -аоуодду,уеав -аоуодте,уетд -аоуодэт,тдбк -аоуодээ,утов -аоуоедт,дтто -аоуоеэу,укок -аоуотав,еувт -аоуоттт,уете -аоуотуу,еттк -аоуоубо,кает -аоуоута,еовв -аоуоуут,ттае -аоуоуэк,дуоэ -аоуокоу,увтт -аоуокте,бвдтеэаобк -аоуоктэ,етук -аоуокук,дтэк -аоуоэев,уоэв -аоуоэек,дудэ -аоуоэтд,уеко -аоудаво,удэу -аоудаеэ,уеуо -аоудакв,уубо -аоудбав,екуб -аоудбтв,уквб -аоудбэд,увов -аоудвао,дтвд -аоудвае,еоаб -аоудвоэ,дтво -аоудоэб,тбук -аоуддда,уебе -аоудтэк,тээв -аоудуоа,еэко -аоудудв,табд -аоудууэ,еэув -аоудуэв,евдд -аоудкоу,еобд -адкбаее,баоте -адкбато,баоуе -адкбатк,баока -адкбауб,бадеа -адкбаук,баебо -адкбаэо,бавву -адкбаэк,ээат -адкбббв,бавоо -адкббоо,бавуэ -адкббдв,бадтв -адкббдэ,бавэа -адкббеу,баддб -адкббеэ,бавэк -адкббтк,бвдтекквек -адкббкэ,баодв -адкббэа,баодэ -адкббэб,бавот -адкбвау,бадба -адкбваэ,экдб -адкбвбв,бавте -адкбвбэ,баууо -адкбвоэ,баеот -адкбвда,баквт -адкбвев,бадбб -адкбвэв,бвдтекквкб -адкбово,баеаа -адкбову,баовт -адкбооу,бавэо -адкбодд,бадод -адкбота,эвдв -адкбдао,бадду -адкбдда,бадвт -адкбдеа,экав -адкбдуб,бадео -адкбдка,баокт -адкбдкв,бавкв -адкбдкк,бакву -адкбдкэ,бадаа -адкбеат,бвдтекукув -адкбеоэ,бавуб -адкбеев,эудд -адкбето,бабоу -адкбека,этеб -адкбеэе,экее -адкбеэу,этее -адкбтба,экбд -адкбтбе,экод -адкбтбт,экат -адкбтвв,экту -адкбтво,бакуо -адкбтдв,баедо -адкбтдд,баоэе -адкбтуд,баеад -адкбтук,бауво -адкбткэ,баева -адкбтэв,баеее -адкбува,ббввб -адкбуво,эукд -адкбуеу,этек -адкбуув,бадбд -адкбуут,баодк -адкбукб,баоее -адкбуко,баеое -адкбукк,баооэ -адкбуэт,бавэв -адкбкаб,бадэт -адкбкае,баода -адкбкво,бавдд -адкбккк,бауеу -адкбкэо,баоуу -адкбэво,бвдтеккбдв -адкбэдд,баоек -адкбэет,баеет -адкбээо,ббвдт -адквадо,бадуо -адкваээ,бабтв -адквбав,бббээ -адквбуе,бвдтекккдв -адквбуу,эута -адкввку,бавкб -адквобб,бадвк -адквовв,бадак -адквову,эууе -адквовк,бавка -адквовэ,баеао -адквоок,бвдтеккатэ -адквотб,бадад -адквото,баеев -адквотд,бавэу -адквокт,бвдтекэддт -адквдаэ,баедэ -адквдбд,бакоб -адквдбк,бадву -адквдда,бвдтекэтвб -адквддо,бауеэ -адквддк,бвдтеккодэ -адквдед,баббо -адквдет,бвдтекэукб -адквдеу,баебэ -адквдкб,бауек -адквебв,бадвв -адквебо,ббвкэ -адквект,баевэ -адквтэд,бавэт -адквуоб,экеб -адквуоу,баевв -адквуед,баедб -адквутд,баова -адквууэ,бадва -адквуэд,бауэб -адквуээ,эуээ -адквкаа,эккб -адквкав,баеео -адквкае,бааоо -адквкдт,баувд -адквкуе,баоаэ -адквкут,баоак -адквккв,баетв -адквкко,баоэв -адквккд,баебд -адквкку,экот -адквкэа,баууэ -адквкэв,бааее -адквкээ,ббабэ -адквэвв,экэа -адквэвд,бвдтеккокк -адквэдб,баоэо -адквэде,баууд -адквэеэ,бвдтеккубе -адквэтк,батбб -адквэко,экта -адквэке,бадэо -адквээб,бавуа -адквээе,баеда -адкоаок,баеоэ -адкоадт,бадуа -адкоауа,бауот -адкоаув,баука -адкоаэе,баетд -адкоаээ,баоко -адкобво,бавеу -адкобву,бвдтеккбоа -адкобдк,бакоэ -адкобдэ,баобе -адкобэо,экэд -адковаб,экэу -адковду,бвдтекэевт -адковэв,баобо -адковэк,бауве -адкооба,бвдтекэкбб -адкообо,баодт -адкооед,баутд -адкооуэ,бакда -адкооэв,бвдтеккатк -адкодвт,баоеу -адкодвэ,бавтб -адкодоо,бвдтеккаке -адкодеэ,баввв -адкодтэ,баеае -адкодкв,бадбт -адкодко,баоээ -адкоееа,ээау -адкоеее,бауву -адкоето,бауэа -адкоеко,баквк -адкоект,бвдтекэдда -адкотбк,бвдтеккббб -адкоубк,баебт -адкоуут,баеек -адкокба,баету -адкокбу,бадтб -адкокбк,бавтв -адкокбэ,баоае -адкокдо,бадту -адкокдд,бвдтекэоэу -адкокдт,бауув -адкокуо,ээбу -адкоэаб,бавто -адкдабб,баоба -адкдабе,баебк -адкдаву,бавоэ -адкдавк,баодд -адкдадо,бабев -адкдадк,бвдтеккбае -адкдбда,баату -адкдбдк,бадтк -адкдбее,бабое -адкдбта,бавтэ -адкдбуб,баоаб -адкдбуо,ббвбв -адкдввт,бавтк -адкдвоэ,бавек -адкдвдо,баобт -адкдвеб,бвдтеккбдб -адкдвкт,бвдтекэвкэ -адкдвээ,баоку -адкдову,бабее -адкдоеа,бабео -адкдоту,баокк -адкдоув,бвдтекэддв -адкдоуо,бадбо -адкдоэо,баоеб -адкддау,бабов -адкддба,баутт -адкддбв,баээе -адкеэад,бвдтеккотв -адкеэбк,бабдэ -адкеэве,бвдтеккаув -адкеэву,баетб -адкеэтэ,баеку -адкеэуб,бавуе -адкеэка,баоаа -адкеээб,бавео -адктаае,бабоо -адктабо,бадбв -адктабэ,баевк -адктавт,бвдтекктоо -адктаде,баотэ -адктадт,бавкт -адктаду,баеов -адктает,бадао -адктатв,бадку -адктбвв,бвдтеккокэ -адктбдт,баееб -адктбкд,баово -адктбэд,баеед -адктввб,бвдтекэбов -адктввт,баувв -адктвтт,баувб -адктвкб,бвдтеккбоу -адктоаа,бвдтеккоео -адктоао,баает -адктовв,бавод -адктооб,бвдтеккбдо -адктодо,баубэ -адктоек,бабду -адктота,баеоа -адктоте,бадоэ -адктоуб,баокд -адктдов,бавду -адктддт,бвдтеккдав -адктдтб,бадбе -адктдке,бадкк -адктедк,бавтт -адктеее,баеву -адктетв,баеоу -адктекб,бауее -адктекэ,бадоб -адктеэв,бакбт -адкттдо,баддд -адкттэу,баокб -адкттэк,баетт -адктуаа,бадда -адктуаэ,бабеэ -адктууэ,бауов -адкткбэ,баубк -адкткоа,баоод -адкткду,бауок -адкткта,баоэб -адктктв,бааук -адктээт,бвдтеккдта -адкуавт,бвдтеккодо -адкуадо,бауое -адкуатв,бабкк -адкуатк,баоет -адкуаээ,баете -адкубба,бадке -адкубоб,бадээ -адкубдэ,баоеа -адкубее,бадуэ -адкубтб,бббед -адкубкб,баувт -адкубкв,бавов -адкубэа,бадкд -адкубээ,баоэк -адкуваб,ббобб -адкувбб,бааэб -адкувтт,бауоб -адкувув,бббеэ -адкувке,баоду -адкудаэ,бабто -адкуддт,бвдтеэабве -адкудэа,бвдтекэдеу -адкудэт,ббаоб -адкуеаб,бабуу -адкуевв,бауод -адкуевк,бавуу -адкуеоо,бауак -адкуетк,бвдтекэввб -адкуеуа,бвдтеккбео -адкутву,баодо -адкутоу,бвдтеккдоб -адкуттд,бадеэ -адкуттэ,бвдтекэеее -адкутуа,бавдк -адкууао,баввэ -адкуубв,бадэе -адкууве,ббаув -адкуувэ,бавдв -адкууед,бавдт -адкууеу,бвдтекэубт -адкууэб,бавок -адкукак,бауэе -адкукэу,бадек -адкуэод,бвдтеккдеу -адкуэдк,бвдтеккбкд -адкуэту,баоэт -адкуэкт,бвдтеккова -адкуээо,бааэд -адкуээк,бвдтекэттв -адккаоэ,бадтэ -адккадв,бавдэ -адккаек,баудв -адккбту,бвдтекккао -адкквау,баоде -адккввд,бааэу -адкквое,бадоа -адкквек,бабкт -адккоаа,баббэ -адккоаэ,бавев -адккобт,бабкв -адккобк,ббавб -адкковб,ббако -адккоеу,бабаэ -адккотк,баува -адккока,бауут -адккдбо,бабвд -адккдбе,баевд -адккдтд,баедк -адккдэд,бвдтекэаво -адккедб,бвдтеккдоу -адкктад,бвдтеккуко -адкктув,бадкэ -адкккат,бвдтекктуэ -адкккдо,ббвде -адкккеб,бвдтеккдад -адкккев,бвдтеккддо -адкккуэ,баваб -адккккб,бауеб -адккэаэ,бббое -адккэво,ббвув -адккэеа,бвдтеккдвт -адкэабо,бвдтекэоат -адкэаод,бвдтеккбво -адкэатв,баета -адкэбвв,бвдтеккукэ -адкэвту,баееа -адкэвуе,баоуд -адкэодэ,бвдтекэабу -адкэоеб,баэбд -адкэотт,баеок -адкэоуо,бауко -адкэдве,бабэд -адкэдок,баубу -адкэддк,бадка -адкэдеб,баддэ -адкэдев,бадэв -адкэдтв,баеат -адкэдко,бабкэ -адкэдэу,бадув -адкэебэ,бвдтеккаэт -адкэеде,бвдтеккдвэ -адкэеду,ббвуа -адкэеев,бвдтекэобэ -адкэето,баедв -адкэтвв,бвдтеэабвб -адкэтве,бвдтеккбуе -адкэуек,бвдтекэтуо -адкэуеэ,бабэк -адкэута,бавба -адкэкве,ббоаа -адкэкуо,бауэо -адкээвэ,бават -адкээто,бавау -адэааок,баутв -адэааээ,бавкд -адэабоэ,бауев -адэабдо,бауед -адэабтб,бауау -адэабтк,бвдтекккэв -адэабэт,баууу -адэавдк,бвдтеккдбо -адэаодт,бвдтеккдеа -адэаоду,бвдтеккоку -адэаоут,баууб -адэаокб,баувэ -адэакэо,бвдтеккодв -адэаэак,бвдтеккаэу -адэаэбэ,бвдтеккбтд -адэаэвб,баутэ -аоудкек,кбук -аоудэбэ,кэду -аоудэоа,уэдк -аоудэов,укеа -аоудэеб,татд -аоуевут,каук -аоуеоов,кеео -аоуедау,утэв -аоуедоэ,еэба -аоуедтт,еуау -аоуееэа,уедд -аоуекэк,еуод -аоуеээу,татт -аоутадк,тбак -аоутбтв,еувд -аоуттэб,еуте -аоутуэв,укко -аоутуэу,туэт -аоутквк,еуут -аоуткэд,эубу -аоутэае,уээб -аоууаво,ууеу -аоуубао,уеод -аоуубат,кбвд -аоуубак,таук -аоууввк,еват -аоуувук,теуб -аоуувэе,бадук -аоуувэу,дток -аоууобв,таба -аоууобо,ттуо -аоууобк,табе -аоууовт,екот -аоууоде,таве -аоуудво,кабд -аоуудут,еэае -аоуудкэ,така -аоууеак,бааэа -аоуутбу,тадб -аоуутвб,еттв -аоуутво,тадо -аоуутву,еутт -аоуутвэ,екэк -аоууткэ,укбк -аоуутэв,тоов -аоууута,еэов -аоууукк,уека -аоуууэв,еэед -аоуукэа,екуа -аоууэао,еэбо -аоууэок,тббе -аоууэоэ,екуу -аоууэее,уэвв -аоукаае,кэкб -аоукабв,еквт -аоукату,укоо -аоукауб,еэод -аоукаэт,укао -аоукббб,таед -аоуквдв,еэек -аоукоее,етеу -аоукоуо,таоо -аоукоуу,кэеа -аоукдад,таеа -аоукдбэ,дуэт -аоукдээ,каэу -аоукеав,еэеб -аоукетв,еэтк -аоуктад,еуао -аоукуаб,уэат -аоукубв,тадд -аоукуеа,тааб -аоуккбу,удбт -аоуккод,татк -аоуккеа,етэт -аоукккэ,еобу -аоукэбо,уууэ -аоукэво,ттээ -аоукэое,тбкк -аоукэтд,баакб -аоукэук,тудэ -аоуэабб,уеэт -аоуэауб,етбу -аоуэаэт,еутд -аоуэбаа,ектт -аоуэбав,еэеа -аоуэбвт,уэээ -аоуэбоэ,еэтб -аоуэбде,екау -аоуэбеэ,тквб -аоуэбуу,тэко -аоуэваб,уктт -аоуэвбв,екве -аоуэвбе,еэдо -аоуэвдв,туву -аоуэоаа,еуэу -аоуэобк,уэаб -аоуэобэ,еэбе -аоуэовб,уееэ -аоуэовэ,еуэв -аоуэооб,таэе -аоуэото,еуоу -аоуэдэв,еувэ -аоуэдэк,тэкд -аоуэебэ,еэбу -аоуэета,еээо -аоуэтав,таоэ -аоуэтдо,еэдв -аоуэтут,екео -аоуэткт,еэуд -аоуэтэе,укто -аоуэтэт,екку -аоуэуоа,еуеэ -аоуэуоэ,еэоа -аоуэуту,эвеэ -аоуэуэб,тавб -аоуэкак,екое -аоуэква,уээе -аоуээдо,екоб -аоуээдт,укдв -аоуээев,еэвб -аоуээка,етду -аоуээкв,еэет -аоуээко,кабк -аокааау,екэд -аокааео,еуде -аокаббд,етда -аокабда,ууак -аокабтк,уутб -аокабуа,бвдтекэукв -аокавбк,еубе -аокавок,етбв -аокавдв,уука -аокавке,бвдтеккэво -аокаоду,таае -аокадоо,кквб -аокадеу,тдое -аокаеае,кбвк -аокбевб,оэээ -аокбевд,едае -аоктеок,утэт -аокттад,екте -аокттау,едбэ -аокттое,тоук -аокттуа,етээ -аоктуак,кбув -аоктуба,тебт -аоктуве,еэту -аоктуэв,екоа -аокткдв,еэоэ -аокткте,таев -аокуабд,укуб -аокуабэ,еэкк -аокуадв,када -аокуаев,еуео -аокуаэб,кекк -аокуаэв,еэео -аокубео,табк -аокубэд,тктд -аокувдд,еэаб -аокувев,еуов -аокуоат,таоб -аокуоэк,тодэ -аокудво,етту -аокудэв,кебо -аокудэе,увод -аокуекв,тдее -аокуеко,ткбе -аокууек,бабдб -аокууэб,теоб -аокуктэ,бвдтекэтву -аокукуо,еэтэ -аокуэае,кэбу -аоккату,еэев -аоккаув,еээв -аоккбау,тккэ -аоккбоэ,таое -аокквбо,еута -аокквэб,еубд -аоккоао,утвв -аоккобо,баобб -аоккдта,еэак -аоккдуо,баэээ -аоккдээ,едод -аоккета,утбв -аокктбд,екуэ -аокктэа,еуоб -аоккууб,тоеу -аоккуэа,еуад -аоккков,теда -аоккэаэ,ууэа -аокэаэт,теаа -аокэбет,теке -аокэбек,екбб -аокэбеэ,тток -аокэбкв,тобт -аокэвва,тубе -аокэвво,еэвк -аокэобб,еуэк -аокэдво,тебе -аокэдет,уэао -аокэубк,эеее -аокэууа,ткоо -аокэууу,уауе -аокэкдб,каэа -аокэкта,ттвб -аокээао,ууов -аокээуэ,еуеа -аоэааак,уедк -аоэааэб,екдв -аоэааэд,едат -аоэавоб,бвдтекэтвт -аоэавое,тдка -аоэавко,уевв -аоэаооо,тату -аоэаото,ктду -аоэадоа,ткэт -аоэадоб,ткэу -аоэаеао,таоу -аоэаедд,етэу -аоэаеев,таао -аоэаето,тэуэ -аоэатак,еэбк -аоэатбв,убдб -аоэауву,екав -аоэакад,едвб -аоэакбб,теба -аоэакда,еэуо -аоэактт,убот -аоэакко,тдтк -аоэаэод,еутб -аоэбабе,еэку -аоэбадв,уээа -аоэбата,таод -аоэббеа,табб -аоэббуа,куав -аоэббук,таву -аоэббку,тову -аоэббэд,тббу -аоэбвуо,екуд -аоэботэ,тдвк -аоэбокв,тдто -аоэбоэд,едев -аоэбубб,етуе -аоэбубэ,укед -аоэбудт,бвдтекэеок -аоэбкуе,еуоа -аоэвавк,еттд -аоэвакт,утбт -аоэввае,еквб -аоэввбо,екка -аоэвввв,еудв -аоэввву,ктет -аоэввдэ,еуот -аоэввтк,еууу -аоэвове,еуав -аоэвооу,еткт -аоэвеоо,татв -аоэвутв,еткд -аоэоадэ,уукб -аоэоаее,еука -аоэобаа,туво -аоэобеб,эедэ -аоэобтв,етко -аоэовво,удуу -аоэовтд,укту -аоэообв,туед -аоэооод,тоеэ -аоэоодо,еткб -аоэодод,туае -аоэоеэа,етеб -аоэотво,уутк -аоэотву,еэао -аоэотка,ууее -аоэоуао,екбт -аоэоует,еукк -аоэокод,еэуе -аоэокоэ,кааа -аоэоэвк,етув -аоэоэоа,эадэ -аоэоэкт,етдэ -аоэдаук,таеб -аоэдбаа,бвдтекэтте -аоэдббд,тобб -аоэдббт,бвдтекэкдк -аоэдбкб,екеу -аоэдвое,тоад -аоэдвдт,таеэ -аоэдвдэ,уаэу -аоэдвее,ектэ -аоэддаа,ткеу -аоэддад,кабэ -аоэддед,укво -аоэддуд,баээк -аоэдеоу,таов -аоэдеда,увдв -аоэдтау,твэе -аоэдуае,бвдтекэеуу -аоэдуод,еттт -аоэдуэб,еуда -аоэдкаб,тева -аоэдквб,тобд -аоэеаве,квве -аоэеавк,уаэа -аоэеаот,убдэ -аоэеаде,тоуа -аоэеаду,тдэу -аоэебкб,тота -аоэебкд,уеет -аоэедек,бадок -аоэедук,тоеб -аоэедэв,эбат -аоэедэе,тутт -аоэеуеу,ттвд -аоэекво,ттеб -аоэеэау,етбд -аоэеэба,уукэ -аоэеэта,тдук -аоэтауа,тоуу -аоэтаэе,еуве -аоэтбва,теуд -аоэтбуе,бвдтекэеаэ -аоэтваа,теое -аоэтвбе,уттб -аоэтвка,тедт -аоэтодт,тдаэ -аоэтдэб,ттте -аоэтеаэ,утто -аоэтееэ,теээ -аоэттае,тедк -аоэттде,кбэд -аоэттеу,ттдо -аоэтттд,теку -аоэттуд,тодо -аоэттку,туба -аоэтуае,теоэ -аоэтубе,кебе -аоэтукд,тоба -аоэтуэо,ттбэ -аоэткае,екба -аоэткев,уедо -аоэткед,етва -аоэткуе,тоээ -аоэткут,тдаб -аоэткке,квбк -аоэткэо,ттао -аоэткэт,тдду -аоэтэак,тдкб -аоэуаат,уоэк -аоэуавт,тебу -аоэуаэе,ттеэ -аоэувбв,коеу -аоэувбо,ткву -аоэувеб,тоот -аоэувев,ткбу -аоэувтб,ттде -аоэувкв,тете -аоэувкк,тткв -аоэуоао,теко -аоэуобк,теэа -аоэуоду,ттау -аоэуоет,еувб -аоэутов,уеуэ -аоэутеу,ттбу -аоэутук,тдбт -аоэутка,тдэо -аоэууоэ,тддб -аоэукве,тедд -аоэукдв,тдэв -аоэукту,ттеу -аоэукуд,тетб -аоэукэб,уабв -аоэуэаа,ууеэ -аоэуэбо,тдкт -аоэуэдо,утве -аоэуэет,тууа -аоэуэке,тоат -аоэкбдд,теов -аоэквду,тккк -аоэквэб,теео -аоэквэв,тбет -аоэковт,тэак -аоэковк,тэбе -аоэкооэ,тэдв -аоэкото,удук -аоэкоте,тоэд -аоэкоуб,тоэу -аоэкоув,тдед -аоэкокв,тееу -аоэкоэд,тека -аоэкоэе,ттак -аоэкдбо,теаэ -аоэкдоэ,теед -аоэкдтк,тдеа -аоэкеаб,уедт -аоэктдо,етов -аоэктет,тдвв -аоэктук,теак -аоэкутд,тдэт -аоэкуту,теев -аоээадд,каод -аоээаку,еэбэ -аоээаэа,тдав -аоээбтд,еков -аоээооо,такт -аоээооу,такб -аоээодб,тоаэ -аоээоуу,теот -аоээоэе,тэтк -аоээдэа,тдуе -аоээевб,ккоу -аоээевэ,баэба -аоээеод,теав -аоээедэ,катв -аоээтаэ,утад -аоээтод,тдеу -аоээкдк,тоек -аоээкек,тоау -аоэээоу,убвт -аоэээдд,утбк -адааавк,теуэ -адаааеэ,тбдэ -адааатэ,тбкб -адааеаб,теаб -адааеаэ,текд -адааетб,тдбо -адааеке,тодт -адаатбе,ткуе -адаатбт,токд -адаатбк,уакт -адаатвв,тове -адаатоа,туак -адаатдэ,ттод -адааттд,ттек -адаатуе,ттдв -адааткэ,баотт -адаакбэ,уоуб -адаактд,эоде -адаакуо,убве -адаетое,утоб -адаетеб,кббд -адаетео,токв -адаетеу,ттат -адаэтко,тедв -адаэткд,тедо -адаэтку,тоту -адаэтэу,теув -адаэуау,бвдтекэкву -адаэуаэ,тебв -адаэуэе,кбут -адаэквб,тува -адаэкте,куве -адаэкэе,уаее -адбааэт,тдтб -адбабэу,теэв -адбавот,тбкв -адбавок,каву -адбавдв,теде -адбавуа,убат -адбавэв,тдэб -адбаоак,тобэ -адбаооу,тевд -адбаоед,укэу -адбаоээ,тдта -адбадак,ттва -адбадво,бвдтекктке -адбадоэ,ткук -адбаддд,теет -адбадде,тдеэ -адбадкт,укве -адбаеуд,удод -адбатбо,уато -адбатек,удбу -адбаттт,тоуо -адбаттк,теек -адбауае,тоет -адбаубу,эаеэ -адбаубк,эуоэ -адбакву,тдев -адбаэбб,тодб -адбаэта,уотэ -адбаэтд,уков -адбаэкд,товд -адбаээд,экбб -адбаээк,ккут -адббауб,теэу -адбббб,тоеа -адббббк,тдтт -адбббое,эувк -адбббкд,тоак -адбббку,ттэб -адббват,ттав -адббвев,тооу -адббвка,убдо -адббото,укув -адбботе,тэтт -адббдва,кетд -адббдув,ткээ -адббеот,ттвэ -адббедв,кббэ -адббеэо,увээ -адббтоа,тдуа -адббтот,тбкт -адббтдэ,тебд -адббтте,тдоу -адббттт,туэд -адббткд,ттбт -адббувб,тевв -адбвбте,бвдтекктду -адбвбкд,тубо -адбввэу,ттту -адбвуед,ттэу -адбоуда,тдкк -адбоудт,ткку -адбоуто,тдео -адбоууэ,уктэ -адбоуэк,удто -адбокэа,кббу -адбокэе,утао -адбоэву,ттаб -адбоэдд,тдот -адбоэеа,удуа -адбдаат,квко -адбеавэ,теэт -адбебео,тэдд -адбебеу,ткуэ -адбевба,тбуд -адбеооб,ткеа -адбеодт,теод -адбедбт,ттет -адбедоу,ттвт -адбедто,тдвт -адбеееб,кбда -адбееет,тооэ -адбетае,тдет -адбетбк,тдуб -адбеута,удоб -адбекво,тэот -адбекдв,увеб -адбекет,эбэк -адбекта,тоэо -адбектб,бвдтекэтку -адбекте,тэте -адбекку,тддв -адбекэт,тдак -адбеэду,ттбв -адбеэее,ттув -адбеэуб,твуа -адбеэуд,тоэб -адбеээб,токэ -адбеээу,теэе -адбтаае,увдк -адбтабб,удвд -адбтабо,тобу -адбтабд,тттк -адбтаку,ттвк -адбтбба,ткут -адбтбек,убдк -адбтбкд,тект -адбтбэк,тевэ -адбтвав,эуоу -адбтвао,утта -адбтвбв,катк -адбтвко,ттуэ -адбтооб,тэеб -адбтоов,тэед -адбтоду,эбуа -адбтоед,тоэа -адбтдба,туау -адбтдбб,ттуб -адбтдбо,кдто -адбтдбу,кдтв -адбтдуа,бакэб -адбтдко,тдвд -адбтдкк,ттвв -адбтдэт,кбба -адбтдэу,тэвт -адбтеау,тдэк -адбтеаэ,ууек -адбтеба,кбте -адбтеку,тебэ -адбттб,тово -адбттве,тква -адбттву,уаэт -адбттек,тддо -адбттте,квот -адбттэд,утат -адбтуот,тэат -адбтука,увэе -адбтуку,убае -адбтуэт,уоав -адбткак,уаку -адбткбв,увто -адбтэдд,кттв -адбтэдт,тэту -адбуааэ,тдбб -адбубте,теду -адбубко,утоо -адбувок,тооб -адбуовт,ткеэ -адбуоок,кбвб -адбуоэу,ттво -адбудад,ттку -адбудат,квов -адбудбэ,кбве -адбудод,тоут -адбудое,ттэе -адбудто,увве -адбуевк,уоте -адбуевэ,тэде -адбуеоо,ккбе -адбутбд,тээб -адбутвк,тков -адбутоа,ууке -адбутоу,уууо -адбутеу,уокд -адбутек,ктдт -адбутеэ,укеб -адбуубт,тктк -адбууте,ткэд -адбуука,квте -адбуукв,кеее -адбууэт,тккт -адбукбк,теао -адбуквт,тэвк -адбукеа,уаэо -адбуктв,убвэ -адбуктт,уоуо -адбукту,уеат -адбуктэ,тээк -адбуээу,увед -адбкабв,тдут -адбкаво,увту -адбкаов,тэво -адбкаод,увкт -адбкаоу,теад -адбкаеа,тоэт -адбкбво,тдуэ -адбкбву,удак -адбкбкд,убак -адбквао,тоэе -адбквбк,тдоо -адбквбэ,утуу -адбквев,тэуа -адбкоак,тккв -адбкоеэ,увое -адбкдат,ттэд -адбкедо,уоук -адбкедэ,тэтв -адбкеев,увте -адбкекк,увдд -адбктод,ббаео -адбкттк,ктеу -адбкуоб,тевт -адбкууо,уаэб -адбкукк,ттэа -адбкукэ,уткд -адбккав,тэоу -адбкктд,тоуэ -адбккке,ээад -адбкэбе,удув -адбкэка,тктэ -адбэаве,удтт -адбэадв,укуу -адбэаув,убдд -адбэакт,убод -адбэаэк,тдве -адбэбад,убеб -адбэввб,тват -адбэвот,увэу -адбэвто,уоуэ -адбэовд,бвдтеэаобт -адбэооа,тдао -адбэоув,кекв -адбэдвт,эатв -адбэдкэ,твуо -адбэдэа,ууэт -адбэевк,твку -адбэеэу,квуб -адбэеэк,баобв -адбэеээ,бвдтекэуту -адбэтоо,уатб -адбэткд,уадт -адбэубд,ттут -адбэуое,кедб -адбэкау,уввк -адбэкуб,уатд -адбэкуе,убвк -адбэкэб,уатт -адвааад,уаеа -адвааат,ткуб -адваабб,уввб -адваабд,увво -адвааод,удэб -адваадо,увоу -адвааеа,тэвв -адвааеб,убво -адвааэб,товт -адвабоо,ттто -адвабое,тету -адвабтк,тэка -адвабэу,удеу -адвавад,бвдтекккбу -адвавед,эете -адваоак,квет -адваодо,ууаа -адваоеэ,уеуа -адваоуб,увбт -адваоут,ткуд -адваоэд,удао -адвадаб,твэв -адвадвб,увут -адвадве,уебб -адвадвт,уебв -адвадоа,увэо -адваддб,уакд -адвадто,тэвэ -адвадуб,уббб -адвадку,тэао -адваеуб,увуо -адваекб,увка -адватат,тэбэ -адватвб,увкк -адватву,увэб -адватэе,эеуа -адваувб,бабеу -адвауоо,тэее -адвауде,тэет -адвауэа,тктб -адвауэк,убду -адвакаб,эеут -адваквв,уаэв -адваквд,тэбд -адвакэв,увуэ -адвакэт,утвд -адваэав,кеек -адваэбэ,ткэо -адваэед,убау -адваэеу,увет -адваэтт,увбо -адваэту,увбе -адваэув,эате -адваэуе,ткке -адваэкт,уаув -адваэку,уоэа -адвбаав,кдэе -адвбаат,тэба -адвбабо,кввэ -адвбабе,увуа -адвбавт,убав -адвбаоо,уоуд -адвбакв,твэб -адвбвао,увкэ -адвбвбд,кввк -адвбвот,квут -адвбоое,твба -адвбоуб,твэа -адвбдау,удуе -адвбдво,экае -адвбдтт,уаэе -адвбдуэ,уудо -адвбдэб,тэек -адвбеае,удев -адвбедо,эето -адвбедд,уббэ -адвбеэе,ббаое -адвбтак,кутб -адвбтба,тоев -адвбтбт,уддб -адвбтва,кете -адвбтед,ткэк -адвбтуо,уеаэ -адвбтук,тккд -адвбубт,тэбв -адвбуев,ткэб -адвбукк,ууде -адвбкаа,убаб -адвбкбе,увев -адвбкоу,ууаб -адвбкеэ,удвэ -адвбктб,тэоо -адвбктд,увео -адвбкуо,убвб -адвбкэо,эбае -адвбэбо,ткао -адвбэдт,уутв -адвбэду,туаа -адвбэед,квек -адвбэуэ,увку -адвбэкб,убба -адвбэкв,квэк -адвбээе,бакеэ -адввбоа,увее -адввбов,ууео -адввбоо,уааа -адввбдт,эквт -адввбув,кова -адввбэб,уакк -адвввао,уаео -адввваэ,бакба -адвввоу,тэав -адвввта,тэтд -адвввуб,бвдтекэткт -адвввув,увда -адввобд,уудв -адввоет,каад -адввоте,увек -адввотт,тэкк -адввоуе,уоко -адввоэт,ткаэ -адввдбэ,удок -адввдтт,кеев -адввдут,квтб -адввеба,эвое -адввебу,уаек -адвведк,укбо -адввтда,эееу -адввтэд,убву -адввуву,тэок -адввука,каео -адввкво,тэва -адввкве,уаеб -адввкдд,удвв -адввкте,кева -адввккв,квуе -адввэву,куоа -адвуоов,увву -адвуккт,бвдтекктэо -адвукэв,уоээ -адвэубв,тэоа -адвэубк,увкв -адвэудв,увбэ -адвэуеу,тэдт -адвэкве,уэке -адвэкод,куту -адвэкее,уебд -адвээеа,тэбу -адвээкв,ууээ -адвэээб,уебу -адвэээв,баеве -адоаавэ,тэоб -адоаадк,бвдтекккуб -адоааку,экуб -адоабов,убоу -адоабоу,квкк -адоабтэ,увоо -адоавае,тэвб -адоавау,бвдтекккуэ -адоавок,кеау -адоавдо,тэое -адоавеу,уоув -адоаоаа,ктдо -адоаову,эатб -адоаотв,удаб -адоаото,тэтб -адоаотд,бвдтекккэд -адоаоут,увдт -адоадау,уата -адоадбд,каек -адоадбк,удоо -адоадеу,удау -адоадуэ,увеа -адоаеут,уатк -адоатбу,ткат -адоатвд,ткак -адоатву,уако -адоатвэ,убоб -адоаткк,уату -адоауоа,уубт -адоауек,бакбд -адоаууу,кедд -адоакву,убад -адоакое,уака -адоакоу,уауу -адоакде,уоат -адоактв,удео -адоаэау,кеуа -адоаэтд,ктде -адоаэте,квту -адоаээо,ткко -адоаээк,тэод -адобаат,уаед -адобатк,увбу -адоббат,увке -адоббуд,кеаэ -адоббуе,уауд -адоббут,кеао -адобввт,уеба -адобвоу,уокт -адобоав,квта -адобоуэ,тэда -адобдаа,кекб -адобдбк,эатд -адобддб,баадд -адобдуа,уаук -адобебт,кеаа -адобебу,увтэ -адобедв,бабтб -адобетэ,уодо -адобеэт,удбд -адобтао,удед -адобтеэ,ууэд -адобттэ,тэто -адобуав,убоа -адобувт,ткка -адобуед,увтд -адобутд,уаеэ -адобукт,удат -адобукэ,удоу -адобуэе,тэаэ -адобкда,убов -адобкду,увэв -адобэку,кект -адоваоэ,квоэ -адовадэ,кеут -адовауу,ктка -адоввук,тээо -адоввке,уббд -адовоае,кебд -адовоед,эбеэ -адовоув,уввт -адовдав,коов -адовддо,удеа -адовдеа,уадэ -адовдтк,увва -адовдэк,кууб -адовеаэ,уддк -адовекб,удбб -адовеко,ткуа -адовтуо,кета -адовувв,бабке -адовуоб,уока -адовуту,уббв -адовууб,бббба -адовкке,тккб -адовкэд,удет -адовэуб,уоае -адовэуо,уоаа -адовэку,ткдо -адооадэ,уауэ -адооввд,кбву -адоодед,укэд -адоодке,уоэб -адоодкэ,уебт -адооеао,увув -адооеет,уаэд -адооетв,уаээ -адооеут,увэк -адооутэ,коеэ -адоокбв,уоэт -адоокбе,экте -адоокуа,удбв -адоокэе,удду -адоокэу,удаа -адооэаа,увдэ -адодбеу,бакбв -адодвеа,увбк -адодддт,бвдтекэтвд -адоекта,уддо -адоекуб,уевб -адоекуу,баедт -адоеккк,увэд -адотбтт,бабтт -адотбку,уаке -адотвот,тэеу -адотоее,ткба -адотоуб,тэдо -адотокб,экао -адотокв,ткуу -адотоко,тэду -адотдво,уаэк -адотдвд,уоад -адотдов,уота -адотдкэ,уодв -адотеаб,уебо -адотеао,увтв -адотеаэ,батбе -адотеов,уоуе -адоттот,кббк -адоттеа,коав -адотттк,тэеа -адотуаб,уввд -адотувб,кткб -адотуоо,удав -адотуоу,увуу -адотуду,уоуу -адотуте,уеду -адотутт,котб -адотутэ,утак -адотууд,убед -адотукэ,тбэе -адотуэб,кудд -адоткаа,увук -адоткбэ,удбо -адоткду,увта -адоткек,ткэа -адотэуа,уткт -адотэкд,удуб -адоуаад,удта -адоуаае,увот -адоуадэ,ктте -адоуатэ,удеб -адоуббб,увоб -адоубвк,эата -адоубду,кеуе -адоувкт,удву -адоуовв,кеок -адоуооб,уотв -адоуокв,кубв -адоуоко,утбе -адоуоэа,ббауо -адоуоэб,уаду -адоудбб,эбуэ -адоудвк,кубэ -адоудэо,квуу -адоудэк,бвдтекэбуб -адоуеав,квбу -адоуеда,уддт -адоуедэ,кдуу -адоуееэ,бвдтекэкбк -адоуету,уоэд -адоутвк,увдб -адоутдо,уввэ -адоутдд,удве -адоутеб,кееа -адоутта,увуе -адоуттт,бабте -адоутко,этуо -адоутэо,эаев -адоутээ,увоэ -адоуувд,экбт -адоууву,кебв -адоуудк,кевт -адоуууу,уудк -адоууээ,утте -адоукае,кето -адоукак,утут -адоукод,уева -адоукдд,кует -адоуэбб,утба -адоуэок,кеуо -адоуэте,удва -адоуэуе,уоеэ -адоуээе,кебэ -адокатк,уауо -адокауа,уебэ -адокбаэ,уедв -адокбоб,удбк -адокбде,кото -адокбэу,ттэк -адоквау,кеде -адокоат,ктта -адокодд,ктэт -адокоуа,убоо -адокоуо,уббт -адокоэб,утва -адокдбв,удэа -адокдбт,утбо -адокдбэ,уддэ -адокдеб,бабва -адокдед,ткее -адокдэв,уото -адокдэе,ктед -адокеао,удде -адокеае,удбе -адокеау,бвдтеккэдэ -адокеэб,кубт -адоктвб,кеба -адоктвв,ккао -адоктев,кдээ -адоктта,ковт -адоктэв,уоке -адокубд,удвк -адокубе,ууве -адокувт,квэа -адокуоа,утвт -адокуоб,увкд -адокуэа,квкэ -адоккаб,тэов -адоккау,удба -адоккут,убва -адоккук,утае -адоккэт,уекб -адокэаа,удае -адокэад,удаэ -адокэба,эбэд -адокэбб,бвдтекэобд -адокэод,квеа -адоэаев,куев -адоэббд,эоао -адоэбве,утво -адоэбвт,уотд -адоэбтд,квоа -адоэбте,какб -адоэбтт,квдк -адоэбке,уддд -адоэбэо,кеуб -адоэвбд,уеау -адоэввб,удеэ -адоэвоу,квдэ -адоэвок,квэв -адоэвео,эуое -адоэвед,удоэ -адоэвта,куоэ -адоэвув,кууа -адоэвэк,уеээ -адоэоэк,ковв -адоэдоб,уааб -адоэдое,кеат -адоэдуб,баатэ -адоэебв,утбэ -адоэеод,бабдт -адоэедэ,утав -адоэеэв,кеот -адоэтак,кеав -адоэтбе,кудо -адоэтте,кевк -адоэтуб,удек -адоэтэв,кевд -адоэуаб,уодд -адоэуав,кобд -адоэувт,куба -адоэует,утке -адоэууд,удбэ -адоэкаб,уоео -адоэкто,кеаб -адоэктк,квдо -адоэкуо,квдв -адоэкут,бвдтекэбдо -адоэккб,кутэ -адоээав,кеоо -адоээао,кдэа -адоээвб,куэе -адоээоо,квкб -адоээот,кттэ -адоээдб,ккау -адоээдв,ктэб -адоээде,кууэ -адоээее,кеуу -адоээуэ,ктко -адоээка,кутк -адоээкк,кедв -адоээкэ,баеде -аддааак,квэб -аддаабв,коод -аддаава,кеве -аддааеэ,кдкт -аддабав,кдэв -аддабаэ,ктуа -аддаббк,уаав -аддабдв,утку -аддабео,ктут -аддабуд,куво -аддабуе,кдук -аддабкд,квке -аддавак,эвэо -аддавбк,утаб -аддавту,ууту -аддавэб,кабт -аддавэт,ббааэ -аддаобо,квэт -аддаобу,утет -аддаобэ,ууду -аддаотт,кбоа -аддаоээ,утда -аддадао,коат -аддадот,бвдтеккоое -аддадоэ,эбкэ -аддадтв,эеуо -аддадку,утбу -аддадкэ,квуд -аддадэо,уувд -аддадэд,уубу -аддадэк,уубк -аддаеот,коао -аддаеоу,бвдтекккув -аддаееу,куео -аддаето,квуо -аддаетт,эобк -аддаеут,ктдэ -аддатау,эуэд -аддатбб,кеоб -аддатбе,коаэ -аддатбк,кеуд -аддатод,кове -аддатдт,кдэт -аддаттд,кткт -аддаттк,кдуд -аддатэб,квээ -аддатэе,бвдтекккеу -аддауад,квтд -аддауак,ктув -аддаубб,ктов -аддаубэ,квеу -аддаувт,эдод -аддауоу,квуэ -аддаудв,кобу -аддауто,утка -аддауэд,кебк -аддакеу,кббв -аддаэво,ууво -аддаэоб,ккво -аддаэов,ккбу -аддаэоу,эбтк -аддаэоэ,кдкд -аддаэкт,кукд -аддаээа,кеув -аддбаае,ктээ -аддбавт,ково -аддбаов,куэа -аддбатэ,утэб -аддбауа,уубд -аддбауб,уэок -аддбаэд,кдка -аддбббэ,коад -аддббва,баэек -аддббдв,кдке -аддббеб,кткк -аддббек,квэо -аддббто,эадд -аддббте,кубо -аддбввб,бвдтекэквв -аддбвод,ктеб -аддбвео,ктэо -аддбобт,укэв -аддбовт,квдд -аддбову,бвдтеккэуэ -аддбоот,квуа -аддбото,куаб -аддбоут,ктев -аддбокв,укэб -аддбокк,кббб -аддбдод,укдк -аддбдое,батбу -аддбдоу,укав -аддбдда,ктдв -аддбедд,кбку -аддбеуэ,кедк -аддбека,квее -аддбтвэ,куду -аддбтдв,эуоо -аддбтдэ,куок -аддбтэа,квоу -аддбтэе,ковб -аддбуэв,кттд -аддбуэт,бабде -аддбуэк,кеоэ -аддбква,ктку -аддбков,квэд -аддбкуу,кобэ -аддбэае,кдкв -аддваев,ктеа -аддваув,кееэ -аддвбаб,эуэе -аддвбвт,кеод -аддвбву,кеое -аддвбке,куат -аддвваэ,ббабо -аддвова,кэда -аддвдоб,квэу -аддвдоэ,куау -аддвддк,куэу -аддвдео,ккаб -аддвдее,ковд -аддвдта,кевв -аддвдув,уэтэ -аддвебб,куек -аддвевб,кукб -аддвеве,коае -аддвевэ,ккбв -аддвеое,кооа -аддвеео,кебб -аддвекд,кквв -аддвеэо,ктоб -аддвтве,бвдтекэдуд -аддвтоэ,кево -аддвтда,экаа -аддвтдб,квто -аддвтдд,ктек -аддвтэт,коак -аддвуоо,ктвк -аддвуот,кдэк -аддвутк,ккву -аддвууб,эдэа -аддвукт,кток -аддвкао,ктее -аддвкба,кеоа -аддвкбб,ктту -аддвкбт,кеду -аддвкок,кдкк -аддвкео,квдб -аддвкед,кдэб -аддвкее,кееб -аддвкек,какв -аддвктб,какд -аддвкуа,куоб -аддвкук,кебт -аддвэаа,куэт -аддвэбт,куоу -аддвэбк,кукэ -аддвэвк,кббт -аддвэев,кевб -аддвэед,квтк -аддвэтб,кетк -адддобв,эттв -адеакау,кобб -адеакое,уэут -адеакке,ккое -адеакэе,кеак -адеаэад,квкв -адеаэаэ,кткэ -адеаэба,эоае -адеаэео,ктто -адеаээв,ккаа -адеаэээ,эддо -адебабе,квду -адебабк,ккве -адебаеа,куэд -адеббдт,кдко -адеббев,како -адеббуа,кубд -адебвбб,кткд -адебвов,эдвт -адебвек,эаув -адебвтд,кедо -адебвуэ,кобв -адебвко,кобе -адебоат,кека -адебово,кттк -адебове,кутт -адебодд,куто -адебоев,ээаа -адебоэу,ктоэ -адебдвэ,бвдтекэбде -адебдеу,квеэ -адебдто,куао -адебдте,кетт -адебдтт,квку -адебдут,бвдтекетуд -адебдкк,кббо -адебевв,куде -адебеоб,эоба -адебедд,коое -адебеед,кеет -адебеэб,кутд -адебтбу,эвет -адебтвв,кбее -адебтвк,ккак -адебтеу,кооб -адебтуу,бвдтеккэкк -адебткт,куоо -адебубу,эбде -адебувт,квкт -адебуду,кедэ -адебуэк,кдкэ -адебкау,эаэа -адебкаэ,кобк -адебкву,ктке -адебкок,ковэ -адебкев,ктда -адебкук,баевт -адебкэа,кееу -адебэав,кабу -адебэвт,кбеу -адебэок,ккуу -адебэдб,ктвэ -адебэед,кабо -адебэет,кббе -адебэут,кбеэ -адевабк,кттт -адевавд,куаа -адеваек,квод -адевауб,кеке -адевбкв,кооо -адевбэв,кеку -адеввбо,кууо -адеввво,ктэу -адеввде,квое -адеввтв,ктуо -адеввтт,кукк -адеввуе,квде -адеввку,квтв -адевобв,кудв -адеводв,кдэу -адевотт,куае -адевддб,эбео -адевдэб,кувк -адевеов,квтт -адевтто,кбво -адевтэа,квок -адевувэ,кбта -адевуоа,каое -адевудд,квед -адевутт,эввд -адевууа,кэвд -адевкот,ктдк -адевкдэ,ктэд -адевэак,ктуб -адевэаэ,кткв -адевэдв,квда -адевэдт,ктук -адевэкк,куув -адеоаде,коба -адеоаек,кетб -адеобад,каке -адеовад,эдае -адеоввв,кууд -адеовов,куад -адеовоу,кдкб -адеоотэ,эввб -адеооуб,куед -адеооуу,квдт -адеоокб,кеае -адеодеу,кбуэ -адеодта,куук -адеоебт,куеэ -адеоедб,кбак -адеоедо,ктоу -адеотбе,эуок -адеотеа,кота -адеотеб,эдот -адеоувэ,эеду -адеокоу,ктэе -адеокэо,ккав -адеоэте,кеда -адедаад,кеед -адедаба,куеу -адедавк,куда -адедаеа,кэву -адедбао,квеб -адедбое,кэбт -адедвве,бауба -адедвте,квоо -адедвкт,ктоо -адедвкк,эдеу -адедвэв,кеуэ -адедооу,кудб -адедоок,кувв -адедооэ,кувт -адедодд,кдэо -адедоду,куут -адедоет,кету -адедотд,коек -адедоту,кква -адедоуд,баэае -адедоуе,кеов -адедоэв,каут -адеддбд,ктаа -адеддвк,кетэ -адедддб,эдее -адедддэ,ктдд -адеддув,эбек -адеддуу,эодб -адеддэк,куее -адедебк,эвтб -адедевв,кекэ -адедед,утэо -адедедт,эдуе -адедееэ,эотт -адедеко,кувэ -адедеэб,бвдтеккоод -адедубо,кдку -адедубт,куот -адедубу,куое -адедкте,куэв -адедэак,кдуа -адедэбо,бабда -адедэбк,кккв -адедэвб,кудэ -адедэео,куву -адедэуэ,ктэа -адееабу,бакээ -адееаоб,эдеб -адееадв,эдбк -адееадт,ктод -адееадк,ккуэ -адееатб,кеэт -адееуко,ктот -адетдвб,бауаэ -адетков,ккбб -адеуабв,ктоа -адеуадэ,кува -адеувке,бвдтекэтбд -адекооа,эвко -адекоот,эдаб -адекдба,эдкб -адекдбв,эбтэ -адекдво,эоео -адекдоо,эеев -адекдод,куеб -адекдое,куэк -адекдеу,куеа -адекдуу,куаэ -адекевк,ктуд -адекеоа,кевэ -адекедб,бадве -адекееу,эодэ -адекето,эбкв -адекекв,кууу -адектбд,эоув -адектот,ктдб -адектев,эбээ -адектув,эваа -адекубб,эдбб -адекубэ,ккбк -адекува,кукв -адекуот,куод -адекуоу,кдут -адекует,ккбт -адекукк,эвоэ -адеккав,эовб -адеккое,этэу -адеккоу,кдуе -адекктв,эоеа -адекэат,котв -адекэбу,ккук -адекэва,бвдтекквок -адекэдэ,ккуа -адекэеа,кэад -адекэку,ккоэ -адеэаоб,эбто -адеэбеб,эеае -адеэбео,эвбв -адеэвад,куов -адеэвбд,кууе -адеэвоэ,кодд -адеэвда,ккдб -адеэвеа,эдду -адеэвэк,эдэу -адеэоаа,ктео -адеэоао,эдбэ -адеэдат,кэое -адеэдоб,эбоэ -адеэдтк,эбка -адеэдэд,эдео -адеэебе,квбэ -адеэееб,бвдтеккове -адеэеэу,эота -адеэтдт,эдке -адеэтду,бакаэ -адеэтек,квбв -адеэуаб,эдоу -адеэуду,эбут -адеэуеа,бвдтекэеав -адеэуеб,эбда -адеэууе,ккод -адеэууу,кэоб -адеэуэд,эуат -адеэков,этэо -адеэктб,ббвто -адеэкту,эвте -адеэккк,куку -адеээве,эвэб -адеээвк,куте -адеээоо,эвву -адеээдо,ктеэ -адеээее,эбко -адеээку,уеву -адтаабо,бадво -адтаабе,баоуб -адтааеб,эооб -адтаатд,куээ -адтабда,коту -адтабдв,кувб -адтабдо,ккку -адтабдк,эове -адтабео,эдуб -адтабтб,ккок -адтабту,баэат -адтабэт,бвдтекккее -адтавдв,кквд -адтавук,кубб -адтавко,кквт -адтавкт,эаке -адтавкк,эотк -адтавкэ,ккбд -адтаоао,эваб -адтаоад,эваэ -адтадаэ,эаоэ -адтадбв,кеву -адтадбт,кдтт -адтадвв,кудк -адтадвэ,эбдэ -адтадов,коок -адтадот,эбтд -адтадкт,эетэ -адтаебб,эвев -адтаевт,эвек -адтаеов,кэаэ -адтаеот,эвкт -адтаеду,эоак -адтаете,экау -адтаеэб,ккот -адтаеэу,эоау -адтатбв,эоке -адтатбо,кеэу -адтатва,эаеу -адтатвб,бвдтекэтдк -адтатде,эдва -адтатев,кэаб -адтаттв,эдед -адтатуа,кута -адтаубк,эбдд -адтауве,эуаа -адтауда,эдтэ -адтаудд,эддк -адтауеэ,эбтв -адтаутк,эвуо -адтаууо,эобв -адтауут,эбуо -адтауук,эооо -адтауко,эоок -адтакбэ,эотб -адтакта,эвук -адтакуе,эвду -адтакуу,кодт -адтакко,батбт -адтакэб,ккба -адтаэае,эдак -адтаэбб,эввк -адтаэбо,бакбо -адтаэоэ,эвоо -адтбаба,эдет -адтбауу,бвдтеккуэк -адтббот,бвдтекэкак -адтббдд,этэв -адтббет,эоед -адтббек,бвдтеккдет -адтббто,эдэд -адтббко,эобе -адтбвба,эбкб -адтбввв,кэоа -адтбвоо,ккоб -адтбвта,эвот -адтбвтт,кэаа -адтбвту,ккэк -адтбвтк,ктву -адтбвув,эвкв -адтбвуэ,кодк -адтбоат,эвба -адтбодд,эбтб -адтбоэд,баовэ -адтбдве,бвдтекковб -адтбевэ,эотэ -адтбедэ,кэту -адтбета,эодв -адтбтак,эдев -адтбтвт,эвуб -адтбтов,эвдд -адтбтод,эоад -адтбтеа,баото -адтбтэб,бавук -адтбуек,баэбт -адтбуто,эоэо -адтбкод,эдвэ -адтбкдв,баэоо -адтбкдк,баову -адтбкеа,баввк -адтбкэд,бадуб -адтбкэе,этэк -адтбэак,кэбд -адтбэвб,эубе -адтбэоа,эввт -адтбэдт,кэво -адтбэдэ,кккд -адтбэее,эбэо -адтбэуд,эвту -адтбэут,эбеб -адтбэко,эобэ -адтбэке,эвда -адтбээе,эдуд -адтбээт,бакбб -адтбэээ,эдуо -адтвааа,бвдтектвдк -адтваба,ккде -адтвабб,экэо -адтвавв,эоэе -адтваде,эбэв -адтваев,эвеу -адтваео,эдку -адтваук,кэтб -адтвауэ,бавко -адтвакд,эбет -адтваэд,эткэ -адтваээ,баобэ -адтвбаа,баобк -адтвбау,эбкт -адтвбаэ,эбдк -адтвббу,ккеэ -адтвбво,эвоб -адтвбве,эоее -адтвбвт,эвбо -адтвбот,этэа -адтвбоу,эдау -адтвбеб,эбдо -адтвбте,эоуд -адтввве,эокд -адтввдд,кэдо -адтвоов,эвад -адтвоот,эбкк -адтвоок,эбее -адтвооэ,эоуу -адтвоув,баута -адтвоук,эдув -адтвокд,эдтд -адтвоэд,бвдтекэквд -адтвоэк,эобд -адтвдао,баоту -адтвдат,эоэт -адтвдод,эдеэ -адтвддт,баввт -адтвдеа,эоуэ -адтвдто,бвдтекэкбэ -адтвдтэ,баотд -адтвеаа,эвуе -адтвееэ,эеад -адтвека,кэок -адтвекв,эуак -адтвеэк,кэод -адтвтаа,кэдд -адтвтаб,эвее -адтвтав,эттт -адтвтак,баукв -адтвтва,бауто -адтвтве,баукэ -адтвтоо,эоет -адтвтео,эеуб -адтвтто,кэот -адтвттт,кэоу -адтвтка,бвдтеэадоэ -адтвтке,кэдт -адтвуаа,эдте -адтвубэ,эбдт -адтвудо,эоеэ -адтвутэ,эдаа -адтвууа,эвва -адтвуко,эуаб -адтвуэо,эокэ -адтвкад,эоод -адтвкае,эатэ -адтвкбв,баддк -адтвквт,эвво -адтвкев,эвтк -адтвкув,экуа -адтвкуэ,эвбд -адтвэду,эово -адтвэео,эвдк -адтвэед,эдад -адтвэкт,кэтв -адтвэкэ,эоту -адтвээа,эвэк -адтоабб,эбеа -адтобаэ,эбте -адтобоу,эткк -адтобту,эбуе -адтобуд,эову -адтобуе,эбуу -адтобкв,эбук -адтовва,эбкд -адтовут,эоеу -адтообо,эотд -адтообд,эоте -адтообу,эвав -адтооок,эоуе -адтоодб,эоут -адтооду,эетв -адтоотв,эокв -адтооэо,эвео -адтоево,этуе -адтокбе,эдба -адтокка,эдкэ -адтоккд,эаку -адтоэбв,бадвэ -адтоэбе,эдкт -адтоэвэ,эубо -адтоэод,эода -адтоэдв,эткд -адтдаео,бвдтеэаоок -адтдаэб,эооэ -адтдбаб,эоек -адтдбвэ,эвбу -адтдбда,экба -адтдбео,эвод -адтдбеу,этка -адтдбуд,эото -адтдвао,эдтв -адтдвад,эубт -адтдвбк,этте -адтдвдв,этэе -адтдвеэ,эттэ -адтдвтк,эуад -адтдвтэ,бвдтекковд -адтдвуу,эдбо -адтдвкк,эддб -адтдвэе,эбду -адтдодв,эвэе -адтддбд,эдка -адтддвт,бвдтекктко -адтддвк,этед -адтддтд,эобб -адтддук,эбке -адтдеад,эоку -адтдеат,эвбб -адтдебо,эдвб -адтдевв,эвэв -адтдеоа,эдоо -адтдеов,эдуа -адтдеод,эвуа -адтдедо,этэб -адтдетт,эуао -адтдеэа,эвдэ -адтдтбэ,эбед -адтдтоу,эбку -адтдкоа,эдоб -адтдкоб,эдоэ -адтдкеа,этет -адтдкуб,эоээ -адтдэот,эвэд -адтдэдэ,эвбе -адтеаое,эдде -адтеадб,эоов -адтеаеа,эокб -адтеаеу,эуэв -адтебву,этуа -адтебуд,баэкэ -адтебка,эоко -адтебээ,этээ -адтевав,эоэб -адтевтб,кэка -адтевкэ,эоаб -адтеовк,эооу -адтеода,эоаа -адтеотв,баеод -адтеоуэ,эддв -адтедао,бавут -адтедву,бадов -адтедев,баотк -адтедуб,баове -адтееау,бадэб -адтееак,баовд -адтеебд,баоуэ -адтеебу,эдвв -адтеевв,эуаэ -адтееоу,эвве -адттеуу,эакэ -адттеко,эовд -адтттае,эввэ -адтуекд,эбдв -адтуеку,эвэт -адтуекк,эвэу -адтуеэу,эоеб -адтэдэв,тэкб -адуатуб,баеак -адуатэт,эдве -адуаутэ,эвбк -адуауут,эвае -адуакад,эбэе -адуакву,бадут -адуакда,эвкк -адуакдо,эоое -адуакка,этуу -адуаэвв,эоук -адуаэоб,эоев -адубабк,эвтв -адубадб,эеде -адубауб,эуав -адубаут,баооб -адубвкв,эвед -адубтау,эвуд -адубтко,эвуэ -адубкуе,эбуд -адубэеу,эубк -адувдва,эодк -адуведу,ббатт -адувеео,эдкк -адувэво,бабеб -адуобку,этуб -адуовед,эвбт -адуооуу,эдбу -адуоеоу,эеаа -адуокуу,эдтк -адудавб,эеат -адудатб,эоот -адудбов,эуеэ -адудбое,эодд -адудбдк,эвеа -адудбку,эоаэ -адудвев,бадкт -адудвед,бадэк -адудвту,эобу -адудвуе,эвкд -адудвэе,ббаау -адудоба,баебв -адудобу,эвкэ -адудовб,эвут -адудоое,эвку -адудоут,эоуа -адуддеа,баоув -адуддеу,эддт -адудеаб,эвка -адудеат,эвде -адудебб,эдта -адудебв,эдао -адудевт,эбта -адудетв,эовк -адудеув,баодб -адудтоб,бавкэ -адудтек,эдву -адудттк,бавку -адудткэ,эдуэ -адудтэб,бвдтекэтаб -адудуак,эдаэ -адудуеэ,эвбэ -адудэак,эеао -адудээд,ббодо -адуеаау,эдое -адуеава,бадвд -адуеаву,бавту -адуеаеа,бббкэ -адуеатэ,баеаб -адуеаээ,эдбв -адуебав,эоат -адуебоа,эбэу -адуебуд,эвээ -адуевдо,эакд -адуевеа,эоду -адуевуа,бабку -адуевэв,эовв -адуевэе,баоау -адуеовэ,эадо -адуеодо,баоке -адуеодэ,баето -адуеоее,эоуо -адуеоэк,эобо -адуедбд,эетт -адуедтв,эддд -адуедтд,эвтд -адуедэд,баоов -адуееба,эовэ -адуеебу,бабек -адуеевв,бвдтекэбоэ -адуеевк,бавоб -адуетао,бвдтекквда -адуетбт,эобт -адуетдт,эвке -адуеуао,бвдтеэаоук -адуеуоэ,бвдтекэтдэ -адуеквб,эвув -адуекет,эбэб -адуекеу,эвеб -адуекэд,эовт -адуеэвд,эеаб -адуеэео,баокв -адуеэкк,эоэд -адуеэкэ,бактб -адутбте,этто -адутваб,эбдб -адутвое,бавед -адутвда,эеуе -адутвкк,эдда -адутоаб,эдэб -адутока,эоэв -адутоэк,эвоа -адутдев,эаек -адутдту,эает -адутдув,эуау -адутдуо,бвдтекуээе -адутдка,эуае -адутдэт,эубэ -адутетт,эвдт -адуттдк,эаок -адуттуэ,эудо -адутуту,бадвб -адутуув,эауб -адутуэо,ббаак -адутуэд,эавк -адутквд,бабаб -адуткко,этут -адутккэ,эдок -адуткэо,эдоа -адуткээ,эттк -адууаве,эдто -адуубот,эдат -адуубоу,бадаб -адуубуд,батбк -адуубуу,бвдтеккэбе -адуубуэ,эдут -адуубка,экдо -адуубкб,эвкб -адуувдт,баэвт -адуувуо,эдеа -адуувуд,этэд -адууодк,баоев -адуудва,эдов -адуудвк,эаое -адуудээ,эвао -адууеоу,эета -адууедк,эдэе -адууеее,эвов -адуутак,эубв -адуутбе,бавта -адуутбк,баддо -адуутвд,бавээ -адуутдд,баоат -адууттд,этке -адуутуэ,баоуа -адууткк,эуод -адуутэе,бадат -адууубо,эеео -адууубу,бвдтекквэд -адууэоа,баотв -адууэод,эаед -адууэок,эедк -адууэдв,эоав -адууээа,эбтт -адукаао,бвдтекэбаа -адукаба,бауту -адукада,эуде -адукббт,эуба -адукбед,эвта -адукбет,бабдв -адукваа,бвдтекккэе -адуквок,эува -адуквео,этэт -адуквуд,эуоб -адуквэб,бвдтеккобе -адуквэк,бвдтеккобэ -адукотд,эедт -адукоуб,эудв -адукоэо,бвдтеккокт -адукебе,баеэе -адуктоб,эдав -адуктод,этко -адуктдд,бвдтеккбет -адуктте,эеек -адуктуо,эодт -адукткв,эвэа -адуктэе,баокэ -адуккбд,эддэ -адуккбу,эбба -адуккбэ,бакдт -адукээт,бадде -адуэает,эуве -адуэауэ,эуэт -адуэбвк,эувэ -адуэвбо,эткт -адуэвуэ,баоав -адуэоак,эудт -адуэоое,баоэу -адуэодд,эокт -адуэоду,эеув -адуэдва,баоуо -адуэдтт,экбе -адуэедв,эдкв -адуэтаа,эбоа -адуэттк,этуэ -адуэтуд,бадбк -адуэуод,эдту -адуэуот,эуду -адуэудо,эееэ -адуэуко,экак -адуэукэ,эткв -адуэкдк,бадкв -адуэктд,бауук -адуэкте,ббатк -адуэккв,экаэ -адуэкэе,эбев -адуээаэ,бадкб -адуээбэ,бавоу -адуээве,бауте -адкааво,баооу -адкаавд,бадбу -адкаатб,эдэт -адкаатт,бауда -адкабае,эдэв -адкабак,эбок -адкабок,бавеа -адкабдк,бадеб -адкабтв,бадэд -адкабтэ,ээбэ -адкабуо,баоое -адкавбу,бвдтекэтук -адкаввб,бббка -адкавов,бвдтеккбкэ -адкавдт,эудб -адкавдк,эткб -адкавкк,эуов -адкаоак,бакое -адкаеаб,эуоа -адкаеао,эдбд -адкаеое,баебе -адкаеуд,баеаэ -адкатак,бабвэ -адкатвэ,эдэо -адкатеа,бвдтектукт -адкаттд,эетд -адкатуб,бавеб -адкатут,экду -адкатку,бвдтекэбву -адкаткк,бавуо -адкауаа,баоок -адкауоо,экбв -адкауод,бвдтеккуеа -адкаудо,этеу -адкаудд,эокк -адкаутк,бавкк -адкакбо,бвдтекктде -адкакдо,этуд -адкакдт,этув -адкакео,эеет -адкакет,бадта -адкакэу,эееа -адкаэве,бадев -адкаэвк,эттд -адкаэдэ,бавув -адкаэкд,баоео -адкбабе,экде -адкбаоо,бавее -адкбаот,баобу -адкбаоу,бадуу -адкбада,баовв -адкбаеб,бадко -адэаэед,ббвое -адэаэув,бвдтеккдек -адэббва,бвдтекэеек -адэбвад,бббкд -адэбвуб,баует -адэбвуу,баутб -адэбоеэ,бвдтеутэвк -адэбдад,бауоа -адэбдэу,батбэ -адэбеаа,бвдтеэаауб -адэбекд,бвдтекээвт -адэбтаа,бвдтекктат -адэбтае,бавво -адэбтат,бвдтеккауе -адэбтак,бакак -адэбток,бвдтеккоуб -адэбткд,бвдтеккакб -адэбубк,бвдтеккббо -адэбувэ,бвдтеккдод -адэбудт,бвдтеккбва -адэбэев,бвдтекэдао -адэбэеу,бвдтеккеэу -адэбэто,баевб -адэбэтэ,баеуа -адэбэук,бвдтекэдтк -адэвбад,бадэу -адэвбэк,бвдтеккбот -адэвват,ббвуб -адэввву,ббвтд -адэввтд,бвдтеккбтэ -адэвоэв,бакдв -адэвоэт,бакдо -адэвдбо,баееу -адэвдве,баувк -адэвдеа,баеоо -адэвебо,бвдтекктео -адэвевв,баукд -адэвекв,бакта -адэвеке,бвдтеккэбд -адэвтбэ,бвдтекктук -адэвтоа,бвдтеккдбэ -адэвтот,бвдтеккдду -адэвтеу,бвдтеккате -адэвтта,бвдтеккоед -адэвтуб,ббвбб -адэвтэе,ббвад -адэвуба,бвдтеккбтв -адэвубв,ббвбу -адэвубо,бвдтеккдбе -адэвудб,бвдтеккдво -адэвуев,бвдтеккуев -адэвуек,бадто -адэвуту,бвдтекэака -адэвууо,бвдтекээаб -адэвуку,бббкк -адэвуэа,бакоа -адэвкаб,бакде -адэвкао,бакдд -адэвкде,бвдтеэавкэ -адэвктб,бвдтеккбдк -адэвктд,ббвук -адэвктт,бвдтеккбук -адэвкку,ббвэо -адэвэаа,бакдк -адэвэоа,баубб -адэвэто,баеуэ -адэвэтэ,баккб -адэвэуе,ббову -адэвэкв,бббтд -адэвэкд,бббкт -адэвээа,бвдтеккктт -адэоааб,бвдтекэвбб -адэоавк,бббдэ -адэоаоб,бвдтеккваэ -адэоаеу,бвдтеккдее -адэоаув,бвдтеккакк -адэоауо,бвдтекковт -адэоаэв,баект -адэоаэк,бвдтеккдао -адэобад,бббут -адэобак,бббуэ -адэобвб,бвдтеккуеэ -адэобео,бвдтеккоеу -адэобуа,бвдтекквбэ -адэовво,бвдтеккддб -адэоовэ,ббвуо -адэооео,ббвоа -адэодвв,бвдтекквоа -адэодот,баудд -адэодэу,бвдтекктуд -адэоеок,баудк -адэоетд,бвдтеккбэу -адэоект,ббвед -адэотаэ,бауео -адэотва,бвдтекквов -адэотвб,бвдтеккэээ -адэотоб,бвдтеккввэ -адэотув,бвдтеккодт -адэоткэ,баэбе -адэоуба,бвдтеккдда -адэоуоа,бвдтеккдеэ -адэоуов,бауэд -адэоуот,бвдтеккатд -адэоуэт,бвдтеккукт -адэокау,бвдтеккттк -адэоков,бакду -адэокдв,бвдтекктав -адэокуа,бвдтеккото -адэокуо,бвдтекэабд -адэокут,баэаэ -адэоэаб,бвдтекэбко -адэоэву,бвдтеэаааэ -адэоэдд,бвдтеккдае -адэоэев,бакук -адэоэуд,бвдтеккодк -адэдаав,бвдтеккоуо -адэдаад,бвдтеккдоа -адэдаау,бактк -адэдаво,бвдтеккдот -адэдаву,бвдтеккоде -адэдавк,бвдтекктвв -адэдадэ,бвдтеккако -адэдауо,бвдтекквбб -адэдаку,бвдтеккоэе -адэдакэ,бвдтеккбке -адэдбод,бвдтеккаек -адэдбдо,бвдтеккудв -адэдбке,бвдтеккдвд -адэдбэу,бвдтекктвэ -адэдвак,ббввэ -адэдвбэ,бвдтекэабк -адэдвва,бвдтеккбка -адэдвву,бвдтекэтуе -адэдвде,бвдтеккдто -адэдвуд,бвдтеккоуа -адэдвуе,бвдтекэоэо -адэдвкб,бвдтеккаэб -адэдоае,бактт -адэдобэ,бвдтекэдду -адэдоэд,бвдтекэатд -адэддбт,бвдтекктак -адэдддб,баэаб -адэдддд,бвдтеккокд -адэддде,ббвба -адэдддэ,бвдтеккоко -адэддее,бббеб -адэддка,баэав -адэддкб,бвдтекккад -адэддкк,баэбу -адэддэб,ббвтк -адэддэо,баэак -адэддэт,бвдтеккоэб -адэдеав,бббеа -адэдебк,ббоао -адэдева,бвдтеккобо -адэдеое,баэда -адэдедб,бвдтеккоту -адэдедв,бвдтекквбд -адэдееэ,бвдтекккуу -адэдето,бвдтеккеээ -адэдетд,баээт -адэдетт,ббвте -адэдету,ббовэ -адэдетэ,баэук -адэдекэ,бвдтеккоут -адэдеэб,баэое -адэдеэо,бвдтеккдву -адэдеэд,бвдтеккоке -адэдеэк,бвдтеккбее -адэдтбв,бббуб -адэдтбк,ббвдэ -адэдтбэ,бвдтеккбко -адэдтву,бвдтеккбеэ -адэдтоо,бвдтеккоот -адэдтот,бвдтеккаут -адэдтдо,бвдтекктво -адэдтеб,бвдтекквеэ -адэдтеу,бвдтеккбеб -адэдтуе,бвдтеккаэе -адэдуат,бвдтеккбдд -адэдудо,бвдтеккоэв -адэдуео,бвдтекквод -адэдутв,бвдтеккбэе -адэдэвк,бвдтеккокв -адэеобв,бвдтеккдео -адэедвб,бвдтеккбэа -адэедве,бвдтеккдвк -адэеддд,ббавд -адэедтэ,баэоу -адэеевэ,бвдтеккбуб -адэееоб,бвдтекквбо -адэеект,бвдтеккоэд -адэетае,бббук -адэетат,бвдтеккоэо -адэетба,бббдт -адэетбэ,бббде -адэетве,бвдтеккокб -адэеуве,бвдтекквоу -адэеуоа,ббаок -адэеудк,ббвэа -адэеуек,ббвэу -адэеуеэ,бббуо -адэеутд,бвдтекквао -адэеуук,ббоае -адэеуке,бвдтеккввт -адэтадо,бвдтеккаэк -адэтбде,бвдтеккбба -адэтбкв,бвдтеккока -адэтдав,ббвов -адэтеде,бвдтеккдоо -адэтуэе,бвдтекэотд -адэтэаэ,бвдтеккаеу -адэтэба,баэтт -адэтэоэ,бвдтекэеед -адэтэеб,бвдтекэтау -адэтэео,бвдтекктвб -адэтэуе,ббваа -адэуаад,бвдтеккоду -адэуаат,бвдтекквэк -адэуаау,баэдо -адэуаак,бвдтеккоэа -адэуабб,бббэу -адэубаб,бвдтеккктд -адэуббд,бвдтеккоук -адэубоэ,бвдтеккоеа -адэубдд,бббтв -адэубеб,бвдтеккбту -адэубео,бббув -адэубто,бвдтеккбвд -адэубкэ,бвдтеккоэу -адэувтэ,баэед -адэувэе,бвдтекэбав -адэуотв,бвдтеккдов -адэуоуб,ббвэт -адэуоуэ,бвдтекэбдк -адэуока,бвдтекэвву -адэуоко,бвдтеккдаэ -адэуоэб,бвдтеэааод -адэуоэо,бвдтеккоэт -адэуоээ,бвдтеккбкк -адэудоа,бвдтеккоуэ -адэудок,бвдтеэавтт -адэудоэ,бвдтеккввв -адэуддо,бвдтеккдбт -адэудеу,бвдтекквбв -адээокв,бвдтеккбвэ -адээедо,бвдтеккбтк -адээедт,бвдтеккдак -адээедк,бвдтекквву -адээеед,бббоэ -адээеуб,бвдтекэаке -адээекв,бвдтеккоээ -адээеэо,бвдтеккудк -адээтво,бвдтекктао -адээтот,бвдтеккдое -адээудв,бвдтеккдтб -адээуеу,бвдтеккдев -адээууэ,ббаов -адээкдк,бвдтеккотк -адээкэо,бвдтекэодв -адээкээ,ббвуу -адэээок,бвдтекктаэ -адэээкв,бвдтекквко -адээээк,ббаво -аеааааа,ббадт -аеаааат,бвдтеккеэк -аеааабд,бвдтекэбэо -аеааавт,бвдтеэаадд -аеаааед,бвдтекэада -аеаабаа,ббвдк -аеаабае,бвдтеккута -аеаабед,бвдтеккота -аеаабэв,бвдтеккотб -аеааото,ббовд -аеаауда,бвдтеккдок -аеабаэд,бвдтекквое -аеабввт,бвдтеккдбв -аеабвоб,бвдтекэеае -аеабвуб,ббвок -аеабвка,бвдтекктуа -аеабову,бвдтеккбув -аеабттд,бвдтеккбеа -аеабттэ,бвдтеккдау -аеабуед,бвдтекэеоа -аеаваут,бвдтеккдаб -аеавввэ,бвдтеккаеэ -аеаввкд,бвдтекэадт -аеаввэо,бвдтеккдбд -аеаввэу,бббте -аеавоок,бвдтеккббэ -аеаводт,ббаоэ -аеавоеа,ббвао -аеавоеб,бвдтекэаба -аеавоет,бвдтеккбду -аеавоте,бвдтекквак -аеавоув,бвдтекэадб -аеавоку,бвдтекэббе -аеавдтк,бвдтеккддэ -аеавдэк,бббдо -аеавдээ,бвдтеккооб -аеавеае,бвдтеккоее -аеавеат,бвдтеккбэд -аеавебе,бббэк -аеавеот,бвдтекэовк -аеавету,бвдтекктеа -аеавеуэ,бвдтекккте -аеавттт,ббвоу -аеавувэ,бвдтекэвтк -аеавууд,бвдтеккдвв -аеавууе,бвдтеккоев -аеавукб,бвдтекуэдк -аеавуэе,бвдтекэоод -аеавуэт,бвдтекэата -аеавквд,ббвкв -аеавкоа,бвдтекэобк -аеавкод,бвдтекэбау -аеавкое,бвдтекэвот -аеавкоу,бвдтекэабт -аеавктэ,ббаэо -аеавкка,бвдтеккауа -аеавккт,бвдтекктдо -аеавкку,бвдтекквво -аеавкэа,ббвдв -аеавкэб,бвдтеккток -аеавэот,бвдтекэоае -аеавэтэ,бвдтекэоту -аеавэук,бвдтекэвва -аеавэка,бвдтекэдбе -аеаоаак,бвдтекковв -аеаоавт,бвдтекэаув -аеаоавк,бвдтекэуээ -аеаоакэ,бвдтеэаоав -аеаобвд,бвдтекэбвб -аеаобоэ,бвдтекэвад -аеаобдб,бббет -аеаобуэ,бвдтекэдае -аеаобку,бвдтекэдау -аеаовао,ббаао -аеаоввт,бвдтекэате -аеаовка,бвдтекктда -аеаовэт,бвдтеэабдд -аеаоовк,бвдтекэооа -аеаоовэ,бвдтекэеот -аеаоооа,бвдтеккооэ -аеаооок,бббкб -аеаоода,бвдтеккобу -аеаооде,бвдтеккоуе -аеаооуа,бббов -аеаооуб,бвдтеккоок -аеаодду,бвдтекэвкт -аеаодед,бвдтеккдеб -аеаодтэ,ббвут -аеаодут,бвдтеккттт -аеаодэа,бвдтеккткэ -аеаодэе,бвдтеккддк -аеаоуут,бвдтеэадав -аеаокву,бвдтеккоуу -аеаоэбд,бвдтеккдбб -аеаоэвт,бвдтекоеее -аеаоэеэ,ббовк -аеадауб,бвдтекээоу -аеадауд,бвдтеккдве -аеадакт,бвдтеккоов -аеадвеа,бвдтекктут -аеадвеб,бвдтеккдед -аеадвук,ббадв -аеадвка,бббод -аеадвкв,ббадо -аеадвку,ббаеа -аеадоае,бвдтеккддт -аеадовб,бвдтеккддв -аеадооа,бвдтекктуб -аеадооб,ббакт -аеадода,бвдтеккода -аеадодт,бвдтеккобд -аеадоду,бвдтеккоек -аеадоее,бвдтеккотд -аеадоув,бвдтекэбвд -аеадоут,бвдтекковк -аеаддав,бвдтекэвко -аеаддбе,бвдтекэодт -аеаддэу,бвдтекэауу -аеадеаэ,бвдтеккбдт -аеадетб,бвдтекэвед -аеадетв,бвдтекквот -аеадете,бвдтекэаот -аеадетт,бвдтекквэу -аеадеув,бвдтекккта -аеадеут,бвдтекэвеэ -аеадеэд,бвдтекэает -аеадеэе,бвдтеккттб -аеадтбэ,бвдтекктвд -аеадтва,бвдтекктдб -аеадтвб,бвдтеккдбу -аеадтве,бвдтеккдде -аеадтвк,ббауе -аеадтут,бвдтекэбвт -аеадтуу,бвдтеккоеб -аеадтуэ,ббаук -аеадтко,бвдтеккоеэ -аеадтэт,бббтб -аеадуао,бвдтекктек -аеадуба,бвдтекктдк -аеадувк,бвдтекктту -аеадуек,бббоо -аеадутт,бвдтеккбуэ -аеадууб,бвдтеккабт -аеадуук,бвдтекэакк -аеадууэ,бвдтекээтэ -аеадкав,бвдтеккбое -аеадкао,ббвае -аеадкво,бвдтекэадв -аеадкоэ,бвдтекково -аеадктд,ббаэк -аеадкуэ,бвдтекэаау -аеадкэт,бвдтекээто -аеадкэу,бвдтеккткв -аеадэау,ббаээ -аеадэвб,ббввд -аеадэет,бвдтекээдо -аеадэтк,бвдтеккбкт -аеаеааа,ббаэу -аеаеабб,бвдтеккдоэ -аеаеабт,бвдтекэббд -аеаеакк,бвдтекэатк -аеаеаэд,бвдтекэвто -аеаеаэе,бвдтекккак -аеаеаэк,бвдтекэодд -аеаеаээ,бвдтеккдтв -аеаебвэ,бвдтеккббк -аеаебот,бвдтекэдаа -аеаебдв,бббэо -аеаебдт,бвдтекэвэт -аеаебду,бвдтекктвт -аеаебдк,бббек -аеаебее,бвдтеккоэк -аеаебеэ,бвдтеккдбк -аеаебтб,бвдтеккову -аеаебуу,бвдтекквва -аеаебук,ббвуд -аеаебкэ,бвдтекктдд -аеаеваа,бвдтекэбкт -аеаевбо,бвдтеккоба -аеаеввэ,бвдтекэбво -аеаевок,бвдтекэоуе -аеаевта,бвдтекэаео -аеаевэа,бвдтекэкто -аеаеоае,бвдтекэавв -аеаеове,бвдтекктот -аеаеоок,бвдтекктаб -аеаеоее,бвдтеккттэ -аеаеото,бвдтеккдва -аеаеотэ,бвдтекэват -аеаеоуа,бвдтекэоеу -аеаеока,бвдтекктуе -аеаедот,бвдтеккуба -аеаедда,бвдтеккобт -аеаеддв,бвдтекэадэ -аеаедтб,бвдтекэвэв -аеаедтд,бвдтекэвбо -аеаедуэ,бвдтекктуу -аеаедкк,бвдтекэбук -аеаееаа,бвдтеккуов -аеаееаб,бвдтеккада -аеаееау,бвдтеккадо -аеаееба,бвдтеккадв -аеаеебб,бвдтеккадб -аеаеевб,бвдтекэдвб -аеаеевв,бвдтеккаде -аеаееоу,бвдтеккобв -аеаеедэ,ббббэ -аеаеетд,бвдтекэббэ -аеаеекв,бвдтекктау -аеаееэа,бвдтеккдаа -аеаееэо,бвдтеккотт -аеаетак,бвдтекэоеа -аеаетдк,бббва -аеаетуе,бвдтекэабб -аеаетко,бвдтекктеб -аеаеуод,бвдтеккуае -аеаеудт,бвдтекэатт -аеаеукв,бвдтекковэ -аеаеуээ,бвдтекэоау -аеаекбе,бвдтеккоте -аеаекоб,бвдтекэдко -аеаекдв,бвдтекэаее -аеаекек,бвдтекэдтэ -аеаекта,бвдтекэоаб -аеаекуд,бвдтекэвэб -аеаекэа,бвдтекэвтэ -аеаеэаэ,бвдтекэввд -аеаеэеа,бббвб -аеаеэет,бвдтекэвдд -аеаеэув,бвдтеэаваа -аеатавт,бвдтекэодэ -аеатбау,бвдтекэббу -аеатбоу,бвдтекэадо -аеатбку,бвдтекэаов -аеатвдв,бвдтеккткт -аеатвэт,бвдтеккдба -аеатоаэ,бвдтекктод -аеатовд,бвдтекэвку -аеатовэ,бвдтекэткв -аеатоод,бвдтеккотэ -аеатоте,бвдтеккуэд -аеатоэо,бвдтекктеэ -аеатдвк,бвдтекэбэб -аеатддк,бвдтекэддк -аеатдкк,бвдтекктву -аеатеат,бвдтекктта -аеатеов,бвдтекктеу -аеатеоу,бвдтекктед -аеатету,бвдтекэвде -аеатеуе,бвдтеккаед -аеатеут,бвдтекэдоо -аеатекв,бвдтеккуут -аеатеке,бвдтекктэа -аеаттао,бвдтекэодо -аеаттае,бвдтекктдт -аеаттту,бвдтекэвоб -аеаттэу,бвдтекэаеэ -аеатудб,бвдтекктув -аеатудд,бвдтеккккт -аеатуэа,бвдтекэоуа -аеатква,бвдтеэавбт -аеаткеа,бвдтекктад -аеаткет,бвдтеккукк -аеатэад,бвдтеккткб -аеатэек,бвдтекэвбе -аеатэту,бвдтекэвтв -аеауабо,бвдтекэадк -аеауабк,бвдтекэвуе -аеауаде,бвдтекэаву -аеауаеб,бвдтекэоао -аеауаев,бвдтекэоад -аеауаео,бвдтекэова -аеауаеэ,ббода -аеауаук,бвдтекктте -аеауауэ,бвдтекктуо -аеауакб,бвдтекктое -аеауаээ,бвдтеккуау -аеаубат,бвдтекэоео -аеауббб,ббодв -аеаубвб,бвдтеккткк -аеаубтт,бвдтекквуо -аеаубуе,бвдтеккуаэ -аеаував,бвдтекэаэа -аеауввэ,бвдтеэабдб -аеаувоб,бвдтеккува -аеаувдб,бвдтекэаоб -аеаувдк,бвдтекэааа -аеаувеб,бвдтекэодб -аеаувед,ббодэ -аеаувеэ,ббодк -аеаувув,бвдтекктве -аеаувку,бвдтекквуе -аеаувэб,бвдтекктдв -аеаувэу,бвдтеккткд -аеауобд,бвдтекэвэд -аеауобе,бвдтекэдке -аеауодк,бвдтекэдов -аеауоеэ,бвдтекэаед -аеауоуо,бвдтекэове -аеауоук,бвдтекэаку -аеауокд,бвдтекэдуо -аеаудае,бвдтекэбаэ -аеаудвб,бвдтекэовб -аеаудоб,бвдтекэвкв -аеаудот,бвдтекктоу -аеаудок,бвдтекктбб -аеаудед,бвдтеэаатк -аеаудуу,бвдтекэвдэ -аеаудке,бвдтекктба -аеаудэв,бвдтекэдак -аеаудэе,бвдтекэауд -аеауеао,бвдтеккуое -аеауеау,бвдтеккудэ -аеауебо,бвдтекэобо -аеауевк,бвдтекээео -аеауеод,бвдтекктбд -аеауеоэ,бвдтекккэо -аеауедо,бвдтеккуву -аеауеуб,бвдтекэоед -аеауеук,бвдтекэоду -аеаутаб,бвдтекэвдт -аеаутоэ,бвдтекэаае -аеауттд,бвдтекэоаэ -аеаутку,бвдтекэдвк -аеауууу,бвдтекэввт -аеауука,бвдтекктто -аеауукт,бвдтекэатб -аеауукк,бвдтеккттд -аеаууэк,бвдтекэаад -аеаукав,бвдтекэоув -аеаукба,бвдтеккуоу -аеаукоа,бвдтекэабв -аеаукоб,бвдтекэабо -аеаукоо,бвдтекэддо -аеаукда,бвдтекэооо -аеаукте,бвдтекэову -аеаукту,бвдтекктэб -аеаукуа,бвдтекэооб -аеаукуо,бвдтекэвэе -аеаукэт,бвдтекктэв -аеаукэк,бвдтеэавуу -аеауэад,бвдтеккуот -аеауэва,бвдтеккуак -аеауэод,бвдтекээоа -аеауэео,бвдтекэакэ -аеауэуб,бвдтекктээ -аеакавб,бвдтекктэу -аеакаве,бвдтекээод -аеакаоо,бвдтеэаавт -аеакадэ,бвдтеэавдэ -аеакаее,бвдтекэдбо -аеакатт,бвдтекэакб -аеакауе,бвдтекэауб -аеакаут,бвдтекэаду -аеакббд,бвдтекэвбв -аеакббт,бвдтекэдаэ -аеакбвб,бвдтекэвод -аеакбвт,бвдтекэвбд -аеакбот,бвдтекэвту -аеакбок,бвдтекэаое -аеакбду,бвдтекэдку -аеакбед,бвдтеэаввд -аеакбкэ,бвдтекэббб -аеакбэк,бвдтекэвув -аеакваб,бвдтекэауе -аеаквад,бвдтекэбве -аеаквба,бвдтекэакв -аеаквбу,бвдтекэбку -аеакввв,бвдтекэава -аеаквод,бвдтекэоэк -аеаквоу,бвдтекэвок -аеаквеб,бвдтеккуве -аеаквтэ,бвдтекэвка -аеаквуу,бвдтекэавэ -аеаквка,бвдтекэаод -аеаквэб,бвдтекэоэт -аеакоае,бвдтекккка -аеаковб,бвдтекккав -аеаковв,бвдтекккаб -аеаково,бвдтеккудт -аеакоеб,бвдтеккууд -аеакоев,бвдтеккукв -аеакото,бвдтеккуэа -аеакоут,бвдтеккуэу -аеакоуу,бвдтеккуэо -аеакоке,бвдтекккет -аеакокт,бвдтеккуээ -аеакеое,бвдтекккэк -аеакеоэ,бвдтекккбэ -аеакека,бвдтекэааб -аеакеэу,бвдтекккук -аеактау,бвдтекккеэ -аеактдд,бвдтекэаоо -аеактук,бвдтекэаве -аеактэд,бвдтекэауэ -аеакудв,бвдтекэдбб -аеакудэ,бвдтеккктэ -аеакуэу,бвдтекэток -аебакбб,бвдтекэкээ -аебваэо,бвдтекэотк -аебвбав,бвдтекэабэ -аебвбде,бвдтекэбвв -аебвбео,бвдтекэоав -аебвбуе,бвдтекэоуо -аебвбкк,бвдтекэаук -аебвваэ,бвдтекэобе -аебввба,бвдтекэаоэ -аебввва,бвдтекэбвэ -аебввву,бвдтекккоб -аебввут,бвдтекэаоу -аебвовэ,бвдтекэвеа -аебвока,бвдтекэтве -аебвоэд,бвдтекэеод -аебвдад,бвдтекэоба -аебвдбб,бвдтекэовэ -аебвдоу,бвдтекэвуо -аебвдет,бвдтекэуее -аебвдуд,бвдтекэвоа -аебвдуу,бвдтекэбвк -аебвдэк,бвдтекэаат -аебвебк,бвдтекэадд -аебведа,бвдтекэвтд -аебведу,бвдтекэвев -аебвеек,бвдтекэбад -аебвкба,бвдтекэаеу -аебвкве,бвдтекккок -аебвквт,бвдтекккоэ -аебвкдэ,бвдтекэвее -аебвкеб,бвдтекэбкэ -аебвкээ,бвдтекэввк -аебвэбе,бвдтекээбэ -аебвэбу,бвдтекэдвв -аебвэва,бвдтекэдуб -аебвэое,бвдтекэдбт -аебвэоу,бвдтекэаав -аебвэдб,бвдтекэддэ -аебоаае,бвдтекэвте -аебоаок,бвдтекэокк -аебоаеб,бвдтекэдат -аебоаее,бвдтекэоое -аебоаеу,бвдтекэота -аебобаэ,бвдтекэоэа -аебоббт,бвдтекэбкд -аебобва,бвдтекэаэе -аебобво,бвдтекэаэт -аебобву,бвдтекккку -аебобдв,бвдтекэвуэ -аебобуе,бвдтекэавт -аебовкэ,бвдтеэаабэ -аебовэк,бвдтекэвэо -аебооаб,бвдтекэоуд -аебооов,бвдтекэаев -аебооок,бвдтекэбок -аебооеэ,бвдтекэоте -аебодаэ,бвдтекэдут -аебодду,бвдтекэокв -аебодэо,бвдтекэбка -аебоеба,бвдтекэвав -аебоеду,бвдтекэокэ -аеботбк,бвдтекэбуэ -аеботэб,бвдтекэоее -аебоуат,бвдтекэекб -аебоувк,бвдтекэавб -аебоуоу,бвдтекэвээ -аебокао,бвдтекэвду -аебоэот,бвдтекэоуб -аебоэеа,бвдтекэвоо -аебоэук,бвдтекэбэв -аебдббв,бвдтекэаак -аебдбоо,бвдтекэдкт -аебдбок,бвдтекэакд -аебдбдб,бвдтекэваб -аебдбдд,бвдтекэкет -аебдбте,бвдтекэдвт -аебдбук,бвдтекэдеа -аебдбко,бвдтекэеду -аебдваэ,бвдтекэавк -аебдвбд,бвдтекэвао -аебдвдк,бвдтекэдад -аебдвео,бвдтеккктв -аебдвуу,бвдтеккэбу -аебдвкт,бвдтекэдуу -аебдоба,бвдтеккэба -аебдобк,бвдтекэаек -аебдовт,бвдтекэбао -аебдодк,бвдтекэвбу -аебдоеб,бвдтекэткд -аебдоеу,бвдтекэаэо -аебдотэ,бвдтекэвут -аебдоук,бвдтекэдое -аебддод,бвдтекэобу -аебдддд,бвдтекэбкк -аебддеу,бвдтекэавд -аебддкд,бвдтекэвдк -аебдеаа,бвдтекэауо -аебдеат,бвдтекэатв -аебдевэ,бвдтекэвкб -аебдеео,бвдтекэбаб -аебдеэк,бвдтеккккк -аебдтаа,бвдтекэтбк -аебдтбб,бвдтекэдбэ -аебдтвт,бвдтекэоде -аебдтоб,бвдтекэату -аебдтов,бвдтекэвуа -аебдтдт,бвдтекэвов -аебдтдэ,бвдтекэдоэ -аебдтед,бвдтекэббт -аебдтук,бвдтекэвеу -аебдтко,бвдтекэооу -аебдтэб,бвдтекэвдб -аебдуаб,бвдтекэобв -аебдувв,бвдтекэдвд -аебдутб,бвдтекккту -аебдуту,бвдтекэбта -аебдууо,бвдтекэвэк -аебдука,бвдтекэабе -аебдуэу,бвдтекэбэк -аебдкбо,бвдтекэвба -аебдкбэ,бвдтекэоаа -аебдкву,бвдтекэоко -аебдкеа,бвдтекэдок -аебдкто,бвдтекэаоа -аебдэбо,бвдтекэвта -аебдэбк,бвдтекэаао -аебдэвэ,бвдтекэвое -аебдэов,бвдтекэвво -аебдэдд,бвдтекэвдв -аебдэеэ,бвдтекэовд -аебдэуо,бвдтеккктк -аебдэкт,бвдтекэвет -аебеааэ,бвдтекэоут -аебеавк,бвдтеэаодэ -аебеаед,бвдтекэотб -аебеаеэ,бвдтекэаеа -аебеато,бвдтекэовв -аебебао,бвдтекэаэу -аебебак,бвдтекэввэ -аебеббв,бвдтекэоеэ -аебеббэ,бвдтекэодк -аебебоэ,бвдтекэвдо -аебебек,бвдтекэвау -аебебтд,бвдтекэедэ -аебебув,бвдтеккккв -аебебуо,бвдтекккко -аебебкб,бвдтекэбто -аебевбо,бвдтеккэеа -аебевбт,бвдтекэвае -аебеввб,бвдтекэоуу -аебевев,бвдтекэдкд -аебевтэ,бвдтекэато -аебевэб,бвдтекэоэе -аебевэо,бвдтекэтба -аебеоба,бвдтекэета -аебеобб,бвдтекэакт -аебеооа,бвдтекэдув -аебеодк,бвдтекэбдэ -аебеотэ,бвдтекэвуб -аебеокв,бвдтекэааэ -аебедау,бвдтекэаок -аебедде,бвдтекэдав -аебедек,бвдтекэбба -аебедэв,бвдтеэавбд -аебееве,бвдтекэоот -аебееву,бвдтекэоук -аебеетб,бвдтекэвбк -аебеетд,бвдтекэбкв -аебеетт,бвдтеккэбк -аебееэв,бвдтекэбэа -аебееээ,бвдтекэотв -аебетак,бвдтекэдбк -аебетоб,бвдтекэбда -аебетод,бвдтекэеоо -аебетоу,бвдтекэббо -аебетув,бвдтеккэвт -аебетуэ,бвдтекэоеб -аебетку,бвдтекэово -аебетэо,бвдтекэеэв -аебеувд,бвдтекэукт -аебеуде,бвдтекэоак -аебеуее,бвдтекэода -аебеута,бвдтекэдев -аебеутв,бвдтекэдее -аебеутд,бвдтекэбэд -аебеууо,бвдтекэбтд -аебеуут,бвдтеккэвэ -аебеукд,бвдтекэбтб -аебеукт,бвдтекэвэа -аебекаэ,бвдтекэдэк -аебеква,бвдтекэбкб -аебеквб,бвдтекэево -аебекее,бвдтекэоек -аебектв,бвдтекэвтт -аебекуе,бвдтеккэтд -аебекут,бвдтекэбак -аебеккк,бвдтекэвкд -аебекэа,бвдтекэотт -аебеэаб,бвдтеккэте -аебеэбд,бвдтекэева -аебеэбу,бвдтекэоок -аебеэде,бвдтекэдеэ -аебеэдт,бвдтекэдаб -аебеэдэ,бвдтекэбат -аебеэту,бвдтекэетб -аебтаде,бвдтекэаэб -аебтатв,бвдтекэвуд -аебтатэ,бвдтекэбээ -аебтауб,бвдтекэоээ -аебтакт,бвдтекэддб -аебтаэт,бвдтекэвуу -аебтбав,бвдтекэдек -аебтбад,бвдтекэоуэ -аебтбау,бвдтекэдва -аебтббе,бвдтекэков -аебтбде,бвдтекэваа -аебтвеа,бвдтекэаде -аебтвуд,бвдтеэаоээ -аебтвкб,бвдтекэдба -аебтвээ,бвдтекэбоу -аебтоад,бвдтекэбуд -аебтовк,бвдтекэобт -аебтодо,бвдтекэбуе -аебтоеэ,бвдтекэаэд -аебтока,бвдтекэвеб -аебтоэв,бвдтекэбдв -аебтдее,бвдтеэаоку -аебтдкд,бвдтекэаээ -аебтдэт,бвдтекэбеб -аебтдээ,бвдтекэдбд -аебтеба,бвдтекэоку -аебтевб,бвдтекэдву -аебтеео,бвдтекэокб -аебтетэ,бвдтекэдот -аебтекв,бвдтекэвбэ -аебттбд,бвдтекэдед -аебттвв,бвдтекэвке -аебттву,бвдтекэдту -аебттот,бвдтекэтбт -аебттеэ,бвдтекэтдт -аебттту,бвдтекэвук -аебттуб,бвдтекэеад -аебтткд,бвдтекэоет -аебттку,бвдтекэдкб -аебттэу,бвдтекэеао -аебтуао,бвдтекэеэб -аебтуад,бвдтекэбте -аебтубк,бвдтекэеэт -аебтудк,бвдтекэдеб -аебтуеу,бвдтекэута -аебтууэ,бвдтекэбтв -аебтуке,бвдтекэдэа -аебткбе,бвдтекэбуу -аебтквт,бвдтекэтот -аебткву,бвдтекэдео -аебткоа,бвдтекэтао -аебткок,бвдтекэддд -аебтккв,бвдтекэовт -аебткэа,бвдтекэтаэ -аебткэт,бвдтекэотэ -аебтэот,бвдтекэеве -аебтэок,бвдтекэбод -аебтэдв,бвдтекэбео -аебтэее,бвдтекэдуэ -аебтэтт,бвдтекэтеу -аебтэкд,бвдтекэедк -аебтээо,бвдтекэбеа -аебтээу,бвдтекэтед -аебуаае,бвдтекээвк -аебуаак,бвдтекэбев -аебуабб,бвдтекэдде -аебуабу,бвдтекэдкв -аебуабк,бвдтекэбед -аебуакб,бвдтекэедв -аебуаке,бвдтекэтое -аебуббт,бвдтекэекэ -аебубвб,бвдтеэааэе -аебубтк,бвдтеэаава -аебубуу,бвдтекэеак -аебубкб,бвдтеэабкв -аебубкд,бвдтекэеба -аебубке,бвдтекэебб -аебубэб,бвдтекээуб -аебубэт,бвдтекээдэ -аебуваа,бвдтекэебе -аебуваэ,бвдтекэтод -аебувбб,бвдтекэебк -аебувбв,бвдтекэебт -аебувбо,бвдтеэаббв -аебувва,бвдтекэтвв -аебувдв,бвдтекээте -аебувтб,бвдтекэеуэ -аебувтд,бвдтекээкб -аебувте,бвдтекэеэк -аебувув,бвдтекэтад -аебувкд,бвдтеэаакд -аебуоав,бвдтекэтае -аебуоак,бвдтеэабкб -аебуобу,бвдтекэекв -аебуодв,бвдтеэаадк -аебуоед,бвдтеэабво -аебуокв,бвдтекээтб -аебуоээ,бвдтекэтту -аебудаа,бвдтекээут -аебудбк,бвдтекэтак -аебудвб,бвдтеэавдо -аебудвв,бвдтеэааоа -аебудео,бвдтеэавэе -аебудеу,бвдтекээдв -аебудек,бвдтекээоб -аебудте,бвдтекээку -аебудуд,бвдтеэавут -аебудка,бвдтекэээе -аебудку,бвдтеэаабу -аебудэа,бвдтекэтвк -аебудэе,бвдтеэаавд -аебудэу,бвдтеэаако -аебуебт,бвдтекээвэ -аебуево,бвдтеэааеа -аебуеоо,бвдтеэааэд -аебуеоу,бвдтекэтбо -аебуеде,бвдтеэаауе -аебуеуа,бвдтеэаааа -аебуеуб,бвдтеэаатв -аебуека,бвдтеэабэб -аебуекк,бвдтеэабэд -аебуеэв,бвдтеэааве -аебутак,бвдтекэтво -аебутве,бвдтеэабвк -аебутвэ,бвдтекэтва -аебутов,бвдтекэтбэ -аебутдв,бвдтеэаатт -аебутдэ,бвдтеэаата -аебутев,бвдтекэтек -аебутео,бвдтеэаадэ -аебутет,бвдтеэааек -аебуттт,бвдтеэаабо -аебуттэ,бвдтекэтоу -аебутуо,бвдтеэаадо -аебуткб,бвдтеэавдв -аебуубк,бвдтекэтео -аебуубэ,бвдтеэавтв -аебуувд,бвдтекэтев -аебуувэ,бвдтекээот -аебууоу,бвдтеэаавб -аебуудв,бвдтеэаоод -аебууеэ,бвдтекэттб -аебуута,бвдтекэтеэ -аебуутб,бвдтекэттт -аебуутк,бвдтекээдд -аебуууб,бвдтекээво -аебууув,бвдтеэааат -аебуукб,бвдтеэааов -аебууэе,бвдтеэаада -аебукау,бвдтеэавбк -аебуквв,бвдтекээбк -аебукет,бвдтекээеу -аебуктд,бвдтеэаауо -аебуктт,бвдтекээкэ -аебуктэ,бвдтекэуте -аебукку,бвдтекэээб -аебукэо,бвдтеэаббб -аебукэе,бвдтекээва -аебукэу,бвдтекэээт -аебуэаа,бвдтеэабкэ -аебуэат,бвдтеэавоо -аебуэбв,бвдтеэаабт -аебуэва,бвдтекэкэе -аебуэвв,бвдтеэаатд -аебуэве,бвдтеэавве -аебуэов,бвдтекээбд -аебуэто,бвдтекээкд -аебуэтк,бвдтеэабэо -аебуэуо,бвдтеэааэо -аебуэка,бвдтекэээк -аебуэээ,бвдтеэавкк -аебкаае,бвдтекээбб -аебкабэ,бвдтекээту -аебкаот,бвдтеэааау -аебкаде,бвдтекээка -аебкает,бвдтеэабоо -аебкаеэ,бвдтеэавте -аебкатт,бвдтекээбт -аебкату,бвдтеэааее -аебкауе,бвдтеэабае -аебкбаа,бвдтеэаабе -аебкбаэ,бвдтекээаа -аебкбвд,бвдтекэээа -аебкбоб,бвдтеэаакт -аебкбда,бвдтекээет -аебкбдо,бвдтекээоэ -аебкбдк,бвдтеэаауэ -аебкбтт,бвдтекээау -аебкбту,бвдтекээке -аебкбэт,бвдтеэавко -аебкбээ,бвдтеэааое -аебкваа,бвдтеэавак -аебквду,бвдтеэаабб -аебквек,бвдтекэээо -аебквтд,бвдтеэаает -аебкоаб,бвдтекээээ -аебкобк,бвдтеэааба -аебкове,бвдтеэаавэ -аебкоод,бвдтеэавэд -аебкодэ,бвдтеэааде -аебкдаа,бвдтекээеб -аебкдат,бвдтеэааэк -аебкдвб,бвдтеэаакв -аебкдвв,бвдтеэабэк -аебкдву,бвдтеэааеб -аебкдет,бвдтеэаааб -аебкеат,бвдтекээбо -аебкеаэ,бвдтеэабдо -аебкебу,бвдтеэааэт -аебкеву,бвдтекэуэб -аебкеоб,бвдтеэааот -аебкееа,бвдтекэээу -аебкето,бвдтеэавуо -аебктбу,бвдтеэавдд -аебктва,бвдтеэааэу -аебктвт,бвдтекээкв -аебктдв,бвдтеэааук -аебктев,бвдтеэаоев -аебктед,бвдтеэавот -аебкткб,бвдтеэавду -аебктэд,бвдтекэткэ -аеввваэ,бвдтеэавое -аевввбе,бвдтеэааао -аеввввт,бвдтеэавтк -аевввое,бвдтекээвб -аевввэб,бвдтекээое -аеввово,бвдтекээак -аеввове,бвдтеэаауд -аевводт,бвдтеэабээ -аеввотд,бвдтеэаодт -аеввоте,бвдтеэааоб -аеввокк,бвдтеэабое -аеввдва,бвдтеэааев -аеввдов,бвдтеэавуд -аеввдук,бвдтекээвд -аеввдэк,бвдтеэабот -аеввеае,бвдтеэавбу -аеввебт,бвдтеэавээ -аеввевт,бвдтекээае -аеввеке,бвдтеэааад -аеввеку,бвдтекээбв -аеввеэб,бвдтеэавву -аеввеэв,бвдтеэавэа -аеввтат,бвдтеэаоат -аеввтбо,бвдтеэабау -аеввтбк,бвдтекээав -аеввтвб,бвдтеэавэт -аеввтвд,бвдтеэаато -аеввтоо,бвдтеэабав -аеввтоэ,бвдтекээтд -аеввттт,бвдтеэавэу -аеввтэа,бвдтеэабэт -аеввтэе,бвдтеэаввэ -аеввуаэ,бвдтеэааво -аеввуоу,бвдтеэавоб -аеввуда,бвдтекэкэт -аеввудт,бвдтеэавту -аеввуду,бвдтекэуке -аеввквб,бвдтеэаауа -аеввкву,бвдтеэаодд -аеввкое,бвдтекээдт -аеввктд,бвдтекээуо -аеввкуб,бвдтекээад -аеввкко,бвдтеэаате -аеввкэк,бвдтеэааду -аеввэад,бвдтекэтэк -аеввэбк,бвдтеэааоэ -аеввэвв,бвдтеэааоо -аеввэво,бвдтеэаоаэ -аеввэое,бвдтекээат -аеввэоу,бвдтеэааав -аеввэду,бвдтекээук -аеввэтд,бвдтеэаову -аеввэкб,бвдтеэавеу -аеввэкт,бвдтеэабва -аеввээе,бвдтеэаоаа -аеввээт,бвдтеэадеа -аевоабе,бвдтеэабоу -аевоавд,бвдтеэаоаб -аевоаоэ,бвдтеэабда -аевоаде,бвдтеэавув -аевоадэ,бвдтеэаадб -аевоаеб,бвдтекээеэ -аевоаео,бвдтеэаотд -аевоатд,бвдтеэабаэ -аевоатк,бвдтеэабао -аевоакв,бвдтеэабоэ -аевоако,бвдтеэааео -аевобдо,бвдтеэааэа -аевобтв,бвдтеэабад -аевобте,бвдтеэабке -аевобкт,бвдтеэавет -аевобэу,бвдтекэуав -аевоваа,бвдтеэавде -аевовбб,бвдтекээее -аевовоу,бвдтеэаавк -аевовдт,бвдтеэаобу -аевовта,бвдтекээбу -аевовку,бвдтеэаодб -аевовэу,бвдтекээао -аевооаа,бвдтеэабка -аевооае,бвдтеэааок -аевоовд,бвдтекэуто -аевооод,бвдтеэавеа -аевоодо,бвдтеэаадв -аевооет,бвдтеэааед -аевоокк,бвдтеэавва -аевооэб,бвдтекээтк -аеводбв,бвдтекээтт -аеводда,бвдтеэавта -аеводду,бвдтеэавтб -аеводте,бвдтеэааоу -аеводук,бвдтеэаауу -аеводуэ,бвдтеэааут -аевоеоа,бвдтекэукк -аевоеод,бвдтеэавук -аевоедэ,бвдтеэавэк -аевоееу,бвдтекэука -аевоеут,бвдтекээко -аевоеук,бвдтеэавуэ -аевотае,бвдтекээтв -аевотда,бвдтеэаобб -аевотдб,бвдтеэаввт -аевотду,бвдтеэабба -аевотеб,бвдтеэаабв -аевоттб,бвдтеэаооо -аевотке,бвдтеэавбб -аевоткк,бвдтеэавба -аевотэу,бвдтекээев -аевотээ,бвдтеэаатэ -аевоуба,бвдтеэавво -аевоубе,бвдтеэабкт -аевоуод,бвдтеэабак -аевоуоэ,бвдтекэкэу -аевоуда,бвдтеэабвд -аевоуду,бвдтеэаоае -аевоуув,бвдтеэавуб -аевоууе,бвдтеэавее -аевоукт,бвдтеэабку -аевоуэт,бвдтеэаоек -аевоуээ,бвдтеэаоба -аевокау,бвдтекээуу -аевокаэ,бвдтеэаату -аевокбу,бвдтекэууб -аевоквд,бвдтекэууд -аевоквт,бвдтеэаоау -аевоквк,бвдтекэууо -аевокоо,бвдтекэкдв -аевокое,бвдтеэавев -аевокот,бвдтекэууа -аевокда,бвдтеэаввб -аевокдб,бвдтекэкдд -аевокет,бвдтекээуд -аевоэбу,бвдтекэкоэ -аевоэов,бвдтеэааву -аевдатв,бвдтекээуэ -аевдауа,бвдтеэавао -аевдаук,бвдтеэааке -аевдакт,бвдтеэабву -аевдаэе,бвдтеэаака -аевдбвт,бвдтекэкэк -аевдбдв,бвдтекээде -аевдбдэ,бвдтеэабоа -аевдбув,бвдтеэабкд -аевдбкб,бвдтеэаооу -аевдбке,бвдтеэаоде -аевдваэ,бвдтекэуко -аевдвба,бвдтекэкдб -аевдввд,бвдтеэаавв -аевдвоа,бвдтекээуа -аевдвдэ,бвдтеэаоеу -аевдвуэ,бвдтеэаадт -аевдвке,бвдтекээда -аевдооб,бвдтеэааку -аевдодт,бвдтеэабэа -аевдотт,бвдтеэавед -аевдоэб,бвдтеэавуе -аевдоэе,бвдтеэавтэ -аевддвб,бвдтекэкот -аевдддб,бвдтеэавкв -аевддтд,бвдтеэаоак -аевддув,бвдтеэавэб -аевддэу,бвдтеэааеу -аевдеба,бвдтеэавэо -аевдебо,бвдтеэааэв -аевдеуа,бвдтекэкаа -аевдекэ,бвдтекэкоа -аевдеэа,бвдтекээок -аевдтее,бвдтеэавто -аевдтек,бвдтекэуэо -аевдтта,бвдтекэкве -аевдтэб,бвдтекэуэв -аевдтэу,бвдтеэаваэ -аевдудд,бвдтекээув -аевдуде,бвдтеэаоуб -аевдуду,бвдтекээбе -аевдуук,бвдтеэаодо -аевдуэв,бвдтекэуэд -аевдкоэ,бвдтекэкоб -аевдкдо,бвдтекэквэ -аевдкдэ,бвдтеэаотт -аевдкув,бвдтеэаакб -аевеавт,бвдтеэавад -аевеавэ,бвдтеэабаб -аевеадк,бвдтеэаббу -аевеаук,бвдтекэкво -аевеакк,бвдтеэаоао -аевеаэб,бвдтекэквк -аевеаэв,бвдтеэавбе -аевеаэо,бвдтекээек -аевеббд,бвдтеэавдт -аевеббе,бвдтекэээв -аевебот,бвдтекээеа -аевебоу,бвдтеэавав -аевебео,бвдтеэавкд -аевебтт,бвдтеэабоб -аевебуб,бвдтекээкк -аевебув,бвдтекээоо -аевебкв,бвдтекээкт -аевевак,бвдтеэавтд -аевевбк,бвдтеэабэе -аевевуб,бвдтеэавеб -аевевув,бвдтеэабэу -аевевуу,бвдтекэкод -аевевке,бвдтекээед -аевевку,бвдтеэавдк -аевеоаа,бвдтеэавае -аевеодо,бвдтеэабко -аевеодк,бвдтекээаэ -аевеодэ,бвдтеэабкк -аевеотт,бвдтеэавда -аевеоуд,бвдтекэкде -аевеоуэ,бвдтеэавеэ -аевеоэе,бвдтеэаооб -аевеоэт,бвдтеэавкт -аеведоб,бвдтеэавау -аеведтв,бвдтекээду -аеведуэ,бвдтеэаода -аевеебэ,бвдтекээвв -аеветаа,бвдтеэааае -аеветук,бвдтеэабэв -аеветкб,бвдтеэааак -аеветэк,бвдтекэккт -аевеуве,бвдтеэавдб -аевеувэ,бвдтеэаотэ -аевеудо,бвдтекээуе -аевеуук,бвдтеэаоет -аевеукв,бвдтеэавод -аевеуэо,бвдтеэават -аевекао,бвдтеэавэв -аевеква,бвдтеэаоад -аевекоб,бвдтеэаввк -аевекот,бвдтеэабод -аевекоу,бвдтеэавоу -аевекео,бвдтекэктэ -аевекек,бвдтеэаоэк -аевекеэ,бвдтеэаоеэ -аевектэ,бвдтеэаобо -аевекуа,бвдтеэавбо -аевеккт,бвдтеэабок -аевекэб,бвдтекэкуо -аевеэбе,бвдтеэабвэ -аевеэвб,бвдтекээов -аевеэов,бвдтеэаоот -аевеэет,бвдтеэавоа -аевеэув,бвдтеэаоед -аевеэкэ,бвдтеэавов -аевеэээ,бвдтекэкэо -аевтаво,бвдтекэкке -аевтаед,бвдтеэаваб -аевтатэ,бвдтеэабук -аевтауд,бвдтеэавек -аевтакв,бвдтеэаоду -аевтбдк,бвдтеэаатб -аевтбеб,бвдтеэавоэ -аевтбуэ,бвдтекэккэ -аевтват,бвдтекэкэв -аевтвоб,бвдтеэавок -аевтвуэ,бвдтеэавбэ -аевтоао,бвдтекэкэб -аевтобэ,бвдтеэаоут -аевтоот,бвдтеэавка -аевтоуо,бвдтеэабвт -аевтоко,бвдтеэавео -аевтокк,бвдтеэаоее -аевтдао,бвдтеэавкб -аевтдбу,бвдтеэавку -аевтдод,бвдтеэаота -аевтдоэ,бвдтеэавуа -аевтдед,бвдтеэаоов -аевтдеу,бвдтеэаодк -аевтдка,бвдтеэаобд -аевтеао,бвдтеэаббк -аевтеод,бвдтеэаодв -аевттоо,бвдтеэаово -аевтубо,бвдтеэабео -аевтуву,бвдтеэабта -аевтута,бвдтеэаоуд -аевтуто,бвдтеэаоув -аевтктб,бвдтеэадда -аевткэт,бвдтеэаоое -аевтэуо,бвдтеэаокт -аевубвд,бвдтеэаоэб -аевувэв,бвдтеэаокк -аевуоуд,бвдтеэадеу -аевуебт,бвдтеэадбк -аеэвбд,бакоу -аувоаб,тэуе -аукэоу,бдк -акаааоад,эаэу -акааадвб,ббауд -акаавво,кбкв -аэааабаа,ббает -аэааабатааб,бббаб -аэааабео,бабту -аэааабууааб,баэот -аэааабка,баэке -аэааабкб,ббаву -бводету,в -боавааб,бвдтеккэук -бевэуэб,кате -бктбке,бвдтекэкеб -ооэвобд,эквд -оеоауа,екбк -оетаоэ,еуев -отэака,екэо -оуевву,уэуо -дбкэбт,туоб -дквабк,экдд -дэддуе,баэвк -еаевэв,бббад -еаувэе,бвдтеккдуд -евобэа,бвдтекэкеа -евобэб,бвдтекэкдэ -евеадт,бвдтекэкев -ееаау,ет -кааабаа,удту -кааабаб,эаэд -кааабав,удкт -кааабад,уваб -кааабае,уэдв -кааабау,увак -кааабак,ккад -кааабаэ,уобд -кааабба,уоеб -каааббв,уодт -каааббо,уээк -каааббд,ууат -каааббе,утеб -каааббт,удтк -каааббк,уовэ -каааббэ,уооа -кааабвб,уоок -кааабвв,уекд -кааабвд,уевк -кааабве,уоеу -кааабву,уоее -кааабвк,уоаэ -кааабвэ,ууеа -кааабоа,утко -кааабоб,уеда -кааабоо,кэтэ -кааабод,утвэ -кааабое,утуэ -кааабот,утдт -кааабоэ,уово -кааабда,уовд -кааабдб,укбе -кааабдв,удкв -кааабдо,уоак -кааабдд,увау -кааабде,уват -кааабду,уовв -кааабдк,уовт -кааабдэ,тээу -кааабеа,удкк -кааабеб,уобв -кааабев,уееб -кааабео,уоед -кааабед,уовб -кааабее,утвк -кааабет,уеое -кааабеу,уеке -кааабек,утоа -кааабеэ,уткв -кааабтб,уткб -кааабтв,уткк -кааабто,уккк -кааабтд,укеу -кааабте,уэбэ -кааабтт,уэое -кааабту,уэвэ -кааабтк,уэоа -кааабтэ,катт -кааабуа,уэеу -кааабуб,уэда -кааабув,уэеб -кааабуо,уэто -кааабуд,кдад -кааабуе,уэее -кааабут,уэтт -кааабуу,уэуэ -кааабук,уэук -кааабуэ,уэкт -кааабка,каао -кааабкв,уээд -кааабке,уэку -кааабкт,уэкк -кааабкэ,бааээ -кааабэа,бакто -кааабэв,кавв -кааабэд,каед -кааабэе,кавт -кааабэт,кавд -кааабэу,кавэ -кааабэк,кавк -каааваа,каоб -каааваб,каов -кааавав,каоо -кааавао,кбаа -кааавад,каоэ -кааавае,уэвд -кааават,каде -кааавау,ката -кааавак,каеэ -каааваэ,кадв -кааавба,каев -кааавбб,каее -кааавбв,катб -кааавбо,ккдт -кааавбд,кэак -кааавбе,каэв -кааавбт,каэт -кааавбу,кауэ -кааавбк,каув -кааавбэ,кака -каааввб,каэк -каааввв,кбад -кааавве,кбэа -каааввт,кбэк -кааавву,кбэу -каааввк,кбээ -каааввэ,квбд -кааавоа,квбо -кааавоб,кввб -кааавов,кввд -кааавоо,кооэ -кааавод,кодв -кааавое,коду -кааавот,дуеу -кааавоу,кодэ -кааавок,котд -кааавоэ,коте -кааавда,котт -кааавдб,кдта -кааавдв,ккуд -кааавдо,ккэт -кааавдд,тбве -кааавде,кдек -кааавдт,ккае -кааавду,ккбо -кааавдк,ккэв -кааавдэ,кэав -кааавеа,ккэб -кааавеб,ккэо -кааавев,кэау -кааавео,кэат -кааавед,ккэу -кааавее,кэкк -кааавет,кэдб -кааавеу,уоод -кааавек,кэеу -кааавеэ,тэку -кааавта,уову -кааавтб,кэув -кааавтв,эаво -кааавто,кэуа -кааавтд,кэуб -кааавте,кэуо -кааавтт,кэуе -кааавту,кэуд -кааавтк,кэук -кааавтэ,кэкд -кааавуа,кэкт -кааавуб,кэку -кааавув,кэкэ -кааавуд,уквв -кааавуе,уеве -кааавут,кээв -кааавуу,кээе -кааавук,кээд -кааавуэ,кээт -кааавка,эабэ -кааавкб,эаао -кааавкв,эаад -кааавко,эаве -кааавкд,эабб -кааавке,эабк -кааавкт,эабу -кааавку,эабе -кааавкк,эабт -кааавкэ,эавв -кааавэа,эава -кааавэб,эавб -кааавэв,уэев -кааавэо,эавд -кааавэд,эавэ -кааавэе,эаоа -кааавэт,эаод -кааавэк,эада -кааавээ,укут -каааоаб,эаеа -каааоав,эаээ -каааоао,эаэе -каааоад,эбаб -каааоае,эбао -каааоат,эбаэ -каааоау,эбво -каааоак,эбвд -каааоаэ,эбве -каааоба,эбоб -каааобб,эбвэ -каааобв,эбву -каааобо,эбот -каааобд,эбод -каааобе,эктэ -каааобт,туео -каааобу,эует -каааобк,бадое -каааобэ,баубо -каааова,эуэа -каааовб,эуэб -каааовв,эувв -каааовд,эувд -каааове,эктв -каааовт,эудк -каааову,эуву -каааооа,экдв -каааооб,эккэ -каааоот,ээаб -каааооу,ээбт -каааоок,бааое -каааооэ,ээбк -каааодб,бааеа -каааодв,баадк -каааодо,баадэ -каааодд,баатб -каааоде,баатв -каааоду,баато -каааодэ,бааеу -каааоеа,баата -каааоев,баауо -каааоед,баауе -каааоее,баака -каааоет,баакд -каааоеу,баако -каааоек,баакк -каааоеэ,баакэ -каааота,бааэв -каааотв,бабае -каааото,бабат -каааотд,баббт -каааоте,бабуб -каааоттт,бабув -каааоту,бабка -каааотэ,бавбу -каааоуа,бавбк -каааоуо,бадеу -каааоуд,бадет -каааоуу,бадтд -каааоук,баеут -каааока,баубе -каааокв,баукт -каааоко,увтк -каааоке,бакот -каааокк,туав -каааоэа,екук -каааоэб,уетэ -каааоэв,ттбд -каааоэо,баэод -каааоэд,уоэу -каааоэе,баэде -каааоэт,баэдт -каааоэу,баэду -каааоэк,баэеа -каааоээ,баэдк -кааадаа,баэдэ -кааадаб,баэет -кааадав,теае -кааадао,баэто -кааадад,бааэо -кааадае,баэту -кааадат,баэуб -кааадау,ууук -кааадак,какк -кааадаэ,баэуд -кааадба,баэуе -кааадбв,баэут -кааадбт,ббаве -кааадбу,ббаот -кааадбк,ббаее -кааадбэ,ббаед -кааадва,ббатв -кааадвв,бббае -кааадво,бббат -кааадве,баэва -кааадвт,бвдтекктет -кааадвк,баудо -кааадов,бвдтеккэат -кааадое,бвдтеккэко -кааадот,бвдтеккэку -кааадоу,бвдтеккэуе -кааадок,бвдтеккэкб -кааадоэ,бвдтеккээо -каааддб,бвдтекэбдт -каааддв,бвдтекэдтв -кааадде,бвдтекэуаб -каааддт,бвдтекэутт -каааддк,екэт -каааддэ,бвдтекэктв -каааеаб,бвдтекэкек -каааеав,бвдтекэкеу -каааеао,бвдтекэкта -каааеад,бвдтекэкту -каааеае,бвдтекэкуб -эааабаа,бвдтеккэтк -эааабаб,ббатд -эааабао,бвдтекэбот -эааабад,бвдтекэбду -эааабае,уеэб -эааабат,бвдтеккуук -эааабау,эбвк -эааабаэ,бвдтеккуэв -эааабба,бвдтекккат -эаааббб,бвдтекккаэ -эаааббв,уэеа -эаааббд,бвдтекэтуб -эаааббе,кбаб -эаааббт,кбав -эаааббу,кбао -эааабва,кваа -эааабвб,квбе -эааабвв,бабаа -эааабво,эаае -эааабвд,бабав -эааабве,эаау -эааабвт,бабад -эааабву,эааэ -эааабвк,эаба -эааабвэ,эаеб -эааабоа,ээаэ -эааабоб,баадо -эааабов,бааед -эааабоо,бааек -эааабод,баатт -эааабое,баате -эааабот,бааеэ -эааабоу,баауд -эааабок,бабак -эааабоэ,уова -эааабда,баббб -эааабдб,баатд -эааабдо,экэв -эааабдд,баббв -эааабде,баббд -эааабдт,баббе -эааабдуааб,баббу -эааабдкааб,бабвб -эааабеа,бабвв -эааабеб,бабву -эааабевааб,бабвк -эааабед,бабтк -эааабее,бабтэ -эааабет,бвдтекэдта -эааабеу,баауб -эааабек,бабуо -эааабеэ,экоэ -эааабта,бабуе -эааабтб,бабэв -эааабтв,бабэо -эааабто,баваа -эааабтд,бвдтекэтав -эааабте,бавао -эааабтт,бавад -эааабту,бвдтекэттэ -эааабтк,бавбб -эааабтэ,бавва -эааабуа,бвдтекэттк -эааабуб,бадоу -эааабув,бакбк -эааабуе,бвдтекэтдв -эааабут,баэоа -эааабук,бакуа -эааабуэ,баэтв -эааабкб,бвдтеккквк -эааабквааб,бббво -эааабко,бвдтекккдо -эааабкд,бвдтекккуе -эааабку,бвдтекэтуа -эааабкэ,бвдтекэтэе -эаааваа,бвдтекэкбт -эаааваб,бвдтекэкду -эааавав,ббаэв -эааавао,бвдтекэкеэ -эааавад,бвдтеэаокб -эааавае,бавбо -эааават,бвдтеэаоэу -эааавау,бвдтеэадбт -эааавде,ббаоо -эаааеаа,бвдтеккков -эаааеаб,ббакд -эаааеав,ббоов -эаааеао,бвдтеккэке -эаааеад,бвдтеккэкт -эаааеае,бвдтекккбд -эаааеат,бвдтеккква -эаааеау,бвдтеккээд -эаааеак,бвдтекэбоо -эаааеаэ,бвдтекэтуэ -эаааеба,бвдтекэтка -эаааебб,бааду -эаааебв,бвдтекэква -эаааебо,кбко -эаааебд,уэтд -эаааебе,кбкт -эаааебт,кбке -эаааебу,кбэт -эаааебк,кбэе -эаааевб,квао -эаааевв,квад -эаааево,квак -эаааевд,квба -эаааеве,кваэ -эаааевэ,кввт -эаааеоа,коот -эаааеоб,кооу -эаааеов,кэбб -эаааеоо,кэба -эаааеод,кэбв -эаааеое,кэет -эаааеот,кэек -эаааеоу,кээа -эаааеок,ууев -эаааеоэ,ууеб -эаааеда,баэок -эаааедб,эадб -эаааедв,баэтб -эаааеэу,бвдтекэутд -эаааеэк,бвдтекэуаа -эаааеээ,бвдтекэтээ -эааатаа,кбаэ -эааатаб,бвдтекэктт diff --git a/node_modules/csvtojson/test/data/lineBreak b/node_modules/csvtojson/test/data/lineBreak deleted file mode 100644 index bee6c82..0000000 --- a/node_modules/csvtojson/test/data/lineBreak +++ /dev/null @@ -1,8 +0,0 @@ -F_Year,Event ID,Event Date,Time,Location,Rotue,TOC,Person type,Injury degree,FWI,Precursor,Gender,Under 16,Apparent age,Fatal,Alcohol/Drugs,Impairment,Encumbrances & Group Travel,Risk-taking Behaviour,Sub-standard conditions,Design,Operational error,Crowd management,Non-standard operation,Rushing,3rd Party Behaviour,Narrative Full,Period -2013/2014,2914930,3/2/14,23:02:00,Pembrey and Burry Port,Wales,Arriva Trains Wales,Passenger,Minor non-reportable,0.001,Passenger falls from platform onto track (no electric shock nor struck by train) under the influence,Male,,Unknown,,x,,,,,,,,,,,"A report was initially received from Dyfed Powys Police that a person had been struck by a train at Pembrey and Burry Port station and that an ambulance was in attendance (the ambulance was the source of the police report). It later transpired that the person was inebriated and had fallen off of Pembrey platform after attempting to board the train after the doors were closed and the train was ready to depart. It has been confirmed (by Pembrey signaller) that the person has not been struck by the train and has NOT fallen under the train. One police officer on site. - -Later advice from the train crew working 2B21 2135 Milford Haven to Cardiff Central stated the person had attempted to board 2B21 as it was ready to depart from the platform, bounced off of the train falling backwards, had then gotten back up and then fallen off of the platform and onto the track behind the train. The persons injuries (if any) have not been disclosed. - -The person was been removed from the track and normal working resumed from 2326. The on call MOM was called to attend and act a RIO if required, but was stood down after the incident was resolved. - -The initial call came from Dyfed Powys Police under reference 333 when it was advised that their report had come from the Ambulance Service (reference 1523673) and the BTP were also made aware by Dyfed Powys Police under their reference 470.",13 diff --git a/node_modules/csvtojson/test/data/longHeader b/node_modules/csvtojson/test/data/longHeader deleted file mode 100644 index b34aede..0000000 --- a/node_modules/csvtojson/test/data/longHeader +++ /dev/null @@ -1,2 +0,0 @@ -Date,Advertiser,Advertiser ID,Advertiser Status,Advertiser Integration Code,Insertion Order,Insertion Order ID,Insertion Order Status,Insertion Order Integration Code,Partner Currency,Advertiser Currency,Clicks,% Clicks Leading to Conversions,Conversions per 1000 Impressions,CPM Fee 1 (Adv Currency),CPM Fee 1 (Partner Currency),CPM Fee 1 (USD),CPM Fee 2 (Adv Currency),CPM Fee 2 (Partner Currency),CPM Fee 2 (USD),Click Rate (CTR),Data Fees (Adv Currency),Data Fees (Partner Currency),Data Fees (USD),Impressions,% Impressions Leading to Conversions,Post-Click Conversions,Post-View Conversions,Media Cost (Advertiser Currency),Media Cost eCPA (PC) (Adv Currency),Media Cost eCPA (PC) (Partner Currency),Media Cost eCPA (PC) (USD),Media Cost eCPA (PV) (Adv Currency),Media Cost eCPA (PV) (Partner Currency),Media Cost eCPA (PV) (USD),Media Cost eCPA (Adv Currency),Media Cost eCPA (Partner Currency),Media Cost eCPA (USD),Video Media Cost eCPCV (Adv Currency),Video Media Cost eCPCV (Partner Currency),Video Media Cost eCPCV (USD),Media Cost eCPC (Adv Currency),Media Cost eCPC (Partner Currency),Media Cost eCPC (USD),Media Cost eCPM (Adv Currency),Media Cost eCPM (Partner Currency),Media Cost eCPM (USD),Media Cost (Partner Currency),Media Cost (USD),Media Fee 1 (Adv Currency),Media Fee 1 (Partner Currency),Media Fee 1 (USD),Media Fee 2 (Adv Currency),Media Fee 2 (Partner Currency),Media Fee 2 (USD),DCM Post-Click Revenue,DCM Post-View Revenue,Profit (Advertiser Currency),Profit eCPM (Adv Currency),Profit eCPM (Partner Currency),Profit eCPM (USD),Profit Margin,Profit (Partner Currency),Profit (USD),Revenue (Adv Currency),Revenue eCPA (PC) (Adv Currency),Revenue eCPA (PC) (Partner Currency),Revenue eCPA (PC) (USD),Revenue eCPA (PV) (Adv Currency),Revenue eCPA (PV) (Partner Currency),Revenue eCPA (PV) (USD),Revenue eCPA (Adv Currency),Revenue eCPA (Partner Currency),Revenue eCPA (USD),Video Revenue eCPCV (Adv Currency),Video Revenue eCPCV (Partner Currency),Video Revenue eCPCV (USD),Revenue eCPC (Adv Currency),Revenue eCPC (Partner Currency),Revenue eCPC (USD),Revenue eCPM (Adv Currency),Revenue eCPM (Partner Currency),Revenue eCPM (USD),Revenue (Partner Currency),Revenue (USD),Complete Views (Video),First-Quartile Views (Video),Fullscreens (Video),Midpoint Views (Video),Audio Mutes (Video),Pauses (Video),Starts (Video),Skips (Video),Third-Quartile Views (Video),Total Conversions,Total Media Cost (Advertiser Currency),Total Media Cost eCPA (PC) (Adv Currency),Total Media Cost eCPA (PC) (Partner Currency),Total Media Cost eCPA (PC) (USD),Total Media Cost eCPA (PV) (Adv Currency),Total Media Cost eCPA (PV) (Partner Currency),Total Media Cost eCPA (PV) (USD),Total Media Cost eCPA (Adv Currency),Total Media Cost eCPA (Partner Currency),Total Media Cost eCPA (USD),Total Video Media Cost eCPCV (Adv Currency),Total Video Media Cost eCPCV (Partner Currency),Total Video Media Cost eCPCV (USD),Total Media Cost eCPC (Adv Currency),Total Media Cost eCPC (Partner Currency),Total Media Cost eCPC (USD),Total Media Cost eCPM (Adv Currency),Total Media Cost eCPM (Partner Currency),Total Media Cost eCPM (USD),Total Media Cost (Partner Currency),Total Media Cost (USD),Completion Rate (Video) -8/26/16,1000 AAAAAA AAAA AAAA - AAAAAA - #AAAAAAAA - AAA,1161431,Active,,1010101010 - 1000 AAAAAAA AAAA AAAA - AAAAAAA AAAA - 28 Jun 2016 - AAAAAAA - #AAAAAAAA - AAAAAAA,2427940,Paused,CTR,CAD,CAD,2,0.00%,0,0,0,0,0,0,0,0.13%,0,0,0,1540,0.00%,0,0,7.476659,0,0,0,0,0,0,0,0,0,0,0,0,3.738329,3.73833,2.892061,4.854973,4.854973,3.755923,7.476659,5.784121,0.971966,0.971966,0.751936,0,0,0,0,0,10.031375,6.51388,6.51388,5.035214,54.26%,10.031375,7.75423,18.48,0,0,0,0,0,0,0,0,0,0,0,0,9.24,9.24,7.145143,12,12,9.279407,18.48,14.290287,0,0,0,0,0,0,0,0,0,0,8.448625,0,0,0,0,0,0,0,0,0,0,0,0,4.224312,4.224312,3.268029,5.48612,5.48612,4.244193,8.448625,6.536057,0.00% \ No newline at end of file diff --git a/node_modules/csvtojson/test/data/noheaderWithVaryColumnNum b/node_modules/csvtojson/test/data/noheaderWithVaryColumnNum deleted file mode 100644 index f4a2faf..0000000 --- a/node_modules/csvtojson/test/data/noheaderWithVaryColumnNum +++ /dev/null @@ -1,2 +0,0 @@ -John,25,XXX -Samantha,28,YYY,7 diff --git a/node_modules/csvtojson/test/data/noheadercsv b/node_modules/csvtojson/test/data/noheadercsv deleted file mode 100644 index 6a302b4..0000000 --- a/node_modules/csvtojson/test/data/noheadercsv +++ /dev/null @@ -1,5 +0,0 @@ -CC102-PDMI-001,eClass_5.1.3,10/3/2014,12,40,green,40 -CC200-009-001,eClass_5.1.3,11/3/2014,5,3,blue,38 -CC200-070-001,eClass_5.1.3,10/4/2014,15,13,red,45 -CC200-099,eClass_5.1.3,10/5/2014,20,17,orange,28 -CC200-100,eClass_5.1.3,10/3/2014,5,4,black,32 diff --git a/node_modules/csvtojson/test/data/pipeAsQuote b/node_modules/csvtojson/test/data/pipeAsQuote deleted file mode 100644 index 71b9085..0000000 --- a/node_modules/csvtojson/test/data/pipeAsQuote +++ /dev/null @@ -1,2 +0,0 @@ -test,test2,test3 -blag,blagh,|blahhh, blah| diff --git a/node_modules/csvtojson/test/data/quoteTolerant b/node_modules/csvtojson/test/data/quoteTolerant deleted file mode 100644 index 142dd71..0000000 --- a/node_modules/csvtojson/test/data/quoteTolerant +++ /dev/null @@ -1,2 +0,0 @@ -"Style","Description","SKU","BusinessAreaCode","BusinessAreaDescription","DepartmentCode","DepartmentDescription","ClassCode","ClassDescription","ColorCode","ColorDescription","SizeCode","SizeDescription","PrimaryMaterialCode","PrimaryMaterialDescription","VendorCode","VendorDescription","CurrentRetail" -"503951518","OVERSIZE ROUND GOLD PENDANT ON 32" THICK BLACK CORD","00505039515193","W12","Jewelry","1231","Jewelry","123111","D2 New Jewelry Necklace","70","GOLD","100","1 Size","065","Costume/Imitation","3522","KENNETH JAY LANE, INC.","79.0000" diff --git a/node_modules/csvtojson/test/data/tabsv b/node_modules/csvtojson/test/data/tabsv deleted file mode 100644 index 9719cfd..0000000 --- a/node_modules/csvtojson/test/data/tabsv +++ /dev/null @@ -1,5 +0,0 @@ -JournalCode JournalLib EcritureNum EcritureDate CompteNum CompteLib CompAuxNum CompAuxLib PieceRef PieceDate EcritureLib Debit Credit EcritureLet DateLet ValidDate Montantdevise Idevise -AA BBBBBB 0 20140701 CCCCCCCC ddddddddddddddd ZZZZZZZ1 20140701 EEEEE EEE EEEEEE 34,81 0,00 20150630 0,00 -AA BBBBBB 0 20140701 CCCCCCCC ddddddddddddddd ZZZZZZZ2 20140701 EEEEE EEE EEEEEE 12,02 0,00 20150630 0,00 -AA BBBBBB 0 20140701 CCCCCCCC ddddddddddddddd ZZZZZZZ3 20140701 EEEEE EEE EEEEEE 37,98 0,00 20150630 0,00 -AA BBBBBB 0 20140701 CCCCCCCC ddddddddddddddd ZZZZZZZ4 20140701 EEEEE EEE EEEEEE 27,48 0,00 20150630 0,00 diff --git a/node_modules/csvtojson/test/data/testData b/node_modules/csvtojson/test/data/testData deleted file mode 100644 index 4f57323..0000000 --- a/node_modules/csvtojson/test/data/testData +++ /dev/null @@ -1,3 +0,0 @@ -date,employee.name,employee.age,employee.number,address.0,address.1,employee.key.0,employee.key.1,*omit*id -2012-02-12,Eric,31,51234,Dunno Street,Kilkeny Road,key1,key2,2 -2012-03-06,Ted,28,51289,O FUTEBOL.¿,Tormore,key3,key4,4 \ No newline at end of file diff --git a/node_modules/csvtojson/test/data/testEol b/node_modules/csvtojson/test/data/testEol deleted file mode 100644 index 5f313dc..0000000 --- a/node_modules/csvtojson/test/data/testEol +++ /dev/null @@ -1 +0,0 @@ -John,25,xxx Samantha,28,yyy diff --git a/node_modules/csvtojson/test/data/trailingComma b/node_modules/csvtojson/test/data/trailingComma deleted file mode 100644 index 86dec48..0000000 --- a/node_modules/csvtojson/test/data/trailingComma +++ /dev/null @@ -1,3 +0,0 @@ -field1,field2 -value1,value2, -value1,value2, diff --git a/node_modules/csvtojson/test/data/twodoublequotes b/node_modules/csvtojson/test/data/twodoublequotes deleted file mode 100644 index 08046c6..0000000 --- a/node_modules/csvtojson/test/data/twodoublequotes +++ /dev/null @@ -1,2 +0,0 @@ -title,actors,data,uuid,fieldA,fieldB -"""","[""Neil"", ""Bill"""", ""Carl"",""Richard"",""Linus""]",xyabcde,"fejal""eifa","bnej""""falkfe","""eisjfes""" diff --git a/node_modules/csvtojson/test/testCSVConverter.fork.ts b/node_modules/csvtojson/test/testCSVConverter.fork.ts deleted file mode 100644 index a4679c0..0000000 --- a/node_modules/csvtojson/test/testCSVConverter.fork.ts +++ /dev/null @@ -1,682 +0,0 @@ -// import {Converter} from "../src/Converter"; -// import csv from "../src"; -// var assert = require("assert"); -// var fs = require("fs"); -// var sandbox = require("sinon").sandbox.create(); -// var file = __dirname + "/data/testData"; -// var trailCommaData = __dirname + "/data/trailingComma"; -// describe("CSV Convert in Background Process", function () { -// afterEach(function () { -// sandbox.restore(); -// }); - - -// it("should read from a stream", function (done) { -// var obj = new Converter({ -// fork: true -// }); -// var stream = fs.createReadStream(file); -// obj.then(function (obj) { -// assert.equal(obj.length, 2); -// done(); -// },(err)=>{ -// console.log(err.toString()); -// }); -// stream.pipe(obj); -// }); - -// it("should call onNext once a row is parsed.", function (done) { -// var obj = new Converter({fork:true}); -// var stream = fs.createReadStream(file); -// var called = false; -// obj.subscribe(function (resultRow) { -// assert(resultRow); -// called = true; -// }); -// obj.on("done", function () { -// assert(called); -// done(); -// }); -// stream.pipe(obj); -// }); - -// it("should emit end_parsed message once it is finished.", function (done) { -// var obj = new Converter({fork:true}); -// obj.then(function (result) { -// assert(result); -// assert(result.length === 2); -// assert(result[0].date); -// assert(result[0].employee); -// assert(result[0].employee.name); -// assert(result[0].employee.age); -// assert(result[0].employee.number); -// assert(result[0].employee.key.length === 2); -// assert(result[0].address.length === 2); -// done(); -// }); -// fs.createReadStream(file).pipe(obj); -// }); - -// it("should handle traling comma gracefully", function (done) { -// var stream = fs.createReadStream(trailCommaData); -// var obj = new Converter({fork:true}); -// obj.then(function (result) { -// assert(result); -// assert(result.length > 0); -// done(); -// }); -// stream.pipe(obj); -// }); - -// it("should handle comma in column which is surrounded by qoutes", function (done) { -// var testData = __dirname + "/data/dataWithComma"; -// var rs = fs.createReadStream(testData); -// var obj = new Converter({ -// "quote": "#", -// "fork":true -// }); -// obj.then(function (result) { -// assert(result[0].col1 === "\"Mini. Sectt"); -// assert.equal(result[3].col2, "125001,fenvkdsf"); -// // console.log(result); -// done(); -// }); -// rs.pipe(obj); -// }); - -// it("should be able to convert a csv to column array data", function (done) { -// var columArrData = __dirname + "/data/columnArray"; -// var rs = fs.createReadStream(columArrData); -// var result:any = {}; -// var csvConverter = new Converter({fork:true}); -// //end_parsed will be emitted once parsing finished -// csvConverter.then(function () { -// assert(result.TIMESTAMP.length === 5); -// done(); -// }); - -// //record_parsed will be emitted each time a row has been parsed. -// csvConverter.subscribe(function (resultRow, rowIndex) { -// for (var key in resultRow) { -// if (resultRow.hasOwnProperty(key)) { -// if (!result[key] || !(result[key] instanceof Array)) { -// result[key] = []; -// } -// result[key][rowIndex] = resultRow[key]; -// } -// } -// }); -// rs.pipe(csvConverter); -// }); - -// it("should be able to convert csv string directly", function (done) { -// var testData = __dirname + "/data/testData"; -// var data = fs.readFileSync(testData).toString(); -// var csvConverter = new Converter({fork:true}); -// //end_parsed will be emitted once parsing finished -// csvConverter.then(function (jsonObj) { -// assert.equal(jsonObj.length, 2); -// }); -// csvConverter.fromString(data).then(function (jsonObj) { -// assert(jsonObj.length === 2); -// done(); -// }); -// }); - -// it("should be able to convert csv string with error", function (done) { -// var testData = __dirname + "/data/dataWithUnclosedQuotes"; -// var data = fs.readFileSync(testData).toString(); -// var csvConverter = new Converter({fork:true}); -// csvConverter.fromString(data).then(undefined, function (err) { -// // console.log(err); -// assert(err); -// assert.equal(err.err, "unclosed_quote"); -// done(); -// }); -// }); - -// it("should be able to convert csv string without callback provided", function (done) { -// var testData = __dirname + "/data/testData"; -// var data = fs.readFileSync(testData).toString(); -// var csvConverter = new Converter({fork:true}); -// //end_parsed will be emitted once parsing finished -// csvConverter.then(function (jsonObj) { -// assert(jsonObj.length === 2); -// done(); -// }); -// csvConverter.fromString(data); -// }); - -// it("should be able to handle columns with double quotes", function (done) { -// var testData = __dirname + "/data/dataWithQoutes"; -// var data = fs.readFileSync(testData).toString(); -// var csvConverter = new Converter({fork:true}); -// csvConverter.fromString(data).then(function (jsonObj) { -// assert(jsonObj[0].TIMESTAMP === '13954264"22', JSON.stringify(jsonObj[0].TIMESTAMP)); - -// assert(jsonObj[1].TIMESTAMP === 'abc, def, ccc', JSON.stringify(jsonObj[1].TIMESTAMP)); -// done(); -// }); -// }); - -// it("should be able to handle columns with two double quotes", function (done) { -// var testData = __dirname + "/data/twodoublequotes"; -// var data = fs.readFileSync(testData).toString(); -// var csvConverter = new Converter({fork:true}); -// csvConverter.fromString(data).then(function (jsonObj) { -// assert.equal(jsonObj[0].title, "\""); -// assert.equal(jsonObj[0].data, "xyabcde"); -// assert.equal(jsonObj[0].uuid, "fejal\"eifa"); -// assert.equal(jsonObj[0].fieldA, "bnej\"\"falkfe"); -// assert.equal(jsonObj[0].fieldB, "\"eisjfes\""); -// done(); -// }); -// }); - -// it("should handle empty csv file", function (done) { -// var testData = __dirname + "/data/emptyFile"; -// var rs = fs.createReadStream(testData); -// var csvConverter = new Converter({fork:true}); -// csvConverter.then(function (jsonObj) { -// assert(jsonObj.length === 0); -// done(); -// }); -// rs.pipe(csvConverter); -// }); - -// it("should parse large csv file", function (done) { -// var testData = __dirname + "/data/large-csv-sample.csv"; -// var rs = fs.createReadStream(testData); -// var csvConverter = new Converter({fork:true}); -// var count = 0; -// csvConverter.subscribe(function () { -// // console.log(arguments); -// count++; -// }); -// csvConverter.then(function () { -// assert.equal(count, 5290); -// done(); -// }); -// rs.pipe(csvConverter); -// }); - -// it("should parse data and covert to specific types", function (done) { -// var testData = __dirname + "/data/dataWithType"; -// var rs = fs.createReadStream(testData); -// var csvConverter = new Converter({ -// fork:true, -// checkType: true, -// colParser: { -// "column6": "string", -// "column7": "string" -// } -// }); -// csvConverter.subscribe(function (d) { -// assert(typeof d.column1 === "number"); -// assert(typeof d.column2 === "string"); -// assert.equal(d["colume4"], "someinvaliddate"); -// assert(d.column5.hello === "world"); -// assert(d.column6 === '{"hello":"world"}'); -// assert(d.column7 === "1234"); -// assert(d.column8 === "abcd"); -// assert(d.column9 === true); -// assert(d.column10[0] === 23); -// assert(d.column10[1] === 31); -// assert(d.column11[0].hello === "world"); -// assert(d["name#!"] === false); -// }); -// csvConverter.on("done", function () { -// done(); -// }); -// rs.pipe(csvConverter); -// }); - -// it("should turn off field type check", function (done) { -// var testData = __dirname + "/data/dataWithType"; -// var rs = fs.createReadStream(testData); -// var csvConverter = new Converter({ -// fork:true, -// checkType: false -// }); -// csvConverter.subscribe(function (d) { -// assert(typeof d.column1 === "string"); -// assert(typeof d.column2 === "string"); -// assert(d["column3"] === "2012-01-01"); -// assert(d["colume4"] === "someinvaliddate"); -// assert(d.column5 === '{"hello":"world"}'); -// assert.equal(d["column6"], '{"hello":"world"}'); -// assert(d["column7"] === "1234"); -// assert(d["column8"] === "abcd"); -// assert(d.column9 === "true"); -// assert(d.column10[0] === "23"); -// assert(d.column10[1] === "31"); -// assert(d["name#!"] === 'false'); -// }); -// csvConverter.then(function () { -// done(); -// }); -// rs.pipe(csvConverter); -// }); - -// it("should emit data event correctly", function (done) { -// var testData = __dirname + "/data/large-csv-sample.csv"; - -// var csvConverter = new Converter({ -// fork:true -// },{objectMode:true}); -// var count = 0; -// csvConverter.on("data", function (d) { -// count++; -// }); -// csvConverter.on("done", function () { -// assert.equal(csvConverter.parsedLineNumber, 5290); -// done(); -// }); -// var rs = fs.createReadStream(testData); -// rs.pipe(csvConverter); -// }); - -// it("should process column with linebreaks", function (done) { -// var testData = __dirname + "/data/lineBreak"; -// var rs = fs.createReadStream(testData); -// var csvConverter = new Converter({ -// fork:true, -// checkType: true -// }); -// csvConverter.subscribe(function (d) { -// assert(d.Period === 13); -// assert(d["Apparent age"] === "Unknown"); -// done(); -// }); -// rs.pipe(csvConverter); -// }); - -// it("be able to ignore empty columns", function (done) { -// var testData = __dirname + "/data/dataIgnoreEmpty"; -// var rs = fs.createReadStream(testData); -// var st = rs.pipe(csv({ -// ignoreEmpty: true , -// fork:true -// })); -// st.then(function (res) { -// var j = res[0]; -// assert(res.length === 3); -// assert(j.col2.length === 2); -// assert(j.col2[1] === "d3"); -// assert(j.col4.col3 === undefined); -// assert(j.col4.col5 === "world"); -// assert(res[1].col1 === "d2"); -// assert(res[2].col1 === "d4"); -// done(); -// }); -// }); - -// it("should allow no header", function (done) { -// var testData = __dirname + "/data/noheadercsv"; -// var rs = fs.createReadStream(testData); -// var st = rs.pipe(new Converter({ -// noheader: true, -// fork:true -// })); -// st.then(function (res) { -// var j = res[0]; -// assert(res.length === 5); -// assert(j.field1 === "CC102-PDMI-001"); -// assert(j.field2 === "eClass_5.1.3"); -// done(); -// }); -// }); - -// it("should allow customised header", function (done) { -// var testData = __dirname + "/data/noheadercsv"; -// var rs = fs.createReadStream(testData); -// var st = rs.pipe(new Converter({ -// noheader: true, -// headers: ["a", "b"], -// fork:true -// })); -// st.then(function (res) { -// var j = res[0]; -// assert(res.length === 5); -// assert(j.a === "CC102-PDMI-001"); -// assert(j.b === "eClass_5.1.3"); -// assert(j.field3 === "10/3/2014"); -// done(); -// }); -// }); - -// it("should allow customised header to override existing header", function (done) { -// var testData = __dirname + "/data/complexJSONCSV"; -// var rs = fs.createReadStream(testData); -// var st = rs.pipe(new Converter({ -// headers: [], -// fork:true -// })); -// st.then(function (res) { -// var j = res[0]; -// assert(res.length === 2); -// assert(j.field1 === "Food Factory"); -// assert(j.field2 === "Oscar"); -// done(); -// }); -// }); - -// it("should handle when there is an empty string", function (done) { -// var testData = __dirname + "/data/dataWithEmptyString"; -// var rs = fs.createReadStream(testData); -// var st = rs.pipe(new Converter({ -// noheader: true, -// headers: ["a", "b", "c"], -// checkType: true, -// fork:true -// })); -// st.then(function (res) { -// var j = res[0]; - -// // assert(res.length===2); -// assert(j.a === "green"); -// assert(j.b === 40); -// assert.equal(j.c, ""); -// done(); -// }); -// }); - -// it("should detect eol correctly when first chunk is smaller than header row length", function (done) { -// var testData = __dirname + "/data/dataNoTrimCRLF"; -// var rs = fs.createReadStream(testData, { highWaterMark: 3 }); - -// var st = rs.pipe(new Converter({ -// trim: false, -// fork:true -// })); -// st.then(function (res) { -// var j = res[0]; -// assert(res.length === 2); -// assert(j.name === "joe"); -// assert(j.age === "20"); -// assert.equal(res[1].name, "sam"); -// assert.equal(res[1].age, "30"); -// done(); -// }); -// }); - -// it("should detect eol correctly when first chunk ends in middle of CRLF line break", function (done) { -// var testData = __dirname + "/data/dataNoTrimCRLF"; -// var rs = fs.createReadStream(testData, { highWaterMark: 9 }); - -// var st = rs.pipe(new Converter({ -// trim: false, -// fork:true -// })); -// st.then(function (res) { -// var j = res[0]; -// assert(res.length === 2); -// assert(j.name === "joe"); -// assert(j.age === "20"); -// assert.equal(res[1].name, "sam"); -// assert.equal(res[1].age, "30"); -// done(); -// }); -// }); - -// it("should emit eol event when line ending is detected as CRLF", function (done) { -// var testData = __dirname + "/data/dataNoTrimCRLF"; -// var rs = fs.createReadStream(testData); - -// var st = rs.pipe(new Converter({ -// fork:true -// })); -// var eolCallback = sandbox.spy(function (eol) { -// assert.equal(eol, "\r\n"); -// }); -// st.on("eol", eolCallback); -// st.then(function () { -// assert.equal(eolCallback.callCount, 1, 'should emit eol event once'); -// done(); -// }) -// }); - -// it("should emit eol event when line ending is detected as LF", function (done) { -// var testData = __dirname + "/data/columnArray"; -// var rs = fs.createReadStream(testData); - -// var st = rs.pipe(new Converter({ -// fork:true -// })); -// var eolCallback = sandbox.spy(function (eol) { -// assert.equal(eol, "\n"); -// }); -// st.on("eol", eolCallback); -// st.then(function () { -// assert.equal(eolCallback.callCount, 1, 'should emit eol event once'); -// done(); -// }) -// }); - -// it("should remove the Byte Order Mark (BOM) from input", function (done) { -// var testData = __dirname + "/data/dataNoTrimBOM"; -// var rs = fs.createReadStream(testData); -// var st = rs.pipe(new Converter({ -// trim: false, -// fork:true -// })); -// st.then( function (res) { -// var j = res[0]; - -// assert(res.length===2); -// assert(j.name === "joe"); -// assert(j.age === "20"); -// done(); -// }); -// }); - -// it("should set output as csv", function (done) { -// var testData = __dirname + "/data/complexJSONCSV"; -// var rs = fs.createReadStream(testData); -// var numOfRow = 0; -// csv({ output: "csv",fork:true }) -// .fromStream(rs) -// .subscribe(function (row, idx) { -// numOfRow++; -// assert(row); -// assert(idx >= 0); -// }) - -// .on("done", function (error) { -// assert(!error); -// assert.equal(2, numOfRow); -// assert(numOfRow !== 0); -// done(); -// }); -// }); -// it("should process long header", function (done) { -// var testData = __dirname + "/data/longHeader"; -// var rs = fs.createReadStream(testData, { highWaterMark: 100 }); -// var numOfRow = 0; -// var numOfJson = 0; -// csv({fork:true}, { highWaterMark: 100 }) -// .fromStream(rs) -// .subscribe(function (res, idx) { -// numOfJson++; -// assert.equal(res.Date, '8/26/16'); -// assert(idx >= 0); -// }) -// .on("done", function () { -// assert(numOfJson === 1); -// done(); -// }); -// }); -// it("should parse #139", function (done) { -// var rs = fs.createReadStream(__dirname + "/data/data#139"); -// csv({fork:true}) -// .fromStream(rs) -// .then(function (res) { -// assert.equal(res[1].field3, "9001009395 9001009990"); -// done(); -// }); -// }); - -// it("should ignore column", function (done) { -// var rs = fs.createReadStream(__dirname + "/data/dataWithQoutes"); -// var headerEmitted = false; -// csv({ -// ignoreColumns: /TIMESTAMP/, -// fork:true -// }) -// .fromStream(rs) -// .on("header", function (header) { -// assert.equal(header.indexOf("TIMESTAMP"), -1); -// assert.equal(header.indexOf("UPDATE"), 0); -// if (headerEmitted) { -// throw ("header event should only happen once") -// } -// headerEmitted = true; -// }) -// // .on("csv", function (row, idx) { -// // if (!headerEmitted) { -// // throw ("header should be emitted before any data events"); -// // } -// // assert(idx >= 0); -// // if (idx === 1) { -// // assert.equal(row[0], "n"); -// // } -// // }) -// .subscribe(function (j, idx) { -// // console.log(j); -// assert(!j.TIMESTAMP); -// assert(idx >= 0); -// }) -// .on("done", function (err) { -// assert(!err); -// assert(headerEmitted); -// done(); -// }); -// }); -// it("should include column", function (done) { -// var rs = fs.createReadStream(__dirname + "/data/dataWithQoutes"); -// csv({ -// includeColumns: /TIMESTAMP/, -// fork:true -// }) -// .fromStream(rs) -// .on("header", function (header) { -// assert.equal(header.indexOf("TIMESTAMP"), 0); -// assert.equal(header.indexOf("UPDATE"), -1); -// assert.equal(header.length, 1); -// }) -// .subscribe(function (j, idx) { -// assert(idx >= 0); -// if (idx === 1) { -// assert.equal(j.TIMESTAMP, "abc, def, ccc"); -// } -// assert(!j.UID) -// assert(!j['BYTES SENT']) -// }) -// .on("done", function () { -// done(); -// }); -// }); -// it("should allow headers and include columns to be given as reference to the same var", function (done) { -// var rs = fs.createReadStream(__dirname + "/data/complexJSONCSV"); -// var headers = [ -// 'first', -// 'second', -// 'third', -// ]; - -// var expected = headers; - -// csv({ -// headers: headers, -// includeColumns: /(first|second|third)/, -// fork:true -// }) -// .fromStream(rs) -// .on("header", function (header) { -// expected.forEach(function (value, index) { -// assert.equal(header.indexOf(value), index); -// }); -// }) -// .subscribe(function (j, idx) { -// assert(idx >= 0); -// assert.equal(expected.length, Object.keys(j).length); -// expected.forEach(function (attribute) { -// assert(j.hasOwnProperty(attribute)); -// }); -// }) -// .on("done", function () { -// done(); -// }); -// }); - -// it("should leave provided params objects unmutated", function() { -// var rs = fs.createReadStream(__dirname + "/data/complexJSONCSV"); -// var includeColumns = [ -// 'fieldA.title', -// 'description', -// ]; - - -// return csv({ -// includeColumns: /(fieldA\.title|description)/, -// fork:true -// }) -// .fromStream(rs) -// .on("json", function(j, idx) { -// assert(idx >= 0); -// }) -// .on("header", function(header) { -// includeColumns.forEach(function (value, index) { -// assert.equal(index, header.indexOf(value)); -// }); -// }) -// }); -// it("should accept pipe as quote", function (done) { -// csv({ -// quote: "|", -// output: "csv", -// "fork":true -// }) -// .fromFile(__dirname + "/data/pipeAsQuote") -// .subscribe(function (csv) { -// assert.equal(csv[2], "blahhh, blah"); -// }) -// .on('done', function () { -// done() -// }); -// }) -// it("should allow async subscribe function", () => { -// return csv({ trim: true,fork:true }) -// .fromString(`a,b,c -// 1,2,3 -// 4,5,6`) -// .subscribe((d) => { -// return new Promise((resolve, reject) => { -// setTimeout(() => { -// d.a = 10; -// resolve(); -// }, 20); -// }) -// }) -// .then((d) => { -// assert.equal(d[0].a, 10); -// assert.equal(d[1].a, 10); -// }) -// }) -// it("should omit a column", () => { -// return csv({ -// colParser: { -// "a": "omit" -// }, -// fork:true -// }) -// .fromString(`a,b,c -// 1,2,3 -// fefe,5,6`) -// .then((d) => { -// assert.strictEqual(d[0].a, undefined); -// assert.equal(d[1].a, undefined); -// }) -// }) - -// }); diff --git a/node_modules/csvtojson/test/testCSVConverter.ts b/node_modules/csvtojson/test/testCSVConverter.ts deleted file mode 100644 index 3ece5e1..0000000 --- a/node_modules/csvtojson/test/testCSVConverter.ts +++ /dev/null @@ -1,450 +0,0 @@ -import {Converter} from "../src/Converter"; -import csv from "../src"; -var assert = require("assert"); -var fs = require("fs"); -var sandbox = require("sinon").sandbox.create(); -var file = __dirname + "/data/testData"; -var trailCommaData = __dirname + "/data/trailingComma"; -describe("CSV Converter", function () { - afterEach(function () { - sandbox.restore(); - }); - - it("should create new instance of csv", function () { - var obj = new Converter(); - assert(obj); - }); - - it("should read from a stream", function (done) { - var obj = new Converter(); - var stream = fs.createReadStream(file); - obj.then(function (obj) { - assert.equal(obj.length, 2); - done(); - }); - stream.pipe(obj); - }); - - it("should call onNext once a row is parsed.", function (done) { - var obj = new Converter(); - var stream = fs.createReadStream(file); - var called = false; - obj.subscribe(function (resultRow) { - assert(resultRow); - called = true; - }); - obj.on("done", function () { - assert(called); - done(); - }); - stream.pipe(obj); - }); - - it("should emit end_parsed message once it is finished.", function (done) { - var obj = new Converter(); - obj.then(function (result) { - assert(result); - assert(result.length === 2); - assert(result[0].date); - assert(result[0].employee); - assert(result[0].employee.name); - assert(result[0].employee.age); - assert(result[0].employee.number); - assert(result[0].employee.key.length === 2); - assert(result[0].address.length === 2); - done(); - }); - fs.createReadStream(file).pipe(obj); - }); - - it("should handle traling comma gracefully", function (done) { - var stream = fs.createReadStream(trailCommaData); - var obj = new Converter(); - obj.then(function (result) { - assert(result); - assert(result.length > 0); - done(); - }); - stream.pipe(obj); - }); - - it("should handle comma in column which is surrounded by qoutes", function (done) { - var testData = __dirname + "/data/dataWithComma"; - var rs = fs.createReadStream(testData); - var obj = new Converter({ - "quote": "#" - }); - obj.then(function (result) { - assert(result[0].col1 === "\"Mini. Sectt"); - assert.equal(result[3].col2, "125001,fenvkdsf"); - // console.log(result); - done(); - }); - rs.pipe(obj); - }); - - it("should be able to convert a csv to column array data", function (done) { - var columArrData = __dirname + "/data/columnArray"; - var rs = fs.createReadStream(columArrData); - var result:any = {}; - var csvConverter = new Converter(); - //end_parsed will be emitted once parsing finished - csvConverter.then(function () { - assert(result.TIMESTAMP.length === 5); - done(); - }); - - //record_parsed will be emitted each time a row has been parsed. - csvConverter.subscribe(function (resultRow, rowIndex) { - for (var key in resultRow) { - if (resultRow.hasOwnProperty(key)) { - if (!result[key] || !(result[key] instanceof Array)) { - result[key] = []; - } - result[key][rowIndex] = resultRow[key]; - } - } - }); - rs.pipe(csvConverter); - }); - - it("should be able to convert csv string directly", function (done) { - var testData = __dirname + "/data/testData"; - var data = fs.readFileSync(testData).toString(); - var csvConverter = new Converter(); - //end_parsed will be emitted once parsing finished - csvConverter.then(function (jsonObj) { - assert.equal(jsonObj.length, 2); - }); - csvConverter.fromString(data).then(function (jsonObj) { - assert(jsonObj.length === 2); - done(); - }); - }); - - it("should be able to convert csv string with error", function (done) { - var testData = __dirname + "/data/dataWithUnclosedQuotes"; - var data = fs.readFileSync(testData).toString(); - var csvConverter = new Converter(); - csvConverter.fromString(data).then(undefined, function (err) { - assert(err); - assert.equal(err.err, "unclosed_quote"); - done(); - }); - }); - - it("should be able to convert csv string without callback provided", function (done) { - var testData = __dirname + "/data/testData"; - var data = fs.readFileSync(testData).toString(); - var csvConverter = new Converter(); - //end_parsed will be emitted once parsing finished - csvConverter.then(function (jsonObj) { - assert(jsonObj.length === 2); - done(); - }); - csvConverter.fromString(data); - }); - - it("should be able to handle columns with double quotes", function (done) { - var testData = __dirname + "/data/dataWithQoutes"; - var data = fs.readFileSync(testData).toString(); - var csvConverter = new Converter(); - csvConverter.fromString(data).then(function (jsonObj) { - assert(jsonObj[0].TIMESTAMP === '13954264"22', JSON.stringify(jsonObj[0].TIMESTAMP)); - - assert(jsonObj[1].TIMESTAMP === 'abc, def, ccc', JSON.stringify(jsonObj[1].TIMESTAMP)); - done(); - }); - }); - - it("should be able to handle columns with two double quotes", function (done) { - var testData = __dirname + "/data/twodoublequotes"; - var data = fs.readFileSync(testData).toString(); - var csvConverter = new Converter(); - csvConverter.fromString(data).then(function (jsonObj) { - assert.equal(jsonObj[0].title, "\""); - assert.equal(jsonObj[0].data, "xyabcde"); - assert.equal(jsonObj[0].uuid, "fejal\"eifa"); - assert.equal(jsonObj[0].fieldA, "bnej\"\"falkfe"); - assert.equal(jsonObj[0].fieldB, "\"eisjfes\""); - done(); - }); - }); - - it("should handle empty csv file", function (done) { - var testData = __dirname + "/data/emptyFile"; - var rs = fs.createReadStream(testData); - var csvConverter = new Converter(); - csvConverter.then(function (jsonObj) { - assert(jsonObj.length === 0); - done(); - }); - rs.pipe(csvConverter); - }); - - it("should parse large csv file", function (done) { - var testData = __dirname + "/data/large-csv-sample.csv"; - var rs = fs.createReadStream(testData); - var csvConverter = new Converter(); - var count = 0; - csvConverter.subscribe(function () { - //console.log(arguments); - count++; - }); - csvConverter.then(function () { - assert(count === 5290); - done(); - }); - rs.pipe(csvConverter); - }); - - it("should parse data and covert to specific types", function (done) { - var testData = __dirname + "/data/dataWithType"; - var rs = fs.createReadStream(testData); - var csvConverter = new Converter({ - checkType: true, - colParser: { - "column6": "string", - "column7": "string" - } - }); - csvConverter.subscribe(function (d) { - assert(typeof d.column1 === "number"); - assert(typeof d.column2 === "string"); - assert.equal(d["colume4"], "someinvaliddate"); - assert(d.column5.hello === "world"); - assert(d.column6 === '{"hello":"world"}'); - assert(d.column7 === "1234"); - assert(d.column8 === "abcd"); - assert(d.column9 === true); - assert(d.column10[0] === 23); - assert(d.column10[1] === 31); - assert(d.column11[0].hello === "world"); - assert(d["name#!"] === false); - }); - csvConverter.on("done", function () { - done(); - }); - rs.pipe(csvConverter); - }); - - it("should turn off field type check", function (done) { - var testData = __dirname + "/data/dataWithType"; - var rs = fs.createReadStream(testData); - var csvConverter = new Converter({ - checkType: false - }); - csvConverter.subscribe(function (d) { - assert(typeof d.column1 === "string"); - assert(typeof d.column2 === "string"); - assert(d["column3"] === "2012-01-01"); - assert(d["colume4"] === "someinvaliddate"); - assert(d.column5 === '{"hello":"world"}'); - assert.equal(d["column6"], '{"hello":"world"}'); - assert(d["column7"] === "1234"); - assert(d["column8"] === "abcd"); - assert(d.column9 === "true"); - assert(d.column10[0] === "23"); - assert(d.column10[1] === "31"); - assert(d["name#!"] === 'false'); - }); - csvConverter.then(function () { - done(); - }); - rs.pipe(csvConverter); - }); - - it("should emit data event correctly", function (done) { - var testData = __dirname + "/data/large-csv-sample.csv"; - - var csvConverter = new Converter({ - }); - var count = 0; - csvConverter.on("data", function (d) { - count++; - }); - csvConverter.on("end", function () { - assert.equal(count, 5290); - done(); - }); - var rs = fs.createReadStream(testData); - rs.pipe(csvConverter); - }); - - it("should process column with linebreaks", function (done) { - var testData = __dirname + "/data/lineBreak"; - var rs = fs.createReadStream(testData); - var csvConverter = new Converter({ - checkType: true - }); - csvConverter.subscribe(function (d) { - assert(d.Period === 13); - assert(d["Apparent age"] === "Unknown"); - done(); - }); - rs.pipe(csvConverter); - }); - - it("be able to ignore empty columns", function (done) { - var testData = __dirname + "/data/dataIgnoreEmpty"; - var rs = fs.createReadStream(testData); - var st = rs.pipe(csv({ ignoreEmpty: true })); - st.then(function (res) { - var j = res[0]; - assert(res.length === 3); - assert(j.col2.length === 2); - assert(j.col2[1] === "d3"); - assert(j.col4.col3 === undefined); - assert(j.col4.col5 === "world"); - assert(res[1].col1 === "d2"); - assert(res[2].col1 === "d4"); - done(); - }); - }); - - it("should allow no header", function (done) { - var testData = __dirname + "/data/noheadercsv"; - var rs = fs.createReadStream(testData); - var st = rs.pipe(new Converter({ noheader: true })); - st.then(function (res) { - var j = res[0]; - assert(res.length === 5); - assert(j.field1 === "CC102-PDMI-001"); - assert(j.field2 === "eClass_5.1.3"); - done(); - }); - }); - - it("should allow customised header", function (done) { - var testData = __dirname + "/data/noheadercsv"; - var rs = fs.createReadStream(testData); - var st = rs.pipe(new Converter({ - noheader: true, - headers: ["a", "b"] - })); - st.then(function (res) { - var j = res[0]; - assert(res.length === 5); - assert(j.a === "CC102-PDMI-001"); - assert(j.b === "eClass_5.1.3"); - assert(j.field3 === "10/3/2014"); - done(); - }); - }); - - it("should allow customised header to override existing header", function (done) { - var testData = __dirname + "/data/complexJSONCSV"; - var rs = fs.createReadStream(testData); - var st = rs.pipe(new Converter({ - headers: [] - })); - st.then(function (res) { - var j = res[0]; - assert(res.length === 2); - assert(j.field1 === "Food Factory"); - assert(j.field2 === "Oscar"); - done(); - }); - }); - - it("should handle when there is an empty string", function (done) { - var testData = __dirname + "/data/dataWithEmptyString"; - var rs = fs.createReadStream(testData); - var st = rs.pipe(new Converter({ - noheader: true, - headers: ["a", "b", "c"], - checkType: true - })); - st.then(function (res) { - var j = res[0]; - - // assert(res.length===2); - assert(j.a === "green"); - assert(j.b === 40); - assert.equal(j.c, ""); - done(); - }); - }); - - it("should detect eol correctly when first chunk is smaller than header row length", function (done) { - var testData = __dirname + "/data/dataNoTrimCRLF"; - var rs = fs.createReadStream(testData, { highWaterMark: 3 }); - - var st = rs.pipe(new Converter({ - trim: false - })); - st.then(function (res) { - var j = res[0]; - assert(res.length === 2); - assert(j.name === "joe"); - assert(j.age === "20"); - assert.equal(res[1].name, "sam"); - assert.equal(res[1].age, "30"); - done(); - }); - }); - - it("should detect eol correctly when first chunk ends in middle of CRLF line break", function (done) { - var testData = __dirname + "/data/dataNoTrimCRLF"; - var rs = fs.createReadStream(testData, { highWaterMark: 9 }); - - var st = rs.pipe(new Converter({ - trim: false - })); - st.then(function (res) { - var j = res[0]; - assert(res.length === 2); - assert(j.name === "joe"); - assert(j.age === "20"); - assert.equal(res[1].name, "sam"); - assert.equal(res[1].age, "30"); - done(); - }); - }); - - it("should emit eol event when line ending is detected as CRLF", function (done) { - var testData = __dirname + "/data/dataNoTrimCRLF"; - var rs = fs.createReadStream(testData); - - var st = rs.pipe(new Converter()); - var eolCallback = sandbox.spy(function (eol) { - assert.equal(eol, "\r\n"); - }); - st.on("eol", eolCallback); - st.then(function () { - assert.equal(eolCallback.callCount, 1, 'should emit eol event once'); - done(); - }) - }); - - it("should emit eol event when line ending is detected as LF", function (done) { - var testData = __dirname + "/data/columnArray"; - var rs = fs.createReadStream(testData); - - var st = rs.pipe(new Converter()); - var eolCallback = sandbox.spy(function (eol) { - assert.equal(eol, "\n"); - }); - st.on("eol", eolCallback); - st.then(function () { - assert.equal(eolCallback.callCount, 1, 'should emit eol event once'); - done(); - }) - }); - - it("should remove the Byte Order Mark (BOM) from input", function (done) { - var testData = __dirname + "/data/dataNoTrimBOM"; - var rs = fs.createReadStream(testData); - var st = rs.pipe(new Converter({ - trim: false - })); - st.then( function (res) { - var j = res[0]; - - assert(res.length===2); - assert(j.name === "joe"); - assert(j.age === "20"); - done(); - }); - }); -}); diff --git a/node_modules/csvtojson/test/testCSVConverter2.ts b/node_modules/csvtojson/test/testCSVConverter2.ts deleted file mode 100644 index 91da899..0000000 --- a/node_modules/csvtojson/test/testCSVConverter2.ts +++ /dev/null @@ -1,583 +0,0 @@ -import { Converter } from "../src/Converter"; -import csv from "../src"; -var assert = require("assert"); -var fs = require("fs"); -var sandbox = require('sinon').sandbox.create(); -describe("testCSVConverter2", function () { - afterEach(function () { - sandbox.restore(); - }); - - it("should convert from large csv string", function (done) { - var csvStr = fs.readFileSync(__dirname + "/data/large-csv-sample.csv", "utf8"); - var conv = new Converter({ - }); - conv.fromString(csvStr).then(function (res) { - assert(res.length === 5290); - done(); - }); - }); - - it("should set eol", function (done) { - var rs = fs.createReadStream(__dirname + "/data/large-csv-sample.csv"); - var conv = new Converter({ - eol: "\n" - }); - var count = 0; - conv.subscribe(function (resultJson, index) { - count++; - assert(resultJson); - // assert(row.length === 2); - assert(index >= 0); - }); - conv.on("error", function () { - console.log(arguments); - }); - conv.then(function (result) { - assert(result); - assert(count === 5290); - done(); - }); - rs.pipe(conv); - }); - - it("should convert tsv String", function (done) { - var tsv = __dirname + "/data/dataTsv"; - var csvStr = fs.readFileSync(tsv, "utf8"); - var conv = new Converter({ - delimiter: "\t", - "checkType": false - }); - conv.fromString(csvStr).then(function (res) { - assert(res); - assert.equal(res.length, 200); - done(); - }); - }); - - it("should allow customised header with nohead csv string.", function (done) { - var testData = __dirname + "/data/noheadercsv"; - var rs = fs.readFileSync(testData, "utf8"); - var conv = new Converter({ - noheader: true, - headers: ["a", "b", "c", "e", "f", "g"] - }); - conv.fromString(rs).then(function (json) { - assert.equal(json[0].field7, 40); - assert.equal(json[0].a, "CC102-PDMI-001"); - done(); - }); - }); - - it("should parse fromFile", function (done) { - var csvFile = __dirname + "/data/large-csv-sample.csv"; - var conv = new Converter({ - }); - conv.fromFile(csvFile).then(function (res) { - assert.equal(res.length, 5290); - done(); - }); - }); - - it("should fromFile should emit error", function (done) { - var csvFile = __dirname + "/data/dataWithUnclosedQuotes"; - var conv = new Converter({ - }); - conv.fromFile(csvFile).then(function (res) { - - done(); - }, function (err) { - assert(err); - done(); - }); - }); - - it("should parse no header with dynamic column number", function (done) { - var testData = __dirname + "/data/noheaderWithVaryColumnNum"; - var rs = fs.readFileSync(testData, "utf8"); - var conv = new Converter({ - noheader: true - }); - conv.fromString(rs).then(function (json) { - assert.equal(json.length, 2); - assert.equal(json[1].field4, 7); - done(); - }); - }); - - it("should parse tabsv data with dynamic columns", function (done) { - var testData = __dirname + "/data/tabsv"; - var rs = fs.readFileSync(testData, "utf8"); - var conv = new Converter({ - delimiter: "\t" - }); - conv.fromString(rs).then(function (json) { - assert.equal(json[0].Idevise, ""); - done(); - }); - }); - - it("should use first line break as eol", function (done) { - var testData = __dirname + "/data/testEol"; - var conv = new Converter({ - noheader: true - }); - conv.fromFile(testData).then(function (json) { - assert(json); - done(); - }); - }); - - - it("should detect delimiter", function (done) { - var testData = __dirname + "/data/dataWithAutoDelimiter"; - var rs = fs.createReadStream(testData); - var conv = new Converter({ delimiter: "auto" }); - conv.then(function (res) { - assert.equal(res[0].col1, "Mini. Sectt:hisar S.O"); - assert.equal(res[1].col1, "#Mini. Sectt"); - done(); - }); - rs.pipe(conv); - }); - - it("should emit delimiter event", function (done) { - var testData = __dirname + "/data/dataWithAutoDelimiter"; - var rs = fs.createReadStream(testData); - var conv = new Converter({ delimiter: "auto" }); - var delimiterCallback = sandbox.spy(function (delimiter) { - assert.equal(delimiter, ":"); - }); - conv.on("delimiter", delimiterCallback); - conv.then(function () { - assert.equal(delimiterCallback.callCount, 1); - done(); - }); - rs.pipe(conv); - }); - - it("should emit delimiter event when no header", function (done) { - var testData = __dirname + "/data/dataWithAutoDelimiter"; - var rs = fs.createReadStream(testData); - var conv = new Converter({ delimiter: "auto", noheader: true }); - var delimiterCallback = sandbox.spy(function (delimiter) { - assert.equal(delimiter, ":"); - }); - conv.on("delimiter", delimiterCallback); - conv.then(function () { - assert.equal(delimiterCallback.callCount, 1); - done(); - }); - rs.pipe(conv); - }); - - // it("should not emit delimiter event when delimiter is specified", function (done) { - // var testData = __dirname + "/data/columnArray"; - // var rs = fs.createReadStream(testData); - // var conv = new Converter(); - // conv.on("delimiter", function (delimiter) { - // assert.fail("delimiter event should not have been emitted"); - // }); - // conv.then(function () { - // done(); - // }); - - // rs.pipe(conv); - // }); - - it("should stripe out whitespaces if trim is true", function (done) { - var testData = __dirname + "/data/dataWithWhiteSpace"; - var rs = fs.createReadStream(testData); - var conv = new Converter({ trim: true }); - conv.then(function (res) { - assert.equal(res[0]["Column 1"], "Column1Row1"); - assert.equal(res[0]["Column 2"], "Column2Row1"); - done(); - }); - rs.pipe(conv); - }); - - it("should convert triple quotes correctly", function (done) { - var testData = __dirname + "/data/dataWithTripleQoutes"; - var rs = fs.createReadStream(testData); - var conv = new Converter({ trim: true }); - conv.then(function (res) { - assert.equal(res[0].Description, "ac, abs, moon"); - assert.equal(res[1].Model, "Venture \"Extended Edition\""); - assert.equal(res[2].Model, "Venture \"Extended Edition, Very Large\""); - done(); - }); - rs.pipe(conv); - }); - - - - it("should pre process raw data in the line", function (done) { - var testData = __dirname + "/data/quoteTolerant"; - var rs = fs.createReadStream(testData); - var conv = new Converter(); - conv.preRawData(function (d) { - return d.replace('THICK', 'THIN'); - }); - conv.then(function (res) { - assert(res[0].Description.indexOf('THIN') > -1); - done(); - }); - rs.pipe(conv); - }); - - it("should pre process by line in the line", function (done) { - var testData = __dirname + "/data/quoteTolerant"; - var rs = fs.createReadStream(testData); - var conv = new Converter(); - conv.preFileLine(function (line, lineNumber) { - if (lineNumber === 1) { - line = line.replace('THICK', 'THIN'); - } - return line; - }); - - conv.then(function (res) { - assert(res[0].Description.indexOf('THIN') > -1); - done(); - }); - rs.pipe(conv); - }); - - it("should support object mode", function (done) { - var testData = __dirname + "/data/complexJSONCSV"; - var rs = fs.createReadStream(testData); - var conv = new Converter({}, { - objectMode: true - }); - conv.on("data", function (d) { - assert(typeof d === "object"); - }); - conv.then(function (res) { - assert(res); - assert(res.length > 0); - done(); - }); - rs.pipe(conv); - }); - - it("should get delimiter automatically if there is no header", function (done) { - var test_converter = new Converter({ - delimiter: 'auto', - headers: ['col1', 'col2'], - noheader: true, - checkColumn: true - }); - - var my_data = 'first_val\tsecond_val'; - test_converter.fromString(my_data).then(function (result) { - assert.equal(result.length, 1); - assert.equal(result[0].col1, "first_val"); - assert.equal(result[0].col2, "second_val"); - done(); - }); - }); - - it("should process escape chars", function (done) { - var test_converter = new Converter({ - escape: "\\", - checkType: true - }); - - var testData = __dirname + "/data/dataWithSlashEscape"; - var rs = fs.createReadStream(testData); - test_converter.then(function (res) { - assert.equal(res[0].raw.hello, "world"); - assert.equal(res[0].raw.test, true); - done(); - }); - rs.pipe(test_converter); - }); - - it("should process escape chars when delimiter is between escaped quotes", function(done) { - var test_converter = new Converter({ - escape: "\\" - }); - - var testData = - __dirname + "/data/dataWithSlashEscapeAndDelimiterBetweenQuotes"; - var rs = fs.createReadStream(testData); - test_converter.then(function(res) { - assert.equal(res[0].raw, '"hello,"world"'); - done(); - }); - rs.pipe(test_converter); - }); - - it("should output ndjson format", function(done) { - var conv = new Converter(); - conv.fromString("a,b,c\n1,2,3\n4,5,6") - .on("data", function (d) { - d = d.toString(); - assert.equal(d[d.length - 1], "\n"); - }) - .on("done", done); - }); - - it("should parse from stream", function (done) { - var testData = __dirname + "/data/complexJSONCSV"; - var rs = fs.createReadStream(testData); - csv() - .fromStream(rs) - .then(function (res) { - assert(res); - done(); - }); - }); - - it("should set output as csv", function (done) { - var testData = __dirname + "/data/complexJSONCSV"; - var rs = fs.createReadStream(testData); - var numOfRow = 0; - csv({ output: "csv" }) - .fromStream(rs) - .subscribe(function (row, idx) { - numOfRow++; - assert(row); - assert(idx >= 0); - }) - - .on("done", function (error) { - assert(!error); - assert.equal(2, numOfRow); - assert(numOfRow !== 0); - done(); - }); - }); - - it("should transform with subscribe function", function (done) { - var testData = __dirname + "/data/complexJSONCSV"; - var rs = fs.createReadStream(testData); - var numOfRow = 0; - var numOfJson = 0; - csv() - .fromStream(rs) - .subscribe(function (json, idx) { - json.a = "test"; - assert(idx >= 0); - }) - .on("data", function (d) { - const j = JSON.parse(d.toString()); - assert.equal(j.a, "test"); - }) - .on("end", function () { - done(); - }); - }); - - it("should parse a complex JSON", function (done) { - var converter = new Converter({ checkType: true }); - var r = fs.createReadStream(__dirname + "/data/complexJSONCSV"); - converter.then(function (res) { - assert(res); - assert(res.length === 2); - assert(res[0].fieldA.title === "Food Factory"); - assert(res[0].fieldA.children.length === 2); - assert(res[0].fieldA.children[0].name === "Oscar"); - assert(res[0].fieldA.children[0].id === 23); - assert(res[0].fieldA.children[1].name === "Tikka"); - assert.equal(res[0].fieldA.children[1].employee.length, 2); - assert(res[0].fieldA.children[1].employee[0].name === "Tim", JSON.stringify(res[0].fieldA.children[1].employee[0])); - assert(res[0].fieldA.address.length === 2); - assert(res[0].fieldA.address[0] === "3 Lame Road"); - assert(res[0].fieldA.address[1] === "Grantstown"); - assert(res[0].description === "A fresh new food factory", res[0].description); - done(); - }); - r.pipe(converter); - }); - - it("should allow flatKey to change parse behaviour", function (done) { - var conv = new Converter({ - flatKeys: true - }); - conv.fromString("a.b,b.d,c.a\n1,2,3\n4,5,6").subscribe(function (d) { - assert(d["a.b"]); - assert(d["b.d"]); - assert(d["c.a"]); - }) - .on("done", done); - }); - it("should allow flat mods to change parse behaviour", function (done) { - var conv = new Converter({ - colParser: { - "a.b": { - flat: true - } - } - }); - conv.fromString("a.b,b.d,c.a\n1,2,3\n4,5,6").subscribe(function (d) { - assert(d["a.b"]); - }) - .on("done", done); - }); - - it("should process long header", function (done) { - var testData = __dirname + "/data/longHeader"; - var rs = fs.createReadStream(testData, { highWaterMark: 100 }); - var numOfRow = 0; - var numOfJson = 0; - csv({}, { highWaterMark: 100 }) - .fromStream(rs) - .subscribe(function (res, idx) { - numOfJson++; - assert.equal(res.Date, '8/26/16'); - assert(idx >= 0); - }) - .on("done", function () { - assert(numOfJson === 1); - done(); - }); - }); - - it("should parse #139", function (done) { - var rs = fs.createReadStream(__dirname + "/data/data#139"); - csv() - .fromStream(rs) - .then(function (res) { - assert.equal(res[1].field3, "9001009395 9001009990"); - done(); - }); - }); - - it("should ignore column", function (done) { - var rs = fs.createReadStream(__dirname + "/data/dataWithQoutes"); - var headerEmitted = false; - csv({ - ignoreColumns: /TIMESTAMP/ - }) - .fromStream(rs) - .on("header", function (header) { - assert.equal(header.indexOf("TIMESTAMP"), -1); - assert.equal(header.indexOf("UPDATE"), 0); - if (headerEmitted) { - throw ("header event should only happen once") - } - headerEmitted = true; - }) - // .on("csv", function (row, idx) { - // if (!headerEmitted) { - // throw ("header should be emitted before any data events"); - // } - // assert(idx >= 0); - // if (idx === 1) { - // assert.equal(row[0], "n"); - // } - // }) - .subscribe(function (j, idx) { - assert(!j.TIMESTAMP); - assert(idx >= 0); - }) - .on("done", function () { - assert(headerEmitted); - done(); - }); - }); - it("should keep space around comma in csv", function () { - const str = `"Name","Number" - "John , space", 1234 - "Mr. , space", 4321 - `; - return csv().fromString(str) - .then((data) => { - assert.equal(data[0].Name, "John , space"); - assert.equal(data[1].Name, "Mr. , space"); - }) - }) - - it("should include column", function (done) { - var rs = fs.createReadStream(__dirname + "/data/dataWithQoutes"); - csv({ - includeColumns: /TIMESTAMP/ - }) - .fromStream(rs) - .on("header", function (header) { - assert.equal(header.indexOf("TIMESTAMP"), 0); - assert.equal(header.indexOf("UPDATE"), -1); - assert.equal(header.length, 1); - }) - .subscribe(function (j, idx) { - assert(idx >= 0); - if (idx === 1) { - assert.equal(j.TIMESTAMP, "abc, def, ccc"); - } - assert(!j.UID) - assert(!j['BYTES SENT']) - }) - .on("done", function () { - done(); - }); - }); - - it("should allow headers and include columns to be given as reference to the same var", function (done) { - var rs = fs.createReadStream(__dirname + "/data/complexJSONCSV"); - var headers = [ - 'first', - 'second', - 'third', - ]; - - var expected = headers; - - csv({ - headers: headers, - includeColumns: /(first|second|third)/, - }) - .fromStream(rs) - .on("header", function (header) { - expected.forEach(function (value, index) { - assert.equal(header.indexOf(value), index); - }); - }) - .subscribe(function (j, idx) { - assert(idx >= 0); - assert.equal(expected.length, Object.keys(j).length); - expected.forEach(function (attribute) { - assert(j.hasOwnProperty(attribute)); - }); - }) - .on("done", function () { - done(); - }); - }); - - it("should leave provided params objects unmutated", function() { - var rs = fs.createReadStream(__dirname + "/data/complexJSONCSV"); - var includeColumns = [ - 'fieldA.title', - 'description', - ]; - - - return csv({ - includeColumns: /(fieldA\.title|description)/, - }) - .fromStream(rs) - .on("json", function(j, idx) { - assert(idx >= 0); - }) - .on("header", function(header) { - includeColumns.forEach(function (value, index) { - assert.equal(index, header.indexOf(value)); - }); - }) - }); - - it("should only call done once", function (done) { - var counter=0; - csv() - .fromString('"a","b", "c""') - .on('done',function(){ - counter++; - }); - setTimeout(function(){ - assert.equal(counter,1); - done(); - },100); - }) -}); diff --git a/node_modules/csvtojson/test/testCSVConverter3.ts b/node_modules/csvtojson/test/testCSVConverter3.ts deleted file mode 100644 index 6fb9c05..0000000 --- a/node_modules/csvtojson/test/testCSVConverter3.ts +++ /dev/null @@ -1,323 +0,0 @@ -import csv from "../src"; -import assert from "assert"; -var fs = require("fs"); -import { sandbox } from "sinon"; -import CSVError from "../src/CSVError"; -const sb = sandbox.create(); -describe("testCSVConverter3", function () { - afterEach(function () { - sb.restore(); - }); - it("should parse large csv file with UTF-8 without spliting characters", function (done) { - var testData = __dirname + "/data/large-utf8.csv"; - var rs = fs.createReadStream(testData); - var csvConverter = csv({ - }); - var count = 0; - csvConverter.preRawData(function (csvRawData) { - assert(csvRawData.charCodeAt(0) < 2000); - return csvRawData; - }) - csvConverter.on("data", function () { - count++; - }); - csvConverter.then(function () { - assert(count === 5290); - done(); - }); - rs.pipe(csvConverter); - }); - it("should setup customise type convert function", function (done) { - csv({ - checkType: true, - colParser: { - "column1": "string", - "column5": function (item, head, resultRow, row, i) { - assert.equal(item, '{"hello":"world"}'); - assert.equal(head, "column5"), - assert(resultRow); - assert(row); - assert.equal(i, 5); - return "hello world"; - } - } - }) - .fromFile(__dirname + "/data/dataWithType") - .subscribe(function (json) { - assert.equal(typeof json.column1, "string"); - assert.equal(json.column5, "hello world"); - assert.strictEqual(json["name#!"], false); - assert.strictEqual(json["column9"], true); - }) - .on('done', function () { - done() - }); - }) - it("should accept pipe as quote", function (done) { - csv({ - quote: "|", - output: "csv" - }) - .fromFile(__dirname + "/data/pipeAsQuote") - .subscribe(function (csv) { - assert.equal(csv[2], "blahhh, blah"); - }) - .on('done', function () { - done() - }); - }) - it("emit file not exists error when try to open a non-exists file", function () { - let called = false; - const cb = sb.spy((err) => { - assert(err.toString().indexOf("File does not exist") > -1); - }); - return csv() - .fromFile("somefile") - .subscribe(function (csv) { - - }) - .on("error", cb) - .then(() => { - assert(false); - }, (err) => { - assert.equal(cb.callCount, 1); - }) - - }) - it("should include column that is both included and excluded", () => { - return csv({ - includeColumns: /b/, - ignoreColumns: /a|b/ - }) - .fromString(`a,b,c -1,2,3 -4,5,6`) - .subscribe((d) => { - assert(d.b); - assert(!d.a); - }) - }) - it("should allow async preLine hook", () => { - return csv() - .preFileLine((line) => { - return new Promise((resolve, reject) => { - setTimeout(() => { - resolve(line + "changed") - }, 20); - - }) - }) - .fromString(`a,b -1,2`) - .subscribe((d) => { - assert(d.bchanged); - assert.equal(d.bchanged, "2changed"); - }) - - }) - - it("should allow async subscribe function", () => { - return csv({ trim: true }) - .fromString(`a,b,c - 1,2,3 - 4,5,6`) - .subscribe((d) => { - return new Promise((resolve, reject) => { - setTimeout(() => { - d.a = 10; - resolve(); - }, 20); - }) - }) - .then((d) => { - assert.equal(d[0].a, 10); - assert.equal(d[1].a, 10); - }) - }) - it("should propagate value to next then", () => { - return csv({ trim: true }) - .fromString(`a,b,c - 1,2,3 - 4,5,6`) - .then(undefined, undefined) - .then((d) => { - assert.equal(d.length, 2); - assert.equal(d[0].a, "1"); - }) - - }) - it("should propagate error to next then", () => { - return csv({ trim: true }) - .fromFile(__dirname + "/data/dataWithUnclosedQuotes") - .then(undefined, undefined) - .then(() => { - assert(false) - }, (err: CSVError) => { - assert(err); - assert.equal(err.err, "unclosed_quote"); - }) - }) - it("should fallback to text is number can not be parsed", () => { - return csv({ - colParser: { - "a": "number" - } - }) - .fromString(`a,b,c - 1,2,3 - fefe,5,6`) - .then((d) => { - assert.strictEqual(d[0].a, 1); - assert.equal(d[1].a, "fefe"); - }) - }) - it("should omit a column", () => { - return csv({ - colParser: { - "a": "omit" - } - }) - .fromString(`a,b,c - 1,2,3 - fefe,5,6`) - .then((d) => { - assert.strictEqual(d[0].a, undefined); - assert.equal(d[1].a, undefined); - }) - }) - it("could turn off quote and should trim even quote is turned off", () => { - return csv({ - quote: "off", - trim: true - }) - .fromString(`a,b,c - "1","2","3" - "fefe,5",6`) - .then((d) => { - assert.equal(d[0].a, '"1"'); - assert.equal(d[0].b, '"2"'); - assert.equal(d[1].a, '"fefe'); - assert.equal(d[1].b, '5"'); - }) - }) - it("should allow ignoreEmpty with checkColumn", () => { - return csv({ - checkColumn: true, - ignoreEmpty: true - }) - .fromString(`date,altitude,airtime - 2016-07-08,2000,23 - - 2016-07-09,3000,43`) - .then((data) => { - - }, (err) => { - console.log(err); - assert(!err); - }) - }); - it("should allow quotes without content", () => { - const data = "a|^^|^b^"; - return csv({ - delimiter: '|', - quote: '^', - noheader: true, - }) - .fromString(data) - .then((jsonObj) => { - assert.equal(jsonObj[0].field2, ""); - }); - }) - it("should parse header with quotes correctly", function () { - var testData = __dirname + "/data/csvWithUnclosedHeader"; - return csv({ - headers: ["exam_date", "sample_no", "status", "sample_type", "patient_id", "last_name", "first_name", "gender_of_patient", "patient_birth_date", "patient_note", "patient_department", "accession_number", "sample_site", "physician", "operator", "department", "note", "test_order_code", "draw_time", "approval_status", "approval_time", "report_layout", "patient_account_number", "none_1", "errors_detected_during_measurement", "age", "error_code_01", "weight", "error_code_02", "height", "error_code_03", "hcg_beta_p", "error_code_04", "troponin_i_p", "error_code_05", "ck_mb_p", "error_code_06", "d_dimer_p", "error_code_07", "hscrp_p", "error_code_08", "myoglobin_p", "error_code_09", "nt_probnp", "error_code_10", "crp", "error_code_11", "bnp", "error_code_12", "tnt", "error_code_13", "demo_p", "error_code_14", "pct", "error_code_15"] - }) - .fromFile(testData) - .then((d) => { - assert.equal(d.length, 2); - assert.equal(d[0].sample_no, "12669"); - }) - - }); - it ("should stream json string correctly",function(done){ - const data=`a,b,c -1,2,3 -4,5,6` - let hasLeftBracket=false; - let hasRightBracket=false; - csv({ - downstreamFormat:"array" - }) - .fromString(data) - .on("data",(d)=>{ - const str=d.toString(); - if (str[0]==="[" && str.length ===2){ - hasLeftBracket=true; - }else if (str[0]==="]" && str.length===2){ - hasRightBracket=true; - }else{ - assert.equal(str[str.length-2],","); - } - - }) - .on("end",()=>{ - assert.equal(hasLeftBracket,true); - assert.equal(hasRightBracket,true); - done(); - }) - }) - it ("should stream json line correctly",function(done){ - const data=`a,b,c -1,2,3 -4,5,6` - csv({ - downstreamFormat:"line" - }) - .fromString(data) - .on("data",(d)=>{ - const str=d.toString(); - - assert.notEqual(str[str.length-2],","); - }) - .on("end",()=>{ - done(); - }) - }) - it ("should not send json if needEmitAll is false",async function(){ - const data=`a,b,c -1,2,3 -4,5,6` - return csv({ - needEmitAll:false - }) - .fromString(data) - .then((d)=>{ - assert(d.length===0); - }) - }) - it ("should convert null to null object",async function(){ - const data=`a,b,c -null,2,3 -4,5,6` - return csv({ - nullObject:true - }) - .fromString(data) - .then((d)=>{ - assert.equal(d[0].a,null) - }) - }) - it ("should process period properly",async function(){ - const data=`a..,b,c -1,2,3 -4,5,6` - return csv({ - }) - .fromString(data) - .then((d)=>{ - assert.equal(d[0]["a.."],1); - assert.equal(d[1]["a.."],4); - }) - }) -}); diff --git a/node_modules/csvtojson/test/testErrorHandle.ts b/node_modules/csvtojson/test/testErrorHandle.ts deleted file mode 100644 index 0a9ef8f..0000000 --- a/node_modules/csvtojson/test/testErrorHandle.ts +++ /dev/null @@ -1,57 +0,0 @@ -import {Converter} from "../src/Converter"; -import CSVError from "../src/CSVError"; -var assert = require("assert"); -var fs = require("fs"); - -describe("Converter error handling", function() { - it("should handle quote not closed", function(done) { - var rs = fs.createReadStream(__dirname + "/data/dataWithUnclosedQuotes"); - var conv = new Converter({}); - conv.on("error", function(err:CSVError) { - assert(err.err === "unclosed_quote"); - done(); - }); - rs.pipe(conv); - }); - - - it ("should handle column number mismatched error", function(done) { - var rs = fs.createReadStream(__dirname + "/data/dataWithMismatchedColumn"); - var conv = new Converter({ - checkColumn:true - }); - var tested = false; - conv.on("error", function(err:CSVError) { - if (tested === false) { - assert(err.err === "column_mismatched"); - tested = true; - // done(); - } - }); - conv.on('done',function() { - assert(tested); - done(); - }); - rs.pipe(conv); - }); - - it("should treat quote not closed as column_mismatched when alwaysSplitAtEOL is true", function(done) { - var rs = fs.createReadStream(__dirname + "/data/dataWithUnclosedQuotes"); - var conv = new Converter({ - checkColumn:true, - alwaysSplitAtEOL:true, - }); - var tested = false; - conv.on("error", function(err:CSVError) { - if (tested === false) { - assert(err.err === "column_mismatched"); - tested = true; - } - }); - conv.on('done',function() { - assert(tested); - done(); - }); - rs.pipe(conv); - }); -}); diff --git a/node_modules/csvtojson/tsconfig.json b/node_modules/csvtojson/tsconfig.json deleted file mode 100644 index 2f7994c..0000000 --- a/node_modules/csvtojson/tsconfig.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "compilerOptions": { - /* Basic Options */ - "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ - "lib": ["es5","es6"], /* Specify library files to be included in the compilation. */ - // "allowJs": true, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - "declaration": true, /* Generates corresponding '.d.ts' file. */ - "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "./v2", /* Redirect output structure to the directory. */ - "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - "noImplicitAny": false, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - - /* Source Map Options */ - // "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - }, - "include": [ - "src/**/*.ts" - ], - "exclude": [ - "src/**/*.test.ts" - ] - -} \ No newline at end of file diff --git a/node_modules/csvtojson/typings.d.ts b/node_modules/csvtojson/typings.d.ts deleted file mode 100644 index daa7346..0000000 --- a/node_modules/csvtojson/typings.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.json"{ - const value: any; - export default value; -} \ No newline at end of file diff --git a/node_modules/csvtojson/v1/core/CSVError.js b/node_modules/csvtojson/v1/core/CSVError.js deleted file mode 100644 index ef8e75c..0000000 --- a/node_modules/csvtojson/v1/core/CSVError.js +++ /dev/null @@ -1,27 +0,0 @@ -var util = require("util"); -module.exports = CSVError; -function CSVError(err, index, extra) { - Error.call(this, ""); - this.err = err; - this.line = index; - this.extra = extra; - this.message = "Error: " + err + ". JSON Line number: " + index + (extra ? " near: " + extra : ""); - this.name = "CSV Error"; -} -util.inherits(CSVError, Error); - -CSVError.prototype.toString = function() { - return JSON.stringify([this.err, this.line, this.extra]); -}; - -CSVError.column_mismatched = function(index, extra) { - return new CSVError("column_mismatched", index, extra); -}; - -CSVError.unclosed_quote = function(index, extra) { - return new CSVError("unclosed_quote", index, extra); -}; - -CSVError.fromArray = function(arr) { - return new CSVError(arr[0], arr[1], arr[2]); -}; diff --git a/node_modules/csvtojson/v1/core/Converter.js b/node_modules/csvtojson/v1/core/Converter.js deleted file mode 100644 index 5242155..0000000 --- a/node_modules/csvtojson/v1/core/Converter.js +++ /dev/null @@ -1,580 +0,0 @@ -var util = require("util"); -var Transform = require("stream").Transform; -var os = require("os"); -var stripBom = require('strip-bom'); -var eol = os.EOL; -// var Processor = require("./Processor.js"); -var defParam = require("./defParam"); -var fileline = require("./fileline"); -var fileLineToCSVLine = require("./fileLineToCSVLine"); -var linesToJson = require("./linesToJson"); -var CSVError = require("./CSVError"); -var workerMgr = null; -var _ = require('lodash'); -var rowSplit = require("./rowSplit"); -function Converter(params, options) { - Transform.call(this, options); - this._options = options || {}; - this.param = defParam(params); - this.param._options = this._options; - // this.resultObject = new Result(this); - // this.pipe(this.resultObject); // it is important to have downstream for a transform otherwise it will stuck - this.started = false;//indicate if parsing has started. - this.recordNum = 0; - this.lineNumber = 0; //file line number - this._csvLineBuffer = ""; - this.lastIndex = 0; // index in result json array - //this._pipe(this.lineParser).pipe(this.processor); - // this.initNoFork(); - if (this.param.forked) { - this.param.forked = false; - this.workerNum = 2; - } - this.flushCb = null; - this.processEnd = false; - this.sequenceBuffer = []; - this._needJson = null; - this._needEmitResult = null; - this._needEmitFinalResult = null; - this._needEmitHeader = null; - this._needEmitJson = null; - this._needPush = null; - this._needEmitCsv = null; - this._csvTransf = null; - this.finalResult = []; - // this.on("data", function() {}); - this.on("error", emitDone(this)); - this.on("end", emitDone(this)); - this.initWorker(); - process.nextTick(function () { - if (this._needEmitFinalResult === null) { - this._needEmitFinalResult = this.listeners("end_parsed").length > 0; - } - if (this._needEmitResult === null) { - this._needEmitResult = this.listeners("record_parsed").length > 0; - } - if (this._needEmitJson === null) { - this._needEmitJson = this.listeners("json").length > 0; - } - if (this._needEmitHeader === null) { - this._needEmitHeader = this.listeners("header").length > 0; - } - if (this._needEmitCsv === null) { - this._needEmitCsv = this.listeners("csv").length > 0; - } - if (this._needJson === null) { - this._needJson = this._needEmitJson || this._needEmitFinalResult || this._needEmitResult || this.transform || this._options.objectMode; - } - if (this._needPush === null) { - this._needPush = this.listeners("data").length > 0 || this.listeners("readable").length > 0; - // this._needPush=false; - } - this.param._needParseJson = this._needJson || this._needPush; - }.bind(this)); - - return this; -} - -util.inherits(Converter, Transform); -function emitDone(conv) { - return function (err) { - if (!conv._hasDone) { - conv._hasDone = true; - process.nextTick(function () { - conv.emit('done', err); - }); - }; - } -} - - -function bufFromString(str) { - var length=Buffer.byteLength(str); - var buffer = Buffer.allocUnsafe - ? Buffer.allocUnsafe(length) - : new Buffer(length); - buffer.write(str); - return buffer; -} - -Converter.prototype._transform = function (data, encoding, cb) { - data=this.prepareData(data); - var idx =data.length-1; - var left=null; - /** - * From Keyang: - * The code below is to check if a single utf8 char (which could be multiple bytes) being split. - * If the char being split, the buffer from two chunk needs to be concat - * check how utf8 being encoded to understand the code below. - * If anyone has any better way to do this, please let me know. - */ - if ((data[idx] & 1<<7) !=0){ - while ((data[idx] & 3<<6) === 128){ - idx--; - } - idx--; - } - if (idx !=data.length-1){ - left=data.slice(idx+1); - data=data.slice(0,idx+1) - var _cb=cb; - var self=this; - cb=function(){ - if (self._csvLineBuffer){ - self._csvLineBuffer=Buffer.concat([bufFromString(self._csvLineBuffer,"utf8"),left]); - }else{ - self._csvLineBuffer=left; - } - _cb(); - } - } - data = data.toString("utf8"); - if (this.started === false) { - this.started = true; - data = stripBom(data); - if (this.param.toArrayString) { - if (this._needPush) { - this.push("[" + eol, "utf8"); - } - } - } - var self = this; - this.preProcessRaw(data, function (d) { - if (d && d.length > 0) { - self.processData(d, cb); - } else { - cb(); - } - }); -}; - -Converter.prototype.prepareData = function (data) { - if (this._csvLineBuffer && this._csvLineBuffer.length>0){ - if (typeof this._csvLineBuffer === "string"){ - this._csvLineBuffer=bufFromString(this._csvLineBuffer); - } - return Buffer.concat([this._csvLineBuffer,data]); - }else{ - return data; - } - // return this._csvLineBuffer + data; -}; - -Converter.prototype.setPartialData = function (d) { - this._csvLineBuffer = d; -}; - -Converter.prototype.processData = function (data, cb) { - var params = this.param; - if (params.ignoreEmpty && !params._headers) { - data = data.replace(/^\s+/, ""); - } - var eol = this.param.eol; - var fileLines = fileline(data, this.param); - if (this.param.eol !== eol) { - this.emit("eol", this.param.eol); - } - if (fileLines.lines.length > 0) { - if (this.preProcessLine && typeof this.preProcessLine === "function") { - fileLines.lines = this._preProcessLines(fileLines.lines, this.lastIndex); - } - if (!params._headers) { //header is not inited. init header - this.processHead(fileLines, cb); - } else { - if (params.workerNum <= 1) { - var lines = fileLineToCSVLine(fileLines, params); - this.setPartialData(lines.partial); - var jsonArr = linesToJson(lines.lines, params, this.recordNum); - this.processResult(jsonArr); - this.lastIndex += jsonArr.length; - this.recordNum += jsonArr.length; - cb(); - } else { - this.workerProcess(fileLines, cb); - } - } - } else { - this.setPartialData(fileLines.partial); - cb(); - } -}; - -Converter.prototype._preProcessLines = function (lines, startIdx) { - var rtn = []; - for (var i = 0, len = lines.length; i < len; i++) { - var result = this.preProcessLine(lines[i], startIdx + i + 1); - if (typeof result === "string") { - rtn.push(result); - } else { - rtn.push(lines[i]); - this.emit("error", new Error("preProcessLine should return a string but got: " + JSON.stringify(result))); - } - } - return rtn; -}; - -Converter.prototype.initWorker = function () { - var workerNum = this.param.workerNum - 1; - if (workerNum > 0) { - workerMgr = require("./workerMgr"); - this.workerMgr = workerMgr(); - this.workerMgr.initWorker(workerNum, this.param); - } -}; - -Converter.prototype.preRawData = function (func) { - this.preProcessRaw = func; - return this; -}; - -Converter.prototype.preFileLine = function (func) { - this.preProcessLine = func; - return this; -}; - -/** - * workerpRocess does not support embeded multiple lines. - */ -Converter.prototype.workerProcess = function (fileLine, cb) { - var self = this; - var line = fileLine; - var eol = this.getEol(); - this.setPartialData(line.partial); - this.workerMgr.sendWorker(line.lines.join(eol) + eol, this.lastIndex, cb, function (results, lastIndex) { - var buf; - var cur = self.sequenceBuffer[0]; - if (cur.idx === lastIndex) { - cur.result = results; - var records = []; - while (self.sequenceBuffer[0] && self.sequenceBuffer[0].result) { - buf = self.sequenceBuffer.shift(); - records = records.concat(buf.result); - } - self.processResult(records); - self.recordNum += records.length; - } else { - for (var i = 0, len = self.sequenceBuffer.length; i < len; i++) { - buf = self.sequenceBuffer[i]; - if (buf.idx === lastIndex) { - buf.result = results; - break; - } - } - } - }); - this.sequenceBuffer.push({ - idx: this.lastIndex, - result: null - }); - this.lastIndex += line.lines.length; -}; - -Converter.prototype.processHead = function (fileLine, cb) { - var params = this.param; - if (params._headers) { - return cb(); - } - //dirty hack - params._needFilterRow = false; - // if header is not inited. init header - var lines = fileLine.lines; - var left = ""; - var headerRow = []; - if (!params.noheader) { - while (lines.length) { - var line = left + lines.shift(); - var delimiter = params.delimiter; - var row = rowSplit(line, params); - if (params.delimiter !== delimiter) { - this.emit("delimiter", params.delimiter); - } - if (row.closed) { - headerRow = row.cols; - left = ""; - break; - } else { - left = line + this.getEol(); - } - } - } - params._needFilterRow = true; - if (!params.noheader && headerRow.length === 0) { //if one chunk of data does not complete header row. - this.setPartialData(left); - return cb(); - } - if (params.noheader) { - if (params.headers) { - params._headers = params.headers; - } else { - params._headers = []; - } - } else { - if (params.headers) { - params._headers = params.headers; - } else { - params._headers = headerRow; - } - } - configIgnoreIncludeColumns(params); - params._headers = require("./filterRow")(params._headers, params); - if (this._needEmitHeader && this.param._headers) { - this.emit("header", this.param._headers); - } - var delimiter = params.delimiter; - var lines = fileLineToCSVLine(fileLine, params); - if (params.delimiter !== delimiter) { - this.emit("delimiter", params.delimiter); - } - this.setPartialData(lines.partial); - if (this.param.workerNum > 1) { - this.workerMgr.setParams(params); - } - var res = linesToJson(lines.lines, params, 0); - // Put the header with the first row - // if(res.length > 0) res[0].header = params._headers; - this.processResult(res); - this.lastIndex += res.length; - this.recordNum += res.length; - - cb(); -}; -function configIgnoreIncludeColumns(params) { - if (params._postIgnoreColumns) { - for (var i = 0; i < params.ignoreColumns.length; i++) { - var ignoreCol = params.ignoreColumns[i]; - if (typeof ignoreCol === "string") { - var idx = params._headers.indexOf(ignoreCol); - if (idx > -1) { - params.ignoreColumns[i] = idx; - } else { - params.ignoreColumns[i] = -1; - } - } - } - params.ignoreColumns.sort(function (a, b) { return b - a; }); - } - if (params._postIncludeColumns) { - for (var i = 0; i < params.includeColumns.length; i++) { - var includeCol = params.includeColumns[i]; - if (typeof includeCol === "string") { - var idx = params._headers.indexOf(includeCol); - if (idx > -1) { - params.includeColumns[i] = idx; - } else { - params.includeColumns[i] = -1; - } - } - } - } - params.ignoreColumns = _.uniq(params.ignoreColumns); - params.includeColumns = _.uniq(params.includeColumns); -} - -Converter.prototype.processResult = function (result) { - for (var i = 0, len = result.length; i < len; i++) { - var r = result[i]; - if (r.err) { - this.emit("error", r.err); - } else { - this.emitResult(r); - } - } -}; - -Converter.prototype.emitResult = function (r) { - var index = r.index; - var header = this.param; - var row = r.row; - var result = r.json; - var resultJson = null; - var resultStr = null; - if (typeof result === "string") { - resultStr = result; - } else { - resultJson = result; - } - if (resultJson === null && this._needJson) { - resultJson = JSON.parse(resultStr); - if (typeof row === "string") { - row = JSON.parse(row); - } - } - if (this.transform && typeof this.transform === "function") { - this.transform(resultJson, row, index); - resultStr = null; - } - if (this._needEmitJson) { - this.emit("json", resultJson, index); - } - if (this._needEmitCsv) { - if (typeof row === "string") { - row = JSON.parse(row); - } - this.emit("csv", row, index); - } - if (this.param.constructResult && this._needEmitFinalResult) { - this.finalResult.push(resultJson); - } - if (this._needEmitResult) { - this.emit("record_parsed", resultJson, row, index); - } - if (this.param.toArrayString && index > 0 && this._needPush) { - this.push("," + eol); - } - if (this._options && this._options.objectMode) { - this.push(resultJson); - } else { - if (this._needPush) { - if (resultStr === null) { - resultStr = JSON.stringify(resultJson); - } - this.push(!this.param.toArrayString ? resultStr + eol : resultStr, "utf8"); - } - } -}; - -Converter.prototype.preProcessRaw = function (data, cb) { - cb(data); -}; - -// FIXME: lineNumber is not used. -Converter.prototype.preProcessLine = function (line, lineNumber) { - return line; -}; - -Converter.prototype._flush = function (cb) { - var self = this; - this.flushCb = function () { - self.emit("end_parsed", self.finalResult); - if (self.workerMgr) { - self.workerMgr.destroyWorker(); - } - cb(); - if (!self._needPush) { - self.emit("end"); - } - }; - if (this._csvLineBuffer.length > 0) { - var eol = this.getEol(); - if (this._csvLineBuffer[this._csvLineBuffer.length - 1] !== eol) { - this._csvLineBuffer += eol; - } - this.processData(this._csvLineBuffer, function () { - this.checkAndFlush(); - }.bind(this)); - } else { - this.checkAndFlush(); - } - return; -}; - -Converter.prototype.checkAndFlush = function () { - if (this._csvLineBuffer.length !== 0) { - this.emit("error", CSVError.unclosed_quote(this.recordNum, this._csvLineBuffer), this._csvLineBuffer); - } - if (this.param.toArrayString && this._needPush) { - this.push(eol + "]", "utf8"); - } - if (this.workerMgr && this.workerMgr.isRunning()) { - this.workerMgr.drain = function () { - this.flushCb(); - }.bind(this); - } else { - this.flushCb(); - } -}; - -Converter.prototype.getEol = function (data) { - if (!this.param.eol && data) { - for (var i = 0, len = data.length; i < len; i++) { - if (data[i] === "\r") { - if (data[i + 1] === "\n") { - this.param.eol = "\r\n"; - } else { - this.param.eol = "\r"; - } - return this.param.eol; - } else if (data[i] === "\n") { - this.param.eol = "\n"; - return this.param.eol; - } - } - this.param.eol = eol; - } - - return this.param.eol || eol; -}; - -Converter.prototype.fromFile = function (filePath, cb, options) { - var fs = require('fs'); - var rs = null; - if (typeof cb ==="object" && typeof options === "undefined"){ - options=cb; - cb=null; - } - this.wrapCallback(cb, function () { - if (rs && rs.destroy) { - rs.destroy(); - } - }); - fs.exists(filePath, function (exist) { - if (exist) { - rs = fs.createReadStream(filePath,options); - rs.pipe(this); - } else { - this.emit('error', new Error("File does not exist. Check to make sure the file path to your csv is correct.")); - } - }.bind(this)); - return this; -}; - -Converter.prototype.fromStream = function (readStream, cb) { - if (cb && typeof cb === "function") { - this.wrapCallback(cb); - } - readStream.pipe(this); - return this; -}; - -Converter.prototype.transf = function (func) { - this.transform = func; - return this; -}; - -Converter.prototype.fromString = function (csvString, cb) { - if (typeof csvString !== "string") { - if (cb && typeof cb ==="function"){ - return cb(new Error("Passed CSV Data is not a string.")); - } - } - if (cb && typeof cb === "function") { - this.wrapCallback(cb, function () { - }); - } - process.nextTick(function () { - this.end(csvString); - }.bind(this)); - return this; -}; - -Converter.prototype.wrapCallback = function (cb, clean) { - if (clean === undefined) { - clean = function () { }; - } - if (cb && typeof cb === "function") { - this.once("end_parsed", function (res) { - if (!this.hasError) { - cb(null, res); - } - }.bind(this)); - } - this.once("error", function (err) { - this.hasError = true; - if (cb && typeof cb === "function") { - cb(err); - } - clean(); - }.bind(this)); -}; - -module.exports = Converter; diff --git a/node_modules/csvtojson/v1/core/csvline.js b/node_modules/csvtojson/v1/core/csvline.js deleted file mode 100644 index eb98473..0000000 --- a/node_modules/csvtojson/v1/core/csvline.js +++ /dev/null @@ -1,23 +0,0 @@ -var getEol = require("./getEol"); -var rowSplit = require("./rowSplit"); -/** - * Convert lines to csv columns - * @param {[type]} lines [file lines] - * @param {[type]} param [Converter param] - * @return {[type]} {lines:[[col1,col2,col3...]],partial:String} - */ -module.exports = function(lines, param) { - var csvLines = []; - var left = ""; - while (lines.length) { - var line = left + lines.shift(); - var row = rowSplit(line, param); - if (row.closed || param.alwaysSplitAtEOL) { - csvLines.push(row.cols); - left = ""; - } else { - left = line + (getEol(line, param) || "\n"); // if unable to getEol from data, assume "\n" - } - } - return {lines: csvLines, partial: left}; -}; diff --git a/node_modules/csvtojson/v1/core/dataToCSVLine.js b/node_modules/csvtojson/v1/core/dataToCSVLine.js deleted file mode 100644 index 703ad1d..0000000 --- a/node_modules/csvtojson/v1/core/dataToCSVLine.js +++ /dev/null @@ -1,17 +0,0 @@ -var fileline=require("./fileline"); -var csvline=require("./csvline"); -/** - * Convert data chunk to csv lines with cols - * @param {[type]} data [description] - * @param {[type]} params [description] - * @return {[type]} {lines:[[col1,col2,col3]],partial:String} - */ -module.exports = function(data, params) { - var line = fileline(data, params); - var lines = line.lines; - var csvLines = csvline(lines, params); - return { - lines: csvLines.lines, - partial: csvLines.partial + line.partial - }; -}; diff --git a/node_modules/csvtojson/v1/core/defParam.js b/node_modules/csvtojson/v1/core/defParam.js deleted file mode 100644 index a94ea3c..0000000 --- a/node_modules/csvtojson/v1/core/defParam.js +++ /dev/null @@ -1,67 +0,0 @@ -var numExp = /^[0-9]+$/; -module.exports = function (params) { - var _param = { - constructResult: true, //set to false to not construct result in memory. suitable for big csv data - delimiter: ',', // change the delimiter of csv columns. It is able to use an array to specify potencial delimiters. e.g. [",","|",";"] - ignoreColumns: [], // columns to ignore upon input. - includeColumns: [], // columns to include upon input. - quote: '"', //quote for a column containing delimiter. - trim: true, //trim column's space charcters - checkType: false, //whether check column type - toArrayString: false, //stream down stringified json array instead of string of json. (useful if downstream is file writer etc) - ignoreEmpty: false, //Ignore empty value while parsing. if a value of the column is empty, it will be skipped parsing. - workerNum: getEnv("CSV_WORKER", 1), //number of parallel workers. If multi-core CPU available, increase the number will get better performance for large csv data. - fork: false, //use another CPU core to convert the csv stream - noheader: false, //indicate if first line of CSV file is header or not. - headers: null, //an array of header strings. If noheader is false and headers is array, csv header will be ignored. - flatKeys: false, // Don't interpret dots and square brackets in header fields as nested object or array identifiers at all. - maxRowLength: 0, //the max character a csv row could have. 0 means infinite. If max number exceeded, parser will emit "error" of "row_exceed". if a possibly corrupted csv data provided, give it a number like 65535 so the parser wont consume memory. default: 0 - checkColumn: false, //whether check column number of a row is the same as headers. If column number mismatched headers number, an error of "mismatched_column" will be emitted.. default: false - escape: '"', //escape char for quoted column - colParser:{}, //flags on columns to alter field processing. - - /**below are internal params */ - _columnConv:[], - _headerType: [], - _headerTitle: [], - _headerFlag: [], - _headers: null, - _needFilterRow: false - }; - if (!params) { - params = {}; - } - for (var key in params) { - if (params.hasOwnProperty(key)) { - if (Array.isArray(params[key])) { - _param[key] = [].concat(params[key]); - } else { - _param[key] = params[key]; - } - } - } - if (_param.ignoreColumns.length > 0 && !numExp.test(_param.ignoreColumns.join(""))) { - _param._postIgnoreColumns = true; - } - if (_param.includeColumns.length > 0 && !numExp.test(_param.includeColumns.join(""))) { - _param._postIncludeColumns = true; - } - - if (_param.ignoreColumns.length || _param.includeColumns.length) { - _param._needFilterRow = true; - if (!_param._postIgnoreColumns){ - _param.ignoreColumns.sort(function (a, b) { return b-a;}); - } - } - - - return _param; -}; - -function getEnv(key, def) { - if (process.env[key]) { - return process.env[key]; - } else { - return def; - } -} diff --git a/node_modules/csvtojson/v1/core/defaultParsers/index.js b/node_modules/csvtojson/v1/core/defaultParsers/index.js deleted file mode 100644 index aac3f58..0000000 --- a/node_modules/csvtojson/v1/core/defaultParsers/index.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = [ - require('./parser_array.js'), - require('./parser_json.js'), - require('./parser_omit.js'), - require('./parser_jsonarray.js'), - require("./parser_flat.js") -]; diff --git a/node_modules/csvtojson/v1/core/defaultParsers/parser_array.js b/node_modules/csvtojson/v1/core/defaultParsers/parser_array.js deleted file mode 100644 index 9801cec..0000000 --- a/node_modules/csvtojson/v1/core/defaultParsers/parser_array.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - "name": "array", - "processSafe":true, - "regExp": /^\*array\*/, - "parserFunc": function parser_array(params) { - var fieldName = params.head.replace(this.regExp, ''); - if (params.resultRow[fieldName] === undefined) { - params.resultRow[fieldName] = []; - } - params.resultRow[fieldName].push(params.item); - } -}; diff --git a/node_modules/csvtojson/v1/core/defaultParsers/parser_flat.js b/node_modules/csvtojson/v1/core/defaultParsers/parser_flat.js deleted file mode 100644 index d10e0dd..0000000 --- a/node_modules/csvtojson/v1/core/defaultParsers/parser_flat.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - "name": "flat", - "processSafe": true, - "regExp": /^\*flat\*/, - "parserFunc": function parser_flat (params) { - var key = this.getHeadStr(); - var val = params.item; - params.resultRow[key] = val; - } -}; diff --git a/node_modules/csvtojson/v1/core/defaultParsers/parser_json.js b/node_modules/csvtojson/v1/core/defaultParsers/parser_json.js deleted file mode 100644 index 9cb2eda..0000000 --- a/node_modules/csvtojson/v1/core/defaultParsers/parser_json.js +++ /dev/null @@ -1,70 +0,0 @@ -var arrReg = /\[([0-9]*)\]/; - - -function processHead(pointer, headArr, arrReg, flatKeys) { - var headStr, match, index; - while (headArr.length > 1) { - headStr = headArr.shift(); - // match = headStr.match(arrReg); - match = flatKeys ? false : headStr.match(arrReg); - if (match) { //if its array, we need add an empty json object into specified index. - if (pointer[headStr.replace(match[0], '')] === undefined) { - pointer[headStr.replace(match[0], '')] = []; - } - index = match[1]; //get index where json object should stay - pointer = pointer[headStr.replace(match[0], '')]; - if (index === '') { //if its dynamic array index, push to the end - index = pointer.length; - } - if (!pointer[index]) { //current index in the array is empty. we need create a new json object. - pointer[index] = {}; - } - pointer = pointer[index]; - } else { //not array, just normal JSON object. we get the reference of it - if (pointer[headStr] === undefined) { - pointer[headStr] = {}; - } - pointer = pointer[headStr]; - } - } - return pointer; -} -module.exports = { - "name": "json", - "processSafe": true, - "regExp": /^\*json\*/, - "parserFunc": function parser_json(params) { - var fieldStr = this.getHeadStr(); - var headArr = (params.config && params.config.flatKeys) ? [fieldStr] : fieldStr.split('.'); - var match, index, key; - //now the pointer is pointing the position to add a key/value pair. - var pointer = processHead(params.resultRow, headArr, arrReg, params.config && params.config.flatKeys); - key = headArr.shift(); - match = (params.config && params.config.flatKeys) ? false : key.match(arrReg); - if (match) { // the last element is an array, we need check and treat it as an array. - try { - key = key.replace(match[0], ''); - if (!pointer[key] || !(pointer[key] instanceof Array)) { - pointer[key] = []; - } - if (pointer[key]) { - index = match[1]; - if (index === '') { - index = pointer[key].length; - } - pointer[key][index] = params.item; - } else { - params.resultRow[fieldStr] = params.item; - } - } catch (e) { - params.resultRow[fieldStr] = params.item; - } - } else { - if (typeof pointer === "string"){ - params.resultRow[fieldStr] = params.item; - }else{ - pointer[key] = params.item; - } - } - } -}; diff --git a/node_modules/csvtojson/v1/core/defaultParsers/parser_jsonarray.js b/node_modules/csvtojson/v1/core/defaultParsers/parser_jsonarray.js deleted file mode 100644 index 0fe4fb5..0000000 --- a/node_modules/csvtojson/v1/core/defaultParsers/parser_jsonarray.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - "name": "jsonarray", - "processSafe":true, - "regExp": /^\*jsonarray\*/, - "parserFunc": function parser_jsonarray (params) { - var fieldStr = params.head.replace(this.regExp, ""); - var headArr = fieldStr.split('.'); - var pointer = params.resultRow; - while (headArr.length > 1) { - var headStr = headArr.shift(); - if (pointer[headStr] === undefined) { - pointer[headStr] = {}; - } - pointer = pointer[headStr]; - } - var arrFieldName = headArr.shift(); - if (pointer[arrFieldName] === undefined) { - pointer[arrFieldName] = []; - } - pointer[arrFieldName].push(params.item); - } -}; diff --git a/node_modules/csvtojson/v1/core/defaultParsers/parser_omit.js b/node_modules/csvtojson/v1/core/defaultParsers/parser_omit.js deleted file mode 100644 index 6b67aea..0000000 --- a/node_modules/csvtojson/v1/core/defaultParsers/parser_omit.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - "name": "omit", - "regExp": /^\*omit\*/, - "processSafe":true, - "parserFunc": function parser_omit() {} -}; diff --git a/node_modules/csvtojson/v1/core/fileLineToCSVLine.js b/node_modules/csvtojson/v1/core/fileLineToCSVLine.js deleted file mode 100644 index b81d321..0000000 --- a/node_modules/csvtojson/v1/core/fileLineToCSVLine.js +++ /dev/null @@ -1,15 +0,0 @@ -var csvline=require("./csvline"); -/** - * Convert data chunk to csv lines with cols - * @param {[type]} data [description] - * @param {[type]} params [description] - * @return {[type]} {lines:[[col1,col2,col3]],partial:String} - */ -module.exports = function(fileLine, params) { - var lines = fileLine.lines; - var csvLines = csvline(lines,params); - return { - lines: csvLines.lines, - partial: csvLines.partial + fileLine.partial - }; -}; diff --git a/node_modules/csvtojson/v1/core/fileline.js b/node_modules/csvtojson/v1/core/fileline.js deleted file mode 100644 index c9beef1..0000000 --- a/node_modules/csvtojson/v1/core/fileline.js +++ /dev/null @@ -1,13 +0,0 @@ -var getEol = require("./getEol"); -/** - * convert data chunk to file lines array - * @param {string} data data chunk as utf8 string - * @param {object} param Converter param object - * @return {Object} {lines:[line1,line2...],partial:String} - */ -module.exports = function(data, param) { - var eol = getEol(data,param); - var lines = data.split(eol); - var partial = lines.pop(); - return {lines: lines, partial: partial}; -}; diff --git a/node_modules/csvtojson/v1/core/filterRow.js b/node_modules/csvtojson/v1/core/filterRow.js deleted file mode 100644 index 516edbb..0000000 --- a/node_modules/csvtojson/v1/core/filterRow.js +++ /dev/null @@ -1,19 +0,0 @@ -module.exports=function filterRow(row, param) { - if (param.ignoreColumns instanceof Array && param.ignoreColumns.length > 0) { - for (var igRow = 0, igColLen = param.ignoreColumns.length; igRow < igColLen; igRow++) { - if (param.ignoreColumns[igRow] >= 0) { - row.splice(param.ignoreColumns[igRow], 1); - } - } - } - if (param.includeColumns instanceof Array && param.includeColumns.length > 0) { - var cleanRowArr = []; - for (var inRow = 0, inColLen = param.includeColumns.length; inRow < inColLen; inRow++) { - if (param.includeColumns[inRow] >= 0) { - cleanRowArr.push(row[param.includeColumns[inRow]]); - } - } - row = cleanRowArr; - } - return row; -} \ No newline at end of file diff --git a/node_modules/csvtojson/v1/core/getDelimiter.js b/node_modules/csvtojson/v1/core/getDelimiter.js deleted file mode 100644 index 4ff121e..0000000 --- a/node_modules/csvtojson/v1/core/getDelimiter.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = getDelimiter; -var defaulDelimiters = [",", "|", "\t", ";", ":"]; -function getDelimiter(rowStr,param) { - var checker; - if (param.delimiter === "auto"){ - checker = defaulDelimiters; - } else if (param.delimiter instanceof Array) { - checker = param.delimiter; - } else { - return param.delimiter; - } - var count = 0; - var rtn = ","; - checker.forEach(function(delim) { - var delimCount = rowStr.split(delim).length; - if (delimCount > count) { - rtn = delim; - count = delimCount; - } - }); - return rtn; -} diff --git a/node_modules/csvtojson/v1/core/getEol.js b/node_modules/csvtojson/v1/core/getEol.js deleted file mode 100644 index 3e5a93d..0000000 --- a/node_modules/csvtojson/v1/core/getEol.js +++ /dev/null @@ -1,20 +0,0 @@ -//return eol from a data chunk. -var eol = require("os").EOL; -module.exports = function(data, param) { - if (!param.eol && data) { - for (var i = 0, len = data.length; i < len; i++) { - if (data[i] === "\r") { - if (data[i + 1] === "\n") { - param.eol = "\r\n"; - } else if (data[i + 1]) { - param.eol = "\r"; - } - return param.eol; - } else if (data[i] === "\n") { - param.eol = "\n"; - return param.eol; - } - } - } - return param.eol; -}; diff --git a/node_modules/csvtojson/v1/core/index.js b/node_modules/csvtojson/v1/core/index.js deleted file mode 100644 index 0d705f6..0000000 --- a/node_modules/csvtojson/v1/core/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = constructor; -module.exports.Converter = require("./Converter.js"); - -function constructor(param,options) { - return new module.exports.Converter(param, options); -} diff --git a/node_modules/csvtojson/v1/core/linesToJson.js b/node_modules/csvtojson/v1/core/linesToJson.js deleted file mode 100644 index 3493c2a..0000000 --- a/node_modules/csvtojson/v1/core/linesToJson.js +++ /dev/null @@ -1,235 +0,0 @@ -var parserMgr = require("./parserMgr.js"); -var CSVError = require("./CSVError"); -var numReg = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/; -/** - * Convert lines of csv array into json - * @param {[type]} lines [[col1,col2,col3]] - * @param {[type]} params Converter params with _headers field populated - * @param {[type]} idx start pos of the lines - * @return {[type]} [{err:null,json:obj,index:line,row:[csv row]}] - */ -module.exports = function (lines, params, idx) { - if (params._needParseJson) { - if (!params._headers || !Array.isArray(params._headers)) { - params._headers = []; - } - if (!params.parseRules) { - var row = params._headers; - params.parseRules = parserMgr.initParsers(row, params); - } - return processRows(lines, params, idx); - } else { - return justReturnRows(lines, params, idx); - } -}; - -function justReturnRows(lines, params, idx) { - var rtn = []; - for (var i = 0, len = lines.length; i < len; i++) { - rtn.push({ - err: null, - json: {}, - index: idx++, - row: lines[i] - }); - } - return rtn; -} - -function processRows(csvRows, params, startIndex) { - var res = []; - for (var i = 0, len = csvRows.length; i < len; i++) { - var r = processRow(csvRows[i], params, startIndex++); - if (r) { - res.push(r); - } - } - return res; -} - -function processRow(row, param, index) { - var parseRules = param.parseRules; - if (param.checkColumn && row.length !== parseRules.length) { - return { - err: CSVError.column_mismatched(index) - }; - } - - var headRow = param._headers; - var resultRow = convertRowToJson(row, headRow, param); - if (resultRow) { - return { - json: resultRow, - index: index, - row: row - }; - } else { - return null; - } -} - -function convertRowToJson(row, headRow, param) { - var hasValue = false; - var resultRow = {}; - - for (var i = 0, len = row.length; i < len; i++) { - var convertFunc, head, item; - item = row[i]; - - if (param.ignoreEmpty && item === '') { - continue; - } - hasValue = true; - - head = headRow[i]; - if (!head || head === "") { - head = headRow[i] = "field" + (i + 1); - } - var convFunc = getConvFunc(head, i, param); - if (convFunc) { - var convRes = convFunc(item, head, resultRow,row,i); - if (convRes !== undefined) { - setPath(resultRow, head, convRes); - } - } else { - var flag = getFlag(head, i, param); - if (flag === 'omit') { - continue; - } - if (param.checkType) { - convertFunc = checkType(item, head, i, param); - item = convertFunc(item); - } - var title = getTitle(head, i, param); - if (flag === 'flat' || param.flatKeys) { - resultRow[title] = item; - } else { - setPath(resultRow, title, item); - } - } - } - if (hasValue) { - return resultRow; - } else { - return false; - } -} - -var builtInConv={ - "string":stringType, - "number":numberType, - "omit":function(){} -} -function getConvFunc(head,i,param){ - if (param._columnConv[i] !== undefined){ - return param._columnConv[i]; - }else{ - var flag=param.colParser[head]; - if (flag === undefined){ - return param._columnConv[i]=false; - } - if (typeof flag ==="string"){ - flag=flag.trim().toLowerCase(); - var builtInFunc=builtInConv[flag]; - if (builtInFunc){ - return param._columnConv[i]=builtInFunc; - }else{ - return param._columnConv[i]=false; - } - }else if (typeof flag ==="function"){ - return param._columnConv[i]=flag; - }else{ - return param._columnConv[i]=false; - } - } -} -function setPath(json, path, value) { - var _set = require('lodash/set'); - var pathArr = path.split('.'); - if (pathArr.length === 1) { - json[path] = value; - } else { - _set(json, path, value); - } -} - -function getFlag(head, i, param) { - if (typeof param._headerFlag[i] === "string") { - return param._headerFlag[i]; - } else if (head.indexOf('*omit*') > -1) { - return param._headerFlag[i] = 'omit'; - } else if (head.indexOf('*flat*') > -1) { - return param._headerFlag[i] = 'flat'; - } else { - return param._headerFlag[i] = ''; - } -} - -function getTitle(head, i, param) { - if (param._headerTitle[i]) { - return param._headerTitle[i]; - } - - var flag = getFlag(head, i, param); - var str = head.replace('*flat*', '').replace('string#!', '').replace('number#!', ''); - return param._headerTitle[i] = str; -} - -function checkType(item, head, headIdx, param) { - if (param._headerType[headIdx]) { - return param._headerType[headIdx]; - } else if (head.indexOf('number#!') > -1) { - return param._headerType[headIdx] = numberType; - } else if (head.indexOf('string#!') > -1) { - return param._headerType[headIdx] = stringType; - } else if (param.checkType) { - return param._headerType[headIdx] = dynamicType; - } else { - return param._headerType[headIdx] = stringType; - } -} - -function numberType(item) { - var rtn = parseFloat(item); - if (isNaN(rtn)) { - return item; - } - return rtn; -} - -function stringType(item) { - return item.toString(); -} - -function dynamicType(item) { - var trimed = item.trim(); - if (trimed === "") { - return stringType(item); - } - if (numReg.test(trimed)) { - return numberType(item); - } else if (trimed.length === 5 && trimed.toLowerCase() === "false" || trimed.length === 4 && trimed.toLowerCase() === "true") { - return booleanType(item); - } else if (trimed[0] === "{" && trimed[trimed.length - 1] === "}" || trimed[0] === "[" && trimed[trimed.length - 1] === "]") { - return jsonType(item); - } else { - return stringType(item); - } -} - -function booleanType(item) { - var trimed = item.trim(); - if (trimed.length === 5 && trimed.toLowerCase() === "false") { - return false; - } else { - return true; - } -} - -function jsonType(item) { - try { - return JSON.parse(item); - } catch (e) { - return item; - } -} diff --git a/node_modules/csvtojson/v1/core/parser.js b/node_modules/csvtojson/v1/core/parser.js deleted file mode 100644 index 6b2a408..0000000 --- a/node_modules/csvtojson/v1/core/parser.js +++ /dev/null @@ -1,116 +0,0 @@ -var explicitTypes = ["number", "string"]; - -function Parser(name, regExp, parser, processSafe) { - this.name = typeof name === "undefined" ? "Default" : name; - this.regExp = null; - this.type = ""; - this.processSafe = processSafe; - if (typeof regExp !== "undefined") { - if (typeof regExp === "string") { - this.regExp = new RegExp(regExp); - } else { - this.regExp = regExp; - } - } - if (typeof parser !== "undefined") { - this.parse = parser; - } -} -// var numReg = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/; -Parser.prototype.convertType = function(item) { - var type=this.type; - if (type === 'number') { - var rtn = parseFloat(item); - if (isNaN(rtn)) { - return 0; - } else { - return rtn; - } - } else if (this.param && this.param.checkType && type === '') { - var trimed = item.trim(); - if (trimed === ""){ - return trimed; - } - if (!isNaN(trimed)) { - return parseFloat(trimed); - } else if (trimed.length === 5 && trimed.toLowerCase() === "false") { - return false; - } else if (trimed.length === 4 && trimed.toLowerCase() === "true") { - return true; - } else if (trimed[0] === "{" && trimed[trimed.length - 1] === "}" || trimed[0] === "[" && trimed[trimed.length - 1]==="]") { - try { - return JSON.parse(trimed); - } catch (e) { - return item; - } - } else { - return item; - } - } - return item; -}; - -Parser.prototype.setParam = function(param) { - this.param = param; -}; - -Parser.prototype.test = function(str) { - return this.regExp && this.regExp.test(str); -}; - -Parser.prototype.parse = function(params) { - params.resultRow[params.head] = params.item; -}; - -Parser.prototype.getHeadStr = function() { - if (this.headStr) { - return this.headStr; - } else { - var head = this.head; - this.headStr = head.replace(this.regExp, ''); - if (!this.headStr) { - this.headStr = "Unknown Header"; - } - return this.getHeadStr(); - } -}; - -Parser.prototype.getHead = function() { - return this.head; -}; - -Parser.prototype.initHead = function(columnTitle) { - this.head = columnTitle; - var wholeHead = columnTitle.replace(this.regExp, ''); - //init type && headStr - var splitArr = wholeHead.split("#!"); - if (splitArr.length === 1) { //no explicit type - this.headStr = splitArr[0]; - } else { - var type = splitArr.shift(); - if (explicitTypes.indexOf(type.toLowerCase()) > -1) { - this.type = type; - this.headStr = splitArr.join("#!"); - } else { //no explicit type - this.headStr = wholeHead; - } - } - if (!this.headStr) { - this.headStr = wholeHead ? wholeHead : "Unknown Head"; - } -}; - -Parser.prototype.clone = function() { - var obj = Object.create(this); - var newParser = new Parser(); - for (var key in obj) { - newParser[key] = obj[key]; - } - return newParser; -}; - -Parser.prototype.getName = function() { - return this.name; -}; - -module.exports = Parser; diff --git a/node_modules/csvtojson/v1/core/parserMgr.js b/node_modules/csvtojson/v1/core/parserMgr.js deleted file mode 100644 index f95bfa7..0000000 --- a/node_modules/csvtojson/v1/core/parserMgr.js +++ /dev/null @@ -1,69 +0,0 @@ -//implementation -var registeredParsers = []; -var Parser = require("./parser.js"); -var defaultParser = require("./defaultParsers"); - -function registerParser (parser) { - if (parser instanceof Parser && registeredParsers.indexOf(parser) === -1) { - registeredParsers.push(parser); // TODO indexOf doesn't work with object references - } -} - -function getParser(columnTitle, param) { - var inst, parser; - function getParserByName(parserName) { - var parser; - registeredParsers.forEach(function(p){ - if (p.getName() === parserName){ - parser = p; - } - }); - if (parser) { - var inst = parser.clone(); - return inst; - } - return new Parser(); //TODO remove new - } - columnTitle = columnTitle ? columnTitle : ''; - registeredParsers.forEach(function(p) { - if (p.test(columnTitle)) { - parser=p; - } - }); - if (parser) { - inst = parser.clone(); - inst.head = columnTitle; - } else { - inst = getParserByName("json", columnTitle); - } - inst.setParam(param); - inst.initHead(columnTitle); - return inst; -} - -function addParser(name, regExp, parseFunc) { - var parser = new Parser(name, regExp, parseFunc,false); //TODO remove new - registerParser(parser); -} - -function addSafeParser(parserPath) { - //TODO impl -} - -function initParsers(row, param) { - var parsers = []; - row.forEach(function (columnTitle) { - parsers.push(getParser(columnTitle, param)); - }); - return parsers; -} - -defaultParser.forEach(function (parserCfg){ - //TODO refactor this - addParser(parserCfg.name, parserCfg.regExp, parserCfg.parserFunc, parserCfg.processSafe); -}); - -//module interfaces -module.exports.addParser = addParser; -module.exports.initParsers = initParsers; -module.exports.getParser = getParser; diff --git a/node_modules/csvtojson/v1/core/rowSplit.js b/node_modules/csvtojson/v1/core/rowSplit.js deleted file mode 100644 index 2b1fd4c..0000000 --- a/node_modules/csvtojson/v1/core/rowSplit.js +++ /dev/null @@ -1,131 +0,0 @@ -var getDelimiter = require("./getDelimiter"); -var filterRow=require("./filterRow"); -/** - * Convert a line of string to csv columns according to its delimiter - * the param._header may not be ready when this is called. - * @param {[type]} rowStr [description] - * @param {[type]} param [Converter param] - * @return {[type]} {cols:["a","b","c"],closed:boolean} the closed field indicate if the row is a complete row - */ -module.exports = function rowSplit(rowStr, param) { - if (rowStr === "") { - return { cols: [], closed: true }; - } - var quote = param.quote; - var trim = param.trim; - var escape = param.escape; - if (param.delimiter instanceof Array || param.delimiter.toLowerCase() === "auto") { - param.delimiter = getDelimiter(rowStr, param); - } - var delimiter = param.delimiter; - var rowArr = rowStr.split(delimiter); - if (quote === "off") { - return { cols: rowArr, closed: true }; - } - var row = []; - var inquote = false; - var quoteBuff = ''; - for (var i = 0, rowLen = rowArr.length; i < rowLen; i++) { - var e = rowArr[i]; - if (!inquote && trim) { - e = e.trim(); - } - var len = e.length; - if (!inquote) { - if (isQuoteOpen(e, param)) { //quote open - e = e.substr(1); - if (isQuoteClose(e, param)) { //quote close - e = e.substring(0, e.length - 1); - e = _escapeQuote(e, quote, escape); - row.push(e); - continue; - } else { - inquote = true; - quoteBuff += e; - continue; - } - } else { - row.push(e); - continue; - } - } else { //previous quote not closed - if (isQuoteClose(e, param)) { //close double quote - inquote = false; - e = e.substr(0, len - 1); - quoteBuff += delimiter + e; - quoteBuff = _escapeQuote(quoteBuff, quote, escape); - if (trim) { - quoteBuff = quoteBuff.replace(/\s+$/, ""); - } - row.push(quoteBuff); - quoteBuff = ""; - } else { - quoteBuff += delimiter + e; - } - } - } - - if (!inquote && param._needFilterRow) { - row = filterRow(row, param); - } - - return { cols: row, closed: !inquote }; - // if (param.workerNum<=1){ - // }else{ - // if (inquote && quoteBuff.length>0){//for multi core, quote will be closed at the end of line - // quoteBuff=_escapeQuote(quoteBuff,quote,escape);; - // if (trim){ - // quoteBuff=quoteBuff.trimRight(); - // } - // row.push(quoteBuff); - // } - // return {cols:row,closed:true}; - // } - -}; - - - -function isQuoteOpen(str, param) { - var quote = param.quote; - var escape = param.escape; - return str[0] === quote && ( - str[1] !== quote || - str[1] === escape && (str[2] === quote || str.length === 2)); -} -function isQuoteClose(str, param) { - var quote = param.quote; - var count = 0; - var idx = str.length - 1; - var escape = param.escape; - while (str[idx] === quote || str[idx] === escape) { - idx--; - count++; - } - return count % 2 !== 0; -} - -function twoDoubleQuote(str, quote) { - var twoQuote = quote + quote; - var curIndex = -1; - while ((curIndex = str.indexOf(twoQuote, curIndex)) > -1) { - str = str.substring(0, curIndex) + str.substring(++curIndex); - } - return str; -} - -var cachedRegExp = {}; -function _escapeQuote(segment, quote, escape) { - - var key = "es|" + quote + "|" + escape; - if (cachedRegExp[key] === undefined) { - - // if (escape === "\\") { - // escape = "\\\\"; - // } - cachedRegExp[key] = new RegExp('\\'+escape + '\\'+quote, 'g'); - } - var regExp = cachedRegExp[key]; - // console.log(regExp,segment); - return segment.replace(regExp, quote); -} diff --git a/node_modules/csvtojson/v1/core/worker.js b/node_modules/csvtojson/v1/core/worker.js deleted file mode 100644 index cd7b69a..0000000 --- a/node_modules/csvtojson/v1/core/worker.js +++ /dev/null @@ -1,84 +0,0 @@ -var param = null; -var fileLine = require("./fileline"); -var csvline = require("./csvline"); -var linesToJson = require("./linesToJson"); -var CSVError = require('./CSVError'); -var eom = "\x03"; -var eom1 = "\x0e"; -var eom2 = "\x0f"; -/** - * message is like : - * 0{"a":"b"} - * 13345|a,b,c - * - * is 0-9 - */ -var buffer=""; -process.stdin.on("data", function(d) { - var str = d.toString("utf8"); - var all = buffer + str; - var cmdArr = all.split(eom); - while (cmdArr.length > 1) { - processMsg(cmdArr.shift()); - } - buffer = cmdArr[0]; -}); - -process.on("message", processMsg); -function processMsg(msg) { - if (msg) { - var cmd = msg[0]; - var data = msg.substr(1); - switch (cmd) { - case "0": - initParams(data); - break; - case "1": - processData(data); - break; - default: - console.error("Unknown command: " + msg); - } - } -} - -function initParams(data) { - param = JSON.parse(data); -} - -/** - * e.g. - * 1023|a,b,c,d\ne,f,g,h\n - * | - */ -function processData(data) { - if (!param){ - console.error("Parameter not initialised when processing data."); - process.exit(1); - } - var sepIdx = data.indexOf("|"); - var startIdx = parseInt(data.substr(0, sepIdx)); - var csvData = data.substr(sepIdx + 1); - var lines = fileLine(csvData,param); //convert to file lines. - // process.send("0"+lines.lines.length+"|"+lines.partial); - var csvLines = csvline(lines.lines,param); - var res = linesToJson(csvLines.lines,param,startIdx); - if (csvLines.partial) { - var lastIdx = res.length > 0 ? res[res.length - 1].index + 1 : startIdx; - res.push({ - err:CSVError.unclosed_quote(lastIdx, csvLines.partial) - }); - } - // console.error(res) - //1|^|^err|^data|&|^|^err|^data - var str="1"; - res.forEach(function(item) { - var errStr = item.err ? item.err.toString() : ""; - str += item.index + eom2 + JSON.stringify(item.row) + eom2 + errStr + eom2 + JSON.stringify(item.json) + eom1; - }); - sendData(str); -} - -function sendData(str) { - process.stdout.write(str + eom); -} diff --git a/node_modules/csvtojson/v1/core/workerMgr.js b/node_modules/csvtojson/v1/core/workerMgr.js deleted file mode 100644 index 6b34e32..0000000 --- a/node_modules/csvtojson/v1/core/workerMgr.js +++ /dev/null @@ -1,150 +0,0 @@ -module.exports = workerMgr; -var eom = "\x03"; -var eom1 = "\x0e"; -var eom2 = "\x0f"; -var CSVError = require('./CSVError'); -function workerMgr() { - var exports = { - initWorker: initWorker, - sendWorker: sendWorker, - setParams: setParams, - drain: function(){}, - isRunning: isRunning, - destroyWorker: destroyWorker - }; - var workers = []; - var running = 0; - var waiting = null; - function initWorker(num, params) { - workers = []; - running = 0; - waiting = null; - for (var i = 0; i < num; i++) { - workers.push(new Worker(params)); - } - - } - function isRunning() { - return running > 0; - } - function destroyWorker() { - workers.forEach(function(w) { - w.destroy(); - }); - } - - function sendWorker(data, startIdx, transformCb, cbResult) { - if (workers.length > 0) { - var worker = workers.shift(); - running++; - worker.parse(data, startIdx, function(result) { - // var arr=JSON.parse(result); - // arr.forEach(function(item){ - // console.log('idx',item.index) - // }) - workers.push(worker); - cbResult(result, startIdx); - running--; - if (waiting === null && running === 0) { - exports.drain(); - } else if (waiting) { - sendWorker.apply(this, waiting); - waiting = null; - } - }); - process.nextTick(transformCb); - } else { - waiting = [data, startIdx, transformCb, cbResult]; - } - } - - function setParams(params) { - workers.forEach(function(w) { - w.setParams(params); - }); - } - return exports; -} - -function Worker(params) { - var spawn = require("child_process").spawn; - this.cp = spawn(process.execPath, [__dirname + "/worker.js"], { - env: { - child:true - }, - stdio:['pipe', 'pipe', 2, 'ipc'] - // stdio:[0,1,2,'ipc'] - }); - this.setParams(params); - this.cp.on("message", this.onChildMsg.bind(this)); - this.buffer = ""; - var self = this; - this.cp.stdout.on("data", function(d) { - var str = d.toString("utf8"); - var all = self.buffer + str; - var cmdArr = all.split(eom); - while (cmdArr.length > 1) { - self.onChildMsg(cmdArr.shift()); - } - self.buffer = cmdArr[0]; - }); -} - -Worker.prototype.setParams = function(params) { - var msg = "0" + JSON.stringify(params); - this.sendMsg(msg); -}; - -/** - * msg is like: - * - * cmd is from 0-9 - */ -Worker.prototype.onChildMsg = function(msg) { - if (msg) { - var cmd = msg[0]; - var data = msg.substr(1); - switch (cmd) { - case "0": //total line number of current chunk - if (this.cbLine) { - var sp = data.split("|"); - var len = parseInt(sp[0]); - var partial = sp[1]; - this.cbLine(len, partial); - } - break; - case "1": // json array of current chunk - if (this.cbResult) { - var rows = data.split(eom1); - rows.pop(); - var res = []; - rows.forEach(function(row) { - var sp = row.split(eom2); - res.push({ - index: sp[0], - row: sp[1], - err: sp[2] ? CSVError.fromArray(JSON.parse(sp[2])) : null, - json: sp[3] - }); - }); - this.cbResult(res); - } - break; - } - } -}; - -Worker.prototype.parse = function(data, startIdx, cbResult) { - this.cbResult = cbResult; - var msg = "1" + startIdx + "|" + data; - this.sendMsg(msg); -}; - -Worker.prototype.destroy = function() { - this.cp.kill(); -}; - -Worker.prototype.sendMsg = function(msg) { - this.cp.stdin.write(msg + eom, "utf8"); - // this.cp.send(msg) -}; diff --git a/node_modules/csvtojson/v1/index.js b/node_modules/csvtojson/v1/index.js deleted file mode 100644 index c39382d..0000000 --- a/node_modules/csvtojson/v1/index.js +++ /dev/null @@ -1,6 +0,0 @@ -//deprecated but leave it for backward compatibility -module.exports.core=require("./core"); - -//live apis -module.exports=require("./core"); -module.exports.interfaces = require("./interfaces"); diff --git a/node_modules/csvtojson/v1/interfaces/cli/index.js b/node_modules/csvtojson/v1/interfaces/cli/index.js deleted file mode 100644 index aecd8b2..0000000 --- a/node_modules/csvtojson/v1/interfaces/cli/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./main.js"); \ No newline at end of file diff --git a/node_modules/csvtojson/v1/interfaces/cli/main.js b/node_modules/csvtojson/v1/interfaces/cli/main.js deleted file mode 100644 index 7fcb264..0000000 --- a/node_modules/csvtojson/v1/interfaces/cli/main.js +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Convert input to process stdout - */ - -//implementation -var Converter = require("../../core/Converter.js"); -function _initConverter(){ - var csvConverter = new Converter(); - var started = false; - var writeStream = process.stdout; - csvConverter.on("record_parsed",function(rowJSON){ - if (started){ - writeStream.write(",\n"); - } - writeStream.write(JSON.stringify(rowJSON)); //write parsed JSON object one by one. - if (started === false){ - started = true; - } - }); - writeStream.write("[\n"); //write array symbol - - csvConverter.on("end_parsed",function(){ - writeStream.write("\n]"); //end array symbol - }); - csvConverter.on("error",function(err){ - console.error(err); - process.exit(-1); - }); - return csvConverter; -} -function convertFile(fileName){ - var csvConverter=_initConverter(); - csvConverter.from(fileName); -} - -function convertString(csvString){ - var csvConverter=_initConverter(); - csvConverter.from(csvString); -} -//module interfaces -module.exports.convertFile = convertFile; -module.exports.convertString = convertString; \ No newline at end of file diff --git a/node_modules/csvtojson/v1/interfaces/index.js b/node_modules/csvtojson/v1/interfaces/index.js deleted file mode 100644 index 8cde6bd..0000000 --- a/node_modules/csvtojson/v1/interfaces/index.js +++ /dev/null @@ -1,2 +0,0 @@ -module.exports.web=require("./web"); -module.exports.cli=require("./cli"); \ No newline at end of file diff --git a/node_modules/csvtojson/v1/interfaces/web/index.js b/node_modules/csvtojson/v1/interfaces/web/index.js deleted file mode 100644 index 1437d3a..0000000 --- a/node_modules/csvtojson/v1/interfaces/web/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./webServer.js"); \ No newline at end of file diff --git a/node_modules/csvtojson/v1/interfaces/web/webServer.js b/node_modules/csvtojson/v1/interfaces/web/webServer.js deleted file mode 100644 index d8aebc8..0000000 --- a/node_modules/csvtojson/v1/interfaces/web/webServer.js +++ /dev/null @@ -1,23 +0,0 @@ -var http = require("http"); -var Converter = require("../../core/Converter.js"); -function startWebServer (args) { - args = args || {}; - var serverArgs = { - port: args.port || '8801', - urlpath: args.urlpath || '/parseCSV' - }; - var server = http.createServer(); - server.on("request", function(req, res){ - if (req.url === serverArgs.urlpath && req.method === "POST"){ - req.pipe(new Converter({constructResult:false})).pipe(res); - } else { - res.end("Please post data to: " + serverArgs.urlpath); - } - }); - - server.listen(serverArgs.port); - console.log("CSV Web Server Listen On:" + serverArgs.port); - console.log("POST to " + serverArgs.urlpath + " with CSV data to get parsed."); - return server; -} -module.exports.startWebServer = startWebServer; diff --git a/node_modules/csvtojson/v2/CSVError.d.ts b/node_modules/csvtojson/v2/CSVError.d.ts deleted file mode 100644 index c01913c..0000000 --- a/node_modules/csvtojson/v2/CSVError.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -export default class CSVError extends Error { - err: string; - line: number; - extra: string | undefined; - static column_mismatched(index: number, extra?: string): CSVError; - static unclosed_quote(index: number, extra?: string): CSVError; - static fromJSON(obj: any): CSVError; - constructor(err: string, line: number, extra?: string | undefined); - toJSON(): { - err: string; - line: number; - extra: string | undefined; - }; -} diff --git a/node_modules/csvtojson/v2/CSVError.js b/node_modules/csvtojson/v2/CSVError.js deleted file mode 100644 index 58911c4..0000000 --- a/node_modules/csvtojson/v2/CSVError.js +++ /dev/null @@ -1,42 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var CSVError = /** @class */ (function (_super) { - __extends(CSVError, _super); - function CSVError(err, line, extra) { - var _this = _super.call(this, "Error: " + err + ". JSON Line number: " + line + (extra ? " near: " + extra : "")) || this; - _this.err = err; - _this.line = line; - _this.extra = extra; - _this.name = "CSV Parse Error"; - return _this; - } - CSVError.column_mismatched = function (index, extra) { - return new CSVError("column_mismatched", index, extra); - }; - CSVError.unclosed_quote = function (index, extra) { - return new CSVError("unclosed_quote", index, extra); - }; - CSVError.fromJSON = function (obj) { - return new CSVError(obj.err, obj.line, obj.extra); - }; - CSVError.prototype.toJSON = function () { - return { - err: this.err, - line: this.line, - extra: this.extra - }; - }; - return CSVError; -}(Error)); -exports.default = CSVError; -//# sourceMappingURL=CSVError.js.map \ No newline at end of file diff --git a/node_modules/csvtojson/v2/CSVError.js.map b/node_modules/csvtojson/v2/CSVError.js.map deleted file mode 100644 index 98ace86..0000000 --- a/node_modules/csvtojson/v2/CSVError.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"CSVError.js","sourceRoot":"","sources":["../src/CSVError.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;IAAsC,4BAAK;IAUzC,kBACS,GAAW,EACX,IAAY,EACZ,KAAc;QAHvB,YAKE,kBAAM,SAAS,GAAG,GAAG,GAAG,sBAAsB,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAE1F;QANQ,SAAG,GAAH,GAAG,CAAQ;QACX,UAAI,GAAJ,IAAI,CAAQ;QACZ,WAAK,GAAL,KAAK,CAAS;QAGrB,KAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;;IAChC,CAAC;IAhBM,0BAAiB,GAAxB,UAAyB,KAAa,EAAE,KAAc;QACpD,OAAO,IAAI,QAAQ,CAAC,mBAAmB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IACM,uBAAc,GAArB,UAAsB,KAAa,EAAE,KAAc;QACjD,OAAO,IAAI,QAAQ,CAAC,gBAAgB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IACM,iBAAQ,GAAf,UAAgB,GAAG;QACjB,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IASD,yBAAM,GAAN;QACE,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAA;IACH,CAAC;IAEH,eAAC;AAAD,CAAC,AA1BD,CAAsC,KAAK,GA0B1C"} \ No newline at end of file diff --git a/node_modules/csvtojson/v2/Converter.d.ts b/node_modules/csvtojson/v2/Converter.d.ts deleted file mode 100644 index 23ab7d0..0000000 --- a/node_modules/csvtojson/v2/Converter.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -/// -import { Transform, TransformOptions, Readable } from "stream"; -import { CSVParseParam } from "./Parameters"; -import { ParseRuntime } from "./ParseRuntime"; -import CSVError from "./CSVError"; -export declare class Converter extends Transform implements PromiseLike { - options: TransformOptions; - preRawData(onRawData: PreRawDataCallback): Converter; - preFileLine(onFileLine: PreFileLineCallback): Converter; - subscribe(onNext?: (data: any, lineNumber: number) => void | PromiseLike, onError?: (err: CSVError) => void, onCompleted?: () => void): Converter; - fromFile(filePath: string, options?: string | CreateReadStreamOption | undefined): Converter; - fromStream(readStream: Readable): Converter; - fromString(csvString: string): Converter; - then(onfulfilled?: (value: any[]) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): PromiseLike; - readonly parseParam: CSVParseParam; - readonly parseRuntime: ParseRuntime; - private params; - private runtime; - private processor; - private result; - constructor(param?: Partial, options?: TransformOptions); - _transform(chunk: any, encoding: string, cb: Function): void; - _flush(cb: Function): void; - private processEnd(cb); - readonly parsedLineNumber: number; -} -export interface CreateReadStreamOption { - flags?: string; - encoding?: string; - fd?: number; - mode?: number; - autoClose?: boolean; - start?: number; - end?: number; - highWaterMark?: number; -} -export declare type CallBack = (err: Error, data: Array) => void; -export declare type PreFileLineCallback = (line: string, lineNumber: number) => string | PromiseLike; -export declare type PreRawDataCallback = (csvString: string) => string | PromiseLike; diff --git a/node_modules/csvtojson/v2/Converter.js b/node_modules/csvtojson/v2/Converter.js deleted file mode 100644 index 909a38a..0000000 --- a/node_modules/csvtojson/v2/Converter.js +++ /dev/null @@ -1,193 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var stream_1 = require("stream"); -var Parameters_1 = require("./Parameters"); -var ParseRuntime_1 = require("./ParseRuntime"); -var bluebird_1 = __importDefault(require("bluebird")); -// import { ProcessorFork } from "./ProcessFork"; -var ProcessorLocal_1 = require("./ProcessorLocal"); -var Result_1 = require("./Result"); -var Converter = /** @class */ (function (_super) { - __extends(Converter, _super); - function Converter(param, options) { - if (options === void 0) { options = {}; } - var _this = _super.call(this, options) || this; - _this.options = options; - _this.params = Parameters_1.mergeParams(param); - _this.runtime = ParseRuntime_1.initParseRuntime(_this); - _this.result = new Result_1.Result(_this); - // if (this.params.fork) { - // this.processor = new ProcessorFork(this); - // } else { - _this.processor = new ProcessorLocal_1.ProcessorLocal(_this); - // } - _this.once("error", function (err) { - // console.log("BBB"); - //wait for next cycle to emit the errors. - setImmediate(function () { - _this.result.processError(err); - _this.emit("done", err); - }); - }); - _this.once("done", function () { - _this.processor.destroy(); - }); - return _this; - } - Converter.prototype.preRawData = function (onRawData) { - this.runtime.preRawDataHook = onRawData; - return this; - }; - Converter.prototype.preFileLine = function (onFileLine) { - this.runtime.preFileLineHook = onFileLine; - return this; - }; - Converter.prototype.subscribe = function (onNext, onError, onCompleted) { - this.parseRuntime.subscribe = { - onNext: onNext, - onError: onError, - onCompleted: onCompleted - }; - return this; - }; - Converter.prototype.fromFile = function (filePath, options) { - var _this = this; - var fs = require("fs"); - // var rs = null; - // this.wrapCallback(cb, function () { - // if (rs && rs.destroy) { - // rs.destroy(); - // } - // }); - fs.exists(filePath, function (exist) { - if (exist) { - var rs = fs.createReadStream(filePath, options); - rs.pipe(_this); - } - else { - _this.emit('error', new Error("File does not exist. Check to make sure the file path to your csv is correct.")); - } - }); - return this; - }; - Converter.prototype.fromStream = function (readStream) { - readStream.pipe(this); - return this; - }; - Converter.prototype.fromString = function (csvString) { - var csv = csvString.toString(); - var read = new stream_1.Readable(); - var idx = 0; - read._read = function (size) { - if (idx >= csvString.length) { - this.push(null); - } - else { - var str = csvString.substr(idx, size); - this.push(str); - idx += size; - } - }; - return this.fromStream(read); - }; - Converter.prototype.then = function (onfulfilled, onrejected) { - var _this = this; - return new bluebird_1.default(function (resolve, reject) { - _this.parseRuntime.then = { - onfulfilled: function (value) { - if (onfulfilled) { - resolve(onfulfilled(value)); - } - else { - resolve(value); - } - }, - onrejected: function (err) { - if (onrejected) { - resolve(onrejected(err)); - } - else { - reject(err); - } - } - }; - }); - }; - Object.defineProperty(Converter.prototype, "parseParam", { - get: function () { - return this.params; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Converter.prototype, "parseRuntime", { - get: function () { - return this.runtime; - }, - enumerable: true, - configurable: true - }); - Converter.prototype._transform = function (chunk, encoding, cb) { - var _this = this; - this.processor.process(chunk) - .then(function (result) { - // console.log(result); - if (result.length > 0) { - _this.runtime.started = true; - return _this.result.processResult(result); - } - }) - .then(function () { - _this.emit("drained"); - cb(); - }, function (error) { - _this.runtime.hasError = true; - _this.runtime.error = error; - _this.emit("error", error); - cb(); - }); - }; - Converter.prototype._flush = function (cb) { - var _this = this; - this.processor.flush() - .then(function (data) { - if (data.length > 0) { - return _this.result.processResult(data); - } - }) - .then(function () { - _this.processEnd(cb); - }, function (err) { - _this.emit("error", err); - cb(); - }); - }; - Converter.prototype.processEnd = function (cb) { - this.result.endProcess(); - this.emit("done"); - cb(); - }; - Object.defineProperty(Converter.prototype, "parsedLineNumber", { - get: function () { - return this.runtime.parsedLineNumber; - }, - enumerable: true, - configurable: true - }); - return Converter; -}(stream_1.Transform)); -exports.Converter = Converter; -//# sourceMappingURL=Converter.js.map \ No newline at end of file diff --git a/node_modules/csvtojson/v2/Converter.js.map b/node_modules/csvtojson/v2/Converter.js.map deleted file mode 100644 index 4e1f317..0000000 --- a/node_modules/csvtojson/v2/Converter.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Converter.js","sourceRoot":"","sources":["../src/Converter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iCAA+D;AAC/D,2CAA0D;AAC1D,+CAAgE;AAChE,sDAAyB;AAOzB,iDAAiD;AACjD,mDAAkD;AAClD,mCAAkC;AAMlC;IAA+B,6BAAS;IAuFtC,mBAAY,KAA8B,EAAS,OAA8B;QAA9B,wBAAA,EAAA,YAA8B;QAAjF,YACE,kBAAM,OAAO,CAAC,SAuBf;QAxBkD,aAAO,GAAP,OAAO,CAAuB;QAE/E,KAAI,CAAC,MAAM,GAAG,wBAAW,CAAC,KAAK,CAAC,CAAC;QACjC,KAAI,CAAC,OAAO,GAAG,+BAAgB,CAAC,KAAI,CAAC,CAAC;QACtC,KAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,KAAI,CAAC,CAAC;QAC/B,0BAA0B;QAC1B,8CAA8C;QAC9C,WAAW;QACX,KAAI,CAAC,SAAS,GAAG,IAAI,+BAAc,CAAC,KAAI,CAAC,CAAC;QAC1C,IAAI;QACJ,KAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAC,GAAQ;YAC1B,sBAAsB;YACtB,yCAAyC;YACzC,YAAY,CAAC;gBACX,KAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC9B,KAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QAEL,CAAC,CAAC,CAAC;QACH,KAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,KAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAA;QAEF,OAAO,KAAI,CAAC;IACd,CAAC;IA9GD,8BAAU,GAAV,UAAW,SAA6B;QACtC,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,+BAAW,GAAX,UAAY,UAA+B;QACzC,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,UAAU,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,6BAAS,GAAT,UACE,MAAoE,EACpE,OAAiC,EACjC,WAAwB;QACxB,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG;YAC5B,MAAM,QAAA;YACN,OAAO,SAAA;YACP,WAAW,aAAA;SACZ,CAAA;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,4BAAQ,GAAR,UAAS,QAAgB,EAAE,OAAqD;QAAhF,iBAiBC;QAhBC,IAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,iBAAiB;QACjB,sCAAsC;QACtC,4BAA4B;QAC5B,oBAAoB;QACpB,MAAM;QACN,MAAM;QACN,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAC,KAAK;YACxB,IAAI,KAAK,EAAE;gBACT,IAAM,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAClD,EAAE,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;aACf;iBAAM;gBACL,KAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC,CAAC;aAChH;QACH,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IACD,8BAAU,GAAV,UAAW,UAAoB;QAC7B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,8BAAU,GAAV,UAAW,SAAiB;QAC1B,IAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;QACjC,IAAM,IAAI,GAAG,IAAI,iBAAQ,EAAE,CAAC;QAC5B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,KAAK,GAAG,UAAU,IAAI;YACzB,IAAI,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE;gBAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACjB;iBAAM;gBACL,IAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACxC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACf,GAAG,IAAI,IAAI,CAAC;aACb;QACH,CAAC,CAAA;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,wBAAI,GAAJ,UAAyC,WAAgE,EAAE,UAA8D;QAAzK,iBAmBC;QAlBC,OAAO,IAAI,kBAAC,CAAC,UAAC,OAAO,EAAE,MAAM;YAC3B,KAAI,CAAC,YAAY,CAAC,IAAI,GAAG;gBACvB,WAAW,EAAE,UAAC,KAAY;oBACxB,IAAI,WAAW,EAAE;wBACf,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;qBAC7B;yBAAM;wBACL,OAAO,CAAC,KAAY,CAAC,CAAC;qBACvB;gBACH,CAAC;gBACD,UAAU,EAAE,UAAC,GAAU;oBACrB,IAAI,UAAU,EAAE;wBACd,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;qBAC1B;yBAAM;wBACL,MAAM,CAAC,GAAG,CAAC,CAAC;qBACb;gBACH,CAAC;aACF,CAAA;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACD,sBAAW,iCAAU;aAArB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;;;OAAA;IACD,sBAAW,mCAAY;aAAvB;YACE,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;;;OAAA;IA8BD,8BAAU,GAAV,UAAW,KAAU,EAAE,QAAgB,EAAE,EAAY;QAArD,iBAmBC;QAlBC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;aAC1B,IAAI,CAAC,UAAC,MAAM;YACX,uBAAuB;YACvB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,KAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;gBAE5B,OAAO,KAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;aAC1C;QACH,CAAC,CAAC;aACD,IAAI,CAAC;YACJ,KAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrB,EAAE,EAAE,CAAC;QACP,CAAC,EAAE,UAAC,KAAK;YACP,KAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC7B,KAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;YAC3B,KAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1B,EAAE,EAAE,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IACD,0BAAM,GAAN,UAAO,EAAY;QAAnB,iBAcC;QAbC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;aACnB,IAAI,CAAC,UAAC,IAAI;YACT,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBAEnB,OAAO,KAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;aACxC;QACH,CAAC,CAAC;aACD,IAAI,CAAC;YACJ,KAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC,EAAE,UAAC,GAAG;YACL,KAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACxB,EAAE,EAAE,CAAC;QACP,CAAC,CAAC,CAAA;IACN,CAAC;IACO,8BAAU,GAAlB,UAAmB,EAAE;QACnB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,EAAE,EAAE,CAAC;IACP,CAAC;IACD,sBAAI,uCAAgB;aAApB;YACE,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACvC,CAAC;;;OAAA;IACH,gBAAC;AAAD,CAAC,AA3JD,CAA+B,kBAAS,GA2JvC;AA3JY,8BAAS"} \ No newline at end of file diff --git a/node_modules/csvtojson/v2/Parameters.d.ts b/node_modules/csvtojson/v2/Parameters.d.ts deleted file mode 100644 index 6fe5cda..0000000 --- a/node_modules/csvtojson/v2/Parameters.d.ts +++ /dev/null @@ -1,93 +0,0 @@ -export interface CSVParseParam { - /** - * delimiter used for seperating columns. Use "auto" if delimiter is unknown in advance, in this case, delimiter will be auto-detected (by best attempt). Use an array to give a list of potential delimiters e.g. [",","|","$"]. default: "," - */ - delimiter: string | string[]; - /** - * This parameter instructs the parser to ignore columns as specified by the regular expression. Example: /(name|age)/ will ignore columns whose header contains "name" or "age" - */ - ignoreColumns?: RegExp; - /** - * This parameter instructs the parser to include only those columns as specified by the regular expression. Example: /(name|age)/ will parse and include columns whose header contains "name" or "age" - */ - includeColumns?: RegExp; - /** - * If a column contains delimiter, it is able to use quote character to surround the column content. e.g. "hello, world" wont be split into two columns while parsing. Set to "off" will ignore all quotes. default: " (double quote) - */ - quote: string; - /** - * Indicate if parser trim off spaces surrounding column content. e.g. " content " will be trimmed to "content". Default: true - */ - trim: boolean; - /** - * This parameter turns on and off whether check field type. Default is false. - */ - checkType: boolean; - /** - * Ignore the empty value in CSV columns. If a column value is not given, set this to true to skip them. Default: false. - */ - ignoreEmpty: boolean; - /** - * Delegate parsing work to another process. - */ - /** - * Indicating csv data has no header row and first row is data row. Default is false. - */ - noheader: boolean; - /** - * An array to specify the headers of CSV data. If --noheader is false, this value will override CSV header row. Default: null. Example: ["my field","name"]. - */ - headers?: string[]; - /** - * Don't interpret dots (.) and square brackets in header fields as nested object or array identifiers at all (treat them like regular characters for JSON field identifiers). Default: false. - */ - flatKeys: boolean; - /** - * the max character a csv row could have. 0 means infinite. If max number exceeded, parser will emit "error" of "row_exceed". if a possibly corrupted csv data provided, give it a number like 65535 so the parser wont consume memory. default: 0 - */ - maxRowLength: number; - /** - * whether check column number of a row is the same as headers. If column number mismatched headers number, an error of "mismatched_column" will be emitted.. default: false - */ - checkColumn: boolean; - /** - * escape character used in quoted column. Default is double quote (") according to RFC4108. Change to back slash (\) or other chars for your own case. - */ - escape: string; - /** - * Allows override parsing logic for a specific column. It accepts a JSON object with fields like: headName: . e.g. {field1:'number'} will use built-in number parser to convert value of the field1 column to number. Another example {"name":nameProcessFunc} will use specified function to parse the value. - */ - colParser: { - [key: string]: string | CellParser | ColumnParam; - }; - /** - * End of line character. If omitted, parser will attempt to retrieve it from the first chunks of CSV data - */ - eol?: string; - /** - * Always interpret each line (as defined by eol) as a row. This will prevent eol characters from being used within a row (even inside a quoted field). Default is false. Change to true if you are confident no inline line breaks (like line break in a cell which has multi line text) - */ - alwaysSplitAtEOL: boolean; - /** - * The format to be converted to. "json" (default) -- convert csv to json. "csv" -- convert csv to csv row array. "line" -- convert csv to csv line string - */ - output: "json" | "csv" | "line"; - /** - * Convert string "null" to null object in JSON outputs. Default is false. - */ - nullObject: boolean; - /** - * Define the format required by downstream (this parameter does not work if objectMode is on). `line` -- json is emitted in a single line separated by a line breake like "json1\njson2" . `array` -- downstream requires array format like "[json1,json2]". Default is line. - */ - downstreamFormat: "line" | "array"; - /** - * Define whether .then(callback) returns all JSON data in its callback. Default is true. Change to false to save memory if subscribing json lines. - */ - needEmitAll: boolean; -} -export declare type CellParser = (item: string, head: string, resultRow: any, row: string[], columnIndex: number) => any; -export interface ColumnParam { - flat?: boolean; - cellParser?: string | CellParser; -} -export declare function mergeParams(params?: Partial): CSVParseParam; diff --git a/node_modules/csvtojson/v2/Parameters.js b/node_modules/csvtojson/v2/Parameters.js deleted file mode 100644 index b2dad04..0000000 --- a/node_modules/csvtojson/v2/Parameters.js +++ /dev/null @@ -1,43 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -function mergeParams(params) { - var defaultParam = { - delimiter: ',', - ignoreColumns: undefined, - includeColumns: undefined, - quote: '"', - trim: true, - checkType: false, - ignoreEmpty: false, - // fork: false, - noheader: false, - headers: undefined, - flatKeys: false, - maxRowLength: 0, - checkColumn: false, - escape: '"', - colParser: {}, - eol: undefined, - alwaysSplitAtEOL: false, - output: "json", - nullObject: false, - downstreamFormat: "line", - needEmitAll: true - }; - if (!params) { - params = {}; - } - for (var key in params) { - if (params.hasOwnProperty(key)) { - if (Array.isArray(params[key])) { - defaultParam[key] = [].concat(params[key]); - } - else { - defaultParam[key] = params[key]; - } - } - } - return defaultParam; -} -exports.mergeParams = mergeParams; -//# sourceMappingURL=Parameters.js.map \ No newline at end of file diff --git a/node_modules/csvtojson/v2/Parameters.js.map b/node_modules/csvtojson/v2/Parameters.js.map deleted file mode 100644 index 6526008..0000000 --- a/node_modules/csvtojson/v2/Parameters.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Parameters.js","sourceRoot":"","sources":["../src/Parameters.ts"],"names":[],"mappings":";;AAiGA,qBAA4B,MAA+B;IACzD,IAAM,YAAY,GAAkB;QAClC,SAAS,EAAE,GAAG;QACd,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,SAAS;QACzB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,KAAK;QAClB,eAAe;QACf,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE,GAAG;QACX,SAAS,EAAE,EAAE;QACb,GAAG,EAAE,SAAS;QACd,gBAAgB,EAAE,KAAK;QACvB,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,KAAK;QACjB,gBAAgB,EAAC,MAAM;QACvB,WAAW,EAAC,IAAI;KACjB,CAAA;IACD,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,EAAE,CAAC;KACb;IACD,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;QACtB,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC9B,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;aAC5C;iBAAM;gBACL,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;aACjC;SACF;KACF;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AArCD,kCAqCC"} \ No newline at end of file diff --git a/node_modules/csvtojson/v2/ParseRuntime.d.ts b/node_modules/csvtojson/v2/ParseRuntime.d.ts deleted file mode 100644 index 7552e72..0000000 --- a/node_modules/csvtojson/v2/ParseRuntime.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -/// -import { CellParser } from "./Parameters"; -import { Converter, PreRawDataCallback, PreFileLineCallback } from "./Converter"; -import CSVError from "./CSVError"; -export interface ParseRuntime { - /** - * If need convert ignoreColumn from column name(string) to column index (number). Parser needs column index. - */ - needProcessIgnoreColumn: boolean; - /** - * If need convert includeColumn from column name(string) to column index (number). Parser needs column index. - */ - needProcessIncludeColumn: boolean; - /** - * the indexes of columns to reserve, undefined means reserve all, [] means hide all - */ - selectedColumns?: number[]; - ended: boolean; - hasError: boolean; - error?: Error; - /** - * Inferred delimiter - */ - delimiter: string | string[]; - /** - * Inferred eol - */ - eol?: string; - /** - * Converter function for a column. Populated at runtime. - */ - columnConv: (CellParser | null)[]; - headerType: any[]; - headerTitle: string[]; - headerFlag: any[]; - /** - * Inferred headers - */ - headers?: any[]; - csvLineBuffer?: Buffer; - /** - * after first chunk of data being processed and emitted, started will become true. - */ - started: boolean; - preRawDataHook?: PreRawDataCallback; - preFileLineHook?: PreFileLineCallback; - parsedLineNumber: number; - columnValueSetter: Function[]; - subscribe?: { - onNext?: (data: any, lineNumber: number) => void | PromiseLike; - onError?: (err: CSVError) => void; - onCompleted?: () => void; - }; - then?: { - onfulfilled: (value: any[]) => any; - onrejected: (err: Error) => any; - }; -} -export declare function initParseRuntime(converter: Converter): ParseRuntime; diff --git a/node_modules/csvtojson/v2/ParseRuntime.js b/node_modules/csvtojson/v2/ParseRuntime.js deleted file mode 100644 index c2955e4..0000000 --- a/node_modules/csvtojson/v2/ParseRuntime.js +++ /dev/null @@ -1,32 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -function initParseRuntime(converter) { - var params = converter.parseParam; - var rtn = { - needProcessIgnoreColumn: false, - needProcessIncludeColumn: false, - selectedColumns: undefined, - ended: false, - hasError: false, - error: undefined, - delimiter: converter.parseParam.delimiter, - eol: converter.parseParam.eol, - columnConv: [], - headerType: [], - headerTitle: [], - headerFlag: [], - headers: undefined, - started: false, - parsedLineNumber: 0, - columnValueSetter: [], - }; - if (params.ignoreColumns) { - rtn.needProcessIgnoreColumn = true; - } - if (params.includeColumns) { - rtn.needProcessIncludeColumn = true; - } - return rtn; -} -exports.initParseRuntime = initParseRuntime; -//# sourceMappingURL=ParseRuntime.js.map \ No newline at end of file diff --git a/node_modules/csvtojson/v2/ParseRuntime.js.map b/node_modules/csvtojson/v2/ParseRuntime.js.map deleted file mode 100644 index 286e7ae..0000000 --- a/node_modules/csvtojson/v2/ParseRuntime.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ParseRuntime.js","sourceRoot":"","sources":["../src/ParseRuntime.ts"],"names":[],"mappings":";;AA8DA,0BAAiC,SAAoB;IACnD,IAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC;IACpC,IAAM,GAAG,GAAiB;QACxB,uBAAuB,EAAE,KAAK;QAC9B,wBAAwB,EAAE,KAAK;QAC/B,eAAe,EAAE,SAAS;QAC1B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,SAAS,CAAC,UAAU,CAAC,SAAS;QACzC,GAAG,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG;QAC7B,UAAU,EAAE,EAAE;QACd,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,EAAE;QACd,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,KAAK;QACd,gBAAgB,EAAE,CAAC;QACnB,iBAAiB,EAAE,EAAE;KACtB,CAAA;IACD,IAAI,MAAM,CAAC,aAAa,EAAE;QACxB,GAAG,CAAC,uBAAuB,GAAG,IAAI,CAAC;KACpC;IACD,IAAI,MAAM,CAAC,cAAc,EAAE;QACzB,GAAG,CAAC,wBAAwB,GAAG,IAAI,CAAC;KACrC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AA3BD,4CA2BC"} \ No newline at end of file diff --git a/node_modules/csvtojson/v2/ProcessFork.d.ts b/node_modules/csvtojson/v2/ProcessFork.d.ts deleted file mode 100644 index ff6be73..0000000 --- a/node_modules/csvtojson/v2/ProcessFork.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -/// -/// -import { Processor, ProcessLineResult } from "./Processor"; -import P from "bluebird"; -import { Converter } from "./Converter"; -import { ChildProcess } from "child_process"; -export declare class ProcessorFork extends Processor { - protected converter: Converter; - flush(): P; - destroy(): P; - childProcess: ChildProcess; - inited: boolean; - private resultBuf; - private leftChunk; - private finalChunk; - private next?; - constructor(converter: Converter); - private prepareParam(param); - private initWorker(); - private flushResult(); - private appendBuf(data); - process(chunk: Buffer): P; -} -export interface Message { - cmd: string; -} -export interface InitMessage extends Message { - params: any; -} -export interface StringMessage extends Message { - value: string; -} -export declare const EOM = "\u0003"; diff --git a/node_modules/csvtojson/v2/ProcessFork.js b/node_modules/csvtojson/v2/ProcessFork.js deleted file mode 100644 index bb56903..0000000 --- a/node_modules/csvtojson/v2/ProcessFork.js +++ /dev/null @@ -1,154 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Processor_1 = require("./Processor"); -var bluebird_1 = __importDefault(require("bluebird")); -var Parameters_1 = require("./Parameters"); -var CSVError_1 = __importDefault(require("./CSVError")); -var ProcessorFork = /** @class */ (function (_super) { - __extends(ProcessorFork, _super); - function ProcessorFork(converter) { - var _this = _super.call(this, converter) || this; - _this.converter = converter; - _this.inited = false; - _this.resultBuf = []; - _this.leftChunk = ""; - _this.finalChunk = false; - _this.childProcess = require("child_process").spawn(process.execPath, [__dirname + "/../v2/worker.js"], { - stdio: ["pipe", "pipe", "pipe", "ipc"] - }); - _this.initWorker(); - return _this; - } - ProcessorFork.prototype.flush = function () { - var _this = this; - return new bluebird_1.default(function (resolve, reject) { - // console.log("flush"); - _this.finalChunk = true; - _this.next = resolve; - _this.childProcess.stdin.end(); - // this.childProcess.stdout.on("end",()=>{ - // // console.log("!!!!"); - // this.flushResult(); - // }) - }); - }; - ProcessorFork.prototype.destroy = function () { - this.childProcess.kill(); - return bluebird_1.default.resolve(); - }; - ProcessorFork.prototype.prepareParam = function (param) { - var clone = Parameters_1.mergeParams(param); - if (clone.ignoreColumns) { - clone.ignoreColumns = { - source: clone.ignoreColumns.source, - flags: clone.ignoreColumns.flags - }; - } - if (clone.includeColumns) { - clone.includeColumns = { - source: clone.includeColumns.source, - flags: clone.includeColumns.flags - }; - } - return clone; - }; - ProcessorFork.prototype.initWorker = function () { - var _this = this; - this.childProcess.on("exit", function () { - _this.flushResult(); - }); - this.childProcess.send({ - cmd: "init", - params: this.prepareParam(this.converter.parseParam) - }); - this.childProcess.on("message", function (msg) { - if (msg.cmd === "inited") { - _this.inited = true; - } - else if (msg.cmd === "eol") { - if (_this.converter.listeners("eol").length > 0) { - _this.converter.emit("eol", msg.value); - } - } - else if (msg.cmd === "header") { - if (_this.converter.listeners("header").length > 0) { - _this.converter.emit("header", msg.value); - } - } - else if (msg.cmd === "done") { - // this.flushResult(); - } - }); - this.childProcess.stdout.on("data", function (data) { - // console.log("stdout", data.toString()); - var res = data.toString(); - // console.log(res); - _this.appendBuf(res); - }); - this.childProcess.stderr.on("data", function (data) { - // console.log("stderr", data.toString()); - _this.converter.emit("error", CSVError_1.default.fromJSON(JSON.parse(data.toString()))); - }); - }; - ProcessorFork.prototype.flushResult = function () { - // console.log("flush result", this.resultBuf.length); - if (this.next) { - this.next(this.resultBuf); - } - this.resultBuf = []; - }; - ProcessorFork.prototype.appendBuf = function (data) { - var res = this.leftChunk + data; - var list = res.split("\n"); - var counter = 0; - var lastBit = list[list.length - 1]; - if (lastBit !== "") { - this.leftChunk = list.pop() || ""; - } - else { - this.leftChunk = ""; - } - this.resultBuf = this.resultBuf.concat(list); - // while (list.length) { - // let item = list.shift() || ""; - // if (item.length === 0 ) { - // continue; - // } - // // if (this.params.output !== "line") { - // // item = JSON.parse(item); - // // } - // this.resultBuf.push(item); - // counter++; - // } - // console.log("buf length",this.resultBuf.length); - }; - ProcessorFork.prototype.process = function (chunk) { - var _this = this; - return new bluebird_1.default(function (resolve, reject) { - // console.log("chunk", chunk.length); - _this.next = resolve; - // this.appendReadBuf(chunk); - _this.childProcess.stdin.write(chunk, function () { - // console.log("chunk callback"); - _this.flushResult(); - }); - }); - }; - return ProcessorFork; -}(Processor_1.Processor)); -exports.ProcessorFork = ProcessorFork; -exports.EOM = "\x03"; -//# sourceMappingURL=ProcessFork.js.map \ No newline at end of file diff --git a/node_modules/csvtojson/v2/ProcessFork.js.map b/node_modules/csvtojson/v2/ProcessFork.js.map deleted file mode 100644 index 4a7ee23..0000000 --- a/node_modules/csvtojson/v2/ProcessFork.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ProcessFork.js","sourceRoot":"","sources":["../src/ProcessFork.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAA2D;AAC3D,sDAAwB;AAGxB,2CAA0D;AAI1D,wDAAkC;AAElC;IAAmC,iCAAS;IAuB1C,uBAAsB,SAAoB;QAA1C,YACE,kBAAM,SAAS,CAAC,SAKjB;QANqB,eAAS,GAAT,SAAS,CAAW;QAL1C,YAAM,GAAY,KAAK,CAAC;QAChB,eAAS,GAAwB,EAAE,CAAC;QACpC,eAAS,GAAW,EAAE,CAAC;QACvB,gBAAU,GAAY,KAAK,CAAC;QAIlC,KAAI,CAAC,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,GAAG,kBAAkB,CAAC,EAAE;YACrG,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;SACvC,CAAC,CAAC;QACH,KAAI,CAAC,UAAU,EAAE,CAAC;;IACpB,CAAC;IA5BD,6BAAK,GAAL;QAAA,iBAWC;QAVC,OAAO,IAAI,kBAAC,CAAC,UAAC,OAAO,EAAE,MAAM;YAC3B,wBAAwB;YACxB,KAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,KAAI,CAAC,IAAI,GAAG,OAAO,CAAC;YACpB,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAC9B,0CAA0C;YAC1C,4BAA4B;YAC5B,wBAAwB;YACxB,KAAK;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IACD,+BAAO,GAAP;QACE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACzB,OAAO,kBAAC,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;IAcO,oCAAY,GAApB,UAAqB,KAAmB;QACtC,IAAM,KAAK,GAAK,wBAAW,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,aAAa,EAAC;YACtB,KAAK,CAAC,aAAa,GAAC;gBAClB,MAAM,EAAC,KAAK,CAAC,aAAa,CAAC,MAAM;gBACjC,KAAK,EAAC,KAAK,CAAC,aAAa,CAAC,KAAK;aAChC,CAAA;SACF;QACD,IAAI,KAAK,CAAC,cAAc,EAAC;YACvB,KAAK,CAAC,cAAc,GAAC;gBACnB,MAAM,EAAC,KAAK,CAAC,cAAc,CAAC,MAAM;gBAClC,KAAK,EAAC,KAAK,CAAC,cAAc,CAAC,KAAK;aACjC,CAAA;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACO,kCAAU,GAAlB;QAAA,iBAqCC;QApCC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAC;YAC1B,KAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACrB,GAAG,EAAE,MAAM;YACX,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;SACtC,CAAC,CAAC;QAClB,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,GAAY;YAC3C,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE;gBACxB,KAAI,CAAC,MAAM,GAAG,IAAI,CAAC;aACpB;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,KAAK,EAAE;gBAC5B,IAAI,KAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAC;oBAC7C,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAqB,CAAC,KAAK,CAAC,CAAC;iBACzD;aACF;iBAAK,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE;gBAC9B,IAAI,KAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAC;oBAChD,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAqB,CAAC,KAAK,CAAC,CAAC;iBAC5D;aACF;iBAAK,IAAI,GAAG,CAAC,GAAG,KAAK,MAAM,EAAC;gBAE3B,sBAAsB;aACvB;QAEH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAC,IAAI;YACvC,0CAA0C;YAC1C,IAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,oBAAoB;YACpB,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEtB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAC,IAAI;YACvC,0CAA0C;YAC1C,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;IAEL,CAAC;IACO,mCAAW,GAAnB;QACE,sDAAsD;QACtD,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC3B;QACD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IACO,iCAAS,GAAjB,UAAkB,IAAY;QAC5B,IAAM,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAClC,IAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACtC,IAAI,OAAO,KAAK,EAAE,EAAE;YAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;SACnC;aAAM;YACL,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,SAAS,GAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,wBAAwB;QACxB,mCAAmC;QACnC,8BAA8B;QAC9B,gBAAgB;QAChB,MAAM;QACN,4CAA4C;QAC5C,oCAAoC;QACpC,SAAS;QACT,+BAA+B;QAC/B,eAAe;QACf,IAAI;QACJ,mDAAmD;IACrD,CAAC;IAED,+BAAO,GAAP,UAAQ,KAAa;QAArB,iBAUC;QATC,OAAO,IAAI,kBAAC,CAAC,UAAC,OAAO,EAAE,MAAM;YAC3B,sCAAsC;YACtC,KAAI,CAAC,IAAI,GAAG,OAAO,CAAC;YACpB,6BAA6B;YAC7B,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;gBACnC,iCAAiC;gBACjC,KAAI,CAAC,WAAW,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACH,oBAAC;AAAD,CAAC,AA/HD,CAAmC,qBAAS,GA+H3C;AA/HY,sCAAa;AA2Ib,QAAA,GAAG,GAAG,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/csvtojson/v2/Processor.d.ts b/node_modules/csvtojson/v2/Processor.d.ts deleted file mode 100644 index 96abc57..0000000 --- a/node_modules/csvtojson/v2/Processor.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/// -/// -import { Converter } from "./Converter"; -import P from "bluebird"; -import { JSONResult } from "./lineToJson"; -import { CSVParseParam } from "./Parameters"; -import { ParseRuntime } from "./ParseRuntime"; -export declare abstract class Processor { - protected converter: Converter; - protected params: CSVParseParam; - protected runtime: ParseRuntime; - constructor(converter: Converter); - abstract process(chunk: Buffer, finalChunk?: boolean): P; - abstract destroy(): P; - abstract flush(): P; -} -export declare type ProcessLineResult = string | string[] | JSONResult; diff --git a/node_modules/csvtojson/v2/Processor.js b/node_modules/csvtojson/v2/Processor.js deleted file mode 100644 index 9017563..0000000 --- a/node_modules/csvtojson/v2/Processor.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var Processor = /** @class */ (function () { - function Processor(converter) { - this.converter = converter; - this.params = converter.parseParam; - this.runtime = converter.parseRuntime; - } - return Processor; -}()); -exports.Processor = Processor; -//# sourceMappingURL=Processor.js.map \ No newline at end of file diff --git a/node_modules/csvtojson/v2/Processor.js.map b/node_modules/csvtojson/v2/Processor.js.map deleted file mode 100644 index 39c52df..0000000 --- a/node_modules/csvtojson/v2/Processor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Processor.js","sourceRoot":"","sources":["../src/Processor.ts"],"names":[],"mappings":";;AAMA;IAGE,mBAAsB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;QACxC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC;IACxC,CAAC;IAIH,gBAAC;AAAD,CAAC,AAVD,IAUC;AAVqB,8BAAS"} \ No newline at end of file diff --git a/node_modules/csvtojson/v2/ProcessorLocal.d.ts b/node_modules/csvtojson/v2/ProcessorLocal.d.ts deleted file mode 100644 index 6cdb1d5..0000000 --- a/node_modules/csvtojson/v2/ProcessorLocal.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/// -/// -import { Processor, ProcessLineResult } from "./Processor"; -import P from "bluebird"; -export declare class ProcessorLocal extends Processor { - flush(): P; - destroy(): P; - private rowSplit; - private eolEmitted; - private _needEmitEol?; - private readonly needEmitEol; - private headEmitted; - private _needEmitHead?; - private readonly needEmitHead; - process(chunk: Buffer, finalChunk?: boolean): P; - private processCSV(csv, finalChunk); - private processDataWithHead(lines); - private filterHeader(); - private processCSVBody(lines); - private prependLeftBuf(buf); - private runPreLineHook(lines); -} diff --git a/node_modules/csvtojson/v2/ProcessorLocal.js b/node_modules/csvtojson/v2/ProcessorLocal.js deleted file mode 100644 index 978fab7..0000000 --- a/node_modules/csvtojson/v2/ProcessorLocal.js +++ /dev/null @@ -1,310 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Processor_1 = require("./Processor"); -var bluebird_1 = __importDefault(require("bluebird")); -var dataClean_1 = require("./dataClean"); -var getEol_1 = __importDefault(require("./getEol")); -var fileline_1 = require("./fileline"); -var util_1 = require("./util"); -var rowSplit_1 = require("./rowSplit"); -var lineToJson_1 = __importDefault(require("./lineToJson")); -var CSVError_1 = __importDefault(require("./CSVError")); -var ProcessorLocal = /** @class */ (function (_super) { - __extends(ProcessorLocal, _super); - function ProcessorLocal() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.rowSplit = new rowSplit_1.RowSplit(_this.converter); - _this.eolEmitted = false; - _this._needEmitEol = undefined; - _this.headEmitted = false; - _this._needEmitHead = undefined; - return _this; - } - ProcessorLocal.prototype.flush = function () { - var _this = this; - if (this.runtime.csvLineBuffer && this.runtime.csvLineBuffer.length > 0) { - var buf = this.runtime.csvLineBuffer; - this.runtime.csvLineBuffer = undefined; - return this.process(buf, true) - .then(function (res) { - if (_this.runtime.csvLineBuffer && _this.runtime.csvLineBuffer.length > 0) { - return bluebird_1.default.reject(CSVError_1.default.unclosed_quote(_this.runtime.parsedLineNumber, _this.runtime.csvLineBuffer.toString())); - } - else { - return bluebird_1.default.resolve(res); - } - }); - } - else { - return bluebird_1.default.resolve([]); - } - }; - ProcessorLocal.prototype.destroy = function () { - return bluebird_1.default.resolve(); - }; - Object.defineProperty(ProcessorLocal.prototype, "needEmitEol", { - get: function () { - if (this._needEmitEol === undefined) { - this._needEmitEol = this.converter.listeners("eol").length > 0; - } - return this._needEmitEol; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ProcessorLocal.prototype, "needEmitHead", { - get: function () { - if (this._needEmitHead === undefined) { - this._needEmitHead = this.converter.listeners("header").length > 0; - } - return this._needEmitHead; - }, - enumerable: true, - configurable: true - }); - ProcessorLocal.prototype.process = function (chunk, finalChunk) { - var _this = this; - if (finalChunk === void 0) { finalChunk = false; } - var csvString; - if (finalChunk) { - csvString = chunk.toString(); - } - else { - csvString = dataClean_1.prepareData(chunk, this.converter.parseRuntime); - } - return bluebird_1.default.resolve() - .then(function () { - if (_this.runtime.preRawDataHook) { - return _this.runtime.preRawDataHook(csvString); - } - else { - return csvString; - } - }) - .then(function (csv) { - if (csv && csv.length > 0) { - return _this.processCSV(csv, finalChunk); - } - else { - return bluebird_1.default.resolve([]); - } - }); - }; - ProcessorLocal.prototype.processCSV = function (csv, finalChunk) { - var _this = this; - var params = this.params; - var runtime = this.runtime; - if (!runtime.eol) { - getEol_1.default(csv, runtime); - } - if (this.needEmitEol && !this.eolEmitted && runtime.eol) { - this.converter.emit("eol", runtime.eol); - this.eolEmitted = true; - } - // trim csv file has initial blank lines. - if (params.ignoreEmpty && !runtime.started) { - csv = util_1.trimLeft(csv); - } - var stringToLineResult = fileline_1.stringToLines(csv, runtime); - if (!finalChunk) { - this.prependLeftBuf(util_1.bufFromString(stringToLineResult.partial)); - } - else { - stringToLineResult.lines.push(stringToLineResult.partial); - stringToLineResult.partial = ""; - } - if (stringToLineResult.lines.length > 0) { - var prom = void 0; - if (runtime.preFileLineHook) { - prom = this.runPreLineHook(stringToLineResult.lines); - } - else { - prom = bluebird_1.default.resolve(stringToLineResult.lines); - } - return prom.then(function (lines) { - if (!runtime.started - && !_this.runtime.headers) { - return _this.processDataWithHead(lines); - } - else { - return _this.processCSVBody(lines); - } - }); - } - else { - return bluebird_1.default.resolve([]); - } - }; - ProcessorLocal.prototype.processDataWithHead = function (lines) { - if (this.params.noheader) { - if (this.params.headers) { - this.runtime.headers = this.params.headers; - } - else { - this.runtime.headers = []; - } - } - else { - var left = ""; - var headerRow = []; - while (lines.length) { - var line = left + lines.shift(); - var row = this.rowSplit.parse(line); - if (row.closed) { - headerRow = row.cells; - left = ""; - break; - } - else { - left = line + getEol_1.default(line, this.runtime); - } - } - this.prependLeftBuf(util_1.bufFromString(left)); - if (headerRow.length === 0) { - return []; - } - if (this.params.headers) { - this.runtime.headers = this.params.headers; - } - else { - this.runtime.headers = headerRow; - } - } - if (this.runtime.needProcessIgnoreColumn || this.runtime.needProcessIncludeColumn) { - this.filterHeader(); - } - if (this.needEmitHead && !this.headEmitted) { - this.converter.emit("header", this.runtime.headers); - this.headEmitted = true; - } - return this.processCSVBody(lines); - }; - ProcessorLocal.prototype.filterHeader = function () { - this.runtime.selectedColumns = []; - if (this.runtime.headers) { - var headers = this.runtime.headers; - for (var i = 0; i < headers.length; i++) { - if (this.params.ignoreColumns) { - if (this.params.ignoreColumns.test(headers[i])) { - if (this.params.includeColumns && this.params.includeColumns.test(headers[i])) { - this.runtime.selectedColumns.push(i); - } - else { - continue; - } - } - else { - this.runtime.selectedColumns.push(i); - } - } - else if (this.params.includeColumns) { - if (this.params.includeColumns.test(headers[i])) { - this.runtime.selectedColumns.push(i); - } - } - else { - this.runtime.selectedColumns.push(i); - } - // if (this.params.includeColumns && this.params.includeColumns.test(headers[i])){ - // this.runtime.selectedColumns.push(i); - // }else{ - // if (this.params.ignoreColumns && this.params.ignoreColumns.test(headers[i])){ - // continue; - // }else{ - // if (this.params.ignoreColumns && !this.params.includeColumns){ - // this.runtime.selectedColumns.push(i); - // } - // } - // } - } - this.runtime.headers = util_1.filterArray(this.runtime.headers, this.runtime.selectedColumns); - } - }; - ProcessorLocal.prototype.processCSVBody = function (lines) { - if (this.params.output === "line") { - return lines; - } - else { - var result = this.rowSplit.parseMultiLines(lines); - this.prependLeftBuf(util_1.bufFromString(result.partial)); - if (this.params.output === "csv") { - return result.rowsCells; - } - else { - return lineToJson_1.default(result.rowsCells, this.converter); - } - } - // var jsonArr = linesToJson(lines.lines, params, this.recordNum); - // this.processResult(jsonArr); - // this.lastIndex += jsonArr.length; - // this.recordNum += jsonArr.length; - }; - ProcessorLocal.prototype.prependLeftBuf = function (buf) { - if (buf) { - if (this.runtime.csvLineBuffer) { - this.runtime.csvLineBuffer = Buffer.concat([buf, this.runtime.csvLineBuffer]); - } - else { - this.runtime.csvLineBuffer = buf; - } - } - }; - ProcessorLocal.prototype.runPreLineHook = function (lines) { - var _this = this; - return new bluebird_1.default(function (resolve, reject) { - processLineHook(lines, _this.runtime, 0, function (err) { - if (err) { - reject(err); - } - else { - resolve(lines); - } - }); - }); - }; - return ProcessorLocal; -}(Processor_1.Processor)); -exports.ProcessorLocal = ProcessorLocal; -function processLineHook(lines, runtime, offset, cb) { - if (offset >= lines.length) { - cb(); - } - else { - if (runtime.preFileLineHook) { - var line = lines[offset]; - var res = runtime.preFileLineHook(line, runtime.parsedLineNumber + offset); - offset++; - if (res && res.then) { - res.then(function (value) { - lines[offset - 1] = value; - processLineHook(lines, runtime, offset, cb); - }); - } - else { - lines[offset - 1] = res; - while (offset < lines.length) { - lines[offset] = runtime.preFileLineHook(lines[offset], runtime.parsedLineNumber + offset); - offset++; - } - cb(); - } - } - else { - cb(); - } - } -} -//# sourceMappingURL=ProcessorLocal.js.map \ No newline at end of file diff --git a/node_modules/csvtojson/v2/ProcessorLocal.js.map b/node_modules/csvtojson/v2/ProcessorLocal.js.map deleted file mode 100644 index e31eee6..0000000 --- a/node_modules/csvtojson/v2/ProcessorLocal.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ProcessorLocal.js","sourceRoot":"","sources":["../src/ProcessorLocal.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAA2D;AAC3D,sDAAyB;AACzB,yCAA0C;AAC1C,oDAA8B;AAC9B,uCAA2C;AAC3C,+BAA6D;AAC7D,uCAAsC;AACtC,4DAAsC;AAEtC,wDAAkC;AAIlC;IAAoC,kCAAS;IAA7C;QAAA,qEAmOC;QA/MS,cAAQ,GAAa,IAAI,mBAAQ,CAAC,KAAI,CAAC,SAAS,CAAC,CAAC;QAClD,gBAAU,GAAG,KAAK,CAAC;QACnB,kBAAY,GAAa,SAAS,CAAC;QAOnC,iBAAW,GAAG,KAAK,CAAC;QACpB,mBAAa,GAAa,SAAS,CAAC;;IAqM9C,CAAC;IAlOC,8BAAK,GAAL;QAAA,iBAeC;QAdC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YACvE,IAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;YACvC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;iBAC3B,IAAI,CAAC,UAAC,GAAG;gBACR,IAAI,KAAI,CAAC,OAAO,CAAC,aAAa,IAAI,KAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;oBACvE,OAAO,kBAAC,CAAC,MAAM,CAAC,kBAAQ,CAAC,cAAc,CAAC,KAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;iBAC/G;qBAAM;oBACL,OAAO,kBAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;iBACvB;YACH,CAAC,CAAC,CAAA;SACL;aAAM;YACL,OAAO,kBAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SACtB;IACH,CAAC;IACD,gCAAO,GAAP;QACE,OAAO,kBAAC,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;IAID,sBAAY,uCAAW;aAAvB;YACE,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;gBACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;aAChE;YACD,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;;;OAAA;IAGD,sBAAY,wCAAY;aAAxB;YACE,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;gBACpC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;aACpE;YACD,OAAO,IAAI,CAAC,aAAa,CAAC;QAE5B,CAAC;;;OAAA;IACD,gCAAO,GAAP,UAAQ,KAAa,EAAE,UAAkB;QAAzC,iBAuBC;QAvBsB,2BAAA,EAAA,kBAAkB;QACvC,IAAI,SAAiB,CAAC;QACtB,IAAI,UAAU,EAAE;YACd,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;SAC9B;aAAM;YACL,SAAS,GAAG,uBAAW,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;SAE7D;QACD,OAAO,kBAAC,CAAC,OAAO,EAAE;aACf,IAAI,CAAC;YACJ,IAAI,KAAI,CAAC,OAAO,CAAC,cAAc,EAAE;gBAC/B,OAAO,KAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;aAC/C;iBAAM;gBACL,OAAO,SAAS,CAAC;aAClB;QACH,CAAC,CAAC;aACD,IAAI,CAAC,UAAC,GAAG;YACR,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,OAAO,KAAI,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;aACzC;iBAAM;gBACL,OAAO,kBAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;aACtB;QACH,CAAC,CAAC,CAAA;IACN,CAAC;IACO,mCAAU,GAAlB,UAAmB,GAAW,EAAE,UAAmB;QAAnD,iBA4CC;QA3CC,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,gBAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;SACtB;QACD,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE;YACvD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;QACD,yCAAyC;QACzC,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YAC1C,GAAG,GAAG,eAAQ,CAAC,GAAG,CAAC,CAAC;SACrB;QACD,IAAM,kBAAkB,GAAG,wBAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,EAAE;YACf,IAAI,CAAC,cAAc,CAAC,oBAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;SAChE;aAAM;YACL,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC1D,kBAAkB,CAAC,OAAO,GAAG,EAAE,CAAC;SACjC;QACD,IAAI,kBAAkB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,IAAI,IAAI,SAAa,CAAC;YACtB,IAAI,OAAO,CAAC,eAAe,EAAE;gBAC3B,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;aACtD;iBAAM;gBACL,IAAI,GAAG,kBAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;aAC5C;YACD,OAAO,IAAI,CAAC,IAAI,CAAC,UAAC,KAAK;gBACrB,IAAI,CAAC,OAAO,CAAC,OAAO;uBACf,CAAC,KAAI,CAAC,OAAO,CAAC,OAAO,EACxB;oBACA,OAAO,KAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;iBACxC;qBAAM;oBACL,OAAO,KAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;iBACnC;YAEH,CAAC,CAAC,CAAA;SAEH;aAAM;YAEL,OAAO,kBAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SACtB;IAEH,CAAC;IACO,4CAAmB,GAA3B,UAA4B,KAAe;QACzC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YACxB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACvB,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;aAC5C;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;aAC3B;SACF;aAAM;YACL,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,SAAS,GAAa,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC,MAAM,EAAE;gBACnB,IAAM,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;gBAClC,IAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,GAAG,CAAC,MAAM,EAAE;oBACd,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC;oBACtB,IAAI,GAAG,EAAE,CAAC;oBACV,MAAM;iBACP;qBAAM;oBACL,IAAI,GAAG,IAAI,GAAG,gBAAM,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC1C;aACF;YACD,IAAI,CAAC,cAAc,CAAC,oBAAa,CAAC,IAAI,CAAC,CAAC,CAAC;YAEzC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1B,OAAO,EAAE,CAAC;aACX;YACD,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACvB,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;aAC5C;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;aAClC;SACF;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,uBAAuB,IAAI,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE;YACjF,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;QACD,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAC1C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACpD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACO,qCAAY,GAApB;QACE,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACxB,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;oBAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;wBAC9C,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;4BAC7E,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;yBACtC;6BAAM;4BACL,SAAS;yBACV;qBACF;yBAAM;wBACL,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBACtC;iBACF;qBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;oBACrC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;wBAC/C,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBACtC;iBACF;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACtC;gBACD,kFAAkF;gBAClF,0CAA0C;gBAC1C,SAAS;gBACT,kFAAkF;gBAClF,gBAAgB;gBAChB,WAAW;gBACX,qEAAqE;gBACrE,8CAA8C;gBAC9C,QAAQ;gBAER,MAAM;gBACN,IAAI;aACL;YACD,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,kBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;SACxF;IAEH,CAAC;IACO,uCAAc,GAAtB,UAAuB,KAAe;QACpC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE;YACjC,OAAO,KAAK,CAAC;SACd;aAAM;YACL,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,CAAC,cAAc,CAAC,oBAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE;gBAChC,OAAO,MAAM,CAAC,SAAS,CAAC;aACzB;iBAAM;gBACL,OAAO,oBAAU,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;aACrD;SACF;QAED,kEAAkE;QAClE,+BAA+B;QAC/B,oCAAoC;QACpC,oCAAoC;IACtC,CAAC;IAEO,uCAAc,GAAtB,UAAuB,GAAW;QAChC,IAAI,GAAG,EAAE;YACP,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;gBAC9B,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;aAC/E;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,GAAG,CAAC;aAClC;SACF;IAEH,CAAC;IACO,uCAAc,GAAtB,UAAuB,KAAe;QAAtC,iBAUC;QATC,OAAO,IAAI,kBAAC,CAAC,UAAC,OAAO,EAAE,MAAM;YAC3B,eAAe,CAAC,KAAK,EAAE,KAAI,CAAC,OAAO,EAAE,CAAC,EAAE,UAAC,GAAG;gBAC1C,IAAI,GAAG,EAAE;oBACP,MAAM,CAAC,GAAG,CAAC,CAAC;iBACb;qBAAM;oBACL,OAAO,CAAC,KAAK,CAAC,CAAC;iBAChB;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IACH,qBAAC;AAAD,CAAC,AAnOD,CAAoC,qBAAS,GAmO5C;AAnOY,wCAAc;AAqO3B,yBAAyB,KAAe,EAAE,OAAqB,EAAE,MAAc,EAC7E,EAAkB;IAElB,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;QAC1B,EAAE,EAAE,CAAC;KACN;SAAM;QACL,IAAI,OAAO,CAAC,eAAe,EAAE;YAC3B,IAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAM,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC;YAC7E,MAAM,EAAE,CAAC;YACT,IAAI,GAAG,IAAK,GAA2B,CAAC,IAAI,EAAE;gBAC3C,GAA2B,CAAC,IAAI,CAAC,UAAC,KAAK;oBACtC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;oBAC1B,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAa,CAAC;gBAClC,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;oBAC5B,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,GAAG,MAAM,CAAW,CAAC;oBACpG,MAAM,EAAE,CAAC;iBACV;gBACD,EAAE,EAAE,CAAC;aACN;SACF;aAAM;YACL,EAAE,EAAE,CAAC;SACN;KACF;AACH,CAAC"} \ No newline at end of file diff --git a/node_modules/csvtojson/v2/Result.d.ts b/node_modules/csvtojson/v2/Result.d.ts deleted file mode 100644 index 60deda9..0000000 --- a/node_modules/csvtojson/v2/Result.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/// -import { Converter } from "./Converter"; -import { ProcessLineResult } from "./Processor"; -import P from "bluebird"; -import CSVError from "./CSVError"; -export declare class Result { - private converter; - private readonly needEmitLine; - private _needPushDownstream?; - private readonly needPushDownstream; - private readonly needEmitAll; - private finalResult; - constructor(converter: Converter); - processResult(resultLines: ProcessLineResult[]): P; - appendFinalResult(lines: any[]): void; - processError(err: CSVError): void; - endProcess(): void; -} diff --git a/node_modules/csvtojson/v2/Result.js b/node_modules/csvtojson/v2/Result.js deleted file mode 100644 index c5b62c3..0000000 --- a/node_modules/csvtojson/v2/Result.js +++ /dev/null @@ -1,164 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var bluebird_1 = __importDefault(require("bluebird")); -var os_1 = require("os"); -var Result = /** @class */ (function () { - function Result(converter) { - this.converter = converter; - this.finalResult = []; - } - Object.defineProperty(Result.prototype, "needEmitLine", { - get: function () { - return !!this.converter.parseRuntime.subscribe && !!this.converter.parseRuntime.subscribe.onNext || this.needPushDownstream; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Result.prototype, "needPushDownstream", { - get: function () { - if (this._needPushDownstream === undefined) { - this._needPushDownstream = this.converter.listeners("data").length > 0 || this.converter.listeners("readable").length > 0; - } - return this._needPushDownstream; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Result.prototype, "needEmitAll", { - get: function () { - return !!this.converter.parseRuntime.then && this.converter.parseParam.needEmitAll; - // return !!this.converter.parseRuntime.then; - }, - enumerable: true, - configurable: true - }); - Result.prototype.processResult = function (resultLines) { - var _this = this; - var startPos = this.converter.parseRuntime.parsedLineNumber; - if (this.needPushDownstream && this.converter.parseParam.downstreamFormat === "array") { - if (startPos === 0) { - pushDownstream(this.converter, "[" + os_1.EOL); - } - } - // let prom: P; - return new bluebird_1.default(function (resolve, reject) { - if (_this.needEmitLine) { - processLineByLine(resultLines, _this.converter, 0, _this.needPushDownstream, function (err) { - if (err) { - reject(err); - } - else { - _this.appendFinalResult(resultLines); - resolve(); - } - }); - // resolve(); - } - else { - _this.appendFinalResult(resultLines); - resolve(); - } - }); - }; - Result.prototype.appendFinalResult = function (lines) { - if (this.needEmitAll) { - this.finalResult = this.finalResult.concat(lines); - } - this.converter.parseRuntime.parsedLineNumber += lines.length; - }; - Result.prototype.processError = function (err) { - if (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onError) { - this.converter.parseRuntime.subscribe.onError(err); - } - if (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onrejected) { - this.converter.parseRuntime.then.onrejected(err); - } - }; - Result.prototype.endProcess = function () { - if (this.converter.parseRuntime.then && this.converter.parseRuntime.then.onfulfilled) { - if (this.needEmitAll) { - this.converter.parseRuntime.then.onfulfilled(this.finalResult); - } - else { - this.converter.parseRuntime.then.onfulfilled([]); - } - } - if (this.converter.parseRuntime.subscribe && this.converter.parseRuntime.subscribe.onCompleted) { - this.converter.parseRuntime.subscribe.onCompleted(); - } - if (this.needPushDownstream && this.converter.parseParam.downstreamFormat === "array") { - pushDownstream(this.converter, "]" + os_1.EOL); - } - }; - return Result; -}()); -exports.Result = Result; -function processLineByLine(lines, conv, offset, needPushDownstream, cb) { - if (offset >= lines.length) { - cb(); - } - else { - if (conv.parseRuntime.subscribe && conv.parseRuntime.subscribe.onNext) { - var hook_1 = conv.parseRuntime.subscribe.onNext; - var nextLine_1 = lines[offset]; - var res = hook_1(nextLine_1, conv.parseRuntime.parsedLineNumber + offset); - offset++; - // if (isAsync === undefined) { - if (res && res.then) { - res.then(function () { - processRecursive(lines, hook_1, conv, offset, needPushDownstream, cb, nextLine_1); - }, cb); - } - else { - // processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, false); - if (needPushDownstream) { - pushDownstream(conv, nextLine_1); - } - while (offset < lines.length) { - var line = lines[offset]; - hook_1(line, conv.parseRuntime.parsedLineNumber + offset); - offset++; - if (needPushDownstream) { - pushDownstream(conv, line); - } - } - cb(); - } - // } else if (isAsync === true) { - // (res as PromiseLike).then(function () { - // processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, true); - // }, cb); - // } else if (isAsync === false) { - // processRecursive(lines, hook, conv, offset, needPushDownstream, cb, nextLine, false); - // } - } - else { - if (needPushDownstream) { - while (offset < lines.length) { - var line = lines[offset++]; - pushDownstream(conv, line); - } - } - cb(); - } - } -} -function processRecursive(lines, hook, conv, offset, needPushDownstream, cb, res) { - if (needPushDownstream) { - pushDownstream(conv, res); - } - processLineByLine(lines, conv, offset, needPushDownstream, cb); -} -function pushDownstream(conv, res) { - if (typeof res === "object" && !conv.options.objectMode) { - var data = JSON.stringify(res); - conv.push(data + (conv.parseParam.downstreamFormat === "array" ? "," + os_1.EOL : os_1.EOL), "utf8"); - } - else { - conv.push(res); - } -} -//# sourceMappingURL=Result.js.map \ No newline at end of file diff --git a/node_modules/csvtojson/v2/Result.js.map b/node_modules/csvtojson/v2/Result.js.map deleted file mode 100644 index ec645e7..0000000 --- a/node_modules/csvtojson/v2/Result.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Result.js","sourceRoot":"","sources":["../src/Result.ts"],"names":[],"mappings":";;;;;AAEA,sDAAyB;AAEzB,yBAAyB;AACzB;IAgBE,gBAAoB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;QADhC,gBAAW,GAAU,EAAE,CAAC;IACY,CAAC;IAf7C,sBAAY,gCAAY;aAAxB;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAA;QAC7H,CAAC;;;OAAA;IAED,sBAAY,sCAAkB;aAA9B;YACE,IAAI,IAAI,CAAC,mBAAmB,KAAK,SAAS,EAAE;gBAC1C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;aAC3H;YACD,OAAO,IAAI,CAAC,mBAAmB,CAAC;QAClC,CAAC;;;OAAA;IACD,sBAAY,+BAAW;aAAvB;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC;YACnF,6CAA6C;QAC/C,CAAC;;;OAAA;IAGD,8BAAa,GAAb,UAAc,WAAgC;QAA9C,iBA8BC;QA7BC,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,gBAAgB,CAAC;QAC9D,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,KAAK,OAAO,EAAE;YACrF,IAAI,QAAQ,KAAK,CAAC,EAAE;gBAClB,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,QAAG,CAAC,CAAC;aAC3C;SACF;QACD,oBAAoB;QACpB,OAAO,IAAI,kBAAC,CAAC,UAAC,OAAO,EAAE,MAAM;YAC3B,IAAI,KAAI,CAAC,YAAY,EAAE;gBACrB,iBAAiB,CACf,WAAW,EACX,KAAI,CAAC,SAAS,EACd,CAAC,EACD,KAAI,CAAC,kBAAkB,EACvB,UAAC,GAAG;oBACF,IAAI,GAAG,EAAE;wBACP,MAAM,CAAC,GAAG,CAAC,CAAC;qBACb;yBAAM;wBACL,KAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;wBACpC,OAAO,EAAE,CAAC;qBACX;gBACH,CAAC,CACF,CAAA;gBACD,aAAa;aACd;iBAAM;gBACL,KAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;gBACpC,OAAO,EAAE,CAAC;aACX;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,kCAAiB,GAAjB,UAAkB,KAAY;QAC5B,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACnD;QACD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,gBAAgB,IAAI,KAAK,CAAC,MAAM,CAAC;IAC/D,CAAC;IACD,6BAAY,GAAZ,UAAa,GAAa;QACxB,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE;YAC1F,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SACpD;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE;YACnF,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SAClD;IACH,CAAC;IACD,2BAAU,GAAV;QAEI,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE;YACpF,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAChE;iBAAI;gBACH,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;aAClD;SACF;QACH,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,EAAE;YAC9F,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;SACrD;QACD,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,KAAK,OAAO,EAAE;YACrF,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,QAAG,CAAC,CAAC;SAC3C;IACH,CAAC;IACH,aAAC;AAAD,CAAC,AA9ED,IA8EC;AA9EY,wBAAM;AAgFnB,2BACE,KAA0B,EAE1B,IAAe,EACf,MAAc,EACd,kBAA2B,EAC3B,EAAkB;IAElB,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;QAC1B,EAAE,EAAE,CAAC;KACN;SAAM;QACL,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE;YACrE,IAAM,MAAI,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC;YAChD,IAAM,UAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/B,IAAM,GAAG,GAAG,MAAI,CAAC,UAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC;YACxE,MAAM,EAAE,CAAC;YACT,+BAA+B;YAC/B,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;gBACnB,GAAG,CAAC,IAAI,CAAC;oBACP,gBAAgB,CAAC,KAAK,EAAE,MAAI,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE,UAAQ,CAAC,CAAC;gBAChF,CAAC,EAAE,EAAE,CAAC,CAAC;aACR;iBAAM;gBACL,wFAAwF;gBACxF,IAAI,kBAAkB,EAAE;oBACtB,cAAc,CAAC,IAAI,EAAE,UAAQ,CAAC,CAAC;iBAChC;gBACD,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;oBAC5B,IAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC3B,MAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC;oBACxD,MAAM,EAAE,CAAC;oBACT,IAAI,kBAAkB,EAAE;wBACtB,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;qBAC5B;iBACF;gBACD,EAAE,EAAE,CAAC;aACN;YACD,iCAAiC;YACjC,kDAAkD;YAClD,2FAA2F;YAC3F,YAAY;YACZ,kCAAkC;YAClC,0FAA0F;YAC1F,IAAI;SACL;aAAM;YACL,IAAI,kBAAkB,EAAE;gBACtB,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;oBAC5B,IAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC7B,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;iBAC5B;aAEF;YACD,EAAE,EAAE,CAAC;SACN;KAEF;AACH,CAAC;AAED,0BACE,KAA0B,EAC1B,IAAiE,EACjE,IAAe,EACf,MAAc,EACd,kBAA2B,EAC3B,EAAkB,EAClB,GAAsB;IAEtB,IAAI,kBAAkB,EAAE;QACtB,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC3B;IACD,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;AACjE,CAAC;AACD,wBAAwB,IAAe,EAAE,GAAsB;IAC7D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;QACvD,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,QAAG,CAAC,CAAC,CAAC,QAAG,CAAC,EAAE,MAAM,CAAC,CAAC;KAC5F;SAAM;QACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAChB;AACH,CAAC"} \ No newline at end of file diff --git a/node_modules/csvtojson/v2/dataClean.d.ts b/node_modules/csvtojson/v2/dataClean.d.ts deleted file mode 100644 index cbc69ec..0000000 --- a/node_modules/csvtojson/v2/dataClean.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/// -import { ParseRuntime } from "./ParseRuntime"; -/** - * For each data chunk coming to parser: - * 1. append the data to the buffer that is left from last chunk - * 2. check if utf8 chars being split, if does, stripe the bytes and add to left buffer. - * 3. stripBom - */ -export declare function prepareData(chunk: Buffer, runtime: ParseRuntime): string; diff --git a/node_modules/csvtojson/v2/dataClean.js b/node_modules/csvtojson/v2/dataClean.js deleted file mode 100644 index 53ad661..0000000 --- a/node_modules/csvtojson/v2/dataClean.js +++ /dev/null @@ -1,72 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var strip_bom_1 = __importDefault(require("strip-bom")); -/** - * For each data chunk coming to parser: - * 1. append the data to the buffer that is left from last chunk - * 2. check if utf8 chars being split, if does, stripe the bytes and add to left buffer. - * 3. stripBom - */ -function prepareData(chunk, runtime) { - var workChunk = concatLeftChunk(chunk, runtime); - runtime.csvLineBuffer = undefined; - var cleanCSVString = cleanUtf8Split(workChunk, runtime).toString("utf8"); - if (runtime.started === false) { - return strip_bom_1.default(cleanCSVString); - } - else { - return cleanCSVString; - } -} -exports.prepareData = prepareData; -/** - * append data to buffer that is left form last chunk - */ -function concatLeftChunk(chunk, runtime) { - if (runtime.csvLineBuffer && runtime.csvLineBuffer.length > 0) { - return Buffer.concat([runtime.csvLineBuffer, chunk]); - } - else { - return chunk; - } -} -/** - * check if utf8 chars being split, if does, stripe the bytes and add to left buffer. - */ -function cleanUtf8Split(chunk, runtime) { - var idx = chunk.length - 1; - /** - * From Keyang: - * The code below is to check if a single utf8 char (which could be multiple bytes) being split. - * If the char being split, the buffer from two chunk needs to be concat - * check how utf8 being encoded to understand the code below. - * If anyone has any better way to do this, please let me know. - */ - if ((chunk[idx] & 1 << 7) != 0) { - while ((chunk[idx] & 3 << 6) === 128) { - idx--; - } - idx--; - } - if (idx != chunk.length - 1) { - runtime.csvLineBuffer = chunk.slice(idx + 1); - return chunk.slice(0, idx + 1); - // var _cb=cb; - // var self=this; - // cb=function(){ - // if (self._csvLineBuffer){ - // self._csvLineBuffer=Buffer.concat([bufFromString(self._csvLineBuffer,"utf8"),left]); - // }else{ - // self._csvLineBuffer=left; - // } - // _cb(); - // } - } - else { - return chunk; - } -} -//# sourceMappingURL=dataClean.js.map \ No newline at end of file diff --git a/node_modules/csvtojson/v2/dataClean.js.map b/node_modules/csvtojson/v2/dataClean.js.map deleted file mode 100644 index 0978e83..0000000 --- a/node_modules/csvtojson/v2/dataClean.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"dataClean.js","sourceRoot":"","sources":["../src/dataClean.ts"],"names":[],"mappings":";;;;;AACA,wDAAiC;AACjC;;;;;GAKG;AACH,qBAA4B,KAAa,EAAE,OAAqB;IAC9D,IAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAClC,IAAM,cAAc,GAAG,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE;QAC7B,OAAO,mBAAQ,CAAC,cAAc,CAAC,CAAC;KACjC;SAAM;QACL,OAAO,cAAc,CAAC;KACvB;AACH,CAAC;AATD,kCASC;AACD;;GAEG;AACH,yBAAyB,KAAa,EAAE,OAAqB;IAC3D,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;KACtD;SAAM;QACL,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AACD;;GAEG;AACH,wBAAwB,KAAa,EAAE,OAAqB;IAC1D,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B;;;;;;OAMG;IACH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;QAC9B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE;YACpC,GAAG,EAAE,CAAC;SACP;QACD,GAAG,EAAE,CAAC;KACP;IACD,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC7C,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;QAC9B,cAAc;QACd,iBAAiB;QACjB,iBAAiB;QACjB,8BAA8B;QAC9B,2FAA2F;QAC3F,WAAW;QACX,gCAAgC;QAChC,MAAM;QACN,WAAW;QACX,IAAI;KACL;SAAM;QACL,OAAO,KAAK,CAAC;KACd;AACH,CAAC"} \ No newline at end of file diff --git a/node_modules/csvtojson/v2/fileline.d.ts b/node_modules/csvtojson/v2/fileline.d.ts deleted file mode 100644 index 4f59060..0000000 --- a/node_modules/csvtojson/v2/fileline.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ParseRuntime } from "./ParseRuntime"; -/** - * convert data chunk to file lines array - * @param {string} data data chunk as utf8 string - * @param {object} param Converter param object - * @return {Object} {lines:[line1,line2...],partial:String} - */ -export declare function stringToLines(data: string, param: ParseRuntime): StringToLinesResult; -export interface StringToLinesResult { - lines: Fileline[]; - /** - * last line which could be incomplete line. - */ - partial: string; -} -export declare type Fileline = string; diff --git a/node_modules/csvtojson/v2/fileline.js b/node_modules/csvtojson/v2/fileline.js deleted file mode 100644 index 24ff51f..0000000 --- a/node_modules/csvtojson/v2/fileline.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var getEol_1 = __importDefault(require("./getEol")); -// const getEol = require("./getEol"); -/** - * convert data chunk to file lines array - * @param {string} data data chunk as utf8 string - * @param {object} param Converter param object - * @return {Object} {lines:[line1,line2...],partial:String} - */ -function stringToLines(data, param) { - var eol = getEol_1.default(data, param); - var lines = data.split(eol); - var partial = lines.pop() || ""; - return { lines: lines, partial: partial }; -} -exports.stringToLines = stringToLines; -; -//# sourceMappingURL=fileline.js.map \ No newline at end of file diff --git a/node_modules/csvtojson/v2/fileline.js.map b/node_modules/csvtojson/v2/fileline.js.map deleted file mode 100644 index 1d24ef7..0000000 --- a/node_modules/csvtojson/v2/fileline.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fileline.js","sourceRoot":"","sources":["../src/fileline.ts"],"names":[],"mappings":";;;;;AACA,oDAA8B;AAC9B,sCAAsC;AACtC;;;;;GAKG;AACH,uBAA8B,IAAY,EAAE,KAAmB;IAC7D,IAAM,GAAG,GAAG,gBAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChC,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC5C,CAAC;AALD,sCAKC;AAAA,CAAC"} \ No newline at end of file diff --git a/node_modules/csvtojson/v2/getEol.d.ts b/node_modules/csvtojson/v2/getEol.d.ts deleted file mode 100644 index 1df27af..0000000 --- a/node_modules/csvtojson/v2/getEol.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { ParseRuntime } from "./ParseRuntime"; -export default function (data: string, param: ParseRuntime): string; diff --git a/node_modules/csvtojson/v2/getEol.js b/node_modules/csvtojson/v2/getEol.js deleted file mode 100644 index ed2e121..0000000 --- a/node_modules/csvtojson/v2/getEol.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//return first eol found from a data chunk. -function default_1(data, param) { - if (!param.eol && data) { - for (var i = 0, len = data.length; i < len; i++) { - if (data[i] === "\r") { - if (data[i + 1] === "\n") { - param.eol = "\r\n"; - break; - } - else if (data[i + 1]) { - param.eol = "\r"; - break; - } - } - else if (data[i] === "\n") { - param.eol = "\n"; - break; - } - } - } - return param.eol || "\n"; -} -exports.default = default_1; -; -//# sourceMappingURL=getEol.js.map \ No newline at end of file diff --git a/node_modules/csvtojson/v2/getEol.js.map b/node_modules/csvtojson/v2/getEol.js.map deleted file mode 100644 index 0552626..0000000 --- a/node_modules/csvtojson/v2/getEol.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"getEol.js","sourceRoot":"","sources":["../src/getEol.ts"],"names":[],"mappings":";;AACA,2CAA2C;AAC3C,mBAAyB,IAAY,EAAE,KAAmB;IACxD,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC/C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;gBACpB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;oBACxB,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC;oBACnB,MAAM;iBACP;qBAAM,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;oBACtB,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;oBACjB,MAAM;iBACP;aACF;iBAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;gBAC3B,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;gBACjB,MAAM;aACP;SACF;KACF;IACD,OAAO,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;AAC3B,CAAC;AAlBD,4BAkBC;AAAA,CAAC"} \ No newline at end of file diff --git a/node_modules/csvtojson/v2/index.d.ts b/node_modules/csvtojson/v2/index.d.ts deleted file mode 100644 index 45ed75c..0000000 --- a/node_modules/csvtojson/v2/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// -import { TransformOptions } from "stream"; -import { CSVParseParam } from "./Parameters"; -import { Converter } from "./Converter"; -declare const helper: (param?: Partial | undefined, options?: TransformOptions | undefined) => Converter; -export = helper; diff --git a/node_modules/csvtojson/v2/index.js b/node_modules/csvtojson/v2/index.js deleted file mode 100644 index 97fb28e..0000000 --- a/node_modules/csvtojson/v2/index.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; -var Converter_1 = require("./Converter"); -var helper = function (param, options) { - return new Converter_1.Converter(param, options); -}; -helper["csv"] = helper; -helper["Converter"] = Converter_1.Converter; -module.exports = helper; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/csvtojson/v2/index.js.map b/node_modules/csvtojson/v2/index.js.map deleted file mode 100644 index 5997875..0000000 --- a/node_modules/csvtojson/v2/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,yCAAwC;AAExC,IAAM,MAAM,GAAG,UAAU,KAA8B,EAAE,OAA0B;IACjF,OAAO,IAAI,qBAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC,CAAA;AACD,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;AACvB,MAAM,CAAC,WAAW,CAAC,GAAG,qBAAS,CAAC;AAChC,iBAAQ,MAAM,CAAC"} \ No newline at end of file diff --git a/node_modules/csvtojson/v2/lineToJson.d.ts b/node_modules/csvtojson/v2/lineToJson.d.ts deleted file mode 100644 index 6b46f70..0000000 --- a/node_modules/csvtojson/v2/lineToJson.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Converter } from "./Converter"; -export default function (csvRows: string[][], conv: Converter): JSONResult[]; -export declare type JSONResult = { - [key: string]: any; -}; diff --git a/node_modules/csvtojson/v2/lineToJson.js b/node_modules/csvtojson/v2/lineToJson.js deleted file mode 100644 index 119f329..0000000 --- a/node_modules/csvtojson/v2/lineToJson.js +++ /dev/null @@ -1,212 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var CSVError_1 = __importDefault(require("./CSVError")); -var set_1 = __importDefault(require("lodash/set")); -var numReg = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/; -function default_1(csvRows, conv) { - var res = []; - for (var i = 0, len = csvRows.length; i < len; i++) { - var r = processRow(csvRows[i], conv, i); - if (r) { - res.push(r); - } - } - return res; -} -exports.default = default_1; -; -function processRow(row, conv, index) { - if (conv.parseParam.checkColumn && conv.parseRuntime.headers && row.length !== conv.parseRuntime.headers.length) { - throw (CSVError_1.default.column_mismatched(conv.parseRuntime.parsedLineNumber + index)); - } - var headRow = conv.parseRuntime.headers || []; - var resultRow = convertRowToJson(row, headRow, conv); - if (resultRow) { - return resultRow; - } - else { - return null; - } -} -function convertRowToJson(row, headRow, conv) { - var hasValue = false; - var resultRow = {}; - for (var i = 0, len = row.length; i < len; i++) { - var item = row[i]; - if (conv.parseParam.ignoreEmpty && item === '') { - continue; - } - hasValue = true; - var head = headRow[i]; - if (!head || head === "") { - head = headRow[i] = "field" + (i + 1); - } - var convFunc = getConvFunc(head, i, conv); - if (convFunc) { - var convRes = convFunc(item, head, resultRow, row, i); - if (convRes !== undefined) { - setPath(resultRow, head, convRes, conv, i); - } - } - else { - // var flag = getFlag(head, i, param); - // if (flag === 'omit') { - // continue; - // } - if (conv.parseParam.checkType) { - var convertFunc = checkType(item, head, i, conv); - item = convertFunc(item); - } - if (item !== undefined) { - setPath(resultRow, head, item, conv, i); - } - } - } - if (hasValue) { - return resultRow; - } - else { - return null; - } -} -var builtInConv = { - "string": stringType, - "number": numberType, - "omit": function () { } -}; -function getConvFunc(head, i, conv) { - if (conv.parseRuntime.columnConv[i] !== undefined) { - return conv.parseRuntime.columnConv[i]; - } - else { - var flag = conv.parseParam.colParser[head]; - if (flag === undefined) { - return conv.parseRuntime.columnConv[i] = null; - } - if (typeof flag === "object") { - flag = flag.cellParser || "string"; - } - if (typeof flag === "string") { - flag = flag.trim().toLowerCase(); - var builtInFunc = builtInConv[flag]; - if (builtInFunc) { - return conv.parseRuntime.columnConv[i] = builtInFunc; - } - else { - return conv.parseRuntime.columnConv[i] = null; - } - } - else if (typeof flag === "function") { - return conv.parseRuntime.columnConv[i] = flag; - } - else { - return conv.parseRuntime.columnConv[i] = null; - } - } -} -function setPath(resultJson, head, value, conv, headIdx) { - if (!conv.parseRuntime.columnValueSetter[headIdx]) { - if (conv.parseParam.flatKeys) { - conv.parseRuntime.columnValueSetter[headIdx] = flatSetter; - } - else { - if (head.indexOf(".") > -1) { - var headArr = head.split("."); - var jsonHead = true; - while (headArr.length > 0) { - var headCom = headArr.shift(); - if (headCom.length === 0) { - jsonHead = false; - break; - } - } - if (!jsonHead || conv.parseParam.colParser[head] && conv.parseParam.colParser[head].flat) { - conv.parseRuntime.columnValueSetter[headIdx] = flatSetter; - } - else { - conv.parseRuntime.columnValueSetter[headIdx] = jsonSetter; - } - } - else { - conv.parseRuntime.columnValueSetter[headIdx] = flatSetter; - } - } - } - if (conv.parseParam.nullObject === true && value === "null") { - value = null; - } - conv.parseRuntime.columnValueSetter[headIdx](resultJson, head, value); - // flatSetter(resultJson, head, value); -} -function flatSetter(resultJson, head, value) { - resultJson[head] = value; -} -function jsonSetter(resultJson, head, value) { - set_1.default(resultJson, head, value); -} -function checkType(item, head, headIdx, conv) { - if (conv.parseRuntime.headerType[headIdx]) { - return conv.parseRuntime.headerType[headIdx]; - } - else if (head.indexOf('number#!') > -1) { - return conv.parseRuntime.headerType[headIdx] = numberType; - } - else if (head.indexOf('string#!') > -1) { - return conv.parseRuntime.headerType[headIdx] = stringType; - } - else if (conv.parseParam.checkType) { - return conv.parseRuntime.headerType[headIdx] = dynamicType; - } - else { - return conv.parseRuntime.headerType[headIdx] = stringType; - } -} -function numberType(item) { - var rtn = parseFloat(item); - if (isNaN(rtn)) { - return item; - } - return rtn; -} -function stringType(item) { - return item.toString(); -} -function dynamicType(item) { - var trimed = item.trim(); - if (trimed === "") { - return stringType(item); - } - if (numReg.test(trimed)) { - return numberType(item); - } - else if (trimed.length === 5 && trimed.toLowerCase() === "false" || trimed.length === 4 && trimed.toLowerCase() === "true") { - return booleanType(item); - } - else if (trimed[0] === "{" && trimed[trimed.length - 1] === "}" || trimed[0] === "[" && trimed[trimed.length - 1] === "]") { - return jsonType(item); - } - else { - return stringType(item); - } -} -function booleanType(item) { - var trimed = item.trim(); - if (trimed.length === 5 && trimed.toLowerCase() === "false") { - return false; - } - else { - return true; - } -} -function jsonType(item) { - try { - return JSON.parse(item); - } - catch (e) { - return item; - } -} -//# sourceMappingURL=lineToJson.js.map \ No newline at end of file diff --git a/node_modules/csvtojson/v2/lineToJson.js.map b/node_modules/csvtojson/v2/lineToJson.js.map deleted file mode 100644 index 05d58c4..0000000 --- a/node_modules/csvtojson/v2/lineToJson.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lineToJson.js","sourceRoot":"","sources":["../src/lineToJson.ts"],"names":[],"mappings":";;;;;AACA,wDAAkC;AAElC,mDAA6B;AAG7B,IAAI,MAAM,GAAG,0CAA0C,CAAC;AAExD,mBAAyB,OAAmB,EAAE,IAAe;IAC3D,IAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAClD,IAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,EAAE;YACL,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACb;KACF;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AATD,4BASC;AAAA,CAAC;AAKF,oBAAoB,GAAa,EAAE,IAAe,EAAE,KAAK;IAEvD,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE;QAC/G,MAAM,CAAC,kBAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAA;KAC/E;IAED,IAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC;IAChD,IAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACvD,IAAI,SAAS,EAAE;QACb,OAAO,SAAS,CAAC;KAClB;SAAM;QACL,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAED,0BAA0B,GAAa,EAAE,OAAiB,EAAE,IAAe;IACzE,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAM,SAAS,GAAG,EAAE,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAC9C,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAElB,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,IAAI,KAAK,EAAE,EAAE;YAC9C,SAAS;SACV;QACD,QAAQ,GAAG,IAAI,CAAC;QAEhB,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;YACxB,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACvC;QACD,IAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,QAAQ,EAAE;YACZ,IAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACxD,IAAI,OAAO,KAAK,SAAS,EAAE;gBACzB,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;aAC3C;SACF;aAAM;YACL,sCAAsC;YACtC,yBAAyB;YACzB,cAAc;YACd,IAAI;YACJ,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;gBAC7B,IAAM,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBACnD,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;aAC1B;YACD,IAAI,IAAI,KAAK,SAAS,EAAE;gBACtB,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;aACxC;SACF;KACF;IACD,IAAI,QAAQ,EAAE;QACZ,OAAO,SAAS,CAAC;KAClB;SAAM;QACL,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAED,IAAM,WAAW,GAAkC;IACjD,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,cAAc,CAAC;CACxB,CAAA;AACD,qBAAqB,IAAY,EAAE,CAAS,EAAE,IAAe;IAC3D,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;QACjD,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACxC;SAAM;QACL,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SAC/C;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,IAAI,GAAI,IAAoB,CAAC,UAAU,IAAI,QAAQ,CAAC;SACrD;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACjC,IAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,WAAW,EAAE;gBACf,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;aACtD;iBAAM;gBACL,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;aAC/C;SACF;aAAM,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;YACrC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SAC/C;aAAM;YACL,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SAC/C;KACF;AACH,CAAC;AACD,iBAAiB,UAAe,EAAE,IAAY,EAAE,KAAU,EAAE,IAAe,EAAC,OAAc;IACxF,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;QACjD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;SAC3D;aAAM;YAEL,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC1B,IAAM,OAAO,GAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,QAAQ,GAAC,IAAI,CAAC;gBAClB,OAAM,OAAO,CAAC,MAAM,GAAC,CAAC,EAAC;oBACrB,IAAM,OAAO,GAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBAC9B,IAAI,OAAQ,CAAC,MAAM,KAAG,CAAC,EAAC;wBACtB,QAAQ,GAAC,KAAK,CAAC;wBACf,MAAM;qBACP;iBACF;gBACD,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAK,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAiB,CAAC,IAAI,EAAE;oBACzG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;iBAC3D;qBAAM;oBACL,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;iBAC3D;aACF;iBAAM;gBACL,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;aAC3D;SACF;KACF;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,KAAI,IAAI,IAAI,KAAK,KAAI,MAAM,EAAC;QACxD,KAAK,GAAC,IAAI,CAAC;KACZ;IACD,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACtE,uCAAuC;AAEzC,CAAC;AACD,oBAAoB,UAAe,EAAE,IAAY,EAAE,KAAU;IAC3D,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAC3B,CAAC;AACD,oBAAoB,UAAe,EAAE,IAAY,EAAE,KAAU;IAC3D,aAAG,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AAGD,mBAAmB,IAAY,EAAE,IAAY,EAAE,OAAe,EAAE,IAAe;IAC7E,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACzC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;KAC9C;SAAM,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;QACxC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;KAC3D;SAAM,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;QACxC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;KAC3D;SAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;QACpC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC;KAC5D;SAAM;QACL,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;KAC3D;AACH,CAAC;AAED,oBAAoB,IAAI;IACtB,IAAI,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;QACd,OAAO,IAAI,CAAC;KACb;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,oBAAoB,IAAY;IAC9B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzB,CAAC;AAED,qBAAqB,IAAI;IACvB,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,MAAM,KAAK,EAAE,EAAE;QACjB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;KACzB;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QACvB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;KACzB;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;QAC5H,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;KAC1B;SAAM,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;QAC3H,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;KACvB;SAAM;QACL,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;KACzB;AACH,CAAC;AAED,qBAAqB,IAAI;IACvB,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;QAC3D,OAAO,KAAK,CAAC;KACd;SAAM;QACL,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAED,kBAAkB,IAAI;IACpB,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACzB;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,IAAI,CAAC;KACb;AACH,CAAC"} \ No newline at end of file diff --git a/node_modules/csvtojson/v2/rowSplit.d.ts b/node_modules/csvtojson/v2/rowSplit.d.ts deleted file mode 100644 index 4bb49d0..0000000 --- a/node_modules/csvtojson/v2/rowSplit.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Converter } from "./Converter"; -import { Fileline } from "./fileline"; -export declare class RowSplit { - private conv; - private quote; - private trim; - private escape; - private cachedRegExp; - private delimiterEmitted; - private _needEmitDelimiter?; - private readonly needEmitDelimiter; - constructor(conv: Converter); - parse(fileline: Fileline): RowSplitResult; - private toCSVRow(rowArr, trim, quote, delimiter); - private getDelimiter(fileline); - private isQuoteOpen(str); - private isQuoteClose(str); - private escapeQuote(segment); - parseMultiLines(lines: Fileline[]): MultipleRowResult; -} -export interface MultipleRowResult { - rowsCells: string[][]; - partial: string; -} -export interface RowSplitResult { - /** - * csv row array. ["a","b","c"] - */ - cells: string[]; - /** - * if the passed fileline is a complete row - */ - closed: boolean; -} diff --git a/node_modules/csvtojson/v2/rowSplit.js b/node_modules/csvtojson/v2/rowSplit.js deleted file mode 100644 index a7ec301..0000000 --- a/node_modules/csvtojson/v2/rowSplit.js +++ /dev/null @@ -1,230 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var getEol_1 = __importDefault(require("./getEol")); -var util_1 = require("./util"); -var defaulDelimiters = [",", "|", "\t", ";", ":"]; -var RowSplit = /** @class */ (function () { - function RowSplit(conv) { - this.conv = conv; - this.cachedRegExp = {}; - this.delimiterEmitted = false; - this._needEmitDelimiter = undefined; - this.quote = conv.parseParam.quote; - this.trim = conv.parseParam.trim; - this.escape = conv.parseParam.escape; - } - Object.defineProperty(RowSplit.prototype, "needEmitDelimiter", { - get: function () { - if (this._needEmitDelimiter === undefined) { - this._needEmitDelimiter = this.conv.listeners("delimiter").length > 0; - } - return this._needEmitDelimiter; - }, - enumerable: true, - configurable: true - }); - RowSplit.prototype.parse = function (fileline) { - if (fileline.length === 0 || (this.conv.parseParam.ignoreEmpty && fileline.trim().length === 0)) { - return { cells: [], closed: true }; - } - var quote = this.quote; - var trim = this.trim; - var escape = this.escape; - if (this.conv.parseRuntime.delimiter instanceof Array || this.conv.parseRuntime.delimiter.toLowerCase() === "auto") { - this.conv.parseRuntime.delimiter = this.getDelimiter(fileline); - } - if (this.needEmitDelimiter && !this.delimiterEmitted) { - this.conv.emit("delimiter", this.conv.parseRuntime.delimiter); - this.delimiterEmitted = true; - } - var delimiter = this.conv.parseRuntime.delimiter; - var rowArr = fileline.split(delimiter); - if (quote === "off") { - if (trim) { - for (var i = 0; i < rowArr.length; i++) { - rowArr[i] = rowArr[i].trim(); - } - } - return { cells: rowArr, closed: true }; - } - else { - return this.toCSVRow(rowArr, trim, quote, delimiter); - } - }; - RowSplit.prototype.toCSVRow = function (rowArr, trim, quote, delimiter) { - var row = []; - var inquote = false; - var quoteBuff = ''; - for (var i = 0, rowLen = rowArr.length; i < rowLen; i++) { - var e = rowArr[i]; - if (!inquote && trim) { - e = util_1.trimLeft(e); - } - var len = e.length; - if (!inquote) { - if (len === 2 && e === this.quote + this.quote) { - row.push(""); - continue; - } - else if (this.isQuoteOpen(e)) { //quote open - e = e.substr(1); - if (this.isQuoteClose(e)) { //quote close - e = e.substring(0, e.lastIndexOf(quote)); - e = this.escapeQuote(e); - row.push(e); - continue; - } - else if (e.indexOf(quote) !== -1) { - var count = 0; - var prev = ""; - for (var _i = 0, e_1 = e; _i < e_1.length; _i++) { - var c = e_1[_i]; - // count quotes only if previous character is not escape char - if (c === quote && prev !== this.escape) { - count++; - prev = ""; - } - else { - // save previous char to temp variable - prev = c; - } - } - if (count % 2 === 1) { - if (trim) { - e = util_1.trimRight(e); - } - row.push(quote + e); - continue; - } - else { - inquote = true; - quoteBuff += e; - continue; - } - } - else { - inquote = true; - quoteBuff += e; - continue; - } - } - else { - if (trim) { - e = util_1.trimRight(e); - } - row.push(e); - continue; - } - } - else { //previous quote not closed - if (this.isQuoteClose(e)) { //close double quote - inquote = false; - e = e.substr(0, len - 1); - quoteBuff += delimiter + e; - quoteBuff = this.escapeQuote(quoteBuff); - if (trim) { - quoteBuff = util_1.trimRight(quoteBuff); - } - row.push(quoteBuff); - quoteBuff = ""; - } - else { - quoteBuff += delimiter + e; - } - } - } - // if (!inquote && param._needFilterRow) { - // row = filterRow(row, param); - // } - return { cells: row, closed: !inquote }; - }; - RowSplit.prototype.getDelimiter = function (fileline) { - var checker; - if (this.conv.parseParam.delimiter === "auto") { - checker = defaulDelimiters; - } - else if (this.conv.parseParam.delimiter instanceof Array) { - checker = this.conv.parseParam.delimiter; - } - else { - return this.conv.parseParam.delimiter; - } - var count = 0; - var rtn = ","; - checker.forEach(function (delim) { - var delimCount = fileline.split(delim).length; - if (delimCount > count) { - rtn = delim; - count = delimCount; - } - }); - return rtn; - }; - RowSplit.prototype.isQuoteOpen = function (str) { - var quote = this.quote; - var escape = this.escape; - return str[0] === quote && (str[1] !== quote || - str[1] === escape && (str[2] === quote || str.length === 2)); - }; - RowSplit.prototype.isQuoteClose = function (str) { - var quote = this.quote; - var escape = this.escape; - if (this.conv.parseParam.trim) { - str = util_1.trimRight(str); - } - var count = 0; - var idx = str.length - 1; - while (str[idx] === quote || str[idx] === escape) { - idx--; - count++; - } - return count % 2 !== 0; - }; - // private twoDoubleQuote(str: string): string { - // var twoQuote = this.quote + this.quote; - // var curIndex = -1; - // while ((curIndex = str.indexOf(twoQuote, curIndex)) > -1) { - // str = str.substring(0, curIndex) + str.substring(++curIndex); - // } - // return str; - // } - RowSplit.prototype.escapeQuote = function (segment) { - var key = "es|" + this.quote + "|" + this.escape; - if (this.cachedRegExp[key] === undefined) { - this.cachedRegExp[key] = new RegExp('\\' + this.escape + '\\' + this.quote, 'g'); - } - var regExp = this.cachedRegExp[key]; - // console.log(regExp,segment); - return segment.replace(regExp, this.quote); - }; - RowSplit.prototype.parseMultiLines = function (lines) { - var csvLines = []; - var left = ""; - while (lines.length) { - var line = left + lines.shift(); - var row = this.parse(line); - if (row.cells.length === 0 && this.conv.parseParam.ignoreEmpty) { - continue; - } - if (row.closed || this.conv.parseParam.alwaysSplitAtEOL) { - if (this.conv.parseRuntime.selectedColumns) { - csvLines.push(util_1.filterArray(row.cells, this.conv.parseRuntime.selectedColumns)); - } - else { - csvLines.push(row.cells); - } - left = ""; - } - else { - left = line + (getEol_1.default(line, this.conv.parseRuntime) || "\n"); - } - } - return { rowsCells: csvLines, partial: left }; - }; - return RowSplit; -}()); -exports.RowSplit = RowSplit; -//# sourceMappingURL=rowSplit.js.map \ No newline at end of file diff --git a/node_modules/csvtojson/v2/rowSplit.js.map b/node_modules/csvtojson/v2/rowSplit.js.map deleted file mode 100644 index 19f8091..0000000 --- a/node_modules/csvtojson/v2/rowSplit.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"rowSplit.js","sourceRoot":"","sources":["../src/rowSplit.ts"],"names":[],"mappings":";;;;;AAGA,oDAA8B;AAC9B,+BAA0D;AAE1D,IAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpD;IAaE,kBAAoB,IAAe;QAAf,SAAI,GAAJ,IAAI,CAAW;QAT3B,iBAAY,GAA8B,EAAE,CAAC;QAC7C,qBAAgB,GAAG,KAAK,CAAC;QACzB,uBAAkB,GAAa,SAAS,CAAC;QAQ/C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IACvC,CAAC;IAVD,sBAAY,uCAAiB;aAA7B;YACE,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE;gBACzC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;aACvE;YACD,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACjC,CAAC;;;OAAA;IAMD,wBAAK,GAAL,UAAM,QAAkB;QACtB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YAC/F,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SACpC;QACD,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,YAAY,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;YAClH,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;SAEhE;QACD,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACpD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC9D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9B;QACD,IAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QACnD,IAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,KAAK,KAAK,KAAK,EAAE;YACnB,IAAI,IAAI,EAAE;gBACR,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACtC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBAC9B;aACF;YACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SACxC;aAAM;YACL,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;SACtD;IAEH,CAAC;IACO,2BAAQ,GAAhB,UAAiB,MAAgB,EAAE,IAAa,EAAE,KAAa,EAAE,SAAiB;QAChF,IAAM,GAAG,GAAa,EAAE,CAAC;QACzB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YACvD,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;gBACpB,CAAC,GAAG,eAAQ,CAAC,CAAC,CAAC,CAAC;aACjB;YACD,IAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;YACrB,IAAI,CAAC,OAAO,EAAE;gBACZ,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;oBAC9C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACb,SAAS;iBACV;qBAAM,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,YAAY;oBAC5C,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAChB,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,aAAa;wBACvC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;wBACzC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;wBACxB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBACZ,SAAS;qBACV;yBAAM,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;wBAClC,IAAI,KAAK,GAAG,CAAC,CAAC;wBACd,IAAI,IAAI,GAAG,EAAE,CAAC;wBACd,KAAgB,UAAC,EAAD,OAAC,EAAD,eAAC,EAAD,IAAC;4BAAZ,IAAM,CAAC,UAAA;4BACV,6DAA6D;4BAC7D,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE;gCACvC,KAAK,EAAE,CAAC;gCACR,IAAI,GAAG,EAAE,CAAC;6BACX;iCAAM;gCACL,sCAAsC;gCACtC,IAAI,GAAG,CAAC,CAAC;6BACV;yBACF;wBACD,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE;4BACnB,IAAI,IAAI,EAAE;gCACR,CAAC,GAAG,gBAAS,CAAC,CAAC,CAAC,CAAC;6BAClB;4BACD,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;4BACpB,SAAS;yBACV;6BAAI;4BACH,OAAO,GAAG,IAAI,CAAC;4BACf,SAAS,IAAI,CAAC,CAAC;4BACf,SAAS;yBACV;qBACF;yBACI;wBACH,OAAO,GAAG,IAAI,CAAC;wBACf,SAAS,IAAI,CAAC,CAAC;wBACf,SAAS;qBACV;iBACF;qBAAM;oBACL,IAAI,IAAI,EAAE;wBACR,CAAC,GAAG,gBAAS,CAAC,CAAC,CAAC,CAAC;qBAClB;oBACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACZ,SAAS;iBACV;aACF;iBAAM,EAAE,2BAA2B;gBAClC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,oBAAoB;oBAC9C,OAAO,GAAG,KAAK,CAAC;oBAChB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;oBACzB,SAAS,IAAI,SAAS,GAAG,CAAC,CAAC;oBAC3B,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;oBACxC,IAAI,IAAI,EAAE;wBACR,SAAS,GAAG,gBAAS,CAAC,SAAS,CAAC,CAAC;qBAClC;oBACD,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACpB,SAAS,GAAG,EAAE,CAAC;iBAChB;qBAAM;oBACL,SAAS,IAAI,SAAS,GAAG,CAAC,CAAC;iBAC5B;aACF;SACF;QAED,0CAA0C;QAC1C,iCAAiC;QACjC,IAAI;QAEJ,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1C,CAAC;IACO,+BAAY,GAApB,UAAqB,QAAkB;QACrC,IAAI,OAAO,CAAC;QACZ,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,MAAM,EAAE;YAC7C,OAAO,GAAG,gBAAgB,CAAC;SAC5B;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,YAAY,KAAK,EAAE;YAC1D,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;SAC1C;aAAM;YACL,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;SACvC;QACD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,GAAG,GAAG,GAAG,CAAC;QACd,OAAO,CAAC,OAAO,CAAC,UAAU,KAAK;YAC7B,IAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YAChD,IAAI,UAAU,GAAG,KAAK,EAAE;gBACtB,GAAG,GAAG,KAAK,CAAC;gBACZ,KAAK,GAAG,UAAU,CAAC;aACpB;QACH,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IACO,8BAAW,GAAnB,UAAoB,GAAW;QAC7B,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CACzB,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK;YAChB,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IACO,+BAAY,GAApB,UAAqB,GAAW;QAC9B,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YAC7B,GAAG,GAAG,gBAAS,CAAC,GAAG,CAAC,CAAC;SACtB;QACD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE;YAChD,GAAG,EAAE,CAAC;YACN,KAAK,EAAE,CAAC;SACT;QACD,OAAO,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,gDAAgD;IAChD,4CAA4C;IAC5C,uBAAuB;IACvB,gEAAgE;IAChE,oEAAoE;IACpE,MAAM;IACN,gBAAgB;IAChB,IAAI;IAGI,8BAAW,GAAnB,UAAoB,OAAe;QACjC,IAAM,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QACnD,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;YACxC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;SAClF;QACD,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACtC,+BAA+B;QAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IACD,kCAAe,GAAf,UAAgB,KAAiB;QAC/B,IAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,OAAO,KAAK,CAAC,MAAM,EAAE;YACnB,IAAM,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAClC,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;gBAC9D,SAAS;aACV;YACD,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;gBACvD,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE;oBAC1C,QAAQ,CAAC,IAAI,CAAC,kBAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC;iBAC/E;qBAAM;oBACL,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;iBAC1B;gBAED,IAAI,GAAG,EAAE,CAAC;aACX;iBAAM;gBACL,IAAI,GAAG,IAAI,GAAG,CAAC,gBAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC;aAC9D;SACF;QACD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAChD,CAAC;IACH,eAAC;AAAD,CAAC,AApND,IAoNC;AApNY,4BAAQ"} \ No newline at end of file diff --git a/node_modules/csvtojson/v2/util.d.ts b/node_modules/csvtojson/v2/util.d.ts deleted file mode 100644 index 12cda58..0000000 --- a/node_modules/csvtojson/v2/util.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// -export declare function bufFromString(str: string): Buffer; -export declare function emptyBuffer(): Buffer; -export declare function filterArray(arr: any[], filter: number[]): any[]; -export declare const trimLeft: (str: string) => string; -export declare const trimRight: (str: string) => string; diff --git a/node_modules/csvtojson/v2/util.js b/node_modules/csvtojson/v2/util.js deleted file mode 100644 index 02ea1cb..0000000 --- a/node_modules/csvtojson/v2/util.js +++ /dev/null @@ -1,39 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -function bufFromString(str) { - var length = Buffer.byteLength(str); - var buffer = Buffer.allocUnsafe - ? Buffer.allocUnsafe(length) - : new Buffer(length); - buffer.write(str); - return buffer; -} -exports.bufFromString = bufFromString; -function emptyBuffer() { - var buffer = Buffer.allocUnsafe - ? Buffer.allocUnsafe(0) - : new Buffer(0); - return buffer; -} -exports.emptyBuffer = emptyBuffer; -function filterArray(arr, filter) { - var rtn = []; - for (var i = 0; i < arr.length; i++) { - if (filter.indexOf(i) > -1) { - rtn.push(arr[i]); - } - } - return rtn; -} -exports.filterArray = filterArray; -exports.trimLeft = String.prototype.trimLeft ? function trimLeftNative(str) { - return str.trimLeft(); -} : function trimLeftRegExp(str) { - return str.replace(/^\s+/, ""); -}; -exports.trimRight = String.prototype.trimRight ? function trimRightNative(str) { - return str.trimRight(); -} : function trimRightRegExp(str) { - return str.replace(/\s+$/, ""); -}; -//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/node_modules/csvtojson/v2/util.js.map b/node_modules/csvtojson/v2/util.js.map deleted file mode 100644 index 6e2d530..0000000 --- a/node_modules/csvtojson/v2/util.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;AAAA,uBAA8B,GAAW;IACvC,IAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACtC,IAAM,MAAM,GAAG,MAAM,CAAC,WAAW;QAC/B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;QAC5B,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;IACvB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,OAAO,MAAM,CAAC;AAChB,CAAC;AAPD,sCAOC;AAED;IACE,IAAM,MAAM,GAAG,MAAM,CAAC,WAAW;QAC/B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IAClB,OAAO,MAAM,CAAC;AAChB,CAAC;AALD,kCAKC;AAED,qBAA4B,GAAU,EAAE,MAAgB;IACtD,IAAM,GAAG,GAAU,EAAE,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;YAC1B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAClB;KACF;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AARD,kCAQC;AAEY,QAAA,QAAQ,GAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAA,CAAC,CAAA,wBAAwB,GAAU;IAChF,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC,CAAA,CAAC,CAAA,wBAAwB,GAAU;IAClC,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC,CAAA;AAEY,QAAA,SAAS,GAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAA,CAAC,CAAA,yBAAyB,GAAU;IACnF,OAAO,GAAG,CAAC,SAAS,EAAE,CAAC;AACzB,CAAC,CAAA,CAAC,CAAA,yBAAyB,GAAU;IACnC,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC,CAAA"} \ No newline at end of file diff --git a/node_modules/csvtojson/v2/worker.d.ts b/node_modules/csvtojson/v2/worker.d.ts deleted file mode 100644 index e69de29..0000000 diff --git a/node_modules/csvtojson/v2/worker.js b/node_modules/csvtojson/v2/worker.js deleted file mode 100644 index 498089b..0000000 --- a/node_modules/csvtojson/v2/worker.js +++ /dev/null @@ -1,72 +0,0 @@ -"use strict"; -// import { Converter } from "./Converter"; -// import { Message, InitMessage, EOM } from "./ProcessFork"; -// import CSVError from "./CSVError"; -// import { CSVParseParam } from "./Parameters"; -// process.on("message", processMsg); -// let conv: Converter; -// function processMsg(msg: Message) { -// if (msg.cmd === "init") { -// const param = prepareParams((msg as InitMessage).params); -// param.fork = false; -// conv = new Converter(param); -// process.stdin.pipe(conv).pipe(process.stdout); -// conv.on("error", (err) => { -// if ((err as CSVError).line) { -// process.stderr.write(JSON.stringify({ -// err: (err as CSVError).err, -// line: (err as CSVError).line, -// extra: (err as CSVError).extra -// })) -// } else { -// process.stderr.write(JSON.stringify({ -// err: err.message, -// line: -1, -// extra: "Unknown error" -// })); -// } -// }); -// conv.on("eol", (eol) => { -// // console.log("eol!!!",eol); -// if (process.send) -// process.send({ cmd: "eol", "value": eol }); -// }) -// conv.on("header", (header) => { -// if (process.send) -// process.send({ cmd: "header", "value": header }); -// }) -// conv.on("done", () => { -// const drained = process.stdout.write("", () => { -// if (drained) { -// gracelyExit(); -// } -// }); -// if (!drained) { -// process.stdout.on("drain", gracelyExit) -// } -// // process.stdout.write(EOM); -// }) -// if (process.send) { -// process.send({ cmd: "inited" }); -// } -// } -// } -// function gracelyExit(){ -// setTimeout(()=>{ -// conv.removeAllListeners(); -// process.removeAllListeners(); -// },50); -// } -// function prepareParams(p: any): CSVParseParam { -// if (p.ignoreColumns) { -// p.ignoreColumns = new RegExp(p.ignoreColumns.source, p.ignoreColumns.flags) -// } -// if (p.includeColumns) { -// p.includeColumns = new RegExp(p.includeColumns.source, p.includeColumns.flags) -// } -// return p; -// } -// process.on("disconnect", () => { -// process.exit(-1); -// }); -//# sourceMappingURL=worker.js.map \ No newline at end of file diff --git a/node_modules/csvtojson/v2/worker.js.map b/node_modules/csvtojson/v2/worker.js.map deleted file mode 100644 index 0ac0976..0000000 --- a/node_modules/csvtojson/v2/worker.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":";AAAA,2CAA2C;AAC3C,6DAA6D;AAC7D,qCAAqC;AACrC,gDAAgD;AAChD,qCAAqC;AACrC,uBAAuB;AACvB,sCAAsC;AACtC,8BAA8B;AAC9B,gEAAgE;AAChE,0BAA0B;AAC1B,mCAAmC;AACnC,qDAAqD;AACrD,kCAAkC;AAClC,sCAAsC;AACtC,gDAAgD;AAChD,wCAAwC;AACxC,0CAA0C;AAC1C,2CAA2C;AAC3C,cAAc;AACd,iBAAiB;AACjB,gDAAgD;AAChD,8BAA8B;AAC9B,sBAAsB;AACtB,mCAAmC;AACnC,eAAe;AACf,UAAU;AAEV,UAAU;AACV,gCAAgC;AAChC,sCAAsC;AACtC,0BAA0B;AAC1B,sDAAsD;AACtD,SAAS;AACT,sCAAsC;AACtC,0BAA0B;AAC1B,4DAA4D;AAC5D,SAAS;AACT,8BAA8B;AAC9B,yDAAyD;AACzD,yBAAyB;AACzB,2BAA2B;AAC3B,YAAY;AACZ,YAAY;AACZ,wBAAwB;AACxB,kDAAkD;AAClD,UAAU;AAGV,sCAAsC;AACtC,SAAS;AACT,0BAA0B;AAC1B,yCAAyC;AACzC,QAAQ;AAGR,MAAM;AACN,IAAI;AACJ,0BAA0B;AAC1B,qBAAqB;AACrB,iCAAiC;AACjC,oCAAoC;AACpC,WAAW;AACX,IAAI;AACJ,kDAAkD;AAClD,2BAA2B;AAC3B,kFAAkF;AAClF,MAAM;AACN,4BAA4B;AAC5B,qFAAqF;AACrF,MAAM;AACN,cAAc;AACd,IAAI;AAEJ,mCAAmC;AACnC,sBAAsB;AACtB,MAAM"} \ No newline at end of file diff --git a/node_modules/csvtojson/webpack.config.js b/node_modules/csvtojson/webpack.config.js deleted file mode 100644 index 212cb7b..0000000 --- a/node_modules/csvtojson/webpack.config.js +++ /dev/null @@ -1,66 +0,0 @@ -var webpack = require('webpack') -var path = require('path') - - - - -/* - * SplitChunksPlugin is enabled by default and replaced - * deprecated CommonsChunkPlugin. It automatically identifies modules which - * should be splitted of chunk by heuristics using module duplication count and - * module category (i. e. node_modules). And splits the chunks… - * - * It is safe to remove "splitChunks" from the generated configuration - * and was added as an educational example. - * - * https://webpack.js.org/plugins/split-chunks-plugin/ - * - */ - -/* - * We've enabled UglifyJSPlugin for you! This minifies your app - * in order to load faster and run less javascript. - * - * https://github.com/webpack-contrib/uglifyjs-webpack-plugin - * - */ - -var UglifyJSPlugin = require('uglifyjs-webpack-plugin'); - - - - -module.exports = { - module: { - rules: [] - }, - - entry: "./index.js", - - output: { - filename: 'browser.js', - path: path.resolve(__dirname, 'browser'), - libraryTarget: "commonjs2" - }, - - mode: 'production', - plugins: [ - new UglifyJSPlugin(), - new webpack.IgnorePlugin(/fs/), - ], - optimization: { - splitChunks: { - cacheGroups: { - vendors: { - priority: -10, - test: /[\\/]node_modules[\\/]/ - } - }, - - chunks: 'async', - minChunks: 1, - minSize: 30000, - name: true - } - } -} \ No newline at end of file diff --git a/node_modules/is-utf8/LICENSE b/node_modules/is-utf8/LICENSE deleted file mode 100644 index 2c8d4b9..0000000 --- a/node_modules/is-utf8/LICENSE +++ /dev/null @@ -1,9 +0,0 @@ -The MIT License (MIT) - -Copyright (C) 2014 Wei Fanzhe - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -   -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/is-utf8/README.md b/node_modules/is-utf8/README.md deleted file mode 100644 index b62ddde..0000000 --- a/node_modules/is-utf8/README.md +++ /dev/null @@ -1,16 +0,0 @@ -#utf8 detector - -Detect if a Buffer is utf8 encoded. -It need The minimum amount of bytes is 4. - - -```javascript - var fs = require('fs'); - var isUtf8 = require('is-utf8'); - var ansi = fs.readFileSync('ansi.txt'); - var utf8 = fs.readFileSync('utf8.txt'); - - console.log('ansi.txt is utf8: '+isUtf8(ansi)); //false - console.log('utf8.txt is utf8: '+isUtf8(utf8)); //true -``` - diff --git a/node_modules/is-utf8/is-utf8.js b/node_modules/is-utf8/is-utf8.js deleted file mode 100644 index 8a5f15d..0000000 --- a/node_modules/is-utf8/is-utf8.js +++ /dev/null @@ -1,76 +0,0 @@ - -exports = module.exports = function(bytes) -{ - var i = 0; - while(i < bytes.length) - { - if( (// ASCII - bytes[i] == 0x09 || - bytes[i] == 0x0A || - bytes[i] == 0x0D || - (0x20 <= bytes[i] && bytes[i] <= 0x7E) - ) - ) { - i += 1; - continue; - } - - if( (// non-overlong 2-byte - (0xC2 <= bytes[i] && bytes[i] <= 0xDF) && - (0x80 <= bytes[i+1] && bytes[i+1] <= 0xBF) - ) - ) { - i += 2; - continue; - } - - if( (// excluding overlongs - bytes[i] == 0xE0 && - (0xA0 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) && - (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) - ) || - (// straight 3-byte - ((0xE1 <= bytes[i] && bytes[i] <= 0xEC) || - bytes[i] == 0xEE || - bytes[i] == 0xEF) && - (0x80 <= bytes[i + 1] && bytes[i+1] <= 0xBF) && - (0x80 <= bytes[i+2] && bytes[i+2] <= 0xBF) - ) || - (// excluding surrogates - bytes[i] == 0xED && - (0x80 <= bytes[i+1] && bytes[i+1] <= 0x9F) && - (0x80 <= bytes[i+2] && bytes[i+2] <= 0xBF) - ) - ) { - i += 3; - continue; - } - - if( (// planes 1-3 - bytes[i] == 0xF0 && - (0x90 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) && - (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) && - (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF) - ) || - (// planes 4-15 - (0xF1 <= bytes[i] && bytes[i] <= 0xF3) && - (0x80 <= bytes[i + 1] && bytes[i + 1] <= 0xBF) && - (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) && - (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF) - ) || - (// plane 16 - bytes[i] == 0xF4 && - (0x80 <= bytes[i + 1] && bytes[i + 1] <= 0x8F) && - (0x80 <= bytes[i + 2] && bytes[i + 2] <= 0xBF) && - (0x80 <= bytes[i + 3] && bytes[i + 3] <= 0xBF) - ) - ) { - i += 4; - continue; - } - - return false; - } - - return true; -} diff --git a/node_modules/is-utf8/package.json b/node_modules/is-utf8/package.json deleted file mode 100644 index dab1234..0000000 --- a/node_modules/is-utf8/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "is-utf8", - "version": "0.2.1", - "description": "Detect if a buffer is utf8 encoded.", - "main": "is-utf8.js", - "scripts": { - "test": "node test.js" - }, - "repository": "https://github.com/wayfind/is-utf8.git", - "keywords": [ - "utf8", - "charset" - ], - "files": [ - "is-utf8.js" - ], - "author": "wayfind", - "license": "MIT" -} diff --git a/node_modules/json2csv/.eslintrc b/node_modules/json2csv/.eslintrc deleted file mode 100644 index da0a550..0000000 --- a/node_modules/json2csv/.eslintrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "env": { - "node": true, - "es6": true - }, - "parserOptions": { - "ecmaVersion": 8 - }, - "extends": "eslint:recommended" -} diff --git a/node_modules/json2csv/.gitattributes b/node_modules/json2csv/.gitattributes deleted file mode 100644 index 9834512..0000000 --- a/node_modules/json2csv/.gitattributes +++ /dev/null @@ -1,3 +0,0 @@ -* text=auto -test/fixtures/csv/eol.csv text eol=crlf -test/fixtures/csv/escapeEOL.csv text eol=crlf diff --git a/node_modules/json2csv/CHANGELOG.md b/node_modules/json2csv/CHANGELOG.md deleted file mode 100644 index 5c22efa..0000000 --- a/node_modules/json2csv/CHANGELOG.md +++ /dev/null @@ -1,614 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. - -### [5.0.7](https://github.com/zemirco/json2csv/compare/v5.0.6...v5.0.7) (2022-02-23) - - -### Bug Fixes - -* unwind transform issue with nested arrays ([#549](https://github.com/zemirco/json2csv/issues/549)) ([485ea77](https://github.com/zemirco/json2csv/commit/485ea77886f1e09d768ed1cce0af6faeb06707cf)) - -### [5.0.6](https://github.com/zemirco/json2csv/compare/v5.0.5...v5.0.6) (2021-02-03) - - -### Bug Fixes - -* Escape quotes excel ([#512](https://github.com/zemirco/json2csv/issues/512)) ([ab3bf8a](https://github.com/zemirco/json2csv/commit/ab3bf8ad3ce64cff7d6149e1b70f92b71bebf6c7)) - -### [5.0.5](https://github.com/zemirco/json2csv/compare/v5.0.4...v5.0.5) (2020-11-16) - - -### Bug Fixes - -* don't mutate original object in unset ([#499](https://github.com/zemirco/json2csv/issues/499)) ([6e4ea5e](https://github.com/zemirco/json2csv/commit/6e4ea5ebdc263006ca6ff45879fbb7e0bd65bef2)) - -### [5.0.4](https://github.com/zemirco/json2csv/compare/v5.0.3...v5.0.4) (2020-11-10) - - -### Bug Fixes - -* Fix issue with unwind and empty arrays creating an extra column ([#496](https://github.com/zemirco/json2csv/issues/496)) ([0b331fc](https://github.com/zemirco/json2csv/commit/0b331fc3ad345f8062abe60f64cb3b43dad30fb0)) - -### [5.0.3](https://github.com/zemirco/json2csv/compare/v5.0.2...v5.0.3) (2020-09-24) - - -### Bug Fixes - -* audit dependencies fix ([d6d0fc7](https://github.com/zemirco/json2csv/commit/d6d0fc78128e01e021414aaf52a65cbcd09a1225)) -* update commander dep ([322e568](https://github.com/zemirco/json2csv/commit/322e568793ec4a64f43ec2ac82c9886177bcc4ed)) - -### [5.0.2](https://github.com/zemirco/json2csv/compare/v5.0.1...v5.0.2) (2020-09-24) - - -### Bug Fixes - -* **cli:** fix relative paths issue in CLI when not streaming ([#488](https://github.com/zemirco/json2csv/issues/488)) ([06079e8](https://github.com/zemirco/json2csv/commit/06079e840128030eacfecde66da11295eb162234)) - -### [5.0.1](https://github.com/zemirco/json2csv/compare/v5.0.0...v5.0.1) (2020-04-28) - - -### Bug Fixes - -* wrong call to processValue ([#454](https://github.com/zemirco/json2csv/issues/454)) ([66abd45](https://github.com/zemirco/json2csv/commit/66abd45)) - -## [5.0.0](https://github.com/zemirco/json2csv/compare/v4.5.2...v5.0.0) (2020-03-15) - - -### ⚠ BREAKING CHANGES - -* Node 8 and 9 no longer supported, use Node 10 or greater. It might still work, but it has reached End-Of-Life. -* module no longer takes `unwind`, `unwindBlank`, `flatten` or the `flattenSeparator` options, instead see the new `transforms` option. CLI options are unchanged from the callers side, but use the built in transforms under the hood. - -* Add support for transforms - -* Add documentation about transforms -* remove extra commonjs build, use starting point in package.json `main` field. -* Renamed `doubleQuote` to `escapedQuote` -* remove `stringify` option -* `--fields-config` option has been removed, use the new `--config` option for all configuration, not just fields. -* Drop node 6 and 7, and add node 11 and 12 - -### Bug Fixes - -* Always error asynchronously from parseAsync method ([#412](https://github.com/zemirco/json2csv/issues/412)) ([16cc044](https://github.com/zemirco/json2csv/commit/16cc044)) -* audit deps ([15992cf](https://github.com/zemirco/json2csv/commit/15992cf)) -* drop Node 8 and 9 ([7295465](https://github.com/zemirco/json2csv/commit/7295465)) -* Make some CLI options mandatory ([#433](https://github.com/zemirco/json2csv/issues/433)) ([bd51527](https://github.com/zemirco/json2csv/commit/bd51527)) -* Remove CommonJS build ([#422](https://github.com/zemirco/json2csv/issues/422)) ([5ce0089](https://github.com/zemirco/json2csv/commit/5ce0089)) -* Remove stringify option ([#419](https://github.com/zemirco/json2csv/issues/419)) ([39f303d](https://github.com/zemirco/json2csv/commit/39f303d)) -* Rename doubleQuote to escapedQuote ([#418](https://github.com/zemirco/json2csv/issues/418)) ([f99408c](https://github.com/zemirco/json2csv/commit/f99408c)) -* update CI node versions ([#413](https://github.com/zemirco/json2csv/issues/413)) ([6fd6c09](https://github.com/zemirco/json2csv/commit/6fd6c09)) -* update commander cli dep ([74aa40a](https://github.com/zemirco/json2csv/commit/74aa40a)) -* update commander dep ([272675b](https://github.com/zemirco/json2csv/commit/272675b)) -* **deps:** audit dependencies ([bf9877a](https://github.com/zemirco/json2csv/commit/bf9877a)) -* **deps:** update commander ([3f099f2](https://github.com/zemirco/json2csv/commit/3f099f2)) -* **security:** fix audit vulnerabilities ([b57715b](https://github.com/zemirco/json2csv/commit/b57715b)) - - -### Features - -* Add support for flattening arrays and change transforms arguments to an object. ([#432](https://github.com/zemirco/json2csv/issues/432)) ([916e448](https://github.com/zemirco/json2csv/commit/916e448)) -* Add support for transforms ([#431](https://github.com/zemirco/json2csv/issues/431)) ([f1d04d0](https://github.com/zemirco/json2csv/commit/f1d04d0)) -* Improve async promise to optionally not return ([#421](https://github.com/zemirco/json2csv/issues/421)) ([3e296f6](https://github.com/zemirco/json2csv/commit/3e296f6)) -* Improves the unwind transform so it unwinds all unwindable fields if … ([#434](https://github.com/zemirco/json2csv/issues/434)) ([ec1f301](https://github.com/zemirco/json2csv/commit/ec1f301)) -* replace fields config by a global config ([#338](https://github.com/zemirco/json2csv/issues/338)) ([d6c1c5f](https://github.com/zemirco/json2csv/commit/d6c1c5f)) - -## [4.5.2](https://github.com/zemirco/json2csv/compare/v4.5.1...v4.5.2) (2019-07-05) - - -### Bug Fixes - -* Improve the inference of the header name when using function as value ([#395](https://github.com/zemirco/json2csv/issues/395)) ([590d19a](https://github.com/zemirco/json2csv/commit/590d19a)) - - - - -## [4.4.0](https://github.com/zemirco/json2csv/compare/v4.3.5...v4.4.0) (2019-03-25) - - -### Features - -* Performance improvements and new async api ([#360](https://github.com/zemirco/json2csv/issues/360)) ([d59dea1](https://github.com/zemirco/json2csv/commit/d59dea1)) - - - -## [4.3.5](https://github.com/zemirco/json2csv/compare/v4.3.4...v4.3.5) (2019-02-22) - - -### Bug Fixes - -* audit deps ([3182707](https://github.com/zemirco/json2csv/commit/3182707)) -* unwind of nested fields ([#357](https://github.com/zemirco/json2csv/issues/357)) ([2d69281](https://github.com/zemirco/json2csv/commit/2d69281)) - - - - -## [4.3.4](https://github.com/zemirco/json2csv/compare/v4.3.3...v4.3.4) (2019-02-11) - - -### Bug Fixes - -* issue with fields.value function not receiving correct fields ([#353](https://github.com/zemirco/json2csv/issues/353)) ([851c02f](https://github.com/zemirco/json2csv/commit/851c02f)) - - - - -## [4.3.3](https://github.com/zemirco/json2csv/compare/v4.3.2...v4.3.3) (2019-01-11) - - -### Bug Fixes - -* audit dep fix ([1ef4bcd](https://github.com/zemirco/json2csv/commit/1ef4bcd)) -* Remove invalid reference to flat ([#347](https://github.com/zemirco/json2csv/issues/347)) ([130ef7d](https://github.com/zemirco/json2csv/commit/130ef7d)) -* Remove preferGlobal from package.json ([#346](https://github.com/zemirco/json2csv/issues/346)) ([2b6ad3a](https://github.com/zemirco/json2csv/commit/2b6ad3a)) - - - - -## [4.3.2](https://github.com/zemirco/json2csv/compare/v4.3.1...v4.3.2) (2018-12-08) - - -### Bug Fixes - -* Remove lodash.clonedeep dependency ([#339](https://github.com/zemirco/json2csv/issues/339)) ([d28955a](https://github.com/zemirco/json2csv/commit/d28955a)), closes [#333](https://github.com/zemirco/json2csv/issues/333) - - - - -## [4.3.1](https://github.com/zemirco/json2csv/compare/v4.3.0...v4.3.1) (2018-11-17) - - -### Bug Fixes - -* Return correct exit code on error ([#337](https://github.com/zemirco/json2csv/issues/337)) ([a793de5](https://github.com/zemirco/json2csv/commit/a793de5)) - - - - -# [4.3.0](https://github.com/zemirco/json2csv/compare/v4.2.1...v4.3.0) (2018-11-05) - - -### Bug Fixes - -* Optimize performance around the usage of fields ([#328](https://github.com/zemirco/json2csv/issues/328)) ([d9e4463](https://github.com/zemirco/json2csv/commit/d9e4463)) -* Remove wrong submodule ([#326](https://github.com/zemirco/json2csv/issues/326)) ([6486bb0](https://github.com/zemirco/json2csv/commit/6486bb0)) - - -### Features - -* Add support for objectMode in the stream API ([#325](https://github.com/zemirco/json2csv/issues/325)) ([8f0ae55](https://github.com/zemirco/json2csv/commit/8f0ae55)) - - - - -## [4.2.1](https://github.com/zemirco/json2csv/compare/v4.2.0...v4.2.1) (2018-08-06) - - -### Bug Fixes - -* bug that modifies opts after parsing an object/stream ([#318](https://github.com/zemirco/json2csv/issues/318)) ([f0a4830](https://github.com/zemirco/json2csv/commit/f0a4830)) -* Clean up the flattening separator feature ([#315](https://github.com/zemirco/json2csv/issues/315)) ([ee3d181](https://github.com/zemirco/json2csv/commit/ee3d181)) - - - - -# [4.2.0](https://github.com/zemirco/json2csv/compare/v4.1.6...v4.2.0) (2018-07-31) - - -### Features - -* Added flattenSeparator option ([#314](https://github.com/zemirco/json2csv/issues/314)) ([5c5de9f](https://github.com/zemirco/json2csv/commit/5c5de9f)) - - - - -## [4.1.6](https://github.com/zemirco/json2csv/compare/v4.1.5...v4.1.6) (2018-07-12) - - -### Bug Fixes - -* Update dependencies and remove cli-table2 dependency ([#312](https://github.com/zemirco/json2csv/issues/312)) ([5981ba3](https://github.com/zemirco/json2csv/commit/5981ba3)) - - - - -## [4.1.5](https://github.com/zemirco/json2csv/compare/v4.1.4...v4.1.5) (2018-06-26) - - -### Bug Fixes - -* Process stdin as a stream ([#308](https://github.com/zemirco/json2csv/issues/308)) ([2b186b6](https://github.com/zemirco/json2csv/commit/2b186b6)) - - - - -## [4.1.4](https://github.com/zemirco/json2csv/compare/v4.1.3...v4.1.4) (2018-06-23) - - -### Bug Fixes - -* don't escape tabs ([#305](https://github.com/zemirco/json2csv/issues/305)) ([a36c8e3](https://github.com/zemirco/json2csv/commit/a36c8e3)) - - - - -## [4.1.3](https://github.com/zemirco/json2csv/compare/v4.1.2...v4.1.3) (2018-05-23) - - -### Bug Fixes - -* Escape custom quotes correctly ([#301](https://github.com/zemirco/json2csv/issues/301)) ([7d57208](https://github.com/zemirco/json2csv/commit/7d57208)) - - - - -## [4.1.2](https://github.com/zemirco/json2csv/compare/v4.1.1...v4.1.2) (2018-04-16) - - -### Bug Fixes - -* **tests:** Skip bogus pretty print tests only in old node versions ([#290](https://github.com/zemirco/json2csv/issues/290)) ([0f3b885](https://github.com/zemirco/json2csv/commit/0f3b885)) - - - - -## [4.1.1](https://github.com/zemirco/json2csv/compare/v4.1.0...v4.1.1) (2018-04-16) - - -### Bug Fixes - -* readme CLI's info ([#289](https://github.com/zemirco/json2csv/issues/289)) ([9fe65b3](https://github.com/zemirco/json2csv/commit/9fe65b3)) -* Add tests and docs to unwind-blank feature ([#287](https://github.com/zemirco/json2csv/issues/287)) ([e3d4a05](https://github.com/zemirco/json2csv/commit/e3d4a05)) -* **perf:** Improve unwind performance and maintainability ([#288](https://github.com/zemirco/json2csv/issues/288)) ([80e496d](https://github.com/zemirco/json2csv/commit/80e496d)) - - - - -## [4.1.0](https://github.com/zemirco/json2csv/compare/v4.0.4...v4.1.0) (2018-04-16) - - -### Bug Fixes - -* Avoid redundant deep cloning when unwinding. ([#286](https://github.com/zemirco/json2csv/issues/286)) ([95a6ca9](https://github.com/zemirco/json2csv/commit/95a6ca9)) - - -### Features - -* Add ability to unwind by blanking out instead of repeating data ([#285](https://github.com/zemirco/json2csv/issues/285)) ([61d9808](https://github.com/zemirco/json2csv/commit/61d9808)) - - - - -## [4.0.4](https://github.com/zemirco/json2csv/compare/v4.0.3...v4.0.4) (2018-04-10) - - -### Bug Fixes - -* comment out failing tests ([#283](https://github.com/zemirco/json2csv/issues/283)) ([5b25eaa](https://github.com/zemirco/json2csv/commit/5b25eaa)) -* Support empty array with opts.fields ([#281](https://github.com/zemirco/json2csv/issues/281)) ([eccca89](https://github.com/zemirco/json2csv/commit/eccca89)) -* **tests:** emit correct lines from transform ([#282](https://github.com/zemirco/json2csv/issues/282)) ([2322ddf](https://github.com/zemirco/json2csv/commit/2322ddf)) - - - - -## [4.0.3](https://github.com/zemirco/json2csv/compare/v4.0.2...v4.0.3) (2018-04-09) - - -### Bug Fixes - -* error when a field is null and flatten is used ([#274](https://github.com/zemirco/json2csv/issues/274)) ([1349a94](https://github.com/zemirco/json2csv/commit/1349a94)) -* throw error for empty dataset only if fields not specified ([0d8534e](https://github.com/zemirco/json2csv/commit/0d8534e)) - - - - -## [4.0.2](https://github.com/zemirco/json2csv/compare/v4.0.1...v4.0.2) (2018-03-09) - - -### Bug Fixes - -* **parser:** RangeError ([#271](https://github.com/zemirco/json2csv/issues/271)) ([c8d5a87](https://github.com/zemirco/json2csv/commit/c8d5a87)) - - - - -## [4.0.1](https://github.com/zemirco/json2csv/compare/v4.0.0...v4.0.1) (2018-03-05) - - -### Bug Fixes - -* double quote escaping before new line ([#268](https://github.com/zemirco/json2csv/issues/268)) ([fa991cf](https://github.com/zemirco/json2csv/commit/fa991cf)) - - - - -# [4.0.0](https://github.com/zemirco/json2csv/compare/v4.0.0-alpha.2...v4.0.0) (2018-02-27) - - -### Bug Fixes - -* Replace webpack with rollup packaging ([#266](https://github.com/zemirco/json2csv/issues/266)) ([a9f8020](https://github.com/zemirco/json2csv/commit/a9f8020)) - - -### Features - -* Pass transform options through ([#262](https://github.com/zemirco/json2csv/issues/262)) ([650913f](https://github.com/zemirco/json2csv/commit/650913f)) - - - - -# [4.0.0-alpha.2](https://github.com/zemirco/json2csv/compare/v4.0.0-alpha.1...v4.0.0-alpha.2) (2018-02-25) - - -### Bug Fixes - -* flatten issue with toJSON ([#259](https://github.com/zemirco/json2csv/issues/259)) ([7006d2b](https://github.com/zemirco/json2csv/commit/7006d2b)) - - - - -# [4.0.0-alpha.1](https://github.com/zemirco/json2csv/compare/v4.0.0-alpha.0...v4.0.0-alpha.1) (2018-02-21) - - -### Bug Fixes - -* Remove TypeScript definition ([#256](https://github.com/zemirco/json2csv/issues/256)) ([4f09694](https://github.com/zemirco/json2csv/commit/4f09694)) - - - - -# [4.0.0-alpha.0](https://github.com/zemirco/json2csv/compare/v3.11.5...v4.0.0-alpha.0) (2018-02-21) - - -### Bug Fixes - -* Add CLI tests ([#247](https://github.com/zemirco/json2csv/issues/247)) ([bb8126f](https://github.com/zemirco/json2csv/commit/bb8126f)) -* Add excel string to cli and standardize ([#231](https://github.com/zemirco/json2csv/issues/231)) ([421baad](https://github.com/zemirco/json2csv/commit/421baad)) -* Allow passing ldjson input files ([#220](https://github.com/zemirco/json2csv/issues/220)) ([9c861ed](https://github.com/zemirco/json2csv/commit/9c861ed)) -* Avoid throwing an error on elements that can't be stringified (like functions) ([#223](https://github.com/zemirco/json2csv/issues/223)) ([679c687](https://github.com/zemirco/json2csv/commit/679c687)) -* backslash logic ([#222](https://github.com/zemirco/json2csv/issues/222)) ([29e9445](https://github.com/zemirco/json2csv/commit/29e9445)) -* broken stdin input ([#241](https://github.com/zemirco/json2csv/issues/241)) ([6cb407c](https://github.com/zemirco/json2csv/commit/6cb407c)) -* Combine EOL and newLine parameters ([#219](https://github.com/zemirco/json2csv/issues/219)) ([4668a8b](https://github.com/zemirco/json2csv/commit/4668a8b)) -* header flag ([#221](https://github.com/zemirco/json2csv/issues/221)) ([7f7338f](https://github.com/zemirco/json2csv/commit/7f7338f)) -* outdated jsdoc ([#243](https://github.com/zemirco/json2csv/issues/243)) ([efe9888](https://github.com/zemirco/json2csv/commit/efe9888)) -* pretty print issues ([#242](https://github.com/zemirco/json2csv/issues/242)) ([3bd9655](https://github.com/zemirco/json2csv/commit/3bd9655)) -* Process header cells as any other cell ([#244](https://github.com/zemirco/json2csv/issues/244)) ([1fcde13](https://github.com/zemirco/json2csv/commit/1fcde13)) -* Remove callback support ([2096ade](https://github.com/zemirco/json2csv/commit/2096ade)) -* Remove fieldNames ([#232](https://github.com/zemirco/json2csv/issues/232)) ([6cc74b2](https://github.com/zemirco/json2csv/commit/6cc74b2)) -* Remove path-is-absolute dependency ([#225](https://github.com/zemirco/json2csv/issues/225)) ([f71a3df](https://github.com/zemirco/json2csv/commit/f71a3df)) -* Rename hasCSVColumnTitle to noHeader ([#216](https://github.com/zemirco/json2csv/issues/216)) ([f053c8b](https://github.com/zemirco/json2csv/commit/f053c8b)) -* Rename ld-json to ndjson ([#240](https://github.com/zemirco/json2csv/issues/240)) ([24a7893](https://github.com/zemirco/json2csv/commit/24a7893)) -* Rename unwindPath to unwind ([#230](https://github.com/zemirco/json2csv/issues/230)) ([7143bc7](https://github.com/zemirco/json2csv/commit/7143bc7)) -* Streamify pretty print ([#248](https://github.com/zemirco/json2csv/issues/248)) ([fb7ad53](https://github.com/zemirco/json2csv/commit/fb7ad53)) - - -### Chores - -* Refactor the entire library to ES6 ([#233](https://github.com/zemirco/json2csv/issues/233)) ([dce4d33](https://github.com/zemirco/json2csv/commit/dce4d33)) - - -### Features - -* add doubleQuote to cli, rename other options to line up with the cli ([5e402dc](https://github.com/zemirco/json2csv/commit/5e402dc)) -* Add fields config option to CLI ([#245](https://github.com/zemirco/json2csv/issues/245)) ([74ef666](https://github.com/zemirco/json2csv/commit/74ef666)) -* Add streaming API ([#235](https://github.com/zemirco/json2csv/issues/235)) ([01ca93e](https://github.com/zemirco/json2csv/commit/01ca93e)) -* Split tests in multiple files ([#246](https://github.com/zemirco/json2csv/issues/246)) ([839de77](https://github.com/zemirco/json2csv/commit/839de77)) - - -### BREAKING CHANGES - -* Replaces field-list with field-config -* Remove `preserveNewLinesInValues` option, preserve by default - -* Refactor the entire library to ES6 - -* Fix PR issues - -* Add strict mode for node 4.X -* Remove fieldNames - -* Increase coverage back to 100% -* callback is no longer available, just return the csv from the json2csv. - -- updated tests -- updated readme -* * Rename unwindPath to unwind - -* Fix field-list in CLI -* newLine removed, eol kept. -* Rename del to delimiter to match the cli flag -* Rename quotes to quote to match the cli flag - -* Remove unused double quotes comment - -* Fix noHeader in CLI - -* Revert "Remove unused double quotes comment" - -This reverts commit 250d3e6ddf3062cbdc1e0174493a37fa21197d8e. - -* Add doubleQuote to CLI -* Rename hasCSVColumnTitle to noHeader to keep in line with the CLI - - - - -## [3.11.5](https://github.com/zemirco/json2csv/compare/v3.11.4...v3.11.5) (2017-10-23) - - -### Bug Fixes - -* backslash value not escaped properly ([#202](https://github.com/zemirco/json2csv/issues/202)) ([#204](https://github.com/zemirco/json2csv/issues/204)) ([2cf50f1](https://github.com/zemirco/json2csv/commit/2cf50f1)) - - - - -## [3.11.4](https://github.com/zemirco/json2csv/compare/v3.11.3...v3.11.4) (2017-10-09) - - -### Bug Fixes - -* **security:** Update debug to 3.1.0 for security reasons ([9c7cfaa](https://github.com/zemirco/json2csv/commit/9c7cfaa)) - - - - -## [3.11.3](https://github.com/zemirco/json2csv/compare/v3.11.2...v3.11.3) (2017-10-09) - - - - -## [3.11.2](https://github.com/zemirco/json2csv/compare/v3.11.1...v3.11.2) (2017-09-13) - - -### Bug Fixes - -* Remove extra space character in mode withBOM: true [#190](https://github.com/zemirco/json2csv/issues/190) ([#194](https://github.com/zemirco/json2csv/issues/194)) ([e8b6f6b](https://github.com/zemirco/json2csv/commit/e8b6f6b)) - - - - -## [3.11.1](https://github.com/zemirco/json2csv/compare/v3.11.0...v3.11.1) (2017-08-11) - - -### Bug Fixes - -* **cli:** pass BOM cli option to function ([#193](https://github.com/zemirco/json2csv/issues/193)) ([70cfdfe](https://github.com/zemirco/json2csv/commit/70cfdfe)) - - - - -# [3.11.0](https://github.com/zemirco/json2csv/compare/v3.10.0...v3.11.0) (2017-08-02) - - -### Bug Fixes - -* Handle dates without double-escaping ([#189](https://github.com/zemirco/json2csv/issues/189)) ([ff514ba](https://github.com/zemirco/json2csv/commit/ff514ba)) -* unwind parameter in command line mode ([#191](https://github.com/zemirco/json2csv/issues/191)) ([e706c25](https://github.com/zemirco/json2csv/commit/e706c25)) - - -### Features - -* Added flag to signal if resulting function value should be stringified or not ([#192](https://github.com/zemirco/json2csv/issues/192)) ([aaa6b05](https://github.com/zemirco/json2csv/commit/aaa6b05)) - - - - -# [3.10.0](https://github.com/zemirco/json2csv/compare/v3.9.1...v3.10.0) (2017-07-24) - - -### Features - -* Add BOM character option ([#187](https://github.com/zemirco/json2csv/issues/187)) ([0c799ca](https://github.com/zemirco/json2csv/commit/0c799ca)) - - - - -## [3.9.1](https://github.com/zemirco/json2csv/compare/v3.9.0...v3.9.1) (2017-07-14) - - - - -# [3.9.0](https://github.com/zemirco/json2csv/compare/v3.8.0...v3.9.0) (2017-07-11) - - -### Features - -* Parameter unwindPath for multiple fields ([#174](https://github.com/zemirco/json2csv/issues/174)) ([#183](https://github.com/zemirco/json2csv/issues/183)) ([fbcaa10](https://github.com/zemirco/json2csv/commit/fbcaa10)) - - - - -# [3.8.0](https://github.com/zemirco/json2csv/compare/v3.7.3...v3.8.0) (2017-07-03) - - -### Bug Fixes - -* **docs:** Add a coma in the ReadMe example ([#181](https://github.com/zemirco/json2csv/issues/181)) ([abeb820](https://github.com/zemirco/json2csv/commit/abeb820)) - - -### Features - -* Preserve new lines in cells with option `preserveNewLinesInValues` ([#91](https://github.com/zemirco/json2csv/issues/91)) ([#171](https://github.com/zemirco/json2csv/issues/171)) ([187b701](https://github.com/zemirco/json2csv/commit/187b701)) - - - - -## [3.7.3](https://github.com/zemirco/json2csv/compare/v3.7.1...v3.7.3) (2016-12-08) - - -### Bug Fixes - -* **jsdoc:** JSDoc Editting ([#155](https://github.com/zemirco/json2csv/issues/155)) ([76075d6](https://github.com/zemirco/json2csv/commit/76075d6)) -* **ts:** Fix type definition ([#154](https://github.com/zemirco/json2csv/issues/154)) ([fae53a1](https://github.com/zemirco/json2csv/commit/fae53a1)) - - - -## 3.6.3 / 2016-08-17 - - * Fix crashing on EPIPE error [#134](https://github.com/zemirco/json2csv/pull/134) - * Add UMD build for browser usage [#136](https://github.com/zemirco/json2csv/pull/136) - * Add docs during prepublish - -## 3.6.2 / 2016-07-22 - - * Remove debugger, see [#132](https://github.com/zemirco/json2csv/pull/132) - * Fix changelog typo - -## 3.6.1 / 2016-07-12 - - * Fix auto-fields returning all available fields, even if not available on the first object, see #104 - -## 3.6.0 / 2016-07-07 - - * Make callback optional - * Make callback use `process.nextTick`, so it's not sync - - Thanks @STRML! - -## 3.5.1 / 2016-06-29 - - * Revert [#114](https://github.com/zemirco/json2csv/pull/114), due to more issues - * Update npmignore - * Add a changelog - * Updatee readme - -## 3.5.0 / 2016-06-21 - - * `includeEmptyRows` options added, see [#122](https://github.com/zemirco/json2csv/pull/122) (Thanks @glutentag) - * `-a` or `--include-empty-rows` added for the CLI. - -## 2.2.1 / 2013-11-10 - - * mainly for development e.g. adding code format, update readme.. - -## 2.2.0 / 2013-11-08 - - * not create CSV column title by passing hasCSVColumnTitle: false, into params. - * if field is not exist in object then the field value in CSV will be empty. - * fix data in object format - {...} - -## 2.1.0 / 2013-06-11 - - * quote titles in the first row - -## 2.0.0 / 2013-03-04 - - * err in callback function - -## 1.3.1 / 2013-02-20 - - * fix stdin encoding - -## 1.3.0 / 2013-02-20 - - * support reading from stdin [#9](https://github.com/zeMirco/json2csv/pull/9) - -## 1.2.0 / 2013-02-20 - - * support custom field names [#8](https://github.com/zeMirco/json2csv/pull/8) - -## 1.1.0 / 2013-01-19 - - * add optional custom delimiter diff --git a/node_modules/json2csv/LICENSE.md b/node_modules/json2csv/LICENSE.md deleted file mode 100644 index 0054f10..0000000 --- a/node_modules/json2csv/LICENSE.md +++ /dev/null @@ -1,14 +0,0 @@ -Copyright (C) 2012 [Mirco Zeiss](mailto: mirco.zeiss@gmail.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and -to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/json2csv/README.md b/node_modules/json2csv/README.md deleted file mode 100644 index b6c55f4..0000000 --- a/node_modules/json2csv/README.md +++ /dev/null @@ -1,970 +0,0 @@ -# json2csv - -Converts json into csv with column titles and proper line endings. -Can be used as a module and from the command line. - -[![npm version][npm-badge]][npm-badge-url] -[![Build Status][travis-badge]][travis-badge-url] -[![Coverage Status][coveralls-badge]][coveralls-badge-url] - -See the [CHANGELOG] for details about the latest release. - -## Features - -- Fast and lightweight -- Scalable to infinitely large datasets (using stream processing) -- Support for standard JSON as well as NDJSON -- Advanced data selection (automatic field discovery, underscore-like selectors, custom data getters, default values for missing fields, transforms, etc.) -- Highly customizable (supportting custom quotation marks, delimiters, eol values, etc.) -- Automatic escaping (preserving new lines, quotes, etc. in them) -- Optional headers -- Unicode encoding support -- Pretty printing in table format to stdout - -## How to install - -You can install json2csv as a dependency using NPM. -Requires **Node v10** or higher. - -```sh -# Global so it can be called from anywhere -$ npm install -g json2csv -# or as a dependency of a project -$ npm install json2csv --save -``` - -Also, if you are loading json2csv directly to the browser you can pull it directly from the CDN. - -```html - -``` - -By default, the above script will get the latest release of json2csv. You can also specify a specific version: - -```html - -``` - -## Command Line Interface - -`json2csv` can be called from the command line if installed globally (using the `-g` flag). - -```bash -Usage: json2csv [options] - -Options: - -V, --version output the version number - -i, --input Path and name of the incoming json file. Defaults to stdin. - -o, --output Path and name of the resulting csv file. Defaults to stdout. - -c, --config Specify a file with a valid JSON configuration. - -n, --ndjson Treat the input as NewLine-Delimited JSON. - -s, --no-streaming Process the whole JSON array in memory instead of doing it line by line. - -f, --fields List of fields to process. Defaults to field auto-detection. - -v, --default-value Default value to use for missing fields. - -q, --quote Character(s) to use as quote mark. Defaults to '"'. - -Q, --escaped-quote Character(s) to use as a escaped quote. Defaults to a double `quote`, '""'. - -d, --delimiter Character(s) to use as delimiter. Defaults to ','. (default: ",") - -e, --eol Character(s) to use as End-of-Line for separating rows. Defaults to '\n'. (default: "\n") - -E, --excel-strings Wraps string data to force Excel to interpret it as string even if it contains a number. - -H, --no-header Disable the column name header. - -a, --include-empty-rows Includes empty rows in the resulting CSV output. - -b, --with-bom Includes BOM character at the beginning of the CSV. - -p, --pretty Print output as a pretty table. Use only when printing to console. - --unwind [paths] Creates multiple rows from a single JSON document similar to MongoDB unwind. - --unwind-blank When unwinding, blank out instead of repeating data. Defaults to false. (default: false) - --flatten-objects Flatten nested objects. Defaults to false. (default: false) - --flatten-arrays Flatten nested arrays. Defaults to false. (default: false) - --flatten-separator Flattened keys separator. Defaults to '.'. (default: ".") - -h, --help output usage information -``` - -If no input `-i` is specified the result is expected from to the console standard input. -If no output `-o` is specified the result is printed to the console standard output. -If no fields `-f` or config `-c` are passed the fields of the first element are used since json2csv CLI process the items one at a time. You can use the `--no-streaming` flag to load the entire JSON in memory and get all the headers. However, keep in mind that this is slower and requires much more memory. -Use `-p` to show the result as a table in the console. - -Any option passed through the config file `-c` will be overriden if a specific flag is passed as well. For example, the fields option of the config will be overriden if the fields flag `-f` is used. - -### CLI examples - -All examples use this example [input file](https://github.com/zemirco/json2csv/blob/master/test/fixtures/json/default.json). - -#### Input file and specify fields - -```sh -$ json2csv -i input.json -f carModel,price,color -carModel,price,color -"Audi",10000,"blue" -"BMW",15000,"red" -"Mercedes",20000,"yellow" -"Porsche",30000,"green" -``` - -#### Input file, specify fields and use pretty logging - -```sh -$ json2csv -i input.json -f carModel,price,color -p -``` - -![Screenshot](https://s3.amazonaws.com/zeMirco/github/json2csv/json2csv-pretty.png) - -#### Generating CSV containing only specific fields - -```sh -$ json2csv -i input.json -f carModel,price,color -o out.csv -$ cat out.csv -carModel,price,color -"Audi",10000,"blue" -"BMW",15000,"red" -"Mercedes",20000,"yellow" -"Porsche",30000,"green" -``` - -Same result will be obtained passing the fields config as a file. - -```sh -$ json2csv -i input.json -c fieldsConfig.json -o out.csv -``` - -where the file `fieldsConfig.json` contains - -```json -[ - "carModel", - "price", - "color" -] -``` - -#### Read input from stdin - -```sh -$ json2csv -f price -[{"price":1000},{"price":2000}] -``` - -Hit Enter and afterwards CTRL + D to end reading from stdin. The terminal should show - -``` -price -1000 -2000 -``` - -#### Appending to existing CSV - -Sometimes you want to add some additional rows with the same columns. -This is how you can do that. - -```sh -# Initial creation of csv with headings -$ json2csv -i test.json -f name,version > test.csv -# Append additional rows -$ json2csv -i test.json -f name,version --no-header >> test.csv -``` - -## Javascript module - -`json2csv` can also be use programatically from you javascript codebase. - -### Available Options - -The programatic APIs take a configuration object very equivalent to the CLI options. - -- `fields` - Array of Objects/Strings. Defaults to toplevel JSON attributes. See example below. -- `ndjson` - Only effective on the streaming API. Indicates that data coming through the stream is NDJSON. -- `transforms` - Array of transforms to be applied to each data item. A transform is simply a function that receives a data item and returns the transformed item. -- `defaultValue` - String, default value to use when missing data. Defaults to `` if not specified. (Overridden by `fields[].default`) -- `quote` - String, quote around cell values and column names. Defaults to `"` if not specified. -- `escapedQuote` - String, the value to replace escaped quotes in strings. Defaults to 2x`quotes` (for example `""`) if not specified. -- `delimiter` - String, delimiter of columns. Defaults to `,` if not specified. -- `eol` - String, overrides the default OS line ending (i.e. `\n` on Unix and `\r\n` on Windows). -- `excelStrings` - Boolean, converts string data into normalized Excel style data. -- `header` - Boolean, determines whether or not CSV file will contain a title column. Defaults to `true` if not specified. -- `includeEmptyRows` - Boolean, includes empty rows. Defaults to `false`. -- `withBOM` - Boolean, with BOM character. Defaults to `false`. - -### json2csv parser (Synchronous API) - -`json2csv` can also be used programatically as a synchronous converter using its `parse` method. -```js -const { Parser } = require('json2csv'); - -const fields = ['field1', 'field2', 'field3']; -const opts = { fields }; - -try { - const parser = new Parser(opts); - const csv = parser.parse(myData); - console.log(csv); -} catch (err) { - console.error(err); -} -``` - -you can also use the convenience method `parse` - -```js -const { parse } = require('json2csv'); - -const fields = ['field1', 'field2', 'field3']; -const opts = { fields }; - -try { - const csv = parse(myData, opts); - console.log(csv); -} catch (err) { - console.error(err); -} -``` - -Both of the methods above load the entire JSON in memory and do the whole processing in-memory while blocking Javascript event loop. For that reason is rarely a good reason to use it until your data is very small or your application doesn't do anything else. - -### json2csv async parser (Streaming API) - -The synchronous API has the downside of loading the entire JSON array in memory and blocking javascript's event loop while processing the data. This means that your server won't be able to process more request or your UI will become irresponsive while data is being processed. For those reasons, is rarely a good reason to use it unless your data is very small or your application doesn't do anything else. - -The async parser process the data as a non-blocking stream. This approach ensures a consistent memory footprint and avoid blocking javascript's event loop. Thus, it's better suited for large datasets or system with high concurrency. - -One very important difference between the asynchronous and the synchronous APIs is that using the asynchronous API json objects are processed one by one. In practice, this means that only the fields in the first object of the array are automatically detected and other fields are just ignored. To avoid this, it's advisable to ensure that all the objects contain exactly the same fields or provide the list of fields using the `fields` option. - -The async API uses takes a second options arguments that's directly passed to the underlying streams and accept the same options as the standard [Node.js streams](https://nodejs.org/api/stream.html#stream_new_stream_duplex_options). - -Instances of `AsyncParser` expose three objects: -* *input:* Which allows to push more data -* *processor:* A readable string representing the whole data processing. You can listen to all the standard events of Node.js streams. -* *transform:* The json2csv transform. See bellow for more details. - -```js -const { AsyncParser } = require('json2csv'); - -const fields = ['field1', 'field2', 'field3']; -const opts = { fields }; -const transformOpts = { highWaterMark: 8192 }; - -const asyncParser = new AsyncParser(opts, transformOpts); - -let csv = ''; -asyncParser.processor - .on('data', chunk => (csv += chunk.toString())) - .on('end', () => console.log(csv)) - .on('error', err => console.error(err)); - -// You can also listen for events on the conversion and see how the header or the lines are coming out. -asyncParser.transform - .on('header', header => console.log(header)) - .on('line', line => console.log(line)) - .on('error', err => console.log(err)); - -asyncParser.input.push(data); // This data might come from an HTTP request, etc. -asyncParser.input.push(null); // Sending `null` to a stream signal that no more data is expected and ends it. -``` - -`AsyncParser` also exposes some convenience methods: -* `fromInput` allows you to set the input stream. -* `throughTransform` allows you to add transforms to the stream. -* `toOutput` allows you to set the output stream. -* `promise` returns a promise that resolves when the stream ends or errors. Takes a boolean parameter to indicate if the resulting CSV should be kept in-memory and be resolved by the promise. - -```js -const { createReadStream, createWriteStream } = require('fs'); -const { AsyncParser } = require('json2csv'); - -const fields = ['field1', 'field2', 'field3']; -const opts = { fields }; -const transformOpts = { highWaterMark: 8192 }; - -// Using the promise API -const input = createReadStream(inputPath, { encoding: 'utf8' }); -const asyncParser = new JSON2CSVAsyncParser(opts, transformOpts); -const parsingProcessor = asyncParser.fromInput(input); - -parsingProcessor.promise() - .then(csv => console.log(csv)) - .catch(err => console.error(err)); - -// Using the promise API just to know when the process finnish -// but not actually load the CSV in memory -const input = createReadStream(inputPath, { encoding: 'utf8' }); -const output = createWriteStream(outputPath, { encoding: 'utf8' }); -const asyncParser = new JSON2CSVAsyncParser(opts, transformOpts); -const parsingProcessor = asyncParser.fromInput(input).toOutput(output); - -parsingProcessor.promise(false).catch(err => console.error(err)); -``` - -you can also use the convenience method `parseAsync` which accept both JSON arrays/objects and readable streams and returns a promise. - -```js -const { parseAsync } = require('json2csv'); - -const fields = ['field1', 'field2', 'field3']; -const opts = { fields }; - -parseAsync(myData, opts) - .then(csv => console.log(csv)) - .catch(err => console.error(err)); -``` - -### json2csv transform (Streaming API) - -json2csv also exposes the raw stream transform so you can pipe your json content into it. This is the same Transform that `AsyncParser` uses under the hood. - -```js -const { createReadStream, createWriteStream } = require('fs'); -const { Transform } = require('json2csv'); - -const fields = ['field1', 'field2', 'field3']; -const opts = { fields }; -const transformOpts = { highWaterMark: 16384, encoding: 'utf-8' }; - -const input = createReadStream(inputPath, { encoding: 'utf8' }); -const output = createWriteStream(outputPath, { encoding: 'utf8' }); -const json2csv = new Transform(opts, transformOpts); - -const processor = input.pipe(json2csv).pipe(output); - -// You can also listen for events on the conversion and see how the header or the lines are coming out. -json2csv - .on('header', header => console.log(header)) - .on('line', line => console.log(line)) - .on('error', err => console.log(err)); -``` - -The stream API can also work on object mode. This is useful when you have an input stream in object mode or if you are getting JSON objects one by one and want to convert them to CSV as they come. - -```js -const { Transform } = require("json2csv"); -const { Readable } = require('stream'); - -const input = new Readable({ objectMode: true }); -input._read = () => {}; -// myObjectEmitter is just a fake example representing anything that emit objects. -myObjectEmitter.on('object', obj => input.push(obj)); -// Pushing a null close the stream -myObjectEmitter.end(() => input.push(null)); - -const output = process.stdout; - -const opts = {}; -const transformOpts = { objectMode: true }; - -const json2csv = new Transform(opts, transformOpts); -const processor = input.pipe(json2csv).pipe(output); -``` - -### Data transforms - -json2csv supports data transforms. A transform is simply a function that receives a data item and returns the transformed item. - - -#### Custom transforms - -```js -function (item) { - // apply tranformations or create new object - return transformedItem; -} -``` -or using ES6 -```js -(item) => { - // apply tranformations or create new object - return transformedItem; -} -``` - -For example, let's add a line counter to our CSV, capitalize the car field and change the price to be in Ks (1000s). -```js -let counter = 1; -(item) => ({ counter: counter++, ...item, car: item.car.toUpperCase(), price: item.price / 1000 }); -``` - -#### Built-in transforms - -There is a number of built-in transform provider by the library. - -```js -const { transforms: { unwind, flatten } } = require('json2csv'); -``` - -##### Unwind - -The unwind transform deconstructs an array field from the input item to output a row for each element. Is's similar to MongoDB's $unwind aggregation. - -The transform needs to be instantiated and takes an options object as arguments containing: -- `paths` - Array of String, list the paths to the fields to be unwound. It's mandatory and should not be empty. -- `blankOut` - Boolean, unwind using blank values instead of repeating data. Defaults to `false`. - -```js -// Default -unwind({ paths: ['fieldToUnwind'] }); - -// Blanking out repeated data -unwind({ paths: ['fieldToUnwind'], blankOut: true }); -``` - -##### Flatten -Flatten nested javascript objects into a single level object. - -The transform needs to be instantiated and takes an options object as arguments containing: -- `objects` - Boolean, whether to flatten JSON objects or not. Defaults to `true`. -- `arrays`- Boolean, whether to flatten Arrays or not. Defaults to `false`. -- `separator` - String, separator to use between nested JSON keys when flattening a field. Defaults to `.`. - -```js -// Default -flatten(); - -// Custom separator '__' -flatten({ separator: '_' }); - -// Flatten only arrays -flatten({ objects: false, arrays: true }); -``` - -### Javascript module examples - -#### Example `fields` option -```js -{ - fields: [ - // Supports pathname -> pathvalue - 'simplepath', // equivalent to {value:'simplepath'} - 'path.to.value' // also equivalent to {value:'path.to.value'} - - // Supports label -> simple path - { - label: 'some label', // Optional, column will be labeled 'path.to.something' if not defined) - value: 'path.to.something', // data.path.to.something - default: 'NULL' // default if value is not found (Optional, overrides `defaultValue` for column) - }, - - // Supports label -> derived value - { - label: 'some label', // Optional, column will be labeled with the function name or empty if the function is anonymous - value: (row, field) => row[field.label].toLowerCase() ||field.default, - default: 'NULL' // default if value function returns null or undefined - }, - - // Supports label -> derived value - { - value: (row) => row.arrayField.join(',') - }, - - // Supports label -> derived value - { - value: (row) => `"${row.arrayField.join(',')}"` - }, - ] -} -``` - -#### Example 1 - -```js -const { Parser } = require('json2csv'); - -const myCars = [ - { - "car": "Audi", - "price": 40000, - "color": "blue" - }, { - "car": "BMW", - "price": 35000, - "color": "black" - }, { - "car": "Porsche", - "price": 60000, - "color": "green" - } -]; - -const json2csvParser = new Parser(); -const csv = json2csvParser.parse(myCars); - -console.log(csv); -``` - -will output to console - -``` -"car", "price", "color" -"Audi", 40000, "blue" -"BMW", 35000, "black" -"Porsche", 60000, "green" -``` - -#### Example 2 - -You can choose which fields to include in the CSV. - -```js -const { Parser } = require('json2csv'); -const fields = ['car', 'color']; - -const json2csvParser = new Parser({ fields }); -const csv = json2csvParser.parse(myCars); - -console.log(csv); -``` - -will output to console - -``` -"car", "color" -"Audi", "blue" -"BMW", "black" -"Porsche", "green" -``` - -#### Example 3 - -You can choose custom column names for the exported file. - -```js -const { Parser } = require('json2csv'); - -const fields = [{ - label: 'Car Name', - value: 'car' -},{ - label: 'Price USD', - value: 'price' -}]; - -const json2csvParser = new Parser({ fields }); -const csv = json2csvParser.parse(myCars); - -console.log(csv); -``` - -will output to console - -``` -"Car Name", "Price USD" -"Audi", 40000 -"BMW", 35000 -"Porsche", 60000 -``` - -#### Example 4 - -You can also specify nested properties using dot notation. - -```js -const { Parser } = require('json2csv'); - -const myCars = [ - { - "car": { "make": "Audi", "model": "A3" }, - "price": 40000, - "color": "blue" - }, { - "car": { "make": "BMW", "model": "F20" }, - "price": 35000, - "color": "black" - }, { - "car": { "make": "Porsche", "model": "9PA AF1" }, - "price": 60000, - "color": "green" - } -]; - -const fields = ['car.make', 'car.model', 'price', 'color']; - -const json2csvParser = new Parser({ fields }); -const csv = json2csvParser.parse(myCars); - -console.log(csv); -``` - -will output to console - -``` -"car.make", "car.model", "price", "color" -"Audi", "A3", 40000, "blue" -"BMW", "F20", 35000, "black" -"Porsche", "9PA AF1", 60000, "green" -``` - -#### Example 5 - -Use a custom delimiter to create tsv files using the delimiter option: - -```js -const { Parser } = require('json2csv'); - -const json2csvParser = new Parser({ delimiter: '\t' }); -const tsv = json2csvParser.parse(myCars); - -console.log(tsv); -``` - -will output to console - -``` -"car" "price" "color" -"Audi" 10000 "blue" -"BMW" 15000 "red" -"Mercedes" 20000 "yellow" -"Porsche" 30000 "green" -``` - -If no delimiter is specified, the default `,` is used. - -#### Example 6 - -You can choose custom quotation marks. - -```js -const { Parser } = require('json2csv'); - -const json2csvParser = new Parser({ quote: '' }); -const csv = json2csvParser.parse(myCars); - -console.log(csv); -``` - -will output to console - -``` -car, price, color -Audi, 40000, blue -BMW", 35000, black -Porsche", 60000, green -``` - -#### Example 7 - -You can unwind arrays similar to MongoDB's $unwind operation using the `unwind` transform. - -```js -const { Parser, transforms: { unwind } } = require('json2csv'); - -const myCars = [ - { - "carModel": "Audi", - "price": 0, - "colors": ["blue","green","yellow"] - }, { - "carModel": "BMW", - "price": 15000, - "colors": ["red","blue"] - }, { - "carModel": "Mercedes", - "price": 20000, - "colors": "yellow" - }, { - "carModel": "Porsche", - "price": 30000, - "colors": ["green","teal","aqua"] - } -]; - -const fields = ['carModel', 'price', 'colors']; -const transforms = [unwind({ paths: ['colors'] })]; - -const json2csvParser = new Parser({ fields, transforms }); -const csv = json2csvParser.parse(myCars); - -console.log(csv); -``` - -will output to console - -``` -"carModel","price","colors" -"Audi",0,"blue" -"Audi",0,"green" -"Audi",0,"yellow" -"BMW",15000,"red" -"BMW",15000,"blue" -"Mercedes",20000,"yellow" -"Porsche",30000,"green" -"Porsche",30000,"teal" -"Porsche",30000,"aqua" -``` - -#### Example 8 - -You can also unwind arrays multiple times or with nested objects. - -```js -const { Parser, transforms: { unwind } } = require('json2csv'); - -const myCars = [ - { - "carModel": "BMW", - "price": 15000, - "items": [ - { - "name": "airbag", - "color": "white" - }, { - "name": "dashboard", - "color": "black" - } - ] - }, { - "carModel": "Porsche", - "price": 30000, - "items": [ - { - "name": "airbag", - "items": [ - { - "position": "left", - "color": "white" - }, { - "position": "right", - "color": "gray" - } - ] - }, { - "name": "dashboard", - "items": [ - { - "position": "left", - "color": "gray" - }, { - "position": "right", - "color": "black" - } - ] - } - ] - } -]; - -const fields = ['carModel', 'price', 'items.name', 'items.color', 'items.items.position', 'items.items.color']; -const transforms = [unwind({ paths: ['items', 'items.items'] })]; -const json2csvParser = new Parser({ fields, transforms }); -const csv = json2csvParser.parse(myCars); - -console.log(csv); -``` - -will output to console - -``` -"carModel","price","items.name","items.color","items.items.position","items.items.color" -"BMW",15000,"airbag","white",, -"BMW",15000,"dashboard","black",, -"Porsche",30000,"airbag",,"left","white" -"Porsche",30000,"airbag",,"right","gray" -"Porsche",30000,"dashboard",,"left","gray" -"Porsche",30000,"dashboard",,"right","black" -``` - -#### Example 9 - -You can also unwind arrays blanking the repeated fields. - -```js -const { Parser, transforms: { unwind } } = require('json2csv'); - -const myCars = [ - { - "carModel": "BMW", - "price": 15000, - "items": [ - { - "name": "airbag", - "color": "white" - }, { - "name": "dashboard", - "color": "black" - } - ] - }, { - "carModel": "Porsche", - "price": 30000, - "items": [ - { - "name": "airbag", - "items": [ - { - "position": "left", - "color": "white" - }, { - "position": "right", - "color": "gray" - } - ] - }, { - "name": "dashboard", - "items": [ - { - "position": "left", - "color": "gray" - }, { - "position": "right", - "color": "black" - } - ] - } - ] - } -]; - -const fields = ['carModel', 'price', 'items.name', 'items.color', 'items.items.position', 'items.items.color']; -const transforms = [unwind({ paths: ['items', 'items.items'], blankOut: true })]; - -const json2csvParser = new Parser({ fields, transforms }); -const csv = json2csvParser.parse(myCars); - -console.log(csv); -``` - -will output to console - -``` -"carModel","price","items.name","items.color","items.items.position","items.items.color" -"BMW",15000,"airbag","white",, -,,"dashboard","black",, -"Porsche",30000,"airbag",,"left","white" -,,,,"right","gray" -,,"dashboard",,"left","gray" -,,,,"right","black" -``` - -### Migrations - -#### Migrating from 3.X to 4.X - -What in 3.X used to be -```js -const json2csv = require('json2csv'); -const csv = json2csv({ data: myData, fields: myFields, unwindPath: paths, ... }); -``` - -should be replaced by -```js -const { Parser } = require('json2csv'); -const json2csvParser = new Parser({ fields: myFields, unwind: paths, ... }); -const csv = json2csvParser.parse(myData); -``` - -or the convenience method -```js -const json2csv = require('json2csv'); -const csv = json2csv.parse(myData, { fields: myFields, unwind: paths, ... }); -``` - -Please note that many of the configuration parameters have been slightly renamed. Please check one by one that all your parameters are correct. -You can se the documentation for json2csv 3.11.5 [here](https://github.com/zemirco/json2csv/blob/v3.11.5/README.md). - -#### Migrating from 4.X to 5.X - -In the CLI, the config file option, `-c`, used to be a list of fields and now it's expected to be a full configuration object. - -The `stringify` option hass been removed. - -`doubleQuote` has been renamed to `escapedQuote`. - -The `unwind` and `flatten` -related options has been moved to their own transforms. - -What used to be -```js -const { Parser } = require('json2csv'); -const json2csvParser = new Parser({ unwind: paths, unwindBlank: true, flatten: true, flattenSeparator: '__' }); -const csv = json2csvParser.parse(myData); -``` - -should be replaced by -```js -const { Parser, transforms: { unwind, flatten } } = require('json2csv'); -const json2csvParser = new Parser({ transforms: [unwind({ paths, blankOut: true }), flatten('__')] }); -const csv = json2csvParser.parse(myData); -``` - -You can se the documentation for json2csv v4.X.X [here](https://github.com/zemirco/json2csv/blob/v4/README.md). - -## Known Gotchas - -### Excel support - -#### Avoiding excel autoformatting - -Excel tries to automatically detect the format of every field (number, date, string, etc.) regardless of whether the field is quoted or not. - -This might produce few undesired effects with, for example, serial numbers: -- Large numbers are displayed using scientific notation -- Leading zeros are stripped. - -Enabling the `excelString` option produces an Excel-specific CSV file that forces Excel to interpret string fields as strings. Please note that the CSV will look incorrect if viewing it somewhere else than Excel. - -#### Avoiding CSV injection - -As part of Excel automatically format detection, fields regarded as formulas (starting with `=`, `+`, `-` or `@`) are interpreted regardless of whether the field is quoted or not, creating a security risk (see [CSV Injection](https://www.owasp.org/index.php/CSV_Injection). - -This issue has nothing to do with the CSV format, since CSV knows nothing about formulas, but with how Excel parses CSV files. - -Enabling the `excelString` option produces an Excel-specific CSV file that forces Excel to interpret string fields as strings. Please note that the CSV will look incorrect if viewing it somewhere else than Excel. - -#### Preserving new lines - -Excel only recognizes `\r\n` as valid new line inside a cell. - -#### Unicode Support - -Excel can display Unicode correctly (just setting the `withBOM` option to true). However, Excel can't save unicode so, if you perform any changes to the CSV and save it from Excel, the Unicode characters will not be displayed correctly. - - -### PowerShell escaping - -PowerShell do some estrange double quote escaping escaping which results on each line of the CSV missing the first and last quote if outputting the result directly to stdout. Instead of that, it's advisable that you write the result directly to a file. - -## Building - -json2csv is packaged using `rollup`. You can generate the packages running: - -```sh -npm run build -``` -which generates 3 files under the `dist folder`: - -* `json2csv.umd.js` UMD module transpiled to ES5 -* `json2csv.esm.js` ES5 module (import/export) -* `json2csv.cjs.js` CommonJS module - -When you use packaging tools like webpack and such, they know which version to use depending on your configuration. - -## Testing - -Run the folowing command to check the code style. - -```sh -$ npm run lint -``` - -Run the following command to run the tests and return coverage - -```sh -$ npm run test-with-coverage -``` - -## Contributors - -After you clone the repository you just need to install the required packages for development by runnning following command under json2csv dir. - -```sh -$ npm install -``` - -Before making any pull request please ensure sure that your code is formatted, test are passing and test coverage haven't decreased. (See [Testing](#testing)) - -## License - -See [LICENSE.md]. - -[npm-badge]: https://badge.fury.io/js/json2csv.svg -[npm-badge-url]: http://badge.fury.io/js/json2csv -[travis-badge]: https://travis-ci.org/zemirco/json2csv.svg -[travis-badge-url]: https://travis-ci.org/zemirco/json2csv -[coveralls-badge]: https://coveralls.io/repos/zemirco/json2csv/badge.svg?branch=master -[coveralls-badge-url]: https://coveralls.io/r/zemirco/json2csv?branch=master -[CHANGELOG]: https://github.com/zemirco/json2csv/blob/master/CHANGELOG.md -[LICENSE.md]: https://github.com/zemirco/json2csv/blob/master/LICENSE.md diff --git a/node_modules/json2csv/bin/json2csv.js b/node_modules/json2csv/bin/json2csv.js deleted file mode 100755 index c41aa37..0000000 --- a/node_modules/json2csv/bin/json2csv.js +++ /dev/null @@ -1,183 +0,0 @@ -#!/usr/bin/env node - -'use strict'; - -const { promisify } = require('util'); -const { createReadStream, createWriteStream, readFile: readFileOrig, writeFile: writeFileOrig } = require('fs'); -const os = require('os'); -const { isAbsolute, join } = require('path'); -const program = require('commander'); -const pkg = require('../package'); -const json2csv = require('../lib/json2csv'); -const parseNdJson = require('./utils/parseNdjson'); -const TablePrinter = require('./utils/TablePrinter'); - -const readFile = promisify(readFileOrig); -const writeFile = promisify(writeFileOrig); - -const { unwind, flatten } = json2csv.transforms; -const JSON2CSVParser = json2csv.Parser; -const Json2csvTransform = json2csv.Transform; - -program - .version(pkg.version) - .option('-i, --input ', 'Path and name of the incoming json file. Defaults to stdin.') - .option('-o, --output ', 'Path and name of the resulting csv file. Defaults to stdout.') - .option('-c, --config ', 'Specify a file with a valid JSON configuration.') - .option('-n, --ndjson', 'Treat the input as NewLine-Delimited JSON.') - .option('-s, --no-streaming', 'Process the whole JSON array in memory instead of doing it line by line.') - .option('-f, --fields ', 'List of fields to process. Defaults to field auto-detection.') - .option('-v, --default-value ', 'Default value to use for missing fields.') - .option('-q, --quote ', 'Character(s) to use as quote mark. Defaults to \'"\'.') - .option('-Q, --escaped-quote ', 'Character(s) to use as a escaped quote. Defaults to a double `quote`, \'""\'.') - .option('-d, --delimiter ', 'Character(s) to use as delimiter. Defaults to \',\'.', ',') - .option('-e, --eol ', 'Character(s) to use as End-of-Line for separating rows. Defaults to \'\\n\'.', os.EOL) - .option('-E, --excel-strings','Wraps string data to force Excel to interpret it as string even if it contains a number.') - .option('-H, --no-header', 'Disable the column name header.') - .option('-a, --include-empty-rows', 'Includes empty rows in the resulting CSV output.') - .option('-b, --with-bom', 'Includes BOM character at the beginning of the CSV.') - .option('-p, --pretty', 'Print output as a pretty table. Use only when printing to console.') - // Built-in transforms - .option('--unwind [paths]', 'Creates multiple rows from a single JSON document similar to MongoDB unwind.') - .option('--unwind-blank', 'When unwinding, blank out instead of repeating data. Defaults to false.', false) - .option('--flatten-objects', 'Flatten nested objects. Defaults to false.', false) - .option('--flatten-arrays', 'Flatten nested arrays. Defaults to false.', false) - .option('--flatten-separator ', 'Flattened keys separator. Defaults to \'.\'.', '.') - .parse(process.argv); - -function makePathAbsolute(filePath) { - return (filePath && !isAbsolute(filePath)) - ? join(process.cwd(), filePath) - : filePath; -} - -program.input = makePathAbsolute(program.input); -program.output = makePathAbsolute(program.output); -program.config = makePathAbsolute(program.config); - -// don't fail if piped to e.g. head -/* istanbul ignore next */ -process.stdout.on('error', (error) => { - if (error.code === 'EPIPE') process.exit(1); -}); - -function getInputStream(inputPath) { - if (inputPath) return createReadStream(inputPath, { encoding: 'utf8' }); - - process.stdin.resume(); - process.stdin.setEncoding('utf8'); - return process.stdin; -} - -function getOutputStream(outputPath, config) { - if (outputPath) return createWriteStream(outputPath, { encoding: 'utf8' }); - if (config.pretty) return new TablePrinter(config).writeStream(); - return process.stdout; -} - -async function getInput(inputPath, ndjson) { - if (!inputPath) return getInputFromStdin(); - if (ndjson) return parseNdJson(await readFile(inputPath, 'utf8')); - return require(inputPath); -} - -async function getInputFromStdin() { - return new Promise((resolve, reject) => { - process.stdin.resume(); - process.stdin.setEncoding('utf8'); - - let inputData = ''; - process.stdin.on('data', chunk => (inputData += chunk)); - /* istanbul ignore next */ - process.stdin.on('error', err => reject(new Error('Could not read from stdin', err))); - process.stdin.on('end', () => { - try { - resolve(program.ndjson ? parseNdJson(inputData) : JSON.parse(inputData)); - } catch (err) { - reject(new Error('Invalid data received from stdin', err)); - } - }); - }); -} - -async function processOutput(outputPath, csv, config) { - if (!outputPath) { - // eslint-disable-next-line no-console - config.pretty ? (new TablePrinter(config)).printCSV(csv) : console.log(csv); - return; - } - - await writeFile(outputPath, csv); -} - -async function processInMemory(config, opts) { - const input = await getInput(program.input, config.ndjson); - const output = new JSON2CSVParser(opts).parse(input); - await processOutput(program.output, output, config); -} - -async function processStream(config, opts) { - const input = getInputStream(program.input); - const transform = new Json2csvTransform(opts); - const output = getOutputStream(program.output, config); - - await new Promise((resolve, reject) => { - input.pipe(transform).pipe(output); - input.on('error', reject); - transform.on('error', reject); - output.on('error', reject) - .on('finish', resolve); - }); -} - -(async (program) => { - try { - const config = Object.assign({}, program.config ? require(program.config) : {}, program); - - const transforms = []; - if (config.unwind) { - transforms.push(unwind({ - paths: config.unwind === true ? undefined : config.unwind.split(','), - blankOut: config.unwindBlank - })); - } - - if (config.flattenObjects || config.flattenArrays) { - transforms.push(flatten({ - objects: config.flattenObjects, - arrays: config.flattenArrays, - separator: config.flattenSeparator - })); - } - - const opts = { - transforms, - fields: config.fields - ? (Array.isArray(config.fields) ? config.fields : config.fields.split(',')) - : config.fields, - defaultValue: config.defaultValue, - quote: config.quote, - escapedQuote: config.escapedQuote, - delimiter: config.delimiter, - eol: config.eol, - excelStrings: config.excelStrings, - header: config.header, - includeEmptyRows: config.includeEmptyRows, - withBOM: config.withBom - }; - - await (config.streaming ? processStream : processInMemory)(config, opts); - } catch(err) { - let processedError = err; - if (program.input && err.message.includes(program.input)) { - processedError = new Error(`Invalid input file. (${err.message})`); - } else if (program.output && err.message.includes(program.output)) { - processedError = new Error(`Invalid output file. (${err.message})`); - } else if (program.config && err.message.includes(program.config)) { - processedError = new Error(`Invalid config file. (${err.message})`); - } - // eslint-disable-next-line no-console - console.error(processedError); - process.exit(1); - } -})(program); diff --git a/node_modules/json2csv/bin/utils/TablePrinter.js b/node_modules/json2csv/bin/utils/TablePrinter.js deleted file mode 100644 index 057463a..0000000 --- a/node_modules/json2csv/bin/utils/TablePrinter.js +++ /dev/null @@ -1,117 +0,0 @@ -'use strict'; - -const { Writable } = require('stream'); - -const MIN_CELL_WIDTH = 15; - -class TablePrinter { - constructor(opts) { - this.opts = opts; - this._hasWritten = false; - } - - push(csv) { - const lines = csv.split(this.opts.eol); - - if (!lines.length) return; - - if (!this._hasWritten) this.setColumnWidths(lines[0]); - - const top = this._hasWritten ? this.middleLine : this.topLine; - this.print(top, lines); - this._hasWritten = true; - } - - end(csv) { - let lines = csv.split(this.opts.eol); - if (!this._hasWritten) this.setColumnWidths(lines[0]); - const top = this._hasWritten ? this.middleLine : this.topLine; - this.print(top, lines, this.bottomLine); - } - - printCSV(csv) { - this.end(csv); - } - - setColumnWidths(line) { - this.colWidths = line - .split(this.opts.delimiter) - .map(elem => Math.max(elem.length * 2, MIN_CELL_WIDTH)); - - this.topLine = `┌${this.colWidths.map(i => '─'.repeat(i)).join('┬')}┐`; - this.middleLine = `├${this.colWidths.map(i => '─'.repeat(i)).join('┼')}┤`; - this.bottomLine = `└${this.colWidths.map(i => '─'.repeat(i)).join('┴')}┘`; - } - - print(top, lines, bottom) { - const table = `${top}\n` - + lines - .map(row => this.formatRow(row)) - .join(`\n${this.middleLine}\n`) - + (bottom ? `\n${bottom}` : ''); - - // eslint-disable-next-line no-console - console.log(table); - } - - formatRow(row) { - const wrappedRow = row - .split(this.opts.delimiter) - .map((cell, i) => cell.match(new RegExp(`(.{1,${this.colWidths[i] - 2}})`, 'g')) || []); - - const height = wrappedRow.reduce((acc, cell) => Math.max(acc, cell.length), 0); - - const processedCells = wrappedRow - .map((cell, i) => this.formatCell(cell, height, this.colWidths[i])); - - return Array(height).fill('') - .map((_, i) => `│${processedCells.map(cell => cell[i]).join('│')}│`) - .join('\n'); - } - - formatCell(content, heigth, width) { - const paddedContent = this.padCellHorizontally(content, width); - return this.padCellVertically(paddedContent, heigth, width); - } - - padCellVertically(content, heigth, width) { - const vertPad = heigth - content.length; - const vertPadTop = Math.ceil(vertPad / 2); - const vertPadBottom = vertPad - vertPadTop; - const emptyLine = ' '.repeat(width); - - return [ - ...Array(vertPadTop).fill(emptyLine), - ...content, - ...Array(vertPadBottom).fill(emptyLine) - ]; - } - - padCellHorizontally(content, width) { - return content.map((line) => { - const horPad = width - line.length - 2; - return ` ${line}${' '.repeat(horPad)} `; - }); - } - - writeStream() { - let csv = ''; - const table = this; - return new Writable({ - write(chunk, encoding, callback) { - csv += chunk.toString(); - const index = csv.lastIndexOf(table.opts.eol); - let lines = csv.substring(0, index); - csv = csv.substring(index + 1); - - if (lines) table.push(lines); - callback(); - }, - final() { - table.end(csv); - } - }); - } -} - -module.exports = TablePrinter; diff --git a/node_modules/json2csv/bin/utils/parseNdjson.js b/node_modules/json2csv/bin/utils/parseNdjson.js deleted file mode 100644 index dbc9c67..0000000 --- a/node_modules/json2csv/bin/utils/parseNdjson.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -function parseNdJson(input) { - return input - .split('\n') - .map(line => line.trim()) - .filter(line => line !== '') - .map(line=> JSON.parse(line)); -} - -module.exports = parseNdJson; diff --git a/node_modules/json2csv/dist/json2csv.esm.js b/node_modules/json2csv/dist/json2csv.esm.js deleted file mode 100644 index 5a88eae..0000000 --- a/node_modules/json2csv/dist/json2csv.esm.js +++ /dev/null @@ -1,2361 +0,0 @@ -import stream from 'stream'; -import os from 'os'; - -function _typeof(obj) { - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function (obj) { - return typeof obj; - }; - } else { - _typeof = function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - - return _typeof(obj); -} - -function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -} - -function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } -} - -function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; -} - -function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; -} - -function _objectSpread(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - var ownKeys = Object.keys(source); - - if (typeof Object.getOwnPropertySymbols === 'function') { - ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { - return Object.getOwnPropertyDescriptor(source, sym).enumerable; - })); - } - - ownKeys.forEach(function (key) { - _defineProperty(target, key, source[key]); - }); - } - - return target; -} - -function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); -} - -function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); -} - -function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - - return _setPrototypeOf(o, p); -} - -function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return self; -} - -function _possibleConstructorReturn(self, call) { - if (call && (typeof call === "object" || typeof call === "function")) { - return call; - } - - return _assertThisInitialized(self); -} - -function _toArray(arr) { - return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); -} - -function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); -} - -function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) { - for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; - - return arr2; - } -} - -function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; -} - -function _iterableToArray(iter) { - if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); -} - -function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance"); -} - -function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); -} - -var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -/** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** `Object#toString` result references. */ -var funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - symbolTag = '[object Symbol]'; - -/** Used to match property names within property paths. */ -var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/, - reLeadingDot = /^\./, - rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; - -/** Used to match backslashes in property paths. */ -var reEscapeChar = /\\(\\)?/g; - -/** Used to detect host constructors (Safari). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; - -/** Detect free variable `global` from Node.js. */ -var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; - -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - -/** Used as a reference to the global object. */ -var root = freeGlobal || freeSelf || Function('return this')(); - -/** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function getValue(object, key) { - return object == null ? undefined : object[key]; -} - -/** - * Checks if `value` is a host object in IE < 9. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a host object, else `false`. - */ -function isHostObject(value) { - // Many host objects are `Object` objects that can coerce to strings - // despite having improperly defined `toString` methods. - var result = false; - if (value != null && typeof value.toString != 'function') { - try { - result = !!(value + ''); - } catch (e) {} - } - return result; -} - -/** Used for built-in method references. */ -var arrayProto = Array.prototype, - funcProto = Function.prototype, - objectProto = Object.prototype; - -/** Used to detect overreaching core-js shims. */ -var coreJsData = root['__core-js_shared__']; - -/** Used to detect methods masquerading as native. */ -var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; -}()); - -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); - -/** Built-in value references. */ -var Symbol$1 = root.Symbol, - splice = arrayProto.splice; - -/* Built-in method references that are verified to be native. */ -var Map = getNative(root, 'Map'), - nativeCreate = getNative(Object, 'create'); - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol$1 ? Symbol$1.prototype : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - -/** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Hash(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -/** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ -function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; -} - -/** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function hashDelete(key) { - return this.has(key) && delete this.__data__[key]; -} - -/** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; -} - -/** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function hashHas(key) { - var data = this.__data__; - return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); -} - -/** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ -function hashSet(key, value) { - var data = this.__data__; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; -} - -// Add methods to `Hash`. -Hash.prototype.clear = hashClear; -Hash.prototype['delete'] = hashDelete; -Hash.prototype.get = hashGet; -Hash.prototype.has = hashHas; -Hash.prototype.set = hashSet; - -/** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function ListCache(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -/** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ -function listCacheClear() { - this.__data__ = []; -} - -/** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - return true; -} - -/** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; -} - -/** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; -} - -/** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ -function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; -} - -// Add methods to `ListCache`. -ListCache.prototype.clear = listCacheClear; -ListCache.prototype['delete'] = listCacheDelete; -ListCache.prototype.get = listCacheGet; -ListCache.prototype.has = listCacheHas; -ListCache.prototype.set = listCacheSet; - -/** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function MapCache(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -/** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ -function mapCacheClear() { - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; -} - -/** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function mapCacheDelete(key) { - return getMapData(this, key)['delete'](key); -} - -/** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function mapCacheGet(key) { - return getMapData(this, key).get(key); -} - -/** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function mapCacheHas(key) { - return getMapData(this, key).has(key); -} - -/** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ -function mapCacheSet(key, value) { - getMapData(this, key).set(key, value); - return this; -} - -// Add methods to `MapCache`. -MapCache.prototype.clear = mapCacheClear; -MapCache.prototype['delete'] = mapCacheDelete; -MapCache.prototype.get = mapCacheGet; -MapCache.prototype.has = mapCacheHas; -MapCache.prototype.set = mapCacheSet; - -/** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; -} - -/** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ -function baseGet(object, path) { - path = isKey(path, object) ? [path] : castPath(path); - - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[toKey(path[index++])]; - } - return (index && index == length) ? object : undefined; -} - -/** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ -function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); -} - -/** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -/** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @returns {Array} Returns the cast property path array. - */ -function castPath(value) { - return isArray(value) ? value : stringToPath(value); -} - -/** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ -function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; -} - -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; -} - -/** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ -function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); -} - -/** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ -function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); -} - -/** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ -function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); -} - -/** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ -var stringToPath = memoize(function(string) { - string = toString(string); - - var result = []; - if (reLeadingDot.test(string)) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, string) { - result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; -}); - -/** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ -function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -/** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to process. - * @returns {string} Returns the source code. - */ -function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; -} - -/** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ -function memoize(func, resolver) { - if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result); - return result; - }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; -} - -// Assign cache to `_.memoize`. -memoize.Cache = MapCache; - -/** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ -function eq(value, other) { - return value === other || (value !== value && other !== other); -} - -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ -var isArray = Array.isArray; - -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. - var tag = isObject(value) ? objectToString.call(value) : ''; - return tag == funcTag || tag == genTag; -} - -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && objectToString.call(value) == symbolTag); -} - -/** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {string} Returns the string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ -function toString(value) { - return value == null ? '' : baseToString(value); -} - -/** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ -function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; -} - -var lodash_get = get; - -function getProp(obj, path, defaultValue) { - return obj[path] === undefined ? defaultValue : obj[path]; -} - -function setProp(obj, path, value) { - var pathArray = Array.isArray(path) ? path : path.split('.'); - - var _pathArray = _toArray(pathArray), - key = _pathArray[0], - restPath = _pathArray.slice(1); - - return _objectSpread({}, obj, _defineProperty({}, key, pathArray.length > 1 ? setProp(obj[key] || {}, restPath, value) : value)); -} - -function unsetProp(obj, path) { - var pathArray = Array.isArray(path) ? path : path.split('.'); - - var _pathArray2 = _toArray(pathArray), - key = _pathArray2[0], - restPath = _pathArray2.slice(1); - - if (_typeof(obj[key]) !== 'object') { - // This will never be hit in the current code because unwind does the check before calling unsetProp - - /* istanbul ignore next */ - return obj; - } - - if (pathArray.length === 1) { - return Object.keys(obj).filter(function (prop) { - return prop !== key; - }).reduce(function (acc, prop) { - return Object.assign(acc, _defineProperty({}, prop, obj[prop])); - }, {}); - } - - return Object.keys(obj).reduce(function (acc, prop) { - return _objectSpread({}, acc, _defineProperty({}, prop, prop !== key ? obj[prop] : unsetProp(obj[key], restPath))); - }, {}); -} - -function flattenReducer(acc, arr) { - try { - // This is faster but susceptible to `RangeError: Maximum call stack size exceeded` - acc.push.apply(acc, _toConsumableArray(arr)); - return acc; - } catch (err) { - // Fallback to a slower but safer option - return acc.concat(arr); - } -} - -function fastJoin(arr, separator) { - var isFirst = true; - return arr.reduce(function (acc, elem) { - if (elem === null || elem === undefined) { - elem = ''; - } - - if (isFirst) { - isFirst = false; - return "".concat(elem); - } - - return "".concat(acc).concat(separator).concat(elem); - }, ''); -} - -var utils = { - getProp: getProp, - setProp: setProp, - unsetProp: unsetProp, - fastJoin: fastJoin, - flattenReducer: flattenReducer -}; - -var getProp$1 = utils.getProp, - fastJoin$1 = utils.fastJoin, - flattenReducer$1 = utils.flattenReducer; - -var JSON2CSVBase = -/*#__PURE__*/ -function () { - function JSON2CSVBase(opts) { - _classCallCheck(this, JSON2CSVBase); - - this.opts = this.preprocessOpts(opts); - } - /** - * Check passing opts and set defaults. - * - * @param {Json2CsvOptions} opts Options object containing fields, - * delimiter, default value, quote mark, header, etc. - */ - - - _createClass(JSON2CSVBase, [{ - key: "preprocessOpts", - value: function preprocessOpts(opts) { - var processedOpts = Object.assign({}, opts); - processedOpts.transforms = !Array.isArray(processedOpts.transforms) ? processedOpts.transforms ? [processedOpts.transforms] : [] : processedOpts.transforms; - processedOpts.delimiter = processedOpts.delimiter || ','; - processedOpts.eol = processedOpts.eol || os.EOL; - processedOpts.quote = typeof processedOpts.quote === 'string' ? processedOpts.quote : '"'; - processedOpts.escapedQuote = typeof processedOpts.escapedQuote === 'string' ? processedOpts.escapedQuote : "".concat(processedOpts.quote).concat(processedOpts.quote); - processedOpts.header = processedOpts.header !== false; - processedOpts.includeEmptyRows = processedOpts.includeEmptyRows || false; - processedOpts.withBOM = processedOpts.withBOM || false; - return processedOpts; - } - /** - * Check and normalize the fields configuration. - * - * @param {(string|object)[]} fields Fields configuration provided by the user - * or inferred from the data - * @returns {object[]} preprocessed FieldsInfo array - */ - - }, { - key: "preprocessFieldsInfo", - value: function preprocessFieldsInfo(fields) { - var _this = this; - - return fields.map(function (fieldInfo) { - if (typeof fieldInfo === 'string') { - return { - label: fieldInfo, - value: fieldInfo.includes('.') || fieldInfo.includes('[') ? function (row) { - return lodash_get(row, fieldInfo, _this.opts.defaultValue); - } : function (row) { - return getProp$1(row, fieldInfo, _this.opts.defaultValue); - } - }; - } - - if (_typeof(fieldInfo) === 'object') { - var defaultValue = 'default' in fieldInfo ? fieldInfo.default : _this.opts.defaultValue; - - if (typeof fieldInfo.value === 'string') { - return { - label: fieldInfo.label || fieldInfo.value, - value: fieldInfo.value.includes('.') || fieldInfo.value.includes('[') ? function (row) { - return lodash_get(row, fieldInfo.value, defaultValue); - } : function (row) { - return getProp$1(row, fieldInfo.value, defaultValue); - } - }; - } - - if (typeof fieldInfo.value === 'function') { - var label = fieldInfo.label || fieldInfo.value.name || ''; - var field = { - label: label, - default: defaultValue - }; - return { - label: label, - value: function value(row) { - var value = fieldInfo.value(row, field); - return value === null || value === undefined ? defaultValue : value; - } - }; - } - } - - throw new Error('Invalid field info option. ' + JSON.stringify(fieldInfo)); - }); - } - /** - * Create the title row with all the provided fields as column headings - * - * @returns {String} titles as a string - */ - - }, { - key: "getHeader", - value: function getHeader() { - var _this2 = this; - - return fastJoin$1(this.opts.fields.map(function (fieldInfo) { - return _this2.processValue(fieldInfo.label); - }), this.opts.delimiter); - } - /** - * Preprocess each object according to the given transforms (unwind, flatten, etc.). - * @param {Object} row JSON object to be converted in a CSV row - */ - - }, { - key: "preprocessRow", - value: function preprocessRow(row) { - return this.opts.transforms.reduce(function (rows, transform) { - return rows.map(function (row) { - return transform(row); - }).reduce(flattenReducer$1, []); - }, [row]); - } - /** - * Create the content of a specific CSV row - * - * @param {Object} row JSON object to be converted in a CSV row - * @returns {String} CSV string (row) - */ - - }, { - key: "processRow", - value: function processRow(row) { - var _this3 = this; - - if (!row) { - return undefined; - } - - var processedRow = this.opts.fields.map(function (fieldInfo) { - return _this3.processCell(row, fieldInfo); - }); - - if (!this.opts.includeEmptyRows && processedRow.every(function (field) { - return field === undefined; - })) { - return undefined; - } - - return fastJoin$1(processedRow, this.opts.delimiter); - } - /** - * Create the content of a specfic CSV row cell - * - * @param {Object} row JSON object representing the CSV row that the cell belongs to - * @param {FieldInfo} fieldInfo Details of the field to process to be a CSV cell - * @returns {String} CSV string (cell) - */ - - }, { - key: "processCell", - value: function processCell(row, fieldInfo) { - return this.processValue(fieldInfo.value(row)); - } - /** - * Create the content of a specfic CSV row cell - * - * @param {Any} value Value to be included in a CSV cell - * @returns {String} Value stringified and processed - */ - - }, { - key: "processValue", - value: function processValue(value) { - if (value === null || value === undefined) { - return undefined; - } - - var valueType = _typeof(value); - - if (valueType !== 'boolean' && valueType !== 'number' && valueType !== 'string') { - value = JSON.stringify(value); - - if (value === undefined) { - return undefined; - } - - if (value[0] === '"') { - value = value.replace(/^"(.+)"$/, '$1'); - } - } - - if (typeof value === 'string') { - if (this.opts.excelStrings) { - if (value.includes(this.opts.quote)) { - value = value.replace(new RegExp(this.opts.quote, 'g'), "".concat(this.opts.escapedQuote).concat(this.opts.escapedQuote)); - } - - value = "\"=\"\"".concat(value, "\"\"\""); - } else { - if (value.includes(this.opts.quote)) { - value = value.replace(new RegExp(this.opts.quote, 'g'), this.opts.escapedQuote); - } - - value = "".concat(this.opts.quote).concat(value).concat(this.opts.quote); - } - } - - return value; - } - }]); - - return JSON2CSVBase; -}(); - -var JSON2CSVBase_1 = JSON2CSVBase; - -var fastJoin$2 = utils.fastJoin, - flattenReducer$2 = utils.flattenReducer; - -var JSON2CSVParser = -/*#__PURE__*/ -function (_JSON2CSVBase) { - _inherits(JSON2CSVParser, _JSON2CSVBase); - - function JSON2CSVParser(opts) { - var _this; - - _classCallCheck(this, JSON2CSVParser); - - _this = _possibleConstructorReturn(this, _getPrototypeOf(JSON2CSVParser).call(this, opts)); - - if (_this.opts.fields) { - _this.opts.fields = _this.preprocessFieldsInfo(_this.opts.fields); - } - - return _this; - } - /** - * Main function that converts json to csv. - * - * @param {Array|Object} data Array of JSON objects to be converted to CSV - * @returns {String} The CSV formated data as a string - */ - - - _createClass(JSON2CSVParser, [{ - key: "parse", - value: function parse(data) { - var processedData = this.preprocessData(data); - - if (!this.opts.fields) { - this.opts.fields = processedData.reduce(function (fields, item) { - Object.keys(item).forEach(function (field) { - if (!fields.includes(field)) { - fields.push(field); - } - }); - return fields; - }, []); - this.opts.fields = this.preprocessFieldsInfo(this.opts.fields); - } - - var header = this.opts.header ? this.getHeader() : ''; - var rows = this.processData(processedData); - var csv = (this.opts.withBOM ? "\uFEFF" : '') + header + (header && rows ? this.opts.eol : '') + rows; - return csv; - } - /** - * Preprocess the data according to the give opts (unwind, flatten, etc.) - and calculate the fields and field names if they are not provided. - * - * @param {Array|Object} data Array or object to be converted to CSV - */ - - }, { - key: "preprocessData", - value: function preprocessData(data) { - var _this2 = this; - - var processedData = Array.isArray(data) ? data : [data]; - - if (!this.opts.fields && (processedData.length === 0 || _typeof(processedData[0]) !== 'object')) { - throw new Error('Data should not be empty or the "fields" option should be included'); - } - - if (this.opts.transforms.length === 0) return processedData; - return processedData.map(function (row) { - return _this2.preprocessRow(row); - }).reduce(flattenReducer$2, []); - } - /** - * Create the content row by row below the header - * - * @param {Array} data Array of JSON objects to be converted to CSV - * @returns {String} CSV string (body) - */ - - }, { - key: "processData", - value: function processData(data) { - var _this3 = this; - - return fastJoin$2(data.map(function (row) { - return _this3.processRow(row); - }).filter(function (row) { - return row; - }), // Filter empty rows - this.opts.eol); - } - }]); - - return JSON2CSVParser; -}(JSON2CSVBase_1); - -var JSON2CSVParser_1 = JSON2CSVParser; - -/*global Buffer*/ -// Named constants with unique integer values -var C = {}; -// Tokens -var LEFT_BRACE = C.LEFT_BRACE = 0x1; -var RIGHT_BRACE = C.RIGHT_BRACE = 0x2; -var LEFT_BRACKET = C.LEFT_BRACKET = 0x3; -var RIGHT_BRACKET = C.RIGHT_BRACKET = 0x4; -var COLON = C.COLON = 0x5; -var COMMA = C.COMMA = 0x6; -var TRUE = C.TRUE = 0x7; -var FALSE = C.FALSE = 0x8; -var NULL = C.NULL = 0x9; -var STRING = C.STRING = 0xa; -var NUMBER = C.NUMBER = 0xb; -// Tokenizer States -var START = C.START = 0x11; -var STOP = C.STOP = 0x12; -var TRUE1 = C.TRUE1 = 0x21; -var TRUE2 = C.TRUE2 = 0x22; -var TRUE3 = C.TRUE3 = 0x23; -var FALSE1 = C.FALSE1 = 0x31; -var FALSE2 = C.FALSE2 = 0x32; -var FALSE3 = C.FALSE3 = 0x33; -var FALSE4 = C.FALSE4 = 0x34; -var NULL1 = C.NULL1 = 0x41; -var NULL2 = C.NULL2 = 0x42; -var NULL3 = C.NULL3 = 0x43; -var NUMBER1 = C.NUMBER1 = 0x51; -var NUMBER3 = C.NUMBER3 = 0x53; -var STRING1 = C.STRING1 = 0x61; -var STRING2 = C.STRING2 = 0x62; -var STRING3 = C.STRING3 = 0x63; -var STRING4 = C.STRING4 = 0x64; -var STRING5 = C.STRING5 = 0x65; -var STRING6 = C.STRING6 = 0x66; -// Parser States -var VALUE = C.VALUE = 0x71; -var KEY = C.KEY = 0x72; -// Parser Modes -var OBJECT = C.OBJECT = 0x81; -var ARRAY = C.ARRAY = 0x82; -// Character constants -var BACK_SLASH = "\\".charCodeAt(0); -var FORWARD_SLASH = "\/".charCodeAt(0); -var BACKSPACE = "\b".charCodeAt(0); -var FORM_FEED = "\f".charCodeAt(0); -var NEWLINE = "\n".charCodeAt(0); -var CARRIAGE_RETURN = "\r".charCodeAt(0); -var TAB = "\t".charCodeAt(0); - -var STRING_BUFFER_SIZE = 64 * 1024; - -function Parser() { - this.tState = START; - this.value = undefined; - - this.string = undefined; // string data - this.stringBuffer = Buffer.alloc ? Buffer.alloc(STRING_BUFFER_SIZE) : new Buffer(STRING_BUFFER_SIZE); - this.stringBufferOffset = 0; - this.unicode = undefined; // unicode escapes - this.highSurrogate = undefined; - - this.key = undefined; - this.mode = undefined; - this.stack = []; - this.state = VALUE; - this.bytes_remaining = 0; // number of bytes remaining in multi byte utf8 char to read after split boundary - this.bytes_in_sequence = 0; // bytes in multi byte utf8 char to read - this.temp_buffs = { "2": new Buffer(2), "3": new Buffer(3), "4": new Buffer(4) }; // for rebuilding chars split before boundary is reached - - // Stream offset - this.offset = -1; -} - -// Slow code to string converter (only used when throwing syntax errors) -Parser.toknam = function (code) { - var keys = Object.keys(C); - for (var i = 0, l = keys.length; i < l; i++) { - var key = keys[i]; - if (C[key] === code) { return key; } - } - return code && ("0x" + code.toString(16)); -}; - -var proto = Parser.prototype; -proto.onError = function (err) { throw err; }; -proto.charError = function (buffer, i) { - this.tState = STOP; - this.onError(new Error("Unexpected " + JSON.stringify(String.fromCharCode(buffer[i])) + " at position " + i + " in state " + Parser.toknam(this.tState))); -}; -proto.appendStringChar = function (char) { - if (this.stringBufferOffset >= STRING_BUFFER_SIZE) { - this.string += this.stringBuffer.toString('utf8'); - this.stringBufferOffset = 0; - } - - this.stringBuffer[this.stringBufferOffset++] = char; -}; -proto.appendStringBuf = function (buf, start, end) { - var size = buf.length; - if (typeof start === 'number') { - if (typeof end === 'number') { - if (end < 0) { - // adding a negative end decreeses the size - size = buf.length - start + end; - } else { - size = end - start; - } - } else { - size = buf.length - start; - } - } - - if (size < 0) { - size = 0; - } - - if (this.stringBufferOffset + size > STRING_BUFFER_SIZE) { - this.string += this.stringBuffer.toString('utf8', 0, this.stringBufferOffset); - this.stringBufferOffset = 0; - } - - buf.copy(this.stringBuffer, this.stringBufferOffset, start, end); - this.stringBufferOffset += size; -}; -proto.write = function (buffer) { - if (typeof buffer === "string") buffer = new Buffer(buffer); - var n; - for (var i = 0, l = buffer.length; i < l; i++) { - if (this.tState === START){ - n = buffer[i]; - this.offset++; - if(n === 0x7b){ this.onToken(LEFT_BRACE, "{"); // { - }else if(n === 0x7d){ this.onToken(RIGHT_BRACE, "}"); // } - }else if(n === 0x5b){ this.onToken(LEFT_BRACKET, "["); // [ - }else if(n === 0x5d){ this.onToken(RIGHT_BRACKET, "]"); // ] - }else if(n === 0x3a){ this.onToken(COLON, ":"); // : - }else if(n === 0x2c){ this.onToken(COMMA, ","); // , - }else if(n === 0x74){ this.tState = TRUE1; // t - }else if(n === 0x66){ this.tState = FALSE1; // f - }else if(n === 0x6e){ this.tState = NULL1; // n - }else if(n === 0x22){ // " - this.string = ""; - this.stringBufferOffset = 0; - this.tState = STRING1; - }else if(n === 0x2d){ this.string = "-"; this.tState = NUMBER1; // - - }else{ - if (n >= 0x30 && n < 0x40) { // 1-9 - this.string = String.fromCharCode(n); this.tState = NUMBER3; - } else if (n === 0x20 || n === 0x09 || n === 0x0a || n === 0x0d) ; else { - return this.charError(buffer, i); - } - } - }else if (this.tState === STRING1){ // After open quote - n = buffer[i]; // get current byte from buffer - // check for carry over of a multi byte char split between data chunks - // & fill temp buffer it with start of this data chunk up to the boundary limit set in the last iteration - if (this.bytes_remaining > 0) { - for (var j = 0; j < this.bytes_remaining; j++) { - this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence - this.bytes_remaining + j] = buffer[j]; - } - - this.appendStringBuf(this.temp_buffs[this.bytes_in_sequence]); - this.bytes_in_sequence = this.bytes_remaining = 0; - i = i + j - 1; - } else if (this.bytes_remaining === 0 && n >= 128) { // else if no remainder bytes carried over, parse multi byte (>=128) chars one at a time - if (n <= 193 || n > 244) { - return this.onError(new Error("Invalid UTF-8 character at position " + i + " in state " + Parser.toknam(this.tState))); - } - if ((n >= 194) && (n <= 223)) this.bytes_in_sequence = 2; - if ((n >= 224) && (n <= 239)) this.bytes_in_sequence = 3; - if ((n >= 240) && (n <= 244)) this.bytes_in_sequence = 4; - if ((this.bytes_in_sequence + i) > buffer.length) { // if bytes needed to complete char fall outside buffer length, we have a boundary split - for (var k = 0; k <= (buffer.length - 1 - i); k++) { - this.temp_buffs[this.bytes_in_sequence][k] = buffer[i + k]; // fill temp buffer of correct size with bytes available in this chunk - } - this.bytes_remaining = (i + this.bytes_in_sequence) - buffer.length; - i = buffer.length - 1; - } else { - this.appendStringBuf(buffer, i, i + this.bytes_in_sequence); - i = i + this.bytes_in_sequence - 1; - } - } else if (n === 0x22) { - this.tState = START; - this.string += this.stringBuffer.toString('utf8', 0, this.stringBufferOffset); - this.stringBufferOffset = 0; - this.onToken(STRING, this.string); - this.offset += Buffer.byteLength(this.string, 'utf8') + 1; - this.string = undefined; - } - else if (n === 0x5c) { - this.tState = STRING2; - } - else if (n >= 0x20) { this.appendStringChar(n); } - else { - return this.charError(buffer, i); - } - }else if (this.tState === STRING2){ // After backslash - n = buffer[i]; - if(n === 0x22){ this.appendStringChar(n); this.tState = STRING1; - }else if(n === 0x5c){ this.appendStringChar(BACK_SLASH); this.tState = STRING1; - }else if(n === 0x2f){ this.appendStringChar(FORWARD_SLASH); this.tState = STRING1; - }else if(n === 0x62){ this.appendStringChar(BACKSPACE); this.tState = STRING1; - }else if(n === 0x66){ this.appendStringChar(FORM_FEED); this.tState = STRING1; - }else if(n === 0x6e){ this.appendStringChar(NEWLINE); this.tState = STRING1; - }else if(n === 0x72){ this.appendStringChar(CARRIAGE_RETURN); this.tState = STRING1; - }else if(n === 0x74){ this.appendStringChar(TAB); this.tState = STRING1; - }else if(n === 0x75){ this.unicode = ""; this.tState = STRING3; - }else{ - return this.charError(buffer, i); - } - }else if (this.tState === STRING3 || this.tState === STRING4 || this.tState === STRING5 || this.tState === STRING6){ // unicode hex codes - n = buffer[i]; - // 0-9 A-F a-f - if ((n >= 0x30 && n < 0x40) || (n > 0x40 && n <= 0x46) || (n > 0x60 && n <= 0x66)) { - this.unicode += String.fromCharCode(n); - if (this.tState++ === STRING6) { - var intVal = parseInt(this.unicode, 16); - this.unicode = undefined; - if (this.highSurrogate !== undefined && intVal >= 0xDC00 && intVal < (0xDFFF + 1)) { //<56320,57343> - lowSurrogate - this.appendStringBuf(new Buffer(String.fromCharCode(this.highSurrogate, intVal))); - this.highSurrogate = undefined; - } else if (this.highSurrogate === undefined && intVal >= 0xD800 && intVal < (0xDBFF + 1)) { //<55296,56319> - highSurrogate - this.highSurrogate = intVal; - } else { - if (this.highSurrogate !== undefined) { - this.appendStringBuf(new Buffer(String.fromCharCode(this.highSurrogate))); - this.highSurrogate = undefined; - } - this.appendStringBuf(new Buffer(String.fromCharCode(intVal))); - } - this.tState = STRING1; - } - } else { - return this.charError(buffer, i); - } - } else if (this.tState === NUMBER1 || this.tState === NUMBER3) { - n = buffer[i]; - - switch (n) { - case 0x30: // 0 - case 0x31: // 1 - case 0x32: // 2 - case 0x33: // 3 - case 0x34: // 4 - case 0x35: // 5 - case 0x36: // 6 - case 0x37: // 7 - case 0x38: // 8 - case 0x39: // 9 - case 0x2e: // . - case 0x65: // e - case 0x45: // E - case 0x2b: // + - case 0x2d: // - - this.string += String.fromCharCode(n); - this.tState = NUMBER3; - break; - default: - this.tState = START; - var result = Number(this.string); - - if (isNaN(result)){ - return this.charError(buffer, i); - } - - if ((this.string.match(/[0-9]+/) == this.string) && (result.toString() != this.string)) { - // Long string of digits which is an ID string and not valid and/or safe JavaScript integer Number - this.onToken(STRING, this.string); - } else { - this.onToken(NUMBER, result); - } - - this.offset += this.string.length - 1; - this.string = undefined; - i--; - break; - } - }else if (this.tState === TRUE1){ // r - if (buffer[i] === 0x72) { this.tState = TRUE2; } - else { return this.charError(buffer, i); } - }else if (this.tState === TRUE2){ // u - if (buffer[i] === 0x75) { this.tState = TRUE3; } - else { return this.charError(buffer, i); } - }else if (this.tState === TRUE3){ // e - if (buffer[i] === 0x65) { this.tState = START; this.onToken(TRUE, true); this.offset+= 3; } - else { return this.charError(buffer, i); } - }else if (this.tState === FALSE1){ // a - if (buffer[i] === 0x61) { this.tState = FALSE2; } - else { return this.charError(buffer, i); } - }else if (this.tState === FALSE2){ // l - if (buffer[i] === 0x6c) { this.tState = FALSE3; } - else { return this.charError(buffer, i); } - }else if (this.tState === FALSE3){ // s - if (buffer[i] === 0x73) { this.tState = FALSE4; } - else { return this.charError(buffer, i); } - }else if (this.tState === FALSE4){ // e - if (buffer[i] === 0x65) { this.tState = START; this.onToken(FALSE, false); this.offset+= 4; } - else { return this.charError(buffer, i); } - }else if (this.tState === NULL1){ // u - if (buffer[i] === 0x75) { this.tState = NULL2; } - else { return this.charError(buffer, i); } - }else if (this.tState === NULL2){ // l - if (buffer[i] === 0x6c) { this.tState = NULL3; } - else { return this.charError(buffer, i); } - }else if (this.tState === NULL3){ // l - if (buffer[i] === 0x6c) { this.tState = START; this.onToken(NULL, null); this.offset += 3; } - else { return this.charError(buffer, i); } - } - } -}; -proto.onToken = function (token, value) { - // Override this to get events -}; - -proto.parseError = function (token, value) { - this.tState = STOP; - this.onError(new Error("Unexpected " + Parser.toknam(token) + (value ? ("(" + JSON.stringify(value) + ")") : "") + " in state " + Parser.toknam(this.state))); -}; -proto.push = function () { - this.stack.push({value: this.value, key: this.key, mode: this.mode}); -}; -proto.pop = function () { - var value = this.value; - var parent = this.stack.pop(); - this.value = parent.value; - this.key = parent.key; - this.mode = parent.mode; - this.emit(value); - if (!this.mode) { this.state = VALUE; } -}; -proto.emit = function (value) { - if (this.mode) { this.state = COMMA; } - this.onValue(value); -}; -proto.onValue = function (value) { - // Override me -}; -proto.onToken = function (token, value) { - if(this.state === VALUE){ - if(token === STRING || token === NUMBER || token === TRUE || token === FALSE || token === NULL){ - if (this.value) { - this.value[this.key] = value; - } - this.emit(value); - }else if(token === LEFT_BRACE){ - this.push(); - if (this.value) { - this.value = this.value[this.key] = {}; - } else { - this.value = {}; - } - this.key = undefined; - this.state = KEY; - this.mode = OBJECT; - }else if(token === LEFT_BRACKET){ - this.push(); - if (this.value) { - this.value = this.value[this.key] = []; - } else { - this.value = []; - } - this.key = 0; - this.mode = ARRAY; - this.state = VALUE; - }else if(token === RIGHT_BRACE){ - if (this.mode === OBJECT) { - this.pop(); - } else { - return this.parseError(token, value); - } - }else if(token === RIGHT_BRACKET){ - if (this.mode === ARRAY) { - this.pop(); - } else { - return this.parseError(token, value); - } - }else{ - return this.parseError(token, value); - } - }else if(this.state === KEY){ - if (token === STRING) { - this.key = value; - this.state = COLON; - } else if (token === RIGHT_BRACE) { - this.pop(); - } else { - return this.parseError(token, value); - } - }else if(this.state === COLON){ - if (token === COLON) { this.state = VALUE; } - else { return this.parseError(token, value); } - }else if(this.state === COMMA){ - if (token === COMMA) { - if (this.mode === ARRAY) { this.key++; this.state = VALUE; } - else if (this.mode === OBJECT) { this.state = KEY; } - - } else if (token === RIGHT_BRACKET && this.mode === ARRAY || token === RIGHT_BRACE && this.mode === OBJECT) { - this.pop(); - } else { - return this.parseError(token, value); - } - }else{ - return this.parseError(token, value); - } -}; - -Parser.C = C; - -var jsonparse = Parser; - -var Transform = stream.Transform; - -var JSON2CSVTransform = -/*#__PURE__*/ -function (_Transform) { - _inherits(JSON2CSVTransform, _Transform); - - function JSON2CSVTransform(opts, transformOpts) { - var _this; - - _classCallCheck(this, JSON2CSVTransform); - - _this = _possibleConstructorReturn(this, _getPrototypeOf(JSON2CSVTransform).call(this, transformOpts)); // Inherit methods from JSON2CSVBase since extends doesn't - // allow multiple inheritance and manually preprocess opts - - Object.getOwnPropertyNames(JSON2CSVBase_1.prototype).forEach(function (key) { - return _this[key] = JSON2CSVBase_1.prototype[key]; - }); - _this.opts = _this.preprocessOpts(opts); - _this._data = ''; - _this._hasWritten = false; - - if (_this._readableState.objectMode) { - _this.initObjectModeParse(); - } else if (_this.opts.ndjson) { - _this.initNDJSONParse(); - } else { - _this.initJSONParser(); - } - - if (_this.opts.withBOM) { - _this.push("\uFEFF"); - } - - if (_this.opts.fields) { - _this.opts.fields = _this.preprocessFieldsInfo(_this.opts.fields); - - _this.pushHeader(); - } - - return _this; - } - /** - * Init the transform with a parser to process data in object mode. - * It receives JSON objects one by one and send them to `pushLine for processing. - */ - - - _createClass(JSON2CSVTransform, [{ - key: "initObjectModeParse", - value: function initObjectModeParse() { - var transform = this; - this.parser = { - write: function write(line) { - transform.pushLine(line); - }, - getPendingData: function getPendingData() { - return undefined; - } - }; - } - /** - * Init the transform with a parser to process NDJSON data. - * It maintains a buffer of received data, parses each line - * as JSON and send it to `pushLine for processing. - */ - - }, { - key: "initNDJSONParse", - value: function initNDJSONParse() { - var transform = this; - this.parser = { - _data: '', - write: function write(chunk) { - this._data += chunk.toString(); - - var lines = this._data.split('\n').map(function (line) { - return line.trim(); - }).filter(function (line) { - return line !== ''; - }); - - var pendingData = false; - lines.forEach(function (line, i) { - try { - transform.pushLine(JSON.parse(line)); - } catch (e) { - if (i === lines.length - 1) { - pendingData = true; - } else { - e.message = "Invalid JSON (".concat(line, ")"); - transform.emit('error', e); - } - } - }); - this._data = pendingData ? this._data.slice(this._data.lastIndexOf('\n')) : ''; - }, - getPendingData: function getPendingData() { - return this._data; - } - }; - } - /** - * Init the transform with a parser to process JSON data. - * It maintains a buffer of received data, parses each as JSON - * item if the data is an array or the data itself otherwise - * and send it to `pushLine` for processing. - */ - - }, { - key: "initJSONParser", - value: function initJSONParser() { - var transform = this; - this.parser = new jsonparse(); - - this.parser.onValue = function (value) { - if (this.stack.length !== this.depthToEmit) return; - transform.pushLine(value); - }; - - this.parser._onToken = this.parser.onToken; - - this.parser.onToken = function (token, value) { - transform.parser._onToken(token, value); - - if (this.stack.length === 0 && !transform.opts.fields && this.mode !== jsonparse.C.ARRAY && this.mode !== jsonparse.C.OBJECT) { - this.onError(new Error('Data should not be empty or the "fields" option should be included')); - } - - if (this.stack.length === 1) { - if (this.depthToEmit === undefined) { - // If Array emit its content, else emit itself - this.depthToEmit = this.mode === jsonparse.C.ARRAY ? 1 : 0; - } - - if (this.depthToEmit !== 0 && this.stack.length === 1) { - // No need to store the whole root array in memory - this.value = undefined; - } - } - }; - - this.parser.getPendingData = function () { - return this.value; - }; - - this.parser.onError = function (err) { - if (err.message.includes('Unexpected')) { - err.message = "Invalid JSON (".concat(err.message, ")"); - } - - transform.emit('error', err); - }; - } - /** - * Main function that send data to the parse to be processed. - * - * @param {Buffer} chunk Incoming data - * @param {String} encoding Encoding of the incoming data. Defaults to 'utf8' - * @param {Function} done Called when the proceesing of the supplied chunk is done - */ - - }, { - key: "_transform", - value: function _transform(chunk, encoding, done) { - this.parser.write(chunk); - done(); - } - }, { - key: "_flush", - value: function _flush(done) { - if (this.parser.getPendingData()) { - done(new Error('Invalid data received from stdin', this.parser.getPendingData())); - } - - done(); - } - /** - * Generate the csv header and pushes it downstream. - */ - - }, { - key: "pushHeader", - value: function pushHeader() { - if (this.opts.header) { - var header = this.getHeader(); - this.emit('header', header); - this.push(header); - this._hasWritten = true; - } - } - /** - * Transforms an incoming json data to csv and pushes it downstream. - * - * @param {Object} data JSON object to be converted in a CSV row - */ - - }, { - key: "pushLine", - value: function pushLine(data) { - var _this2 = this; - - var processedData = this.preprocessRow(data); - - if (!this._hasWritten) { - this.opts.fields = this.opts.fields || this.preprocessFieldsInfo(Object.keys(processedData[0])); - this.pushHeader(); - } - - processedData.forEach(function (row) { - var line = _this2.processRow(row, _this2.opts); - - if (line === undefined) return; - - _this2.emit('line', line); - - _this2.push(_this2._hasWritten ? _this2.opts.eol + line : line); - - _this2._hasWritten = true; - }); - } - }]); - - return JSON2CSVTransform; -}(Transform); - -var JSON2CSVTransform_1 = JSON2CSVTransform; - -var Transform$1 = stream.Transform; -var fastJoin$3 = utils.fastJoin; - -var JSON2CSVAsyncParser = -/*#__PURE__*/ -function () { - function JSON2CSVAsyncParser(opts, transformOpts) { - _classCallCheck(this, JSON2CSVAsyncParser); - - this.input = new Transform$1(transformOpts); - - this.input._read = function () {}; - - this.transform = new JSON2CSVTransform_1(opts, transformOpts); - this.processor = this.input.pipe(this.transform); - } - - _createClass(JSON2CSVAsyncParser, [{ - key: "fromInput", - value: function fromInput(input) { - if (this._input) { - throw new Error('Async parser already has an input.'); - } - - this._input = input; - this.input = this._input.pipe(this.processor); - return this; - } - }, { - key: "throughTransform", - value: function throughTransform(transform) { - if (this._output) { - throw new Error('Can\'t add transforms once an output has been added.'); - } - - this.processor = this.processor.pipe(transform); - return this; - } - }, { - key: "toOutput", - value: function toOutput(output) { - if (this._output) { - throw new Error('Async parser already has an output.'); - } - - this._output = output; - this.processor = this.processor.pipe(output); - return this; - } - }, { - key: "promise", - value: function promise() { - var _this = this; - - var returnCSV = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - return new Promise(function (resolve, reject) { - if (!returnCSV) { - _this.processor.on('finish', function () { - return resolve(); - }).on('error', function (err) { - return reject(err); - }); - - return; - } - - var csvBuffer = []; - - _this.processor.on('data', function (chunk) { - return csvBuffer.push(chunk.toString()); - }).on('finish', function () { - return resolve(fastJoin$3(csvBuffer, '')); - }).on('error', function (err) { - return reject(err); - }); - }); - } - }]); - - return JSON2CSVAsyncParser; -}(); - -var JSON2CSVAsyncParser_1 = JSON2CSVAsyncParser; - -/** - * Performs the flattening of a data row recursively - * - * @param {String} separator Separator to be used as the flattened field name - * @returns {Object => Object} Flattened object - */ -function flatten() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref$objects = _ref.objects, - objects = _ref$objects === void 0 ? true : _ref$objects, - _ref$arrays = _ref.arrays, - arrays = _ref$arrays === void 0 ? false : _ref$arrays, - _ref$separator = _ref.separator, - separator = _ref$separator === void 0 ? '.' : _ref$separator; - - function step(obj, flatDataRow, currentPath) { - Object.keys(obj).forEach(function (key) { - var newPath = currentPath ? "".concat(currentPath).concat(separator).concat(key) : key; - var value = obj[key]; - - if (objects && _typeof(value) === 'object' && value !== null && !Array.isArray(value) && Object.prototype.toString.call(value.toJSON) !== '[object Function]' && Object.keys(value).length) { - step(value, flatDataRow, newPath); - return; - } - - if (arrays && Array.isArray(value)) { - step(value, flatDataRow, newPath); - return; - } - - flatDataRow[newPath] = value; - }); - return flatDataRow; - } - - return function (dataRow) { - return step(dataRow, {}); - }; -} - -var flatten_1 = flatten; - -var setProp$1 = utils.setProp, - unsetProp$1 = utils.unsetProp, - flattenReducer$3 = utils.flattenReducer; - -function getUnwindablePaths(obj, currentPath) { - return Object.keys(obj).reduce(function (unwindablePaths, key) { - var newPath = currentPath ? "".concat(currentPath, ".").concat(key) : key; - var value = obj[key]; - - if (_typeof(value) === 'object' && value !== null && !Array.isArray(value) && Object.prototype.toString.call(value.toJSON) !== '[object Function]' && Object.keys(value).length) { - unwindablePaths = unwindablePaths.concat(getUnwindablePaths(value, newPath)); - } else if (Array.isArray(value)) { - unwindablePaths.push(newPath); - unwindablePaths = unwindablePaths.concat(value.map(function (arrObj) { - return getUnwindablePaths(arrObj, newPath); - }).reduce(flattenReducer$3, []).filter(function (item, index, arr) { - return arr.indexOf(item) !== index; - })); - } - - return unwindablePaths; - }, []); -} -/** - * Performs the unwind recursively in specified sequence - * - * @param {String[]} unwindPaths The paths as strings to be used to deconstruct the array - * @returns {Object => Array} Array of objects containing all rows after unwind of chosen paths -*/ - - -function unwind() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref$paths = _ref.paths, - paths = _ref$paths === void 0 ? undefined : _ref$paths, - _ref$blankOut = _ref.blankOut, - blankOut = _ref$blankOut === void 0 ? false : _ref$blankOut; - - function unwindReducer(rows, unwindPath) { - return rows.map(function (row) { - var unwindArray = lodash_get(row, unwindPath); - - if (!Array.isArray(unwindArray)) { - return row; - } - - if (!unwindArray.length) { - return unsetProp$1(row, unwindPath); - } - - return unwindArray.map(function (unwindRow, index) { - var clonedRow = blankOut && index > 0 ? {} : row; - return setProp$1(clonedRow, unwindPath, unwindRow); - }); - }).reduce(flattenReducer$3, []); - } - - paths = Array.isArray(paths) ? paths : paths ? [paths] : undefined; - return function (dataRow) { - return (paths || getUnwindablePaths(dataRow)).reduce(unwindReducer, [dataRow]); - }; -} - -var unwind_1 = unwind; - -var Readable = stream.Readable; -var Parser$1 = JSON2CSVParser_1; -var AsyncParser = JSON2CSVAsyncParser_1; -var Transform$2 = JSON2CSVTransform_1; // Convenience method to keep the API similar to version 3.X - -var parse = function parse(data, opts) { - return new JSON2CSVParser_1(opts).parse(data); -}; - -var parseAsync = function parseAsync(data, opts, transformOpts) { - try { - if (!(data instanceof Readable)) { - transformOpts = Object.assign({}, transformOpts, { - objectMode: true - }); - } - - var asyncParser = new JSON2CSVAsyncParser_1(opts, transformOpts); - var promise = asyncParser.promise(); - - if (Array.isArray(data)) { - data.forEach(function (item) { - return asyncParser.input.push(item); - }); - asyncParser.input.push(null); - } else if (data instanceof Readable) { - asyncParser.fromInput(data); - } else { - asyncParser.input.push(data); - asyncParser.input.push(null); - } - - return promise; - } catch (err) { - return Promise.reject(err); - } -}; - -var transforms = { - flatten: flatten_1, - unwind: unwind_1 -}; -var json2csv = { - Parser: Parser$1, - AsyncParser: AsyncParser, - Transform: Transform$2, - parse: parse, - parseAsync: parseAsync, - transforms: transforms -}; - -export default json2csv; -export { AsyncParser, Parser$1 as Parser, Transform$2 as Transform, parse, parseAsync, transforms }; diff --git a/node_modules/json2csv/dist/json2csv.umd.js b/node_modules/json2csv/dist/json2csv.umd.js deleted file mode 100644 index eea46da..0000000 --- a/node_modules/json2csv/dist/json2csv.umd.js +++ /dev/null @@ -1,7448 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = global || self, factory(global.json2csv = {})); -}(this, function (exports) { 'use strict'; - - var domain; - - // This constructor is used to store event handlers. Instantiating this is - // faster than explicitly calling `Object.create(null)` to get a "clean" empty - // object (tested with v8 v4.9). - function EventHandlers() {} - EventHandlers.prototype = Object.create(null); - - function EventEmitter() { - EventEmitter.init.call(this); - } - - // nodejs oddity - // require('events') === require('events').EventEmitter - EventEmitter.EventEmitter = EventEmitter; - - EventEmitter.usingDomains = false; - - EventEmitter.prototype.domain = undefined; - EventEmitter.prototype._events = undefined; - EventEmitter.prototype._maxListeners = undefined; - - // By default EventEmitters will print a warning if more than 10 listeners are - // added to it. This is a useful default which helps finding memory leaks. - EventEmitter.defaultMaxListeners = 10; - - EventEmitter.init = function() { - this.domain = null; - if (EventEmitter.usingDomains) { - // if there is an active domain, then attach to it. - if (domain.active && !(this instanceof domain.Domain)) ; - } - - if (!this._events || this._events === Object.getPrototypeOf(this)._events) { - this._events = new EventHandlers(); - this._eventsCount = 0; - } - - this._maxListeners = this._maxListeners || undefined; - }; - - // Obviously not all Emitters should be limited to 10. This function allows - // that to be increased. Set to zero for unlimited. - EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== 'number' || n < 0 || isNaN(n)) - throw new TypeError('"n" argument must be a positive number'); - this._maxListeners = n; - return this; - }; - - function $getMaxListeners(that) { - if (that._maxListeners === undefined) - return EventEmitter.defaultMaxListeners; - return that._maxListeners; - } - - EventEmitter.prototype.getMaxListeners = function getMaxListeners() { - return $getMaxListeners(this); - }; - - // These standalone emit* functions are used to optimize calling of event - // handlers for fast cases because emit() itself often has a variable number of - // arguments and can be deoptimized because of that. These functions always have - // the same number of arguments and thus do not get deoptimized, so the code - // inside them can execute faster. - function emitNone(handler, isFn, self) { - if (isFn) - handler.call(self); - else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - listeners[i].call(self); - } - } - function emitOne(handler, isFn, self, arg1) { - if (isFn) - handler.call(self, arg1); - else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - listeners[i].call(self, arg1); - } - } - function emitTwo(handler, isFn, self, arg1, arg2) { - if (isFn) - handler.call(self, arg1, arg2); - else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - listeners[i].call(self, arg1, arg2); - } - } - function emitThree(handler, isFn, self, arg1, arg2, arg3) { - if (isFn) - handler.call(self, arg1, arg2, arg3); - else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - listeners[i].call(self, arg1, arg2, arg3); - } - } - - function emitMany(handler, isFn, self, args) { - if (isFn) - handler.apply(self, args); - else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - listeners[i].apply(self, args); - } - } - - EventEmitter.prototype.emit = function emit(type) { - var er, handler, len, args, i, events, domain; - var doError = (type === 'error'); - - events = this._events; - if (events) - doError = (doError && events.error == null); - else if (!doError) - return false; - - domain = this.domain; - - // If there is no 'error' event listener then throw. - if (doError) { - er = arguments[1]; - if (domain) { - if (!er) - er = new Error('Uncaught, unspecified "error" event'); - er.domainEmitter = this; - er.domain = domain; - er.domainThrown = false; - domain.emit('error', er); - } else if (er instanceof Error) { - throw er; // Unhandled 'error' event - } else { - // At least give some kind of context to the user - var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); - err.context = er; - throw err; - } - return false; - } - - handler = events[type]; - - if (!handler) - return false; - - var isFn = typeof handler === 'function'; - len = arguments.length; - switch (len) { - // fast cases - case 1: - emitNone(handler, isFn, this); - break; - case 2: - emitOne(handler, isFn, this, arguments[1]); - break; - case 3: - emitTwo(handler, isFn, this, arguments[1], arguments[2]); - break; - case 4: - emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]); - break; - // slower - default: - args = new Array(len - 1); - for (i = 1; i < len; i++) - args[i - 1] = arguments[i]; - emitMany(handler, isFn, this, args); - } - - return true; - }; - - function _addListener(target, type, listener, prepend) { - var m; - var events; - var existing; - - if (typeof listener !== 'function') - throw new TypeError('"listener" argument must be a function'); - - events = target._events; - if (!events) { - events = target._events = new EventHandlers(); - target._eventsCount = 0; - } else { - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (events.newListener) { - target.emit('newListener', type, - listener.listener ? listener.listener : listener); - - // Re-assign `events` because a newListener handler could have caused the - // this._events to be assigned to a new object - events = target._events; - } - existing = events[type]; - } - - if (!existing) { - // Optimize the case of one listener. Don't need the extra array object. - existing = events[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === 'function') { - // Adding the second element, need to change to array. - existing = events[type] = prepend ? [listener, existing] : - [existing, listener]; - } else { - // If we've already got an array, just append. - if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } - } - - // Check for listener leak - if (!existing.warned) { - m = $getMaxListeners(target); - if (m && m > 0 && existing.length > m) { - existing.warned = true; - var w = new Error('Possible EventEmitter memory leak detected. ' + - existing.length + ' ' + type + ' listeners added. ' + - 'Use emitter.setMaxListeners() to increase limit'); - w.name = 'MaxListenersExceededWarning'; - w.emitter = target; - w.type = type; - w.count = existing.length; - emitWarning(w); - } - } - } - - return target; - } - function emitWarning(e) { - typeof console.warn === 'function' ? console.warn(e) : console.log(e); - } - EventEmitter.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); - }; - - EventEmitter.prototype.on = EventEmitter.prototype.addListener; - - EventEmitter.prototype.prependListener = - function prependListener(type, listener) { - return _addListener(this, type, listener, true); - }; - - function _onceWrap(target, type, listener) { - var fired = false; - function g() { - target.removeListener(type, g); - if (!fired) { - fired = true; - listener.apply(target, arguments); - } - } - g.listener = listener; - return g; - } - - EventEmitter.prototype.once = function once(type, listener) { - if (typeof listener !== 'function') - throw new TypeError('"listener" argument must be a function'); - this.on(type, _onceWrap(this, type, listener)); - return this; - }; - - EventEmitter.prototype.prependOnceListener = - function prependOnceListener(type, listener) { - if (typeof listener !== 'function') - throw new TypeError('"listener" argument must be a function'); - this.prependListener(type, _onceWrap(this, type, listener)); - return this; - }; - - // emits a 'removeListener' event iff the listener was removed - EventEmitter.prototype.removeListener = - function removeListener(type, listener) { - var list, events, position, i, originalListener; - - if (typeof listener !== 'function') - throw new TypeError('"listener" argument must be a function'); - - events = this._events; - if (!events) - return this; - - list = events[type]; - if (!list) - return this; - - if (list === listener || (list.listener && list.listener === listener)) { - if (--this._eventsCount === 0) - this._events = new EventHandlers(); - else { - delete events[type]; - if (events.removeListener) - this.emit('removeListener', type, list.listener || listener); - } - } else if (typeof list !== 'function') { - position = -1; - - for (i = list.length; i-- > 0;) { - if (list[i] === listener || - (list[i].listener && list[i].listener === listener)) { - originalListener = list[i].listener; - position = i; - break; - } - } - - if (position < 0) - return this; - - if (list.length === 1) { - list[0] = undefined; - if (--this._eventsCount === 0) { - this._events = new EventHandlers(); - return this; - } else { - delete events[type]; - } - } else { - spliceOne(list, position); - } - - if (events.removeListener) - this.emit('removeListener', type, originalListener || listener); - } - - return this; - }; - - EventEmitter.prototype.removeAllListeners = - function removeAllListeners(type) { - var listeners, events; - - events = this._events; - if (!events) - return this; - - // not listening for removeListener, no need to emit - if (!events.removeListener) { - if (arguments.length === 0) { - this._events = new EventHandlers(); - this._eventsCount = 0; - } else if (events[type]) { - if (--this._eventsCount === 0) - this._events = new EventHandlers(); - else - delete events[type]; - } - return this; - } - - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - var keys = Object.keys(events); - for (var i = 0, key; i < keys.length; ++i) { - key = keys[i]; - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = new EventHandlers(); - this._eventsCount = 0; - return this; - } - - listeners = events[type]; - - if (typeof listeners === 'function') { - this.removeListener(type, listeners); - } else if (listeners) { - // LIFO order - do { - this.removeListener(type, listeners[listeners.length - 1]); - } while (listeners[0]); - } - - return this; - }; - - EventEmitter.prototype.listeners = function listeners(type) { - var evlistener; - var ret; - var events = this._events; - - if (!events) - ret = []; - else { - evlistener = events[type]; - if (!evlistener) - ret = []; - else if (typeof evlistener === 'function') - ret = [evlistener.listener || evlistener]; - else - ret = unwrapListeners(evlistener); - } - - return ret; - }; - - EventEmitter.listenerCount = function(emitter, type) { - if (typeof emitter.listenerCount === 'function') { - return emitter.listenerCount(type); - } else { - return listenerCount.call(emitter, type); - } - }; - - EventEmitter.prototype.listenerCount = listenerCount; - function listenerCount(type) { - var events = this._events; - - if (events) { - var evlistener = events[type]; - - if (typeof evlistener === 'function') { - return 1; - } else if (evlistener) { - return evlistener.length; - } - } - - return 0; - } - - EventEmitter.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : []; - }; - - // About 1.5x faster than the two-arg version of Array#splice(). - function spliceOne(list, index) { - for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) - list[i] = list[k]; - list.pop(); - } - - function arrayClone(arr, i) { - var copy = new Array(i); - while (i--) - copy[i] = arr[i]; - return copy; - } - - function unwrapListeners(arr) { - var ret = new Array(arr.length); - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; - } - return ret; - } - - var global$1 = (typeof global !== "undefined" ? global : - typeof self !== "undefined" ? self : - typeof window !== "undefined" ? window : {}); - - var lookup = []; - var revLookup = []; - var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; - var inited = false; - function init () { - inited = true; - var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i]; - revLookup[code.charCodeAt(i)] = i; - } - - revLookup['-'.charCodeAt(0)] = 62; - revLookup['_'.charCodeAt(0)] = 63; - } - - function toByteArray (b64) { - if (!inited) { - init(); - } - var i, j, l, tmp, placeHolders, arr; - var len = b64.length; - - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // the number of equal signs (place holders) - // if there are two placeholders, than the two characters before it - // represent one byte - // if there is only one, then the three characters before it represent 2 bytes - // this is just a cheap hack to not do indexOf twice - placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0; - - // base64 is 4/3 + up to two characters of the original data - arr = new Arr(len * 3 / 4 - placeHolders); - - // if there are placeholders, only get up to the last complete 4 chars - l = placeHolders > 0 ? len - 4 : len; - - var L = 0; - - for (i = 0, j = 0; i < l; i += 4, j += 3) { - tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]; - arr[L++] = (tmp >> 16) & 0xFF; - arr[L++] = (tmp >> 8) & 0xFF; - arr[L++] = tmp & 0xFF; - } - - if (placeHolders === 2) { - tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4); - arr[L++] = tmp & 0xFF; - } else if (placeHolders === 1) { - tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2); - arr[L++] = (tmp >> 8) & 0xFF; - arr[L++] = tmp & 0xFF; - } - - return arr - } - - function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] - } - - function encodeChunk (uint8, start, end) { - var tmp; - var output = []; - for (var i = start; i < end; i += 3) { - tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]); - output.push(tripletToBase64(tmp)); - } - return output.join('') - } - - function fromByteArray (uint8) { - if (!inited) { - init(); - } - var tmp; - var len = uint8.length; - var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes - var output = ''; - var parts = []; - var maxChunkLength = 16383; // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))); - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1]; - output += lookup[tmp >> 2]; - output += lookup[(tmp << 4) & 0x3F]; - output += '=='; - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + (uint8[len - 1]); - output += lookup[tmp >> 10]; - output += lookup[(tmp >> 4) & 0x3F]; - output += lookup[(tmp << 2) & 0x3F]; - output += '='; - } - - parts.push(output); - - return parts.join('') - } - - function read (buffer, offset, isLE, mLen, nBytes) { - var e, m; - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var nBits = -7; - var i = isLE ? (nBytes - 1) : 0; - var d = isLE ? -1 : 1; - var s = buffer[offset + i]; - - i += d; - - e = s & ((1 << (-nBits)) - 1); - s >>= (-nBits); - nBits += eLen; - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & ((1 << (-nBits)) - 1); - e >>= (-nBits); - nBits += mLen; - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) - } - - function write (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c; - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0); - var i = isLE ? 0 : (nBytes - 1); - var d = isLE ? 1 : -1; - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; - - value = Math.abs(value); - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - if (value * c >= 2) { - e++; - c /= 2; - } - - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = (e << mLen) | m; - eLen += mLen; - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128; - } - - var toString = {}.toString; - - var isArray = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; - }; - - var INSPECT_MAX_BYTES = 50; - - /** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Use Object implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * Due to various browser bugs, sometimes the Object implementation will be used even - * when the browser supports typed arrays. - * - * Note: - * - * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, - * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. - * - * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. - * - * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of - * incorrect length in some situations. - - * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they - * get the Object implementation, which is slower but behaves correctly. - */ - Buffer.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined - ? global$1.TYPED_ARRAY_SUPPORT - : true; - - function kMaxLength () { - return Buffer.TYPED_ARRAY_SUPPORT - ? 0x7fffffff - : 0x3fffffff - } - - function createBuffer (that, length) { - if (kMaxLength() < length) { - throw new RangeError('Invalid typed array length') - } - if (Buffer.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = new Uint8Array(length); - that.__proto__ = Buffer.prototype; - } else { - // Fallback: Return an object instance of the Buffer class - if (that === null) { - that = new Buffer(length); - } - that.length = length; - } - - return that - } - - /** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - - function Buffer (arg, encodingOrOffset, length) { - if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { - return new Buffer(arg, encodingOrOffset, length) - } - - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new Error( - 'If encoding is specified then the first argument must be a string' - ) - } - return allocUnsafe(this, arg) - } - return from(this, arg, encodingOrOffset, length) - } - - Buffer.poolSize = 8192; // not used by this implementation - - // TODO: Legacy, not needed anymore. Remove in next major version. - Buffer._augment = function (arr) { - arr.__proto__ = Buffer.prototype; - return arr - }; - - function from (that, value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('"value" argument must not be a number') - } - - if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { - return fromArrayBuffer(that, value, encodingOrOffset, length) - } - - if (typeof value === 'string') { - return fromString(that, value, encodingOrOffset) - } - - return fromObject(that, value) - } - - /** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ - Buffer.from = function (value, encodingOrOffset, length) { - return from(null, value, encodingOrOffset, length) - }; - - if (Buffer.TYPED_ARRAY_SUPPORT) { - Buffer.prototype.__proto__ = Uint8Array.prototype; - Buffer.__proto__ = Uint8Array; - } - - function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be a number') - } else if (size < 0) { - throw new RangeError('"size" argument must not be negative') - } - } - - function alloc (that, size, fill, encoding) { - assertSize(size); - if (size <= 0) { - return createBuffer(that, size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpretted as a start offset. - return typeof encoding === 'string' - ? createBuffer(that, size).fill(fill, encoding) - : createBuffer(that, size).fill(fill) - } - return createBuffer(that, size) - } - - /** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ - Buffer.alloc = function (size, fill, encoding) { - return alloc(null, size, fill, encoding) - }; - - function allocUnsafe (that, size) { - assertSize(size); - that = createBuffer(that, size < 0 ? 0 : checked(size) | 0); - if (!Buffer.TYPED_ARRAY_SUPPORT) { - for (var i = 0; i < size; ++i) { - that[i] = 0; - } - } - return that - } - - /** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ - Buffer.allocUnsafe = function (size) { - return allocUnsafe(null, size) - }; - /** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ - Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(null, size) - }; - - function fromString (that, string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8'; - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('"encoding" must be a valid string encoding') - } - - var length = byteLength(string, encoding) | 0; - that = createBuffer(that, length); - - var actual = that.write(string, encoding); - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - that = that.slice(0, actual); - } - - return that - } - - function fromArrayLike (that, array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0; - that = createBuffer(that, length); - for (var i = 0; i < length; i += 1) { - that[i] = array[i] & 255; - } - return that - } - - function fromArrayBuffer (that, array, byteOffset, length) { - array.byteLength; // this throws if `array` is not a valid ArrayBuffer - - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('\'offset\' is out of bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('\'length\' is out of bounds') - } - - if (byteOffset === undefined && length === undefined) { - array = new Uint8Array(array); - } else if (length === undefined) { - array = new Uint8Array(array, byteOffset); - } else { - array = new Uint8Array(array, byteOffset, length); - } - - if (Buffer.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = array; - that.__proto__ = Buffer.prototype; - } else { - // Fallback: Return an object instance of the Buffer class - that = fromArrayLike(that, array); - } - return that - } - - function fromObject (that, obj) { - if (internalIsBuffer(obj)) { - var len = checked(obj.length) | 0; - that = createBuffer(that, len); - - if (that.length === 0) { - return that - } - - obj.copy(that, 0, 0, len); - return that - } - - if (obj) { - if ((typeof ArrayBuffer !== 'undefined' && - obj.buffer instanceof ArrayBuffer) || 'length' in obj) { - if (typeof obj.length !== 'number' || isnan(obj.length)) { - return createBuffer(that, 0) - } - return fromArrayLike(that, obj) - } - - if (obj.type === 'Buffer' && isArray(obj.data)) { - return fromArrayLike(that, obj.data) - } - } - - throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') - } - - function checked (length) { - // Note: cannot use `length < kMaxLength()` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= kMaxLength()) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + kMaxLength().toString(16) + ' bytes') - } - return length | 0 - } - Buffer.isBuffer = isBuffer; - function internalIsBuffer (b) { - return !!(b != null && b._isBuffer) - } - - Buffer.compare = function compare (a, b) { - if (!internalIsBuffer(a) || !internalIsBuffer(b)) { - throw new TypeError('Arguments must be Buffers') - } - - if (a === b) return 0 - - var x = a.length; - var y = b.length; - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i]; - y = b[i]; - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 - }; - - Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } - }; - - Buffer.concat = function concat (list, length) { - if (!isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer.alloc(0) - } - - var i; - if (length === undefined) { - length = 0; - for (i = 0; i < list.length; ++i) { - length += list[i].length; - } - } - - var buffer = Buffer.allocUnsafe(length); - var pos = 0; - for (i = 0; i < list.length; ++i) { - var buf = list[i]; - if (!internalIsBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - buf.copy(buffer, pos); - pos += buf.length; - } - return buffer - }; - - function byteLength (string, encoding) { - if (internalIsBuffer(string)) { - return string.length - } - if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && - (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - string = '' + string; - } - - var len = string.length; - if (len === 0) return 0 - - // Use a for loop to avoid recursion - var loweredCase = false; - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - case undefined: - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) return utf8ToBytes(string).length // assume utf8 - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } - } - Buffer.byteLength = byteLength; - - function slowToString (encoding, start, end) { - var loweredCase = false; - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0; - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length; - } - - if (end <= 0) { - return '' - } - - // Force coersion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0; - start >>>= 0; - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8'; - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase(); - loweredCase = true; - } - } - } - - // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect - // Buffer instances. - Buffer.prototype._isBuffer = true; - - function swap (b, n, m) { - var i = b[n]; - b[n] = b[m]; - b[m] = i; - } - - Buffer.prototype.swap16 = function swap16 () { - var len = this.length; - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1); - } - return this - }; - - Buffer.prototype.swap32 = function swap32 () { - var len = this.length; - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3); - swap(this, i + 1, i + 2); - } - return this - }; - - Buffer.prototype.swap64 = function swap64 () { - var len = this.length; - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7); - swap(this, i + 1, i + 6); - swap(this, i + 2, i + 5); - swap(this, i + 3, i + 4); - } - return this - }; - - Buffer.prototype.toString = function toString () { - var length = this.length | 0; - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) - }; - - Buffer.prototype.equals = function equals (b) { - if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 - }; - - Buffer.prototype.inspect = function inspect () { - var str = ''; - var max = INSPECT_MAX_BYTES; - if (this.length > 0) { - str = this.toString('hex', 0, max).match(/.{2}/g).join(' '); - if (this.length > max) str += ' ... '; - } - return '' - }; - - Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (!internalIsBuffer(target)) { - throw new TypeError('Argument must be a Buffer') - } - - if (start === undefined) { - start = 0; - } - if (end === undefined) { - end = target ? target.length : 0; - } - if (thisStart === undefined) { - thisStart = 0; - } - if (thisEnd === undefined) { - thisEnd = this.length; - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0; - end >>>= 0; - thisStart >>>= 0; - thisEnd >>>= 0; - - if (this === target) return 0 - - var x = thisEnd - thisStart; - var y = end - start; - var len = Math.min(x, y); - - var thisCopy = this.slice(thisStart, thisEnd); - var targetCopy = target.slice(start, end); - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i]; - y = targetCopy[i]; - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 - }; - - // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, - // OR the last index of `val` in `buffer` at offset <= `byteOffset`. - // - // Arguments: - // - buffer - a Buffer to search - // - val - a string, Buffer, or number - // - byteOffset - an index into `buffer`; will be clamped to an int32 - // - encoding - an optional encoding, relevant is val is a string - // - dir - true for indexOf, false for lastIndexOf - function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset; - byteOffset = 0; - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff; - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000; - } - byteOffset = +byteOffset; // Coerce to Number. - if (isNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1); - } - - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset; - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1; - } else if (byteOffset < 0) { - if (dir) byteOffset = 0; - else return -1 - } - - // Normalize val - if (typeof val === 'string') { - val = Buffer.from(val, encoding); - } - - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (internalIsBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF; // Search for a byte value [0-255] - if (Buffer.TYPED_ARRAY_SUPPORT && - typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') - } - - function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - var indexSize = 1; - var arrLength = arr.length; - var valLength = val.length; - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase(); - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2; - arrLength /= 2; - valLength /= 2; - byteOffset /= 2; - } - } - - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - var i; - if (dir) { - var foundIndex = -1; - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i; - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex; - foundIndex = -1; - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; - for (i = byteOffset; i >= 0; i--) { - var found = true; - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false; - break - } - } - if (found) return i - } - } - - return -1 - } - - Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 - }; - - Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) - }; - - Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) - }; - - function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0; - var remaining = buf.length - offset; - if (!length) { - length = remaining; - } else { - length = Number(length); - if (length > remaining) { - length = remaining; - } - } - - // must be an even number of digits - var strLen = string.length; - if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') - - if (length > strLen / 2) { - length = strLen / 2; - } - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16); - if (isNaN(parsed)) return i - buf[offset + i] = parsed; - } - return i - } - - function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) - } - - function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) - } - - function latin1Write (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) - } - - function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) - } - - function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) - } - - Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8'; - length = this.length; - offset = 0; - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset; - length = this.length; - offset = 0; - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset | 0; - if (isFinite(length)) { - length = length | 0; - if (encoding === undefined) encoding = 'utf8'; - } else { - encoding = length; - length = undefined; - } - // legacy write(string, encoding, offset, length) - remove in v0.13 - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - var remaining = this.length - offset; - if (length === undefined || length > remaining) length = remaining; - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8'; - - var loweredCase = false; - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - return asciiWrite(this, string, offset, length) - - case 'latin1': - case 'binary': - return latin1Write(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } - }; - - Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } - }; - - function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return fromByteArray(buf) - } else { - return fromByteArray(buf.slice(start, end)) - } - } - - function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end); - var res = []; - - var i = start; - while (i < end) { - var firstByte = buf[i]; - var codePoint = null; - var bytesPerSequence = (firstByte > 0xEF) ? 4 - : (firstByte > 0xDF) ? 3 - : (firstByte > 0xBF) ? 2 - : 1; - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint; - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte; - } - break - case 2: - secondByte = buf[i + 1]; - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F); - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint; - } - } - break - case 3: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F); - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint; - } - } - break - case 4: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - fourthByte = buf[i + 3]; - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F); - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint; - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD; - bytesPerSequence = 1; - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000; - res.push(codePoint >>> 10 & 0x3FF | 0xD800); - codePoint = 0xDC00 | codePoint & 0x3FF; - } - - res.push(codePoint); - i += bytesPerSequence; - } - - return decodeCodePointsArray(res) - } - - // Based on http://stackoverflow.com/a/22747272/680742, the browser with - // the lowest limit is Chrome, with 0x10000 args. - // We go 1 magnitude less, for safety - var MAX_ARGUMENTS_LENGTH = 0x1000; - - function decodeCodePointsArray (codePoints) { - var len = codePoints.length; - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - var res = ''; - var i = 0; - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ); - } - return res - } - - function asciiSlice (buf, start, end) { - var ret = ''; - end = Math.min(buf.length, end); - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F); - } - return ret - } - - function latin1Slice (buf, start, end) { - var ret = ''; - end = Math.min(buf.length, end); - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]); - } - return ret - } - - function hexSlice (buf, start, end) { - var len = buf.length; - - if (!start || start < 0) start = 0; - if (!end || end < 0 || end > len) end = len; - - var out = ''; - for (var i = start; i < end; ++i) { - out += toHex(buf[i]); - } - return out - } - - function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end); - var res = ''; - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); - } - return res - } - - Buffer.prototype.slice = function slice (start, end) { - var len = this.length; - start = ~~start; - end = end === undefined ? len : ~~end; - - if (start < 0) { - start += len; - if (start < 0) start = 0; - } else if (start > len) { - start = len; - } - - if (end < 0) { - end += len; - if (end < 0) end = 0; - } else if (end > len) { - end = len; - } - - if (end < start) end = start; - - var newBuf; - if (Buffer.TYPED_ARRAY_SUPPORT) { - newBuf = this.subarray(start, end); - newBuf.__proto__ = Buffer.prototype; - } else { - var sliceLen = end - start; - newBuf = new Buffer(sliceLen, undefined); - for (var i = 0; i < sliceLen; ++i) { - newBuf[i] = this[i + start]; - } - } - - return newBuf - }; - - /* - * Need to make sure that buffer isn't trying to write out of bounds. - */ - function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') - } - - Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - var val = this[offset]; - var mul = 1; - var i = 0; - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - - return val - }; - - Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) { - checkOffset(offset, byteLength, this.length); - } - - var val = this[offset + --byteLength]; - var mul = 1; - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul; - } - - return val - }; - - Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length); - return this[offset] - }; - - Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - return this[offset] | (this[offset + 1] << 8) - }; - - Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - return (this[offset] << 8) | this[offset + 1] - }; - - Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) - }; - - Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) - }; - - Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - var val = this[offset]; - var mul = 1; - var i = 0; - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - mul *= 0x80; - - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - - return val - }; - - Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - var i = byteLength; - var mul = 1; - var val = this[offset + --i]; - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul; - } - mul *= 0x80; - - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - - return val - }; - - Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length); - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) - }; - - Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - var val = this[offset] | (this[offset + 1] << 8); - return (val & 0x8000) ? val | 0xFFFF0000 : val - }; - - Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - var val = this[offset + 1] | (this[offset] << 8); - return (val & 0x8000) ? val | 0xFFFF0000 : val - }; - - Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) - }; - - Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) - }; - - Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - return read(this, offset, true, 23, 4) - }; - - Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - return read(this, offset, false, 23, 4) - }; - - Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length); - return read(this, offset, true, 52, 8) - }; - - Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length); - return read(this, offset, false, 52, 8) - }; - - function checkInt (buf, value, offset, ext, max, min) { - if (!internalIsBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') - } - - Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - var mul = 1; - var i = 0; - this[offset] = value & 0xFF; - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF; - } - - return offset + byteLength - }; - - Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - var i = byteLength - 1; - var mul = 1; - this[offset + i] = value & 0xFF; - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF; - } - - return offset + byteLength - }; - - Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); - this[offset] = (value & 0xff); - return offset + 1 - }; - - function objectWriteUInt16 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffff + value + 1; - for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { - buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> - (littleEndian ? i : 1 - i) * 8; - } - } - - Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - } else { - objectWriteUInt16(this, value, offset, true); - } - return offset + 2 - }; - - Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8); - this[offset + 1] = (value & 0xff); - } else { - objectWriteUInt16(this, value, offset, false); - } - return offset + 2 - }; - - function objectWriteUInt32 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffffffff + value + 1; - for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { - buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff; - } - } - - Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset + 3] = (value >>> 24); - this[offset + 2] = (value >>> 16); - this[offset + 1] = (value >>> 8); - this[offset] = (value & 0xff); - } else { - objectWriteUInt32(this, value, offset, true); - } - return offset + 4 - }; - - Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24); - this[offset + 1] = (value >>> 16); - this[offset + 2] = (value >>> 8); - this[offset + 3] = (value & 0xff); - } else { - objectWriteUInt32(this, value, offset, false); - } - return offset + 4 - }; - - Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1); - - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - var i = 0; - var mul = 1; - var sub = 0; - this[offset] = value & 0xFF; - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1; - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; - } - - return offset + byteLength - }; - - Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1); - - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - var i = byteLength - 1; - var mul = 1; - var sub = 0; - this[offset + i] = value & 0xFF; - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1; - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; - } - - return offset + byteLength - }; - - Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); - if (value < 0) value = 0xff + value + 1; - this[offset] = (value & 0xff); - return offset + 1 - }; - - Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - } else { - objectWriteUInt16(this, value, offset, true); - } - return offset + 2 - }; - - Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8); - this[offset + 1] = (value & 0xff); - } else { - objectWriteUInt16(this, value, offset, false); - } - return offset + 2 - }; - - Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - this[offset + 2] = (value >>> 16); - this[offset + 3] = (value >>> 24); - } else { - objectWriteUInt32(this, value, offset, true); - } - return offset + 4 - }; - - Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - if (value < 0) value = 0xffffffff + value + 1; - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24); - this[offset + 1] = (value >>> 16); - this[offset + 2] = (value >>> 8); - this[offset + 3] = (value & 0xff); - } else { - objectWriteUInt32(this, value, offset, false); - } - return offset + 4 - }; - - function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') - } - - function writeFloat (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 4); - } - write(buf, value, offset, littleEndian, 23, 4); - return offset + 4 - } - - Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) - }; - - Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) - }; - - function writeDouble (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 8); - } - write(buf, value, offset, littleEndian, 52, 8); - return offset + 8 - } - - Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) - }; - - Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) - }; - - // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) - Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!start) start = 0; - if (!end && end !== 0) end = this.length; - if (targetStart >= target.length) targetStart = target.length; - if (!targetStart) targetStart = 0; - if (end > 0 && end < start) end = start; - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length; - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start; - } - - var len = end - start; - var i; - - if (this === target && start < targetStart && targetStart < end) { - // descending copy from end - for (i = len - 1; i >= 0; --i) { - target[i + targetStart] = this[i + start]; - } - } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { - // ascending copy from start - for (i = 0; i < len; ++i) { - target[i + targetStart] = this[i + start]; - } - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, start + len), - targetStart - ); - } - - return len - }; - - // Usage: - // buffer.fill(number[, offset[, end]]) - // buffer.fill(buffer[, offset[, end]]) - // buffer.fill(string[, offset[, end]][, encoding]) - Buffer.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start; - start = 0; - end = this.length; - } else if (typeof end === 'string') { - encoding = end; - end = this.length; - } - if (val.length === 1) { - var code = val.charCodeAt(0); - if (code < 256) { - val = code; - } - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - } else if (typeof val === 'number') { - val = val & 255; - } - - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0; - end = end === undefined ? this.length : end >>> 0; - - if (!val) val = 0; - - var i; - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val; - } - } else { - var bytes = internalIsBuffer(val) - ? val - : utf8ToBytes(new Buffer(val, encoding).toString()); - var len = bytes.length; - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len]; - } - } - - return this - }; - - // HELPER FUNCTIONS - // ================ - - var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g; - - function base64clean (str) { - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = stringtrim(str).replace(INVALID_BASE64_RE, ''); - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '='; - } - return str - } - - function stringtrim (str) { - if (str.trim) return str.trim() - return str.replace(/^\s+|\s+$/g, '') - } - - function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) - } - - function utf8ToBytes (string, units) { - units = units || Infinity; - var codePoint; - var length = string.length; - var leadSurrogate = null; - var bytes = []; - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i); - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue - } - - // valid lead - leadSurrogate = codePoint; - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - leadSurrogate = codePoint; - continue - } - - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - } - - leadSurrogate = null; - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint); - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ); - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ); - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ); - } else { - throw new Error('Invalid code point') - } - } - - return bytes - } - - function asciiToBytes (str) { - var byteArray = []; - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF); - } - return byteArray - } - - function utf16leToBytes (str, units) { - var c, hi, lo; - var byteArray = []; - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i); - hi = c >> 8; - lo = c % 256; - byteArray.push(lo); - byteArray.push(hi); - } - - return byteArray - } - - - function base64ToBytes (str) { - return toByteArray(base64clean(str)) - } - - function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i]; - } - return i - } - - function isnan (val) { - return val !== val // eslint-disable-line no-self-compare - } - - - // the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence - // The _isBuffer check is for Safari 5-7 support, because it's missing - // Object.prototype.constructor. Remove this eventually - function isBuffer(obj) { - return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj)) - } - - function isFastBuffer (obj) { - return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) - } - - // For Node v0.10 support. Remove this eventually. - function isSlowBuffer (obj) { - return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0)) - } - - // shim for using process in browser - // based off https://github.com/defunctzombie/node-process/blob/master/browser.js - - function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); - } - function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); - } - var cachedSetTimeout = defaultSetTimout; - var cachedClearTimeout = defaultClearTimeout; - if (typeof global$1.setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } - if (typeof global$1.clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } - - function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } - } - - - } - function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - - } - var queue = []; - var draining = false; - var currentQueue; - var queueIndex = -1; - - function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } - } - - function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); - } - function nextTick(fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } - } - // v8 likes predictible objects - function Item(fun, array) { - this.fun = fun; - this.array = array; - } - Item.prototype.run = function () { - this.fun.apply(null, this.array); - }; - - // from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js - var performance = global$1.performance || {}; - var performanceNow = - performance.now || - performance.mozNow || - performance.msNow || - performance.oNow || - performance.webkitNow || - function(){ return (new Date()).getTime() }; - - var inherits; - if (typeof Object.create === 'function'){ - inherits = function inherits(ctor, superCtor) { - // implementation from standard node.js 'util' module - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; - } else { - inherits = function inherits(ctor, superCtor) { - ctor.super_ = superCtor; - var TempCtor = function () {}; - TempCtor.prototype = superCtor.prototype; - ctor.prototype = new TempCtor(); - ctor.prototype.constructor = ctor; - }; - } - var inherits$1 = inherits; - - var formatRegExp = /%[sdj%]/g; - function format(f) { - if (!isString(f)) { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(inspect(arguments[i])); - } - return objects.join(' '); - } - - var i = 1; - var args = arguments; - var len = args.length; - var str = String(f).replace(formatRegExp, function(x) { - if (x === '%%') return '%'; - if (i >= len) return x; - switch (x) { - case '%s': return String(args[i++]); - case '%d': return Number(args[i++]); - case '%j': - try { - return JSON.stringify(args[i++]); - } catch (_) { - return '[Circular]'; - } - default: - return x; - } - }); - for (var x = args[i]; i < len; x = args[++i]) { - if (isNull(x) || !isObject(x)) { - str += ' ' + x; - } else { - str += ' ' + inspect(x); - } - } - return str; - } - - // Mark that a method should not be used. - // Returns a modified function which warns once by default. - // If --no-deprecation is set, then it is a no-op. - function deprecate(fn, msg) { - // Allow for deprecating things in the process of starting up. - if (isUndefined(global$1.process)) { - return function() { - return deprecate(fn, msg).apply(this, arguments); - }; - } - - var warned = false; - function deprecated() { - if (!warned) { - { - console.error(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; - } - - var debugs = {}; - var debugEnviron; - function debuglog(set) { - if (isUndefined(debugEnviron)) - debugEnviron = ''; - set = set.toUpperCase(); - if (!debugs[set]) { - if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { - var pid = 0; - debugs[set] = function() { - var msg = format.apply(null, arguments); - console.error('%s %d: %s', set, pid, msg); - }; - } else { - debugs[set] = function() {}; - } - } - return debugs[set]; - } - - /** - * Echos the value of a value. Trys to print the value out - * in the best way possible given the different types. - * - * @param {Object} obj The object to print out. - * @param {Object} opts Optional options object that alters the output. - */ - /* legacy: obj, showHidden, depth, colors*/ - function inspect(obj, opts) { - // default options - var ctx = { - seen: [], - stylize: stylizeNoColor - }; - // legacy... - if (arguments.length >= 3) ctx.depth = arguments[2]; - if (arguments.length >= 4) ctx.colors = arguments[3]; - if (isBoolean(opts)) { - // legacy... - ctx.showHidden = opts; - } else if (opts) { - // got an "options" object - _extend(ctx, opts); - } - // set default options - if (isUndefined(ctx.showHidden)) ctx.showHidden = false; - if (isUndefined(ctx.depth)) ctx.depth = 2; - if (isUndefined(ctx.colors)) ctx.colors = false; - if (isUndefined(ctx.customInspect)) ctx.customInspect = true; - if (ctx.colors) ctx.stylize = stylizeWithColor; - return formatValue(ctx, obj, ctx.depth); - } - - // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics - inspect.colors = { - 'bold' : [1, 22], - 'italic' : [3, 23], - 'underline' : [4, 24], - 'inverse' : [7, 27], - 'white' : [37, 39], - 'grey' : [90, 39], - 'black' : [30, 39], - 'blue' : [34, 39], - 'cyan' : [36, 39], - 'green' : [32, 39], - 'magenta' : [35, 39], - 'red' : [31, 39], - 'yellow' : [33, 39] - }; - - // Don't use 'blue' not visible on cmd.exe - inspect.styles = { - 'special': 'cyan', - 'number': 'yellow', - 'boolean': 'yellow', - 'undefined': 'grey', - 'null': 'bold', - 'string': 'green', - 'date': 'magenta', - // "name": intentionally not styling - 'regexp': 'red' - }; - - - function stylizeWithColor(str, styleType) { - var style = inspect.styles[styleType]; - - if (style) { - return '\u001b[' + inspect.colors[style][0] + 'm' + str + - '\u001b[' + inspect.colors[style][1] + 'm'; - } else { - return str; - } - } - - - function stylizeNoColor(str, styleType) { - return str; - } - - - function arrayToHash(array) { - var hash = {}; - - array.forEach(function(val, idx) { - hash[val] = true; - }); - - return hash; - } - - - function formatValue(ctx, value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (ctx.customInspect && - value && - isFunction(value.inspect) && - // Filter out the util module, it's inspect function is special - value.inspect !== inspect && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - var ret = value.inspect(recurseTimes, ctx); - if (!isString(ret)) { - ret = formatValue(ctx, ret, recurseTimes); - } - return ret; - } - - // Primitive types cannot have properties - var primitive = formatPrimitive(ctx, value); - if (primitive) { - return primitive; - } - - // Look up the keys of the object. - var keys = Object.keys(value); - var visibleKeys = arrayToHash(keys); - - if (ctx.showHidden) { - keys = Object.getOwnPropertyNames(value); - } - - // IE doesn't make error fields non-enumerable - // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx - if (isError(value) - && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { - return formatError(value); - } - - // Some type of object without properties can be shortcutted. - if (keys.length === 0) { - if (isFunction(value)) { - var name = value.name ? ': ' + value.name : ''; - return ctx.stylize('[Function' + name + ']', 'special'); - } - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } - if (isDate(value)) { - return ctx.stylize(Date.prototype.toString.call(value), 'date'); - } - if (isError(value)) { - return formatError(value); - } - } - - var base = '', array = false, braces = ['{', '}']; - - // Make Array say that they are Array - if (isArray$1(value)) { - array = true; - braces = ['[', ']']; - } - - // Make functions say that they are functions - if (isFunction(value)) { - var n = value.name ? ': ' + value.name : ''; - base = ' [Function' + n + ']'; - } - - // Make RegExps say that they are RegExps - if (isRegExp(value)) { - base = ' ' + RegExp.prototype.toString.call(value); - } - - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + Date.prototype.toUTCString.call(value); - } - - // Make error with message first say the error - if (isError(value)) { - base = ' ' + formatError(value); - } - - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; - } - - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } else { - return ctx.stylize('[Object]', 'special'); - } - } - - ctx.seen.push(value); - - var output; - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); - } else { - output = keys.map(function(key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); - } - - ctx.seen.pop(); - - return reduceToSingleString(output, base, braces); - } - - - function formatPrimitive(ctx, value) { - if (isUndefined(value)) - return ctx.stylize('undefined', 'undefined'); - if (isString(value)) { - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return ctx.stylize(simple, 'string'); - } - if (isNumber(value)) - return ctx.stylize('' + value, 'number'); - if (isBoolean(value)) - return ctx.stylize('' + value, 'boolean'); - // For some reason typeof null is "object", so special case here. - if (isNull(value)) - return ctx.stylize('null', 'null'); - } - - - function formatError(value) { - return '[' + Error.prototype.toString.call(value) + ']'; - } - - - function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - for (var i = 0, l = value.length; i < l; ++i) { - if (hasOwnProperty(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - String(i), true)); - } else { - output.push(''); - } - } - keys.forEach(function(key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - key, true)); - } - }); - return output; - } - - - function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str, desc; - desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; - if (desc.get) { - if (desc.set) { - str = ctx.stylize('[Getter/Setter]', 'special'); - } else { - str = ctx.stylize('[Getter]', 'special'); - } - } else { - if (desc.set) { - str = ctx.stylize('[Setter]', 'special'); - } - } - if (!hasOwnProperty(visibleKeys, key)) { - name = '[' + key + ']'; - } - if (!str) { - if (ctx.seen.indexOf(desc.value) < 0) { - if (isNull(recurseTimes)) { - str = formatValue(ctx, desc.value, null); - } else { - str = formatValue(ctx, desc.value, recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (array) { - str = str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = ctx.stylize('[Circular]', 'special'); - } - } - if (isUndefined(name)) { - if (array && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, 'string'); - } - } - - return name + ': ' + str; - } - - - function reduceToSingleString(output, base, braces) { - var length = output.reduce(function(prev, cur) { - if (cur.indexOf('\n') >= 0) ; - return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; - }, 0); - - if (length > 60) { - return braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; - } - - return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; - } - - - // NOTE: These type checking functions intentionally don't use `instanceof` - // because it is fragile and can be easily faked with `Object.create()`. - function isArray$1(ar) { - return Array.isArray(ar); - } - - function isBoolean(arg) { - return typeof arg === 'boolean'; - } - - function isNull(arg) { - return arg === null; - } - - function isNumber(arg) { - return typeof arg === 'number'; - } - - function isString(arg) { - return typeof arg === 'string'; - } - - function isUndefined(arg) { - return arg === void 0; - } - - function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; - } - - function isObject(arg) { - return typeof arg === 'object' && arg !== null; - } - - function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; - } - - function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); - } - - function isFunction(arg) { - return typeof arg === 'function'; - } - - function objectToString(o) { - return Object.prototype.toString.call(o); - } - - function _extend(origin, add) { - // Don't do anything if add isn't an object - if (!add || !isObject(add)) return origin; - - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; - } - return origin; - } - function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); - } - - function BufferList() { - this.head = null; - this.tail = null; - this.length = 0; - } - - BufferList.prototype.push = function (v) { - var entry = { data: v, next: null }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; - }; - - BufferList.prototype.unshift = function (v) { - var entry = { data: v, next: this.head }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; - }; - - BufferList.prototype.shift = function () { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; - }; - - BufferList.prototype.clear = function () { - this.head = this.tail = null; - this.length = 0; - }; - - BufferList.prototype.join = function (s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - while (p = p.next) { - ret += s + p.data; - }return ret; - }; - - BufferList.prototype.concat = function (n) { - if (this.length === 0) return Buffer.alloc(0); - if (this.length === 1) return this.head.data; - var ret = Buffer.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - while (p) { - p.data.copy(ret, i); - i += p.data.length; - p = p.next; - } - return ret; - }; - - // Copyright Joyent, Inc. and other Node contributors. - var isBufferEncoding = Buffer.isEncoding - || function(encoding) { - switch (encoding && encoding.toLowerCase()) { - case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true; - default: return false; - } - }; - - - function assertEncoding(encoding) { - if (encoding && !isBufferEncoding(encoding)) { - throw new Error('Unknown encoding: ' + encoding); - } - } - - // StringDecoder provides an interface for efficiently splitting a series of - // buffers into a series of JS strings without breaking apart multi-byte - // characters. CESU-8 is handled as part of the UTF-8 encoding. - // - // @TODO Handling all encodings inside a single object makes it very difficult - // to reason about this code, so it should be split up in the future. - // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code - // points as used by CESU-8. - function StringDecoder(encoding) { - this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); - assertEncoding(encoding); - switch (this.encoding) { - case 'utf8': - // CESU-8 represents each of Surrogate Pair by 3-bytes - this.surrogateSize = 3; - break; - case 'ucs2': - case 'utf16le': - // UTF-16 represents each of Surrogate Pair by 2-bytes - this.surrogateSize = 2; - this.detectIncompleteChar = utf16DetectIncompleteChar; - break; - case 'base64': - // Base-64 stores 3 bytes in 4 chars, and pads the remainder. - this.surrogateSize = 3; - this.detectIncompleteChar = base64DetectIncompleteChar; - break; - default: - this.write = passThroughWrite; - return; - } - - // Enough space to store all bytes of a single character. UTF-8 needs 4 - // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate). - this.charBuffer = new Buffer(6); - // Number of bytes received for the current incomplete multi-byte character. - this.charReceived = 0; - // Number of bytes expected for the current incomplete multi-byte character. - this.charLength = 0; - } - - // write decodes the given buffer and returns it as JS string that is - // guaranteed to not contain any partial multi-byte characters. Any partial - // character found at the end of the buffer is buffered up, and will be - // returned when calling write again with the remaining bytes. - // - // Note: Converting a Buffer containing an orphan surrogate to a String - // currently works, but converting a String to a Buffer (via `new Buffer`, or - // Buffer#write) will replace incomplete surrogates with the unicode - // replacement character. See https://codereview.chromium.org/121173009/ . - StringDecoder.prototype.write = function(buffer) { - var charStr = ''; - // if our last write ended with an incomplete multibyte character - while (this.charLength) { - // determine how many remaining bytes this buffer has to offer for this char - var available = (buffer.length >= this.charLength - this.charReceived) ? - this.charLength - this.charReceived : - buffer.length; - - // add the new bytes to the char buffer - buffer.copy(this.charBuffer, this.charReceived, 0, available); - this.charReceived += available; - - if (this.charReceived < this.charLength) { - // still not enough chars in this buffer? wait for more ... - return ''; - } - - // remove bytes belonging to the current character from the buffer - buffer = buffer.slice(available, buffer.length); - - // get the character that was split - charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); - - // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character - var charCode = charStr.charCodeAt(charStr.length - 1); - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - this.charLength += this.surrogateSize; - charStr = ''; - continue; - } - this.charReceived = this.charLength = 0; - - // if there are no more bytes in this buffer, just emit our char - if (buffer.length === 0) { - return charStr; - } - break; - } - - // determine and set charLength / charReceived - this.detectIncompleteChar(buffer); - - var end = buffer.length; - if (this.charLength) { - // buffer the incomplete character bytes we got - buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end); - end -= this.charReceived; - } - - charStr += buffer.toString(this.encoding, 0, end); - - var end = charStr.length - 1; - var charCode = charStr.charCodeAt(end); - // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - var size = this.surrogateSize; - this.charLength += size; - this.charReceived += size; - this.charBuffer.copy(this.charBuffer, size, 0, size); - buffer.copy(this.charBuffer, 0, 0, size); - return charStr.substring(0, end); - } - - // or just emit the charStr - return charStr; - }; - - // detectIncompleteChar determines if there is an incomplete UTF-8 character at - // the end of the given buffer. If so, it sets this.charLength to the byte - // length that character, and sets this.charReceived to the number of bytes - // that are available for this character. - StringDecoder.prototype.detectIncompleteChar = function(buffer) { - // determine how many bytes we have to check at the end of this buffer - var i = (buffer.length >= 3) ? 3 : buffer.length; - - // Figure out if one of the last i bytes of our buffer announces an - // incomplete char. - for (; i > 0; i--) { - var c = buffer[buffer.length - i]; - - // See http://en.wikipedia.org/wiki/UTF-8#Description - - // 110XXXXX - if (i == 1 && c >> 5 == 0x06) { - this.charLength = 2; - break; - } - - // 1110XXXX - if (i <= 2 && c >> 4 == 0x0E) { - this.charLength = 3; - break; - } - - // 11110XXX - if (i <= 3 && c >> 3 == 0x1E) { - this.charLength = 4; - break; - } - } - this.charReceived = i; - }; - - StringDecoder.prototype.end = function(buffer) { - var res = ''; - if (buffer && buffer.length) - res = this.write(buffer); - - if (this.charReceived) { - var cr = this.charReceived; - var buf = this.charBuffer; - var enc = this.encoding; - res += buf.slice(0, cr).toString(enc); - } - - return res; - }; - - function passThroughWrite(buffer) { - return buffer.toString(this.encoding); - } - - function utf16DetectIncompleteChar(buffer) { - this.charReceived = buffer.length % 2; - this.charLength = this.charReceived ? 2 : 0; - } - - function base64DetectIncompleteChar(buffer) { - this.charReceived = buffer.length % 3; - this.charLength = this.charReceived ? 3 : 0; - } - - Readable.ReadableState = ReadableState; - - var debug = debuglog('stream'); - inherits$1(Readable, EventEmitter); - - function prependListener(emitter, event, fn) { - // Sadly this is not cacheable as some libraries bundle their own - // event emitter implementation with them. - if (typeof emitter.prependListener === 'function') { - return emitter.prependListener(event, fn); - } else { - // This is a hack to make sure that our error handler is attached before any - // userland ones. NEVER DO THIS. This is here only because this code needs - // to continue to work with older versions of Node.js that do not include - // the prependListener() method. The goal is to eventually remove this hack. - if (!emitter._events || !emitter._events[event]) - emitter.on(event, fn); - else if (Array.isArray(emitter._events[event])) - emitter._events[event].unshift(fn); - else - emitter._events[event] = [fn, emitter._events[event]]; - } - } - function listenerCount$1 (emitter, type) { - return emitter.listeners(type).length; - } - function ReadableState(options, stream) { - - options = options || {}; - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; - - // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; - - // A linked list is used to store data chunks instead of an array because the - // linked list can remove elements from the beginning faster than - // array.shift() - this.buffer = new BufferList(); - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } - } - function Readable(options) { - - if (!(this instanceof Readable)) return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - if (options && typeof options.read === 'function') this._read = options.read; - - EventEmitter.call(this); - } - - // Manually shove something into the read() buffer. - // This returns true if the highWaterMark has not been hit yet, - // similar to how Writable.write() returns true if you should - // write() some more. - Readable.prototype.push = function (chunk, encoding) { - var state = this._readableState; - - if (!state.objectMode && typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = Buffer.from(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk(this, state, chunk, encoding, false); - }; - - // Unshift should *always* be something directly out of read() - Readable.prototype.unshift = function (chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); - }; - - Readable.prototype.isPaused = function () { - return this._readableState.flowing === false; - }; - - function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var _e = new Error('stream.unshift() after end event'); - stream.emit('error', _e); - } else { - var skipAdd; - if (state.decoder && !addToFront && !encoding) { - chunk = state.decoder.write(chunk); - skipAdd = !state.objectMode && chunk.length === 0; - } - - if (!addToFront) state.reading = false; - - // Don't add to the buffer if we've decoded to an empty string chunk and - // we're not in object mode - if (!skipAdd) { - // if we want the data now, just emit it. - if (state.flowing && state.length === 0 && !state.sync) { - stream.emit('data', chunk); - stream.read(0); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); - - if (state.needReadable) emitReadable(stream); - } - } - - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); - } - - // if it's past the high water mark, we can push in some more. - // Also, if we have no data yet, we can stand some - // more bytes. This is to work around cases where hwm=0, - // such as the repl. Also, if the push() triggered a - // readable event, and the user called read(largeNumber) such that - // needReadable was set, then we ought to push more, so that another - // 'readable' event will be triggered. - function needMoreData(state) { - return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); - } - - // backwards compatibility. - Readable.prototype.setEncoding = function (enc) { - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; - return this; - }; - - // Don't raise the hwm > 8MB - var MAX_HWM = 0x800000; - function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 to prevent increasing hwm excessively in - // tiny amounts - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - return n; - } - - // This function is designed to be inlinable, so please take care when making - // changes to the function body. - function howMuchToRead(n, state) { - if (n <= 0 || state.length === 0 && state.ended) return 0; - if (state.objectMode) return 1; - if (n !== n) { - // Only flow one buffer at a time - if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; - } - // If we're asking for more than the current hwm, then raise the hwm. - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - if (n <= state.length) return n; - // Don't have enough - if (!state.ended) { - state.needReadable = true; - return 0; - } - return state.length; - } - - // you can override either this method, or the async _read(n) below. - Readable.prototype.read = function (n) { - debug('read', n); - n = parseInt(n, 10); - var state = this._readableState; - var nOrig = n; - - if (n !== 0) state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - debug('need readable', doRead); - - // if we currently have less than the highWaterMark, then also read some - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } else if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (!state.reading) n = howMuchToRead(nOrig, state); - } - - var ret; - if (n > 0) ret = fromList(n, state);else ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } else { - state.length -= n; - } - - if (state.length === 0) { - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; - - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended) endReadable(this); - } - - if (ret !== null) this.emit('data', ret); - - return ret; - }; - - function chunkInvalid(state, chunk) { - var er = null; - if (!isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; - } - - function onEofChunk(stream, state) { - if (state.ended) return; - if (state.decoder) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // emit 'readable' now to make sure it gets picked up. - emitReadable(stream); - } - - // Don't emit readable right away in sync mode, because this can trigger - // another read() call => stack overflow. This way, it might trigger - // a nextTick recursion warning, but that's not so bad. - function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - if (state.sync) nextTick(emitReadable_, stream);else emitReadable_(stream); - } - } - - function emitReadable_(stream) { - debug('emit readable'); - stream.emit('readable'); - flow(stream); - } - - // at this point, the user has presumably seen the 'readable' event, - // and called read() to consume some data. that may have triggered - // in turn another _read(n) call, in which case reading = true if - // it's in progress. - // However, if we're not ended, or reading, and the length < hwm, - // then go ahead and try to read some more preemptively. - function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - nextTick(maybeReadMore_, stream, state); - } - } - - function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break;else len = state.length; - } - state.readingMore = false; - } - - // abstract method. to be overridden in specific implementation classes. - // call cb(er, data) where data is <= n in length. - // for virtual (non-string, non-buffer) streams, "length" is somewhat - // arbitrary, and perhaps not very meaningful. - Readable.prototype._read = function (n) { - this.emit('error', new Error('not implemented')); - }; - - Readable.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - - var doEnd = (!pipeOpts || pipeOpts.end !== false); - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) nextTick(endFn);else src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - debug('onunpipe'); - if (readable === src) { - cleanup(); - } - } - - function onend() { - debug('onend'); - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - var cleanedUp = false; - function cleanup() { - debug('cleanup'); - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - src.removeListener('data', ondata); - - cleanedUp = true; - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } - - // If the user pushes more data while we're writing to dest then we'll end up - // in ondata again. However, we only want to increase awaitDrain once because - // dest will only emit one 'drain' event for the multiple writes. - // => Introduce a guard on increasing awaitDrain. - var increasedAwaitDrain = false; - src.on('data', ondata); - function ondata(chunk) { - debug('ondata'); - increasedAwaitDrain = false; - var ret = dest.write(chunk); - if (false === ret && !increasedAwaitDrain) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { - debug('false write response, pause', src._readableState.awaitDrain); - src._readableState.awaitDrain++; - increasedAwaitDrain = true; - } - src.pause(); - } - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (listenerCount$1(dest, 'error') === 0) dest.emit('error', er); - } - - // Make sure our error handler is attached before userland ones. - prependListener(dest, 'error', onerror); - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } - - return dest; - }; - - function pipeOnDrain(src) { - return function () { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; - if (state.awaitDrain === 0 && src.listeners('data').length) { - state.flowing = true; - flow(src); - } - }; - } - - Readable.prototype.unpipe = function (dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; - - if (!dest) dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - - for (var _i = 0; _i < len; _i++) { - dests[_i].emit('unpipe', this); - }return this; - } - - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; - }; - - // set up data events if they are asked for - // Ensure readable listeners eventually get something - Readable.prototype.on = function (ev, fn) { - var res = EventEmitter.prototype.on.call(this, ev, fn); - - if (ev === 'data') { - // Start flowing on next tick if stream isn't explicitly paused - if (this._readableState.flowing !== false) this.resume(); - } else if (ev === 'readable') { - var state = this._readableState; - if (!state.endEmitted && !state.readableListening) { - state.readableListening = state.needReadable = true; - state.emittedReadable = false; - if (!state.reading) { - nextTick(nReadingNextTick, this); - } else if (state.length) { - emitReadable(this); - } - } - } - - return res; - }; - Readable.prototype.addListener = Readable.prototype.on; - - function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); - } - - // pause() and resume() are remnants of the legacy readable stream API - // If the user uses them, then switch into old mode. - Readable.prototype.resume = function () { - var state = this._readableState; - if (!state.flowing) { - debug('resume'); - state.flowing = true; - resume(this, state); - } - return this; - }; - - function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - nextTick(resume_, stream, state); - } - } - - function resume_(stream, state) { - if (!state.reading) { - debug('resume read 0'); - stream.read(0); - } - - state.resumeScheduled = false; - state.awaitDrain = 0; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); - } - - Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); - if (false !== this._readableState.flowing) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - return this; - }; - - function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - while (state.flowing && stream.read() !== null) {} - } - - // wrap an old-style stream as the async data source. - // This is *not* part of the readable stream interface. - // It is an ugly unfortunate mess of history. - Readable.prototype.wrap = function (stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function () { - debug('wrapped end'); - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function (chunk) { - debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function (method) { - return function () { - return stream[method].apply(stream, arguments); - }; - }(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function (ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function (n) { - debug('wrapped _read', n); - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; - }; - - // exposed for testing purposes only. - Readable._fromList = fromList; - - // Pluck off n bytes from an array of buffers. - // Length is the combined lengths of all the buffers in the list. - // This function is designed to be inlinable, so please take care when making - // changes to the function body. - function fromList(n, state) { - // nothing buffered - if (state.length === 0) return null; - - var ret; - if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { - // read it all, truncate the list - if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); - state.buffer.clear(); - } else { - // read part of list - ret = fromListPartial(n, state.buffer, state.decoder); - } - - return ret; - } - - // Extracts only enough buffered data to satisfy the amount requested. - // This function is designed to be inlinable, so please take care when making - // changes to the function body. - function fromListPartial(n, list, hasStrings) { - var ret; - if (n < list.head.data.length) { - // slice is the same for buffers and strings - ret = list.head.data.slice(0, n); - list.head.data = list.head.data.slice(n); - } else if (n === list.head.data.length) { - // first chunk is a perfect match - ret = list.shift(); - } else { - // result spans more than one buffer - ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); - } - return ret; - } - - // Copies a specified amount of characters from the list of buffered data - // chunks. - // This function is designed to be inlinable, so please take care when making - // changes to the function body. - function copyFromBufferString(n, list) { - var p = list.head; - var c = 1; - var ret = p.data; - n -= ret.length; - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = str.slice(nb); - } - break; - } - ++c; - } - list.length -= c; - return ret; - } - - // Copies a specified amount of bytes from the list of buffered data chunks. - // This function is designed to be inlinable, so please take care when making - // changes to the function body. - function copyFromBuffer(n, list) { - var ret = Buffer.allocUnsafe(n); - var p = list.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = buf.slice(nb); - } - break; - } - ++c; - } - list.length -= c; - return ret; - } - - function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); - - if (!state.endEmitted) { - state.ended = true; - nextTick(endReadableNT, state, stream); - } - } - - function endReadableNT(state, stream) { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } - } - - function forEach(xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } - } - - function indexOf(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; - } - - // A bit simpler than readable streams. - Writable.WritableState = WritableState; - inherits$1(Writable, EventEmitter); - - function nop() {} - - function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; - this.next = null; - } - - function WritableState(options, stream) { - Object.defineProperty(this, 'buffer', { - get: deprecate(function () { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.') - }); - options = options || {}; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; - - // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // when true all writes will be buffered until .uncork() call - this.corked = 0; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function (er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.bufferedRequest = null; - this.lastBufferedRequest = null; - - // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - this.pendingcb = 0; - - // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - this.prefinished = false; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; - - // count buffered requests - this.bufferedRequestCount = 0; - - // allocate the first CorkedRequest, there is always - // one allocated and free to use, and we maintain at most two - this.corkedRequestsFree = new CorkedRequest(this); - } - - WritableState.prototype.getBuffer = function writableStateGetBuffer() { - var current = this.bufferedRequest; - var out = []; - while (current) { - out.push(current); - current = current.next; - } - return out; - }; - function Writable(options) { - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options); - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - if (options) { - if (typeof options.write === 'function') this._write = options.write; - - if (typeof options.writev === 'function') this._writev = options.writev; - } - - EventEmitter.call(this); - } - - // Otherwise people can pipe Writable streams, which is just wrong. - Writable.prototype.pipe = function () { - this.emit('error', new Error('Cannot pipe, not readable')); - }; - - function writeAfterEnd(stream, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - nextTick(cb, er); - } - - // If we get something that is not a buffer, string, null, or undefined, - // and we're not in objectMode, then that's an error. - // Otherwise stream chunks are all considered to be of length=1, and the - // watermarks determine how many objects to keep in the buffer, rather than - // how many bytes or characters. - function validChunk(stream, state, chunk, cb) { - var valid = true; - var er = false; - // Always throw error if a null is written - // if we are not in object mode then throw - // if it is not a buffer, string, or undefined. - if (chunk === null) { - er = new TypeError('May not write null values to stream'); - } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - if (er) { - stream.emit('error', er); - nextTick(cb, er); - valid = false; - } - return valid; - } - - Writable.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; - - if (typeof cb !== 'function') cb = nop; - - if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, chunk, encoding, cb); - } - - return ret; - }; - - Writable.prototype.cork = function () { - var state = this._writableState; - - state.corked++; - }; - - Writable.prototype.uncork = function () { - var state = this._writableState; - - if (state.corked) { - state.corked--; - - if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); - } - }; - - Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); - this._writableState.defaultEncoding = encoding; - return this; - }; - - function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = Buffer.from(chunk, encoding); - } - return chunk; - } - - // if we're already writing something, then just put this - // in the queue, and wait our turn. Otherwise, call _write - // If we return false, then we need a drain event, so set that flag. - function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - - if (Buffer.isBuffer(chunk)) encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) state.needDrain = true; - - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = new WriteReq(chunk, encoding, cb); - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } - state.bufferedRequestCount += 1; - } else { - doWrite(stream, state, false, len, chunk, encoding, cb); - } - - return ret; - } - - function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); - state.sync = false; - } - - function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; - if (sync) nextTick(cb, er);else cb(er); - - stream._writableState.errorEmitted = true; - stream.emit('error', er); - } - - function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; - } - - function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) onwriteError(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state); - - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer(stream, state); - } - - if (sync) { - /**/ - nextTick(afterWrite, stream, state, finished, cb); - /**/ - } else { - afterWrite(stream, state, finished, cb); - } - } - } - - function afterWrite(stream, state, finished, cb) { - if (!finished) onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); - } - - // Must force callback to be called on nextTick, so that we don't - // emit 'drain' before the write() consumer gets the 'false' return - // value, and has a chance to attach a 'drain' listener. - function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } - } - - // if there's something in the buffer waiting, then process it - function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; - - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; - - var count = 0; - while (entry) { - buffer[count] = entry; - entry = entry.next; - count += 1; - } - - doWrite(stream, state, true, state.length, buffer, '', holder.finish); - - // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite - state.pendingcb++; - state.lastBufferedRequest = null; - if (holder.next) { - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - state.corkedRequestsFree = new CorkedRequest(state); - } - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - break; - } - } - - if (entry === null) state.lastBufferedRequest = null; - } - - state.bufferedRequestCount = 0; - state.bufferedRequest = entry; - state.bufferProcessing = false; - } - - Writable.prototype._write = function (chunk, encoding, cb) { - cb(new Error('not implemented')); - }; - - Writable.prototype._writev = null; - - Writable.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); - - // .end() fully uncorks - if (state.corked) { - state.corked = 1; - this.uncork(); - } - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) endWritable(this, state, cb); - }; - - function needFinish(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; - } - - function prefinish(stream, state) { - if (!state.prefinished) { - state.prefinished = true; - stream.emit('prefinish'); - } - } - - function finishMaybe(stream, state) { - var need = needFinish(state); - if (need) { - if (state.pendingcb === 0) { - prefinish(stream, state); - state.finished = true; - stream.emit('finish'); - } else { - prefinish(stream, state); - } - } - return need; - } - - function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) nextTick(cb);else stream.once('finish', cb); - } - state.ended = true; - stream.writable = false; - } - - // It seems a linked list but it is not - // there will be only 2 of these for each stream - function CorkedRequest(state) { - var _this = this; - - this.next = null; - this.entry = null; - - this.finish = function (err) { - var entry = _this.entry; - _this.entry = null; - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } - if (state.corkedRequestsFree) { - state.corkedRequestsFree.next = _this; - } else { - state.corkedRequestsFree = _this; - } - }; - } - - inherits$1(Duplex, Readable); - - var keys = Object.keys(Writable.prototype); - for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; - } - function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) this.readable = false; - - if (options && options.writable === false) this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; - - this.once('end', onend); - } - - // the no-half-open enforcer - function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) return; - - // no more data can be written. - // But allow more writes to happen in this tick. - nextTick(onEndNT, this); - } - - function onEndNT(self) { - self.end(); - } - - // a transform stream is a readable/writable stream where you do - inherits$1(Transform, Duplex); - - function TransformState(stream) { - this.afterTransform = function (er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; - this.writeencoding = null; - } - - function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (data !== null && data !== undefined) stream.push(data); - - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } - } - function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options); - - Duplex.call(this, options); - - this._transformState = new TransformState(this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; - - if (typeof options.flush === 'function') this._flush = options.flush; - } - - this.once('prefinish', function () { - if (typeof this._flush === 'function') this._flush(function (er) { - done(stream, er); - });else done(stream); - }); - } - - Transform.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); - }; - - // This is the part where you do stuff! - // override this function in implementation classes. - // 'chunk' is an input chunk. - // - // Call `push(newChunk)` to pass along transformed output - // to the readable side. You may call 'push' zero or more times. - // - // Call `cb(err)` when you are done with this chunk. If you pass - // an error, then that'll put the hurt on the whole operation. If you - // never call cb(), then you'll never get another chunk. - Transform.prototype._transform = function (chunk, encoding, cb) { - throw new Error('Not implemented'); - }; - - Transform.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); - } - }; - - // Doesn't matter what the args are here. - // _transform does all the work. - // That we got here means that the readable side wants more data. - Transform.prototype._read = function (n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } - }; - - function done(stream, er) { - if (er) return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var ts = stream._transformState; - - if (ws.length) throw new Error('Calling transform done when ws.length != 0'); - - if (ts.transforming) throw new Error('Calling transform done when still transforming'); - - return stream.push(null); - } - - inherits$1(PassThrough, Transform); - function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); - - Transform.call(this, options); - } - - PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); - }; - - inherits$1(Stream, EventEmitter); - Stream.Readable = Readable; - Stream.Writable = Writable; - Stream.Duplex = Duplex; - Stream.Transform = Transform; - Stream.PassThrough = PassThrough; - - // Backwards-compat with node 0.4.x - Stream.Stream = Stream; - - // old-style streams. Note that the pipe method (the only relevant - // part of this class) is overridden in the Readable class. - - function Stream() { - EventEmitter.call(this); - } - - Stream.prototype.pipe = function(dest, options) { - var source = this; - - function ondata(chunk) { - if (dest.writable) { - if (false === dest.write(chunk) && source.pause) { - source.pause(); - } - } - } - - source.on('data', ondata); - - function ondrain() { - if (source.readable && source.resume) { - source.resume(); - } - } - - dest.on('drain', ondrain); - - // If the 'end' option is not supplied, dest.end() will be called when - // source gets the 'end' or 'close' events. Only dest.end() once. - if (!dest._isStdio && (!options || options.end !== false)) { - source.on('end', onend); - source.on('close', onclose); - } - - var didOnEnd = false; - function onend() { - if (didOnEnd) return; - didOnEnd = true; - - dest.end(); - } - - - function onclose() { - if (didOnEnd) return; - didOnEnd = true; - - if (typeof dest.destroy === 'function') dest.destroy(); - } - - // don't leave dangling pipes when there are errors. - function onerror(er) { - cleanup(); - if (EventEmitter.listenerCount(this, 'error') === 0) { - throw er; // Unhandled stream error in pipe. - } - } - - source.on('error', onerror); - dest.on('error', onerror); - - // remove all the event listeners that were added. - function cleanup() { - source.removeListener('data', ondata); - dest.removeListener('drain', ondrain); - - source.removeListener('end', onend); - source.removeListener('close', onclose); - - source.removeListener('error', onerror); - dest.removeListener('error', onerror); - - source.removeListener('end', cleanup); - source.removeListener('close', cleanup); - - dest.removeListener('close', cleanup); - } - - source.on('end', cleanup); - source.on('close', cleanup); - - dest.on('close', cleanup); - - dest.emit('pipe', source); - - // Allow for unix-like usage: A.pipe(B).pipe(C) - return dest; - }; - - function _typeof(obj) { - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function (obj) { - return typeof obj; - }; - } else { - _typeof = function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - - return _typeof(obj); - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; - } - - function _objectSpread(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - var ownKeys = Object.keys(source); - - if (typeof Object.getOwnPropertySymbols === 'function') { - ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { - return Object.getOwnPropertyDescriptor(source, sym).enumerable; - })); - } - - ownKeys.forEach(function (key) { - _defineProperty(target, key, source[key]); - }); - } - - return target; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - - return _setPrototypeOf(o, p); - } - - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return self; - } - - function _possibleConstructorReturn(self, call) { - if (call && (typeof call === "object" || typeof call === "function")) { - return call; - } - - return _assertThisInitialized(self); - } - - function _toArray(arr) { - return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); - } - - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); - } - - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) { - for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; - - return arr2; - } - } - - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - - function _iterableToArray(iter) { - if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); - } - - function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance"); - } - - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); - } - - /* - The MIT License (MIT) - - Copyright (c) 2016 CoderPuppy - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - - */ - var _endianness; - function endianness() { - if (typeof _endianness === 'undefined') { - var a = new ArrayBuffer(2); - var b = new Uint8Array(a); - var c = new Uint16Array(a); - b[0] = 1; - b[1] = 2; - if (c[0] === 258) { - _endianness = 'BE'; - } else if (c[0] === 513){ - _endianness = 'LE'; - } else { - throw new Error('unable to figure out endianess'); - } - } - return _endianness; - } - - function hostname() { - if (typeof global$1.location !== 'undefined') { - return global$1.location.hostname - } else return ''; - } - - function loadavg() { - return []; - } - - function uptime() { - return 0; - } - - function freemem() { - return Number.MAX_VALUE; - } - - function totalmem() { - return Number.MAX_VALUE; - } - - function cpus() { - return []; - } - - function type() { - return 'Browser'; - } - - function release () { - if (typeof global$1.navigator !== 'undefined') { - return global$1.navigator.appVersion; - } - return ''; - } - - function networkInterfaces(){} - function getNetworkInterfaces(){} - - function tmpDir() { - return '/tmp'; - } - var tmpdir = tmpDir; - - var EOL = '\n'; - var os = { - EOL: EOL, - tmpdir: tmpdir, - tmpDir: tmpDir, - networkInterfaces:networkInterfaces, - getNetworkInterfaces: getNetworkInterfaces, - release: release, - type: type, - cpus: cpus, - totalmem: totalmem, - freemem: freemem, - uptime: uptime, - loadavg: loadavg, - hostname: hostname, - endianness: endianness, - }; - - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - /** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - - /** Used as the `TypeError` message for "Functions" methods. */ - var FUNC_ERROR_TEXT = 'Expected a function'; - - /** Used to stand-in for `undefined` hash values. */ - var HASH_UNDEFINED = '__lodash_hash_undefined__'; - - /** Used as references for various `Number` constants. */ - var INFINITY = 1 / 0; - - /** `Object#toString` result references. */ - var funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - symbolTag = '[object Symbol]'; - - /** Used to match property names within property paths. */ - var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/, - reLeadingDot = /^\./, - rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - - /** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ - var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; - - /** Used to match backslashes in property paths. */ - var reEscapeChar = /\\(\\)?/g; - - /** Used to detect host constructors (Safari). */ - var reIsHostCtor = /^\[object .+?Constructor\]$/; - - /** Detect free variable `global` from Node.js. */ - var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; - - /** Detect free variable `self`. */ - var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - - /** Used as a reference to the global object. */ - var root = freeGlobal || freeSelf || Function('return this')(); - - /** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ - function getValue(object, key) { - return object == null ? undefined : object[key]; - } - - /** - * Checks if `value` is a host object in IE < 9. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a host object, else `false`. - */ - function isHostObject(value) { - // Many host objects are `Object` objects that can coerce to strings - // despite having improperly defined `toString` methods. - var result = false; - if (value != null && typeof value.toString != 'function') { - try { - result = !!(value + ''); - } catch (e) {} - } - return result; - } - - /** Used for built-in method references. */ - var arrayProto = Array.prototype, - funcProto = Function.prototype, - objectProto = Object.prototype; - - /** Used to detect overreaching core-js shims. */ - var coreJsData = root['__core-js_shared__']; - - /** Used to detect methods masquerading as native. */ - var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; - }()); - - /** Used to resolve the decompiled source of functions. */ - var funcToString = funcProto.toString; - - /** Used to check objects for own properties. */ - var hasOwnProperty$1 = objectProto.hasOwnProperty; - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var objectToString$1 = objectProto.toString; - - /** Used to detect if a method is native. */ - var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty$1).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' - ); - - /** Built-in value references. */ - var Symbol$1 = root.Symbol, - splice = arrayProto.splice; - - /* Built-in method references that are verified to be native. */ - var Map = getNative(root, 'Map'), - nativeCreate = getNative(Object, 'create'); - - /** Used to convert symbols to primitives and strings. */ - var symbolProto = Symbol$1 ? Symbol$1.prototype : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - - /** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function Hash(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ - function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - } - - /** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function hashDelete(key) { - return this.has(key) && delete this.__data__[key]; - } - - /** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty$1.call(data, key) ? data[key] : undefined; - } - - /** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function hashHas(key) { - var data = this.__data__; - return nativeCreate ? data[key] !== undefined : hasOwnProperty$1.call(data, key); - } - - /** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ - function hashSet(key, value) { - var data = this.__data__; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; - } - - // Add methods to `Hash`. - Hash.prototype.clear = hashClear; - Hash.prototype['delete'] = hashDelete; - Hash.prototype.get = hashGet; - Hash.prototype.has = hashHas; - Hash.prototype.set = hashSet; - - /** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function ListCache(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ - function listCacheClear() { - this.__data__ = []; - } - - /** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - return true; - } - - /** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; - } - - /** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; - } - - /** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ - function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; - } - - // Add methods to `ListCache`. - ListCache.prototype.clear = listCacheClear; - ListCache.prototype['delete'] = listCacheDelete; - ListCache.prototype.get = listCacheGet; - ListCache.prototype.has = listCacheHas; - ListCache.prototype.set = listCacheSet; - - /** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function MapCache(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ - function mapCacheClear() { - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; - } - - /** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function mapCacheDelete(key) { - return getMapData(this, key)['delete'](key); - } - - /** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function mapCacheGet(key) { - return getMapData(this, key).get(key); - } - - /** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function mapCacheHas(key) { - return getMapData(this, key).has(key); - } - - /** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ - function mapCacheSet(key, value) { - getMapData(this, key).set(key, value); - return this; - } - - // Add methods to `MapCache`. - MapCache.prototype.clear = mapCacheClear; - MapCache.prototype['delete'] = mapCacheDelete; - MapCache.prototype.get = mapCacheGet; - MapCache.prototype.has = mapCacheHas; - MapCache.prototype.set = mapCacheSet; - - /** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; - } - - /** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ - function baseGet(object, path) { - path = isKey(path, object) ? [path] : castPath(path); - - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[toKey(path[index++])]; - } - return (index && index == length) ? object : undefined; - } - - /** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ - function baseIsNative(value) { - if (!isObject$1(value) || isMasked(value)) { - return false; - } - var pattern = (isFunction$1(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); - } - - /** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ - function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; - } - - /** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @returns {Array} Returns the cast property path array. - */ - function castPath(value) { - return isArray$2(value) ? value : stringToPath(value); - } - - /** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ - function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; - } - - /** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ - function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; - } - - /** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ - function isKey(value, object) { - if (isArray$2(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); - } - - /** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ - function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); - } - - /** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ - function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); - } - - /** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ - var stringToPath = memoize(function(string) { - string = toString$1(string); - - var result = []; - if (reLeadingDot.test(string)) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, string) { - result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; - }); - - /** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ - function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; - } - - /** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to process. - * @returns {string} Returns the source code. - */ - function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; - } - - /** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ - function memoize(func, resolver) { - if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result); - return result; - }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; - } - - // Assign cache to `_.memoize`. - memoize.Cache = MapCache; - - /** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ - function eq(value, other) { - return value === other || (value !== value && other !== other); - } - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ - var isArray$2 = Array.isArray; - - /** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ - function isFunction$1(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. - var tag = isObject$1(value) ? objectToString$1.call(value) : ''; - return tag == funcTag || tag == genTag; - } - - /** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ - function isObject$1(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); - } - - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - function isObjectLike(value) { - return !!value && typeof value == 'object'; - } - - /** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ - function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && objectToString$1.call(value) == symbolTag); - } - - /** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {string} Returns the string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ - function toString$1(value) { - return value == null ? '' : baseToString(value); - } - - /** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ - function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; - } - - var lodash_get = get; - - function getProp(obj, path, defaultValue) { - return obj[path] === undefined ? defaultValue : obj[path]; - } - - function setProp(obj, path, value) { - var pathArray = Array.isArray(path) ? path : path.split('.'); - - var _pathArray = _toArray(pathArray), - key = _pathArray[0], - restPath = _pathArray.slice(1); - - return _objectSpread({}, obj, _defineProperty({}, key, pathArray.length > 1 ? setProp(obj[key] || {}, restPath, value) : value)); - } - - function unsetProp(obj, path) { - var pathArray = Array.isArray(path) ? path : path.split('.'); - - var _pathArray2 = _toArray(pathArray), - key = _pathArray2[0], - restPath = _pathArray2.slice(1); - - if (_typeof(obj[key]) !== 'object') { - // This will never be hit in the current code because unwind does the check before calling unsetProp - - /* istanbul ignore next */ - return obj; - } - - if (pathArray.length === 1) { - return Object.keys(obj).filter(function (prop) { - return prop !== key; - }).reduce(function (acc, prop) { - return Object.assign(acc, _defineProperty({}, prop, obj[prop])); - }, {}); - } - - return Object.keys(obj).reduce(function (acc, prop) { - return _objectSpread({}, acc, _defineProperty({}, prop, prop !== key ? obj[prop] : unsetProp(obj[key], restPath))); - }, {}); - } - - function flattenReducer(acc, arr) { - try { - // This is faster but susceptible to `RangeError: Maximum call stack size exceeded` - acc.push.apply(acc, _toConsumableArray(arr)); - return acc; - } catch (err) { - // Fallback to a slower but safer option - return acc.concat(arr); - } - } - - function fastJoin(arr, separator) { - var isFirst = true; - return arr.reduce(function (acc, elem) { - if (elem === null || elem === undefined) { - elem = ''; - } - - if (isFirst) { - isFirst = false; - return "".concat(elem); - } - - return "".concat(acc).concat(separator).concat(elem); - }, ''); - } - - var utils = { - getProp: getProp, - setProp: setProp, - unsetProp: unsetProp, - fastJoin: fastJoin, - flattenReducer: flattenReducer - }; - - var getProp$1 = utils.getProp, - fastJoin$1 = utils.fastJoin, - flattenReducer$1 = utils.flattenReducer; - - var JSON2CSVBase = - /*#__PURE__*/ - function () { - function JSON2CSVBase(opts) { - _classCallCheck(this, JSON2CSVBase); - - this.opts = this.preprocessOpts(opts); - } - /** - * Check passing opts and set defaults. - * - * @param {Json2CsvOptions} opts Options object containing fields, - * delimiter, default value, quote mark, header, etc. - */ - - - _createClass(JSON2CSVBase, [{ - key: "preprocessOpts", - value: function preprocessOpts(opts) { - var processedOpts = Object.assign({}, opts); - processedOpts.transforms = !Array.isArray(processedOpts.transforms) ? processedOpts.transforms ? [processedOpts.transforms] : [] : processedOpts.transforms; - processedOpts.delimiter = processedOpts.delimiter || ','; - processedOpts.eol = processedOpts.eol || os.EOL; - processedOpts.quote = typeof processedOpts.quote === 'string' ? processedOpts.quote : '"'; - processedOpts.escapedQuote = typeof processedOpts.escapedQuote === 'string' ? processedOpts.escapedQuote : "".concat(processedOpts.quote).concat(processedOpts.quote); - processedOpts.header = processedOpts.header !== false; - processedOpts.includeEmptyRows = processedOpts.includeEmptyRows || false; - processedOpts.withBOM = processedOpts.withBOM || false; - return processedOpts; - } - /** - * Check and normalize the fields configuration. - * - * @param {(string|object)[]} fields Fields configuration provided by the user - * or inferred from the data - * @returns {object[]} preprocessed FieldsInfo array - */ - - }, { - key: "preprocessFieldsInfo", - value: function preprocessFieldsInfo(fields) { - var _this = this; - - return fields.map(function (fieldInfo) { - if (typeof fieldInfo === 'string') { - return { - label: fieldInfo, - value: fieldInfo.includes('.') || fieldInfo.includes('[') ? function (row) { - return lodash_get(row, fieldInfo, _this.opts.defaultValue); - } : function (row) { - return getProp$1(row, fieldInfo, _this.opts.defaultValue); - } - }; - } - - if (_typeof(fieldInfo) === 'object') { - var defaultValue = 'default' in fieldInfo ? fieldInfo.default : _this.opts.defaultValue; - - if (typeof fieldInfo.value === 'string') { - return { - label: fieldInfo.label || fieldInfo.value, - value: fieldInfo.value.includes('.') || fieldInfo.value.includes('[') ? function (row) { - return lodash_get(row, fieldInfo.value, defaultValue); - } : function (row) { - return getProp$1(row, fieldInfo.value, defaultValue); - } - }; - } - - if (typeof fieldInfo.value === 'function') { - var label = fieldInfo.label || fieldInfo.value.name || ''; - var field = { - label: label, - default: defaultValue - }; - return { - label: label, - value: function value(row) { - var value = fieldInfo.value(row, field); - return value === null || value === undefined ? defaultValue : value; - } - }; - } - } - - throw new Error('Invalid field info option. ' + JSON.stringify(fieldInfo)); - }); - } - /** - * Create the title row with all the provided fields as column headings - * - * @returns {String} titles as a string - */ - - }, { - key: "getHeader", - value: function getHeader() { - var _this2 = this; - - return fastJoin$1(this.opts.fields.map(function (fieldInfo) { - return _this2.processValue(fieldInfo.label); - }), this.opts.delimiter); - } - /** - * Preprocess each object according to the given transforms (unwind, flatten, etc.). - * @param {Object} row JSON object to be converted in a CSV row - */ - - }, { - key: "preprocessRow", - value: function preprocessRow(row) { - return this.opts.transforms.reduce(function (rows, transform) { - return rows.map(function (row) { - return transform(row); - }).reduce(flattenReducer$1, []); - }, [row]); - } - /** - * Create the content of a specific CSV row - * - * @param {Object} row JSON object to be converted in a CSV row - * @returns {String} CSV string (row) - */ - - }, { - key: "processRow", - value: function processRow(row) { - var _this3 = this; - - if (!row) { - return undefined; - } - - var processedRow = this.opts.fields.map(function (fieldInfo) { - return _this3.processCell(row, fieldInfo); - }); - - if (!this.opts.includeEmptyRows && processedRow.every(function (field) { - return field === undefined; - })) { - return undefined; - } - - return fastJoin$1(processedRow, this.opts.delimiter); - } - /** - * Create the content of a specfic CSV row cell - * - * @param {Object} row JSON object representing the CSV row that the cell belongs to - * @param {FieldInfo} fieldInfo Details of the field to process to be a CSV cell - * @returns {String} CSV string (cell) - */ - - }, { - key: "processCell", - value: function processCell(row, fieldInfo) { - return this.processValue(fieldInfo.value(row)); - } - /** - * Create the content of a specfic CSV row cell - * - * @param {Any} value Value to be included in a CSV cell - * @returns {String} Value stringified and processed - */ - - }, { - key: "processValue", - value: function processValue(value) { - if (value === null || value === undefined) { - return undefined; - } - - var valueType = _typeof(value); - - if (valueType !== 'boolean' && valueType !== 'number' && valueType !== 'string') { - value = JSON.stringify(value); - - if (value === undefined) { - return undefined; - } - - if (value[0] === '"') { - value = value.replace(/^"(.+)"$/, '$1'); - } - } - - if (typeof value === 'string') { - if (this.opts.excelStrings) { - if (value.includes(this.opts.quote)) { - value = value.replace(new RegExp(this.opts.quote, 'g'), "".concat(this.opts.escapedQuote).concat(this.opts.escapedQuote)); - } - - value = "\"=\"\"".concat(value, "\"\"\""); - } else { - if (value.includes(this.opts.quote)) { - value = value.replace(new RegExp(this.opts.quote, 'g'), this.opts.escapedQuote); - } - - value = "".concat(this.opts.quote).concat(value).concat(this.opts.quote); - } - } - - return value; - } - }]); - - return JSON2CSVBase; - }(); - - var JSON2CSVBase_1 = JSON2CSVBase; - - var fastJoin$2 = utils.fastJoin, - flattenReducer$2 = utils.flattenReducer; - - var JSON2CSVParser = - /*#__PURE__*/ - function (_JSON2CSVBase) { - _inherits(JSON2CSVParser, _JSON2CSVBase); - - function JSON2CSVParser(opts) { - var _this; - - _classCallCheck(this, JSON2CSVParser); - - _this = _possibleConstructorReturn(this, _getPrototypeOf(JSON2CSVParser).call(this, opts)); - - if (_this.opts.fields) { - _this.opts.fields = _this.preprocessFieldsInfo(_this.opts.fields); - } - - return _this; - } - /** - * Main function that converts json to csv. - * - * @param {Array|Object} data Array of JSON objects to be converted to CSV - * @returns {String} The CSV formated data as a string - */ - - - _createClass(JSON2CSVParser, [{ - key: "parse", - value: function parse(data) { - var processedData = this.preprocessData(data); - - if (!this.opts.fields) { - this.opts.fields = processedData.reduce(function (fields, item) { - Object.keys(item).forEach(function (field) { - if (!fields.includes(field)) { - fields.push(field); - } - }); - return fields; - }, []); - this.opts.fields = this.preprocessFieldsInfo(this.opts.fields); - } - - var header = this.opts.header ? this.getHeader() : ''; - var rows = this.processData(processedData); - var csv = (this.opts.withBOM ? "\uFEFF" : '') + header + (header && rows ? this.opts.eol : '') + rows; - return csv; - } - /** - * Preprocess the data according to the give opts (unwind, flatten, etc.) - and calculate the fields and field names if they are not provided. - * - * @param {Array|Object} data Array or object to be converted to CSV - */ - - }, { - key: "preprocessData", - value: function preprocessData(data) { - var _this2 = this; - - var processedData = Array.isArray(data) ? data : [data]; - - if (!this.opts.fields && (processedData.length === 0 || _typeof(processedData[0]) !== 'object')) { - throw new Error('Data should not be empty or the "fields" option should be included'); - } - - if (this.opts.transforms.length === 0) return processedData; - return processedData.map(function (row) { - return _this2.preprocessRow(row); - }).reduce(flattenReducer$2, []); - } - /** - * Create the content row by row below the header - * - * @param {Array} data Array of JSON objects to be converted to CSV - * @returns {String} CSV string (body) - */ - - }, { - key: "processData", - value: function processData(data) { - var _this3 = this; - - return fastJoin$2(data.map(function (row) { - return _this3.processRow(row); - }).filter(function (row) { - return row; - }), // Filter empty rows - this.opts.eol); - } - }]); - - return JSON2CSVParser; - }(JSON2CSVBase_1); - - var JSON2CSVParser_1 = JSON2CSVParser; - - /*global Buffer*/ - // Named constants with unique integer values - var C = {}; - // Tokens - var LEFT_BRACE = C.LEFT_BRACE = 0x1; - var RIGHT_BRACE = C.RIGHT_BRACE = 0x2; - var LEFT_BRACKET = C.LEFT_BRACKET = 0x3; - var RIGHT_BRACKET = C.RIGHT_BRACKET = 0x4; - var COLON = C.COLON = 0x5; - var COMMA = C.COMMA = 0x6; - var TRUE = C.TRUE = 0x7; - var FALSE = C.FALSE = 0x8; - var NULL = C.NULL = 0x9; - var STRING = C.STRING = 0xa; - var NUMBER = C.NUMBER = 0xb; - // Tokenizer States - var START = C.START = 0x11; - var STOP = C.STOP = 0x12; - var TRUE1 = C.TRUE1 = 0x21; - var TRUE2 = C.TRUE2 = 0x22; - var TRUE3 = C.TRUE3 = 0x23; - var FALSE1 = C.FALSE1 = 0x31; - var FALSE2 = C.FALSE2 = 0x32; - var FALSE3 = C.FALSE3 = 0x33; - var FALSE4 = C.FALSE4 = 0x34; - var NULL1 = C.NULL1 = 0x41; - var NULL2 = C.NULL2 = 0x42; - var NULL3 = C.NULL3 = 0x43; - var NUMBER1 = C.NUMBER1 = 0x51; - var NUMBER3 = C.NUMBER3 = 0x53; - var STRING1 = C.STRING1 = 0x61; - var STRING2 = C.STRING2 = 0x62; - var STRING3 = C.STRING3 = 0x63; - var STRING4 = C.STRING4 = 0x64; - var STRING5 = C.STRING5 = 0x65; - var STRING6 = C.STRING6 = 0x66; - // Parser States - var VALUE = C.VALUE = 0x71; - var KEY = C.KEY = 0x72; - // Parser Modes - var OBJECT = C.OBJECT = 0x81; - var ARRAY = C.ARRAY = 0x82; - // Character constants - var BACK_SLASH = "\\".charCodeAt(0); - var FORWARD_SLASH = "\/".charCodeAt(0); - var BACKSPACE = "\b".charCodeAt(0); - var FORM_FEED = "\f".charCodeAt(0); - var NEWLINE = "\n".charCodeAt(0); - var CARRIAGE_RETURN = "\r".charCodeAt(0); - var TAB = "\t".charCodeAt(0); - - var STRING_BUFFER_SIZE = 64 * 1024; - - function Parser() { - this.tState = START; - this.value = undefined; - - this.string = undefined; // string data - this.stringBuffer = Buffer.alloc ? Buffer.alloc(STRING_BUFFER_SIZE) : new Buffer(STRING_BUFFER_SIZE); - this.stringBufferOffset = 0; - this.unicode = undefined; // unicode escapes - this.highSurrogate = undefined; - - this.key = undefined; - this.mode = undefined; - this.stack = []; - this.state = VALUE; - this.bytes_remaining = 0; // number of bytes remaining in multi byte utf8 char to read after split boundary - this.bytes_in_sequence = 0; // bytes in multi byte utf8 char to read - this.temp_buffs = { "2": new Buffer(2), "3": new Buffer(3), "4": new Buffer(4) }; // for rebuilding chars split before boundary is reached - - // Stream offset - this.offset = -1; - } - - // Slow code to string converter (only used when throwing syntax errors) - Parser.toknam = function (code) { - var keys = Object.keys(C); - for (var i = 0, l = keys.length; i < l; i++) { - var key = keys[i]; - if (C[key] === code) { return key; } - } - return code && ("0x" + code.toString(16)); - }; - - var proto = Parser.prototype; - proto.onError = function (err) { throw err; }; - proto.charError = function (buffer, i) { - this.tState = STOP; - this.onError(new Error("Unexpected " + JSON.stringify(String.fromCharCode(buffer[i])) + " at position " + i + " in state " + Parser.toknam(this.tState))); - }; - proto.appendStringChar = function (char) { - if (this.stringBufferOffset >= STRING_BUFFER_SIZE) { - this.string += this.stringBuffer.toString('utf8'); - this.stringBufferOffset = 0; - } - - this.stringBuffer[this.stringBufferOffset++] = char; - }; - proto.appendStringBuf = function (buf, start, end) { - var size = buf.length; - if (typeof start === 'number') { - if (typeof end === 'number') { - if (end < 0) { - // adding a negative end decreeses the size - size = buf.length - start + end; - } else { - size = end - start; - } - } else { - size = buf.length - start; - } - } - - if (size < 0) { - size = 0; - } - - if (this.stringBufferOffset + size > STRING_BUFFER_SIZE) { - this.string += this.stringBuffer.toString('utf8', 0, this.stringBufferOffset); - this.stringBufferOffset = 0; - } - - buf.copy(this.stringBuffer, this.stringBufferOffset, start, end); - this.stringBufferOffset += size; - }; - proto.write = function (buffer) { - if (typeof buffer === "string") buffer = new Buffer(buffer); - var n; - for (var i = 0, l = buffer.length; i < l; i++) { - if (this.tState === START){ - n = buffer[i]; - this.offset++; - if(n === 0x7b){ this.onToken(LEFT_BRACE, "{"); // { - }else if(n === 0x7d){ this.onToken(RIGHT_BRACE, "}"); // } - }else if(n === 0x5b){ this.onToken(LEFT_BRACKET, "["); // [ - }else if(n === 0x5d){ this.onToken(RIGHT_BRACKET, "]"); // ] - }else if(n === 0x3a){ this.onToken(COLON, ":"); // : - }else if(n === 0x2c){ this.onToken(COMMA, ","); // , - }else if(n === 0x74){ this.tState = TRUE1; // t - }else if(n === 0x66){ this.tState = FALSE1; // f - }else if(n === 0x6e){ this.tState = NULL1; // n - }else if(n === 0x22){ // " - this.string = ""; - this.stringBufferOffset = 0; - this.tState = STRING1; - }else if(n === 0x2d){ this.string = "-"; this.tState = NUMBER1; // - - }else{ - if (n >= 0x30 && n < 0x40) { // 1-9 - this.string = String.fromCharCode(n); this.tState = NUMBER3; - } else if (n === 0x20 || n === 0x09 || n === 0x0a || n === 0x0d) ; else { - return this.charError(buffer, i); - } - } - }else if (this.tState === STRING1){ // After open quote - n = buffer[i]; // get current byte from buffer - // check for carry over of a multi byte char split between data chunks - // & fill temp buffer it with start of this data chunk up to the boundary limit set in the last iteration - if (this.bytes_remaining > 0) { - for (var j = 0; j < this.bytes_remaining; j++) { - this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence - this.bytes_remaining + j] = buffer[j]; - } - - this.appendStringBuf(this.temp_buffs[this.bytes_in_sequence]); - this.bytes_in_sequence = this.bytes_remaining = 0; - i = i + j - 1; - } else if (this.bytes_remaining === 0 && n >= 128) { // else if no remainder bytes carried over, parse multi byte (>=128) chars one at a time - if (n <= 193 || n > 244) { - return this.onError(new Error("Invalid UTF-8 character at position " + i + " in state " + Parser.toknam(this.tState))); - } - if ((n >= 194) && (n <= 223)) this.bytes_in_sequence = 2; - if ((n >= 224) && (n <= 239)) this.bytes_in_sequence = 3; - if ((n >= 240) && (n <= 244)) this.bytes_in_sequence = 4; - if ((this.bytes_in_sequence + i) > buffer.length) { // if bytes needed to complete char fall outside buffer length, we have a boundary split - for (var k = 0; k <= (buffer.length - 1 - i); k++) { - this.temp_buffs[this.bytes_in_sequence][k] = buffer[i + k]; // fill temp buffer of correct size with bytes available in this chunk - } - this.bytes_remaining = (i + this.bytes_in_sequence) - buffer.length; - i = buffer.length - 1; - } else { - this.appendStringBuf(buffer, i, i + this.bytes_in_sequence); - i = i + this.bytes_in_sequence - 1; - } - } else if (n === 0x22) { - this.tState = START; - this.string += this.stringBuffer.toString('utf8', 0, this.stringBufferOffset); - this.stringBufferOffset = 0; - this.onToken(STRING, this.string); - this.offset += Buffer.byteLength(this.string, 'utf8') + 1; - this.string = undefined; - } - else if (n === 0x5c) { - this.tState = STRING2; - } - else if (n >= 0x20) { this.appendStringChar(n); } - else { - return this.charError(buffer, i); - } - }else if (this.tState === STRING2){ // After backslash - n = buffer[i]; - if(n === 0x22){ this.appendStringChar(n); this.tState = STRING1; - }else if(n === 0x5c){ this.appendStringChar(BACK_SLASH); this.tState = STRING1; - }else if(n === 0x2f){ this.appendStringChar(FORWARD_SLASH); this.tState = STRING1; - }else if(n === 0x62){ this.appendStringChar(BACKSPACE); this.tState = STRING1; - }else if(n === 0x66){ this.appendStringChar(FORM_FEED); this.tState = STRING1; - }else if(n === 0x6e){ this.appendStringChar(NEWLINE); this.tState = STRING1; - }else if(n === 0x72){ this.appendStringChar(CARRIAGE_RETURN); this.tState = STRING1; - }else if(n === 0x74){ this.appendStringChar(TAB); this.tState = STRING1; - }else if(n === 0x75){ this.unicode = ""; this.tState = STRING3; - }else{ - return this.charError(buffer, i); - } - }else if (this.tState === STRING3 || this.tState === STRING4 || this.tState === STRING5 || this.tState === STRING6){ // unicode hex codes - n = buffer[i]; - // 0-9 A-F a-f - if ((n >= 0x30 && n < 0x40) || (n > 0x40 && n <= 0x46) || (n > 0x60 && n <= 0x66)) { - this.unicode += String.fromCharCode(n); - if (this.tState++ === STRING6) { - var intVal = parseInt(this.unicode, 16); - this.unicode = undefined; - if (this.highSurrogate !== undefined && intVal >= 0xDC00 && intVal < (0xDFFF + 1)) { //<56320,57343> - lowSurrogate - this.appendStringBuf(new Buffer(String.fromCharCode(this.highSurrogate, intVal))); - this.highSurrogate = undefined; - } else if (this.highSurrogate === undefined && intVal >= 0xD800 && intVal < (0xDBFF + 1)) { //<55296,56319> - highSurrogate - this.highSurrogate = intVal; - } else { - if (this.highSurrogate !== undefined) { - this.appendStringBuf(new Buffer(String.fromCharCode(this.highSurrogate))); - this.highSurrogate = undefined; - } - this.appendStringBuf(new Buffer(String.fromCharCode(intVal))); - } - this.tState = STRING1; - } - } else { - return this.charError(buffer, i); - } - } else if (this.tState === NUMBER1 || this.tState === NUMBER3) { - n = buffer[i]; - - switch (n) { - case 0x30: // 0 - case 0x31: // 1 - case 0x32: // 2 - case 0x33: // 3 - case 0x34: // 4 - case 0x35: // 5 - case 0x36: // 6 - case 0x37: // 7 - case 0x38: // 8 - case 0x39: // 9 - case 0x2e: // . - case 0x65: // e - case 0x45: // E - case 0x2b: // + - case 0x2d: // - - this.string += String.fromCharCode(n); - this.tState = NUMBER3; - break; - default: - this.tState = START; - var result = Number(this.string); - - if (isNaN(result)){ - return this.charError(buffer, i); - } - - if ((this.string.match(/[0-9]+/) == this.string) && (result.toString() != this.string)) { - // Long string of digits which is an ID string and not valid and/or safe JavaScript integer Number - this.onToken(STRING, this.string); - } else { - this.onToken(NUMBER, result); - } - - this.offset += this.string.length - 1; - this.string = undefined; - i--; - break; - } - }else if (this.tState === TRUE1){ // r - if (buffer[i] === 0x72) { this.tState = TRUE2; } - else { return this.charError(buffer, i); } - }else if (this.tState === TRUE2){ // u - if (buffer[i] === 0x75) { this.tState = TRUE3; } - else { return this.charError(buffer, i); } - }else if (this.tState === TRUE3){ // e - if (buffer[i] === 0x65) { this.tState = START; this.onToken(TRUE, true); this.offset+= 3; } - else { return this.charError(buffer, i); } - }else if (this.tState === FALSE1){ // a - if (buffer[i] === 0x61) { this.tState = FALSE2; } - else { return this.charError(buffer, i); } - }else if (this.tState === FALSE2){ // l - if (buffer[i] === 0x6c) { this.tState = FALSE3; } - else { return this.charError(buffer, i); } - }else if (this.tState === FALSE3){ // s - if (buffer[i] === 0x73) { this.tState = FALSE4; } - else { return this.charError(buffer, i); } - }else if (this.tState === FALSE4){ // e - if (buffer[i] === 0x65) { this.tState = START; this.onToken(FALSE, false); this.offset+= 4; } - else { return this.charError(buffer, i); } - }else if (this.tState === NULL1){ // u - if (buffer[i] === 0x75) { this.tState = NULL2; } - else { return this.charError(buffer, i); } - }else if (this.tState === NULL2){ // l - if (buffer[i] === 0x6c) { this.tState = NULL3; } - else { return this.charError(buffer, i); } - }else if (this.tState === NULL3){ // l - if (buffer[i] === 0x6c) { this.tState = START; this.onToken(NULL, null); this.offset += 3; } - else { return this.charError(buffer, i); } - } - } - }; - proto.onToken = function (token, value) { - // Override this to get events - }; - - proto.parseError = function (token, value) { - this.tState = STOP; - this.onError(new Error("Unexpected " + Parser.toknam(token) + (value ? ("(" + JSON.stringify(value) + ")") : "") + " in state " + Parser.toknam(this.state))); - }; - proto.push = function () { - this.stack.push({value: this.value, key: this.key, mode: this.mode}); - }; - proto.pop = function () { - var value = this.value; - var parent = this.stack.pop(); - this.value = parent.value; - this.key = parent.key; - this.mode = parent.mode; - this.emit(value); - if (!this.mode) { this.state = VALUE; } - }; - proto.emit = function (value) { - if (this.mode) { this.state = COMMA; } - this.onValue(value); - }; - proto.onValue = function (value) { - // Override me - }; - proto.onToken = function (token, value) { - if(this.state === VALUE){ - if(token === STRING || token === NUMBER || token === TRUE || token === FALSE || token === NULL){ - if (this.value) { - this.value[this.key] = value; - } - this.emit(value); - }else if(token === LEFT_BRACE){ - this.push(); - if (this.value) { - this.value = this.value[this.key] = {}; - } else { - this.value = {}; - } - this.key = undefined; - this.state = KEY; - this.mode = OBJECT; - }else if(token === LEFT_BRACKET){ - this.push(); - if (this.value) { - this.value = this.value[this.key] = []; - } else { - this.value = []; - } - this.key = 0; - this.mode = ARRAY; - this.state = VALUE; - }else if(token === RIGHT_BRACE){ - if (this.mode === OBJECT) { - this.pop(); - } else { - return this.parseError(token, value); - } - }else if(token === RIGHT_BRACKET){ - if (this.mode === ARRAY) { - this.pop(); - } else { - return this.parseError(token, value); - } - }else{ - return this.parseError(token, value); - } - }else if(this.state === KEY){ - if (token === STRING) { - this.key = value; - this.state = COLON; - } else if (token === RIGHT_BRACE) { - this.pop(); - } else { - return this.parseError(token, value); - } - }else if(this.state === COLON){ - if (token === COLON) { this.state = VALUE; } - else { return this.parseError(token, value); } - }else if(this.state === COMMA){ - if (token === COMMA) { - if (this.mode === ARRAY) { this.key++; this.state = VALUE; } - else if (this.mode === OBJECT) { this.state = KEY; } - - } else if (token === RIGHT_BRACKET && this.mode === ARRAY || token === RIGHT_BRACE && this.mode === OBJECT) { - this.pop(); - } else { - return this.parseError(token, value); - } - }else{ - return this.parseError(token, value); - } - }; - - Parser.C = C; - - var jsonparse = Parser; - - var Transform$1 = Stream.Transform; - - var JSON2CSVTransform = - /*#__PURE__*/ - function (_Transform) { - _inherits(JSON2CSVTransform, _Transform); - - function JSON2CSVTransform(opts, transformOpts) { - var _this; - - _classCallCheck(this, JSON2CSVTransform); - - _this = _possibleConstructorReturn(this, _getPrototypeOf(JSON2CSVTransform).call(this, transformOpts)); // Inherit methods from JSON2CSVBase since extends doesn't - // allow multiple inheritance and manually preprocess opts - - Object.getOwnPropertyNames(JSON2CSVBase_1.prototype).forEach(function (key) { - return _this[key] = JSON2CSVBase_1.prototype[key]; - }); - _this.opts = _this.preprocessOpts(opts); - _this._data = ''; - _this._hasWritten = false; - - if (_this._readableState.objectMode) { - _this.initObjectModeParse(); - } else if (_this.opts.ndjson) { - _this.initNDJSONParse(); - } else { - _this.initJSONParser(); - } - - if (_this.opts.withBOM) { - _this.push("\uFEFF"); - } - - if (_this.opts.fields) { - _this.opts.fields = _this.preprocessFieldsInfo(_this.opts.fields); - - _this.pushHeader(); - } - - return _this; - } - /** - * Init the transform with a parser to process data in object mode. - * It receives JSON objects one by one and send them to `pushLine for processing. - */ - - - _createClass(JSON2CSVTransform, [{ - key: "initObjectModeParse", - value: function initObjectModeParse() { - var transform = this; - this.parser = { - write: function write(line) { - transform.pushLine(line); - }, - getPendingData: function getPendingData() { - return undefined; - } - }; - } - /** - * Init the transform with a parser to process NDJSON data. - * It maintains a buffer of received data, parses each line - * as JSON and send it to `pushLine for processing. - */ - - }, { - key: "initNDJSONParse", - value: function initNDJSONParse() { - var transform = this; - this.parser = { - _data: '', - write: function write(chunk) { - this._data += chunk.toString(); - - var lines = this._data.split('\n').map(function (line) { - return line.trim(); - }).filter(function (line) { - return line !== ''; - }); - - var pendingData = false; - lines.forEach(function (line, i) { - try { - transform.pushLine(JSON.parse(line)); - } catch (e) { - if (i === lines.length - 1) { - pendingData = true; - } else { - e.message = "Invalid JSON (".concat(line, ")"); - transform.emit('error', e); - } - } - }); - this._data = pendingData ? this._data.slice(this._data.lastIndexOf('\n')) : ''; - }, - getPendingData: function getPendingData() { - return this._data; - } - }; - } - /** - * Init the transform with a parser to process JSON data. - * It maintains a buffer of received data, parses each as JSON - * item if the data is an array or the data itself otherwise - * and send it to `pushLine` for processing. - */ - - }, { - key: "initJSONParser", - value: function initJSONParser() { - var transform = this; - this.parser = new jsonparse(); - - this.parser.onValue = function (value) { - if (this.stack.length !== this.depthToEmit) return; - transform.pushLine(value); - }; - - this.parser._onToken = this.parser.onToken; - - this.parser.onToken = function (token, value) { - transform.parser._onToken(token, value); - - if (this.stack.length === 0 && !transform.opts.fields && this.mode !== jsonparse.C.ARRAY && this.mode !== jsonparse.C.OBJECT) { - this.onError(new Error('Data should not be empty or the "fields" option should be included')); - } - - if (this.stack.length === 1) { - if (this.depthToEmit === undefined) { - // If Array emit its content, else emit itself - this.depthToEmit = this.mode === jsonparse.C.ARRAY ? 1 : 0; - } - - if (this.depthToEmit !== 0 && this.stack.length === 1) { - // No need to store the whole root array in memory - this.value = undefined; - } - } - }; - - this.parser.getPendingData = function () { - return this.value; - }; - - this.parser.onError = function (err) { - if (err.message.includes('Unexpected')) { - err.message = "Invalid JSON (".concat(err.message, ")"); - } - - transform.emit('error', err); - }; - } - /** - * Main function that send data to the parse to be processed. - * - * @param {Buffer} chunk Incoming data - * @param {String} encoding Encoding of the incoming data. Defaults to 'utf8' - * @param {Function} done Called when the proceesing of the supplied chunk is done - */ - - }, { - key: "_transform", - value: function _transform(chunk, encoding, done) { - this.parser.write(chunk); - done(); - } - }, { - key: "_flush", - value: function _flush(done) { - if (this.parser.getPendingData()) { - done(new Error('Invalid data received from stdin', this.parser.getPendingData())); - } - - done(); - } - /** - * Generate the csv header and pushes it downstream. - */ - - }, { - key: "pushHeader", - value: function pushHeader() { - if (this.opts.header) { - var header = this.getHeader(); - this.emit('header', header); - this.push(header); - this._hasWritten = true; - } - } - /** - * Transforms an incoming json data to csv and pushes it downstream. - * - * @param {Object} data JSON object to be converted in a CSV row - */ - - }, { - key: "pushLine", - value: function pushLine(data) { - var _this2 = this; - - var processedData = this.preprocessRow(data); - - if (!this._hasWritten) { - this.opts.fields = this.opts.fields || this.preprocessFieldsInfo(Object.keys(processedData[0])); - this.pushHeader(); - } - - processedData.forEach(function (row) { - var line = _this2.processRow(row, _this2.opts); - - if (line === undefined) return; - - _this2.emit('line', line); - - _this2.push(_this2._hasWritten ? _this2.opts.eol + line : line); - - _this2._hasWritten = true; - }); - } - }]); - - return JSON2CSVTransform; - }(Transform$1); - - var JSON2CSVTransform_1 = JSON2CSVTransform; - - var Transform$2 = Stream.Transform; - var fastJoin$3 = utils.fastJoin; - - var JSON2CSVAsyncParser = - /*#__PURE__*/ - function () { - function JSON2CSVAsyncParser(opts, transformOpts) { - _classCallCheck(this, JSON2CSVAsyncParser); - - this.input = new Transform$2(transformOpts); - - this.input._read = function () {}; - - this.transform = new JSON2CSVTransform_1(opts, transformOpts); - this.processor = this.input.pipe(this.transform); - } - - _createClass(JSON2CSVAsyncParser, [{ - key: "fromInput", - value: function fromInput(input) { - if (this._input) { - throw new Error('Async parser already has an input.'); - } - - this._input = input; - this.input = this._input.pipe(this.processor); - return this; - } - }, { - key: "throughTransform", - value: function throughTransform(transform) { - if (this._output) { - throw new Error('Can\'t add transforms once an output has been added.'); - } - - this.processor = this.processor.pipe(transform); - return this; - } - }, { - key: "toOutput", - value: function toOutput(output) { - if (this._output) { - throw new Error('Async parser already has an output.'); - } - - this._output = output; - this.processor = this.processor.pipe(output); - return this; - } - }, { - key: "promise", - value: function promise() { - var _this = this; - - var returnCSV = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - return new Promise(function (resolve, reject) { - if (!returnCSV) { - _this.processor.on('finish', function () { - return resolve(); - }).on('error', function (err) { - return reject(err); - }); - - return; - } - - var csvBuffer = []; - - _this.processor.on('data', function (chunk) { - return csvBuffer.push(chunk.toString()); - }).on('finish', function () { - return resolve(fastJoin$3(csvBuffer, '')); - }).on('error', function (err) { - return reject(err); - }); - }); - } - }]); - - return JSON2CSVAsyncParser; - }(); - - var JSON2CSVAsyncParser_1 = JSON2CSVAsyncParser; - - /** - * Performs the flattening of a data row recursively - * - * @param {String} separator Separator to be used as the flattened field name - * @returns {Object => Object} Flattened object - */ - function flatten() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref$objects = _ref.objects, - objects = _ref$objects === void 0 ? true : _ref$objects, - _ref$arrays = _ref.arrays, - arrays = _ref$arrays === void 0 ? false : _ref$arrays, - _ref$separator = _ref.separator, - separator = _ref$separator === void 0 ? '.' : _ref$separator; - - function step(obj, flatDataRow, currentPath) { - Object.keys(obj).forEach(function (key) { - var newPath = currentPath ? "".concat(currentPath).concat(separator).concat(key) : key; - var value = obj[key]; - - if (objects && _typeof(value) === 'object' && value !== null && !Array.isArray(value) && Object.prototype.toString.call(value.toJSON) !== '[object Function]' && Object.keys(value).length) { - step(value, flatDataRow, newPath); - return; - } - - if (arrays && Array.isArray(value)) { - step(value, flatDataRow, newPath); - return; - } - - flatDataRow[newPath] = value; - }); - return flatDataRow; - } - - return function (dataRow) { - return step(dataRow, {}); - }; - } - - var flatten_1 = flatten; - - var setProp$1 = utils.setProp, - unsetProp$1 = utils.unsetProp, - flattenReducer$3 = utils.flattenReducer; - - function getUnwindablePaths(obj, currentPath) { - return Object.keys(obj).reduce(function (unwindablePaths, key) { - var newPath = currentPath ? "".concat(currentPath, ".").concat(key) : key; - var value = obj[key]; - - if (_typeof(value) === 'object' && value !== null && !Array.isArray(value) && Object.prototype.toString.call(value.toJSON) !== '[object Function]' && Object.keys(value).length) { - unwindablePaths = unwindablePaths.concat(getUnwindablePaths(value, newPath)); - } else if (Array.isArray(value)) { - unwindablePaths.push(newPath); - unwindablePaths = unwindablePaths.concat(value.map(function (arrObj) { - return getUnwindablePaths(arrObj, newPath); - }).reduce(flattenReducer$3, []).filter(function (item, index, arr) { - return arr.indexOf(item) !== index; - })); - } - - return unwindablePaths; - }, []); - } - /** - * Performs the unwind recursively in specified sequence - * - * @param {String[]} unwindPaths The paths as strings to be used to deconstruct the array - * @returns {Object => Array} Array of objects containing all rows after unwind of chosen paths - */ - - - function unwind() { - var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - _ref$paths = _ref.paths, - paths = _ref$paths === void 0 ? undefined : _ref$paths, - _ref$blankOut = _ref.blankOut, - blankOut = _ref$blankOut === void 0 ? false : _ref$blankOut; - - function unwindReducer(rows, unwindPath) { - return rows.map(function (row) { - var unwindArray = lodash_get(row, unwindPath); - - if (!Array.isArray(unwindArray)) { - return row; - } - - if (!unwindArray.length) { - return unsetProp$1(row, unwindPath); - } - - return unwindArray.map(function (unwindRow, index) { - var clonedRow = blankOut && index > 0 ? {} : row; - return setProp$1(clonedRow, unwindPath, unwindRow); - }); - }).reduce(flattenReducer$3, []); - } - - paths = Array.isArray(paths) ? paths : paths ? [paths] : undefined; - return function (dataRow) { - return (paths || getUnwindablePaths(dataRow)).reduce(unwindReducer, [dataRow]); - }; - } - - var unwind_1 = unwind; - - var Readable$1 = Stream.Readable; - var Parser$1 = JSON2CSVParser_1; - var AsyncParser = JSON2CSVAsyncParser_1; - var Transform$3 = JSON2CSVTransform_1; // Convenience method to keep the API similar to version 3.X - - var parse = function parse(data, opts) { - return new JSON2CSVParser_1(opts).parse(data); - }; - - var parseAsync = function parseAsync(data, opts, transformOpts) { - try { - if (!(data instanceof Readable$1)) { - transformOpts = Object.assign({}, transformOpts, { - objectMode: true - }); - } - - var asyncParser = new JSON2CSVAsyncParser_1(opts, transformOpts); - var promise = asyncParser.promise(); - - if (Array.isArray(data)) { - data.forEach(function (item) { - return asyncParser.input.push(item); - }); - asyncParser.input.push(null); - } else if (data instanceof Readable$1) { - asyncParser.fromInput(data); - } else { - asyncParser.input.push(data); - asyncParser.input.push(null); - } - - return promise; - } catch (err) { - return Promise.reject(err); - } - }; - - var transforms = { - flatten: flatten_1, - unwind: unwind_1 - }; - var json2csv = { - Parser: Parser$1, - AsyncParser: AsyncParser, - Transform: Transform$3, - parse: parse, - parseAsync: parseAsync, - transforms: transforms - }; - - exports.AsyncParser = AsyncParser; - exports.Parser = Parser$1; - exports.Transform = Transform$3; - exports.default = json2csv; - exports.parse = parse; - exports.parseAsync = parseAsync; - exports.transforms = transforms; - - Object.defineProperty(exports, '__esModule', { value: true }); - -})); diff --git a/node_modules/json2csv/lib/JSON2CSVAsyncParser.js b/node_modules/json2csv/lib/JSON2CSVAsyncParser.js deleted file mode 100644 index 6773b73..0000000 --- a/node_modules/json2csv/lib/JSON2CSVAsyncParser.js +++ /dev/null @@ -1,60 +0,0 @@ -'use strict'; - -const { Transform } = require('stream'); -const JSON2CSVTransform = require('./JSON2CSVTransform'); -const { fastJoin } = require('./utils'); - -class JSON2CSVAsyncParser { - constructor(opts, transformOpts) { - this.input = new Transform(transformOpts); - this.input._read = () => {}; - - this.transform = new JSON2CSVTransform(opts, transformOpts); - this.processor = this.input.pipe(this.transform); - } - - fromInput(input) { - if (this._input) { - throw new Error('Async parser already has an input.'); - } - this._input = input; - this.input = this._input.pipe(this.processor); - return this; - } - - throughTransform(transform) { - if (this._output) { - throw new Error('Can\'t add transforms once an output has been added.'); - } - this.processor = this.processor.pipe(transform); - return this; - } - - toOutput(output) { - if (this._output) { - throw new Error('Async parser already has an output.'); - } - this._output = output; - this.processor = this.processor.pipe(output); - return this; - } - - promise(returnCSV = true) { - return new Promise((resolve, reject) => { - if (!returnCSV) { - this.processor - .on('finish', () => resolve()) - .on('error', err => reject(err)); - return; - } - - let csvBuffer = []; - this.processor - .on('data', chunk => csvBuffer.push(chunk.toString())) - .on('finish', () => resolve(fastJoin(csvBuffer, ''))) - .on('error', err => reject(err)); - }); - } -} - -module.exports = JSON2CSVAsyncParser \ No newline at end of file diff --git a/node_modules/json2csv/lib/JSON2CSVBase.js b/node_modules/json2csv/lib/JSON2CSVBase.js deleted file mode 100644 index 6e45da2..0000000 --- a/node_modules/json2csv/lib/JSON2CSVBase.js +++ /dev/null @@ -1,188 +0,0 @@ -'use strict'; - -const os = require('os'); -const lodashGet = require('lodash.get'); -const { getProp, fastJoin, flattenReducer } = require('./utils'); - -class JSON2CSVBase { - constructor(opts) { - this.opts = this.preprocessOpts(opts); - } - - /** - * Check passing opts and set defaults. - * - * @param {Json2CsvOptions} opts Options object containing fields, - * delimiter, default value, quote mark, header, etc. - */ - preprocessOpts(opts) { - const processedOpts = Object.assign({}, opts); - processedOpts.transforms = !Array.isArray(processedOpts.transforms) - ? (processedOpts.transforms ? [processedOpts.transforms] : []) - : processedOpts.transforms - processedOpts.delimiter = processedOpts.delimiter || ','; - processedOpts.eol = processedOpts.eol || os.EOL; - processedOpts.quote = typeof processedOpts.quote === 'string' - ? processedOpts.quote - : '"'; - processedOpts.escapedQuote = typeof processedOpts.escapedQuote === 'string' - ? processedOpts.escapedQuote - : `${processedOpts.quote}${processedOpts.quote}`; - processedOpts.header = processedOpts.header !== false; - processedOpts.includeEmptyRows = processedOpts.includeEmptyRows || false; - processedOpts.withBOM = processedOpts.withBOM || false; - - return processedOpts; - } - - /** - * Check and normalize the fields configuration. - * - * @param {(string|object)[]} fields Fields configuration provided by the user - * or inferred from the data - * @returns {object[]} preprocessed FieldsInfo array - */ - preprocessFieldsInfo(fields) { - return fields.map((fieldInfo) => { - if (typeof fieldInfo === 'string') { - return { - label: fieldInfo, - value: (fieldInfo.includes('.') || fieldInfo.includes('[')) - ? row => lodashGet(row, fieldInfo, this.opts.defaultValue) - : row => getProp(row, fieldInfo, this.opts.defaultValue), - }; - } - - if (typeof fieldInfo === 'object') { - const defaultValue = 'default' in fieldInfo - ? fieldInfo.default - : this.opts.defaultValue; - - if (typeof fieldInfo.value === 'string') { - return { - label: fieldInfo.label || fieldInfo.value, - value: (fieldInfo.value.includes('.') || fieldInfo.value.includes('[')) - ? row => lodashGet(row, fieldInfo.value, defaultValue) - : row => getProp(row, fieldInfo.value, defaultValue), - }; - } - - if (typeof fieldInfo.value === 'function') { - const label = fieldInfo.label || fieldInfo.value.name || ''; - const field = { label, default: defaultValue }; - return { - label, - value(row) { - const value = fieldInfo.value(row, field); - return (value === null || value === undefined) - ? defaultValue - : value; - }, - } - } - } - - throw new Error('Invalid field info option. ' + JSON.stringify(fieldInfo)); - }); - } - - /** - * Create the title row with all the provided fields as column headings - * - * @returns {String} titles as a string - */ - getHeader() { - return fastJoin( - this.opts.fields.map(fieldInfo => this.processValue(fieldInfo.label)), - this.opts.delimiter - ); - } - - /** - * Preprocess each object according to the given transforms (unwind, flatten, etc.). - * @param {Object} row JSON object to be converted in a CSV row - */ - preprocessRow(row) { - return this.opts.transforms.reduce((rows, transform) => - rows.map(row => transform(row)).reduce(flattenReducer, []), - [row] - ); - } - - /** - * Create the content of a specific CSV row - * - * @param {Object} row JSON object to be converted in a CSV row - * @returns {String} CSV string (row) - */ - processRow(row) { - if (!row) { - return undefined; - } - - const processedRow = this.opts.fields.map(fieldInfo => this.processCell(row, fieldInfo)); - - if (!this.opts.includeEmptyRows && processedRow.every(field => field === undefined)) { - return undefined; - } - - return fastJoin( - processedRow, - this.opts.delimiter - ); - } - - /** - * Create the content of a specfic CSV row cell - * - * @param {Object} row JSON object representing the CSV row that the cell belongs to - * @param {FieldInfo} fieldInfo Details of the field to process to be a CSV cell - * @returns {String} CSV string (cell) - */ - processCell(row, fieldInfo) { - return this.processValue(fieldInfo.value(row)); - } - - /** - * Create the content of a specfic CSV row cell - * - * @param {Any} value Value to be included in a CSV cell - * @returns {String} Value stringified and processed - */ - processValue(value) { - if (value === null || value === undefined) { - return undefined; - } - - const valueType = typeof value; - if (valueType !== 'boolean' && valueType !== 'number' && valueType !== 'string') { - value = JSON.stringify(value); - - if (value === undefined) { - return undefined; - } - - if (value[0] === '"') { - value = value.replace(/^"(.+)"$/,'$1'); - } - } - - if (typeof value === 'string') { - if (this.opts.excelStrings) { - if(value.includes(this.opts.quote)) { - value = value.replace(new RegExp(this.opts.quote, 'g'), `${this.opts.escapedQuote}${this.opts.escapedQuote}`); - } - value = `"=""${value}"""`; - } else { - if(value.includes(this.opts.quote)) { - value = value.replace(new RegExp(this.opts.quote, 'g'), this.opts.escapedQuote); - } - value = `${this.opts.quote}${value}${this.opts.quote}`; - } - } - - return value; - } -} - -module.exports = JSON2CSVBase; diff --git a/node_modules/json2csv/lib/JSON2CSVParser.js b/node_modules/json2csv/lib/JSON2CSVParser.js deleted file mode 100644 index 9b3b0c0..0000000 --- a/node_modules/json2csv/lib/JSON2CSVParser.js +++ /dev/null @@ -1,81 +0,0 @@ -'use strict'; - -const JSON2CSVBase = require('./JSON2CSVBase'); -const { fastJoin, flattenReducer } = require('./utils'); - -class JSON2CSVParser extends JSON2CSVBase { - constructor(opts) { - super(opts); - if (this.opts.fields) { - this.opts.fields = this.preprocessFieldsInfo(this.opts.fields); - } - } - /** - * Main function that converts json to csv. - * - * @param {Array|Object} data Array of JSON objects to be converted to CSV - * @returns {String} The CSV formated data as a string - */ - parse(data) { - const processedData = this.preprocessData(data); - - if (!this.opts.fields) { - this.opts.fields = processedData - .reduce((fields, item) => { - Object.keys(item).forEach((field) => { - if (!fields.includes(field)) { - fields.push(field) - } - }); - - return fields - }, []); - - this.opts.fields = this.preprocessFieldsInfo(this.opts.fields); - } - - const header = this.opts.header ? this.getHeader() : ''; - const rows = this.processData(processedData); - const csv = (this.opts.withBOM ? '\ufeff' : '') - + header - + ((header && rows) ? this.opts.eol : '') - + rows; - - return csv; - } - - /** - * Preprocess the data according to the give opts (unwind, flatten, etc.) - and calculate the fields and field names if they are not provided. - * - * @param {Array|Object} data Array or object to be converted to CSV - */ - preprocessData(data) { - const processedData = Array.isArray(data) ? data : [data]; - - if (!this.opts.fields && (processedData.length === 0 || typeof processedData[0] !== 'object')) { - throw new Error('Data should not be empty or the "fields" option should be included'); - } - - if (this.opts.transforms.length === 0) return processedData; - - return processedData - .map(row => this.preprocessRow(row)) - .reduce(flattenReducer, []); - } - - /** - * Create the content row by row below the header - * - * @param {Array} data Array of JSON objects to be converted to CSV - * @returns {String} CSV string (body) - */ - processData(data) { - return fastJoin( - data.map(row => this.processRow(row)).filter(row => row), // Filter empty rows - this.opts.eol - ); - } -} - -module.exports = JSON2CSVParser; diff --git a/node_modules/json2csv/lib/JSON2CSVTransform.js b/node_modules/json2csv/lib/JSON2CSVTransform.js deleted file mode 100644 index f7a52f2..0000000 --- a/node_modules/json2csv/lib/JSON2CSVTransform.js +++ /dev/null @@ -1,203 +0,0 @@ -'use strict'; - -const { Transform } = require('stream'); -const Parser = require('jsonparse'); -const JSON2CSVBase = require('./JSON2CSVBase'); - -class JSON2CSVTransform extends Transform { - constructor(opts, transformOpts) { - super(transformOpts); - - // Inherit methods from JSON2CSVBase since extends doesn't - // allow multiple inheritance and manually preprocess opts - Object.getOwnPropertyNames(JSON2CSVBase.prototype) - .forEach(key => (this[key] = JSON2CSVBase.prototype[key])); - this.opts = this.preprocessOpts(opts); - - this._data = ''; - this._hasWritten = false; - - if (this._readableState.objectMode) { - this.initObjectModeParse(); - } else if (this.opts.ndjson) { - this.initNDJSONParse(); - } else { - this.initJSONParser(); - } - - if (this.opts.withBOM) { - this.push('\ufeff'); - } - - if (this.opts.fields) { - this.opts.fields = this.preprocessFieldsInfo(this.opts.fields); - this.pushHeader(); - } - } - - /** - * Init the transform with a parser to process data in object mode. - * It receives JSON objects one by one and send them to `pushLine for processing. - */ - initObjectModeParse() { - const transform = this; - - this.parser = { - write(line) { - transform.pushLine(line); - }, - getPendingData() { - return undefined; - } - }; - } - - /** - * Init the transform with a parser to process NDJSON data. - * It maintains a buffer of received data, parses each line - * as JSON and send it to `pushLine for processing. - */ - initNDJSONParse() { - const transform = this; - - this.parser = { - _data: '', - write(chunk) { - this._data += chunk.toString(); - const lines = this._data - .split('\n') - .map(line => line.trim()) - .filter(line => line !== ''); - - let pendingData = false; - lines - .forEach((line, i) => { - try { - transform.pushLine(JSON.parse(line)); - } catch(e) { - if (i === lines.length - 1) { - pendingData = true; - } else { - e.message = `Invalid JSON (${line})` - transform.emit('error', e); - } - } - }); - this._data = pendingData - ? this._data.slice(this._data.lastIndexOf('\n')) - : ''; - }, - getPendingData() { - return this._data; - } - }; - } - - /** - * Init the transform with a parser to process JSON data. - * It maintains a buffer of received data, parses each as JSON - * item if the data is an array or the data itself otherwise - * and send it to `pushLine` for processing. - */ - initJSONParser() { - const transform = this; - this.parser = new Parser(); - this.parser.onValue = function (value) { - if (this.stack.length !== this.depthToEmit) return; - transform.pushLine(value); - } - - this.parser._onToken = this.parser.onToken; - - this.parser.onToken = function (token, value) { - transform.parser._onToken(token, value); - - if (this.stack.length === 0 - && !transform.opts.fields - && this.mode !== Parser.C.ARRAY - && this.mode !== Parser.C.OBJECT) { - this.onError(new Error('Data should not be empty or the "fields" option should be included')); - } - - if (this.stack.length === 1) { - if(this.depthToEmit === undefined) { - // If Array emit its content, else emit itself - this.depthToEmit = (this.mode === Parser.C.ARRAY) ? 1 : 0; - } - - if (this.depthToEmit !== 0 && this.stack.length === 1) { - // No need to store the whole root array in memory - this.value = undefined; - } - } - } - - this.parser.getPendingData = function () { - return this.value; - } - - this.parser.onError = function (err) { - if(err.message.includes('Unexpected')) { - err.message = `Invalid JSON (${err.message})`; - } - transform.emit('error', err); - } - } - - /** - * Main function that send data to the parse to be processed. - * - * @param {Buffer} chunk Incoming data - * @param {String} encoding Encoding of the incoming data. Defaults to 'utf8' - * @param {Function} done Called when the proceesing of the supplied chunk is done - */ - _transform(chunk, encoding, done) { - this.parser.write(chunk); - done(); - } - - _flush(done) { - if (this.parser.getPendingData()) { - done(new Error('Invalid data received from stdin', this.parser.getPendingData())); - } - - done(); - } - - - /** - * Generate the csv header and pushes it downstream. - */ - pushHeader() { - if (this.opts.header) { - const header = this.getHeader(); - this.emit('header', header); - this.push(header); - this._hasWritten = true; - } - } - - /** - * Transforms an incoming json data to csv and pushes it downstream. - * - * @param {Object} data JSON object to be converted in a CSV row - */ - pushLine(data) { - const processedData = this.preprocessRow(data); - - if (!this._hasWritten) { - this.opts.fields = this.opts.fields || this.preprocessFieldsInfo(Object.keys(processedData[0])); - this.pushHeader(); - } - - processedData.forEach(row => { - const line = this.processRow(row, this.opts); - if (line === undefined) return; - this.emit('line', line); - this.push(this._hasWritten ? this.opts.eol + line : line); - this._hasWritten = true; - }); - } -} - -module.exports = JSON2CSVTransform; diff --git a/node_modules/json2csv/lib/json2csv.js b/node_modules/json2csv/lib/json2csv.js deleted file mode 100644 index 7fe5ba4..0000000 --- a/node_modules/json2csv/lib/json2csv.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -const { Readable } = require('stream'); -const JSON2CSVParser = require('./JSON2CSVParser'); -const JSON2CSVAsyncParser = require('./JSON2CSVAsyncParser'); -const JSON2CSVTransform = require('./JSON2CSVTransform'); -const flatten = require('./transforms/flatten'); -const unwind = require('./transforms/unwind'); - -module.exports.Parser = JSON2CSVParser; -module.exports.AsyncParser = JSON2CSVAsyncParser; -module.exports.Transform = JSON2CSVTransform; - -// Convenience method to keep the API similar to version 3.X -module.exports.parse = (data, opts) => new JSON2CSVParser(opts).parse(data); -module.exports.parseAsync = (data, opts, transformOpts) => { - try { - if (!(data instanceof Readable)) { - transformOpts = Object.assign({}, transformOpts, { objectMode: true }); - } - - const asyncParser = new JSON2CSVAsyncParser(opts, transformOpts); - const promise = asyncParser.promise(); - - if (Array.isArray(data)) { - data.forEach(item => asyncParser.input.push(item)); - asyncParser.input.push(null); - } else if (data instanceof Readable) { - asyncParser.fromInput(data); - } else { - asyncParser.input.push(data); - asyncParser.input.push(null); - } - - return promise; - } catch (err) { - return Promise.reject(err); - } -}; - -module.exports.transforms = { - flatten, - unwind, -}; \ No newline at end of file diff --git a/node_modules/json2csv/lib/transforms/flatten.js b/node_modules/json2csv/lib/transforms/flatten.js deleted file mode 100644 index a7dcf1b..0000000 --- a/node_modules/json2csv/lib/transforms/flatten.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Performs the flattening of a data row recursively - * - * @param {String} separator Separator to be used as the flattened field name - * @returns {Object => Object} Flattened object - */ -function flatten({ objects = true, arrays = false, separator = '.' } = {}) { - function step (obj, flatDataRow, currentPath) { - Object.keys(obj).forEach((key) => { - const newPath = currentPath ? `${currentPath}${separator}${key}` : key; - const value = obj[key]; - - if (objects - && typeof value === 'object' - && value !== null - && !Array.isArray(value) - && Object.prototype.toString.call(value.toJSON) !== '[object Function]' - && Object.keys(value).length) { - step(value, flatDataRow, newPath); - return; - } - - if (arrays && Array.isArray(value)) { - step(value, flatDataRow, newPath); - return; - } - - flatDataRow[newPath] = value; - }); - - return flatDataRow; - } - - return dataRow => step(dataRow, {}); -} - -module.exports = flatten; diff --git a/node_modules/json2csv/lib/transforms/unwind.js b/node_modules/json2csv/lib/transforms/unwind.js deleted file mode 100644 index 65b1803..0000000 --- a/node_modules/json2csv/lib/transforms/unwind.js +++ /dev/null @@ -1,63 +0,0 @@ - -const lodashGet = require('lodash.get'); -const { setProp, unsetProp, flattenReducer } = require('../utils'); - -function getUnwindablePaths(obj, currentPath) { - return Object.keys(obj).reduce((unwindablePaths, key) => { - const newPath = currentPath ? `${currentPath}.${key}` : key; - const value = obj[key]; - - if (typeof value === 'object' - && value !== null - && !Array.isArray(value) - && Object.prototype.toString.call(value.toJSON) !== '[object Function]' - && Object.keys(value).length) { - unwindablePaths = unwindablePaths.concat(getUnwindablePaths(value, newPath)); - } else if (Array.isArray(value)) { - unwindablePaths.push(newPath); - unwindablePaths = unwindablePaths.concat(value - .map(arrObj => getUnwindablePaths(arrObj, newPath)) - .reduce(flattenReducer, []) - .filter((item, index, arr) => arr.indexOf(item) !== index)); - } - - return unwindablePaths; - }, []); -} - -/** - * Performs the unwind recursively in specified sequence - * - * @param {String[]} unwindPaths The paths as strings to be used to deconstruct the array - * @returns {Object => Array} Array of objects containing all rows after unwind of chosen paths -*/ -function unwind({ paths = undefined, blankOut = false } = {}) { - function unwindReducer(rows, unwindPath) { - return rows - .map(row => { - const unwindArray = lodashGet(row, unwindPath); - - if (!Array.isArray(unwindArray)) { - return row; - } - - if (!unwindArray.length) { - return unsetProp(row, unwindPath); - } - - return unwindArray.map((unwindRow, index) => { - const clonedRow = (blankOut && index > 0) - ? {} - : row; - - return setProp(clonedRow, unwindPath, unwindRow); - }); - }) - .reduce(flattenReducer, []); - } - - paths = Array.isArray(paths) ? paths : (paths ? [paths] : undefined); - return dataRow => (paths || getUnwindablePaths(dataRow)).reduce(unwindReducer, [dataRow]); -} - -module.exports = unwind; \ No newline at end of file diff --git a/node_modules/json2csv/lib/utils.js b/node_modules/json2csv/lib/utils.js deleted file mode 100644 index 9fb6b62..0000000 --- a/node_modules/json2csv/lib/utils.js +++ /dev/null @@ -1,72 +0,0 @@ -'use strict'; - -function getProp(obj, path, defaultValue) { - return obj[path] === undefined ? defaultValue : obj[path]; -} - -function setProp(obj, path, value) { - const pathArray = Array.isArray(path) ? path : path.split('.'); - const [key, ...restPath] = pathArray; - return { - ...obj, - [key]: pathArray.length > 1 ? setProp(obj[key] || {}, restPath, value) : value - }; -} - -function unsetProp(obj, path) { - const pathArray = Array.isArray(path) ? path : path.split('.'); - const [key, ...restPath] = pathArray; - - if (typeof obj[key] !== 'object') { - // This will never be hit in the current code because unwind does the check before calling unsetProp - /* istanbul ignore next */ - return obj; - } - - if (pathArray.length === 1) { - return Object.keys(obj) - .filter(prop => prop !== key) - .reduce((acc, prop) => Object.assign(acc, { [prop]: obj[prop] }), {}); - } - - return Object.keys(obj) - .reduce((acc, prop) => ({ - ...acc, - [prop]: prop !== key ? obj[prop] : unsetProp(obj[key], restPath), - }), {}); -} - -function flattenReducer(acc, arr) { - try { - // This is faster but susceptible to `RangeError: Maximum call stack size exceeded` - acc.push(...arr); - return acc; - } catch (err) { - // Fallback to a slower but safer option - return acc.concat(arr); - } -} - -function fastJoin(arr, separator) { - let isFirst = true; - return arr.reduce((acc, elem) => { - if (elem === null || elem === undefined) { - elem = ''; - } - - if (isFirst) { - isFirst = false; - return `${elem}`; - } - - return `${acc}${separator}${elem}`; - }, ''); -} - -module.exports = { - getProp, - setProp, - unsetProp, - fastJoin, - flattenReducer -}; \ No newline at end of file diff --git a/node_modules/json2csv/package.json b/node_modules/json2csv/package.json deleted file mode 100644 index a13a684..0000000 --- a/node_modules/json2csv/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "name": "json2csv", - "version": "5.0.7", - "description": "Convert JSON to CSV", - "keywords": [ - "json", - "to", - "csv", - "export", - "convert", - "parse" - ], - "author": { - "name": "Mirco Zeiss", - "email": "mirco.zeiss@gmail.com", - "twitter": "zeMirco" - }, - "license": "MIT", - "bin": { - "json2csv": "./bin/json2csv.js" - }, - "main": "lib/json2csv.js", - "module": "dist/json2csv.esm.js", - "browser": "dist/json2csv.umd.js", - "repository": { - "type": "git", - "url": "https://github.com/zemirco/json2csv" - }, - "homepage": "http://zemirco.github.io/json2csv", - "scripts": { - "build": "rollup -c", - "dev": "rollup -c -w", - "test": "node test | tap-spec", - "lint": "eslint bin lib test", - "test-with-coverage": "nyc --reporter=text node test | tap-spec", - "coveralls": "nyc report --reporter=text-lcov | coveralls", - "deploy:docs": "docpress b && gh-pages -d _docpress", - "prepublish": "in-publish && npm run before:publish || not-in-publish", - "before:publish": "npm test && npm run build && npm run deploy:docs", - "release": "standard-version" - }, - "dependencies": { - "commander": "^6.1.0", - "jsonparse": "^1.3.1", - "lodash.get": "^4.4.2" - }, - "devDependencies": { - "@babel/core": "^7.3.3", - "@babel/preset-env": "^7.3.1", - "coveralls": "^3.0.3", - "docpress": "^0.8.0", - "eslint": "^6.1.0", - "gh-pages": "^2.0.1", - "in-publish": "^2.0.0", - "nyc": "^14.1.1", - "rollup": "^1.11.0", - "rollup-plugin-babel": "^4.3.2", - "rollup-plugin-commonjs": "^10.0.2", - "rollup-plugin-node-builtins": "^2.1.2", - "rollup-plugin-node-globals": "^1.2.1", - "rollup-plugin-node-resolve": "^5.2.0", - "standard-version": "^8.0.1", - "tap-spec": "^5.0.0", - "tape": "^4.10.1" - }, - "engines": { - "node": ">= 10", - "npm": ">= 6.13.0" - }, - "volta": { - "node": "10.19.0" - } -} diff --git a/node_modules/json2csv/rollup.config.js b/node_modules/json2csv/rollup.config.js deleted file mode 100644 index 05670a1..0000000 --- a/node_modules/json2csv/rollup.config.js +++ /dev/null @@ -1,46 +0,0 @@ -import resolve from 'rollup-plugin-node-resolve'; -import commonjs from 'rollup-plugin-commonjs'; -import globals from 'rollup-plugin-node-globals'; -import builtins from 'rollup-plugin-node-builtins'; -import babel from 'rollup-plugin-babel'; -import pkg from './package.json'; - -export default [ - { - input: 'lib/json2csv.js', - output: { - file: pkg.browser, - format: 'umd', - name: 'json2csv' - }, - plugins: [ - resolve({ - browser: true - }), - commonjs(), - globals(), - builtins(), - babel({ - exclude: ['node_modules/**'], - babelrc: false, - presets: [['@babel/env', { modules: false }]], - }) - ] - }, - { - input: 'lib/json2csv.js', - output: [ - { file: pkg.module, format: 'es' } - ], - external: [ 'os', 'stream' ], - plugins: [ - resolve(), - commonjs(), - babel({ - exclude: ['node_modules/**'], - babelrc: false, - presets: [['@babel/env', { modules: false }]], - }) - ] - } -]; diff --git a/node_modules/jsonparse/.npmignore b/node_modules/jsonparse/.npmignore deleted file mode 100644 index b512c09..0000000 --- a/node_modules/jsonparse/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules \ No newline at end of file diff --git a/node_modules/jsonparse/LICENSE b/node_modules/jsonparse/LICENSE deleted file mode 100644 index 6dc24be..0000000 --- a/node_modules/jsonparse/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -The MIT License - -Copyright (c) 2012 Tim Caswell - -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/jsonparse/README.markdown b/node_modules/jsonparse/README.markdown deleted file mode 100644 index 0f405d3..0000000 --- a/node_modules/jsonparse/README.markdown +++ /dev/null @@ -1,11 +0,0 @@ -This is a streaming JSON parser. For a simpler, sax-based version see this gist: https://gist.github.com/1821394 - -The MIT License (MIT) -Copyright (c) 2011-2012 Tim Caswell - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/node_modules/jsonparse/bench.js b/node_modules/jsonparse/bench.js deleted file mode 100644 index b36d92f..0000000 --- a/node_modules/jsonparse/bench.js +++ /dev/null @@ -1,26 +0,0 @@ -var fs = require('fs'), - Parser = require('./jsonparse'); - - -var json = fs.readFileSync("samplejson/basic.json"); - - -while (true) { - var start = Date.now(); - for (var i = 0; i < 1000; i++) { - JSON.parse(json); - } - var first = Date.now() - start; - - start = Date.now(); - var p = new Parser(); - for (var i = 0; i < 1000; i++) { - p.write(json); - } - var second = Date.now() - start; - - - console.log("JSON.parse took %s", first); - console.log("streaming parser took %s", second); - console.log("streaming is %s times slower", second / first); -} diff --git a/node_modules/jsonparse/examples/twitterfeed.js b/node_modules/jsonparse/examples/twitterfeed.js deleted file mode 100644 index 10210d4..0000000 --- a/node_modules/jsonparse/examples/twitterfeed.js +++ /dev/null @@ -1,30 +0,0 @@ -var Parser = require('../jsonparse'); -var Http = require('http'); -require('./colors'); -var p = new Parser(); -var cred = require('./credentials'); -var client = Http.createClient(80, "stream.twitter.com"); -var request = client.request("GET", "/1/statuses/sample.json", { - "Host": "stream.twitter.com", - "Authorization": (new Buffer(cred.username + ":" + cred.password)).toString("base64") -}); -request.on('response', function (response) { - console.log(response.statusCode); - console.dir(response.headers); - response.on('data', function (chunk) { - p.write(chunk); - }); - response.on('end', function () { - console.log("END"); - }); -}); -request.end(); -var text = "", name = ""; -p.onValue = function (value) { - if (this.stack.length === 1 && this.key === 'text') { text = value; } - if (this.stack.length === 2 && this.key === 'name' && this.stack[1].key === 'user') { name = value; } - if (this.stack.length === 0) { - console.log(text.blue + " - " + name.yellow); - text = name = ""; - } -}; diff --git a/node_modules/jsonparse/jsonparse.js b/node_modules/jsonparse/jsonparse.js deleted file mode 100644 index 3991060..0000000 --- a/node_modules/jsonparse/jsonparse.js +++ /dev/null @@ -1,413 +0,0 @@ -/*global Buffer*/ -// Named constants with unique integer values -var C = {}; -// Tokens -var LEFT_BRACE = C.LEFT_BRACE = 0x1; -var RIGHT_BRACE = C.RIGHT_BRACE = 0x2; -var LEFT_BRACKET = C.LEFT_BRACKET = 0x3; -var RIGHT_BRACKET = C.RIGHT_BRACKET = 0x4; -var COLON = C.COLON = 0x5; -var COMMA = C.COMMA = 0x6; -var TRUE = C.TRUE = 0x7; -var FALSE = C.FALSE = 0x8; -var NULL = C.NULL = 0x9; -var STRING = C.STRING = 0xa; -var NUMBER = C.NUMBER = 0xb; -// Tokenizer States -var START = C.START = 0x11; -var STOP = C.STOP = 0x12; -var TRUE1 = C.TRUE1 = 0x21; -var TRUE2 = C.TRUE2 = 0x22; -var TRUE3 = C.TRUE3 = 0x23; -var FALSE1 = C.FALSE1 = 0x31; -var FALSE2 = C.FALSE2 = 0x32; -var FALSE3 = C.FALSE3 = 0x33; -var FALSE4 = C.FALSE4 = 0x34; -var NULL1 = C.NULL1 = 0x41; -var NULL2 = C.NULL2 = 0x42; -var NULL3 = C.NULL3 = 0x43; -var NUMBER1 = C.NUMBER1 = 0x51; -var NUMBER3 = C.NUMBER3 = 0x53; -var STRING1 = C.STRING1 = 0x61; -var STRING2 = C.STRING2 = 0x62; -var STRING3 = C.STRING3 = 0x63; -var STRING4 = C.STRING4 = 0x64; -var STRING5 = C.STRING5 = 0x65; -var STRING6 = C.STRING6 = 0x66; -// Parser States -var VALUE = C.VALUE = 0x71; -var KEY = C.KEY = 0x72; -// Parser Modes -var OBJECT = C.OBJECT = 0x81; -var ARRAY = C.ARRAY = 0x82; -// Character constants -var BACK_SLASH = "\\".charCodeAt(0); -var FORWARD_SLASH = "\/".charCodeAt(0); -var BACKSPACE = "\b".charCodeAt(0); -var FORM_FEED = "\f".charCodeAt(0); -var NEWLINE = "\n".charCodeAt(0); -var CARRIAGE_RETURN = "\r".charCodeAt(0); -var TAB = "\t".charCodeAt(0); - -var STRING_BUFFER_SIZE = 64 * 1024; - -function Parser() { - this.tState = START; - this.value = undefined; - - this.string = undefined; // string data - this.stringBuffer = Buffer.alloc ? Buffer.alloc(STRING_BUFFER_SIZE) : new Buffer(STRING_BUFFER_SIZE); - this.stringBufferOffset = 0; - this.unicode = undefined; // unicode escapes - this.highSurrogate = undefined; - - this.key = undefined; - this.mode = undefined; - this.stack = []; - this.state = VALUE; - this.bytes_remaining = 0; // number of bytes remaining in multi byte utf8 char to read after split boundary - this.bytes_in_sequence = 0; // bytes in multi byte utf8 char to read - this.temp_buffs = { "2": new Buffer(2), "3": new Buffer(3), "4": new Buffer(4) }; // for rebuilding chars split before boundary is reached - - // Stream offset - this.offset = -1; -} - -// Slow code to string converter (only used when throwing syntax errors) -Parser.toknam = function (code) { - var keys = Object.keys(C); - for (var i = 0, l = keys.length; i < l; i++) { - var key = keys[i]; - if (C[key] === code) { return key; } - } - return code && ("0x" + code.toString(16)); -}; - -var proto = Parser.prototype; -proto.onError = function (err) { throw err; }; -proto.charError = function (buffer, i) { - this.tState = STOP; - this.onError(new Error("Unexpected " + JSON.stringify(String.fromCharCode(buffer[i])) + " at position " + i + " in state " + Parser.toknam(this.tState))); -}; -proto.appendStringChar = function (char) { - if (this.stringBufferOffset >= STRING_BUFFER_SIZE) { - this.string += this.stringBuffer.toString('utf8'); - this.stringBufferOffset = 0; - } - - this.stringBuffer[this.stringBufferOffset++] = char; -}; -proto.appendStringBuf = function (buf, start, end) { - var size = buf.length; - if (typeof start === 'number') { - if (typeof end === 'number') { - if (end < 0) { - // adding a negative end decreeses the size - size = buf.length - start + end; - } else { - size = end - start; - } - } else { - size = buf.length - start; - } - } - - if (size < 0) { - size = 0; - } - - if (this.stringBufferOffset + size > STRING_BUFFER_SIZE) { - this.string += this.stringBuffer.toString('utf8', 0, this.stringBufferOffset); - this.stringBufferOffset = 0; - } - - buf.copy(this.stringBuffer, this.stringBufferOffset, start, end); - this.stringBufferOffset += size; -}; -proto.write = function (buffer) { - if (typeof buffer === "string") buffer = new Buffer(buffer); - var n; - for (var i = 0, l = buffer.length; i < l; i++) { - if (this.tState === START){ - n = buffer[i]; - this.offset++; - if(n === 0x7b){ this.onToken(LEFT_BRACE, "{"); // { - }else if(n === 0x7d){ this.onToken(RIGHT_BRACE, "}"); // } - }else if(n === 0x5b){ this.onToken(LEFT_BRACKET, "["); // [ - }else if(n === 0x5d){ this.onToken(RIGHT_BRACKET, "]"); // ] - }else if(n === 0x3a){ this.onToken(COLON, ":"); // : - }else if(n === 0x2c){ this.onToken(COMMA, ","); // , - }else if(n === 0x74){ this.tState = TRUE1; // t - }else if(n === 0x66){ this.tState = FALSE1; // f - }else if(n === 0x6e){ this.tState = NULL1; // n - }else if(n === 0x22){ // " - this.string = ""; - this.stringBufferOffset = 0; - this.tState = STRING1; - }else if(n === 0x2d){ this.string = "-"; this.tState = NUMBER1; // - - }else{ - if (n >= 0x30 && n < 0x40) { // 1-9 - this.string = String.fromCharCode(n); this.tState = NUMBER3; - } else if (n === 0x20 || n === 0x09 || n === 0x0a || n === 0x0d) { - // whitespace - } else { - return this.charError(buffer, i); - } - } - }else if (this.tState === STRING1){ // After open quote - n = buffer[i]; // get current byte from buffer - // check for carry over of a multi byte char split between data chunks - // & fill temp buffer it with start of this data chunk up to the boundary limit set in the last iteration - if (this.bytes_remaining > 0) { - for (var j = 0; j < this.bytes_remaining; j++) { - this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence - this.bytes_remaining + j] = buffer[j]; - } - - this.appendStringBuf(this.temp_buffs[this.bytes_in_sequence]); - this.bytes_in_sequence = this.bytes_remaining = 0; - i = i + j - 1; - } else if (this.bytes_remaining === 0 && n >= 128) { // else if no remainder bytes carried over, parse multi byte (>=128) chars one at a time - if (n <= 193 || n > 244) { - return this.onError(new Error("Invalid UTF-8 character at position " + i + " in state " + Parser.toknam(this.tState))); - } - if ((n >= 194) && (n <= 223)) this.bytes_in_sequence = 2; - if ((n >= 224) && (n <= 239)) this.bytes_in_sequence = 3; - if ((n >= 240) && (n <= 244)) this.bytes_in_sequence = 4; - if ((this.bytes_in_sequence + i) > buffer.length) { // if bytes needed to complete char fall outside buffer length, we have a boundary split - for (var k = 0; k <= (buffer.length - 1 - i); k++) { - this.temp_buffs[this.bytes_in_sequence][k] = buffer[i + k]; // fill temp buffer of correct size with bytes available in this chunk - } - this.bytes_remaining = (i + this.bytes_in_sequence) - buffer.length; - i = buffer.length - 1; - } else { - this.appendStringBuf(buffer, i, i + this.bytes_in_sequence); - i = i + this.bytes_in_sequence - 1; - } - } else if (n === 0x22) { - this.tState = START; - this.string += this.stringBuffer.toString('utf8', 0, this.stringBufferOffset); - this.stringBufferOffset = 0; - this.onToken(STRING, this.string); - this.offset += Buffer.byteLength(this.string, 'utf8') + 1; - this.string = undefined; - } - else if (n === 0x5c) { - this.tState = STRING2; - } - else if (n >= 0x20) { this.appendStringChar(n); } - else { - return this.charError(buffer, i); - } - }else if (this.tState === STRING2){ // After backslash - n = buffer[i]; - if(n === 0x22){ this.appendStringChar(n); this.tState = STRING1; - }else if(n === 0x5c){ this.appendStringChar(BACK_SLASH); this.tState = STRING1; - }else if(n === 0x2f){ this.appendStringChar(FORWARD_SLASH); this.tState = STRING1; - }else if(n === 0x62){ this.appendStringChar(BACKSPACE); this.tState = STRING1; - }else if(n === 0x66){ this.appendStringChar(FORM_FEED); this.tState = STRING1; - }else if(n === 0x6e){ this.appendStringChar(NEWLINE); this.tState = STRING1; - }else if(n === 0x72){ this.appendStringChar(CARRIAGE_RETURN); this.tState = STRING1; - }else if(n === 0x74){ this.appendStringChar(TAB); this.tState = STRING1; - }else if(n === 0x75){ this.unicode = ""; this.tState = STRING3; - }else{ - return this.charError(buffer, i); - } - }else if (this.tState === STRING3 || this.tState === STRING4 || this.tState === STRING5 || this.tState === STRING6){ // unicode hex codes - n = buffer[i]; - // 0-9 A-F a-f - if ((n >= 0x30 && n < 0x40) || (n > 0x40 && n <= 0x46) || (n > 0x60 && n <= 0x66)) { - this.unicode += String.fromCharCode(n); - if (this.tState++ === STRING6) { - var intVal = parseInt(this.unicode, 16); - this.unicode = undefined; - if (this.highSurrogate !== undefined && intVal >= 0xDC00 && intVal < (0xDFFF + 1)) { //<56320,57343> - lowSurrogate - this.appendStringBuf(new Buffer(String.fromCharCode(this.highSurrogate, intVal))); - this.highSurrogate = undefined; - } else if (this.highSurrogate === undefined && intVal >= 0xD800 && intVal < (0xDBFF + 1)) { //<55296,56319> - highSurrogate - this.highSurrogate = intVal; - } else { - if (this.highSurrogate !== undefined) { - this.appendStringBuf(new Buffer(String.fromCharCode(this.highSurrogate))); - this.highSurrogate = undefined; - } - this.appendStringBuf(new Buffer(String.fromCharCode(intVal))); - } - this.tState = STRING1; - } - } else { - return this.charError(buffer, i); - } - } else if (this.tState === NUMBER1 || this.tState === NUMBER3) { - n = buffer[i]; - - switch (n) { - case 0x30: // 0 - case 0x31: // 1 - case 0x32: // 2 - case 0x33: // 3 - case 0x34: // 4 - case 0x35: // 5 - case 0x36: // 6 - case 0x37: // 7 - case 0x38: // 8 - case 0x39: // 9 - case 0x2e: // . - case 0x65: // e - case 0x45: // E - case 0x2b: // + - case 0x2d: // - - this.string += String.fromCharCode(n); - this.tState = NUMBER3; - break; - default: - this.tState = START; - var result = Number(this.string); - - if (isNaN(result)){ - return this.charError(buffer, i); - } - - if ((this.string.match(/[0-9]+/) == this.string) && (result.toString() != this.string)) { - // Long string of digits which is an ID string and not valid and/or safe JavaScript integer Number - this.onToken(STRING, this.string); - } else { - this.onToken(NUMBER, result); - } - - this.offset += this.string.length - 1; - this.string = undefined; - i--; - break; - } - }else if (this.tState === TRUE1){ // r - if (buffer[i] === 0x72) { this.tState = TRUE2; } - else { return this.charError(buffer, i); } - }else if (this.tState === TRUE2){ // u - if (buffer[i] === 0x75) { this.tState = TRUE3; } - else { return this.charError(buffer, i); } - }else if (this.tState === TRUE3){ // e - if (buffer[i] === 0x65) { this.tState = START; this.onToken(TRUE, true); this.offset+= 3; } - else { return this.charError(buffer, i); } - }else if (this.tState === FALSE1){ // a - if (buffer[i] === 0x61) { this.tState = FALSE2; } - else { return this.charError(buffer, i); } - }else if (this.tState === FALSE2){ // l - if (buffer[i] === 0x6c) { this.tState = FALSE3; } - else { return this.charError(buffer, i); } - }else if (this.tState === FALSE3){ // s - if (buffer[i] === 0x73) { this.tState = FALSE4; } - else { return this.charError(buffer, i); } - }else if (this.tState === FALSE4){ // e - if (buffer[i] === 0x65) { this.tState = START; this.onToken(FALSE, false); this.offset+= 4; } - else { return this.charError(buffer, i); } - }else if (this.tState === NULL1){ // u - if (buffer[i] === 0x75) { this.tState = NULL2; } - else { return this.charError(buffer, i); } - }else if (this.tState === NULL2){ // l - if (buffer[i] === 0x6c) { this.tState = NULL3; } - else { return this.charError(buffer, i); } - }else if (this.tState === NULL3){ // l - if (buffer[i] === 0x6c) { this.tState = START; this.onToken(NULL, null); this.offset += 3; } - else { return this.charError(buffer, i); } - } - } -}; -proto.onToken = function (token, value) { - // Override this to get events -}; - -proto.parseError = function (token, value) { - this.tState = STOP; - this.onError(new Error("Unexpected " + Parser.toknam(token) + (value ? ("(" + JSON.stringify(value) + ")") : "") + " in state " + Parser.toknam(this.state))); -}; -proto.push = function () { - this.stack.push({value: this.value, key: this.key, mode: this.mode}); -}; -proto.pop = function () { - var value = this.value; - var parent = this.stack.pop(); - this.value = parent.value; - this.key = parent.key; - this.mode = parent.mode; - this.emit(value); - if (!this.mode) { this.state = VALUE; } -}; -proto.emit = function (value) { - if (this.mode) { this.state = COMMA; } - this.onValue(value); -}; -proto.onValue = function (value) { - // Override me -}; -proto.onToken = function (token, value) { - if(this.state === VALUE){ - if(token === STRING || token === NUMBER || token === TRUE || token === FALSE || token === NULL){ - if (this.value) { - this.value[this.key] = value; - } - this.emit(value); - }else if(token === LEFT_BRACE){ - this.push(); - if (this.value) { - this.value = this.value[this.key] = {}; - } else { - this.value = {}; - } - this.key = undefined; - this.state = KEY; - this.mode = OBJECT; - }else if(token === LEFT_BRACKET){ - this.push(); - if (this.value) { - this.value = this.value[this.key] = []; - } else { - this.value = []; - } - this.key = 0; - this.mode = ARRAY; - this.state = VALUE; - }else if(token === RIGHT_BRACE){ - if (this.mode === OBJECT) { - this.pop(); - } else { - return this.parseError(token, value); - } - }else if(token === RIGHT_BRACKET){ - if (this.mode === ARRAY) { - this.pop(); - } else { - return this.parseError(token, value); - } - }else{ - return this.parseError(token, value); - } - }else if(this.state === KEY){ - if (token === STRING) { - this.key = value; - this.state = COLON; - } else if (token === RIGHT_BRACE) { - this.pop(); - } else { - return this.parseError(token, value); - } - }else if(this.state === COLON){ - if (token === COLON) { this.state = VALUE; } - else { return this.parseError(token, value); } - }else if(this.state === COMMA){ - if (token === COMMA) { - if (this.mode === ARRAY) { this.key++; this.state = VALUE; } - else if (this.mode === OBJECT) { this.state = KEY; } - - } else if (token === RIGHT_BRACKET && this.mode === ARRAY || token === RIGHT_BRACE && this.mode === OBJECT) { - this.pop(); - } else { - return this.parseError(token, value); - } - }else{ - return this.parseError(token, value); - } -}; - -Parser.C = C; - -module.exports = Parser; diff --git a/node_modules/jsonparse/package.json b/node_modules/jsonparse/package.json deleted file mode 100644 index a2312ee..0000000 --- a/node_modules/jsonparse/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "jsonparse", - "description": "This is a pure-js JSON streaming parser for node.js", - "tags": ["json", "stream"], - "version": "1.3.1", - "author": "Tim Caswell ", - "repository": { - "type": "git", - "url": "http://github.com/creationix/jsonparse.git" - }, - "devDependencies": { - "tape": "~0.1.1", - "tap": "~0.3.3" - }, - "scripts": { - "test": "tap test/*.js" - }, - "bugs": "http://github.com/creationix/jsonparse/issues", - "engines": ["node >= 0.2.0"], - "license": "MIT", - "main": "jsonparse.js" -} diff --git a/node_modules/jsonparse/samplejson/basic.json b/node_modules/jsonparse/samplejson/basic.json deleted file mode 100644 index 950dff9..0000000 --- a/node_modules/jsonparse/samplejson/basic.json +++ /dev/null @@ -1,167 +0,0 @@ -[ - { - }, - { - "image": [ - {"shape": "rect", "fill": "#333", "stroke": "#999", "x": 0.5e+1, "y": 0.5, "z": 0.8e-0, "w": 0.5e5, "u": 2E10, "foo": 2E+1, "bar": 2E-0, "width": 47, "height": 47} - ], - "jumpable": 3, - "solid": { - "1": [2,4], - "2": [], - "3": [2,6], - "4": [], - "5": [2,8,1,3,7,9,4,6], - "6": [], - "7": [4,8], - "8": [], - "9": [6,8] - }, - "corners": {"1": true,"3": true,"7": true,"9": true} - }, - { - "image": [ - {"shape": "polygon", "fill": "#248", "stroke": "#48f", "points": [[0.5,47.5],[47.5,47.5],[47.5,0.5]]} - ], - "solid": { - "1": [2,4], - "2": [1], - "3": [2], - "4": [], - "5": [2,8,1,3,7,9,4,6], - "6": [], - "7": [4,8], - "8": [], - "9": [6,8] - }, - "corners": {"1": true,"3": true,"7": false,"9": true} - }, - { - "image": [ - {"shape": "polygon", "fill": "#248", "stroke": "#48f", "points": [[0.5,0.5],[47.5,47.5],[0.5,47.5]]} - ], - "solid": { - "1": [2], - "2": [3], - "3": [2,6], - "4": [], - "5": [2,8,1,3,7,9,4,6], - "6": [], - "7": [4,8], - "8": [], - "9": [6,8] - }, - "corners": {"1": true,"3": true,"7": true,"9": false} - }, - { - "image": [ - {"shape": "polygon", "fill": "#333", "stroke": "#999", "points": [[0.5,0.5],[47.5,47.5],[47.5,0.5]]} - ], - "jumpable": 3, - "solid": { - "1": [2,4], - "2": [], - "3": [2,6], - "4": [], - "5": [2,8,1,3,7,9,4,6], - "6": [3], - "7": [4,8], - "8": [7], - "9": [6,8] - }, - "corners": {"1": false,"3": true,"7": true,"9": true} - }, - { - "image": [ - {"shape": "polygon", "fill": "#333", "stroke": "#999", "points": [[0.5,0.5],[0.5,47.5],[47.5,0.5]]} - ], - "jumpable": 3, - "solid": { - "1": [2,4], - "2": [], - "3": [2,6], - "4": [1], - "5": [2,8,1,3,7,9,4,6], - "6": [], - "7": [4,8], - "8": [9], - "9": [6,8] - }, - "corners": {"1": true,"3": false,"7": true,"9": true} - }, - { - "image": [ - {"shape": "polygon", "fill": "#482", "stroke": "#8f4", "points": [[0.5,47.5],[0.5,23.5],[24.5,23.5],[24.5,0.5],[47.5,0.5],[47.5,47.5]]} - ], - "jumpable": 3, - "solid": { - "1": [2,4], - "2": [], - "3": [6,2], - "4": [], - "5": [2,8,1,3,7,9,4,6], - "6": [9], - "7": [4,8], - "8": [], - "9": [6,8] - }, - "corners": {"1": true,"3": true,"7": false,"9": true} - }, - { - "image": [ - {"shape": "polygon", "fill": "#482", "stroke": "#8f4", "points": [[0.5,0.5],[23.5,0.5],[23.5,24.5],[47.5,24.5],[47.5,47.5],[0.5,47.5]]} - ], - "jumpable": 3, - "solid": { - "1": [4,2], - "2": [], - "3": [2,6], - "4": [7], - "5": [2,8,1,3,7,9,4,6], - "6": [], - "7": [4,8], - "8": [], - "9": [6,8] - }, - "corners": {"1": true,"3": true,"7": true,"9": false} - }, - { - "image": [ - {"shape": "circle", "fill": "#ff0", "stroke": "#ff8", "cx": 24, "cy": 24, "r": 18} - ], - "item": true - }, - { - "image": [ - {"shape": "polygon", "fill": "#842", "stroke": "#f84", "points": [[4.5,0.5],[14.5,0.5],[14.5,17.5],[34,17.5],[33.5,0.5],[43.5,0.5],[43.5,47.5],[33.5,47.5],[33.5,30.5],[14.5,30.5],[14.5,47.5],[4.5,47.5]]} - ], - "jumpable": 3 - }, - { - "image": [ - {"shape": "polygon", "fill": "#333", "stroke": "#999", "points": [[0.5,0.5],[47.5,0.5],[24,47.5]]} - ], - "jumpable": 3, - "solid": { - "1": [2,4], - "2": [], - "3": [2,6], - "4": [1], - "5": [2,8,1,3,7,9,4,6], - "6": [3], - "7": [4,8], - "8": [], - "9": [6,8] - }, - "corners": {"1": false,"3": false,"7": true,"9": true} - }, - { - "image": [ - {"shape": "rect", "fill": "#114acb", "x": 0.5, "y": 0.5, "width": 47, "height": 47}, - {"shape": "polygon", "fill": "rgba(255,255,255,0.30)", "points": [[0.5,0.5],[47.5,0.5],[40,8],[8,8],[8,40],[0.5,47.5]]}, - {"shape": "polygon", "fill": "rgba(0,0,0,0.30)", "points": [[47.5,0.5],[48,48],[0.5,47.5],[8,40],[40,40],[40,8]]}, - {"shape": "polygon", "fill": "rgb(255,255,0)", "stroke": "rgba(255,255,0,0.5)", "points": [[24,9],[35,20],[26,29],[26,33],[22,33],[22,27],[29,20],[24,15],[16,23],[13,20]]}, - {"shape": "rect", "fill": "rgb(255,255,0)", "stroke": "rgba(255,255,0,0.5)", "x": 22, "y":35, "width": 4, "height": 4} - ] - } -] diff --git a/node_modules/jsonparse/samplejson/basic2.json b/node_modules/jsonparse/samplejson/basic2.json deleted file mode 100644 index 3a6919b..0000000 --- a/node_modules/jsonparse/samplejson/basic2.json +++ /dev/null @@ -1,180 +0,0 @@ -[ - { - }, - { - "image": [ - {"shape": "rect", "fill": "#333", "stroke": "#999", "x": 0.5, "y": 0.5, "width": 47, "height": 47} - ], - "jumpable": 3, - "solid": { - "1": [2,4], - "2": [], - "3": [2,6], - "4": [], - "5": [2,8,1,3,7,9,4,6], - "6": [], - "7": [4,8], - "8": [], - "9": [6,8] - }, - "corners": {"1": true,"3": true,"7": true,"9": true} - }, - { - "image": [ - {"shape": "polygon", "fill": "#248", "stroke": "#48f", "points": [[0.5,47.5],[47.5,47.5],[47.5,0.5]]} - ], - "solid": { - "1": [2,4], - "2": [1], - "3": [2], - "4": [], - "5": [2,8,1,3,7,9,4,6], - "6": [], - "7": [4,8], - "8": [], - "9": [6,8] - }, - "corners": {"1": true,"3": true,"7": false,"9": true} - }, - { - "image": [ - {"shape": "polygon", "fill": "#248", "stroke": "#48f", "points": [[0.5,0.5],[47.5,47.5],[0.5,47.5]]} - ], - "solid": { - "1": [2], - "2": [3], - "3": [2,6], - "4": [], - "5": [2,8,1,3,7,9,4,6], - "6": [], - "7": [4,8], - "8": [], - "9": [6,8] - }, - "corners": {"1": true,"3": true,"7": true,"9": false} - }, - { - "image": [ - {"shape": "polygon", "fill": "#333", "stroke": "#999", "points": [[0.5,0.5],[47.5,47.5],[47.5,0.5]]} - ], - "jumpable": 3, - "solid": { - "1": [2,4], - "2": [], - "3": [2,6], - "4": [], - "5": [2,8,1,3,7,9,4,6], - "6": [3], - "7": [4,8], - "8": [7], - "9": [6,8] - }, - "corners": {"1": false,"3": true,"7": true,"9": true} - }, - { - "image": [ - {"shape": "polygon", "fill": "#333", "stroke": "#999", "points": [[0.5,0.5],[0.5,47.5],[47.5,0.5]]} - ], - "jumpable": 3, - "solid": { - "1": [2,4], - "2": [], - "3": [2,6], - "4": [1], - "5": [2,8,1,3,7,9,4,6], - "6": [], - "7": [4,8], - "8": [9], - "9": [6,8] - }, - "corners": {"1": true,"3": false,"7": true,"9": true} - }, - { - "image": [ - {"shape": "polygon", "fill": "#482", "stroke": "#8f4", "points": [[0.5,47.5],[0.5,23.5],[24.5,23.5],[24.5,0.5],[47.5,0.5],[47.5,47.5]]} - ], - "jumpable": 3, - "solid": { - "1": [2,4], - "2": [], - "3": [6,2], - "4": [], - "5": [2,8,1,3,7,9,4,6], - "6": [9], - "7": [4,8], - "8": [], - "9": [6,8] - }, - "corners": {"1": true,"3": true,"7": false,"9": true} - }, - { - "image": [ - {"shape": "polygon", "fill": "#482", "stroke": "#8f4", "points": [[0.5,0.5],[23.5,0.5],[23.5,24.5],[47.5,24.5],[47.5,47.5],[0.5,47.5]]} - ], - "jumpable": 3, - "solid": { - "1": [4,2], - "2": [], - "3": [2,6], - "4": [7], - "5": [2,8,1,3,7,9,4,6], - "6": [], - "7": [4,8], - "8": [], - "9": [6,8] - }, - "corners": {"1": true,"3": true,"7": true,"9": false} - }, - { - "image": [ - {"shape": "circle", "fill": "#ff0", "stroke": "#ff8", "cx": 24, "cy": 24, "r": 18} - ], - "item": true - }, - { - "image": [ - {"shape": "polygon", "fill": "#842", "stroke": "#f84", "points": [[4.5,0.5],[14.5,0.5],[14.5,17.5],[34,17.5],[33.5,0.5],[43.5,0.5],[43.5,47.5],[33.5,47.5],[33.5,30.5],[14.5,30.5],[14.5,47.5],[4.5,47.5]]} - ], - "jumpable": 3 - }, - { - "image": [ - {"shape": "polygon", "fill": "#333", "stroke": "#999", "points": [[0.5,0.5],[47.5,0.5],[24,47.5]]} - ], - "jumpable": 3, - "solid": { - "1": [2,4], - "2": [], - "3": [2,6], - "4": [1], - "5": [2,8,1,3,7,9,4,6], - "6": [3], - "7": [4,8], - "8": [], - "9": [6,8] - }, - "corners": {"1": false,"3": false,"7": true,"9": true} - }, - { - "image": [ - {"shape": "rect", "fill": "#114acb", "x": 0.5, "y": 0.5, "width": 47, "height": 47}, - {"shape": "polygon", "fill": "rgba(255,255,255,0.30)", "points": [[0.5,0.5],[47.5,0.5],[40,8],[8,8],[8,40],[0.5,47.5]]}, - {"shape": "polygon", "fill": "rgba(0,0,0,0.30)", "points": [[47.5,0.5],[48,48],[0.5,47.5],[8,40],[40,40],[40,8]]}, - {"shape": "polygon", "fill": "rgb(255,255,0)", "stroke": "rgba(255,255,0,0.5)", "points": [[24,9],[35,20],[26,29],[26,33],[22,33],[22,27],[29,20],[24,15],[16,23],[13,20]]}, - {"shape": "rect", "fill": "rgb(255,255,0)", "stroke": "rgba(255,255,0,0.5)", "x": 22, "y":35, "width": 4, "height": 4} - ], - "item": true - }, - { - "image": [ - {"shape": "circle", "fill": "#80f", "stroke": "#88f", "cx": 24, "cy": 24, "r": 18} - ], - "item": true - }, - { - "image": [ - {"shape": "circle", "fill": "#4f4", "stroke": "#8f8", "cx": 24, "cy": 24, "r": 18} - ], - "item": true - } -] diff --git a/node_modules/jsonparse/test/big-token.js b/node_modules/jsonparse/test/big-token.js deleted file mode 100644 index 3604631..0000000 --- a/node_modules/jsonparse/test/big-token.js +++ /dev/null @@ -1,24 +0,0 @@ -var stream = require('stream'); -var JsonParse = require('../jsonparse'); -var test = require('tape'); - -test('can handle large tokens without running out of memory', function (t) { - var parser = new JsonParse(); - var chunkSize = 1024; - var chunks = 1024 * 200; // 200mb - var quote = Buffer.from ? Buffer.from('"') : new Buffer('"'); - t.plan(1); - - parser.onToken = function (type, value) { - t.equal(value.length, chunkSize * chunks, 'token should be size of input json'); - t.end(); - }; - - parser.write(quote); - for (var i = 0; i < chunks; ++i) { - var buf = Buffer.alloc ? Buffer.alloc(chunkSize) : new Buffer(chunkSize); - buf.fill('a'); - parser.write(buf); - } - parser.write(quote); -}); diff --git a/node_modules/jsonparse/test/boundary.js b/node_modules/jsonparse/test/boundary.js deleted file mode 100644 index 6671f5f..0000000 --- a/node_modules/jsonparse/test/boundary.js +++ /dev/null @@ -1,110 +0,0 @@ -var test = require('tape'); -var Parser = require('../'); - -test('2 byte utf8 \'De\' character: д', function (t) { - t.plan(1); - - var p = new Parser(); - p.onValue = function (value) { - t.equal(value, 'д'); - }; - - var de_buffer = new Buffer([0xd0, 0xb4]); - - p.write('"'); - p.write(de_buffer); - p.write('"'); - -}); - -test('3 byte utf8 \'Han\' character: 我', function (t) { - t.plan(1); - - var p = new Parser(); - p.onValue = function (value) { - t.equal(value, '我'); - }; - - var han_buffer = new Buffer([0xe6, 0x88, 0x91]); - p.write('"'); - p.write(han_buffer); - p.write('"'); -}); - -test('4 byte utf8 character (unicode scalar U+2070E): 𠜎', function (t) { - t.plan(1); - - var p = new Parser(); - p.onValue = function (value) { - t.equal(value, '𠜎'); - }; - - var Ux2070E_buffer = new Buffer([0xf0, 0xa0, 0x9c, 0x8e]); - p.write('"'); - p.write(Ux2070E_buffer); - p.write('"'); -}); - -test('3 byte utf8 \'Han\' character chunked inbetween 2nd and 3rd byte: 我', function (t) { - t.plan(1); - - var p = new Parser(); - p.onValue = function (value) { - t.equal(value, '我'); - }; - - var han_buffer_first = new Buffer([0xe6, 0x88]); - var han_buffer_second = new Buffer([0x91]); - p.write('"'); - p.write(han_buffer_first); - p.write(han_buffer_second); - p.write('"'); -}); - -test('4 byte utf8 character (unicode scalar U+2070E) chunked inbetween 2nd and 3rd byte: 𠜎', function (t) { - t.plan(1); - - var p = new Parser(); - p.onValue = function (value) { - t.equal(value, '𠜎'); - }; - - var Ux2070E_buffer_first = new Buffer([0xf0, 0xa0]); - var Ux2070E_buffer_second = new Buffer([0x9c, 0x8e]); - p.write('"'); - p.write(Ux2070E_buffer_first); - p.write(Ux2070E_buffer_second); - p.write('"'); -}); - -test('1-4 byte utf8 character string chunked inbetween random bytes: Aж文𠜱B', function (t) { - t.plan(1); - -var p = new Parser(); - p.onValue = function (value) { - t.equal(value, 'Aж文𠜱B'); - }; - - var eclectic_buffer = new Buffer([0x41, // A - 0xd0, 0xb6, // ж - 0xe6, 0x96, 0x87, // 文 - 0xf0, 0xa0, 0x9c, 0xb1, // 𠜱 - 0x42]); // B - - var rand_chunk = Math.floor(Math.random() * (eclectic_buffer.length)); - var first_buffer = eclectic_buffer.slice(0, rand_chunk); - var second_buffer = eclectic_buffer.slice(rand_chunk); - - //console.log('eclectic_buffer: ' + eclectic_buffer) - //console.log('sliced from 0 to ' + rand_chunk); - //console.log(first_buffer); - //console.log('then sliced from ' + rand_chunk + ' to the end'); - //console.log(second_buffer); - - console.log('chunked after offset ' + rand_chunk); - p.write('"'); - p.write(first_buffer); - p.write(second_buffer); - p.write('"'); - -}); \ No newline at end of file diff --git a/node_modules/jsonparse/test/offset.js b/node_modules/jsonparse/test/offset.js deleted file mode 100644 index 9a552ab..0000000 --- a/node_modules/jsonparse/test/offset.js +++ /dev/null @@ -1,67 +0,0 @@ -var test = require('tape'); -var Parser = require('../'); - -var input = '{\n "string": "value",\n "number": 3,\n "object"'; -var input2 = ': {\n "key": "vд"\n },\n "array": [\n -1,\n 12\n ]\n '; -var input3 = '"null": null, "true": true, "false": false, "frac": 3.14 }'; - -var offsets = [ - [ 0, Parser.C.LEFT_BRACE ], - [ 4, Parser.C.STRING ], - [ 12, Parser.C.COLON ], - [ 14, Parser.C.STRING ], - [ 21, Parser.C.COMMA ], - [ 25, Parser.C.STRING ], - [ 33, Parser.C.COLON ], - [ 35, Parser.C.NUMBER ], - [ 36, Parser.C.COMMA ], - [ 40, Parser.C.STRING ], - [ 48, Parser.C.COLON ], - [ 50, Parser.C.LEFT_BRACE ], - [ 54, Parser.C.STRING ], - [ 59, Parser.C.COLON ], - [ 61, Parser.C.STRING ], - [ 69, Parser.C.RIGHT_BRACE ], - [ 70, Parser.C.COMMA ], - [ 74, Parser.C.STRING ], - [ 81, Parser.C.COLON ], - [ 83, Parser.C.LEFT_BRACKET ], - [ 87, Parser.C.NUMBER ], - [ 89, Parser.C.COMMA ], - [ 93, Parser.C.NUMBER ], - [ 98, Parser.C.RIGHT_BRACKET ], - [ 102, Parser.C.STRING ], - [ 108, Parser.C.COLON ], - [ 110, Parser.C.NULL ], - [ 114, Parser.C.COMMA ], - [ 116, Parser.C.STRING ], - [ 122, Parser.C.COLON ], - [ 124, Parser.C.TRUE ], - [ 128, Parser.C.COMMA ], - [ 130, Parser.C.STRING ], - [ 137, Parser.C.COLON ], - [ 139, Parser.C.FALSE ], - [ 144, Parser.C.COMMA ], - [ 146, Parser.C.STRING ], - [ 152, Parser.C.COLON ], - [ 154, Parser.C.NUMBER ], - [ 159, Parser.C.RIGHT_BRACE ] -]; - -test('offset', function(t) { - t.plan(offsets.length * 2 + 1); - - var p = new Parser(); - var i = 0; - p.onToken = function (token) { - t.equal(p.offset, offsets[i][0]); - t.equal(token, offsets[i][1]); - i++; - }; - - p.write(input); - p.write(input2); - p.write(input3); - - t.equal(i, offsets.length); -}); diff --git a/node_modules/jsonparse/test/primitives.js b/node_modules/jsonparse/test/primitives.js deleted file mode 100644 index 33cae16..0000000 --- a/node_modules/jsonparse/test/primitives.js +++ /dev/null @@ -1,57 +0,0 @@ -var test = require('tape'); -var Parser = require('../'); - -var expected = [ - [ [], '' ], - [ [], 'Hello' ], - [ [], 'This"is' ], - [ [], '\r\n\f\t\\/"' ], - [ [], 'Λάμβδα' ], - [ [], '\\' ], - [ [], '/' ], - [ [], '"' ], - [ [ 0 ], 0 ], - [ [ 1 ], 1 ], - [ [ 2 ], -1 ], - [ [], [ 0, 1, -1 ] ], - [ [ 0 ], 1 ], - [ [ 1 ], 1.1 ], - [ [ 2 ], -1.1 ], - [ [ 3 ], -1 ], - [ [], [ 1, 1.1, -1.1, -1 ] ], - [ [ 0 ], -1 ], - [ [], [ -1 ] ], - [ [ 0 ], -0.1 ], - [ [], [ -0.1 ] ], - [ [ 0 ], 6.02e+23 ], - [ [], [ 6.02e+23 ] ], - [ [ 0 ], '7161093205057351174' ], - [ [], [ '7161093205057351174'] ] -]; - -test('primitives', function (t) { - t.plan(25); - - var p = new Parser(); - p.onValue = function (value) { - var keys = this.stack - .slice(1) - .map(function (item) { return item.key }) - .concat(this.key !== undefined ? this.key : []) - ; - t.deepEqual( - [ keys, value ], - expected.shift() - ); - }; - - p.write('"""Hello""This\\"is""\\r\\n\\f\\t\\\\\\/\\""'); - p.write('"\\u039b\\u03ac\\u03bc\\u03b2\\u03b4\\u03b1"'); - p.write('"\\\\"'); - p.write('"\\/"'); - p.write('"\\""'); - p.write('[0,1,-1]'); - p.write('[1.0,1.1,-1.1,-1.0][-1][-0.1]'); - p.write('[6.02e23]'); - p.write('[7161093205057351174]'); -}); diff --git a/node_modules/jsonparse/test/surrogate.js b/node_modules/jsonparse/test/surrogate.js deleted file mode 100644 index c048f37..0000000 --- a/node_modules/jsonparse/test/surrogate.js +++ /dev/null @@ -1,26 +0,0 @@ -var test = require('tape'); -var Parser = require('../'); - -test('parse surrogate pair', function (t) { - t.plan(1); - - var p = new Parser(); - p.onValue = function (value) { - t.equal(value, '😋'); - }; - - p.write('"\\uD83D\\uDE0B"'); -}); - -test('parse chunked surrogate pair', function (t) { - t.plan(1); - - var p = new Parser(); - p.onValue = function (value) { - t.equal(value, '😋'); - }; - - p.write('"\\uD83D'); - p.write('\\uDE0B"'); -}); - diff --git a/node_modules/jsonparse/test/unvalid.js b/node_modules/jsonparse/test/unvalid.js deleted file mode 100644 index 7715cc0..0000000 --- a/node_modules/jsonparse/test/unvalid.js +++ /dev/null @@ -1,15 +0,0 @@ -var test = require('tape'); -var Parser = require('../'); - -test('unvalid', function (t) { - var count = 0; - - var p = new Parser(); - p.onError = function (value) { - count++; - t.equal(1, count); - t.end(); - }; - - p.write('{"test": eer['); -}); diff --git a/node_modules/jsonparse/test/utf8.js b/node_modules/jsonparse/test/utf8.js deleted file mode 100644 index 6cb842f..0000000 --- a/node_modules/jsonparse/test/utf8.js +++ /dev/null @@ -1,38 +0,0 @@ -var test = require('tape'); -var Parser = require('../'); - -test('3 bytes of utf8', function (t) { - t.plan(1); - - var p = new Parser(); - p.onValue = function (value) { - t.equal(value, '├──'); - }; - - p.write('"├──"'); -}); - -test('utf8 snowman', function (t) { - t.plan(1); - - var p = new Parser(); - p.onValue = function (value) { - t.equal(value, '☃'); - }; - - p.write('"☃"'); -}); - -test('utf8 with regular ascii', function (t) { - t.plan(4); - - var p = new Parser(); - var expected = [ "snow: ☃!", "xyz", "¡que!" ]; - expected.push(expected.slice()); - - p.onValue = function (value) { - t.deepEqual(value, expected.shift()); - }; - - p.write('["snow: ☃!","xyz","¡que!"]'); -}); diff --git a/node_modules/lodash.get/LICENSE b/node_modules/lodash.get/LICENSE deleted file mode 100644 index e0c69d5..0000000 --- a/node_modules/lodash.get/LICENSE +++ /dev/null @@ -1,47 +0,0 @@ -Copyright jQuery Foundation and other contributors - -Based on Underscore.js, copyright Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/lodash/lodash - -The following license applies to all parts of this software except as -documented below: - -==== - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -==== - -Copyright and related rights for sample code are waived via CC0. Sample -code is defined as all source code displayed within the prose of the -documentation. - -CC0: http://creativecommons.org/publicdomain/zero/1.0/ - -==== - -Files located in the node_modules and vendor directories are externally -maintained libraries used by this software which have their own -licenses; we recommend you read them, as their terms may differ from the -terms above. diff --git a/node_modules/lodash.get/README.md b/node_modules/lodash.get/README.md deleted file mode 100644 index 9079614..0000000 --- a/node_modules/lodash.get/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# lodash.get v4.4.2 - -The [lodash](https://lodash.com/) method `_.get` exported as a [Node.js](https://nodejs.org/) module. - -## Installation - -Using npm: -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash.get -``` - -In Node.js: -```js -var get = require('lodash.get'); -``` - -See the [documentation](https://lodash.com/docs#get) or [package source](https://github.com/lodash/lodash/blob/4.4.2-npm-packages/lodash.get) for more details. diff --git a/node_modules/lodash.get/index.js b/node_modules/lodash.get/index.js deleted file mode 100644 index 0eaadec..0000000 --- a/node_modules/lodash.get/index.js +++ /dev/null @@ -1,931 +0,0 @@ -/** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** `Object#toString` result references. */ -var funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - symbolTag = '[object Symbol]'; - -/** Used to match property names within property paths. */ -var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/, - reLeadingDot = /^\./, - rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; - -/** Used to match backslashes in property paths. */ -var reEscapeChar = /\\(\\)?/g; - -/** Used to detect host constructors (Safari). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; - -/** Detect free variable `global` from Node.js. */ -var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; - -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - -/** Used as a reference to the global object. */ -var root = freeGlobal || freeSelf || Function('return this')(); - -/** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function getValue(object, key) { - return object == null ? undefined : object[key]; -} - -/** - * Checks if `value` is a host object in IE < 9. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a host object, else `false`. - */ -function isHostObject(value) { - // Many host objects are `Object` objects that can coerce to strings - // despite having improperly defined `toString` methods. - var result = false; - if (value != null && typeof value.toString != 'function') { - try { - result = !!(value + ''); - } catch (e) {} - } - return result; -} - -/** Used for built-in method references. */ -var arrayProto = Array.prototype, - funcProto = Function.prototype, - objectProto = Object.prototype; - -/** Used to detect overreaching core-js shims. */ -var coreJsData = root['__core-js_shared__']; - -/** Used to detect methods masquerading as native. */ -var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; -}()); - -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); - -/** Built-in value references. */ -var Symbol = root.Symbol, - splice = arrayProto.splice; - -/* Built-in method references that are verified to be native. */ -var Map = getNative(root, 'Map'), - nativeCreate = getNative(Object, 'create'); - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - -/** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Hash(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -/** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ -function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; -} - -/** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function hashDelete(key) { - return this.has(key) && delete this.__data__[key]; -} - -/** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; -} - -/** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function hashHas(key) { - var data = this.__data__; - return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); -} - -/** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ -function hashSet(key, value) { - var data = this.__data__; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; -} - -// Add methods to `Hash`. -Hash.prototype.clear = hashClear; -Hash.prototype['delete'] = hashDelete; -Hash.prototype.get = hashGet; -Hash.prototype.has = hashHas; -Hash.prototype.set = hashSet; - -/** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function ListCache(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -/** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ -function listCacheClear() { - this.__data__ = []; -} - -/** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - return true; -} - -/** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; -} - -/** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; -} - -/** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ -function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; -} - -// Add methods to `ListCache`. -ListCache.prototype.clear = listCacheClear; -ListCache.prototype['delete'] = listCacheDelete; -ListCache.prototype.get = listCacheGet; -ListCache.prototype.has = listCacheHas; -ListCache.prototype.set = listCacheSet; - -/** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function MapCache(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -/** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ -function mapCacheClear() { - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; -} - -/** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function mapCacheDelete(key) { - return getMapData(this, key)['delete'](key); -} - -/** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function mapCacheGet(key) { - return getMapData(this, key).get(key); -} - -/** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function mapCacheHas(key) { - return getMapData(this, key).has(key); -} - -/** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ -function mapCacheSet(key, value) { - getMapData(this, key).set(key, value); - return this; -} - -// Add methods to `MapCache`. -MapCache.prototype.clear = mapCacheClear; -MapCache.prototype['delete'] = mapCacheDelete; -MapCache.prototype.get = mapCacheGet; -MapCache.prototype.has = mapCacheHas; -MapCache.prototype.set = mapCacheSet; - -/** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; -} - -/** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ -function baseGet(object, path) { - path = isKey(path, object) ? [path] : castPath(path); - - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[toKey(path[index++])]; - } - return (index && index == length) ? object : undefined; -} - -/** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ -function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); -} - -/** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -/** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @returns {Array} Returns the cast property path array. - */ -function castPath(value) { - return isArray(value) ? value : stringToPath(value); -} - -/** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ -function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; -} - -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; -} - -/** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ -function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); -} - -/** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ -function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); -} - -/** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ -function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); -} - -/** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ -var stringToPath = memoize(function(string) { - string = toString(string); - - var result = []; - if (reLeadingDot.test(string)) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, string) { - result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; -}); - -/** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ -function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -/** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to process. - * @returns {string} Returns the source code. - */ -function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; -} - -/** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ -function memoize(func, resolver) { - if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result); - return result; - }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; -} - -// Assign cache to `_.memoize`. -memoize.Cache = MapCache; - -/** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ -function eq(value, other) { - return value === other || (value !== value && other !== other); -} - -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ -var isArray = Array.isArray; - -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. - var tag = isObject(value) ? objectToString.call(value) : ''; - return tag == funcTag || tag == genTag; -} - -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && objectToString.call(value) == symbolTag); -} - -/** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {string} Returns the string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ -function toString(value) { - return value == null ? '' : baseToString(value); -} - -/** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ -function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; -} - -module.exports = get; diff --git a/node_modules/lodash.get/package.json b/node_modules/lodash.get/package.json deleted file mode 100644 index 3dd8e77..0000000 --- a/node_modules/lodash.get/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "lodash.get", - "version": "4.4.2", - "description": "The lodash method `_.get` exported as a module.", - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "license": "MIT", - "keywords": "lodash-modularized, get", - "author": "John-David Dalton (http://allyoucanleet.com/)", - "contributors": [ - "John-David Dalton (http://allyoucanleet.com/)", - "Blaine Bublitz (https://github.com/phated)", - "Mathias Bynens (https://mathiasbynens.be/)" - ], - "repository": "lodash/lodash", - "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } -} diff --git a/node_modules/lodash/LICENSE b/node_modules/lodash/LICENSE deleted file mode 100644 index 77c42f1..0000000 --- a/node_modules/lodash/LICENSE +++ /dev/null @@ -1,47 +0,0 @@ -Copyright OpenJS Foundation and other contributors - -Based on Underscore.js, copyright Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/lodash/lodash - -The following license applies to all parts of this software except as -documented below: - -==== - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -==== - -Copyright and related rights for sample code are waived via CC0. Sample -code is defined as all source code displayed within the prose of the -documentation. - -CC0: http://creativecommons.org/publicdomain/zero/1.0/ - -==== - -Files located in the node_modules and vendor directories are externally -maintained libraries used by this software which have their own -licenses; we recommend you read them, as their terms may differ from the -terms above. diff --git a/node_modules/lodash/README.md b/node_modules/lodash/README.md deleted file mode 100644 index 3ab1a05..0000000 --- a/node_modules/lodash/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# lodash v4.17.21 - -The [Lodash](https://lodash.com/) library exported as [Node.js](https://nodejs.org/) modules. - -## Installation - -Using npm: -```shell -$ npm i -g npm -$ npm i --save lodash -``` - -In Node.js: -```js -// Load the full build. -var _ = require('lodash'); -// Load the core build. -var _ = require('lodash/core'); -// Load the FP build for immutable auto-curried iteratee-first data-last methods. -var fp = require('lodash/fp'); - -// Load method categories. -var array = require('lodash/array'); -var object = require('lodash/fp/object'); - -// Cherry-pick methods for smaller browserify/rollup/webpack bundles. -var at = require('lodash/at'); -var curryN = require('lodash/fp/curryN'); -``` - -See the [package source](https://github.com/lodash/lodash/tree/4.17.21-npm) for more details. - -**Note:**
-Install [n_](https://www.npmjs.com/package/n_) for Lodash use in the Node.js < 6 REPL. - -## Support - -Tested in Chrome 74-75, Firefox 66-67, IE 11, Edge 18, Safari 11-12, & Node.js 8-12.
-Automated [browser](https://saucelabs.com/u/lodash) & [CI](https://travis-ci.org/lodash/lodash/) test runs are available. diff --git a/node_modules/lodash/_DataView.js b/node_modules/lodash/_DataView.js deleted file mode 100644 index ac2d57c..0000000 --- a/node_modules/lodash/_DataView.js +++ /dev/null @@ -1,7 +0,0 @@ -var getNative = require('./_getNative'), - root = require('./_root'); - -/* Built-in method references that are verified to be native. */ -var DataView = getNative(root, 'DataView'); - -module.exports = DataView; diff --git a/node_modules/lodash/_Hash.js b/node_modules/lodash/_Hash.js deleted file mode 100644 index b504fe3..0000000 --- a/node_modules/lodash/_Hash.js +++ /dev/null @@ -1,32 +0,0 @@ -var hashClear = require('./_hashClear'), - hashDelete = require('./_hashDelete'), - hashGet = require('./_hashGet'), - hashHas = require('./_hashHas'), - hashSet = require('./_hashSet'); - -/** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Hash(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -// Add methods to `Hash`. -Hash.prototype.clear = hashClear; -Hash.prototype['delete'] = hashDelete; -Hash.prototype.get = hashGet; -Hash.prototype.has = hashHas; -Hash.prototype.set = hashSet; - -module.exports = Hash; diff --git a/node_modules/lodash/_LazyWrapper.js b/node_modules/lodash/_LazyWrapper.js deleted file mode 100644 index 81786c7..0000000 --- a/node_modules/lodash/_LazyWrapper.js +++ /dev/null @@ -1,28 +0,0 @@ -var baseCreate = require('./_baseCreate'), - baseLodash = require('./_baseLodash'); - -/** Used as references for the maximum length and index of an array. */ -var MAX_ARRAY_LENGTH = 4294967295; - -/** - * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. - * - * @private - * @constructor - * @param {*} value The value to wrap. - */ -function LazyWrapper(value) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__dir__ = 1; - this.__filtered__ = false; - this.__iteratees__ = []; - this.__takeCount__ = MAX_ARRAY_LENGTH; - this.__views__ = []; -} - -// Ensure `LazyWrapper` is an instance of `baseLodash`. -LazyWrapper.prototype = baseCreate(baseLodash.prototype); -LazyWrapper.prototype.constructor = LazyWrapper; - -module.exports = LazyWrapper; diff --git a/node_modules/lodash/_ListCache.js b/node_modules/lodash/_ListCache.js deleted file mode 100644 index 26895c3..0000000 --- a/node_modules/lodash/_ListCache.js +++ /dev/null @@ -1,32 +0,0 @@ -var listCacheClear = require('./_listCacheClear'), - listCacheDelete = require('./_listCacheDelete'), - listCacheGet = require('./_listCacheGet'), - listCacheHas = require('./_listCacheHas'), - listCacheSet = require('./_listCacheSet'); - -/** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function ListCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -// Add methods to `ListCache`. -ListCache.prototype.clear = listCacheClear; -ListCache.prototype['delete'] = listCacheDelete; -ListCache.prototype.get = listCacheGet; -ListCache.prototype.has = listCacheHas; -ListCache.prototype.set = listCacheSet; - -module.exports = ListCache; diff --git a/node_modules/lodash/_LodashWrapper.js b/node_modules/lodash/_LodashWrapper.js deleted file mode 100644 index c1e4d9d..0000000 --- a/node_modules/lodash/_LodashWrapper.js +++ /dev/null @@ -1,22 +0,0 @@ -var baseCreate = require('./_baseCreate'), - baseLodash = require('./_baseLodash'); - -/** - * The base constructor for creating `lodash` wrapper objects. - * - * @private - * @param {*} value The value to wrap. - * @param {boolean} [chainAll] Enable explicit method chain sequences. - */ -function LodashWrapper(value, chainAll) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__chain__ = !!chainAll; - this.__index__ = 0; - this.__values__ = undefined; -} - -LodashWrapper.prototype = baseCreate(baseLodash.prototype); -LodashWrapper.prototype.constructor = LodashWrapper; - -module.exports = LodashWrapper; diff --git a/node_modules/lodash/_Map.js b/node_modules/lodash/_Map.js deleted file mode 100644 index b73f29a..0000000 --- a/node_modules/lodash/_Map.js +++ /dev/null @@ -1,7 +0,0 @@ -var getNative = require('./_getNative'), - root = require('./_root'); - -/* Built-in method references that are verified to be native. */ -var Map = getNative(root, 'Map'); - -module.exports = Map; diff --git a/node_modules/lodash/_MapCache.js b/node_modules/lodash/_MapCache.js deleted file mode 100644 index 4a4eea7..0000000 --- a/node_modules/lodash/_MapCache.js +++ /dev/null @@ -1,32 +0,0 @@ -var mapCacheClear = require('./_mapCacheClear'), - mapCacheDelete = require('./_mapCacheDelete'), - mapCacheGet = require('./_mapCacheGet'), - mapCacheHas = require('./_mapCacheHas'), - mapCacheSet = require('./_mapCacheSet'); - -/** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function MapCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -// Add methods to `MapCache`. -MapCache.prototype.clear = mapCacheClear; -MapCache.prototype['delete'] = mapCacheDelete; -MapCache.prototype.get = mapCacheGet; -MapCache.prototype.has = mapCacheHas; -MapCache.prototype.set = mapCacheSet; - -module.exports = MapCache; diff --git a/node_modules/lodash/_Promise.js b/node_modules/lodash/_Promise.js deleted file mode 100644 index 247b9e1..0000000 --- a/node_modules/lodash/_Promise.js +++ /dev/null @@ -1,7 +0,0 @@ -var getNative = require('./_getNative'), - root = require('./_root'); - -/* Built-in method references that are verified to be native. */ -var Promise = getNative(root, 'Promise'); - -module.exports = Promise; diff --git a/node_modules/lodash/_Set.js b/node_modules/lodash/_Set.js deleted file mode 100644 index b3c8dcb..0000000 --- a/node_modules/lodash/_Set.js +++ /dev/null @@ -1,7 +0,0 @@ -var getNative = require('./_getNative'), - root = require('./_root'); - -/* Built-in method references that are verified to be native. */ -var Set = getNative(root, 'Set'); - -module.exports = Set; diff --git a/node_modules/lodash/_SetCache.js b/node_modules/lodash/_SetCache.js deleted file mode 100644 index 6468b06..0000000 --- a/node_modules/lodash/_SetCache.js +++ /dev/null @@ -1,27 +0,0 @@ -var MapCache = require('./_MapCache'), - setCacheAdd = require('./_setCacheAdd'), - setCacheHas = require('./_setCacheHas'); - -/** - * - * Creates an array cache object to store unique values. - * - * @private - * @constructor - * @param {Array} [values] The values to cache. - */ -function SetCache(values) { - var index = -1, - length = values == null ? 0 : values.length; - - this.__data__ = new MapCache; - while (++index < length) { - this.add(values[index]); - } -} - -// Add methods to `SetCache`. -SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; -SetCache.prototype.has = setCacheHas; - -module.exports = SetCache; diff --git a/node_modules/lodash/_Stack.js b/node_modules/lodash/_Stack.js deleted file mode 100644 index 80b2cf1..0000000 --- a/node_modules/lodash/_Stack.js +++ /dev/null @@ -1,27 +0,0 @@ -var ListCache = require('./_ListCache'), - stackClear = require('./_stackClear'), - stackDelete = require('./_stackDelete'), - stackGet = require('./_stackGet'), - stackHas = require('./_stackHas'), - stackSet = require('./_stackSet'); - -/** - * Creates a stack cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Stack(entries) { - var data = this.__data__ = new ListCache(entries); - this.size = data.size; -} - -// Add methods to `Stack`. -Stack.prototype.clear = stackClear; -Stack.prototype['delete'] = stackDelete; -Stack.prototype.get = stackGet; -Stack.prototype.has = stackHas; -Stack.prototype.set = stackSet; - -module.exports = Stack; diff --git a/node_modules/lodash/_Symbol.js b/node_modules/lodash/_Symbol.js deleted file mode 100644 index a013f7c..0000000 --- a/node_modules/lodash/_Symbol.js +++ /dev/null @@ -1,6 +0,0 @@ -var root = require('./_root'); - -/** Built-in value references. */ -var Symbol = root.Symbol; - -module.exports = Symbol; diff --git a/node_modules/lodash/_Uint8Array.js b/node_modules/lodash/_Uint8Array.js deleted file mode 100644 index 2fb30e1..0000000 --- a/node_modules/lodash/_Uint8Array.js +++ /dev/null @@ -1,6 +0,0 @@ -var root = require('./_root'); - -/** Built-in value references. */ -var Uint8Array = root.Uint8Array; - -module.exports = Uint8Array; diff --git a/node_modules/lodash/_WeakMap.js b/node_modules/lodash/_WeakMap.js deleted file mode 100644 index 567f86c..0000000 --- a/node_modules/lodash/_WeakMap.js +++ /dev/null @@ -1,7 +0,0 @@ -var getNative = require('./_getNative'), - root = require('./_root'); - -/* Built-in method references that are verified to be native. */ -var WeakMap = getNative(root, 'WeakMap'); - -module.exports = WeakMap; diff --git a/node_modules/lodash/_apply.js b/node_modules/lodash/_apply.js deleted file mode 100644 index 36436dd..0000000 --- a/node_modules/lodash/_apply.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * A faster alternative to `Function#apply`, this function invokes `func` - * with the `this` binding of `thisArg` and the arguments of `args`. - * - * @private - * @param {Function} func The function to invoke. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} args The arguments to invoke `func` with. - * @returns {*} Returns the result of `func`. - */ -function apply(func, thisArg, args) { - switch (args.length) { - case 0: return func.call(thisArg); - case 1: return func.call(thisArg, args[0]); - case 2: return func.call(thisArg, args[0], args[1]); - case 3: return func.call(thisArg, args[0], args[1], args[2]); - } - return func.apply(thisArg, args); -} - -module.exports = apply; diff --git a/node_modules/lodash/_arrayAggregator.js b/node_modules/lodash/_arrayAggregator.js deleted file mode 100644 index d96c3ca..0000000 --- a/node_modules/lodash/_arrayAggregator.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * A specialized version of `baseAggregator` for arrays. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ -function arrayAggregator(array, setter, iteratee, accumulator) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - var value = array[index]; - setter(accumulator, value, iteratee(value), array); - } - return accumulator; -} - -module.exports = arrayAggregator; diff --git a/node_modules/lodash/_arrayEach.js b/node_modules/lodash/_arrayEach.js deleted file mode 100644 index 2c5f579..0000000 --- a/node_modules/lodash/_arrayEach.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * A specialized version of `_.forEach` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ -function arrayEach(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; - } - } - return array; -} - -module.exports = arrayEach; diff --git a/node_modules/lodash/_arrayEachRight.js b/node_modules/lodash/_arrayEachRight.js deleted file mode 100644 index 976ca5c..0000000 --- a/node_modules/lodash/_arrayEachRight.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * A specialized version of `_.forEachRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ -function arrayEachRight(array, iteratee) { - var length = array == null ? 0 : array.length; - - while (length--) { - if (iteratee(array[length], length, array) === false) { - break; - } - } - return array; -} - -module.exports = arrayEachRight; diff --git a/node_modules/lodash/_arrayEvery.js b/node_modules/lodash/_arrayEvery.js deleted file mode 100644 index e26a918..0000000 --- a/node_modules/lodash/_arrayEvery.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * A specialized version of `_.every` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - */ -function arrayEvery(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (!predicate(array[index], index, array)) { - return false; - } - } - return true; -} - -module.exports = arrayEvery; diff --git a/node_modules/lodash/_arrayFilter.js b/node_modules/lodash/_arrayFilter.js deleted file mode 100644 index 75ea254..0000000 --- a/node_modules/lodash/_arrayFilter.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * A specialized version of `_.filter` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ -function arrayFilter(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[resIndex++] = value; - } - } - return result; -} - -module.exports = arrayFilter; diff --git a/node_modules/lodash/_arrayIncludes.js b/node_modules/lodash/_arrayIncludes.js deleted file mode 100644 index 3737a6d..0000000 --- a/node_modules/lodash/_arrayIncludes.js +++ /dev/null @@ -1,17 +0,0 @@ -var baseIndexOf = require('./_baseIndexOf'); - -/** - * A specialized version of `_.includes` for arrays without support for - * specifying an index to search from. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ -function arrayIncludes(array, value) { - var length = array == null ? 0 : array.length; - return !!length && baseIndexOf(array, value, 0) > -1; -} - -module.exports = arrayIncludes; diff --git a/node_modules/lodash/_arrayIncludesWith.js b/node_modules/lodash/_arrayIncludesWith.js deleted file mode 100644 index 235fd97..0000000 --- a/node_modules/lodash/_arrayIncludesWith.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * This function is like `arrayIncludes` except that it accepts a comparator. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @param {Function} comparator The comparator invoked per element. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ -function arrayIncludesWith(array, value, comparator) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (comparator(value, array[index])) { - return true; - } - } - return false; -} - -module.exports = arrayIncludesWith; diff --git a/node_modules/lodash/_arrayLikeKeys.js b/node_modules/lodash/_arrayLikeKeys.js deleted file mode 100644 index b2ec9ce..0000000 --- a/node_modules/lodash/_arrayLikeKeys.js +++ /dev/null @@ -1,49 +0,0 @@ -var baseTimes = require('./_baseTimes'), - isArguments = require('./isArguments'), - isArray = require('./isArray'), - isBuffer = require('./isBuffer'), - isIndex = require('./_isIndex'), - isTypedArray = require('./isTypedArray'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ -function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), - isArg = !isArr && isArguments(value), - isBuff = !isArr && !isArg && isBuffer(value), - isType = !isArr && !isArg && !isBuff && isTypedArray(value), - skipIndexes = isArr || isArg || isBuff || isType, - result = skipIndexes ? baseTimes(value.length, String) : [], - length = result.length; - - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && ( - // Safari 9 has enumerable `arguments.length` in strict mode. - key == 'length' || - // Node.js 0.10 has enumerable non-index properties on buffers. - (isBuff && (key == 'offset' || key == 'parent')) || - // PhantomJS 2 has enumerable non-index properties on typed arrays. - (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || - // Skip index properties. - isIndex(key, length) - ))) { - result.push(key); - } - } - return result; -} - -module.exports = arrayLikeKeys; diff --git a/node_modules/lodash/_arrayMap.js b/node_modules/lodash/_arrayMap.js deleted file mode 100644 index 22b2246..0000000 --- a/node_modules/lodash/_arrayMap.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ -function arrayMap(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; -} - -module.exports = arrayMap; diff --git a/node_modules/lodash/_arrayPush.js b/node_modules/lodash/_arrayPush.js deleted file mode 100644 index 7d742b3..0000000 --- a/node_modules/lodash/_arrayPush.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ -function arrayPush(array, values) { - var index = -1, - length = values.length, - offset = array.length; - - while (++index < length) { - array[offset + index] = values[index]; - } - return array; -} - -module.exports = arrayPush; diff --git a/node_modules/lodash/_arrayReduce.js b/node_modules/lodash/_arrayReduce.js deleted file mode 100644 index de8b79b..0000000 --- a/node_modules/lodash/_arrayReduce.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * A specialized version of `_.reduce` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the first element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ -function arrayReduce(array, iteratee, accumulator, initAccum) { - var index = -1, - length = array == null ? 0 : array.length; - - if (initAccum && length) { - accumulator = array[++index]; - } - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - return accumulator; -} - -module.exports = arrayReduce; diff --git a/node_modules/lodash/_arrayReduceRight.js b/node_modules/lodash/_arrayReduceRight.js deleted file mode 100644 index 22d8976..0000000 --- a/node_modules/lodash/_arrayReduceRight.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * A specialized version of `_.reduceRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the last element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ -function arrayReduceRight(array, iteratee, accumulator, initAccum) { - var length = array == null ? 0 : array.length; - if (initAccum && length) { - accumulator = array[--length]; - } - while (length--) { - accumulator = iteratee(accumulator, array[length], length, array); - } - return accumulator; -} - -module.exports = arrayReduceRight; diff --git a/node_modules/lodash/_arraySample.js b/node_modules/lodash/_arraySample.js deleted file mode 100644 index fcab010..0000000 --- a/node_modules/lodash/_arraySample.js +++ /dev/null @@ -1,15 +0,0 @@ -var baseRandom = require('./_baseRandom'); - -/** - * A specialized version of `_.sample` for arrays. - * - * @private - * @param {Array} array The array to sample. - * @returns {*} Returns the random element. - */ -function arraySample(array) { - var length = array.length; - return length ? array[baseRandom(0, length - 1)] : undefined; -} - -module.exports = arraySample; diff --git a/node_modules/lodash/_arraySampleSize.js b/node_modules/lodash/_arraySampleSize.js deleted file mode 100644 index 8c7e364..0000000 --- a/node_modules/lodash/_arraySampleSize.js +++ /dev/null @@ -1,17 +0,0 @@ -var baseClamp = require('./_baseClamp'), - copyArray = require('./_copyArray'), - shuffleSelf = require('./_shuffleSelf'); - -/** - * A specialized version of `_.sampleSize` for arrays. - * - * @private - * @param {Array} array The array to sample. - * @param {number} n The number of elements to sample. - * @returns {Array} Returns the random elements. - */ -function arraySampleSize(array, n) { - return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); -} - -module.exports = arraySampleSize; diff --git a/node_modules/lodash/_arrayShuffle.js b/node_modules/lodash/_arrayShuffle.js deleted file mode 100644 index 46313a3..0000000 --- a/node_modules/lodash/_arrayShuffle.js +++ /dev/null @@ -1,15 +0,0 @@ -var copyArray = require('./_copyArray'), - shuffleSelf = require('./_shuffleSelf'); - -/** - * A specialized version of `_.shuffle` for arrays. - * - * @private - * @param {Array} array The array to shuffle. - * @returns {Array} Returns the new shuffled array. - */ -function arrayShuffle(array) { - return shuffleSelf(copyArray(array)); -} - -module.exports = arrayShuffle; diff --git a/node_modules/lodash/_arraySome.js b/node_modules/lodash/_arraySome.js deleted file mode 100644 index 6fd02fd..0000000 --- a/node_modules/lodash/_arraySome.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * A specialized version of `_.some` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ -function arraySome(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; - } - } - return false; -} - -module.exports = arraySome; diff --git a/node_modules/lodash/_asciiSize.js b/node_modules/lodash/_asciiSize.js deleted file mode 100644 index 11d29c3..0000000 --- a/node_modules/lodash/_asciiSize.js +++ /dev/null @@ -1,12 +0,0 @@ -var baseProperty = require('./_baseProperty'); - -/** - * Gets the size of an ASCII `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ -var asciiSize = baseProperty('length'); - -module.exports = asciiSize; diff --git a/node_modules/lodash/_asciiToArray.js b/node_modules/lodash/_asciiToArray.js deleted file mode 100644 index 8e3dd5b..0000000 --- a/node_modules/lodash/_asciiToArray.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Converts an ASCII `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ -function asciiToArray(string) { - return string.split(''); -} - -module.exports = asciiToArray; diff --git a/node_modules/lodash/_asciiWords.js b/node_modules/lodash/_asciiWords.js deleted file mode 100644 index d765f0f..0000000 --- a/node_modules/lodash/_asciiWords.js +++ /dev/null @@ -1,15 +0,0 @@ -/** Used to match words composed of alphanumeric characters. */ -var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; - -/** - * Splits an ASCII `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ -function asciiWords(string) { - return string.match(reAsciiWord) || []; -} - -module.exports = asciiWords; diff --git a/node_modules/lodash/_assignMergeValue.js b/node_modules/lodash/_assignMergeValue.js deleted file mode 100644 index cb1185e..0000000 --- a/node_modules/lodash/_assignMergeValue.js +++ /dev/null @@ -1,20 +0,0 @@ -var baseAssignValue = require('./_baseAssignValue'), - eq = require('./eq'); - -/** - * This function is like `assignValue` except that it doesn't assign - * `undefined` values. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function assignMergeValue(object, key, value) { - if ((value !== undefined && !eq(object[key], value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } -} - -module.exports = assignMergeValue; diff --git a/node_modules/lodash/_assignValue.js b/node_modules/lodash/_assignValue.js deleted file mode 100644 index 4083957..0000000 --- a/node_modules/lodash/_assignValue.js +++ /dev/null @@ -1,28 +0,0 @@ -var baseAssignValue = require('./_baseAssignValue'), - eq = require('./eq'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } -} - -module.exports = assignValue; diff --git a/node_modules/lodash/_assocIndexOf.js b/node_modules/lodash/_assocIndexOf.js deleted file mode 100644 index 5b77a2b..0000000 --- a/node_modules/lodash/_assocIndexOf.js +++ /dev/null @@ -1,21 +0,0 @@ -var eq = require('./eq'); - -/** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; -} - -module.exports = assocIndexOf; diff --git a/node_modules/lodash/_baseAggregator.js b/node_modules/lodash/_baseAggregator.js deleted file mode 100644 index 4bc9e91..0000000 --- a/node_modules/lodash/_baseAggregator.js +++ /dev/null @@ -1,21 +0,0 @@ -var baseEach = require('./_baseEach'); - -/** - * Aggregates elements of `collection` on `accumulator` with keys transformed - * by `iteratee` and values set by `setter`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ -function baseAggregator(collection, setter, iteratee, accumulator) { - baseEach(collection, function(value, key, collection) { - setter(accumulator, value, iteratee(value), collection); - }); - return accumulator; -} - -module.exports = baseAggregator; diff --git a/node_modules/lodash/_baseAssign.js b/node_modules/lodash/_baseAssign.js deleted file mode 100644 index e5c4a1a..0000000 --- a/node_modules/lodash/_baseAssign.js +++ /dev/null @@ -1,17 +0,0 @@ -var copyObject = require('./_copyObject'), - keys = require('./keys'); - -/** - * The base implementation of `_.assign` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ -function baseAssign(object, source) { - return object && copyObject(source, keys(source), object); -} - -module.exports = baseAssign; diff --git a/node_modules/lodash/_baseAssignIn.js b/node_modules/lodash/_baseAssignIn.js deleted file mode 100644 index 6624f90..0000000 --- a/node_modules/lodash/_baseAssignIn.js +++ /dev/null @@ -1,17 +0,0 @@ -var copyObject = require('./_copyObject'), - keysIn = require('./keysIn'); - -/** - * The base implementation of `_.assignIn` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ -function baseAssignIn(object, source) { - return object && copyObject(source, keysIn(source), object); -} - -module.exports = baseAssignIn; diff --git a/node_modules/lodash/_baseAssignValue.js b/node_modules/lodash/_baseAssignValue.js deleted file mode 100644 index d6f66ef..0000000 --- a/node_modules/lodash/_baseAssignValue.js +++ /dev/null @@ -1,25 +0,0 @@ -var defineProperty = require('./_defineProperty'); - -/** - * The base implementation of `assignValue` and `assignMergeValue` without - * value checks. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function baseAssignValue(object, key, value) { - if (key == '__proto__' && defineProperty) { - defineProperty(object, key, { - 'configurable': true, - 'enumerable': true, - 'value': value, - 'writable': true - }); - } else { - object[key] = value; - } -} - -module.exports = baseAssignValue; diff --git a/node_modules/lodash/_baseAt.js b/node_modules/lodash/_baseAt.js deleted file mode 100644 index 90e4237..0000000 --- a/node_modules/lodash/_baseAt.js +++ /dev/null @@ -1,23 +0,0 @@ -var get = require('./get'); - -/** - * The base implementation of `_.at` without support for individual paths. - * - * @private - * @param {Object} object The object to iterate over. - * @param {string[]} paths The property paths to pick. - * @returns {Array} Returns the picked elements. - */ -function baseAt(object, paths) { - var index = -1, - length = paths.length, - result = Array(length), - skip = object == null; - - while (++index < length) { - result[index] = skip ? undefined : get(object, paths[index]); - } - return result; -} - -module.exports = baseAt; diff --git a/node_modules/lodash/_baseClamp.js b/node_modules/lodash/_baseClamp.js deleted file mode 100644 index a1c5692..0000000 --- a/node_modules/lodash/_baseClamp.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * The base implementation of `_.clamp` which doesn't coerce arguments. - * - * @private - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. - */ -function baseClamp(number, lower, upper) { - if (number === number) { - if (upper !== undefined) { - number = number <= upper ? number : upper; - } - if (lower !== undefined) { - number = number >= lower ? number : lower; - } - } - return number; -} - -module.exports = baseClamp; diff --git a/node_modules/lodash/_baseClone.js b/node_modules/lodash/_baseClone.js deleted file mode 100644 index 69f8705..0000000 --- a/node_modules/lodash/_baseClone.js +++ /dev/null @@ -1,166 +0,0 @@ -var Stack = require('./_Stack'), - arrayEach = require('./_arrayEach'), - assignValue = require('./_assignValue'), - baseAssign = require('./_baseAssign'), - baseAssignIn = require('./_baseAssignIn'), - cloneBuffer = require('./_cloneBuffer'), - copyArray = require('./_copyArray'), - copySymbols = require('./_copySymbols'), - copySymbolsIn = require('./_copySymbolsIn'), - getAllKeys = require('./_getAllKeys'), - getAllKeysIn = require('./_getAllKeysIn'), - getTag = require('./_getTag'), - initCloneArray = require('./_initCloneArray'), - initCloneByTag = require('./_initCloneByTag'), - initCloneObject = require('./_initCloneObject'), - isArray = require('./isArray'), - isBuffer = require('./isBuffer'), - isMap = require('./isMap'), - isObject = require('./isObject'), - isSet = require('./isSet'), - keys = require('./keys'), - keysIn = require('./keysIn'); - -/** Used to compose bitmasks for cloning. */ -var CLONE_DEEP_FLAG = 1, - CLONE_FLAT_FLAG = 2, - CLONE_SYMBOLS_FLAG = 4; - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - mapTag = '[object Map]', - numberTag = '[object Number]', - objectTag = '[object Object]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]', - weakMapTag = '[object WeakMap]'; - -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - -/** Used to identify `toStringTag` values supported by `_.clone`. */ -var cloneableTags = {}; -cloneableTags[argsTag] = cloneableTags[arrayTag] = -cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = -cloneableTags[boolTag] = cloneableTags[dateTag] = -cloneableTags[float32Tag] = cloneableTags[float64Tag] = -cloneableTags[int8Tag] = cloneableTags[int16Tag] = -cloneableTags[int32Tag] = cloneableTags[mapTag] = -cloneableTags[numberTag] = cloneableTags[objectTag] = -cloneableTags[regexpTag] = cloneableTags[setTag] = -cloneableTags[stringTag] = cloneableTags[symbolTag] = -cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = -cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; -cloneableTags[errorTag] = cloneableTags[funcTag] = -cloneableTags[weakMapTag] = false; - -/** - * The base implementation of `_.clone` and `_.cloneDeep` which tracks - * traversed objects. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} bitmask The bitmask flags. - * 1 - Deep clone - * 2 - Flatten inherited properties - * 4 - Clone symbols - * @param {Function} [customizer] The function to customize cloning. - * @param {string} [key] The key of `value`. - * @param {Object} [object] The parent object of `value`. - * @param {Object} [stack] Tracks traversed objects and their clone counterparts. - * @returns {*} Returns the cloned value. - */ -function baseClone(value, bitmask, customizer, key, object, stack) { - var result, - isDeep = bitmask & CLONE_DEEP_FLAG, - isFlat = bitmask & CLONE_FLAT_FLAG, - isFull = bitmask & CLONE_SYMBOLS_FLAG; - - if (customizer) { - result = object ? customizer(value, key, object, stack) : customizer(value); - } - if (result !== undefined) { - return result; - } - if (!isObject(value)) { - return value; - } - var isArr = isArray(value); - if (isArr) { - result = initCloneArray(value); - if (!isDeep) { - return copyArray(value, result); - } - } else { - var tag = getTag(value), - isFunc = tag == funcTag || tag == genTag; - - if (isBuffer(value)) { - return cloneBuffer(value, isDeep); - } - if (tag == objectTag || tag == argsTag || (isFunc && !object)) { - result = (isFlat || isFunc) ? {} : initCloneObject(value); - if (!isDeep) { - return isFlat - ? copySymbolsIn(value, baseAssignIn(result, value)) - : copySymbols(value, baseAssign(result, value)); - } - } else { - if (!cloneableTags[tag]) { - return object ? value : {}; - } - result = initCloneByTag(value, tag, isDeep); - } - } - // Check for circular references and return its corresponding clone. - stack || (stack = new Stack); - var stacked = stack.get(value); - if (stacked) { - return stacked; - } - stack.set(value, result); - - if (isSet(value)) { - value.forEach(function(subValue) { - result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); - }); - } else if (isMap(value)) { - value.forEach(function(subValue, key) { - result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - } - - var keysFunc = isFull - ? (isFlat ? getAllKeysIn : getAllKeys) - : (isFlat ? keysIn : keys); - - var props = isArr ? undefined : keysFunc(value); - arrayEach(props || value, function(subValue, key) { - if (props) { - key = subValue; - subValue = value[key]; - } - // Recursively populate clone (susceptible to call stack limits). - assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - return result; -} - -module.exports = baseClone; diff --git a/node_modules/lodash/_baseConforms.js b/node_modules/lodash/_baseConforms.js deleted file mode 100644 index 947e20d..0000000 --- a/node_modules/lodash/_baseConforms.js +++ /dev/null @@ -1,18 +0,0 @@ -var baseConformsTo = require('./_baseConformsTo'), - keys = require('./keys'); - -/** - * The base implementation of `_.conforms` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property predicates to conform to. - * @returns {Function} Returns the new spec function. - */ -function baseConforms(source) { - var props = keys(source); - return function(object) { - return baseConformsTo(object, source, props); - }; -} - -module.exports = baseConforms; diff --git a/node_modules/lodash/_baseConformsTo.js b/node_modules/lodash/_baseConformsTo.js deleted file mode 100644 index e449cb8..0000000 --- a/node_modules/lodash/_baseConformsTo.js +++ /dev/null @@ -1,27 +0,0 @@ -/** - * The base implementation of `_.conformsTo` which accepts `props` to check. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - */ -function baseConformsTo(object, source, props) { - var length = props.length; - if (object == null) { - return !length; - } - object = Object(object); - while (length--) { - var key = props[length], - predicate = source[key], - value = object[key]; - - if ((value === undefined && !(key in object)) || !predicate(value)) { - return false; - } - } - return true; -} - -module.exports = baseConformsTo; diff --git a/node_modules/lodash/_baseCreate.js b/node_modules/lodash/_baseCreate.js deleted file mode 100644 index ffa6a52..0000000 --- a/node_modules/lodash/_baseCreate.js +++ /dev/null @@ -1,30 +0,0 @@ -var isObject = require('./isObject'); - -/** Built-in value references. */ -var objectCreate = Object.create; - -/** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} proto The object to inherit from. - * @returns {Object} Returns the new object. - */ -var baseCreate = (function() { - function object() {} - return function(proto) { - if (!isObject(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); - } - object.prototype = proto; - var result = new object; - object.prototype = undefined; - return result; - }; -}()); - -module.exports = baseCreate; diff --git a/node_modules/lodash/_baseDelay.js b/node_modules/lodash/_baseDelay.js deleted file mode 100644 index 1486d69..0000000 --- a/node_modules/lodash/_baseDelay.js +++ /dev/null @@ -1,21 +0,0 @@ -/** Error message constants. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** - * The base implementation of `_.delay` and `_.defer` which accepts `args` - * to provide to `func`. - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {Array} args The arguments to provide to `func`. - * @returns {number|Object} Returns the timer id or timeout object. - */ -function baseDelay(func, wait, args) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return setTimeout(function() { func.apply(undefined, args); }, wait); -} - -module.exports = baseDelay; diff --git a/node_modules/lodash/_baseDifference.js b/node_modules/lodash/_baseDifference.js deleted file mode 100644 index 343ac19..0000000 --- a/node_modules/lodash/_baseDifference.js +++ /dev/null @@ -1,67 +0,0 @@ -var SetCache = require('./_SetCache'), - arrayIncludes = require('./_arrayIncludes'), - arrayIncludesWith = require('./_arrayIncludesWith'), - arrayMap = require('./_arrayMap'), - baseUnary = require('./_baseUnary'), - cacheHas = require('./_cacheHas'); - -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; - -/** - * The base implementation of methods like `_.difference` without support - * for excluding multiple arrays or iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Array} values The values to exclude. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - */ -function baseDifference(array, values, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - isCommon = true, - length = array.length, - result = [], - valuesLength = values.length; - - if (!length) { - return result; - } - if (iteratee) { - values = arrayMap(values, baseUnary(iteratee)); - } - if (comparator) { - includes = arrayIncludesWith; - isCommon = false; - } - else if (values.length >= LARGE_ARRAY_SIZE) { - includes = cacheHas; - isCommon = false; - values = new SetCache(values); - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee == null ? value : iteratee(value); - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var valuesIndex = valuesLength; - while (valuesIndex--) { - if (values[valuesIndex] === computed) { - continue outer; - } - } - result.push(value); - } - else if (!includes(values, computed, comparator)) { - result.push(value); - } - } - return result; -} - -module.exports = baseDifference; diff --git a/node_modules/lodash/_baseEach.js b/node_modules/lodash/_baseEach.js deleted file mode 100644 index 512c067..0000000 --- a/node_modules/lodash/_baseEach.js +++ /dev/null @@ -1,14 +0,0 @@ -var baseForOwn = require('./_baseForOwn'), - createBaseEach = require('./_createBaseEach'); - -/** - * The base implementation of `_.forEach` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ -var baseEach = createBaseEach(baseForOwn); - -module.exports = baseEach; diff --git a/node_modules/lodash/_baseEachRight.js b/node_modules/lodash/_baseEachRight.js deleted file mode 100644 index 0a8feec..0000000 --- a/node_modules/lodash/_baseEachRight.js +++ /dev/null @@ -1,14 +0,0 @@ -var baseForOwnRight = require('./_baseForOwnRight'), - createBaseEach = require('./_createBaseEach'); - -/** - * The base implementation of `_.forEachRight` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ -var baseEachRight = createBaseEach(baseForOwnRight, true); - -module.exports = baseEachRight; diff --git a/node_modules/lodash/_baseEvery.js b/node_modules/lodash/_baseEvery.js deleted file mode 100644 index fa52f7b..0000000 --- a/node_modules/lodash/_baseEvery.js +++ /dev/null @@ -1,21 +0,0 @@ -var baseEach = require('./_baseEach'); - -/** - * The base implementation of `_.every` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false` - */ -function baseEvery(collection, predicate) { - var result = true; - baseEach(collection, function(value, index, collection) { - result = !!predicate(value, index, collection); - return result; - }); - return result; -} - -module.exports = baseEvery; diff --git a/node_modules/lodash/_baseExtremum.js b/node_modules/lodash/_baseExtremum.js deleted file mode 100644 index 9d6aa77..0000000 --- a/node_modules/lodash/_baseExtremum.js +++ /dev/null @@ -1,32 +0,0 @@ -var isSymbol = require('./isSymbol'); - -/** - * The base implementation of methods like `_.max` and `_.min` which accepts a - * `comparator` to determine the extremum value. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The iteratee invoked per iteration. - * @param {Function} comparator The comparator used to compare values. - * @returns {*} Returns the extremum value. - */ -function baseExtremum(array, iteratee, comparator) { - var index = -1, - length = array.length; - - while (++index < length) { - var value = array[index], - current = iteratee(value); - - if (current != null && (computed === undefined - ? (current === current && !isSymbol(current)) - : comparator(current, computed) - )) { - var computed = current, - result = value; - } - } - return result; -} - -module.exports = baseExtremum; diff --git a/node_modules/lodash/_baseFill.js b/node_modules/lodash/_baseFill.js deleted file mode 100644 index 46ef9c7..0000000 --- a/node_modules/lodash/_baseFill.js +++ /dev/null @@ -1,32 +0,0 @@ -var toInteger = require('./toInteger'), - toLength = require('./toLength'); - -/** - * The base implementation of `_.fill` without an iteratee call guard. - * - * @private - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - */ -function baseFill(array, value, start, end) { - var length = array.length; - - start = toInteger(start); - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = (end === undefined || end > length) ? length : toInteger(end); - if (end < 0) { - end += length; - } - end = start > end ? 0 : toLength(end); - while (start < end) { - array[start++] = value; - } - return array; -} - -module.exports = baseFill; diff --git a/node_modules/lodash/_baseFilter.js b/node_modules/lodash/_baseFilter.js deleted file mode 100644 index 4678477..0000000 --- a/node_modules/lodash/_baseFilter.js +++ /dev/null @@ -1,21 +0,0 @@ -var baseEach = require('./_baseEach'); - -/** - * The base implementation of `_.filter` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ -function baseFilter(collection, predicate) { - var result = []; - baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result.push(value); - } - }); - return result; -} - -module.exports = baseFilter; diff --git a/node_modules/lodash/_baseFindIndex.js b/node_modules/lodash/_baseFindIndex.js deleted file mode 100644 index e3f5d8a..0000000 --- a/node_modules/lodash/_baseFindIndex.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); - - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; -} - -module.exports = baseFindIndex; diff --git a/node_modules/lodash/_baseFindKey.js b/node_modules/lodash/_baseFindKey.js deleted file mode 100644 index 2e430f3..0000000 --- a/node_modules/lodash/_baseFindKey.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * The base implementation of methods like `_.findKey` and `_.findLastKey`, - * without support for iteratee shorthands, which iterates over `collection` - * using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the found element or its key, else `undefined`. - */ -function baseFindKey(collection, predicate, eachFunc) { - var result; - eachFunc(collection, function(value, key, collection) { - if (predicate(value, key, collection)) { - result = key; - return false; - } - }); - return result; -} - -module.exports = baseFindKey; diff --git a/node_modules/lodash/_baseFlatten.js b/node_modules/lodash/_baseFlatten.js deleted file mode 100644 index 4b1e009..0000000 --- a/node_modules/lodash/_baseFlatten.js +++ /dev/null @@ -1,38 +0,0 @@ -var arrayPush = require('./_arrayPush'), - isFlattenable = require('./_isFlattenable'); - -/** - * The base implementation of `_.flatten` with support for restricting flattening. - * - * @private - * @param {Array} array The array to flatten. - * @param {number} depth The maximum recursion depth. - * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. - * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. - * @param {Array} [result=[]] The initial result value. - * @returns {Array} Returns the new flattened array. - */ -function baseFlatten(array, depth, predicate, isStrict, result) { - var index = -1, - length = array.length; - - predicate || (predicate = isFlattenable); - result || (result = []); - - while (++index < length) { - var value = array[index]; - if (depth > 0 && predicate(value)) { - if (depth > 1) { - // Recursively flatten arrays (susceptible to call stack limits). - baseFlatten(value, depth - 1, predicate, isStrict, result); - } else { - arrayPush(result, value); - } - } else if (!isStrict) { - result[result.length] = value; - } - } - return result; -} - -module.exports = baseFlatten; diff --git a/node_modules/lodash/_baseFor.js b/node_modules/lodash/_baseFor.js deleted file mode 100644 index d946590..0000000 --- a/node_modules/lodash/_baseFor.js +++ /dev/null @@ -1,16 +0,0 @@ -var createBaseFor = require('./_createBaseFor'); - -/** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ -var baseFor = createBaseFor(); - -module.exports = baseFor; diff --git a/node_modules/lodash/_baseForOwn.js b/node_modules/lodash/_baseForOwn.js deleted file mode 100644 index 503d523..0000000 --- a/node_modules/lodash/_baseForOwn.js +++ /dev/null @@ -1,16 +0,0 @@ -var baseFor = require('./_baseFor'), - keys = require('./keys'); - -/** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ -function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); -} - -module.exports = baseForOwn; diff --git a/node_modules/lodash/_baseForOwnRight.js b/node_modules/lodash/_baseForOwnRight.js deleted file mode 100644 index a4b10e6..0000000 --- a/node_modules/lodash/_baseForOwnRight.js +++ /dev/null @@ -1,16 +0,0 @@ -var baseForRight = require('./_baseForRight'), - keys = require('./keys'); - -/** - * The base implementation of `_.forOwnRight` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ -function baseForOwnRight(object, iteratee) { - return object && baseForRight(object, iteratee, keys); -} - -module.exports = baseForOwnRight; diff --git a/node_modules/lodash/_baseForRight.js b/node_modules/lodash/_baseForRight.js deleted file mode 100644 index 32842cd..0000000 --- a/node_modules/lodash/_baseForRight.js +++ /dev/null @@ -1,15 +0,0 @@ -var createBaseFor = require('./_createBaseFor'); - -/** - * This function is like `baseFor` except that it iterates over properties - * in the opposite order. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ -var baseForRight = createBaseFor(true); - -module.exports = baseForRight; diff --git a/node_modules/lodash/_baseFunctions.js b/node_modules/lodash/_baseFunctions.js deleted file mode 100644 index d23bc9b..0000000 --- a/node_modules/lodash/_baseFunctions.js +++ /dev/null @@ -1,19 +0,0 @@ -var arrayFilter = require('./_arrayFilter'), - isFunction = require('./isFunction'); - -/** - * The base implementation of `_.functions` which creates an array of - * `object` function property names filtered from `props`. - * - * @private - * @param {Object} object The object to inspect. - * @param {Array} props The property names to filter. - * @returns {Array} Returns the function names. - */ -function baseFunctions(object, props) { - return arrayFilter(props, function(key) { - return isFunction(object[key]); - }); -} - -module.exports = baseFunctions; diff --git a/node_modules/lodash/_baseGet.js b/node_modules/lodash/_baseGet.js deleted file mode 100644 index a194913..0000000 --- a/node_modules/lodash/_baseGet.js +++ /dev/null @@ -1,24 +0,0 @@ -var castPath = require('./_castPath'), - toKey = require('./_toKey'); - -/** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ -function baseGet(object, path) { - path = castPath(path, object); - - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[toKey(path[index++])]; - } - return (index && index == length) ? object : undefined; -} - -module.exports = baseGet; diff --git a/node_modules/lodash/_baseGetAllKeys.js b/node_modules/lodash/_baseGetAllKeys.js deleted file mode 100644 index 8ad204e..0000000 --- a/node_modules/lodash/_baseGetAllKeys.js +++ /dev/null @@ -1,20 +0,0 @@ -var arrayPush = require('./_arrayPush'), - isArray = require('./isArray'); - -/** - * The base implementation of `getAllKeys` and `getAllKeysIn` which uses - * `keysFunc` and `symbolsFunc` to get the enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Function} keysFunc The function to get the keys of `object`. - * @param {Function} symbolsFunc The function to get the symbols of `object`. - * @returns {Array} Returns the array of property names and symbols. - */ -function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result = keysFunc(object); - return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); -} - -module.exports = baseGetAllKeys; diff --git a/node_modules/lodash/_baseGetTag.js b/node_modules/lodash/_baseGetTag.js deleted file mode 100644 index b927ccc..0000000 --- a/node_modules/lodash/_baseGetTag.js +++ /dev/null @@ -1,28 +0,0 @@ -var Symbol = require('./_Symbol'), - getRawTag = require('./_getRawTag'), - objectToString = require('./_objectToString'); - -/** `Object#toString` result references. */ -var nullTag = '[object Null]', - undefinedTag = '[object Undefined]'; - -/** Built-in value references. */ -var symToStringTag = Symbol ? Symbol.toStringTag : undefined; - -/** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; - } - return (symToStringTag && symToStringTag in Object(value)) - ? getRawTag(value) - : objectToString(value); -} - -module.exports = baseGetTag; diff --git a/node_modules/lodash/_baseGt.js b/node_modules/lodash/_baseGt.js deleted file mode 100644 index 502d273..0000000 --- a/node_modules/lodash/_baseGt.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * The base implementation of `_.gt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - */ -function baseGt(value, other) { - return value > other; -} - -module.exports = baseGt; diff --git a/node_modules/lodash/_baseHas.js b/node_modules/lodash/_baseHas.js deleted file mode 100644 index 1b73032..0000000 --- a/node_modules/lodash/_baseHas.js +++ /dev/null @@ -1,19 +0,0 @@ -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * The base implementation of `_.has` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ -function baseHas(object, key) { - return object != null && hasOwnProperty.call(object, key); -} - -module.exports = baseHas; diff --git a/node_modules/lodash/_baseHasIn.js b/node_modules/lodash/_baseHasIn.js deleted file mode 100644 index 2e0d042..0000000 --- a/node_modules/lodash/_baseHasIn.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * The base implementation of `_.hasIn` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ -function baseHasIn(object, key) { - return object != null && key in Object(object); -} - -module.exports = baseHasIn; diff --git a/node_modules/lodash/_baseInRange.js b/node_modules/lodash/_baseInRange.js deleted file mode 100644 index ec95666..0000000 --- a/node_modules/lodash/_baseInRange.js +++ /dev/null @@ -1,18 +0,0 @@ -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max, - nativeMin = Math.min; - -/** - * The base implementation of `_.inRange` which doesn't coerce arguments. - * - * @private - * @param {number} number The number to check. - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `number` is in the range, else `false`. - */ -function baseInRange(number, start, end) { - return number >= nativeMin(start, end) && number < nativeMax(start, end); -} - -module.exports = baseInRange; diff --git a/node_modules/lodash/_baseIndexOf.js b/node_modules/lodash/_baseIndexOf.js deleted file mode 100644 index 167e706..0000000 --- a/node_modules/lodash/_baseIndexOf.js +++ /dev/null @@ -1,20 +0,0 @@ -var baseFindIndex = require('./_baseFindIndex'), - baseIsNaN = require('./_baseIsNaN'), - strictIndexOf = require('./_strictIndexOf'); - -/** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseIndexOf(array, value, fromIndex) { - return value === value - ? strictIndexOf(array, value, fromIndex) - : baseFindIndex(array, baseIsNaN, fromIndex); -} - -module.exports = baseIndexOf; diff --git a/node_modules/lodash/_baseIndexOfWith.js b/node_modules/lodash/_baseIndexOfWith.js deleted file mode 100644 index f815fe0..0000000 --- a/node_modules/lodash/_baseIndexOfWith.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * This function is like `baseIndexOf` except that it accepts a comparator. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @param {Function} comparator The comparator invoked per element. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseIndexOfWith(array, value, fromIndex, comparator) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (comparator(array[index], value)) { - return index; - } - } - return -1; -} - -module.exports = baseIndexOfWith; diff --git a/node_modules/lodash/_baseIntersection.js b/node_modules/lodash/_baseIntersection.js deleted file mode 100644 index c1d250c..0000000 --- a/node_modules/lodash/_baseIntersection.js +++ /dev/null @@ -1,74 +0,0 @@ -var SetCache = require('./_SetCache'), - arrayIncludes = require('./_arrayIncludes'), - arrayIncludesWith = require('./_arrayIncludesWith'), - arrayMap = require('./_arrayMap'), - baseUnary = require('./_baseUnary'), - cacheHas = require('./_cacheHas'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMin = Math.min; - -/** - * The base implementation of methods like `_.intersection`, without support - * for iteratee shorthands, that accepts an array of arrays to inspect. - * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of shared values. - */ -function baseIntersection(arrays, iteratee, comparator) { - var includes = comparator ? arrayIncludesWith : arrayIncludes, - length = arrays[0].length, - othLength = arrays.length, - othIndex = othLength, - caches = Array(othLength), - maxLength = Infinity, - result = []; - - while (othIndex--) { - var array = arrays[othIndex]; - if (othIndex && iteratee) { - array = arrayMap(array, baseUnary(iteratee)); - } - maxLength = nativeMin(array.length, maxLength); - caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) - ? new SetCache(othIndex && array) - : undefined; - } - array = arrays[0]; - - var index = -1, - seen = caches[0]; - - outer: - while (++index < length && result.length < maxLength) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (!(seen - ? cacheHas(seen, computed) - : includes(result, computed, comparator) - )) { - othIndex = othLength; - while (--othIndex) { - var cache = caches[othIndex]; - if (!(cache - ? cacheHas(cache, computed) - : includes(arrays[othIndex], computed, comparator)) - ) { - continue outer; - } - } - if (seen) { - seen.push(computed); - } - result.push(value); - } - } - return result; -} - -module.exports = baseIntersection; diff --git a/node_modules/lodash/_baseInverter.js b/node_modules/lodash/_baseInverter.js deleted file mode 100644 index fbc337f..0000000 --- a/node_modules/lodash/_baseInverter.js +++ /dev/null @@ -1,21 +0,0 @@ -var baseForOwn = require('./_baseForOwn'); - -/** - * The base implementation of `_.invert` and `_.invertBy` which inverts - * `object` with values transformed by `iteratee` and set by `setter`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform values. - * @param {Object} accumulator The initial inverted object. - * @returns {Function} Returns `accumulator`. - */ -function baseInverter(object, setter, iteratee, accumulator) { - baseForOwn(object, function(value, key, object) { - setter(accumulator, iteratee(value), key, object); - }); - return accumulator; -} - -module.exports = baseInverter; diff --git a/node_modules/lodash/_baseInvoke.js b/node_modules/lodash/_baseInvoke.js deleted file mode 100644 index 49bcf3c..0000000 --- a/node_modules/lodash/_baseInvoke.js +++ /dev/null @@ -1,24 +0,0 @@ -var apply = require('./_apply'), - castPath = require('./_castPath'), - last = require('./last'), - parent = require('./_parent'), - toKey = require('./_toKey'); - -/** - * The base implementation of `_.invoke` without support for individual - * method arguments. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the method to invoke. - * @param {Array} args The arguments to invoke the method with. - * @returns {*} Returns the result of the invoked method. - */ -function baseInvoke(object, path, args) { - path = castPath(path, object); - object = parent(object, path); - var func = object == null ? object : object[toKey(last(path))]; - return func == null ? undefined : apply(func, object, args); -} - -module.exports = baseInvoke; diff --git a/node_modules/lodash/_baseIsArguments.js b/node_modules/lodash/_baseIsArguments.js deleted file mode 100644 index b3562cc..0000000 --- a/node_modules/lodash/_baseIsArguments.js +++ /dev/null @@ -1,18 +0,0 @@ -var baseGetTag = require('./_baseGetTag'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]'; - -/** - * The base implementation of `_.isArguments`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - */ -function baseIsArguments(value) { - return isObjectLike(value) && baseGetTag(value) == argsTag; -} - -module.exports = baseIsArguments; diff --git a/node_modules/lodash/_baseIsArrayBuffer.js b/node_modules/lodash/_baseIsArrayBuffer.js deleted file mode 100644 index a2c4f30..0000000 --- a/node_modules/lodash/_baseIsArrayBuffer.js +++ /dev/null @@ -1,17 +0,0 @@ -var baseGetTag = require('./_baseGetTag'), - isObjectLike = require('./isObjectLike'); - -var arrayBufferTag = '[object ArrayBuffer]'; - -/** - * The base implementation of `_.isArrayBuffer` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. - */ -function baseIsArrayBuffer(value) { - return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; -} - -module.exports = baseIsArrayBuffer; diff --git a/node_modules/lodash/_baseIsDate.js b/node_modules/lodash/_baseIsDate.js deleted file mode 100644 index ba67c78..0000000 --- a/node_modules/lodash/_baseIsDate.js +++ /dev/null @@ -1,18 +0,0 @@ -var baseGetTag = require('./_baseGetTag'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var dateTag = '[object Date]'; - -/** - * The base implementation of `_.isDate` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - */ -function baseIsDate(value) { - return isObjectLike(value) && baseGetTag(value) == dateTag; -} - -module.exports = baseIsDate; diff --git a/node_modules/lodash/_baseIsEqual.js b/node_modules/lodash/_baseIsEqual.js deleted file mode 100644 index 00a68a4..0000000 --- a/node_modules/lodash/_baseIsEqual.js +++ /dev/null @@ -1,28 +0,0 @@ -var baseIsEqualDeep = require('./_baseIsEqualDeep'), - isObjectLike = require('./isObjectLike'); - -/** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {boolean} bitmask The bitmask flags. - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Function} [customizer] The function to customize comparisons. - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ -function baseIsEqual(value, other, bitmask, customizer, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); -} - -module.exports = baseIsEqual; diff --git a/node_modules/lodash/_baseIsEqualDeep.js b/node_modules/lodash/_baseIsEqualDeep.js deleted file mode 100644 index e3cfd6a..0000000 --- a/node_modules/lodash/_baseIsEqualDeep.js +++ /dev/null @@ -1,83 +0,0 @@ -var Stack = require('./_Stack'), - equalArrays = require('./_equalArrays'), - equalByTag = require('./_equalByTag'), - equalObjects = require('./_equalObjects'), - getTag = require('./_getTag'), - isArray = require('./isArray'), - isBuffer = require('./isBuffer'), - isTypedArray = require('./isTypedArray'); - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1; - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - objectTag = '[object Object]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = objIsArr ? arrayTag : getTag(object), - othTag = othIsArr ? arrayTag : getTag(other); - - objTag = objTag == argsTag ? objectTag : objTag; - othTag = othTag == argsTag ? objectTag : othTag; - - var objIsObj = objTag == objectTag, - othIsObj = othTag == objectTag, - isSameTag = objTag == othTag; - - if (isSameTag && isBuffer(object)) { - if (!isBuffer(other)) { - return false; - } - objIsArr = true; - objIsObj = false; - } - if (isSameTag && !objIsObj) { - stack || (stack = new Stack); - return (objIsArr || isTypedArray(object)) - ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) - : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); - } - if (!(bitmask & COMPARE_PARTIAL_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; - - stack || (stack = new Stack); - return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); - } - } - if (!isSameTag) { - return false; - } - stack || (stack = new Stack); - return equalObjects(object, other, bitmask, customizer, equalFunc, stack); -} - -module.exports = baseIsEqualDeep; diff --git a/node_modules/lodash/_baseIsMap.js b/node_modules/lodash/_baseIsMap.js deleted file mode 100644 index 02a4021..0000000 --- a/node_modules/lodash/_baseIsMap.js +++ /dev/null @@ -1,18 +0,0 @@ -var getTag = require('./_getTag'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var mapTag = '[object Map]'; - -/** - * The base implementation of `_.isMap` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - */ -function baseIsMap(value) { - return isObjectLike(value) && getTag(value) == mapTag; -} - -module.exports = baseIsMap; diff --git a/node_modules/lodash/_baseIsMatch.js b/node_modules/lodash/_baseIsMatch.js deleted file mode 100644 index 72494be..0000000 --- a/node_modules/lodash/_baseIsMatch.js +++ /dev/null @@ -1,62 +0,0 @@ -var Stack = require('./_Stack'), - baseIsEqual = require('./_baseIsEqual'); - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - -/** - * The base implementation of `_.isMatch` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Array} matchData The property names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - */ -function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; - - if (object == null) { - return !length; - } - object = Object(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; - } - } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; - - if (noCustomizer && data[2]) { - if (objValue === undefined && !(key in object)) { - return false; - } - } else { - var stack = new Stack; - if (customizer) { - var result = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result === undefined - ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) - : result - )) { - return false; - } - } - } - return true; -} - -module.exports = baseIsMatch; diff --git a/node_modules/lodash/_baseIsNaN.js b/node_modules/lodash/_baseIsNaN.js deleted file mode 100644 index 316f1eb..0000000 --- a/node_modules/lodash/_baseIsNaN.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - * The base implementation of `_.isNaN` without support for number objects. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - */ -function baseIsNaN(value) { - return value !== value; -} - -module.exports = baseIsNaN; diff --git a/node_modules/lodash/_baseIsNative.js b/node_modules/lodash/_baseIsNative.js deleted file mode 100644 index 8702330..0000000 --- a/node_modules/lodash/_baseIsNative.js +++ /dev/null @@ -1,47 +0,0 @@ -var isFunction = require('./isFunction'), - isMasked = require('./_isMasked'), - isObject = require('./isObject'), - toSource = require('./_toSource'); - -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; - -/** Used to detect host constructors (Safari). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; - -/** Used for built-in method references. */ -var funcProto = Function.prototype, - objectProto = Object.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); - -/** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ -function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); -} - -module.exports = baseIsNative; diff --git a/node_modules/lodash/_baseIsRegExp.js b/node_modules/lodash/_baseIsRegExp.js deleted file mode 100644 index 6cd7c1a..0000000 --- a/node_modules/lodash/_baseIsRegExp.js +++ /dev/null @@ -1,18 +0,0 @@ -var baseGetTag = require('./_baseGetTag'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var regexpTag = '[object RegExp]'; - -/** - * The base implementation of `_.isRegExp` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - */ -function baseIsRegExp(value) { - return isObjectLike(value) && baseGetTag(value) == regexpTag; -} - -module.exports = baseIsRegExp; diff --git a/node_modules/lodash/_baseIsSet.js b/node_modules/lodash/_baseIsSet.js deleted file mode 100644 index 6dee367..0000000 --- a/node_modules/lodash/_baseIsSet.js +++ /dev/null @@ -1,18 +0,0 @@ -var getTag = require('./_getTag'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var setTag = '[object Set]'; - -/** - * The base implementation of `_.isSet` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - */ -function baseIsSet(value) { - return isObjectLike(value) && getTag(value) == setTag; -} - -module.exports = baseIsSet; diff --git a/node_modules/lodash/_baseIsTypedArray.js b/node_modules/lodash/_baseIsTypedArray.js deleted file mode 100644 index 1edb32f..0000000 --- a/node_modules/lodash/_baseIsTypedArray.js +++ /dev/null @@ -1,60 +0,0 @@ -var baseGetTag = require('./_baseGetTag'), - isLength = require('./isLength'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - funcTag = '[object Function]', - mapTag = '[object Map]', - numberTag = '[object Number]', - objectTag = '[object Object]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - weakMapTag = '[object WeakMap]'; - -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - -/** Used to identify `toStringTag` values of typed arrays. */ -var typedArrayTags = {}; -typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = -typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = -typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = -typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = -typedArrayTags[uint32Tag] = true; -typedArrayTags[argsTag] = typedArrayTags[arrayTag] = -typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = -typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = -typedArrayTags[errorTag] = typedArrayTags[funcTag] = -typedArrayTags[mapTag] = typedArrayTags[numberTag] = -typedArrayTags[objectTag] = typedArrayTags[regexpTag] = -typedArrayTags[setTag] = typedArrayTags[stringTag] = -typedArrayTags[weakMapTag] = false; - -/** - * The base implementation of `_.isTypedArray` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - */ -function baseIsTypedArray(value) { - return isObjectLike(value) && - isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; -} - -module.exports = baseIsTypedArray; diff --git a/node_modules/lodash/_baseIteratee.js b/node_modules/lodash/_baseIteratee.js deleted file mode 100644 index 995c257..0000000 --- a/node_modules/lodash/_baseIteratee.js +++ /dev/null @@ -1,31 +0,0 @@ -var baseMatches = require('./_baseMatches'), - baseMatchesProperty = require('./_baseMatchesProperty'), - identity = require('./identity'), - isArray = require('./isArray'), - property = require('./property'); - -/** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ -function baseIteratee(value) { - // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. - // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. - if (typeof value == 'function') { - return value; - } - if (value == null) { - return identity; - } - if (typeof value == 'object') { - return isArray(value) - ? baseMatchesProperty(value[0], value[1]) - : baseMatches(value); - } - return property(value); -} - -module.exports = baseIteratee; diff --git a/node_modules/lodash/_baseKeys.js b/node_modules/lodash/_baseKeys.js deleted file mode 100644 index 45e9e6f..0000000 --- a/node_modules/lodash/_baseKeys.js +++ /dev/null @@ -1,30 +0,0 @@ -var isPrototype = require('./_isPrototype'), - nativeKeys = require('./_nativeKeys'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; -} - -module.exports = baseKeys; diff --git a/node_modules/lodash/_baseKeysIn.js b/node_modules/lodash/_baseKeysIn.js deleted file mode 100644 index ea8a0a1..0000000 --- a/node_modules/lodash/_baseKeysIn.js +++ /dev/null @@ -1,33 +0,0 @@ -var isObject = require('./isObject'), - isPrototype = require('./_isPrototype'), - nativeKeysIn = require('./_nativeKeysIn'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function baseKeysIn(object) { - if (!isObject(object)) { - return nativeKeysIn(object); - } - var isProto = isPrototype(object), - result = []; - - for (var key in object) { - if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; -} - -module.exports = baseKeysIn; diff --git a/node_modules/lodash/_baseLodash.js b/node_modules/lodash/_baseLodash.js deleted file mode 100644 index f76c790..0000000 --- a/node_modules/lodash/_baseLodash.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * The function whose prototype chain sequence wrappers inherit from. - * - * @private - */ -function baseLodash() { - // No operation performed. -} - -module.exports = baseLodash; diff --git a/node_modules/lodash/_baseLt.js b/node_modules/lodash/_baseLt.js deleted file mode 100644 index 8674d29..0000000 --- a/node_modules/lodash/_baseLt.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * The base implementation of `_.lt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - */ -function baseLt(value, other) { - return value < other; -} - -module.exports = baseLt; diff --git a/node_modules/lodash/_baseMap.js b/node_modules/lodash/_baseMap.js deleted file mode 100644 index 0bf5cea..0000000 --- a/node_modules/lodash/_baseMap.js +++ /dev/null @@ -1,22 +0,0 @@ -var baseEach = require('./_baseEach'), - isArrayLike = require('./isArrayLike'); - -/** - * The base implementation of `_.map` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ -function baseMap(collection, iteratee) { - var index = -1, - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value, key, collection) { - result[++index] = iteratee(value, key, collection); - }); - return result; -} - -module.exports = baseMap; diff --git a/node_modules/lodash/_baseMatches.js b/node_modules/lodash/_baseMatches.js deleted file mode 100644 index e56582a..0000000 --- a/node_modules/lodash/_baseMatches.js +++ /dev/null @@ -1,22 +0,0 @@ -var baseIsMatch = require('./_baseIsMatch'), - getMatchData = require('./_getMatchData'), - matchesStrictComparable = require('./_matchesStrictComparable'); - -/** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - */ -function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable(matchData[0][0], matchData[0][1]); - } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); - }; -} - -module.exports = baseMatches; diff --git a/node_modules/lodash/_baseMatchesProperty.js b/node_modules/lodash/_baseMatchesProperty.js deleted file mode 100644 index 24afd89..0000000 --- a/node_modules/lodash/_baseMatchesProperty.js +++ /dev/null @@ -1,33 +0,0 @@ -var baseIsEqual = require('./_baseIsEqual'), - get = require('./get'), - hasIn = require('./hasIn'), - isKey = require('./_isKey'), - isStrictComparable = require('./_isStrictComparable'), - matchesStrictComparable = require('./_matchesStrictComparable'), - toKey = require('./_toKey'); - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - -/** - * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. - * - * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ -function baseMatchesProperty(path, srcValue) { - if (isKey(path) && isStrictComparable(srcValue)) { - return matchesStrictComparable(toKey(path), srcValue); - } - return function(object) { - var objValue = get(object, path); - return (objValue === undefined && objValue === srcValue) - ? hasIn(object, path) - : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); - }; -} - -module.exports = baseMatchesProperty; diff --git a/node_modules/lodash/_baseMean.js b/node_modules/lodash/_baseMean.js deleted file mode 100644 index fa9e00a..0000000 --- a/node_modules/lodash/_baseMean.js +++ /dev/null @@ -1,20 +0,0 @@ -var baseSum = require('./_baseSum'); - -/** Used as references for various `Number` constants. */ -var NAN = 0 / 0; - -/** - * The base implementation of `_.mean` and `_.meanBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the mean. - */ -function baseMean(array, iteratee) { - var length = array == null ? 0 : array.length; - return length ? (baseSum(array, iteratee) / length) : NAN; -} - -module.exports = baseMean; diff --git a/node_modules/lodash/_baseMerge.js b/node_modules/lodash/_baseMerge.js deleted file mode 100644 index c98b5eb..0000000 --- a/node_modules/lodash/_baseMerge.js +++ /dev/null @@ -1,42 +0,0 @@ -var Stack = require('./_Stack'), - assignMergeValue = require('./_assignMergeValue'), - baseFor = require('./_baseFor'), - baseMergeDeep = require('./_baseMergeDeep'), - isObject = require('./isObject'), - keysIn = require('./keysIn'), - safeGet = require('./_safeGet'); - -/** - * The base implementation of `_.merge` without support for multiple sources. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {number} srcIndex The index of `source`. - * @param {Function} [customizer] The function to customize merged values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ -function baseMerge(object, source, srcIndex, customizer, stack) { - if (object === source) { - return; - } - baseFor(source, function(srcValue, key) { - stack || (stack = new Stack); - if (isObject(srcValue)) { - baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); - } - else { - var newValue = customizer - ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) - : undefined; - - if (newValue === undefined) { - newValue = srcValue; - } - assignMergeValue(object, key, newValue); - } - }, keysIn); -} - -module.exports = baseMerge; diff --git a/node_modules/lodash/_baseMergeDeep.js b/node_modules/lodash/_baseMergeDeep.js deleted file mode 100644 index 4679e8d..0000000 --- a/node_modules/lodash/_baseMergeDeep.js +++ /dev/null @@ -1,94 +0,0 @@ -var assignMergeValue = require('./_assignMergeValue'), - cloneBuffer = require('./_cloneBuffer'), - cloneTypedArray = require('./_cloneTypedArray'), - copyArray = require('./_copyArray'), - initCloneObject = require('./_initCloneObject'), - isArguments = require('./isArguments'), - isArray = require('./isArray'), - isArrayLikeObject = require('./isArrayLikeObject'), - isBuffer = require('./isBuffer'), - isFunction = require('./isFunction'), - isObject = require('./isObject'), - isPlainObject = require('./isPlainObject'), - isTypedArray = require('./isTypedArray'), - safeGet = require('./_safeGet'), - toPlainObject = require('./toPlainObject'); - -/** - * A specialized version of `baseMerge` for arrays and objects which performs - * deep merges and tracks traversed objects enabling objects with circular - * references to be merged. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {string} key The key of the value to merge. - * @param {number} srcIndex The index of `source`. - * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize assigned values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ -function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { - var objValue = safeGet(object, key), - srcValue = safeGet(source, key), - stacked = stack.get(srcValue); - - if (stacked) { - assignMergeValue(object, key, stacked); - return; - } - var newValue = customizer - ? customizer(objValue, srcValue, (key + ''), object, source, stack) - : undefined; - - var isCommon = newValue === undefined; - - if (isCommon) { - var isArr = isArray(srcValue), - isBuff = !isArr && isBuffer(srcValue), - isTyped = !isArr && !isBuff && isTypedArray(srcValue); - - newValue = srcValue; - if (isArr || isBuff || isTyped) { - if (isArray(objValue)) { - newValue = objValue; - } - else if (isArrayLikeObject(objValue)) { - newValue = copyArray(objValue); - } - else if (isBuff) { - isCommon = false; - newValue = cloneBuffer(srcValue, true); - } - else if (isTyped) { - isCommon = false; - newValue = cloneTypedArray(srcValue, true); - } - else { - newValue = []; - } - } - else if (isPlainObject(srcValue) || isArguments(srcValue)) { - newValue = objValue; - if (isArguments(objValue)) { - newValue = toPlainObject(objValue); - } - else if (!isObject(objValue) || isFunction(objValue)) { - newValue = initCloneObject(srcValue); - } - } - else { - isCommon = false; - } - } - if (isCommon) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack['delete'](srcValue); - } - assignMergeValue(object, key, newValue); -} - -module.exports = baseMergeDeep; diff --git a/node_modules/lodash/_baseNth.js b/node_modules/lodash/_baseNth.js deleted file mode 100644 index 0403c2a..0000000 --- a/node_modules/lodash/_baseNth.js +++ /dev/null @@ -1,20 +0,0 @@ -var isIndex = require('./_isIndex'); - -/** - * The base implementation of `_.nth` which doesn't coerce arguments. - * - * @private - * @param {Array} array The array to query. - * @param {number} n The index of the element to return. - * @returns {*} Returns the nth element of `array`. - */ -function baseNth(array, n) { - var length = array.length; - if (!length) { - return; - } - n += n < 0 ? length : 0; - return isIndex(n, length) ? array[n] : undefined; -} - -module.exports = baseNth; diff --git a/node_modules/lodash/_baseOrderBy.js b/node_modules/lodash/_baseOrderBy.js deleted file mode 100644 index 775a017..0000000 --- a/node_modules/lodash/_baseOrderBy.js +++ /dev/null @@ -1,49 +0,0 @@ -var arrayMap = require('./_arrayMap'), - baseGet = require('./_baseGet'), - baseIteratee = require('./_baseIteratee'), - baseMap = require('./_baseMap'), - baseSortBy = require('./_baseSortBy'), - baseUnary = require('./_baseUnary'), - compareMultiple = require('./_compareMultiple'), - identity = require('./identity'), - isArray = require('./isArray'); - -/** - * The base implementation of `_.orderBy` without param guards. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. - * @param {string[]} orders The sort orders of `iteratees`. - * @returns {Array} Returns the new sorted array. - */ -function baseOrderBy(collection, iteratees, orders) { - if (iteratees.length) { - iteratees = arrayMap(iteratees, function(iteratee) { - if (isArray(iteratee)) { - return function(value) { - return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); - } - } - return iteratee; - }); - } else { - iteratees = [identity]; - } - - var index = -1; - iteratees = arrayMap(iteratees, baseUnary(baseIteratee)); - - var result = baseMap(collection, function(value, key, collection) { - var criteria = arrayMap(iteratees, function(iteratee) { - return iteratee(value); - }); - return { 'criteria': criteria, 'index': ++index, 'value': value }; - }); - - return baseSortBy(result, function(object, other) { - return compareMultiple(object, other, orders); - }); -} - -module.exports = baseOrderBy; diff --git a/node_modules/lodash/_basePick.js b/node_modules/lodash/_basePick.js deleted file mode 100644 index 09b458a..0000000 --- a/node_modules/lodash/_basePick.js +++ /dev/null @@ -1,19 +0,0 @@ -var basePickBy = require('./_basePickBy'), - hasIn = require('./hasIn'); - -/** - * The base implementation of `_.pick` without support for individual - * property identifiers. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @returns {Object} Returns the new object. - */ -function basePick(object, paths) { - return basePickBy(object, paths, function(value, path) { - return hasIn(object, path); - }); -} - -module.exports = basePick; diff --git a/node_modules/lodash/_basePickBy.js b/node_modules/lodash/_basePickBy.js deleted file mode 100644 index 85be68c..0000000 --- a/node_modules/lodash/_basePickBy.js +++ /dev/null @@ -1,30 +0,0 @@ -var baseGet = require('./_baseGet'), - baseSet = require('./_baseSet'), - castPath = require('./_castPath'); - -/** - * The base implementation of `_.pickBy` without support for iteratee shorthands. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @param {Function} predicate The function invoked per property. - * @returns {Object} Returns the new object. - */ -function basePickBy(object, paths, predicate) { - var index = -1, - length = paths.length, - result = {}; - - while (++index < length) { - var path = paths[index], - value = baseGet(object, path); - - if (predicate(value, path)) { - baseSet(result, castPath(path, object), value); - } - } - return result; -} - -module.exports = basePickBy; diff --git a/node_modules/lodash/_baseProperty.js b/node_modules/lodash/_baseProperty.js deleted file mode 100644 index 496281e..0000000 --- a/node_modules/lodash/_baseProperty.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ -function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; -} - -module.exports = baseProperty; diff --git a/node_modules/lodash/_basePropertyDeep.js b/node_modules/lodash/_basePropertyDeep.js deleted file mode 100644 index 1e5aae5..0000000 --- a/node_modules/lodash/_basePropertyDeep.js +++ /dev/null @@ -1,16 +0,0 @@ -var baseGet = require('./_baseGet'); - -/** - * A specialized version of `baseProperty` which supports deep paths. - * - * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - */ -function basePropertyDeep(path) { - return function(object) { - return baseGet(object, path); - }; -} - -module.exports = basePropertyDeep; diff --git a/node_modules/lodash/_basePropertyOf.js b/node_modules/lodash/_basePropertyOf.js deleted file mode 100644 index 4617399..0000000 --- a/node_modules/lodash/_basePropertyOf.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * The base implementation of `_.propertyOf` without support for deep paths. - * - * @private - * @param {Object} object The object to query. - * @returns {Function} Returns the new accessor function. - */ -function basePropertyOf(object) { - return function(key) { - return object == null ? undefined : object[key]; - }; -} - -module.exports = basePropertyOf; diff --git a/node_modules/lodash/_basePullAll.js b/node_modules/lodash/_basePullAll.js deleted file mode 100644 index 305720e..0000000 --- a/node_modules/lodash/_basePullAll.js +++ /dev/null @@ -1,51 +0,0 @@ -var arrayMap = require('./_arrayMap'), - baseIndexOf = require('./_baseIndexOf'), - baseIndexOfWith = require('./_baseIndexOfWith'), - baseUnary = require('./_baseUnary'), - copyArray = require('./_copyArray'); - -/** Used for built-in method references. */ -var arrayProto = Array.prototype; - -/** Built-in value references. */ -var splice = arrayProto.splice; - -/** - * The base implementation of `_.pullAllBy` without support for iteratee - * shorthands. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns `array`. - */ -function basePullAll(array, values, iteratee, comparator) { - var indexOf = comparator ? baseIndexOfWith : baseIndexOf, - index = -1, - length = values.length, - seen = array; - - if (array === values) { - values = copyArray(values); - } - if (iteratee) { - seen = arrayMap(array, baseUnary(iteratee)); - } - while (++index < length) { - var fromIndex = 0, - value = values[index], - computed = iteratee ? iteratee(value) : value; - - while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { - if (seen !== array) { - splice.call(seen, fromIndex, 1); - } - splice.call(array, fromIndex, 1); - } - } - return array; -} - -module.exports = basePullAll; diff --git a/node_modules/lodash/_basePullAt.js b/node_modules/lodash/_basePullAt.js deleted file mode 100644 index c3e9e71..0000000 --- a/node_modules/lodash/_basePullAt.js +++ /dev/null @@ -1,37 +0,0 @@ -var baseUnset = require('./_baseUnset'), - isIndex = require('./_isIndex'); - -/** Used for built-in method references. */ -var arrayProto = Array.prototype; - -/** Built-in value references. */ -var splice = arrayProto.splice; - -/** - * The base implementation of `_.pullAt` without support for individual - * indexes or capturing the removed elements. - * - * @private - * @param {Array} array The array to modify. - * @param {number[]} indexes The indexes of elements to remove. - * @returns {Array} Returns `array`. - */ -function basePullAt(array, indexes) { - var length = array ? indexes.length : 0, - lastIndex = length - 1; - - while (length--) { - var index = indexes[length]; - if (length == lastIndex || index !== previous) { - var previous = index; - if (isIndex(index)) { - splice.call(array, index, 1); - } else { - baseUnset(array, index); - } - } - } - return array; -} - -module.exports = basePullAt; diff --git a/node_modules/lodash/_baseRandom.js b/node_modules/lodash/_baseRandom.js deleted file mode 100644 index 94f76a7..0000000 --- a/node_modules/lodash/_baseRandom.js +++ /dev/null @@ -1,18 +0,0 @@ -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeFloor = Math.floor, - nativeRandom = Math.random; - -/** - * The base implementation of `_.random` without support for returning - * floating-point numbers. - * - * @private - * @param {number} lower The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the random number. - */ -function baseRandom(lower, upper) { - return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); -} - -module.exports = baseRandom; diff --git a/node_modules/lodash/_baseRange.js b/node_modules/lodash/_baseRange.js deleted file mode 100644 index 0fb8e41..0000000 --- a/node_modules/lodash/_baseRange.js +++ /dev/null @@ -1,28 +0,0 @@ -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeCeil = Math.ceil, - nativeMax = Math.max; - -/** - * The base implementation of `_.range` and `_.rangeRight` which doesn't - * coerce arguments. - * - * @private - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @param {number} step The value to increment or decrement by. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the range of numbers. - */ -function baseRange(start, end, step, fromRight) { - var index = -1, - length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), - result = Array(length); - - while (length--) { - result[fromRight ? length : ++index] = start; - start += step; - } - return result; -} - -module.exports = baseRange; diff --git a/node_modules/lodash/_baseReduce.js b/node_modules/lodash/_baseReduce.js deleted file mode 100644 index 5a1f8b5..0000000 --- a/node_modules/lodash/_baseReduce.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * The base implementation of `_.reduce` and `_.reduceRight`, without support - * for iteratee shorthands, which iterates over `collection` using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} accumulator The initial value. - * @param {boolean} initAccum Specify using the first or last element of - * `collection` as the initial value. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the accumulated value. - */ -function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { - eachFunc(collection, function(value, index, collection) { - accumulator = initAccum - ? (initAccum = false, value) - : iteratee(accumulator, value, index, collection); - }); - return accumulator; -} - -module.exports = baseReduce; diff --git a/node_modules/lodash/_baseRepeat.js b/node_modules/lodash/_baseRepeat.js deleted file mode 100644 index ee44c31..0000000 --- a/node_modules/lodash/_baseRepeat.js +++ /dev/null @@ -1,35 +0,0 @@ -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeFloor = Math.floor; - -/** - * The base implementation of `_.repeat` which doesn't coerce arguments. - * - * @private - * @param {string} string The string to repeat. - * @param {number} n The number of times to repeat the string. - * @returns {string} Returns the repeated string. - */ -function baseRepeat(string, n) { - var result = ''; - if (!string || n < 1 || n > MAX_SAFE_INTEGER) { - return result; - } - // Leverage the exponentiation by squaring algorithm for a faster repeat. - // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. - do { - if (n % 2) { - result += string; - } - n = nativeFloor(n / 2); - if (n) { - string += string; - } - } while (n); - - return result; -} - -module.exports = baseRepeat; diff --git a/node_modules/lodash/_baseRest.js b/node_modules/lodash/_baseRest.js deleted file mode 100644 index d0dc4bd..0000000 --- a/node_modules/lodash/_baseRest.js +++ /dev/null @@ -1,17 +0,0 @@ -var identity = require('./identity'), - overRest = require('./_overRest'), - setToString = require('./_setToString'); - -/** - * The base implementation of `_.rest` which doesn't validate or coerce arguments. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - */ -function baseRest(func, start) { - return setToString(overRest(func, start, identity), func + ''); -} - -module.exports = baseRest; diff --git a/node_modules/lodash/_baseSample.js b/node_modules/lodash/_baseSample.js deleted file mode 100644 index 58582b9..0000000 --- a/node_modules/lodash/_baseSample.js +++ /dev/null @@ -1,15 +0,0 @@ -var arraySample = require('./_arraySample'), - values = require('./values'); - -/** - * The base implementation of `_.sample`. - * - * @private - * @param {Array|Object} collection The collection to sample. - * @returns {*} Returns the random element. - */ -function baseSample(collection) { - return arraySample(values(collection)); -} - -module.exports = baseSample; diff --git a/node_modules/lodash/_baseSampleSize.js b/node_modules/lodash/_baseSampleSize.js deleted file mode 100644 index 5c90ec5..0000000 --- a/node_modules/lodash/_baseSampleSize.js +++ /dev/null @@ -1,18 +0,0 @@ -var baseClamp = require('./_baseClamp'), - shuffleSelf = require('./_shuffleSelf'), - values = require('./values'); - -/** - * The base implementation of `_.sampleSize` without param guards. - * - * @private - * @param {Array|Object} collection The collection to sample. - * @param {number} n The number of elements to sample. - * @returns {Array} Returns the random elements. - */ -function baseSampleSize(collection, n) { - var array = values(collection); - return shuffleSelf(array, baseClamp(n, 0, array.length)); -} - -module.exports = baseSampleSize; diff --git a/node_modules/lodash/_baseSet.js b/node_modules/lodash/_baseSet.js deleted file mode 100644 index 99f4fbf..0000000 --- a/node_modules/lodash/_baseSet.js +++ /dev/null @@ -1,51 +0,0 @@ -var assignValue = require('./_assignValue'), - castPath = require('./_castPath'), - isIndex = require('./_isIndex'), - isObject = require('./isObject'), - toKey = require('./_toKey'); - -/** - * The base implementation of `_.set`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ -function baseSet(object, path, value, customizer) { - if (!isObject(object)) { - return object; - } - path = castPath(path, object); - - var index = -1, - length = path.length, - lastIndex = length - 1, - nested = object; - - while (nested != null && ++index < length) { - var key = toKey(path[index]), - newValue = value; - - if (key === '__proto__' || key === 'constructor' || key === 'prototype') { - return object; - } - - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined; - if (newValue === undefined) { - newValue = isObject(objValue) - ? objValue - : (isIndex(path[index + 1]) ? [] : {}); - } - } - assignValue(nested, key, newValue); - nested = nested[key]; - } - return object; -} - -module.exports = baseSet; diff --git a/node_modules/lodash/_baseSetData.js b/node_modules/lodash/_baseSetData.js deleted file mode 100644 index c409947..0000000 --- a/node_modules/lodash/_baseSetData.js +++ /dev/null @@ -1,17 +0,0 @@ -var identity = require('./identity'), - metaMap = require('./_metaMap'); - -/** - * The base implementation of `setData` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ -var baseSetData = !metaMap ? identity : function(func, data) { - metaMap.set(func, data); - return func; -}; - -module.exports = baseSetData; diff --git a/node_modules/lodash/_baseSetToString.js b/node_modules/lodash/_baseSetToString.js deleted file mode 100644 index 89eaca3..0000000 --- a/node_modules/lodash/_baseSetToString.js +++ /dev/null @@ -1,22 +0,0 @@ -var constant = require('./constant'), - defineProperty = require('./_defineProperty'), - identity = require('./identity'); - -/** - * The base implementation of `setToString` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ -var baseSetToString = !defineProperty ? identity : function(func, string) { - return defineProperty(func, 'toString', { - 'configurable': true, - 'enumerable': false, - 'value': constant(string), - 'writable': true - }); -}; - -module.exports = baseSetToString; diff --git a/node_modules/lodash/_baseShuffle.js b/node_modules/lodash/_baseShuffle.js deleted file mode 100644 index 023077a..0000000 --- a/node_modules/lodash/_baseShuffle.js +++ /dev/null @@ -1,15 +0,0 @@ -var shuffleSelf = require('./_shuffleSelf'), - values = require('./values'); - -/** - * The base implementation of `_.shuffle`. - * - * @private - * @param {Array|Object} collection The collection to shuffle. - * @returns {Array} Returns the new shuffled array. - */ -function baseShuffle(collection) { - return shuffleSelf(values(collection)); -} - -module.exports = baseShuffle; diff --git a/node_modules/lodash/_baseSlice.js b/node_modules/lodash/_baseSlice.js deleted file mode 100644 index 786f6c9..0000000 --- a/node_modules/lodash/_baseSlice.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * The base implementation of `_.slice` without an iteratee call guard. - * - * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ -function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; - } - return result; -} - -module.exports = baseSlice; diff --git a/node_modules/lodash/_baseSome.js b/node_modules/lodash/_baseSome.js deleted file mode 100644 index 58f3f44..0000000 --- a/node_modules/lodash/_baseSome.js +++ /dev/null @@ -1,22 +0,0 @@ -var baseEach = require('./_baseEach'); - -/** - * The base implementation of `_.some` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ -function baseSome(collection, predicate) { - var result; - - baseEach(collection, function(value, index, collection) { - result = predicate(value, index, collection); - return !result; - }); - return !!result; -} - -module.exports = baseSome; diff --git a/node_modules/lodash/_baseSortBy.js b/node_modules/lodash/_baseSortBy.js deleted file mode 100644 index a25c92e..0000000 --- a/node_modules/lodash/_baseSortBy.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * The base implementation of `_.sortBy` which uses `comparer` to define the - * sort order of `array` and replaces criteria objects with their corresponding - * values. - * - * @private - * @param {Array} array The array to sort. - * @param {Function} comparer The function to define sort order. - * @returns {Array} Returns `array`. - */ -function baseSortBy(array, comparer) { - var length = array.length; - - array.sort(comparer); - while (length--) { - array[length] = array[length].value; - } - return array; -} - -module.exports = baseSortBy; diff --git a/node_modules/lodash/_baseSortedIndex.js b/node_modules/lodash/_baseSortedIndex.js deleted file mode 100644 index 638c366..0000000 --- a/node_modules/lodash/_baseSortedIndex.js +++ /dev/null @@ -1,42 +0,0 @@ -var baseSortedIndexBy = require('./_baseSortedIndexBy'), - identity = require('./identity'), - isSymbol = require('./isSymbol'); - -/** Used as references for the maximum length and index of an array. */ -var MAX_ARRAY_LENGTH = 4294967295, - HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; - -/** - * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which - * performs a binary search of `array` to determine the index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ -function baseSortedIndex(array, value, retHighest) { - var low = 0, - high = array == null ? low : array.length; - - if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { - while (low < high) { - var mid = (low + high) >>> 1, - computed = array[mid]; - - if (computed !== null && !isSymbol(computed) && - (retHighest ? (computed <= value) : (computed < value))) { - low = mid + 1; - } else { - high = mid; - } - } - return high; - } - return baseSortedIndexBy(array, value, identity, retHighest); -} - -module.exports = baseSortedIndex; diff --git a/node_modules/lodash/_baseSortedIndexBy.js b/node_modules/lodash/_baseSortedIndexBy.js deleted file mode 100644 index c247b37..0000000 --- a/node_modules/lodash/_baseSortedIndexBy.js +++ /dev/null @@ -1,67 +0,0 @@ -var isSymbol = require('./isSymbol'); - -/** Used as references for the maximum length and index of an array. */ -var MAX_ARRAY_LENGTH = 4294967295, - MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeFloor = Math.floor, - nativeMin = Math.min; - -/** - * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` - * which invokes `iteratee` for `value` and each element of `array` to compute - * their sort ranking. The iteratee is invoked with one argument; (value). - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} iteratee The iteratee invoked per element. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ -function baseSortedIndexBy(array, value, iteratee, retHighest) { - var low = 0, - high = array == null ? 0 : array.length; - if (high === 0) { - return 0; - } - - value = iteratee(value); - var valIsNaN = value !== value, - valIsNull = value === null, - valIsSymbol = isSymbol(value), - valIsUndefined = value === undefined; - - while (low < high) { - var mid = nativeFloor((low + high) / 2), - computed = iteratee(array[mid]), - othIsDefined = computed !== undefined, - othIsNull = computed === null, - othIsReflexive = computed === computed, - othIsSymbol = isSymbol(computed); - - if (valIsNaN) { - var setLow = retHighest || othIsReflexive; - } else if (valIsUndefined) { - setLow = othIsReflexive && (retHighest || othIsDefined); - } else if (valIsNull) { - setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); - } else if (valIsSymbol) { - setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); - } else if (othIsNull || othIsSymbol) { - setLow = false; - } else { - setLow = retHighest ? (computed <= value) : (computed < value); - } - if (setLow) { - low = mid + 1; - } else { - high = mid; - } - } - return nativeMin(high, MAX_ARRAY_INDEX); -} - -module.exports = baseSortedIndexBy; diff --git a/node_modules/lodash/_baseSortedUniq.js b/node_modules/lodash/_baseSortedUniq.js deleted file mode 100644 index 802159a..0000000 --- a/node_modules/lodash/_baseSortedUniq.js +++ /dev/null @@ -1,30 +0,0 @@ -var eq = require('./eq'); - -/** - * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ -function baseSortedUniq(array, iteratee) { - var index = -1, - length = array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - if (!index || !eq(computed, seen)) { - var seen = computed; - result[resIndex++] = value === 0 ? 0 : value; - } - } - return result; -} - -module.exports = baseSortedUniq; diff --git a/node_modules/lodash/_baseSum.js b/node_modules/lodash/_baseSum.js deleted file mode 100644 index a9e84c1..0000000 --- a/node_modules/lodash/_baseSum.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * The base implementation of `_.sum` and `_.sumBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the sum. - */ -function baseSum(array, iteratee) { - var result, - index = -1, - length = array.length; - - while (++index < length) { - var current = iteratee(array[index]); - if (current !== undefined) { - result = result === undefined ? current : (result + current); - } - } - return result; -} - -module.exports = baseSum; diff --git a/node_modules/lodash/_baseTimes.js b/node_modules/lodash/_baseTimes.js deleted file mode 100644 index 0603fc3..0000000 --- a/node_modules/lodash/_baseTimes.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ -function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); - - while (++index < n) { - result[index] = iteratee(index); - } - return result; -} - -module.exports = baseTimes; diff --git a/node_modules/lodash/_baseToNumber.js b/node_modules/lodash/_baseToNumber.js deleted file mode 100644 index 04859f3..0000000 --- a/node_modules/lodash/_baseToNumber.js +++ /dev/null @@ -1,24 +0,0 @@ -var isSymbol = require('./isSymbol'); - -/** Used as references for various `Number` constants. */ -var NAN = 0 / 0; - -/** - * The base implementation of `_.toNumber` which doesn't ensure correct - * conversions of binary, hexadecimal, or octal string values. - * - * @private - * @param {*} value The value to process. - * @returns {number} Returns the number. - */ -function baseToNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - return +value; -} - -module.exports = baseToNumber; diff --git a/node_modules/lodash/_baseToPairs.js b/node_modules/lodash/_baseToPairs.js deleted file mode 100644 index bff1991..0000000 --- a/node_modules/lodash/_baseToPairs.js +++ /dev/null @@ -1,18 +0,0 @@ -var arrayMap = require('./_arrayMap'); - -/** - * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array - * of key-value pairs for `object` corresponding to the property names of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the key-value pairs. - */ -function baseToPairs(object, props) { - return arrayMap(props, function(key) { - return [key, object[key]]; - }); -} - -module.exports = baseToPairs; diff --git a/node_modules/lodash/_baseToString.js b/node_modules/lodash/_baseToString.js deleted file mode 100644 index ada6ad2..0000000 --- a/node_modules/lodash/_baseToString.js +++ /dev/null @@ -1,37 +0,0 @@ -var Symbol = require('./_Symbol'), - arrayMap = require('./_arrayMap'), - isArray = require('./isArray'), - isSymbol = require('./isSymbol'); - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - -/** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isArray(value)) { - // Recursively convert values (susceptible to call stack limits). - return arrayMap(value, baseToString) + ''; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -module.exports = baseToString; diff --git a/node_modules/lodash/_baseTrim.js b/node_modules/lodash/_baseTrim.js deleted file mode 100644 index 3e2797d..0000000 --- a/node_modules/lodash/_baseTrim.js +++ /dev/null @@ -1,19 +0,0 @@ -var trimmedEndIndex = require('./_trimmedEndIndex'); - -/** Used to match leading whitespace. */ -var reTrimStart = /^\s+/; - -/** - * The base implementation of `_.trim`. - * - * @private - * @param {string} string The string to trim. - * @returns {string} Returns the trimmed string. - */ -function baseTrim(string) { - return string - ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') - : string; -} - -module.exports = baseTrim; diff --git a/node_modules/lodash/_baseUnary.js b/node_modules/lodash/_baseUnary.js deleted file mode 100644 index 98639e9..0000000 --- a/node_modules/lodash/_baseUnary.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ -function baseUnary(func) { - return function(value) { - return func(value); - }; -} - -module.exports = baseUnary; diff --git a/node_modules/lodash/_baseUniq.js b/node_modules/lodash/_baseUniq.js deleted file mode 100644 index aea459d..0000000 --- a/node_modules/lodash/_baseUniq.js +++ /dev/null @@ -1,72 +0,0 @@ -var SetCache = require('./_SetCache'), - arrayIncludes = require('./_arrayIncludes'), - arrayIncludesWith = require('./_arrayIncludesWith'), - cacheHas = require('./_cacheHas'), - createSet = require('./_createSet'), - setToArray = require('./_setToArray'); - -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; - -/** - * The base implementation of `_.uniqBy` without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ -function baseUniq(array, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - length = array.length, - isCommon = true, - result = [], - seen = result; - - if (comparator) { - isCommon = false; - includes = arrayIncludesWith; - } - else if (length >= LARGE_ARRAY_SIZE) { - var set = iteratee ? null : createSet(array); - if (set) { - return setToArray(set); - } - isCommon = false; - includes = cacheHas; - seen = new SetCache; - } - else { - seen = iteratee ? [] : result; - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; - } - } - if (iteratee) { - seen.push(computed); - } - result.push(value); - } - else if (!includes(seen, computed, comparator)) { - if (seen !== result) { - seen.push(computed); - } - result.push(value); - } - } - return result; -} - -module.exports = baseUniq; diff --git a/node_modules/lodash/_baseUnset.js b/node_modules/lodash/_baseUnset.js deleted file mode 100644 index eefc6e3..0000000 --- a/node_modules/lodash/_baseUnset.js +++ /dev/null @@ -1,20 +0,0 @@ -var castPath = require('./_castPath'), - last = require('./last'), - parent = require('./_parent'), - toKey = require('./_toKey'); - -/** - * The base implementation of `_.unset`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The property path to unset. - * @returns {boolean} Returns `true` if the property is deleted, else `false`. - */ -function baseUnset(object, path) { - path = castPath(path, object); - object = parent(object, path); - return object == null || delete object[toKey(last(path))]; -} - -module.exports = baseUnset; diff --git a/node_modules/lodash/_baseUpdate.js b/node_modules/lodash/_baseUpdate.js deleted file mode 100644 index 92a6237..0000000 --- a/node_modules/lodash/_baseUpdate.js +++ /dev/null @@ -1,18 +0,0 @@ -var baseGet = require('./_baseGet'), - baseSet = require('./_baseSet'); - -/** - * The base implementation of `_.update`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to update. - * @param {Function} updater The function to produce the updated value. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ -function baseUpdate(object, path, updater, customizer) { - return baseSet(object, path, updater(baseGet(object, path)), customizer); -} - -module.exports = baseUpdate; diff --git a/node_modules/lodash/_baseValues.js b/node_modules/lodash/_baseValues.js deleted file mode 100644 index b95faad..0000000 --- a/node_modules/lodash/_baseValues.js +++ /dev/null @@ -1,19 +0,0 @@ -var arrayMap = require('./_arrayMap'); - -/** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. - */ -function baseValues(object, props) { - return arrayMap(props, function(key) { - return object[key]; - }); -} - -module.exports = baseValues; diff --git a/node_modules/lodash/_baseWhile.js b/node_modules/lodash/_baseWhile.js deleted file mode 100644 index 07eac61..0000000 --- a/node_modules/lodash/_baseWhile.js +++ /dev/null @@ -1,26 +0,0 @@ -var baseSlice = require('./_baseSlice'); - -/** - * The base implementation of methods like `_.dropWhile` and `_.takeWhile` - * without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to query. - * @param {Function} predicate The function invoked per iteration. - * @param {boolean} [isDrop] Specify dropping elements instead of taking them. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the slice of `array`. - */ -function baseWhile(array, predicate, isDrop, fromRight) { - var length = array.length, - index = fromRight ? length : -1; - - while ((fromRight ? index-- : ++index < length) && - predicate(array[index], index, array)) {} - - return isDrop - ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) - : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); -} - -module.exports = baseWhile; diff --git a/node_modules/lodash/_baseWrapperValue.js b/node_modules/lodash/_baseWrapperValue.js deleted file mode 100644 index 443e0df..0000000 --- a/node_modules/lodash/_baseWrapperValue.js +++ /dev/null @@ -1,25 +0,0 @@ -var LazyWrapper = require('./_LazyWrapper'), - arrayPush = require('./_arrayPush'), - arrayReduce = require('./_arrayReduce'); - -/** - * The base implementation of `wrapperValue` which returns the result of - * performing a sequence of actions on the unwrapped `value`, where each - * successive action is supplied the return value of the previous. - * - * @private - * @param {*} value The unwrapped value. - * @param {Array} actions Actions to perform to resolve the unwrapped value. - * @returns {*} Returns the resolved value. - */ -function baseWrapperValue(value, actions) { - var result = value; - if (result instanceof LazyWrapper) { - result = result.value(); - } - return arrayReduce(actions, function(result, action) { - return action.func.apply(action.thisArg, arrayPush([result], action.args)); - }, result); -} - -module.exports = baseWrapperValue; diff --git a/node_modules/lodash/_baseXor.js b/node_modules/lodash/_baseXor.js deleted file mode 100644 index 8e69338..0000000 --- a/node_modules/lodash/_baseXor.js +++ /dev/null @@ -1,36 +0,0 @@ -var baseDifference = require('./_baseDifference'), - baseFlatten = require('./_baseFlatten'), - baseUniq = require('./_baseUniq'); - -/** - * The base implementation of methods like `_.xor`, without support for - * iteratee shorthands, that accepts an array of arrays to inspect. - * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of values. - */ -function baseXor(arrays, iteratee, comparator) { - var length = arrays.length; - if (length < 2) { - return length ? baseUniq(arrays[0]) : []; - } - var index = -1, - result = Array(length); - - while (++index < length) { - var array = arrays[index], - othIndex = -1; - - while (++othIndex < length) { - if (othIndex != index) { - result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); - } - } - } - return baseUniq(baseFlatten(result, 1), iteratee, comparator); -} - -module.exports = baseXor; diff --git a/node_modules/lodash/_baseZipObject.js b/node_modules/lodash/_baseZipObject.js deleted file mode 100644 index 401f85b..0000000 --- a/node_modules/lodash/_baseZipObject.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * This base implementation of `_.zipObject` which assigns values using `assignFunc`. - * - * @private - * @param {Array} props The property identifiers. - * @param {Array} values The property values. - * @param {Function} assignFunc The function to assign values. - * @returns {Object} Returns the new object. - */ -function baseZipObject(props, values, assignFunc) { - var index = -1, - length = props.length, - valsLength = values.length, - result = {}; - - while (++index < length) { - var value = index < valsLength ? values[index] : undefined; - assignFunc(result, props[index], value); - } - return result; -} - -module.exports = baseZipObject; diff --git a/node_modules/lodash/_cacheHas.js b/node_modules/lodash/_cacheHas.js deleted file mode 100644 index 2dec892..0000000 --- a/node_modules/lodash/_cacheHas.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Checks if a `cache` value for `key` exists. - * - * @private - * @param {Object} cache The cache to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function cacheHas(cache, key) { - return cache.has(key); -} - -module.exports = cacheHas; diff --git a/node_modules/lodash/_castArrayLikeObject.js b/node_modules/lodash/_castArrayLikeObject.js deleted file mode 100644 index 92c75fa..0000000 --- a/node_modules/lodash/_castArrayLikeObject.js +++ /dev/null @@ -1,14 +0,0 @@ -var isArrayLikeObject = require('./isArrayLikeObject'); - -/** - * Casts `value` to an empty array if it's not an array like object. - * - * @private - * @param {*} value The value to inspect. - * @returns {Array|Object} Returns the cast array-like object. - */ -function castArrayLikeObject(value) { - return isArrayLikeObject(value) ? value : []; -} - -module.exports = castArrayLikeObject; diff --git a/node_modules/lodash/_castFunction.js b/node_modules/lodash/_castFunction.js deleted file mode 100644 index 98c91ae..0000000 --- a/node_modules/lodash/_castFunction.js +++ /dev/null @@ -1,14 +0,0 @@ -var identity = require('./identity'); - -/** - * Casts `value` to `identity` if it's not a function. - * - * @private - * @param {*} value The value to inspect. - * @returns {Function} Returns cast function. - */ -function castFunction(value) { - return typeof value == 'function' ? value : identity; -} - -module.exports = castFunction; diff --git a/node_modules/lodash/_castPath.js b/node_modules/lodash/_castPath.js deleted file mode 100644 index 017e4c1..0000000 --- a/node_modules/lodash/_castPath.js +++ /dev/null @@ -1,21 +0,0 @@ -var isArray = require('./isArray'), - isKey = require('./_isKey'), - stringToPath = require('./_stringToPath'), - toString = require('./toString'); - -/** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @param {Object} [object] The object to query keys on. - * @returns {Array} Returns the cast property path array. - */ -function castPath(value, object) { - if (isArray(value)) { - return value; - } - return isKey(value, object) ? [value] : stringToPath(toString(value)); -} - -module.exports = castPath; diff --git a/node_modules/lodash/_castRest.js b/node_modules/lodash/_castRest.js deleted file mode 100644 index 213c66f..0000000 --- a/node_modules/lodash/_castRest.js +++ /dev/null @@ -1,14 +0,0 @@ -var baseRest = require('./_baseRest'); - -/** - * A `baseRest` alias which can be replaced with `identity` by module - * replacement plugins. - * - * @private - * @type {Function} - * @param {Function} func The function to apply a rest parameter to. - * @returns {Function} Returns the new function. - */ -var castRest = baseRest; - -module.exports = castRest; diff --git a/node_modules/lodash/_castSlice.js b/node_modules/lodash/_castSlice.js deleted file mode 100644 index 071faeb..0000000 --- a/node_modules/lodash/_castSlice.js +++ /dev/null @@ -1,18 +0,0 @@ -var baseSlice = require('./_baseSlice'); - -/** - * Casts `array` to a slice if it's needed. - * - * @private - * @param {Array} array The array to inspect. - * @param {number} start The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the cast slice. - */ -function castSlice(array, start, end) { - var length = array.length; - end = end === undefined ? length : end; - return (!start && end >= length) ? array : baseSlice(array, start, end); -} - -module.exports = castSlice; diff --git a/node_modules/lodash/_charsEndIndex.js b/node_modules/lodash/_charsEndIndex.js deleted file mode 100644 index 07908ff..0000000 --- a/node_modules/lodash/_charsEndIndex.js +++ /dev/null @@ -1,19 +0,0 @@ -var baseIndexOf = require('./_baseIndexOf'); - -/** - * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the last unmatched string symbol. - */ -function charsEndIndex(strSymbols, chrSymbols) { - var index = strSymbols.length; - - while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; -} - -module.exports = charsEndIndex; diff --git a/node_modules/lodash/_charsStartIndex.js b/node_modules/lodash/_charsStartIndex.js deleted file mode 100644 index b17afd2..0000000 --- a/node_modules/lodash/_charsStartIndex.js +++ /dev/null @@ -1,20 +0,0 @@ -var baseIndexOf = require('./_baseIndexOf'); - -/** - * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the first unmatched string symbol. - */ -function charsStartIndex(strSymbols, chrSymbols) { - var index = -1, - length = strSymbols.length; - - while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; -} - -module.exports = charsStartIndex; diff --git a/node_modules/lodash/_cloneArrayBuffer.js b/node_modules/lodash/_cloneArrayBuffer.js deleted file mode 100644 index c3d8f6e..0000000 --- a/node_modules/lodash/_cloneArrayBuffer.js +++ /dev/null @@ -1,16 +0,0 @@ -var Uint8Array = require('./_Uint8Array'); - -/** - * Creates a clone of `arrayBuffer`. - * - * @private - * @param {ArrayBuffer} arrayBuffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. - */ -function cloneArrayBuffer(arrayBuffer) { - var result = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array(result).set(new Uint8Array(arrayBuffer)); - return result; -} - -module.exports = cloneArrayBuffer; diff --git a/node_modules/lodash/_cloneBuffer.js b/node_modules/lodash/_cloneBuffer.js deleted file mode 100644 index 27c4810..0000000 --- a/node_modules/lodash/_cloneBuffer.js +++ /dev/null @@ -1,35 +0,0 @@ -var root = require('./_root'); - -/** Detect free variable `exports`. */ -var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - -/** Detect free variable `module`. */ -var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; - -/** Built-in value references. */ -var Buffer = moduleExports ? root.Buffer : undefined, - allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined; - -/** - * Creates a clone of `buffer`. - * - * @private - * @param {Buffer} buffer The buffer to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Buffer} Returns the cloned buffer. - */ -function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var length = buffer.length, - result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); - - buffer.copy(result); - return result; -} - -module.exports = cloneBuffer; diff --git a/node_modules/lodash/_cloneDataView.js b/node_modules/lodash/_cloneDataView.js deleted file mode 100644 index 9c9b7b0..0000000 --- a/node_modules/lodash/_cloneDataView.js +++ /dev/null @@ -1,16 +0,0 @@ -var cloneArrayBuffer = require('./_cloneArrayBuffer'); - -/** - * Creates a clone of `dataView`. - * - * @private - * @param {Object} dataView The data view to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned data view. - */ -function cloneDataView(dataView, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; - return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); -} - -module.exports = cloneDataView; diff --git a/node_modules/lodash/_cloneRegExp.js b/node_modules/lodash/_cloneRegExp.js deleted file mode 100644 index 64a30df..0000000 --- a/node_modules/lodash/_cloneRegExp.js +++ /dev/null @@ -1,17 +0,0 @@ -/** Used to match `RegExp` flags from their coerced string values. */ -var reFlags = /\w*$/; - -/** - * Creates a clone of `regexp`. - * - * @private - * @param {Object} regexp The regexp to clone. - * @returns {Object} Returns the cloned regexp. - */ -function cloneRegExp(regexp) { - var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); - result.lastIndex = regexp.lastIndex; - return result; -} - -module.exports = cloneRegExp; diff --git a/node_modules/lodash/_cloneSymbol.js b/node_modules/lodash/_cloneSymbol.js deleted file mode 100644 index bede39f..0000000 --- a/node_modules/lodash/_cloneSymbol.js +++ /dev/null @@ -1,18 +0,0 @@ -var Symbol = require('./_Symbol'); - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; - -/** - * Creates a clone of the `symbol` object. - * - * @private - * @param {Object} symbol The symbol object to clone. - * @returns {Object} Returns the cloned symbol object. - */ -function cloneSymbol(symbol) { - return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; -} - -module.exports = cloneSymbol; diff --git a/node_modules/lodash/_cloneTypedArray.js b/node_modules/lodash/_cloneTypedArray.js deleted file mode 100644 index 7aad84d..0000000 --- a/node_modules/lodash/_cloneTypedArray.js +++ /dev/null @@ -1,16 +0,0 @@ -var cloneArrayBuffer = require('./_cloneArrayBuffer'); - -/** - * Creates a clone of `typedArray`. - * - * @private - * @param {Object} typedArray The typed array to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned typed array. - */ -function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); -} - -module.exports = cloneTypedArray; diff --git a/node_modules/lodash/_compareAscending.js b/node_modules/lodash/_compareAscending.js deleted file mode 100644 index 8dc2791..0000000 --- a/node_modules/lodash/_compareAscending.js +++ /dev/null @@ -1,41 +0,0 @@ -var isSymbol = require('./isSymbol'); - -/** - * Compares values to sort them in ascending order. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {number} Returns the sort order indicator for `value`. - */ -function compareAscending(value, other) { - if (value !== other) { - var valIsDefined = value !== undefined, - valIsNull = value === null, - valIsReflexive = value === value, - valIsSymbol = isSymbol(value); - - var othIsDefined = other !== undefined, - othIsNull = other === null, - othIsReflexive = other === other, - othIsSymbol = isSymbol(other); - - if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || - (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || - (valIsNull && othIsDefined && othIsReflexive) || - (!valIsDefined && othIsReflexive) || - !valIsReflexive) { - return 1; - } - if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || - (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || - (othIsNull && valIsDefined && valIsReflexive) || - (!othIsDefined && valIsReflexive) || - !othIsReflexive) { - return -1; - } - } - return 0; -} - -module.exports = compareAscending; diff --git a/node_modules/lodash/_compareMultiple.js b/node_modules/lodash/_compareMultiple.js deleted file mode 100644 index ad61f0f..0000000 --- a/node_modules/lodash/_compareMultiple.js +++ /dev/null @@ -1,44 +0,0 @@ -var compareAscending = require('./_compareAscending'); - -/** - * Used by `_.orderBy` to compare multiple properties of a value to another - * and stable sort them. - * - * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, - * specify an order of "desc" for descending or "asc" for ascending sort order - * of corresponding values. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {boolean[]|string[]} orders The order to sort by for each property. - * @returns {number} Returns the sort order indicator for `object`. - */ -function compareMultiple(object, other, orders) { - var index = -1, - objCriteria = object.criteria, - othCriteria = other.criteria, - length = objCriteria.length, - ordersLength = orders.length; - - while (++index < length) { - var result = compareAscending(objCriteria[index], othCriteria[index]); - if (result) { - if (index >= ordersLength) { - return result; - } - var order = orders[index]; - return result * (order == 'desc' ? -1 : 1); - } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to provide the same value for - // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 - // for more details. - // - // This also ensures a stable sort in V8 and other engines. - // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. - return object.index - other.index; -} - -module.exports = compareMultiple; diff --git a/node_modules/lodash/_composeArgs.js b/node_modules/lodash/_composeArgs.js deleted file mode 100644 index 1ce40f4..0000000 --- a/node_modules/lodash/_composeArgs.js +++ /dev/null @@ -1,39 +0,0 @@ -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * Creates an array that is the composition of partially applied arguments, - * placeholders, and provided arguments into a single array of arguments. - * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to prepend to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. - */ -function composeArgs(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersLength = holders.length, - leftIndex = -1, - leftLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(leftLength + rangeLength), - isUncurried = !isCurried; - - while (++leftIndex < leftLength) { - result[leftIndex] = partials[leftIndex]; - } - while (++argsIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[holders[argsIndex]] = args[argsIndex]; - } - } - while (rangeLength--) { - result[leftIndex++] = args[argsIndex++]; - } - return result; -} - -module.exports = composeArgs; diff --git a/node_modules/lodash/_composeArgsRight.js b/node_modules/lodash/_composeArgsRight.js deleted file mode 100644 index 8dc588d..0000000 --- a/node_modules/lodash/_composeArgsRight.js +++ /dev/null @@ -1,41 +0,0 @@ -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * This function is like `composeArgs` except that the arguments composition - * is tailored for `_.partialRight`. - * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to append to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. - */ -function composeArgsRight(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersIndex = -1, - holdersLength = holders.length, - rightIndex = -1, - rightLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(rangeLength + rightLength), - isUncurried = !isCurried; - - while (++argsIndex < rangeLength) { - result[argsIndex] = args[argsIndex]; - } - var offset = argsIndex; - while (++rightIndex < rightLength) { - result[offset + rightIndex] = partials[rightIndex]; - } - while (++holdersIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[offset + holders[holdersIndex]] = args[argsIndex++]; - } - } - return result; -} - -module.exports = composeArgsRight; diff --git a/node_modules/lodash/_copyArray.js b/node_modules/lodash/_copyArray.js deleted file mode 100644 index cd94d5d..0000000 --- a/node_modules/lodash/_copyArray.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ -function copyArray(source, array) { - var index = -1, - length = source.length; - - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; -} - -module.exports = copyArray; diff --git a/node_modules/lodash/_copyObject.js b/node_modules/lodash/_copyObject.js deleted file mode 100644 index 2f2a5c2..0000000 --- a/node_modules/lodash/_copyObject.js +++ /dev/null @@ -1,40 +0,0 @@ -var assignValue = require('./_assignValue'), - baseAssignValue = require('./_baseAssignValue'); - -/** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. - */ -function copyObject(source, props, object, customizer) { - var isNew = !object; - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined; - - if (newValue === undefined) { - newValue = source[key]; - } - if (isNew) { - baseAssignValue(object, key, newValue); - } else { - assignValue(object, key, newValue); - } - } - return object; -} - -module.exports = copyObject; diff --git a/node_modules/lodash/_copySymbols.js b/node_modules/lodash/_copySymbols.js deleted file mode 100644 index c35944a..0000000 --- a/node_modules/lodash/_copySymbols.js +++ /dev/null @@ -1,16 +0,0 @@ -var copyObject = require('./_copyObject'), - getSymbols = require('./_getSymbols'); - -/** - * Copies own symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ -function copySymbols(source, object) { - return copyObject(source, getSymbols(source), object); -} - -module.exports = copySymbols; diff --git a/node_modules/lodash/_copySymbolsIn.js b/node_modules/lodash/_copySymbolsIn.js deleted file mode 100644 index fdf20a7..0000000 --- a/node_modules/lodash/_copySymbolsIn.js +++ /dev/null @@ -1,16 +0,0 @@ -var copyObject = require('./_copyObject'), - getSymbolsIn = require('./_getSymbolsIn'); - -/** - * Copies own and inherited symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ -function copySymbolsIn(source, object) { - return copyObject(source, getSymbolsIn(source), object); -} - -module.exports = copySymbolsIn; diff --git a/node_modules/lodash/_coreJsData.js b/node_modules/lodash/_coreJsData.js deleted file mode 100644 index f8e5b4e..0000000 --- a/node_modules/lodash/_coreJsData.js +++ /dev/null @@ -1,6 +0,0 @@ -var root = require('./_root'); - -/** Used to detect overreaching core-js shims. */ -var coreJsData = root['__core-js_shared__']; - -module.exports = coreJsData; diff --git a/node_modules/lodash/_countHolders.js b/node_modules/lodash/_countHolders.js deleted file mode 100644 index 718fcda..0000000 --- a/node_modules/lodash/_countHolders.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Gets the number of `placeholder` occurrences in `array`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} placeholder The placeholder to search for. - * @returns {number} Returns the placeholder count. - */ -function countHolders(array, placeholder) { - var length = array.length, - result = 0; - - while (length--) { - if (array[length] === placeholder) { - ++result; - } - } - return result; -} - -module.exports = countHolders; diff --git a/node_modules/lodash/_createAggregator.js b/node_modules/lodash/_createAggregator.js deleted file mode 100644 index 0be42c4..0000000 --- a/node_modules/lodash/_createAggregator.js +++ /dev/null @@ -1,23 +0,0 @@ -var arrayAggregator = require('./_arrayAggregator'), - baseAggregator = require('./_baseAggregator'), - baseIteratee = require('./_baseIteratee'), - isArray = require('./isArray'); - -/** - * Creates a function like `_.groupBy`. - * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} [initializer] The accumulator object initializer. - * @returns {Function} Returns the new aggregator function. - */ -function createAggregator(setter, initializer) { - return function(collection, iteratee) { - var func = isArray(collection) ? arrayAggregator : baseAggregator, - accumulator = initializer ? initializer() : {}; - - return func(collection, setter, baseIteratee(iteratee, 2), accumulator); - }; -} - -module.exports = createAggregator; diff --git a/node_modules/lodash/_createAssigner.js b/node_modules/lodash/_createAssigner.js deleted file mode 100644 index 1f904c5..0000000 --- a/node_modules/lodash/_createAssigner.js +++ /dev/null @@ -1,37 +0,0 @@ -var baseRest = require('./_baseRest'), - isIterateeCall = require('./_isIterateeCall'); - -/** - * Creates a function like `_.assign`. - * - * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. - */ -function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index = -1, - length = sources.length, - customizer = length > 1 ? sources[length - 1] : undefined, - guard = length > 2 ? sources[2] : undefined; - - customizer = (assigner.length > 3 && typeof customizer == 'function') - ? (length--, customizer) - : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? undefined : customizer; - length = 1; - } - object = Object(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); -} - -module.exports = createAssigner; diff --git a/node_modules/lodash/_createBaseEach.js b/node_modules/lodash/_createBaseEach.js deleted file mode 100644 index d24fdd1..0000000 --- a/node_modules/lodash/_createBaseEach.js +++ /dev/null @@ -1,32 +0,0 @@ -var isArrayLike = require('./isArrayLike'); - -/** - * Creates a `baseEach` or `baseEachRight` function. - * - * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ -function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee) { - if (collection == null) { - return collection; - } - if (!isArrayLike(collection)) { - return eachFunc(collection, iteratee); - } - var length = collection.length, - index = fromRight ? length : -1, - iterable = Object(collection); - - while ((fromRight ? index-- : ++index < length)) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; -} - -module.exports = createBaseEach; diff --git a/node_modules/lodash/_createBaseFor.js b/node_modules/lodash/_createBaseFor.js deleted file mode 100644 index 94cbf29..0000000 --- a/node_modules/lodash/_createBaseFor.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ -function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; -} - -module.exports = createBaseFor; diff --git a/node_modules/lodash/_createBind.js b/node_modules/lodash/_createBind.js deleted file mode 100644 index 07cb99f..0000000 --- a/node_modules/lodash/_createBind.js +++ /dev/null @@ -1,28 +0,0 @@ -var createCtor = require('./_createCtor'), - root = require('./_root'); - -/** Used to compose bitmasks for function metadata. */ -var WRAP_BIND_FLAG = 1; - -/** - * Creates a function that wraps `func` to invoke it with the optional `this` - * binding of `thisArg`. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @returns {Function} Returns the new wrapped function. - */ -function createBind(func, bitmask, thisArg) { - var isBind = bitmask & WRAP_BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return fn.apply(isBind ? thisArg : this, arguments); - } - return wrapper; -} - -module.exports = createBind; diff --git a/node_modules/lodash/_createCaseFirst.js b/node_modules/lodash/_createCaseFirst.js deleted file mode 100644 index fe8ea48..0000000 --- a/node_modules/lodash/_createCaseFirst.js +++ /dev/null @@ -1,33 +0,0 @@ -var castSlice = require('./_castSlice'), - hasUnicode = require('./_hasUnicode'), - stringToArray = require('./_stringToArray'), - toString = require('./toString'); - -/** - * Creates a function like `_.lowerFirst`. - * - * @private - * @param {string} methodName The name of the `String` case method to use. - * @returns {Function} Returns the new case function. - */ -function createCaseFirst(methodName) { - return function(string) { - string = toString(string); - - var strSymbols = hasUnicode(string) - ? stringToArray(string) - : undefined; - - var chr = strSymbols - ? strSymbols[0] - : string.charAt(0); - - var trailing = strSymbols - ? castSlice(strSymbols, 1).join('') - : string.slice(1); - - return chr[methodName]() + trailing; - }; -} - -module.exports = createCaseFirst; diff --git a/node_modules/lodash/_createCompounder.js b/node_modules/lodash/_createCompounder.js deleted file mode 100644 index 8d4cee2..0000000 --- a/node_modules/lodash/_createCompounder.js +++ /dev/null @@ -1,24 +0,0 @@ -var arrayReduce = require('./_arrayReduce'), - deburr = require('./deburr'), - words = require('./words'); - -/** Used to compose unicode capture groups. */ -var rsApos = "['\u2019]"; - -/** Used to match apostrophes. */ -var reApos = RegExp(rsApos, 'g'); - -/** - * Creates a function like `_.camelCase`. - * - * @private - * @param {Function} callback The function to combine each word. - * @returns {Function} Returns the new compounder function. - */ -function createCompounder(callback) { - return function(string) { - return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); - }; -} - -module.exports = createCompounder; diff --git a/node_modules/lodash/_createCtor.js b/node_modules/lodash/_createCtor.js deleted file mode 100644 index 9047aa5..0000000 --- a/node_modules/lodash/_createCtor.js +++ /dev/null @@ -1,37 +0,0 @@ -var baseCreate = require('./_baseCreate'), - isObject = require('./isObject'); - -/** - * Creates a function that produces an instance of `Ctor` regardless of - * whether it was invoked as part of a `new` expression or by `call` or `apply`. - * - * @private - * @param {Function} Ctor The constructor to wrap. - * @returns {Function} Returns the new wrapped function. - */ -function createCtor(Ctor) { - return function() { - // Use a `switch` statement to work with class constructors. See - // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist - // for more details. - var args = arguments; - switch (args.length) { - case 0: return new Ctor; - case 1: return new Ctor(args[0]); - case 2: return new Ctor(args[0], args[1]); - case 3: return new Ctor(args[0], args[1], args[2]); - case 4: return new Ctor(args[0], args[1], args[2], args[3]); - case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); - case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); - case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); - } - var thisBinding = baseCreate(Ctor.prototype), - result = Ctor.apply(thisBinding, args); - - // Mimic the constructor's `return` behavior. - // See https://es5.github.io/#x13.2.2 for more details. - return isObject(result) ? result : thisBinding; - }; -} - -module.exports = createCtor; diff --git a/node_modules/lodash/_createCurry.js b/node_modules/lodash/_createCurry.js deleted file mode 100644 index f06c2cd..0000000 --- a/node_modules/lodash/_createCurry.js +++ /dev/null @@ -1,46 +0,0 @@ -var apply = require('./_apply'), - createCtor = require('./_createCtor'), - createHybrid = require('./_createHybrid'), - createRecurry = require('./_createRecurry'), - getHolder = require('./_getHolder'), - replaceHolders = require('./_replaceHolders'), - root = require('./_root'); - -/** - * Creates a function that wraps `func` to enable currying. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {number} arity The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ -function createCurry(func, bitmask, arity) { - var Ctor = createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length, - placeholder = getHolder(wrapper); - - while (index--) { - args[index] = arguments[index]; - } - var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) - ? [] - : replaceHolders(args, placeholder); - - length -= holders.length; - if (length < arity) { - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, undefined, - args, holders, undefined, undefined, arity - length); - } - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return apply(fn, this, args); - } - return wrapper; -} - -module.exports = createCurry; diff --git a/node_modules/lodash/_createFind.js b/node_modules/lodash/_createFind.js deleted file mode 100644 index 8859ff8..0000000 --- a/node_modules/lodash/_createFind.js +++ /dev/null @@ -1,25 +0,0 @@ -var baseIteratee = require('./_baseIteratee'), - isArrayLike = require('./isArrayLike'), - keys = require('./keys'); - -/** - * Creates a `_.find` or `_.findLast` function. - * - * @private - * @param {Function} findIndexFunc The function to find the collection index. - * @returns {Function} Returns the new find function. - */ -function createFind(findIndexFunc) { - return function(collection, predicate, fromIndex) { - var iterable = Object(collection); - if (!isArrayLike(collection)) { - var iteratee = baseIteratee(predicate, 3); - collection = keys(collection); - predicate = function(key) { return iteratee(iterable[key], key, iterable); }; - } - var index = findIndexFunc(collection, predicate, fromIndex); - return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; - }; -} - -module.exports = createFind; diff --git a/node_modules/lodash/_createFlow.js b/node_modules/lodash/_createFlow.js deleted file mode 100644 index baaddbf..0000000 --- a/node_modules/lodash/_createFlow.js +++ /dev/null @@ -1,78 +0,0 @@ -var LodashWrapper = require('./_LodashWrapper'), - flatRest = require('./_flatRest'), - getData = require('./_getData'), - getFuncName = require('./_getFuncName'), - isArray = require('./isArray'), - isLaziable = require('./_isLaziable'); - -/** Error message constants. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** Used to compose bitmasks for function metadata. */ -var WRAP_CURRY_FLAG = 8, - WRAP_PARTIAL_FLAG = 32, - WRAP_ARY_FLAG = 128, - WRAP_REARG_FLAG = 256; - -/** - * Creates a `_.flow` or `_.flowRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new flow function. - */ -function createFlow(fromRight) { - return flatRest(function(funcs) { - var length = funcs.length, - index = length, - prereq = LodashWrapper.prototype.thru; - - if (fromRight) { - funcs.reverse(); - } - while (index--) { - var func = funcs[index]; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (prereq && !wrapper && getFuncName(func) == 'wrapper') { - var wrapper = new LodashWrapper([], true); - } - } - index = wrapper ? index : length; - while (++index < length) { - func = funcs[index]; - - var funcName = getFuncName(func), - data = funcName == 'wrapper' ? getData(func) : undefined; - - if (data && isLaziable(data[0]) && - data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && - !data[4].length && data[9] == 1 - ) { - wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); - } else { - wrapper = (func.length == 1 && isLaziable(func)) - ? wrapper[funcName]() - : wrapper.thru(func); - } - } - return function() { - var args = arguments, - value = args[0]; - - if (wrapper && args.length == 1 && isArray(value)) { - return wrapper.plant(value).value(); - } - var index = 0, - result = length ? funcs[index].apply(this, args) : value; - - while (++index < length) { - result = funcs[index].call(this, result); - } - return result; - }; - }); -} - -module.exports = createFlow; diff --git a/node_modules/lodash/_createHybrid.js b/node_modules/lodash/_createHybrid.js deleted file mode 100644 index b671bd1..0000000 --- a/node_modules/lodash/_createHybrid.js +++ /dev/null @@ -1,92 +0,0 @@ -var composeArgs = require('./_composeArgs'), - composeArgsRight = require('./_composeArgsRight'), - countHolders = require('./_countHolders'), - createCtor = require('./_createCtor'), - createRecurry = require('./_createRecurry'), - getHolder = require('./_getHolder'), - reorder = require('./_reorder'), - replaceHolders = require('./_replaceHolders'), - root = require('./_root'); - -/** Used to compose bitmasks for function metadata. */ -var WRAP_BIND_FLAG = 1, - WRAP_BIND_KEY_FLAG = 2, - WRAP_CURRY_FLAG = 8, - WRAP_CURRY_RIGHT_FLAG = 16, - WRAP_ARY_FLAG = 128, - WRAP_FLIP_FLAG = 512; - -/** - * Creates a function that wraps `func` to invoke it with optional `this` - * binding of `thisArg`, partial application, and currying. - * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [partialsRight] The arguments to append to those provided - * to the new function. - * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ -function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { - var isAry = bitmask & WRAP_ARY_FLAG, - isBind = bitmask & WRAP_BIND_FLAG, - isBindKey = bitmask & WRAP_BIND_KEY_FLAG, - isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), - isFlip = bitmask & WRAP_FLIP_FLAG, - Ctor = isBindKey ? undefined : createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length; - - while (index--) { - args[index] = arguments[index]; - } - if (isCurried) { - var placeholder = getHolder(wrapper), - holdersCount = countHolders(args, placeholder); - } - if (partials) { - args = composeArgs(args, partials, holders, isCurried); - } - if (partialsRight) { - args = composeArgsRight(args, partialsRight, holdersRight, isCurried); - } - length -= holdersCount; - if (isCurried && length < arity) { - var newHolders = replaceHolders(args, placeholder); - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, thisArg, - args, newHolders, argPos, ary, arity - length - ); - } - var thisBinding = isBind ? thisArg : this, - fn = isBindKey ? thisBinding[func] : func; - - length = args.length; - if (argPos) { - args = reorder(args, argPos); - } else if (isFlip && length > 1) { - args.reverse(); - } - if (isAry && ary < length) { - args.length = ary; - } - if (this && this !== root && this instanceof wrapper) { - fn = Ctor || createCtor(fn); - } - return fn.apply(thisBinding, args); - } - return wrapper; -} - -module.exports = createHybrid; diff --git a/node_modules/lodash/_createInverter.js b/node_modules/lodash/_createInverter.js deleted file mode 100644 index 6c0c562..0000000 --- a/node_modules/lodash/_createInverter.js +++ /dev/null @@ -1,17 +0,0 @@ -var baseInverter = require('./_baseInverter'); - -/** - * Creates a function like `_.invertBy`. - * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} toIteratee The function to resolve iteratees. - * @returns {Function} Returns the new inverter function. - */ -function createInverter(setter, toIteratee) { - return function(object, iteratee) { - return baseInverter(object, setter, toIteratee(iteratee), {}); - }; -} - -module.exports = createInverter; diff --git a/node_modules/lodash/_createMathOperation.js b/node_modules/lodash/_createMathOperation.js deleted file mode 100644 index f1e238a..0000000 --- a/node_modules/lodash/_createMathOperation.js +++ /dev/null @@ -1,38 +0,0 @@ -var baseToNumber = require('./_baseToNumber'), - baseToString = require('./_baseToString'); - -/** - * Creates a function that performs a mathematical operation on two values. - * - * @private - * @param {Function} operator The function to perform the operation. - * @param {number} [defaultValue] The value used for `undefined` arguments. - * @returns {Function} Returns the new mathematical operation function. - */ -function createMathOperation(operator, defaultValue) { - return function(value, other) { - var result; - if (value === undefined && other === undefined) { - return defaultValue; - } - if (value !== undefined) { - result = value; - } - if (other !== undefined) { - if (result === undefined) { - return other; - } - if (typeof value == 'string' || typeof other == 'string') { - value = baseToString(value); - other = baseToString(other); - } else { - value = baseToNumber(value); - other = baseToNumber(other); - } - result = operator(value, other); - } - return result; - }; -} - -module.exports = createMathOperation; diff --git a/node_modules/lodash/_createOver.js b/node_modules/lodash/_createOver.js deleted file mode 100644 index 3b94551..0000000 --- a/node_modules/lodash/_createOver.js +++ /dev/null @@ -1,27 +0,0 @@ -var apply = require('./_apply'), - arrayMap = require('./_arrayMap'), - baseIteratee = require('./_baseIteratee'), - baseRest = require('./_baseRest'), - baseUnary = require('./_baseUnary'), - flatRest = require('./_flatRest'); - -/** - * Creates a function like `_.over`. - * - * @private - * @param {Function} arrayFunc The function to iterate over iteratees. - * @returns {Function} Returns the new over function. - */ -function createOver(arrayFunc) { - return flatRest(function(iteratees) { - iteratees = arrayMap(iteratees, baseUnary(baseIteratee)); - return baseRest(function(args) { - var thisArg = this; - return arrayFunc(iteratees, function(iteratee) { - return apply(iteratee, thisArg, args); - }); - }); - }); -} - -module.exports = createOver; diff --git a/node_modules/lodash/_createPadding.js b/node_modules/lodash/_createPadding.js deleted file mode 100644 index 2124612..0000000 --- a/node_modules/lodash/_createPadding.js +++ /dev/null @@ -1,33 +0,0 @@ -var baseRepeat = require('./_baseRepeat'), - baseToString = require('./_baseToString'), - castSlice = require('./_castSlice'), - hasUnicode = require('./_hasUnicode'), - stringSize = require('./_stringSize'), - stringToArray = require('./_stringToArray'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeCeil = Math.ceil; - -/** - * Creates the padding for `string` based on `length`. The `chars` string - * is truncated if the number of characters exceeds `length`. - * - * @private - * @param {number} length The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padding for `string`. - */ -function createPadding(length, chars) { - chars = chars === undefined ? ' ' : baseToString(chars); - - var charsLength = chars.length; - if (charsLength < 2) { - return charsLength ? baseRepeat(chars, length) : chars; - } - var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); - return hasUnicode(chars) - ? castSlice(stringToArray(result), 0, length).join('') - : result.slice(0, length); -} - -module.exports = createPadding; diff --git a/node_modules/lodash/_createPartial.js b/node_modules/lodash/_createPartial.js deleted file mode 100644 index e16c248..0000000 --- a/node_modules/lodash/_createPartial.js +++ /dev/null @@ -1,43 +0,0 @@ -var apply = require('./_apply'), - createCtor = require('./_createCtor'), - root = require('./_root'); - -/** Used to compose bitmasks for function metadata. */ -var WRAP_BIND_FLAG = 1; - -/** - * Creates a function that wraps `func` to invoke it with the `this` binding - * of `thisArg` and `partials` prepended to the arguments it receives. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} partials The arguments to prepend to those provided to - * the new function. - * @returns {Function} Returns the new wrapped function. - */ -function createPartial(func, bitmask, thisArg, partials) { - var isBind = bitmask & WRAP_BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var argsIndex = -1, - argsLength = arguments.length, - leftIndex = -1, - leftLength = partials.length, - args = Array(leftLength + argsLength), - fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - - while (++leftIndex < leftLength) { - args[leftIndex] = partials[leftIndex]; - } - while (argsLength--) { - args[leftIndex++] = arguments[++argsIndex]; - } - return apply(fn, isBind ? thisArg : this, args); - } - return wrapper; -} - -module.exports = createPartial; diff --git a/node_modules/lodash/_createRange.js b/node_modules/lodash/_createRange.js deleted file mode 100644 index 9f52c77..0000000 --- a/node_modules/lodash/_createRange.js +++ /dev/null @@ -1,30 +0,0 @@ -var baseRange = require('./_baseRange'), - isIterateeCall = require('./_isIterateeCall'), - toFinite = require('./toFinite'); - -/** - * Creates a `_.range` or `_.rangeRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new range function. - */ -function createRange(fromRight) { - return function(start, end, step) { - if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { - end = step = undefined; - } - // Ensure the sign of `-0` is preserved. - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); - return baseRange(start, end, step, fromRight); - }; -} - -module.exports = createRange; diff --git a/node_modules/lodash/_createRecurry.js b/node_modules/lodash/_createRecurry.js deleted file mode 100644 index eb29fb2..0000000 --- a/node_modules/lodash/_createRecurry.js +++ /dev/null @@ -1,56 +0,0 @@ -var isLaziable = require('./_isLaziable'), - setData = require('./_setData'), - setWrapToString = require('./_setWrapToString'); - -/** Used to compose bitmasks for function metadata. */ -var WRAP_BIND_FLAG = 1, - WRAP_BIND_KEY_FLAG = 2, - WRAP_CURRY_BOUND_FLAG = 4, - WRAP_CURRY_FLAG = 8, - WRAP_PARTIAL_FLAG = 32, - WRAP_PARTIAL_RIGHT_FLAG = 64; - -/** - * Creates a function that wraps `func` to continue currying. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {Function} wrapFunc The function to create the `func` wrapper. - * @param {*} placeholder The placeholder value. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ -function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { - var isCurry = bitmask & WRAP_CURRY_FLAG, - newHolders = isCurry ? holders : undefined, - newHoldersRight = isCurry ? undefined : holders, - newPartials = isCurry ? partials : undefined, - newPartialsRight = isCurry ? undefined : partials; - - bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); - bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); - - if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { - bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); - } - var newData = [ - func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, - newHoldersRight, argPos, ary, arity - ]; - - var result = wrapFunc.apply(undefined, newData); - if (isLaziable(func)) { - setData(result, newData); - } - result.placeholder = placeholder; - return setWrapToString(result, func, bitmask); -} - -module.exports = createRecurry; diff --git a/node_modules/lodash/_createRelationalOperation.js b/node_modules/lodash/_createRelationalOperation.js deleted file mode 100644 index a17c6b5..0000000 --- a/node_modules/lodash/_createRelationalOperation.js +++ /dev/null @@ -1,20 +0,0 @@ -var toNumber = require('./toNumber'); - -/** - * Creates a function that performs a relational operation on two values. - * - * @private - * @param {Function} operator The function to perform the operation. - * @returns {Function} Returns the new relational operation function. - */ -function createRelationalOperation(operator) { - return function(value, other) { - if (!(typeof value == 'string' && typeof other == 'string')) { - value = toNumber(value); - other = toNumber(other); - } - return operator(value, other); - }; -} - -module.exports = createRelationalOperation; diff --git a/node_modules/lodash/_createRound.js b/node_modules/lodash/_createRound.js deleted file mode 100644 index 88be5df..0000000 --- a/node_modules/lodash/_createRound.js +++ /dev/null @@ -1,35 +0,0 @@ -var root = require('./_root'), - toInteger = require('./toInteger'), - toNumber = require('./toNumber'), - toString = require('./toString'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeIsFinite = root.isFinite, - nativeMin = Math.min; - -/** - * Creates a function like `_.round`. - * - * @private - * @param {string} methodName The name of the `Math` method to use when rounding. - * @returns {Function} Returns the new round function. - */ -function createRound(methodName) { - var func = Math[methodName]; - return function(number, precision) { - number = toNumber(number); - precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); - if (precision && nativeIsFinite(number)) { - // Shift with exponential notation to avoid floating-point issues. - // See [MDN](https://mdn.io/round#Examples) for more details. - var pair = (toString(number) + 'e').split('e'), - value = func(pair[0] + 'e' + (+pair[1] + precision)); - - pair = (toString(value) + 'e').split('e'); - return +(pair[0] + 'e' + (+pair[1] - precision)); - } - return func(number); - }; -} - -module.exports = createRound; diff --git a/node_modules/lodash/_createSet.js b/node_modules/lodash/_createSet.js deleted file mode 100644 index 0f644ee..0000000 --- a/node_modules/lodash/_createSet.js +++ /dev/null @@ -1,19 +0,0 @@ -var Set = require('./_Set'), - noop = require('./noop'), - setToArray = require('./_setToArray'); - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** - * Creates a set object of `values`. - * - * @private - * @param {Array} values The values to add to the set. - * @returns {Object} Returns the new set. - */ -var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { - return new Set(values); -}; - -module.exports = createSet; diff --git a/node_modules/lodash/_createToPairs.js b/node_modules/lodash/_createToPairs.js deleted file mode 100644 index 568417a..0000000 --- a/node_modules/lodash/_createToPairs.js +++ /dev/null @@ -1,30 +0,0 @@ -var baseToPairs = require('./_baseToPairs'), - getTag = require('./_getTag'), - mapToArray = require('./_mapToArray'), - setToPairs = require('./_setToPairs'); - -/** `Object#toString` result references. */ -var mapTag = '[object Map]', - setTag = '[object Set]'; - -/** - * Creates a `_.toPairs` or `_.toPairsIn` function. - * - * @private - * @param {Function} keysFunc The function to get the keys of a given object. - * @returns {Function} Returns the new pairs function. - */ -function createToPairs(keysFunc) { - return function(object) { - var tag = getTag(object); - if (tag == mapTag) { - return mapToArray(object); - } - if (tag == setTag) { - return setToPairs(object); - } - return baseToPairs(object, keysFunc(object)); - }; -} - -module.exports = createToPairs; diff --git a/node_modules/lodash/_createWrap.js b/node_modules/lodash/_createWrap.js deleted file mode 100644 index 33f0633..0000000 --- a/node_modules/lodash/_createWrap.js +++ /dev/null @@ -1,106 +0,0 @@ -var baseSetData = require('./_baseSetData'), - createBind = require('./_createBind'), - createCurry = require('./_createCurry'), - createHybrid = require('./_createHybrid'), - createPartial = require('./_createPartial'), - getData = require('./_getData'), - mergeData = require('./_mergeData'), - setData = require('./_setData'), - setWrapToString = require('./_setWrapToString'), - toInteger = require('./toInteger'); - -/** Error message constants. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** Used to compose bitmasks for function metadata. */ -var WRAP_BIND_FLAG = 1, - WRAP_BIND_KEY_FLAG = 2, - WRAP_CURRY_FLAG = 8, - WRAP_CURRY_RIGHT_FLAG = 16, - WRAP_PARTIAL_FLAG = 32, - WRAP_PARTIAL_RIGHT_FLAG = 64; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * Creates a function that either curries or invokes `func` with optional - * `this` binding and partially applied arguments. - * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` or `_.curryRight` of a bound function - * 8 - `_.curry` - * 16 - `_.curryRight` - * 32 - `_.partial` - * 64 - `_.partialRight` - * 128 - `_.rearg` - * 256 - `_.ary` - * 512 - `_.flip` - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to be partially applied. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ -function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { - var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; - if (!isBindKey && typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - var length = partials ? partials.length : 0; - if (!length) { - bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); - partials = holders = undefined; - } - ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); - arity = arity === undefined ? arity : toInteger(arity); - length -= holders ? holders.length : 0; - - if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { - var partialsRight = partials, - holdersRight = holders; - - partials = holders = undefined; - } - var data = isBindKey ? undefined : getData(func); - - var newData = [ - func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, - argPos, ary, arity - ]; - - if (data) { - mergeData(newData, data); - } - func = newData[0]; - bitmask = newData[1]; - thisArg = newData[2]; - partials = newData[3]; - holders = newData[4]; - arity = newData[9] = newData[9] === undefined - ? (isBindKey ? 0 : func.length) - : nativeMax(newData[9] - length, 0); - - if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { - bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); - } - if (!bitmask || bitmask == WRAP_BIND_FLAG) { - var result = createBind(func, bitmask, thisArg); - } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { - result = createCurry(func, bitmask, arity); - } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { - result = createPartial(func, bitmask, thisArg, partials); - } else { - result = createHybrid.apply(undefined, newData); - } - var setter = data ? baseSetData : setData; - return setWrapToString(setter(result, newData), func, bitmask); -} - -module.exports = createWrap; diff --git a/node_modules/lodash/_customDefaultsAssignIn.js b/node_modules/lodash/_customDefaultsAssignIn.js deleted file mode 100644 index 1f49e6f..0000000 --- a/node_modules/lodash/_customDefaultsAssignIn.js +++ /dev/null @@ -1,29 +0,0 @@ -var eq = require('./eq'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used by `_.defaults` to customize its `_.assignIn` use to assign properties - * of source objects to the destination object for all destination properties - * that resolve to `undefined`. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to assign. - * @param {Object} object The parent object of `objValue`. - * @returns {*} Returns the value to assign. - */ -function customDefaultsAssignIn(objValue, srcValue, key, object) { - if (objValue === undefined || - (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { - return srcValue; - } - return objValue; -} - -module.exports = customDefaultsAssignIn; diff --git a/node_modules/lodash/_customDefaultsMerge.js b/node_modules/lodash/_customDefaultsMerge.js deleted file mode 100644 index 4cab317..0000000 --- a/node_modules/lodash/_customDefaultsMerge.js +++ /dev/null @@ -1,28 +0,0 @@ -var baseMerge = require('./_baseMerge'), - isObject = require('./isObject'); - -/** - * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source - * objects into destination objects that are passed thru. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to merge. - * @param {Object} object The parent object of `objValue`. - * @param {Object} source The parent object of `srcValue`. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - * @returns {*} Returns the value to assign. - */ -function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { - if (isObject(objValue) && isObject(srcValue)) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, objValue); - baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); - stack['delete'](srcValue); - } - return objValue; -} - -module.exports = customDefaultsMerge; diff --git a/node_modules/lodash/_customOmitClone.js b/node_modules/lodash/_customOmitClone.js deleted file mode 100644 index 968db2e..0000000 --- a/node_modules/lodash/_customOmitClone.js +++ /dev/null @@ -1,16 +0,0 @@ -var isPlainObject = require('./isPlainObject'); - -/** - * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain - * objects. - * - * @private - * @param {*} value The value to inspect. - * @param {string} key The key of the property to inspect. - * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. - */ -function customOmitClone(value) { - return isPlainObject(value) ? undefined : value; -} - -module.exports = customOmitClone; diff --git a/node_modules/lodash/_deburrLetter.js b/node_modules/lodash/_deburrLetter.js deleted file mode 100644 index 3e531ed..0000000 --- a/node_modules/lodash/_deburrLetter.js +++ /dev/null @@ -1,71 +0,0 @@ -var basePropertyOf = require('./_basePropertyOf'); - -/** Used to map Latin Unicode letters to basic Latin letters. */ -var deburredLetters = { - // Latin-1 Supplement block. - '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', - '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', - '\xc7': 'C', '\xe7': 'c', - '\xd0': 'D', '\xf0': 'd', - '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', - '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', - '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', - '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', - '\xd1': 'N', '\xf1': 'n', - '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', - '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', - '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', - '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', - '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', - '\xc6': 'Ae', '\xe6': 'ae', - '\xde': 'Th', '\xfe': 'th', - '\xdf': 'ss', - // Latin Extended-A block. - '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', - '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', - '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', - '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', - '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', - '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', - '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', - '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', - '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', - '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', - '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', - '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', - '\u0134': 'J', '\u0135': 'j', - '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', - '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', - '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', - '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', - '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', - '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', - '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', - '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', - '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', - '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', - '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', - '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', - '\u0163': 't', '\u0165': 't', '\u0167': 't', - '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', - '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', - '\u0174': 'W', '\u0175': 'w', - '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', - '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', - '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', - '\u0132': 'IJ', '\u0133': 'ij', - '\u0152': 'Oe', '\u0153': 'oe', - '\u0149': "'n", '\u017f': 's' -}; - -/** - * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A - * letters to basic Latin letters. - * - * @private - * @param {string} letter The matched letter to deburr. - * @returns {string} Returns the deburred letter. - */ -var deburrLetter = basePropertyOf(deburredLetters); - -module.exports = deburrLetter; diff --git a/node_modules/lodash/_defineProperty.js b/node_modules/lodash/_defineProperty.js deleted file mode 100644 index b6116d9..0000000 --- a/node_modules/lodash/_defineProperty.js +++ /dev/null @@ -1,11 +0,0 @@ -var getNative = require('./_getNative'); - -var defineProperty = (function() { - try { - var func = getNative(Object, 'defineProperty'); - func({}, '', {}); - return func; - } catch (e) {} -}()); - -module.exports = defineProperty; diff --git a/node_modules/lodash/_equalArrays.js b/node_modules/lodash/_equalArrays.js deleted file mode 100644 index 824228c..0000000 --- a/node_modules/lodash/_equalArrays.js +++ /dev/null @@ -1,84 +0,0 @@ -var SetCache = require('./_SetCache'), - arraySome = require('./_arraySome'), - cacheHas = require('./_cacheHas'); - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - -/** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ -function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - arrLength = array.length, - othLength = other.length; - - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - // Check that cyclic values are equal. - var arrStacked = stack.get(array); - var othStacked = stack.get(other); - if (arrStacked && othStacked) { - return arrStacked == other && othStacked == array; - } - var index = -1, - result = true, - seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; - - stack.set(array, other); - stack.set(other, array); - - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, arrValue, index, other, array, stack) - : customizer(arrValue, othValue, index, array, other, stack); - } - if (compared !== undefined) { - if (compared) { - continue; - } - result = false; - break; - } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!arraySome(other, function(othValue, othIndex) { - if (!cacheHas(seen, othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, bitmask, customizer, stack) - )) { - result = false; - break; - } - } - stack['delete'](array); - stack['delete'](other); - return result; -} - -module.exports = equalArrays; diff --git a/node_modules/lodash/_equalByTag.js b/node_modules/lodash/_equalByTag.js deleted file mode 100644 index 71919e8..0000000 --- a/node_modules/lodash/_equalByTag.js +++ /dev/null @@ -1,112 +0,0 @@ -var Symbol = require('./_Symbol'), - Uint8Array = require('./_Uint8Array'), - eq = require('./eq'), - equalArrays = require('./_equalArrays'), - mapToArray = require('./_mapToArray'), - setToArray = require('./_setToArray'); - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - -/** `Object#toString` result references. */ -var boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - mapTag = '[object Map]', - numberTag = '[object Number]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]'; - -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]'; - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; - -/** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { - switch (tag) { - case dataViewTag: - if ((object.byteLength != other.byteLength) || - (object.byteOffset != other.byteOffset)) { - return false; - } - object = object.buffer; - other = other.buffer; - - case arrayBufferTag: - if ((object.byteLength != other.byteLength) || - !equalFunc(new Uint8Array(object), new Uint8Array(other))) { - return false; - } - return true; - - case boolTag: - case dateTag: - case numberTag: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq(+object, +other); - - case errorTag: - return object.name == other.name && object.message == other.message; - - case regexpTag: - case stringTag: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); - - case mapTag: - var convert = mapToArray; - - case setTag: - var isPartial = bitmask & COMPARE_PARTIAL_FLAG; - convert || (convert = setToArray); - - if (object.size != other.size && !isPartial) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= COMPARE_UNORDERED_FLAG; - - // Recursively compare objects (susceptible to call stack limits). - stack.set(object, other); - var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); - stack['delete'](object); - return result; - - case symbolTag: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } - } - return false; -} - -module.exports = equalByTag; diff --git a/node_modules/lodash/_equalObjects.js b/node_modules/lodash/_equalObjects.js deleted file mode 100644 index cdaacd2..0000000 --- a/node_modules/lodash/_equalObjects.js +++ /dev/null @@ -1,90 +0,0 @@ -var getAllKeys = require('./_getAllKeys'); - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - objProps = getAllKeys(object), - objLength = objProps.length, - othProps = getAllKeys(other), - othLength = othProps.length; - - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { - return false; - } - } - // Check that cyclic values are equal. - var objStacked = stack.get(object); - var othStacked = stack.get(other); - if (objStacked && othStacked) { - return objStacked == other && othStacked == object; - } - var result = true; - stack.set(object, other); - stack.set(other, object); - - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, objValue, key, other, object, stack) - : customizer(objValue, othValue, key, object, other, stack); - } - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); - } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; - - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; - } - } - stack['delete'](object); - stack['delete'](other); - return result; -} - -module.exports = equalObjects; diff --git a/node_modules/lodash/_escapeHtmlChar.js b/node_modules/lodash/_escapeHtmlChar.js deleted file mode 100644 index 7ca68ee..0000000 --- a/node_modules/lodash/_escapeHtmlChar.js +++ /dev/null @@ -1,21 +0,0 @@ -var basePropertyOf = require('./_basePropertyOf'); - -/** Used to map characters to HTML entities. */ -var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' -}; - -/** - * Used by `_.escape` to convert characters to HTML entities. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ -var escapeHtmlChar = basePropertyOf(htmlEscapes); - -module.exports = escapeHtmlChar; diff --git a/node_modules/lodash/_escapeStringChar.js b/node_modules/lodash/_escapeStringChar.js deleted file mode 100644 index 44eca96..0000000 --- a/node_modules/lodash/_escapeStringChar.js +++ /dev/null @@ -1,22 +0,0 @@ -/** Used to escape characters for inclusion in compiled string literals. */ -var stringEscapes = { - '\\': '\\', - "'": "'", - '\n': 'n', - '\r': 'r', - '\u2028': 'u2028', - '\u2029': 'u2029' -}; - -/** - * Used by `_.template` to escape characters for inclusion in compiled string literals. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ -function escapeStringChar(chr) { - return '\\' + stringEscapes[chr]; -} - -module.exports = escapeStringChar; diff --git a/node_modules/lodash/_flatRest.js b/node_modules/lodash/_flatRest.js deleted file mode 100644 index 94ab6cc..0000000 --- a/node_modules/lodash/_flatRest.js +++ /dev/null @@ -1,16 +0,0 @@ -var flatten = require('./flatten'), - overRest = require('./_overRest'), - setToString = require('./_setToString'); - -/** - * A specialized version of `baseRest` which flattens the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @returns {Function} Returns the new function. - */ -function flatRest(func) { - return setToString(overRest(func, undefined, flatten), func + ''); -} - -module.exports = flatRest; diff --git a/node_modules/lodash/_freeGlobal.js b/node_modules/lodash/_freeGlobal.js deleted file mode 100644 index bbec998..0000000 --- a/node_modules/lodash/_freeGlobal.js +++ /dev/null @@ -1,4 +0,0 @@ -/** Detect free variable `global` from Node.js. */ -var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; - -module.exports = freeGlobal; diff --git a/node_modules/lodash/_getAllKeys.js b/node_modules/lodash/_getAllKeys.js deleted file mode 100644 index a9ce699..0000000 --- a/node_modules/lodash/_getAllKeys.js +++ /dev/null @@ -1,16 +0,0 @@ -var baseGetAllKeys = require('./_baseGetAllKeys'), - getSymbols = require('./_getSymbols'), - keys = require('./keys'); - -/** - * Creates an array of own enumerable property names and symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ -function getAllKeys(object) { - return baseGetAllKeys(object, keys, getSymbols); -} - -module.exports = getAllKeys; diff --git a/node_modules/lodash/_getAllKeysIn.js b/node_modules/lodash/_getAllKeysIn.js deleted file mode 100644 index 1b46678..0000000 --- a/node_modules/lodash/_getAllKeysIn.js +++ /dev/null @@ -1,17 +0,0 @@ -var baseGetAllKeys = require('./_baseGetAllKeys'), - getSymbolsIn = require('./_getSymbolsIn'), - keysIn = require('./keysIn'); - -/** - * Creates an array of own and inherited enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ -function getAllKeysIn(object) { - return baseGetAllKeys(object, keysIn, getSymbolsIn); -} - -module.exports = getAllKeysIn; diff --git a/node_modules/lodash/_getData.js b/node_modules/lodash/_getData.js deleted file mode 100644 index a1fe7b7..0000000 --- a/node_modules/lodash/_getData.js +++ /dev/null @@ -1,15 +0,0 @@ -var metaMap = require('./_metaMap'), - noop = require('./noop'); - -/** - * Gets metadata for `func`. - * - * @private - * @param {Function} func The function to query. - * @returns {*} Returns the metadata for `func`. - */ -var getData = !metaMap ? noop : function(func) { - return metaMap.get(func); -}; - -module.exports = getData; diff --git a/node_modules/lodash/_getFuncName.js b/node_modules/lodash/_getFuncName.js deleted file mode 100644 index 21e15b3..0000000 --- a/node_modules/lodash/_getFuncName.js +++ /dev/null @@ -1,31 +0,0 @@ -var realNames = require('./_realNames'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Gets the name of `func`. - * - * @private - * @param {Function} func The function to query. - * @returns {string} Returns the function name. - */ -function getFuncName(func) { - var result = (func.name + ''), - array = realNames[result], - length = hasOwnProperty.call(realNames, result) ? array.length : 0; - - while (length--) { - var data = array[length], - otherFunc = data.func; - if (otherFunc == null || otherFunc == func) { - return data.name; - } - } - return result; -} - -module.exports = getFuncName; diff --git a/node_modules/lodash/_getHolder.js b/node_modules/lodash/_getHolder.js deleted file mode 100644 index 65e94b5..0000000 --- a/node_modules/lodash/_getHolder.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Gets the argument placeholder value for `func`. - * - * @private - * @param {Function} func The function to inspect. - * @returns {*} Returns the placeholder value. - */ -function getHolder(func) { - var object = func; - return object.placeholder; -} - -module.exports = getHolder; diff --git a/node_modules/lodash/_getMapData.js b/node_modules/lodash/_getMapData.js deleted file mode 100644 index 17f6303..0000000 --- a/node_modules/lodash/_getMapData.js +++ /dev/null @@ -1,18 +0,0 @@ -var isKeyable = require('./_isKeyable'); - -/** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ -function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; -} - -module.exports = getMapData; diff --git a/node_modules/lodash/_getMatchData.js b/node_modules/lodash/_getMatchData.js deleted file mode 100644 index 2cc70f9..0000000 --- a/node_modules/lodash/_getMatchData.js +++ /dev/null @@ -1,24 +0,0 @@ -var isStrictComparable = require('./_isStrictComparable'), - keys = require('./keys'); - -/** - * Gets the property names, values, and compare flags of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. - */ -function getMatchData(object) { - var result = keys(object), - length = result.length; - - while (length--) { - var key = result[length], - value = object[key]; - - result[length] = [key, value, isStrictComparable(value)]; - } - return result; -} - -module.exports = getMatchData; diff --git a/node_modules/lodash/_getNative.js b/node_modules/lodash/_getNative.js deleted file mode 100644 index 97a622b..0000000 --- a/node_modules/lodash/_getNative.js +++ /dev/null @@ -1,17 +0,0 @@ -var baseIsNative = require('./_baseIsNative'), - getValue = require('./_getValue'); - -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; -} - -module.exports = getNative; diff --git a/node_modules/lodash/_getPrototype.js b/node_modules/lodash/_getPrototype.js deleted file mode 100644 index e808612..0000000 --- a/node_modules/lodash/_getPrototype.js +++ /dev/null @@ -1,6 +0,0 @@ -var overArg = require('./_overArg'); - -/** Built-in value references. */ -var getPrototype = overArg(Object.getPrototypeOf, Object); - -module.exports = getPrototype; diff --git a/node_modules/lodash/_getRawTag.js b/node_modules/lodash/_getRawTag.js deleted file mode 100644 index 49a95c9..0000000 --- a/node_modules/lodash/_getRawTag.js +++ /dev/null @@ -1,46 +0,0 @@ -var Symbol = require('./_Symbol'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString = objectProto.toString; - -/** Built-in value references. */ -var symToStringTag = Symbol ? Symbol.toStringTag : undefined; - -/** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. - */ -function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag), - tag = value[symToStringTag]; - - try { - value[symToStringTag] = undefined; - var unmasked = true; - } catch (e) {} - - var result = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; - } else { - delete value[symToStringTag]; - } - } - return result; -} - -module.exports = getRawTag; diff --git a/node_modules/lodash/_getSymbols.js b/node_modules/lodash/_getSymbols.js deleted file mode 100644 index 7d6eafe..0000000 --- a/node_modules/lodash/_getSymbols.js +++ /dev/null @@ -1,30 +0,0 @@ -var arrayFilter = require('./_arrayFilter'), - stubArray = require('./stubArray'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Built-in value references. */ -var propertyIsEnumerable = objectProto.propertyIsEnumerable; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeGetSymbols = Object.getOwnPropertySymbols; - -/** - * Creates an array of the own enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ -var getSymbols = !nativeGetSymbols ? stubArray : function(object) { - if (object == null) { - return []; - } - object = Object(object); - return arrayFilter(nativeGetSymbols(object), function(symbol) { - return propertyIsEnumerable.call(object, symbol); - }); -}; - -module.exports = getSymbols; diff --git a/node_modules/lodash/_getSymbolsIn.js b/node_modules/lodash/_getSymbolsIn.js deleted file mode 100644 index cec0855..0000000 --- a/node_modules/lodash/_getSymbolsIn.js +++ /dev/null @@ -1,25 +0,0 @@ -var arrayPush = require('./_arrayPush'), - getPrototype = require('./_getPrototype'), - getSymbols = require('./_getSymbols'), - stubArray = require('./stubArray'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeGetSymbols = Object.getOwnPropertySymbols; - -/** - * Creates an array of the own and inherited enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ -var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { - var result = []; - while (object) { - arrayPush(result, getSymbols(object)); - object = getPrototype(object); - } - return result; -}; - -module.exports = getSymbolsIn; diff --git a/node_modules/lodash/_getTag.js b/node_modules/lodash/_getTag.js deleted file mode 100644 index deaf89d..0000000 --- a/node_modules/lodash/_getTag.js +++ /dev/null @@ -1,58 +0,0 @@ -var DataView = require('./_DataView'), - Map = require('./_Map'), - Promise = require('./_Promise'), - Set = require('./_Set'), - WeakMap = require('./_WeakMap'), - baseGetTag = require('./_baseGetTag'), - toSource = require('./_toSource'); - -/** `Object#toString` result references. */ -var mapTag = '[object Map]', - objectTag = '[object Object]', - promiseTag = '[object Promise]', - setTag = '[object Set]', - weakMapTag = '[object WeakMap]'; - -var dataViewTag = '[object DataView]'; - -/** Used to detect maps, sets, and weakmaps. */ -var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map), - promiseCtorString = toSource(Promise), - setCtorString = toSource(Set), - weakMapCtorString = toSource(WeakMap); - -/** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -var getTag = baseGetTag; - -// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. -if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || - (Map && getTag(new Map) != mapTag) || - (Promise && getTag(Promise.resolve()) != promiseTag) || - (Set && getTag(new Set) != setTag) || - (WeakMap && getTag(new WeakMap) != weakMapTag)) { - getTag = function(value) { - var result = baseGetTag(value), - Ctor = result == objectTag ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : ''; - - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag; - case mapCtorString: return mapTag; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag; - case weakMapCtorString: return weakMapTag; - } - } - return result; - }; -} - -module.exports = getTag; diff --git a/node_modules/lodash/_getValue.js b/node_modules/lodash/_getValue.js deleted file mode 100644 index 5f7d773..0000000 --- a/node_modules/lodash/_getValue.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function getValue(object, key) { - return object == null ? undefined : object[key]; -} - -module.exports = getValue; diff --git a/node_modules/lodash/_getView.js b/node_modules/lodash/_getView.js deleted file mode 100644 index df1e5d4..0000000 --- a/node_modules/lodash/_getView.js +++ /dev/null @@ -1,33 +0,0 @@ -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max, - nativeMin = Math.min; - -/** - * Gets the view, applying any `transforms` to the `start` and `end` positions. - * - * @private - * @param {number} start The start of the view. - * @param {number} end The end of the view. - * @param {Array} transforms The transformations to apply to the view. - * @returns {Object} Returns an object containing the `start` and `end` - * positions of the view. - */ -function getView(start, end, transforms) { - var index = -1, - length = transforms.length; - - while (++index < length) { - var data = transforms[index], - size = data.size; - - switch (data.type) { - case 'drop': start += size; break; - case 'dropRight': end -= size; break; - case 'take': end = nativeMin(end, start + size); break; - case 'takeRight': start = nativeMax(start, end - size); break; - } - } - return { 'start': start, 'end': end }; -} - -module.exports = getView; diff --git a/node_modules/lodash/_getWrapDetails.js b/node_modules/lodash/_getWrapDetails.js deleted file mode 100644 index 3bcc6e4..0000000 --- a/node_modules/lodash/_getWrapDetails.js +++ /dev/null @@ -1,17 +0,0 @@ -/** Used to match wrap detail comments. */ -var reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, - reSplitDetails = /,? & /; - -/** - * Extracts wrapper details from the `source` body comment. - * - * @private - * @param {string} source The source to inspect. - * @returns {Array} Returns the wrapper details. - */ -function getWrapDetails(source) { - var match = source.match(reWrapDetails); - return match ? match[1].split(reSplitDetails) : []; -} - -module.exports = getWrapDetails; diff --git a/node_modules/lodash/_hasPath.js b/node_modules/lodash/_hasPath.js deleted file mode 100644 index 93dbde1..0000000 --- a/node_modules/lodash/_hasPath.js +++ /dev/null @@ -1,39 +0,0 @@ -var castPath = require('./_castPath'), - isArguments = require('./isArguments'), - isArray = require('./isArray'), - isIndex = require('./_isIndex'), - isLength = require('./isLength'), - toKey = require('./_toKey'); - -/** - * Checks if `path` exists on `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @param {Function} hasFunc The function to check properties. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - */ -function hasPath(object, path, hasFunc) { - path = castPath(path, object); - - var index = -1, - length = path.length, - result = false; - - while (++index < length) { - var key = toKey(path[index]); - if (!(result = object != null && hasFunc(object, key))) { - break; - } - object = object[key]; - } - if (result || ++index != length) { - return result; - } - length = object == null ? 0 : object.length; - return !!length && isLength(length) && isIndex(key, length) && - (isArray(object) || isArguments(object)); -} - -module.exports = hasPath; diff --git a/node_modules/lodash/_hasUnicode.js b/node_modules/lodash/_hasUnicode.js deleted file mode 100644 index cb6ca15..0000000 --- a/node_modules/lodash/_hasUnicode.js +++ /dev/null @@ -1,26 +0,0 @@ -/** Used to compose unicode character classes. */ -var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, - rsVarRange = '\\ufe0e\\ufe0f'; - -/** Used to compose unicode capture groups. */ -var rsZWJ = '\\u200d'; - -/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ -var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); - -/** - * Checks if `string` contains Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a symbol is found, else `false`. - */ -function hasUnicode(string) { - return reHasUnicode.test(string); -} - -module.exports = hasUnicode; diff --git a/node_modules/lodash/_hasUnicodeWord.js b/node_modules/lodash/_hasUnicodeWord.js deleted file mode 100644 index 95d52c4..0000000 --- a/node_modules/lodash/_hasUnicodeWord.js +++ /dev/null @@ -1,15 +0,0 @@ -/** Used to detect strings that need a more robust regexp to match words. */ -var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; - -/** - * Checks if `string` contains a word composed of Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a word is found, else `false`. - */ -function hasUnicodeWord(string) { - return reHasUnicodeWord.test(string); -} - -module.exports = hasUnicodeWord; diff --git a/node_modules/lodash/_hashClear.js b/node_modules/lodash/_hashClear.js deleted file mode 100644 index 5d4b70c..0000000 --- a/node_modules/lodash/_hashClear.js +++ /dev/null @@ -1,15 +0,0 @@ -var nativeCreate = require('./_nativeCreate'); - -/** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ -function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; -} - -module.exports = hashClear; diff --git a/node_modules/lodash/_hashDelete.js b/node_modules/lodash/_hashDelete.js deleted file mode 100644 index ea9dabf..0000000 --- a/node_modules/lodash/_hashDelete.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function hashDelete(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; - return result; -} - -module.exports = hashDelete; diff --git a/node_modules/lodash/_hashGet.js b/node_modules/lodash/_hashGet.js deleted file mode 100644 index 1fc2f34..0000000 --- a/node_modules/lodash/_hashGet.js +++ /dev/null @@ -1,30 +0,0 @@ -var nativeCreate = require('./_nativeCreate'); - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; -} - -module.exports = hashGet; diff --git a/node_modules/lodash/_hashHas.js b/node_modules/lodash/_hashHas.js deleted file mode 100644 index 281a551..0000000 --- a/node_modules/lodash/_hashHas.js +++ /dev/null @@ -1,23 +0,0 @@ -var nativeCreate = require('./_nativeCreate'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function hashHas(key) { - var data = this.__data__; - return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); -} - -module.exports = hashHas; diff --git a/node_modules/lodash/_hashSet.js b/node_modules/lodash/_hashSet.js deleted file mode 100644 index e105528..0000000 --- a/node_modules/lodash/_hashSet.js +++ /dev/null @@ -1,23 +0,0 @@ -var nativeCreate = require('./_nativeCreate'); - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; - -/** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ -function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; -} - -module.exports = hashSet; diff --git a/node_modules/lodash/_initCloneArray.js b/node_modules/lodash/_initCloneArray.js deleted file mode 100644 index 078c15a..0000000 --- a/node_modules/lodash/_initCloneArray.js +++ /dev/null @@ -1,26 +0,0 @@ -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Initializes an array clone. - * - * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the initialized clone. - */ -function initCloneArray(array) { - var length = array.length, - result = new array.constructor(length); - - // Add properties assigned by `RegExp#exec`. - if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { - result.index = array.index; - result.input = array.input; - } - return result; -} - -module.exports = initCloneArray; diff --git a/node_modules/lodash/_initCloneByTag.js b/node_modules/lodash/_initCloneByTag.js deleted file mode 100644 index f69a008..0000000 --- a/node_modules/lodash/_initCloneByTag.js +++ /dev/null @@ -1,77 +0,0 @@ -var cloneArrayBuffer = require('./_cloneArrayBuffer'), - cloneDataView = require('./_cloneDataView'), - cloneRegExp = require('./_cloneRegExp'), - cloneSymbol = require('./_cloneSymbol'), - cloneTypedArray = require('./_cloneTypedArray'); - -/** `Object#toString` result references. */ -var boolTag = '[object Boolean]', - dateTag = '[object Date]', - mapTag = '[object Map]', - numberTag = '[object Number]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]'; - -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - -/** - * Initializes an object clone based on its `toStringTag`. - * - * **Note:** This function only supports cloning values with tags of - * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. - * - * @private - * @param {Object} object The object to clone. - * @param {string} tag The `toStringTag` of the object to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the initialized clone. - */ -function initCloneByTag(object, tag, isDeep) { - var Ctor = object.constructor; - switch (tag) { - case arrayBufferTag: - return cloneArrayBuffer(object); - - case boolTag: - case dateTag: - return new Ctor(+object); - - case dataViewTag: - return cloneDataView(object, isDeep); - - case float32Tag: case float64Tag: - case int8Tag: case int16Tag: case int32Tag: - case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: - return cloneTypedArray(object, isDeep); - - case mapTag: - return new Ctor; - - case numberTag: - case stringTag: - return new Ctor(object); - - case regexpTag: - return cloneRegExp(object); - - case setTag: - return new Ctor; - - case symbolTag: - return cloneSymbol(object); - } -} - -module.exports = initCloneByTag; diff --git a/node_modules/lodash/_initCloneObject.js b/node_modules/lodash/_initCloneObject.js deleted file mode 100644 index 5a13e64..0000000 --- a/node_modules/lodash/_initCloneObject.js +++ /dev/null @@ -1,18 +0,0 @@ -var baseCreate = require('./_baseCreate'), - getPrototype = require('./_getPrototype'), - isPrototype = require('./_isPrototype'); - -/** - * Initializes an object clone. - * - * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. - */ -function initCloneObject(object) { - return (typeof object.constructor == 'function' && !isPrototype(object)) - ? baseCreate(getPrototype(object)) - : {}; -} - -module.exports = initCloneObject; diff --git a/node_modules/lodash/_insertWrapDetails.js b/node_modules/lodash/_insertWrapDetails.js deleted file mode 100644 index e790808..0000000 --- a/node_modules/lodash/_insertWrapDetails.js +++ /dev/null @@ -1,23 +0,0 @@ -/** Used to match wrap detail comments. */ -var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/; - -/** - * Inserts wrapper `details` in a comment at the top of the `source` body. - * - * @private - * @param {string} source The source to modify. - * @returns {Array} details The details to insert. - * @returns {string} Returns the modified source. - */ -function insertWrapDetails(source, details) { - var length = details.length; - if (!length) { - return source; - } - var lastIndex = length - 1; - details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; - details = details.join(length > 2 ? ', ' : ' '); - return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); -} - -module.exports = insertWrapDetails; diff --git a/node_modules/lodash/_isFlattenable.js b/node_modules/lodash/_isFlattenable.js deleted file mode 100644 index 4cc2c24..0000000 --- a/node_modules/lodash/_isFlattenable.js +++ /dev/null @@ -1,20 +0,0 @@ -var Symbol = require('./_Symbol'), - isArguments = require('./isArguments'), - isArray = require('./isArray'); - -/** Built-in value references. */ -var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; - -/** - * Checks if `value` is a flattenable `arguments` object or array. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. - */ -function isFlattenable(value) { - return isArray(value) || isArguments(value) || - !!(spreadableSymbol && value && value[spreadableSymbol]); -} - -module.exports = isFlattenable; diff --git a/node_modules/lodash/_isIndex.js b/node_modules/lodash/_isIndex.js deleted file mode 100644 index 061cd39..0000000 --- a/node_modules/lodash/_isIndex.js +++ /dev/null @@ -1,25 +0,0 @@ -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** Used to detect unsigned integer values. */ -var reIsUint = /^(?:0|[1-9]\d*)$/; - -/** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ -function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER : length; - - return !!length && - (type == 'number' || - (type != 'symbol' && reIsUint.test(value))) && - (value > -1 && value % 1 == 0 && value < length); -} - -module.exports = isIndex; diff --git a/node_modules/lodash/_isIterateeCall.js b/node_modules/lodash/_isIterateeCall.js deleted file mode 100644 index a0bb5a9..0000000 --- a/node_modules/lodash/_isIterateeCall.js +++ /dev/null @@ -1,30 +0,0 @@ -var eq = require('./eq'), - isArrayLike = require('./isArrayLike'), - isIndex = require('./_isIndex'), - isObject = require('./isObject'); - -/** - * Checks if the given arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, - * else `false`. - */ -function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object) - ) { - return eq(object[index], value); - } - return false; -} - -module.exports = isIterateeCall; diff --git a/node_modules/lodash/_isKey.js b/node_modules/lodash/_isKey.js deleted file mode 100644 index ff08b06..0000000 --- a/node_modules/lodash/_isKey.js +++ /dev/null @@ -1,29 +0,0 @@ -var isArray = require('./isArray'), - isSymbol = require('./isSymbol'); - -/** Used to match property names within property paths. */ -var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/; - -/** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ -function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); -} - -module.exports = isKey; diff --git a/node_modules/lodash/_isKeyable.js b/node_modules/lodash/_isKeyable.js deleted file mode 100644 index 39f1828..0000000 --- a/node_modules/lodash/_isKeyable.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ -function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); -} - -module.exports = isKeyable; diff --git a/node_modules/lodash/_isLaziable.js b/node_modules/lodash/_isLaziable.js deleted file mode 100644 index a57c4f2..0000000 --- a/node_modules/lodash/_isLaziable.js +++ /dev/null @@ -1,28 +0,0 @@ -var LazyWrapper = require('./_LazyWrapper'), - getData = require('./_getData'), - getFuncName = require('./_getFuncName'), - lodash = require('./wrapperLodash'); - -/** - * Checks if `func` has a lazy counterpart. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` has a lazy counterpart, - * else `false`. - */ -function isLaziable(func) { - var funcName = getFuncName(func), - other = lodash[funcName]; - - if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { - return false; - } - if (func === other) { - return true; - } - var data = getData(other); - return !!data && func === data[0]; -} - -module.exports = isLaziable; diff --git a/node_modules/lodash/_isMaskable.js b/node_modules/lodash/_isMaskable.js deleted file mode 100644 index eb98d09..0000000 --- a/node_modules/lodash/_isMaskable.js +++ /dev/null @@ -1,14 +0,0 @@ -var coreJsData = require('./_coreJsData'), - isFunction = require('./isFunction'), - stubFalse = require('./stubFalse'); - -/** - * Checks if `func` is capable of being masked. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `func` is maskable, else `false`. - */ -var isMaskable = coreJsData ? isFunction : stubFalse; - -module.exports = isMaskable; diff --git a/node_modules/lodash/_isMasked.js b/node_modules/lodash/_isMasked.js deleted file mode 100644 index 4b0f21b..0000000 --- a/node_modules/lodash/_isMasked.js +++ /dev/null @@ -1,20 +0,0 @@ -var coreJsData = require('./_coreJsData'); - -/** Used to detect methods masquerading as native. */ -var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; -}()); - -/** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ -function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); -} - -module.exports = isMasked; diff --git a/node_modules/lodash/_isPrototype.js b/node_modules/lodash/_isPrototype.js deleted file mode 100644 index 0f29498..0000000 --- a/node_modules/lodash/_isPrototype.js +++ /dev/null @@ -1,18 +0,0 @@ -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ -function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; - - return value === proto; -} - -module.exports = isPrototype; diff --git a/node_modules/lodash/_isStrictComparable.js b/node_modules/lodash/_isStrictComparable.js deleted file mode 100644 index b59f40b..0000000 --- a/node_modules/lodash/_isStrictComparable.js +++ /dev/null @@ -1,15 +0,0 @@ -var isObject = require('./isObject'); - -/** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. - */ -function isStrictComparable(value) { - return value === value && !isObject(value); -} - -module.exports = isStrictComparable; diff --git a/node_modules/lodash/_iteratorToArray.js b/node_modules/lodash/_iteratorToArray.js deleted file mode 100644 index 4768566..0000000 --- a/node_modules/lodash/_iteratorToArray.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Converts `iterator` to an array. - * - * @private - * @param {Object} iterator The iterator to convert. - * @returns {Array} Returns the converted array. - */ -function iteratorToArray(iterator) { - var data, - result = []; - - while (!(data = iterator.next()).done) { - result.push(data.value); - } - return result; -} - -module.exports = iteratorToArray; diff --git a/node_modules/lodash/_lazyClone.js b/node_modules/lodash/_lazyClone.js deleted file mode 100644 index d8a51f8..0000000 --- a/node_modules/lodash/_lazyClone.js +++ /dev/null @@ -1,23 +0,0 @@ -var LazyWrapper = require('./_LazyWrapper'), - copyArray = require('./_copyArray'); - -/** - * Creates a clone of the lazy wrapper object. - * - * @private - * @name clone - * @memberOf LazyWrapper - * @returns {Object} Returns the cloned `LazyWrapper` object. - */ -function lazyClone() { - var result = new LazyWrapper(this.__wrapped__); - result.__actions__ = copyArray(this.__actions__); - result.__dir__ = this.__dir__; - result.__filtered__ = this.__filtered__; - result.__iteratees__ = copyArray(this.__iteratees__); - result.__takeCount__ = this.__takeCount__; - result.__views__ = copyArray(this.__views__); - return result; -} - -module.exports = lazyClone; diff --git a/node_modules/lodash/_lazyReverse.js b/node_modules/lodash/_lazyReverse.js deleted file mode 100644 index c5b5219..0000000 --- a/node_modules/lodash/_lazyReverse.js +++ /dev/null @@ -1,23 +0,0 @@ -var LazyWrapper = require('./_LazyWrapper'); - -/** - * Reverses the direction of lazy iteration. - * - * @private - * @name reverse - * @memberOf LazyWrapper - * @returns {Object} Returns the new reversed `LazyWrapper` object. - */ -function lazyReverse() { - if (this.__filtered__) { - var result = new LazyWrapper(this); - result.__dir__ = -1; - result.__filtered__ = true; - } else { - result = this.clone(); - result.__dir__ *= -1; - } - return result; -} - -module.exports = lazyReverse; diff --git a/node_modules/lodash/_lazyValue.js b/node_modules/lodash/_lazyValue.js deleted file mode 100644 index 371ca8d..0000000 --- a/node_modules/lodash/_lazyValue.js +++ /dev/null @@ -1,69 +0,0 @@ -var baseWrapperValue = require('./_baseWrapperValue'), - getView = require('./_getView'), - isArray = require('./isArray'); - -/** Used to indicate the type of lazy iteratees. */ -var LAZY_FILTER_FLAG = 1, - LAZY_MAP_FLAG = 2; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMin = Math.min; - -/** - * Extracts the unwrapped value from its lazy wrapper. - * - * @private - * @name value - * @memberOf LazyWrapper - * @returns {*} Returns the unwrapped value. - */ -function lazyValue() { - var array = this.__wrapped__.value(), - dir = this.__dir__, - isArr = isArray(array), - isRight = dir < 0, - arrLength = isArr ? array.length : 0, - view = getView(0, arrLength, this.__views__), - start = view.start, - end = view.end, - length = end - start, - index = isRight ? end : (start - 1), - iteratees = this.__iteratees__, - iterLength = iteratees.length, - resIndex = 0, - takeCount = nativeMin(length, this.__takeCount__); - - if (!isArr || (!isRight && arrLength == length && takeCount == length)) { - return baseWrapperValue(array, this.__actions__); - } - var result = []; - - outer: - while (length-- && resIndex < takeCount) { - index += dir; - - var iterIndex = -1, - value = array[index]; - - while (++iterIndex < iterLength) { - var data = iteratees[iterIndex], - iteratee = data.iteratee, - type = data.type, - computed = iteratee(value); - - if (type == LAZY_MAP_FLAG) { - value = computed; - } else if (!computed) { - if (type == LAZY_FILTER_FLAG) { - continue outer; - } else { - break outer; - } - } - } - result[resIndex++] = value; - } - return result; -} - -module.exports = lazyValue; diff --git a/node_modules/lodash/_listCacheClear.js b/node_modules/lodash/_listCacheClear.js deleted file mode 100644 index acbe39a..0000000 --- a/node_modules/lodash/_listCacheClear.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ -function listCacheClear() { - this.__data__ = []; - this.size = 0; -} - -module.exports = listCacheClear; diff --git a/node_modules/lodash/_listCacheDelete.js b/node_modules/lodash/_listCacheDelete.js deleted file mode 100644 index b1384ad..0000000 --- a/node_modules/lodash/_listCacheDelete.js +++ /dev/null @@ -1,35 +0,0 @@ -var assocIndexOf = require('./_assocIndexOf'); - -/** Used for built-in method references. */ -var arrayProto = Array.prototype; - -/** Built-in value references. */ -var splice = arrayProto.splice; - -/** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - --this.size; - return true; -} - -module.exports = listCacheDelete; diff --git a/node_modules/lodash/_listCacheGet.js b/node_modules/lodash/_listCacheGet.js deleted file mode 100644 index f8192fc..0000000 --- a/node_modules/lodash/_listCacheGet.js +++ /dev/null @@ -1,19 +0,0 @@ -var assocIndexOf = require('./_assocIndexOf'); - -/** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; -} - -module.exports = listCacheGet; diff --git a/node_modules/lodash/_listCacheHas.js b/node_modules/lodash/_listCacheHas.js deleted file mode 100644 index 2adf671..0000000 --- a/node_modules/lodash/_listCacheHas.js +++ /dev/null @@ -1,16 +0,0 @@ -var assocIndexOf = require('./_assocIndexOf'); - -/** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; -} - -module.exports = listCacheHas; diff --git a/node_modules/lodash/_listCacheSet.js b/node_modules/lodash/_listCacheSet.js deleted file mode 100644 index 5855c95..0000000 --- a/node_modules/lodash/_listCacheSet.js +++ /dev/null @@ -1,26 +0,0 @@ -var assocIndexOf = require('./_assocIndexOf'); - -/** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ -function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; -} - -module.exports = listCacheSet; diff --git a/node_modules/lodash/_mapCacheClear.js b/node_modules/lodash/_mapCacheClear.js deleted file mode 100644 index bc9ca20..0000000 --- a/node_modules/lodash/_mapCacheClear.js +++ /dev/null @@ -1,21 +0,0 @@ -var Hash = require('./_Hash'), - ListCache = require('./_ListCache'), - Map = require('./_Map'); - -/** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ -function mapCacheClear() { - this.size = 0; - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; -} - -module.exports = mapCacheClear; diff --git a/node_modules/lodash/_mapCacheDelete.js b/node_modules/lodash/_mapCacheDelete.js deleted file mode 100644 index 946ca3c..0000000 --- a/node_modules/lodash/_mapCacheDelete.js +++ /dev/null @@ -1,18 +0,0 @@ -var getMapData = require('./_getMapData'); - -/** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function mapCacheDelete(key) { - var result = getMapData(this, key)['delete'](key); - this.size -= result ? 1 : 0; - return result; -} - -module.exports = mapCacheDelete; diff --git a/node_modules/lodash/_mapCacheGet.js b/node_modules/lodash/_mapCacheGet.js deleted file mode 100644 index f29f55c..0000000 --- a/node_modules/lodash/_mapCacheGet.js +++ /dev/null @@ -1,16 +0,0 @@ -var getMapData = require('./_getMapData'); - -/** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function mapCacheGet(key) { - return getMapData(this, key).get(key); -} - -module.exports = mapCacheGet; diff --git a/node_modules/lodash/_mapCacheHas.js b/node_modules/lodash/_mapCacheHas.js deleted file mode 100644 index a1214c0..0000000 --- a/node_modules/lodash/_mapCacheHas.js +++ /dev/null @@ -1,16 +0,0 @@ -var getMapData = require('./_getMapData'); - -/** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function mapCacheHas(key) { - return getMapData(this, key).has(key); -} - -module.exports = mapCacheHas; diff --git a/node_modules/lodash/_mapCacheSet.js b/node_modules/lodash/_mapCacheSet.js deleted file mode 100644 index 7346849..0000000 --- a/node_modules/lodash/_mapCacheSet.js +++ /dev/null @@ -1,22 +0,0 @@ -var getMapData = require('./_getMapData'); - -/** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ -function mapCacheSet(key, value) { - var data = getMapData(this, key), - size = data.size; - - data.set(key, value); - this.size += data.size == size ? 0 : 1; - return this; -} - -module.exports = mapCacheSet; diff --git a/node_modules/lodash/_mapToArray.js b/node_modules/lodash/_mapToArray.js deleted file mode 100644 index fe3dd53..0000000 --- a/node_modules/lodash/_mapToArray.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ -function mapToArray(map) { - var index = -1, - result = Array(map.size); - - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; -} - -module.exports = mapToArray; diff --git a/node_modules/lodash/_matchesStrictComparable.js b/node_modules/lodash/_matchesStrictComparable.js deleted file mode 100644 index f608af9..0000000 --- a/node_modules/lodash/_matchesStrictComparable.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * A specialized version of `matchesProperty` for source values suitable - * for strict equality comparisons, i.e. `===`. - * - * @private - * @param {string} key The key of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ -function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; - } - return object[key] === srcValue && - (srcValue !== undefined || (key in Object(object))); - }; -} - -module.exports = matchesStrictComparable; diff --git a/node_modules/lodash/_memoizeCapped.js b/node_modules/lodash/_memoizeCapped.js deleted file mode 100644 index 7f71c8f..0000000 --- a/node_modules/lodash/_memoizeCapped.js +++ /dev/null @@ -1,26 +0,0 @@ -var memoize = require('./memoize'); - -/** Used as the maximum memoize cache size. */ -var MAX_MEMOIZE_SIZE = 500; - -/** - * A specialized version of `_.memoize` which clears the memoized function's - * cache when it exceeds `MAX_MEMOIZE_SIZE`. - * - * @private - * @param {Function} func The function to have its output memoized. - * @returns {Function} Returns the new memoized function. - */ -function memoizeCapped(func) { - var result = memoize(func, function(key) { - if (cache.size === MAX_MEMOIZE_SIZE) { - cache.clear(); - } - return key; - }); - - var cache = result.cache; - return result; -} - -module.exports = memoizeCapped; diff --git a/node_modules/lodash/_mergeData.js b/node_modules/lodash/_mergeData.js deleted file mode 100644 index cb570f9..0000000 --- a/node_modules/lodash/_mergeData.js +++ /dev/null @@ -1,90 +0,0 @@ -var composeArgs = require('./_composeArgs'), - composeArgsRight = require('./_composeArgsRight'), - replaceHolders = require('./_replaceHolders'); - -/** Used as the internal argument placeholder. */ -var PLACEHOLDER = '__lodash_placeholder__'; - -/** Used to compose bitmasks for function metadata. */ -var WRAP_BIND_FLAG = 1, - WRAP_BIND_KEY_FLAG = 2, - WRAP_CURRY_BOUND_FLAG = 4, - WRAP_CURRY_FLAG = 8, - WRAP_ARY_FLAG = 128, - WRAP_REARG_FLAG = 256; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMin = Math.min; - -/** - * Merges the function metadata of `source` into `data`. - * - * Merging metadata reduces the number of wrappers used to invoke a function. - * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` - * may be applied regardless of execution order. Methods like `_.ary` and - * `_.rearg` modify function arguments, making the order in which they are - * executed important, preventing the merging of metadata. However, we make - * an exception for a safe combined case where curried functions have `_.ary` - * and or `_.rearg` applied. - * - * @private - * @param {Array} data The destination metadata. - * @param {Array} source The source metadata. - * @returns {Array} Returns `data`. - */ -function mergeData(data, source) { - var bitmask = data[1], - srcBitmask = source[1], - newBitmask = bitmask | srcBitmask, - isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); - - var isCombo = - ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || - ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || - ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); - - // Exit early if metadata can't be merged. - if (!(isCommon || isCombo)) { - return data; - } - // Use source `thisArg` if available. - if (srcBitmask & WRAP_BIND_FLAG) { - data[2] = source[2]; - // Set when currying a bound function. - newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; - } - // Compose partial arguments. - var value = source[3]; - if (value) { - var partials = data[3]; - data[3] = partials ? composeArgs(partials, value, source[4]) : value; - data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; - } - // Compose partial right arguments. - value = source[5]; - if (value) { - partials = data[5]; - data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; - data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; - } - // Use source `argPos` if available. - value = source[7]; - if (value) { - data[7] = value; - } - // Use source `ary` if it's smaller. - if (srcBitmask & WRAP_ARY_FLAG) { - data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); - } - // Use source `arity` if one is not provided. - if (data[9] == null) { - data[9] = source[9]; - } - // Use source `func` and merge bitmasks. - data[0] = source[0]; - data[1] = newBitmask; - - return data; -} - -module.exports = mergeData; diff --git a/node_modules/lodash/_metaMap.js b/node_modules/lodash/_metaMap.js deleted file mode 100644 index 0157a0b..0000000 --- a/node_modules/lodash/_metaMap.js +++ /dev/null @@ -1,6 +0,0 @@ -var WeakMap = require('./_WeakMap'); - -/** Used to store function metadata. */ -var metaMap = WeakMap && new WeakMap; - -module.exports = metaMap; diff --git a/node_modules/lodash/_nativeCreate.js b/node_modules/lodash/_nativeCreate.js deleted file mode 100644 index c7aede8..0000000 --- a/node_modules/lodash/_nativeCreate.js +++ /dev/null @@ -1,6 +0,0 @@ -var getNative = require('./_getNative'); - -/* Built-in method references that are verified to be native. */ -var nativeCreate = getNative(Object, 'create'); - -module.exports = nativeCreate; diff --git a/node_modules/lodash/_nativeKeys.js b/node_modules/lodash/_nativeKeys.js deleted file mode 100644 index 479a104..0000000 --- a/node_modules/lodash/_nativeKeys.js +++ /dev/null @@ -1,6 +0,0 @@ -var overArg = require('./_overArg'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeKeys = overArg(Object.keys, Object); - -module.exports = nativeKeys; diff --git a/node_modules/lodash/_nativeKeysIn.js b/node_modules/lodash/_nativeKeysIn.js deleted file mode 100644 index 00ee505..0000000 --- a/node_modules/lodash/_nativeKeysIn.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * This function is like - * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * except that it includes inherited enumerable properties. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); - } - } - return result; -} - -module.exports = nativeKeysIn; diff --git a/node_modules/lodash/_nodeUtil.js b/node_modules/lodash/_nodeUtil.js deleted file mode 100644 index 983d78f..0000000 --- a/node_modules/lodash/_nodeUtil.js +++ /dev/null @@ -1,30 +0,0 @@ -var freeGlobal = require('./_freeGlobal'); - -/** Detect free variable `exports`. */ -var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - -/** Detect free variable `module`. */ -var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; - -/** Detect free variable `process` from Node.js. */ -var freeProcess = moduleExports && freeGlobal.process; - -/** Used to access faster Node.js helpers. */ -var nodeUtil = (function() { - try { - // Use `util.types` for Node.js 10+. - var types = freeModule && freeModule.require && freeModule.require('util').types; - - if (types) { - return types; - } - - // Legacy `process.binding('util')` for Node.js < 10. - return freeProcess && freeProcess.binding && freeProcess.binding('util'); - } catch (e) {} -}()); - -module.exports = nodeUtil; diff --git a/node_modules/lodash/_objectToString.js b/node_modules/lodash/_objectToString.js deleted file mode 100644 index c614ec0..0000000 --- a/node_modules/lodash/_objectToString.js +++ /dev/null @@ -1,22 +0,0 @@ -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString = objectProto.toString; - -/** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ -function objectToString(value) { - return nativeObjectToString.call(value); -} - -module.exports = objectToString; diff --git a/node_modules/lodash/_overArg.js b/node_modules/lodash/_overArg.js deleted file mode 100644 index 651c5c5..0000000 --- a/node_modules/lodash/_overArg.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ -function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; -} - -module.exports = overArg; diff --git a/node_modules/lodash/_overRest.js b/node_modules/lodash/_overRest.js deleted file mode 100644 index c7cdef3..0000000 --- a/node_modules/lodash/_overRest.js +++ /dev/null @@ -1,36 +0,0 @@ -var apply = require('./_apply'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * A specialized version of `baseRest` which transforms the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @param {Function} transform The rest array transform. - * @returns {Function} Returns the new function. - */ -function overRest(func, start, transform) { - start = nativeMax(start === undefined ? (func.length - 1) : start, 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - array = Array(length); - - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = transform(array); - return apply(func, this, otherArgs); - }; -} - -module.exports = overRest; diff --git a/node_modules/lodash/_parent.js b/node_modules/lodash/_parent.js deleted file mode 100644 index f174328..0000000 --- a/node_modules/lodash/_parent.js +++ /dev/null @@ -1,16 +0,0 @@ -var baseGet = require('./_baseGet'), - baseSlice = require('./_baseSlice'); - -/** - * Gets the parent value at `path` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} path The path to get the parent value of. - * @returns {*} Returns the parent value. - */ -function parent(object, path) { - return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); -} - -module.exports = parent; diff --git a/node_modules/lodash/_reEscape.js b/node_modules/lodash/_reEscape.js deleted file mode 100644 index 7f47eda..0000000 --- a/node_modules/lodash/_reEscape.js +++ /dev/null @@ -1,4 +0,0 @@ -/** Used to match template delimiters. */ -var reEscape = /<%-([\s\S]+?)%>/g; - -module.exports = reEscape; diff --git a/node_modules/lodash/_reEvaluate.js b/node_modules/lodash/_reEvaluate.js deleted file mode 100644 index 6adfc31..0000000 --- a/node_modules/lodash/_reEvaluate.js +++ /dev/null @@ -1,4 +0,0 @@ -/** Used to match template delimiters. */ -var reEvaluate = /<%([\s\S]+?)%>/g; - -module.exports = reEvaluate; diff --git a/node_modules/lodash/_reInterpolate.js b/node_modules/lodash/_reInterpolate.js deleted file mode 100644 index d02ff0b..0000000 --- a/node_modules/lodash/_reInterpolate.js +++ /dev/null @@ -1,4 +0,0 @@ -/** Used to match template delimiters. */ -var reInterpolate = /<%=([\s\S]+?)%>/g; - -module.exports = reInterpolate; diff --git a/node_modules/lodash/_realNames.js b/node_modules/lodash/_realNames.js deleted file mode 100644 index aa0d529..0000000 --- a/node_modules/lodash/_realNames.js +++ /dev/null @@ -1,4 +0,0 @@ -/** Used to lookup unminified function names. */ -var realNames = {}; - -module.exports = realNames; diff --git a/node_modules/lodash/_reorder.js b/node_modules/lodash/_reorder.js deleted file mode 100644 index a3502b0..0000000 --- a/node_modules/lodash/_reorder.js +++ /dev/null @@ -1,29 +0,0 @@ -var copyArray = require('./_copyArray'), - isIndex = require('./_isIndex'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMin = Math.min; - -/** - * Reorder `array` according to the specified indexes where the element at - * the first index is assigned as the first element, the element at - * the second index is assigned as the second element, and so on. - * - * @private - * @param {Array} array The array to reorder. - * @param {Array} indexes The arranged array indexes. - * @returns {Array} Returns `array`. - */ -function reorder(array, indexes) { - var arrLength = array.length, - length = nativeMin(indexes.length, arrLength), - oldArray = copyArray(array); - - while (length--) { - var index = indexes[length]; - array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; - } - return array; -} - -module.exports = reorder; diff --git a/node_modules/lodash/_replaceHolders.js b/node_modules/lodash/_replaceHolders.js deleted file mode 100644 index 74360ec..0000000 --- a/node_modules/lodash/_replaceHolders.js +++ /dev/null @@ -1,29 +0,0 @@ -/** Used as the internal argument placeholder. */ -var PLACEHOLDER = '__lodash_placeholder__'; - -/** - * Replaces all `placeholder` elements in `array` with an internal placeholder - * and returns an array of their indexes. - * - * @private - * @param {Array} array The array to modify. - * @param {*} placeholder The placeholder to replace. - * @returns {Array} Returns the new array of placeholder indexes. - */ -function replaceHolders(array, placeholder) { - var index = -1, - length = array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value === placeholder || value === PLACEHOLDER) { - array[index] = PLACEHOLDER; - result[resIndex++] = index; - } - } - return result; -} - -module.exports = replaceHolders; diff --git a/node_modules/lodash/_root.js b/node_modules/lodash/_root.js deleted file mode 100644 index d2852be..0000000 --- a/node_modules/lodash/_root.js +++ /dev/null @@ -1,9 +0,0 @@ -var freeGlobal = require('./_freeGlobal'); - -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - -/** Used as a reference to the global object. */ -var root = freeGlobal || freeSelf || Function('return this')(); - -module.exports = root; diff --git a/node_modules/lodash/_safeGet.js b/node_modules/lodash/_safeGet.js deleted file mode 100644 index b070897..0000000 --- a/node_modules/lodash/_safeGet.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Gets the value at `key`, unless `key` is "__proto__" or "constructor". - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function safeGet(object, key) { - if (key === 'constructor' && typeof object[key] === 'function') { - return; - } - - if (key == '__proto__') { - return; - } - - return object[key]; -} - -module.exports = safeGet; diff --git a/node_modules/lodash/_setCacheAdd.js b/node_modules/lodash/_setCacheAdd.js deleted file mode 100644 index 1081a74..0000000 --- a/node_modules/lodash/_setCacheAdd.js +++ /dev/null @@ -1,19 +0,0 @@ -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; - -/** - * Adds `value` to the array cache. - * - * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. - */ -function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; -} - -module.exports = setCacheAdd; diff --git a/node_modules/lodash/_setCacheHas.js b/node_modules/lodash/_setCacheHas.js deleted file mode 100644 index 9a49255..0000000 --- a/node_modules/lodash/_setCacheHas.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Checks if `value` is in the array cache. - * - * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. - */ -function setCacheHas(value) { - return this.__data__.has(value); -} - -module.exports = setCacheHas; diff --git a/node_modules/lodash/_setData.js b/node_modules/lodash/_setData.js deleted file mode 100644 index e5cf3eb..0000000 --- a/node_modules/lodash/_setData.js +++ /dev/null @@ -1,20 +0,0 @@ -var baseSetData = require('./_baseSetData'), - shortOut = require('./_shortOut'); - -/** - * Sets metadata for `func`. - * - * **Note:** If this function becomes hot, i.e. is invoked a lot in a short - * period of time, it will trip its breaker and transition to an identity - * function to avoid garbage collection pauses in V8. See - * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) - * for more details. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ -var setData = shortOut(baseSetData); - -module.exports = setData; diff --git a/node_modules/lodash/_setToArray.js b/node_modules/lodash/_setToArray.js deleted file mode 100644 index b87f074..0000000 --- a/node_modules/lodash/_setToArray.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ -function setToArray(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = value; - }); - return result; -} - -module.exports = setToArray; diff --git a/node_modules/lodash/_setToPairs.js b/node_modules/lodash/_setToPairs.js deleted file mode 100644 index 36ad37a..0000000 --- a/node_modules/lodash/_setToPairs.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Converts `set` to its value-value pairs. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the value-value pairs. - */ -function setToPairs(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = [value, value]; - }); - return result; -} - -module.exports = setToPairs; diff --git a/node_modules/lodash/_setToString.js b/node_modules/lodash/_setToString.js deleted file mode 100644 index 6ca8419..0000000 --- a/node_modules/lodash/_setToString.js +++ /dev/null @@ -1,14 +0,0 @@ -var baseSetToString = require('./_baseSetToString'), - shortOut = require('./_shortOut'); - -/** - * Sets the `toString` method of `func` to return `string`. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ -var setToString = shortOut(baseSetToString); - -module.exports = setToString; diff --git a/node_modules/lodash/_setWrapToString.js b/node_modules/lodash/_setWrapToString.js deleted file mode 100644 index decdc44..0000000 --- a/node_modules/lodash/_setWrapToString.js +++ /dev/null @@ -1,21 +0,0 @@ -var getWrapDetails = require('./_getWrapDetails'), - insertWrapDetails = require('./_insertWrapDetails'), - setToString = require('./_setToString'), - updateWrapDetails = require('./_updateWrapDetails'); - -/** - * Sets the `toString` method of `wrapper` to mimic the source of `reference` - * with wrapper details in a comment at the top of the source body. - * - * @private - * @param {Function} wrapper The function to modify. - * @param {Function} reference The reference function. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Function} Returns `wrapper`. - */ -function setWrapToString(wrapper, reference, bitmask) { - var source = (reference + ''); - return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); -} - -module.exports = setWrapToString; diff --git a/node_modules/lodash/_shortOut.js b/node_modules/lodash/_shortOut.js deleted file mode 100644 index 3300a07..0000000 --- a/node_modules/lodash/_shortOut.js +++ /dev/null @@ -1,37 +0,0 @@ -/** Used to detect hot functions by number of calls within a span of milliseconds. */ -var HOT_COUNT = 800, - HOT_SPAN = 16; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeNow = Date.now; - -/** - * Creates a function that'll short out and invoke `identity` instead - * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` - * milliseconds. - * - * @private - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new shortable function. - */ -function shortOut(func) { - var count = 0, - lastCalled = 0; - - return function() { - var stamp = nativeNow(), - remaining = HOT_SPAN - (stamp - lastCalled); - - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return arguments[0]; - } - } else { - count = 0; - } - return func.apply(undefined, arguments); - }; -} - -module.exports = shortOut; diff --git a/node_modules/lodash/_shuffleSelf.js b/node_modules/lodash/_shuffleSelf.js deleted file mode 100644 index 8bcc4f5..0000000 --- a/node_modules/lodash/_shuffleSelf.js +++ /dev/null @@ -1,28 +0,0 @@ -var baseRandom = require('./_baseRandom'); - -/** - * A specialized version of `_.shuffle` which mutates and sets the size of `array`. - * - * @private - * @param {Array} array The array to shuffle. - * @param {number} [size=array.length] The size of `array`. - * @returns {Array} Returns `array`. - */ -function shuffleSelf(array, size) { - var index = -1, - length = array.length, - lastIndex = length - 1; - - size = size === undefined ? length : size; - while (++index < size) { - var rand = baseRandom(index, lastIndex), - value = array[rand]; - - array[rand] = array[index]; - array[index] = value; - } - array.length = size; - return array; -} - -module.exports = shuffleSelf; diff --git a/node_modules/lodash/_stackClear.js b/node_modules/lodash/_stackClear.js deleted file mode 100644 index ce8e5a9..0000000 --- a/node_modules/lodash/_stackClear.js +++ /dev/null @@ -1,15 +0,0 @@ -var ListCache = require('./_ListCache'); - -/** - * Removes all key-value entries from the stack. - * - * @private - * @name clear - * @memberOf Stack - */ -function stackClear() { - this.__data__ = new ListCache; - this.size = 0; -} - -module.exports = stackClear; diff --git a/node_modules/lodash/_stackDelete.js b/node_modules/lodash/_stackDelete.js deleted file mode 100644 index ff9887a..0000000 --- a/node_modules/lodash/_stackDelete.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function stackDelete(key) { - var data = this.__data__, - result = data['delete'](key); - - this.size = data.size; - return result; -} - -module.exports = stackDelete; diff --git a/node_modules/lodash/_stackGet.js b/node_modules/lodash/_stackGet.js deleted file mode 100644 index 1cdf004..0000000 --- a/node_modules/lodash/_stackGet.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Gets the stack value for `key`. - * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function stackGet(key) { - return this.__data__.get(key); -} - -module.exports = stackGet; diff --git a/node_modules/lodash/_stackHas.js b/node_modules/lodash/_stackHas.js deleted file mode 100644 index 16a3ad1..0000000 --- a/node_modules/lodash/_stackHas.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Checks if a stack value for `key` exists. - * - * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function stackHas(key) { - return this.__data__.has(key); -} - -module.exports = stackHas; diff --git a/node_modules/lodash/_stackSet.js b/node_modules/lodash/_stackSet.js deleted file mode 100644 index b790ac5..0000000 --- a/node_modules/lodash/_stackSet.js +++ /dev/null @@ -1,34 +0,0 @@ -var ListCache = require('./_ListCache'), - Map = require('./_Map'), - MapCache = require('./_MapCache'); - -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; - -/** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. - */ -function stackSet(key, value) { - var data = this.__data__; - if (data instanceof ListCache) { - var pairs = data.__data__; - if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - this.size = ++data.size; - return this; - } - data = this.__data__ = new MapCache(pairs); - } - data.set(key, value); - this.size = data.size; - return this; -} - -module.exports = stackSet; diff --git a/node_modules/lodash/_strictIndexOf.js b/node_modules/lodash/_strictIndexOf.js deleted file mode 100644 index 0486a49..0000000 --- a/node_modules/lodash/_strictIndexOf.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * A specialized version of `_.indexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function strictIndexOf(array, value, fromIndex) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; -} - -module.exports = strictIndexOf; diff --git a/node_modules/lodash/_strictLastIndexOf.js b/node_modules/lodash/_strictLastIndexOf.js deleted file mode 100644 index d7310dc..0000000 --- a/node_modules/lodash/_strictLastIndexOf.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * A specialized version of `_.lastIndexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function strictLastIndexOf(array, value, fromIndex) { - var index = fromIndex + 1; - while (index--) { - if (array[index] === value) { - return index; - } - } - return index; -} - -module.exports = strictLastIndexOf; diff --git a/node_modules/lodash/_stringSize.js b/node_modules/lodash/_stringSize.js deleted file mode 100644 index 17ef462..0000000 --- a/node_modules/lodash/_stringSize.js +++ /dev/null @@ -1,18 +0,0 @@ -var asciiSize = require('./_asciiSize'), - hasUnicode = require('./_hasUnicode'), - unicodeSize = require('./_unicodeSize'); - -/** - * Gets the number of symbols in `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the string size. - */ -function stringSize(string) { - return hasUnicode(string) - ? unicodeSize(string) - : asciiSize(string); -} - -module.exports = stringSize; diff --git a/node_modules/lodash/_stringToArray.js b/node_modules/lodash/_stringToArray.js deleted file mode 100644 index d161158..0000000 --- a/node_modules/lodash/_stringToArray.js +++ /dev/null @@ -1,18 +0,0 @@ -var asciiToArray = require('./_asciiToArray'), - hasUnicode = require('./_hasUnicode'), - unicodeToArray = require('./_unicodeToArray'); - -/** - * Converts `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ -function stringToArray(string) { - return hasUnicode(string) - ? unicodeToArray(string) - : asciiToArray(string); -} - -module.exports = stringToArray; diff --git a/node_modules/lodash/_stringToPath.js b/node_modules/lodash/_stringToPath.js deleted file mode 100644 index 8f39f8a..0000000 --- a/node_modules/lodash/_stringToPath.js +++ /dev/null @@ -1,27 +0,0 @@ -var memoizeCapped = require('./_memoizeCapped'); - -/** Used to match property names within property paths. */ -var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - -/** Used to match backslashes in property paths. */ -var reEscapeChar = /\\(\\)?/g; - -/** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ -var stringToPath = memoizeCapped(function(string) { - var result = []; - if (string.charCodeAt(0) === 46 /* . */) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, subString) { - result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; -}); - -module.exports = stringToPath; diff --git a/node_modules/lodash/_toKey.js b/node_modules/lodash/_toKey.js deleted file mode 100644 index c6d645c..0000000 --- a/node_modules/lodash/_toKey.js +++ /dev/null @@ -1,21 +0,0 @@ -var isSymbol = require('./isSymbol'); - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ -function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -module.exports = toKey; diff --git a/node_modules/lodash/_toSource.js b/node_modules/lodash/_toSource.js deleted file mode 100644 index a020b38..0000000 --- a/node_modules/lodash/_toSource.js +++ /dev/null @@ -1,26 +0,0 @@ -/** Used for built-in method references. */ -var funcProto = Function.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; - -/** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to convert. - * @returns {string} Returns the source code. - */ -function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; -} - -module.exports = toSource; diff --git a/node_modules/lodash/_trimmedEndIndex.js b/node_modules/lodash/_trimmedEndIndex.js deleted file mode 100644 index 139439a..0000000 --- a/node_modules/lodash/_trimmedEndIndex.js +++ /dev/null @@ -1,19 +0,0 @@ -/** Used to match a single whitespace character. */ -var reWhitespace = /\s/; - -/** - * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace - * character of `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the index of the last non-whitespace character. - */ -function trimmedEndIndex(string) { - var index = string.length; - - while (index-- && reWhitespace.test(string.charAt(index))) {} - return index; -} - -module.exports = trimmedEndIndex; diff --git a/node_modules/lodash/_unescapeHtmlChar.js b/node_modules/lodash/_unescapeHtmlChar.js deleted file mode 100644 index a71fecb..0000000 --- a/node_modules/lodash/_unescapeHtmlChar.js +++ /dev/null @@ -1,21 +0,0 @@ -var basePropertyOf = require('./_basePropertyOf'); - -/** Used to map HTML entities to characters. */ -var htmlUnescapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - ''': "'" -}; - -/** - * Used by `_.unescape` to convert HTML entities to characters. - * - * @private - * @param {string} chr The matched character to unescape. - * @returns {string} Returns the unescaped character. - */ -var unescapeHtmlChar = basePropertyOf(htmlUnescapes); - -module.exports = unescapeHtmlChar; diff --git a/node_modules/lodash/_unicodeSize.js b/node_modules/lodash/_unicodeSize.js deleted file mode 100644 index 68137ec..0000000 --- a/node_modules/lodash/_unicodeSize.js +++ /dev/null @@ -1,44 +0,0 @@ -/** Used to compose unicode character classes. */ -var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, - rsVarRange = '\\ufe0e\\ufe0f'; - -/** Used to compose unicode capture groups. */ -var rsAstral = '[' + rsAstralRange + ']', - rsCombo = '[' + rsComboRange + ']', - rsFitz = '\\ud83c[\\udffb-\\udfff]', - rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', - rsNonAstral = '[^' + rsAstralRange + ']', - rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsZWJ = '\\u200d'; - -/** Used to compose unicode regexes. */ -var reOptMod = rsModifier + '?', - rsOptVar = '[' + rsVarRange + ']?', - rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', - rsSeq = rsOptVar + reOptMod + rsOptJoin, - rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; - -/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ -var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); - -/** - * Gets the size of a Unicode `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ -function unicodeSize(string) { - var result = reUnicode.lastIndex = 0; - while (reUnicode.test(string)) { - ++result; - } - return result; -} - -module.exports = unicodeSize; diff --git a/node_modules/lodash/_unicodeToArray.js b/node_modules/lodash/_unicodeToArray.js deleted file mode 100644 index 2a725c0..0000000 --- a/node_modules/lodash/_unicodeToArray.js +++ /dev/null @@ -1,40 +0,0 @@ -/** Used to compose unicode character classes. */ -var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, - rsVarRange = '\\ufe0e\\ufe0f'; - -/** Used to compose unicode capture groups. */ -var rsAstral = '[' + rsAstralRange + ']', - rsCombo = '[' + rsComboRange + ']', - rsFitz = '\\ud83c[\\udffb-\\udfff]', - rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', - rsNonAstral = '[^' + rsAstralRange + ']', - rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsZWJ = '\\u200d'; - -/** Used to compose unicode regexes. */ -var reOptMod = rsModifier + '?', - rsOptVar = '[' + rsVarRange + ']?', - rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', - rsSeq = rsOptVar + reOptMod + rsOptJoin, - rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; - -/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ -var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); - -/** - * Converts a Unicode `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ -function unicodeToArray(string) { - return string.match(reUnicode) || []; -} - -module.exports = unicodeToArray; diff --git a/node_modules/lodash/_unicodeWords.js b/node_modules/lodash/_unicodeWords.js deleted file mode 100644 index e72e6e0..0000000 --- a/node_modules/lodash/_unicodeWords.js +++ /dev/null @@ -1,69 +0,0 @@ -/** Used to compose unicode character classes. */ -var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, - rsDingbatRange = '\\u2700-\\u27bf', - rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', - rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', - rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', - rsPunctuationRange = '\\u2000-\\u206f', - rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', - rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', - rsVarRange = '\\ufe0e\\ufe0f', - rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; - -/** Used to compose unicode capture groups. */ -var rsApos = "['\u2019]", - rsBreak = '[' + rsBreakRange + ']', - rsCombo = '[' + rsComboRange + ']', - rsDigits = '\\d+', - rsDingbat = '[' + rsDingbatRange + ']', - rsLower = '[' + rsLowerRange + ']', - rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', - rsFitz = '\\ud83c[\\udffb-\\udfff]', - rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', - rsNonAstral = '[^' + rsAstralRange + ']', - rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsUpper = '[' + rsUpperRange + ']', - rsZWJ = '\\u200d'; - -/** Used to compose unicode regexes. */ -var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', - rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', - rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', - rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', - reOptMod = rsModifier + '?', - rsOptVar = '[' + rsVarRange + ']?', - rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', - rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', - rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', - rsSeq = rsOptVar + reOptMod + rsOptJoin, - rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq; - -/** Used to match complex or compound words. */ -var reUnicodeWord = RegExp([ - rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', - rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', - rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, - rsUpper + '+' + rsOptContrUpper, - rsOrdUpper, - rsOrdLower, - rsDigits, - rsEmoji -].join('|'), 'g'); - -/** - * Splits a Unicode `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ -function unicodeWords(string) { - return string.match(reUnicodeWord) || []; -} - -module.exports = unicodeWords; diff --git a/node_modules/lodash/_updateWrapDetails.js b/node_modules/lodash/_updateWrapDetails.js deleted file mode 100644 index 8759fbd..0000000 --- a/node_modules/lodash/_updateWrapDetails.js +++ /dev/null @@ -1,46 +0,0 @@ -var arrayEach = require('./_arrayEach'), - arrayIncludes = require('./_arrayIncludes'); - -/** Used to compose bitmasks for function metadata. */ -var WRAP_BIND_FLAG = 1, - WRAP_BIND_KEY_FLAG = 2, - WRAP_CURRY_FLAG = 8, - WRAP_CURRY_RIGHT_FLAG = 16, - WRAP_PARTIAL_FLAG = 32, - WRAP_PARTIAL_RIGHT_FLAG = 64, - WRAP_ARY_FLAG = 128, - WRAP_REARG_FLAG = 256, - WRAP_FLIP_FLAG = 512; - -/** Used to associate wrap methods with their bit flags. */ -var wrapFlags = [ - ['ary', WRAP_ARY_FLAG], - ['bind', WRAP_BIND_FLAG], - ['bindKey', WRAP_BIND_KEY_FLAG], - ['curry', WRAP_CURRY_FLAG], - ['curryRight', WRAP_CURRY_RIGHT_FLAG], - ['flip', WRAP_FLIP_FLAG], - ['partial', WRAP_PARTIAL_FLAG], - ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], - ['rearg', WRAP_REARG_FLAG] -]; - -/** - * Updates wrapper `details` based on `bitmask` flags. - * - * @private - * @returns {Array} details The details to modify. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Array} Returns `details`. - */ -function updateWrapDetails(details, bitmask) { - arrayEach(wrapFlags, function(pair) { - var value = '_.' + pair[0]; - if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { - details.push(value); - } - }); - return details.sort(); -} - -module.exports = updateWrapDetails; diff --git a/node_modules/lodash/_wrapperClone.js b/node_modules/lodash/_wrapperClone.js deleted file mode 100644 index 7bb58a2..0000000 --- a/node_modules/lodash/_wrapperClone.js +++ /dev/null @@ -1,23 +0,0 @@ -var LazyWrapper = require('./_LazyWrapper'), - LodashWrapper = require('./_LodashWrapper'), - copyArray = require('./_copyArray'); - -/** - * Creates a clone of `wrapper`. - * - * @private - * @param {Object} wrapper The wrapper to clone. - * @returns {Object} Returns the cloned wrapper. - */ -function wrapperClone(wrapper) { - if (wrapper instanceof LazyWrapper) { - return wrapper.clone(); - } - var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); - result.__actions__ = copyArray(wrapper.__actions__); - result.__index__ = wrapper.__index__; - result.__values__ = wrapper.__values__; - return result; -} - -module.exports = wrapperClone; diff --git a/node_modules/lodash/add.js b/node_modules/lodash/add.js deleted file mode 100644 index f069515..0000000 --- a/node_modules/lodash/add.js +++ /dev/null @@ -1,22 +0,0 @@ -var createMathOperation = require('./_createMathOperation'); - -/** - * Adds two numbers. - * - * @static - * @memberOf _ - * @since 3.4.0 - * @category Math - * @param {number} augend The first number in an addition. - * @param {number} addend The second number in an addition. - * @returns {number} Returns the total. - * @example - * - * _.add(6, 4); - * // => 10 - */ -var add = createMathOperation(function(augend, addend) { - return augend + addend; -}, 0); - -module.exports = add; diff --git a/node_modules/lodash/after.js b/node_modules/lodash/after.js deleted file mode 100644 index 3900c97..0000000 --- a/node_modules/lodash/after.js +++ /dev/null @@ -1,42 +0,0 @@ -var toInteger = require('./toInteger'); - -/** Error message constants. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** - * The opposite of `_.before`; this method creates a function that invokes - * `func` once it's called `n` or more times. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {number} n The number of calls before `func` is invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var saves = ['profile', 'settings']; - * - * var done = _.after(saves.length, function() { - * console.log('done saving!'); - * }); - * - * _.forEach(saves, function(type) { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => Logs 'done saving!' after the two async saves have completed. - */ -function after(n, func) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; -} - -module.exports = after; diff --git a/node_modules/lodash/array.js b/node_modules/lodash/array.js deleted file mode 100644 index af688d3..0000000 --- a/node_modules/lodash/array.js +++ /dev/null @@ -1,67 +0,0 @@ -module.exports = { - 'chunk': require('./chunk'), - 'compact': require('./compact'), - 'concat': require('./concat'), - 'difference': require('./difference'), - 'differenceBy': require('./differenceBy'), - 'differenceWith': require('./differenceWith'), - 'drop': require('./drop'), - 'dropRight': require('./dropRight'), - 'dropRightWhile': require('./dropRightWhile'), - 'dropWhile': require('./dropWhile'), - 'fill': require('./fill'), - 'findIndex': require('./findIndex'), - 'findLastIndex': require('./findLastIndex'), - 'first': require('./first'), - 'flatten': require('./flatten'), - 'flattenDeep': require('./flattenDeep'), - 'flattenDepth': require('./flattenDepth'), - 'fromPairs': require('./fromPairs'), - 'head': require('./head'), - 'indexOf': require('./indexOf'), - 'initial': require('./initial'), - 'intersection': require('./intersection'), - 'intersectionBy': require('./intersectionBy'), - 'intersectionWith': require('./intersectionWith'), - 'join': require('./join'), - 'last': require('./last'), - 'lastIndexOf': require('./lastIndexOf'), - 'nth': require('./nth'), - 'pull': require('./pull'), - 'pullAll': require('./pullAll'), - 'pullAllBy': require('./pullAllBy'), - 'pullAllWith': require('./pullAllWith'), - 'pullAt': require('./pullAt'), - 'remove': require('./remove'), - 'reverse': require('./reverse'), - 'slice': require('./slice'), - 'sortedIndex': require('./sortedIndex'), - 'sortedIndexBy': require('./sortedIndexBy'), - 'sortedIndexOf': require('./sortedIndexOf'), - 'sortedLastIndex': require('./sortedLastIndex'), - 'sortedLastIndexBy': require('./sortedLastIndexBy'), - 'sortedLastIndexOf': require('./sortedLastIndexOf'), - 'sortedUniq': require('./sortedUniq'), - 'sortedUniqBy': require('./sortedUniqBy'), - 'tail': require('./tail'), - 'take': require('./take'), - 'takeRight': require('./takeRight'), - 'takeRightWhile': require('./takeRightWhile'), - 'takeWhile': require('./takeWhile'), - 'union': require('./union'), - 'unionBy': require('./unionBy'), - 'unionWith': require('./unionWith'), - 'uniq': require('./uniq'), - 'uniqBy': require('./uniqBy'), - 'uniqWith': require('./uniqWith'), - 'unzip': require('./unzip'), - 'unzipWith': require('./unzipWith'), - 'without': require('./without'), - 'xor': require('./xor'), - 'xorBy': require('./xorBy'), - 'xorWith': require('./xorWith'), - 'zip': require('./zip'), - 'zipObject': require('./zipObject'), - 'zipObjectDeep': require('./zipObjectDeep'), - 'zipWith': require('./zipWith') -}; diff --git a/node_modules/lodash/ary.js b/node_modules/lodash/ary.js deleted file mode 100644 index 70c87d0..0000000 --- a/node_modules/lodash/ary.js +++ /dev/null @@ -1,29 +0,0 @@ -var createWrap = require('./_createWrap'); - -/** Used to compose bitmasks for function metadata. */ -var WRAP_ARY_FLAG = 128; - -/** - * Creates a function that invokes `func`, with up to `n` arguments, - * ignoring any additional arguments. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to cap arguments for. - * @param {number} [n=func.length] The arity cap. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new capped function. - * @example - * - * _.map(['6', '8', '10'], _.ary(parseInt, 1)); - * // => [6, 8, 10] - */ -function ary(func, n, guard) { - n = guard ? undefined : n; - n = (func && n == null) ? func.length : n; - return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n); -} - -module.exports = ary; diff --git a/node_modules/lodash/assign.js b/node_modules/lodash/assign.js deleted file mode 100644 index 909db26..0000000 --- a/node_modules/lodash/assign.js +++ /dev/null @@ -1,58 +0,0 @@ -var assignValue = require('./_assignValue'), - copyObject = require('./_copyObject'), - createAssigner = require('./_createAssigner'), - isArrayLike = require('./isArrayLike'), - isPrototype = require('./_isPrototype'), - keys = require('./keys'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Assigns own enumerable string keyed properties of source objects to the - * destination object. Source objects are applied from left to right. - * Subsequent sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object` and is loosely based on - * [`Object.assign`](https://mdn.io/Object/assign). - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assignIn - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assign({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'c': 3 } - */ -var assign = createAssigner(function(object, source) { - if (isPrototype(source) || isArrayLike(source)) { - copyObject(source, keys(source), object); - return; - } - for (var key in source) { - if (hasOwnProperty.call(source, key)) { - assignValue(object, key, source[key]); - } - } -}); - -module.exports = assign; diff --git a/node_modules/lodash/assignIn.js b/node_modules/lodash/assignIn.js deleted file mode 100644 index e663473..0000000 --- a/node_modules/lodash/assignIn.js +++ /dev/null @@ -1,40 +0,0 @@ -var copyObject = require('./_copyObject'), - createAssigner = require('./_createAssigner'), - keysIn = require('./keysIn'); - -/** - * This method is like `_.assign` except that it iterates over own and - * inherited source properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extend - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assign - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assignIn({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } - */ -var assignIn = createAssigner(function(object, source) { - copyObject(source, keysIn(source), object); -}); - -module.exports = assignIn; diff --git a/node_modules/lodash/assignInWith.js b/node_modules/lodash/assignInWith.js deleted file mode 100644 index 68fcc0b..0000000 --- a/node_modules/lodash/assignInWith.js +++ /dev/null @@ -1,38 +0,0 @@ -var copyObject = require('./_copyObject'), - createAssigner = require('./_createAssigner'), - keysIn = require('./keysIn'); - -/** - * This method is like `_.assignIn` except that it accepts `customizer` - * which is invoked to produce the assigned values. If `customizer` returns - * `undefined`, assignment is handled by the method instead. The `customizer` - * is invoked with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extendWith - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @see _.assignWith - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignInWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ -var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keysIn(source), object, customizer); -}); - -module.exports = assignInWith; diff --git a/node_modules/lodash/assignWith.js b/node_modules/lodash/assignWith.js deleted file mode 100644 index 7dc6c76..0000000 --- a/node_modules/lodash/assignWith.js +++ /dev/null @@ -1,37 +0,0 @@ -var copyObject = require('./_copyObject'), - createAssigner = require('./_createAssigner'), - keys = require('./keys'); - -/** - * This method is like `_.assign` except that it accepts `customizer` - * which is invoked to produce the assigned values. If `customizer` returns - * `undefined`, assignment is handled by the method instead. The `customizer` - * is invoked with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @see _.assignInWith - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ -var assignWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keys(source), object, customizer); -}); - -module.exports = assignWith; diff --git a/node_modules/lodash/at.js b/node_modules/lodash/at.js deleted file mode 100644 index 781ee9e..0000000 --- a/node_modules/lodash/at.js +++ /dev/null @@ -1,23 +0,0 @@ -var baseAt = require('./_baseAt'), - flatRest = require('./_flatRest'); - -/** - * Creates an array of values corresponding to `paths` of `object`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Array} Returns the picked values. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; - * - * _.at(object, ['a[0].b.c', 'a[1]']); - * // => [3, 4] - */ -var at = flatRest(baseAt); - -module.exports = at; diff --git a/node_modules/lodash/attempt.js b/node_modules/lodash/attempt.js deleted file mode 100644 index 624d015..0000000 --- a/node_modules/lodash/attempt.js +++ /dev/null @@ -1,35 +0,0 @@ -var apply = require('./_apply'), - baseRest = require('./_baseRest'), - isError = require('./isError'); - -/** - * Attempts to invoke `func`, returning either the result or the caught error - * object. Any additional arguments are provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Util - * @param {Function} func The function to attempt. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {*} Returns the `func` result or error object. - * @example - * - * // Avoid throwing errors for invalid selectors. - * var elements = _.attempt(function(selector) { - * return document.querySelectorAll(selector); - * }, '>_>'); - * - * if (_.isError(elements)) { - * elements = []; - * } - */ -var attempt = baseRest(function(func, args) { - try { - return apply(func, undefined, args); - } catch (e) { - return isError(e) ? e : new Error(e); - } -}); - -module.exports = attempt; diff --git a/node_modules/lodash/before.js b/node_modules/lodash/before.js deleted file mode 100644 index a3e0a16..0000000 --- a/node_modules/lodash/before.js +++ /dev/null @@ -1,40 +0,0 @@ -var toInteger = require('./toInteger'); - -/** Error message constants. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it's called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {number} n The number of calls at which `func` is no longer invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * jQuery(element).on('click', _.before(5, addContactToList)); - * // => Allows adding up to 4 contacts to the list. - */ -function before(n, func) { - var result; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n > 0) { - result = func.apply(this, arguments); - } - if (n <= 1) { - func = undefined; - } - return result; - }; -} - -module.exports = before; diff --git a/node_modules/lodash/bind.js b/node_modules/lodash/bind.js deleted file mode 100644 index b1076e9..0000000 --- a/node_modules/lodash/bind.js +++ /dev/null @@ -1,57 +0,0 @@ -var baseRest = require('./_baseRest'), - createWrap = require('./_createWrap'), - getHolder = require('./_getHolder'), - replaceHolders = require('./_replaceHolders'); - -/** Used to compose bitmasks for function metadata. */ -var WRAP_BIND_FLAG = 1, - WRAP_PARTIAL_FLAG = 32; - -/** - * Creates a function that invokes `func` with the `this` binding of `thisArg` - * and `partials` prepended to the arguments it receives. - * - * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for partially applied arguments. - * - * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" - * property of bound functions. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to bind. - * @param {*} thisArg The `this` binding of `func`. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * function greet(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * - * var object = { 'user': 'fred' }; - * - * var bound = _.bind(greet, object, 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * // Bound with placeholders. - * var bound = _.bind(greet, object, _, '!'); - * bound('hi'); - * // => 'hi fred!' - */ -var bind = baseRest(function(func, thisArg, partials) { - var bitmask = WRAP_BIND_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bind)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(func, bitmask, thisArg, partials, holders); -}); - -// Assign default placeholders. -bind.placeholder = {}; - -module.exports = bind; diff --git a/node_modules/lodash/bindAll.js b/node_modules/lodash/bindAll.js deleted file mode 100644 index a35706d..0000000 --- a/node_modules/lodash/bindAll.js +++ /dev/null @@ -1,41 +0,0 @@ -var arrayEach = require('./_arrayEach'), - baseAssignValue = require('./_baseAssignValue'), - bind = require('./bind'), - flatRest = require('./_flatRest'), - toKey = require('./_toKey'); - -/** - * Binds methods of an object to the object itself, overwriting the existing - * method. - * - * **Note:** This method doesn't set the "length" property of bound functions. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {Object} object The object to bind and assign the bound methods to. - * @param {...(string|string[])} methodNames The object method names to bind. - * @returns {Object} Returns `object`. - * @example - * - * var view = { - * 'label': 'docs', - * 'click': function() { - * console.log('clicked ' + this.label); - * } - * }; - * - * _.bindAll(view, ['click']); - * jQuery(element).on('click', view.click); - * // => Logs 'clicked docs' when clicked. - */ -var bindAll = flatRest(function(object, methodNames) { - arrayEach(methodNames, function(key) { - key = toKey(key); - baseAssignValue(object, key, bind(object[key], object)); - }); - return object; -}); - -module.exports = bindAll; diff --git a/node_modules/lodash/bindKey.js b/node_modules/lodash/bindKey.js deleted file mode 100644 index f7fd64c..0000000 --- a/node_modules/lodash/bindKey.js +++ /dev/null @@ -1,68 +0,0 @@ -var baseRest = require('./_baseRest'), - createWrap = require('./_createWrap'), - getHolder = require('./_getHolder'), - replaceHolders = require('./_replaceHolders'); - -/** Used to compose bitmasks for function metadata. */ -var WRAP_BIND_FLAG = 1, - WRAP_BIND_KEY_FLAG = 2, - WRAP_PARTIAL_FLAG = 32; - -/** - * Creates a function that invokes the method at `object[key]` with `partials` - * prepended to the arguments it receives. - * - * This method differs from `_.bind` by allowing bound functions to reference - * methods that may be redefined or don't yet exist. See - * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) - * for more details. - * - * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Function - * @param {Object} object The object to invoke the method on. - * @param {string} key The key of the method. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var object = { - * 'user': 'fred', - * 'greet': function(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * }; - * - * var bound = _.bindKey(object, 'greet', 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * object.greet = function(greeting, punctuation) { - * return greeting + 'ya ' + this.user + punctuation; - * }; - * - * bound('!'); - * // => 'hiya fred!' - * - * // Bound with placeholders. - * var bound = _.bindKey(object, 'greet', _, '!'); - * bound('hi'); - * // => 'hiya fred!' - */ -var bindKey = baseRest(function(object, key, partials) { - var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bindKey)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(key, bitmask, object, partials, holders); -}); - -// Assign default placeholders. -bindKey.placeholder = {}; - -module.exports = bindKey; diff --git a/node_modules/lodash/camelCase.js b/node_modules/lodash/camelCase.js deleted file mode 100644 index d7390de..0000000 --- a/node_modules/lodash/camelCase.js +++ /dev/null @@ -1,29 +0,0 @@ -var capitalize = require('./capitalize'), - createCompounder = require('./_createCompounder'); - -/** - * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the camel cased string. - * @example - * - * _.camelCase('Foo Bar'); - * // => 'fooBar' - * - * _.camelCase('--foo-bar--'); - * // => 'fooBar' - * - * _.camelCase('__FOO_BAR__'); - * // => 'fooBar' - */ -var camelCase = createCompounder(function(result, word, index) { - word = word.toLowerCase(); - return result + (index ? capitalize(word) : word); -}); - -module.exports = camelCase; diff --git a/node_modules/lodash/capitalize.js b/node_modules/lodash/capitalize.js deleted file mode 100644 index 3e1600e..0000000 --- a/node_modules/lodash/capitalize.js +++ /dev/null @@ -1,23 +0,0 @@ -var toString = require('./toString'), - upperFirst = require('./upperFirst'); - -/** - * Converts the first character of `string` to upper case and the remaining - * to lower case. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to capitalize. - * @returns {string} Returns the capitalized string. - * @example - * - * _.capitalize('FRED'); - * // => 'Fred' - */ -function capitalize(string) { - return upperFirst(toString(string).toLowerCase()); -} - -module.exports = capitalize; diff --git a/node_modules/lodash/castArray.js b/node_modules/lodash/castArray.js deleted file mode 100644 index e470bdb..0000000 --- a/node_modules/lodash/castArray.js +++ /dev/null @@ -1,44 +0,0 @@ -var isArray = require('./isArray'); - -/** - * Casts `value` as an array if it's not one. - * - * @static - * @memberOf _ - * @since 4.4.0 - * @category Lang - * @param {*} value The value to inspect. - * @returns {Array} Returns the cast array. - * @example - * - * _.castArray(1); - * // => [1] - * - * _.castArray({ 'a': 1 }); - * // => [{ 'a': 1 }] - * - * _.castArray('abc'); - * // => ['abc'] - * - * _.castArray(null); - * // => [null] - * - * _.castArray(undefined); - * // => [undefined] - * - * _.castArray(); - * // => [] - * - * var array = [1, 2, 3]; - * console.log(_.castArray(array) === array); - * // => true - */ -function castArray() { - if (!arguments.length) { - return []; - } - var value = arguments[0]; - return isArray(value) ? value : [value]; -} - -module.exports = castArray; diff --git a/node_modules/lodash/ceil.js b/node_modules/lodash/ceil.js deleted file mode 100644 index 56c8722..0000000 --- a/node_modules/lodash/ceil.js +++ /dev/null @@ -1,26 +0,0 @@ -var createRound = require('./_createRound'); - -/** - * Computes `number` rounded up to `precision`. - * - * @static - * @memberOf _ - * @since 3.10.0 - * @category Math - * @param {number} number The number to round up. - * @param {number} [precision=0] The precision to round up to. - * @returns {number} Returns the rounded up number. - * @example - * - * _.ceil(4.006); - * // => 5 - * - * _.ceil(6.004, 2); - * // => 6.01 - * - * _.ceil(6040, -2); - * // => 6100 - */ -var ceil = createRound('ceil'); - -module.exports = ceil; diff --git a/node_modules/lodash/chain.js b/node_modules/lodash/chain.js deleted file mode 100644 index f6cd647..0000000 --- a/node_modules/lodash/chain.js +++ /dev/null @@ -1,38 +0,0 @@ -var lodash = require('./wrapperLodash'); - -/** - * Creates a `lodash` wrapper instance that wraps `value` with explicit method - * chain sequences enabled. The result of such sequences must be unwrapped - * with `_#value`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Seq - * @param {*} value The value to wrap. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'pebbles', 'age': 1 } - * ]; - * - * var youngest = _ - * .chain(users) - * .sortBy('age') - * .map(function(o) { - * return o.user + ' is ' + o.age; - * }) - * .head() - * .value(); - * // => 'pebbles is 1' - */ -function chain(value) { - var result = lodash(value); - result.__chain__ = true; - return result; -} - -module.exports = chain; diff --git a/node_modules/lodash/chunk.js b/node_modules/lodash/chunk.js deleted file mode 100644 index 5b562fe..0000000 --- a/node_modules/lodash/chunk.js +++ /dev/null @@ -1,50 +0,0 @@ -var baseSlice = require('./_baseSlice'), - isIterateeCall = require('./_isIterateeCall'), - toInteger = require('./toInteger'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeCeil = Math.ceil, - nativeMax = Math.max; - -/** - * Creates an array of elements split into groups the length of `size`. - * If `array` can't be split evenly, the final chunk will be the remaining - * elements. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to process. - * @param {number} [size=1] The length of each chunk - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the new array of chunks. - * @example - * - * _.chunk(['a', 'b', 'c', 'd'], 2); - * // => [['a', 'b'], ['c', 'd']] - * - * _.chunk(['a', 'b', 'c', 'd'], 3); - * // => [['a', 'b', 'c'], ['d']] - */ -function chunk(array, size, guard) { - if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { - size = 1; - } else { - size = nativeMax(toInteger(size), 0); - } - var length = array == null ? 0 : array.length; - if (!length || size < 1) { - return []; - } - var index = 0, - resIndex = 0, - result = Array(nativeCeil(length / size)); - - while (index < length) { - result[resIndex++] = baseSlice(array, index, (index += size)); - } - return result; -} - -module.exports = chunk; diff --git a/node_modules/lodash/clamp.js b/node_modules/lodash/clamp.js deleted file mode 100644 index 91a72c9..0000000 --- a/node_modules/lodash/clamp.js +++ /dev/null @@ -1,39 +0,0 @@ -var baseClamp = require('./_baseClamp'), - toNumber = require('./toNumber'); - -/** - * Clamps `number` within the inclusive `lower` and `upper` bounds. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Number - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. - * @example - * - * _.clamp(-10, -5, 5); - * // => -5 - * - * _.clamp(10, -5, 5); - * // => 5 - */ -function clamp(number, lower, upper) { - if (upper === undefined) { - upper = lower; - lower = undefined; - } - if (upper !== undefined) { - upper = toNumber(upper); - upper = upper === upper ? upper : 0; - } - if (lower !== undefined) { - lower = toNumber(lower); - lower = lower === lower ? lower : 0; - } - return baseClamp(toNumber(number), lower, upper); -} - -module.exports = clamp; diff --git a/node_modules/lodash/clone.js b/node_modules/lodash/clone.js deleted file mode 100644 index dd439d6..0000000 --- a/node_modules/lodash/clone.js +++ /dev/null @@ -1,36 +0,0 @@ -var baseClone = require('./_baseClone'); - -/** Used to compose bitmasks for cloning. */ -var CLONE_SYMBOLS_FLAG = 4; - -/** - * Creates a shallow clone of `value`. - * - * **Note:** This method is loosely based on the - * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) - * and supports cloning arrays, array buffers, booleans, date objects, maps, - * numbers, `Object` objects, regexes, sets, strings, symbols, and typed - * arrays. The own enumerable properties of `arguments` objects are cloned - * as plain objects. An empty object is returned for uncloneable values such - * as error objects, functions, DOM nodes, and WeakMaps. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to clone. - * @returns {*} Returns the cloned value. - * @see _.cloneDeep - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var shallow = _.clone(objects); - * console.log(shallow[0] === objects[0]); - * // => true - */ -function clone(value) { - return baseClone(value, CLONE_SYMBOLS_FLAG); -} - -module.exports = clone; diff --git a/node_modules/lodash/cloneDeep.js b/node_modules/lodash/cloneDeep.js deleted file mode 100644 index 4425fbe..0000000 --- a/node_modules/lodash/cloneDeep.js +++ /dev/null @@ -1,29 +0,0 @@ -var baseClone = require('./_baseClone'); - -/** Used to compose bitmasks for cloning. */ -var CLONE_DEEP_FLAG = 1, - CLONE_SYMBOLS_FLAG = 4; - -/** - * This method is like `_.clone` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @returns {*} Returns the deep cloned value. - * @see _.clone - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var deep = _.cloneDeep(objects); - * console.log(deep[0] === objects[0]); - * // => false - */ -function cloneDeep(value) { - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); -} - -module.exports = cloneDeep; diff --git a/node_modules/lodash/cloneDeepWith.js b/node_modules/lodash/cloneDeepWith.js deleted file mode 100644 index fd9c6c0..0000000 --- a/node_modules/lodash/cloneDeepWith.js +++ /dev/null @@ -1,40 +0,0 @@ -var baseClone = require('./_baseClone'); - -/** Used to compose bitmasks for cloning. */ -var CLONE_DEEP_FLAG = 1, - CLONE_SYMBOLS_FLAG = 4; - -/** - * This method is like `_.cloneWith` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @param {Function} [customizer] The function to customize cloning. - * @returns {*} Returns the deep cloned value. - * @see _.cloneWith - * @example - * - * function customizer(value) { - * if (_.isElement(value)) { - * return value.cloneNode(true); - * } - * } - * - * var el = _.cloneDeepWith(document.body, customizer); - * - * console.log(el === document.body); - * // => false - * console.log(el.nodeName); - * // => 'BODY' - * console.log(el.childNodes.length); - * // => 20 - */ -function cloneDeepWith(value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); -} - -module.exports = cloneDeepWith; diff --git a/node_modules/lodash/cloneWith.js b/node_modules/lodash/cloneWith.js deleted file mode 100644 index d2f4e75..0000000 --- a/node_modules/lodash/cloneWith.js +++ /dev/null @@ -1,42 +0,0 @@ -var baseClone = require('./_baseClone'); - -/** Used to compose bitmasks for cloning. */ -var CLONE_SYMBOLS_FLAG = 4; - -/** - * This method is like `_.clone` except that it accepts `customizer` which - * is invoked to produce the cloned value. If `customizer` returns `undefined`, - * cloning is handled by the method instead. The `customizer` is invoked with - * up to four arguments; (value [, index|key, object, stack]). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to clone. - * @param {Function} [customizer] The function to customize cloning. - * @returns {*} Returns the cloned value. - * @see _.cloneDeepWith - * @example - * - * function customizer(value) { - * if (_.isElement(value)) { - * return value.cloneNode(false); - * } - * } - * - * var el = _.cloneWith(document.body, customizer); - * - * console.log(el === document.body); - * // => false - * console.log(el.nodeName); - * // => 'BODY' - * console.log(el.childNodes.length); - * // => 0 - */ -function cloneWith(value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); -} - -module.exports = cloneWith; diff --git a/node_modules/lodash/collection.js b/node_modules/lodash/collection.js deleted file mode 100644 index 77fe837..0000000 --- a/node_modules/lodash/collection.js +++ /dev/null @@ -1,30 +0,0 @@ -module.exports = { - 'countBy': require('./countBy'), - 'each': require('./each'), - 'eachRight': require('./eachRight'), - 'every': require('./every'), - 'filter': require('./filter'), - 'find': require('./find'), - 'findLast': require('./findLast'), - 'flatMap': require('./flatMap'), - 'flatMapDeep': require('./flatMapDeep'), - 'flatMapDepth': require('./flatMapDepth'), - 'forEach': require('./forEach'), - 'forEachRight': require('./forEachRight'), - 'groupBy': require('./groupBy'), - 'includes': require('./includes'), - 'invokeMap': require('./invokeMap'), - 'keyBy': require('./keyBy'), - 'map': require('./map'), - 'orderBy': require('./orderBy'), - 'partition': require('./partition'), - 'reduce': require('./reduce'), - 'reduceRight': require('./reduceRight'), - 'reject': require('./reject'), - 'sample': require('./sample'), - 'sampleSize': require('./sampleSize'), - 'shuffle': require('./shuffle'), - 'size': require('./size'), - 'some': require('./some'), - 'sortBy': require('./sortBy') -}; diff --git a/node_modules/lodash/commit.js b/node_modules/lodash/commit.js deleted file mode 100644 index fe4db71..0000000 --- a/node_modules/lodash/commit.js +++ /dev/null @@ -1,33 +0,0 @@ -var LodashWrapper = require('./_LodashWrapper'); - -/** - * Executes the chain sequence and returns the wrapped result. - * - * @name commit - * @memberOf _ - * @since 3.2.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2]; - * var wrapped = _(array).push(3); - * - * console.log(array); - * // => [1, 2] - * - * wrapped = wrapped.commit(); - * console.log(array); - * // => [1, 2, 3] - * - * wrapped.last(); - * // => 3 - * - * console.log(array); - * // => [1, 2, 3] - */ -function wrapperCommit() { - return new LodashWrapper(this.value(), this.__chain__); -} - -module.exports = wrapperCommit; diff --git a/node_modules/lodash/compact.js b/node_modules/lodash/compact.js deleted file mode 100644 index 031fab4..0000000 --- a/node_modules/lodash/compact.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are falsey. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to compact. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ -function compact(array) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value) { - result[resIndex++] = value; - } - } - return result; -} - -module.exports = compact; diff --git a/node_modules/lodash/concat.js b/node_modules/lodash/concat.js deleted file mode 100644 index 1da48a4..0000000 --- a/node_modules/lodash/concat.js +++ /dev/null @@ -1,43 +0,0 @@ -var arrayPush = require('./_arrayPush'), - baseFlatten = require('./_baseFlatten'), - copyArray = require('./_copyArray'), - isArray = require('./isArray'); - -/** - * Creates a new array concatenating `array` with any additional arrays - * and/or values. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to concatenate. - * @param {...*} [values] The values to concatenate. - * @returns {Array} Returns the new concatenated array. - * @example - * - * var array = [1]; - * var other = _.concat(array, 2, [3], [[4]]); - * - * console.log(other); - * // => [1, 2, 3, [4]] - * - * console.log(array); - * // => [1] - */ -function concat() { - var length = arguments.length; - if (!length) { - return []; - } - var args = Array(length - 1), - array = arguments[0], - index = length; - - while (index--) { - args[index - 1] = arguments[index]; - } - return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); -} - -module.exports = concat; diff --git a/node_modules/lodash/cond.js b/node_modules/lodash/cond.js deleted file mode 100644 index 6455598..0000000 --- a/node_modules/lodash/cond.js +++ /dev/null @@ -1,60 +0,0 @@ -var apply = require('./_apply'), - arrayMap = require('./_arrayMap'), - baseIteratee = require('./_baseIteratee'), - baseRest = require('./_baseRest'); - -/** Error message constants. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** - * Creates a function that iterates over `pairs` and invokes the corresponding - * function of the first predicate to return truthy. The predicate-function - * pairs are invoked with the `this` binding and arguments of the created - * function. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Util - * @param {Array} pairs The predicate-function pairs. - * @returns {Function} Returns the new composite function. - * @example - * - * var func = _.cond([ - * [_.matches({ 'a': 1 }), _.constant('matches A')], - * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')], - * [_.stubTrue, _.constant('no match')] - * ]); - * - * func({ 'a': 1, 'b': 2 }); - * // => 'matches A' - * - * func({ 'a': 0, 'b': 1 }); - * // => 'matches B' - * - * func({ 'a': '1', 'b': '2' }); - * // => 'no match' - */ -function cond(pairs) { - var length = pairs == null ? 0 : pairs.length, - toIteratee = baseIteratee; - - pairs = !length ? [] : arrayMap(pairs, function(pair) { - if (typeof pair[1] != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return [toIteratee(pair[0]), pair[1]]; - }); - - return baseRest(function(args) { - var index = -1; - while (++index < length) { - var pair = pairs[index]; - if (apply(pair[0], this, args)) { - return apply(pair[1], this, args); - } - } - }); -} - -module.exports = cond; diff --git a/node_modules/lodash/conforms.js b/node_modules/lodash/conforms.js deleted file mode 100644 index 5501a94..0000000 --- a/node_modules/lodash/conforms.js +++ /dev/null @@ -1,35 +0,0 @@ -var baseClone = require('./_baseClone'), - baseConforms = require('./_baseConforms'); - -/** Used to compose bitmasks for cloning. */ -var CLONE_DEEP_FLAG = 1; - -/** - * Creates a function that invokes the predicate properties of `source` with - * the corresponding property values of a given object, returning `true` if - * all predicates return truthy, else `false`. - * - * **Note:** The created function is equivalent to `_.conformsTo` with - * `source` partially applied. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Util - * @param {Object} source The object of property predicates to conform to. - * @returns {Function} Returns the new spec function. - * @example - * - * var objects = [ - * { 'a': 2, 'b': 1 }, - * { 'a': 1, 'b': 2 } - * ]; - * - * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } })); - * // => [{ 'a': 1, 'b': 2 }] - */ -function conforms(source) { - return baseConforms(baseClone(source, CLONE_DEEP_FLAG)); -} - -module.exports = conforms; diff --git a/node_modules/lodash/conformsTo.js b/node_modules/lodash/conformsTo.js deleted file mode 100644 index b8a93eb..0000000 --- a/node_modules/lodash/conformsTo.js +++ /dev/null @@ -1,32 +0,0 @@ -var baseConformsTo = require('./_baseConformsTo'), - keys = require('./keys'); - -/** - * Checks if `object` conforms to `source` by invoking the predicate - * properties of `source` with the corresponding property values of `object`. - * - * **Note:** This method is equivalent to `_.conforms` when `source` is - * partially applied. - * - * @static - * @memberOf _ - * @since 4.14.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * - * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); - * // => true - * - * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); - * // => false - */ -function conformsTo(object, source) { - return source == null || baseConformsTo(object, source, keys(source)); -} - -module.exports = conformsTo; diff --git a/node_modules/lodash/constant.js b/node_modules/lodash/constant.js deleted file mode 100644 index 655ece3..0000000 --- a/node_modules/lodash/constant.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Creates a function that returns `value`. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {*} value The value to return from the new function. - * @returns {Function} Returns the new constant function. - * @example - * - * var objects = _.times(2, _.constant({ 'a': 1 })); - * - * console.log(objects); - * // => [{ 'a': 1 }, { 'a': 1 }] - * - * console.log(objects[0] === objects[1]); - * // => true - */ -function constant(value) { - return function() { - return value; - }; -} - -module.exports = constant; diff --git a/node_modules/lodash/core.js b/node_modules/lodash/core.js deleted file mode 100644 index be1d567..0000000 --- a/node_modules/lodash/core.js +++ /dev/null @@ -1,3877 +0,0 @@ -/** - * @license - * Lodash (Custom Build) - * Build: `lodash core -o ./dist/lodash.core.js` - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ -;(function() { - - /** Used as a safe reference for `undefined` in pre-ES5 environments. */ - var undefined; - - /** Used as the semantic version number. */ - var VERSION = '4.17.21'; - - /** Error message constants. */ - var FUNC_ERROR_TEXT = 'Expected a function'; - - /** Used to compose bitmasks for value comparisons. */ - var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - - /** Used to compose bitmasks for function metadata. */ - var WRAP_BIND_FLAG = 1, - WRAP_PARTIAL_FLAG = 32; - - /** Used as references for various `Number` constants. */ - var INFINITY = 1 / 0, - MAX_SAFE_INTEGER = 9007199254740991; - - /** `Object#toString` result references. */ - var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - asyncTag = '[object AsyncFunction]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - numberTag = '[object Number]', - objectTag = '[object Object]', - proxyTag = '[object Proxy]', - regexpTag = '[object RegExp]', - stringTag = '[object String]'; - - /** Used to match HTML entities and HTML characters. */ - var reUnescapedHtml = /[&<>"']/g, - reHasUnescapedHtml = RegExp(reUnescapedHtml.source); - - /** Used to detect unsigned integer values. */ - var reIsUint = /^(?:0|[1-9]\d*)$/; - - /** Used to map characters to HTML entities. */ - var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' - }; - - /** Detect free variable `global` from Node.js. */ - var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; - - /** Detect free variable `self`. */ - var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - - /** Used as a reference to the global object. */ - var root = freeGlobal || freeSelf || Function('return this')(); - - /** Detect free variable `exports`. */ - var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - - /** Detect free variable `module`. */ - var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - - /*--------------------------------------------------------------------------*/ - - /** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ - function arrayPush(array, values) { - array.push.apply(array, values); - return array; - } - - /** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); - - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; - } - - /** - * The base implementation of `_.propertyOf` without support for deep paths. - * - * @private - * @param {Object} object The object to query. - * @returns {Function} Returns the new accessor function. - */ - function basePropertyOf(object) { - return function(key) { - return object == null ? undefined : object[key]; - }; - } - - /** - * The base implementation of `_.reduce` and `_.reduceRight`, without support - * for iteratee shorthands, which iterates over `collection` using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} accumulator The initial value. - * @param {boolean} initAccum Specify using the first or last element of - * `collection` as the initial value. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the accumulated value. - */ - function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { - eachFunc(collection, function(value, index, collection) { - accumulator = initAccum - ? (initAccum = false, value) - : iteratee(accumulator, value, index, collection); - }); - return accumulator; - } - - /** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. - */ - function baseValues(object, props) { - return baseMap(props, function(key) { - return object[key]; - }); - } - - /** - * Used by `_.escape` to convert characters to HTML entities. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - var escapeHtmlChar = basePropertyOf(htmlEscapes); - - /** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ - function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; - } - - /*--------------------------------------------------------------------------*/ - - /** Used for built-in method references. */ - var arrayProto = Array.prototype, - objectProto = Object.prototype; - - /** Used to check objects for own properties. */ - var hasOwnProperty = objectProto.hasOwnProperty; - - /** Used to generate unique IDs. */ - var idCounter = 0; - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var nativeObjectToString = objectProto.toString; - - /** Used to restore the original `_` reference in `_.noConflict`. */ - var oldDash = root._; - - /** Built-in value references. */ - var objectCreate = Object.create, - propertyIsEnumerable = objectProto.propertyIsEnumerable; - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeIsFinite = root.isFinite, - nativeKeys = overArg(Object.keys, Object), - nativeMax = Math.max; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` object which wraps `value` to enable implicit method - * chain sequences. Methods that operate on and return arrays, collections, - * and functions can be chained together. Methods that retrieve a single value - * or may return a primitive value will automatically end the chain sequence - * and return the unwrapped value. Otherwise, the value must be unwrapped - * with `_#value`. - * - * Explicit chain sequences, which must be unwrapped with `_#value`, may be - * enabled using `_.chain`. - * - * The execution of chained methods is lazy, that is, it's deferred until - * `_#value` is implicitly or explicitly called. - * - * Lazy evaluation allows several methods to support shortcut fusion. - * Shortcut fusion is an optimization to merge iteratee calls; this avoids - * the creation of intermediate arrays and can greatly reduce the number of - * iteratee executions. Sections of a chain sequence qualify for shortcut - * fusion if the section is applied to an array and iteratees accept only - * one argument. The heuristic for whether a section qualifies for shortcut - * fusion is subject to change. - * - * Chaining is supported in custom builds as long as the `_#value` method is - * directly or indirectly included in the build. - * - * In addition to lodash methods, wrappers have `Array` and `String` methods. - * - * The wrapper `Array` methods are: - * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` - * - * The wrapper `String` methods are: - * `replace` and `split` - * - * The wrapper methods that support shortcut fusion are: - * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, - * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, - * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` - * - * The chainable wrapper methods are: - * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, - * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, - * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, - * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, - * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, - * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, - * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, - * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, - * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, - * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, - * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, - * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, - * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, - * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, - * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, - * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, - * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, - * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, - * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, - * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, - * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, - * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, - * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, - * `zipObject`, `zipObjectDeep`, and `zipWith` - * - * The wrapper methods that are **not** chainable by default are: - * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, - * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, - * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, - * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, - * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, - * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, - * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, - * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, - * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, - * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, - * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, - * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, - * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, - * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, - * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, - * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, - * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, - * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, - * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, - * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, - * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, - * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, - * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, - * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, - * `upperFirst`, `value`, and `words` - * - * @name _ - * @constructor - * @category Seq - * @param {*} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var wrapped = _([1, 2, 3]); - * - * // Returns an unwrapped value. - * wrapped.reduce(_.add); - * // => 6 - * - * // Returns a wrapped value. - * var squares = wrapped.map(square); - * - * _.isArray(squares); - * // => false - * - * _.isArray(squares.value()); - * // => true - */ - function lodash(value) { - return value instanceof LodashWrapper - ? value - : new LodashWrapper(value); - } - - /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} proto The object to inherit from. - * @returns {Object} Returns the new object. - */ - var baseCreate = (function() { - function object() {} - return function(proto) { - if (!isObject(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); - } - object.prototype = proto; - var result = new object; - object.prototype = undefined; - return result; - }; - }()); - - /** - * The base constructor for creating `lodash` wrapper objects. - * - * @private - * @param {*} value The value to wrap. - * @param {boolean} [chainAll] Enable explicit method chain sequences. - */ - function LodashWrapper(value, chainAll) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__chain__ = !!chainAll; - } - - LodashWrapper.prototype = baseCreate(lodash.prototype); - LodashWrapper.prototype.constructor = LodashWrapper; - - /*------------------------------------------------------------------------*/ - - /** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } - } - - /** - * The base implementation of `assignValue` and `assignMergeValue` without - * value checks. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function baseAssignValue(object, key, value) { - object[key] = value; - } - - /** - * The base implementation of `_.delay` and `_.defer` which accepts `args` - * to provide to `func`. - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {Array} args The arguments to provide to `func`. - * @returns {number|Object} Returns the timer id or timeout object. - */ - function baseDelay(func, wait, args) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return setTimeout(function() { func.apply(undefined, args); }, wait); - } - - /** - * The base implementation of `_.forEach` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ - var baseEach = createBaseEach(baseForOwn); - - /** - * The base implementation of `_.every` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false` - */ - function baseEvery(collection, predicate) { - var result = true; - baseEach(collection, function(value, index, collection) { - result = !!predicate(value, index, collection); - return result; - }); - return result; - } - - /** - * The base implementation of methods like `_.max` and `_.min` which accepts a - * `comparator` to determine the extremum value. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The iteratee invoked per iteration. - * @param {Function} comparator The comparator used to compare values. - * @returns {*} Returns the extremum value. - */ - function baseExtremum(array, iteratee, comparator) { - var index = -1, - length = array.length; - - while (++index < length) { - var value = array[index], - current = iteratee(value); - - if (current != null && (computed === undefined - ? (current === current && !false) - : comparator(current, computed) - )) { - var computed = current, - result = value; - } - } - return result; - } - - /** - * The base implementation of `_.filter` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function baseFilter(collection, predicate) { - var result = []; - baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result.push(value); - } - }); - return result; - } - - /** - * The base implementation of `_.flatten` with support for restricting flattening. - * - * @private - * @param {Array} array The array to flatten. - * @param {number} depth The maximum recursion depth. - * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. - * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. - * @param {Array} [result=[]] The initial result value. - * @returns {Array} Returns the new flattened array. - */ - function baseFlatten(array, depth, predicate, isStrict, result) { - var index = -1, - length = array.length; - - predicate || (predicate = isFlattenable); - result || (result = []); - - while (++index < length) { - var value = array[index]; - if (depth > 0 && predicate(value)) { - if (depth > 1) { - // Recursively flatten arrays (susceptible to call stack limits). - baseFlatten(value, depth - 1, predicate, isStrict, result); - } else { - arrayPush(result, value); - } - } else if (!isStrict) { - result[result.length] = value; - } - } - return result; - } - - /** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseFor = createBaseFor(); - - /** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); - } - - /** - * The base implementation of `_.functions` which creates an array of - * `object` function property names filtered from `props`. - * - * @private - * @param {Object} object The object to inspect. - * @param {Array} props The property names to filter. - * @returns {Array} Returns the function names. - */ - function baseFunctions(object, props) { - return baseFilter(props, function(key) { - return isFunction(object[key]); - }); - } - - /** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - function baseGetTag(value) { - return objectToString(value); - } - - /** - * The base implementation of `_.gt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - */ - function baseGt(value, other) { - return value > other; - } - - /** - * The base implementation of `_.isArguments`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - */ - var baseIsArguments = noop; - - /** - * The base implementation of `_.isDate` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - */ - function baseIsDate(value) { - return isObjectLike(value) && baseGetTag(value) == dateTag; - } - - /** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {boolean} bitmask The bitmask flags. - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Function} [customizer] The function to customize comparisons. - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ - function baseIsEqual(value, other, bitmask, customizer, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); - } - - /** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = objIsArr ? arrayTag : baseGetTag(object), - othTag = othIsArr ? arrayTag : baseGetTag(other); - - objTag = objTag == argsTag ? objectTag : objTag; - othTag = othTag == argsTag ? objectTag : othTag; - - var objIsObj = objTag == objectTag, - othIsObj = othTag == objectTag, - isSameTag = objTag == othTag; - - stack || (stack = []); - var objStack = find(stack, function(entry) { - return entry[0] == object; - }); - var othStack = find(stack, function(entry) { - return entry[0] == other; - }); - if (objStack && othStack) { - return objStack[1] == other; - } - stack.push([object, other]); - stack.push([other, object]); - if (isSameTag && !objIsObj) { - var result = (objIsArr) - ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) - : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); - stack.pop(); - return result; - } - if (!(bitmask & COMPARE_PARTIAL_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; - - var result = equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); - stack.pop(); - return result; - } - } - if (!isSameTag) { - return false; - } - var result = equalObjects(object, other, bitmask, customizer, equalFunc, stack); - stack.pop(); - return result; - } - - /** - * The base implementation of `_.isRegExp` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - */ - function baseIsRegExp(value) { - return isObjectLike(value) && baseGetTag(value) == regexpTag; - } - - /** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ - function baseIteratee(func) { - if (typeof func == 'function') { - return func; - } - if (func == null) { - return identity; - } - return (typeof func == 'object' ? baseMatches : baseProperty)(func); - } - - /** - * The base implementation of `_.lt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - */ - function baseLt(value, other) { - return value < other; - } - - /** - * The base implementation of `_.map` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function baseMap(collection, iteratee) { - var index = -1, - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value, key, collection) { - result[++index] = iteratee(value, key, collection); - }); - return result; - } - - /** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - */ - function baseMatches(source) { - var props = nativeKeys(source); - return function(object) { - var length = props.length; - if (object == null) { - return !length; - } - object = Object(object); - while (length--) { - var key = props[length]; - if (!(key in object && - baseIsEqual(source[key], object[key], COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG) - )) { - return false; - } - } - return true; - }; - } - - /** - * The base implementation of `_.pick` without support for individual - * property identifiers. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @returns {Object} Returns the new object. - */ - function basePick(object, props) { - object = Object(object); - return reduce(props, function(result, key) { - if (key in object) { - result[key] = object[key]; - } - return result; - }, {}); - } - - /** - * The base implementation of `_.rest` which doesn't validate or coerce arguments. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - */ - function baseRest(func, start) { - return setToString(overRest(func, start, identity), func + ''); - } - - /** - * The base implementation of `_.slice` without an iteratee call guard. - * - * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; - } - return result; - } - - /** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ - function copyArray(source) { - return baseSlice(source, 0, source.length); - } - - /** - * The base implementation of `_.some` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function baseSome(collection, predicate) { - var result; - - baseEach(collection, function(value, index, collection) { - result = predicate(value, index, collection); - return !result; - }); - return !!result; - } - - /** - * The base implementation of `wrapperValue` which returns the result of - * performing a sequence of actions on the unwrapped `value`, where each - * successive action is supplied the return value of the previous. - * - * @private - * @param {*} value The unwrapped value. - * @param {Array} actions Actions to perform to resolve the unwrapped value. - * @returns {*} Returns the resolved value. - */ - function baseWrapperValue(value, actions) { - var result = value; - return reduce(actions, function(result, action) { - return action.func.apply(action.thisArg, arrayPush([result], action.args)); - }, result); - } - - /** - * Compares values to sort them in ascending order. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {number} Returns the sort order indicator for `value`. - */ - function compareAscending(value, other) { - if (value !== other) { - var valIsDefined = value !== undefined, - valIsNull = value === null, - valIsReflexive = value === value, - valIsSymbol = false; - - var othIsDefined = other !== undefined, - othIsNull = other === null, - othIsReflexive = other === other, - othIsSymbol = false; - - if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || - (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || - (valIsNull && othIsDefined && othIsReflexive) || - (!valIsDefined && othIsReflexive) || - !valIsReflexive) { - return 1; - } - if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || - (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || - (othIsNull && valIsDefined && valIsReflexive) || - (!othIsDefined && valIsReflexive) || - !othIsReflexive) { - return -1; - } - } - return 0; - } - - /** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. - */ - function copyObject(source, props, object, customizer) { - var isNew = !object; - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined; - - if (newValue === undefined) { - newValue = source[key]; - } - if (isNew) { - baseAssignValue(object, key, newValue); - } else { - assignValue(object, key, newValue); - } - } - return object; - } - - /** - * Creates a function like `_.assign`. - * - * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. - */ - function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index = -1, - length = sources.length, - customizer = length > 1 ? sources[length - 1] : undefined; - - customizer = (assigner.length > 3 && typeof customizer == 'function') - ? (length--, customizer) - : undefined; - - object = Object(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); - } - - /** - * Creates a `baseEach` or `baseEachRight` function. - * - * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee) { - if (collection == null) { - return collection; - } - if (!isArrayLike(collection)) { - return eachFunc(collection, iteratee); - } - var length = collection.length, - index = fromRight ? length : -1, - iterable = Object(collection); - - while ((fromRight ? index-- : ++index < length)) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; - } - - /** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; - } - - /** - * Creates a function that produces an instance of `Ctor` regardless of - * whether it was invoked as part of a `new` expression or by `call` or `apply`. - * - * @private - * @param {Function} Ctor The constructor to wrap. - * @returns {Function} Returns the new wrapped function. - */ - function createCtor(Ctor) { - return function() { - // Use a `switch` statement to work with class constructors. See - // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist - // for more details. - var args = arguments; - var thisBinding = baseCreate(Ctor.prototype), - result = Ctor.apply(thisBinding, args); - - // Mimic the constructor's `return` behavior. - // See https://es5.github.io/#x13.2.2 for more details. - return isObject(result) ? result : thisBinding; - }; - } - - /** - * Creates a `_.find` or `_.findLast` function. - * - * @private - * @param {Function} findIndexFunc The function to find the collection index. - * @returns {Function} Returns the new find function. - */ - function createFind(findIndexFunc) { - return function(collection, predicate, fromIndex) { - var iterable = Object(collection); - if (!isArrayLike(collection)) { - var iteratee = baseIteratee(predicate, 3); - collection = keys(collection); - predicate = function(key) { return iteratee(iterable[key], key, iterable); }; - } - var index = findIndexFunc(collection, predicate, fromIndex); - return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; - }; - } - - /** - * Creates a function that wraps `func` to invoke it with the `this` binding - * of `thisArg` and `partials` prepended to the arguments it receives. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} partials The arguments to prepend to those provided to - * the new function. - * @returns {Function} Returns the new wrapped function. - */ - function createPartial(func, bitmask, thisArg, partials) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - var isBind = bitmask & WRAP_BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var argsIndex = -1, - argsLength = arguments.length, - leftIndex = -1, - leftLength = partials.length, - args = Array(leftLength + argsLength), - fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - - while (++leftIndex < leftLength) { - args[leftIndex] = partials[leftIndex]; - } - while (argsLength--) { - args[leftIndex++] = arguments[++argsIndex]; - } - return fn.apply(isBind ? thisArg : this, args); - } - return wrapper; - } - - /** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ - function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - arrLength = array.length, - othLength = other.length; - - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - // Check that cyclic values are equal. - var arrStacked = stack.get(array); - var othStacked = stack.get(other); - if (arrStacked && othStacked) { - return arrStacked == other && othStacked == array; - } - var index = -1, - result = true, - seen = (bitmask & COMPARE_UNORDERED_FLAG) ? [] : undefined; - - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; - - var compared; - if (compared !== undefined) { - if (compared) { - continue; - } - result = false; - break; - } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!baseSome(other, function(othValue, othIndex) { - if (!indexOf(seen, othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, bitmask, customizer, stack) - )) { - result = false; - break; - } - } - return result; - } - - /** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { - switch (tag) { - - case boolTag: - case dateTag: - case numberTag: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq(+object, +other); - - case errorTag: - return object.name == other.name && object.message == other.message; - - case regexpTag: - case stringTag: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); - - } - return false; - } - - /** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - objProps = keys(object), - objLength = objProps.length, - othProps = keys(other), - othLength = othProps.length; - - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { - return false; - } - } - // Check that cyclic values are equal. - var objStacked = stack.get(object); - var othStacked = stack.get(other); - if (objStacked && othStacked) { - return objStacked == other && othStacked == object; - } - var result = true; - - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; - - var compared; - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); - } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; - - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; - } - } - return result; - } - - /** - * A specialized version of `baseRest` which flattens the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @returns {Function} Returns the new function. - */ - function flatRest(func) { - return setToString(overRest(func, undefined, flatten), func + ''); - } - - /** - * Checks if `value` is a flattenable `arguments` object or array. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. - */ - function isFlattenable(value) { - return isArray(value) || isArguments(value); - } - - /** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ - function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER : length; - - return !!length && - (type == 'number' || - (type != 'symbol' && reIsUint.test(value))) && - (value > -1 && value % 1 == 0 && value < length); - } - - /** - * Checks if the given arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, - * else `false`. - */ - function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object) - ) { - return eq(object[index], value); - } - return false; - } - - /** - * This function is like - * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * except that it includes inherited enumerable properties. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); - } - } - return result; - } - - /** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ - function objectToString(value) { - return nativeObjectToString.call(value); - } - - /** - * A specialized version of `baseRest` which transforms the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @param {Function} transform The rest array transform. - * @returns {Function} Returns the new function. - */ - function overRest(func, start, transform) { - start = nativeMax(start === undefined ? (func.length - 1) : start, 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - array = Array(length); - - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = transform(array); - return func.apply(this, otherArgs); - }; - } - - /** - * Sets the `toString` method of `func` to return `string`. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ - var setToString = identity; - - /*------------------------------------------------------------------------*/ - - /** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are falsey. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to compact. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ - function compact(array) { - return baseFilter(array, Boolean); - } - - /** - * Creates a new array concatenating `array` with any additional arrays - * and/or values. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to concatenate. - * @param {...*} [values] The values to concatenate. - * @returns {Array} Returns the new concatenated array. - * @example - * - * var array = [1]; - * var other = _.concat(array, 2, [3], [[4]]); - * - * console.log(other); - * // => [1, 2, 3, [4]] - * - * console.log(array); - * // => [1] - */ - function concat() { - var length = arguments.length; - if (!length) { - return []; - } - var args = Array(length - 1), - array = arguments[0], - index = length; - - while (index--) { - args[index - 1] = arguments[index]; - } - return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); - } - - /** - * This method is like `_.find` except that it returns the index of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.findIndex(users, function(o) { return o.user == 'barney'; }); - * // => 0 - * - * // The `_.matches` iteratee shorthand. - * _.findIndex(users, { 'user': 'fred', 'active': false }); - * // => 1 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findIndex(users, ['active', false]); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.findIndex(users, 'active'); - * // => 2 - */ - function findIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseFindIndex(array, baseIteratee(predicate, 3), index); - } - - /** - * Flattens `array` a single level deep. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flatten([1, [2, [3, [4]], 5]]); - * // => [1, 2, [3, [4]], 5] - */ - function flatten(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, 1) : []; - } - - /** - * Recursively flattens `array`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flattenDeep([1, [2, [3, [4]], 5]]); - * // => [1, 2, 3, 4, 5] - */ - function flattenDeep(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, INFINITY) : []; - } - - /** - * Gets the first element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias first - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the first element of `array`. - * @example - * - * _.head([1, 2, 3]); - * // => 1 - * - * _.head([]); - * // => undefined - */ - function head(array) { - return (array && array.length) ? array[0] : undefined; - } - - /** - * Gets the index at which the first occurrence of `value` is found in `array` - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. If `fromIndex` is negative, it's used as the - * offset from the end of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.indexOf([1, 2, 1, 2], 2); - * // => 1 - * - * // Search from the `fromIndex`. - * _.indexOf([1, 2, 1, 2], 2, 2); - * // => 3 - */ - function indexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (typeof fromIndex == 'number') { - fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex; - } else { - fromIndex = 0; - } - var index = (fromIndex || 0) - 1, - isReflexive = value === value; - - while (++index < length) { - var other = array[index]; - if ((isReflexive ? other === value : other !== other)) { - return index; - } - } - return -1; - } - - /** - * Gets the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the last element of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - */ - function last(array) { - var length = array == null ? 0 : array.length; - return length ? array[length - 1] : undefined; - } - - /** - * Creates a slice of `array` from `start` up to, but not including, `end`. - * - * **Note:** This method is used instead of - * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are - * returned. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function slice(array, start, end) { - var length = array == null ? 0 : array.length; - start = start == null ? 0 : +start; - end = end === undefined ? length : +end; - return length ? baseSlice(array, start, end) : []; - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` wrapper instance that wraps `value` with explicit method - * chain sequences enabled. The result of such sequences must be unwrapped - * with `_#value`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Seq - * @param {*} value The value to wrap. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'pebbles', 'age': 1 } - * ]; - * - * var youngest = _ - * .chain(users) - * .sortBy('age') - * .map(function(o) { - * return o.user + ' is ' + o.age; - * }) - * .head() - * .value(); - * // => 'pebbles is 1' - */ - function chain(value) { - var result = lodash(value); - result.__chain__ = true; - return result; - } - - /** - * This method invokes `interceptor` and returns `value`. The interceptor - * is invoked with one argument; (value). The purpose of this method is to - * "tap into" a method chain sequence in order to modify intermediate results. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns `value`. - * @example - * - * _([1, 2, 3]) - * .tap(function(array) { - * // Mutate input array. - * array.pop(); - * }) - * .reverse() - * .value(); - * // => [2, 1] - */ - function tap(value, interceptor) { - interceptor(value); - return value; - } - - /** - * This method is like `_.tap` except that it returns the result of `interceptor`. - * The purpose of this method is to "pass thru" values replacing intermediate - * results in a method chain sequence. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns the result of `interceptor`. - * @example - * - * _(' abc ') - * .chain() - * .trim() - * .thru(function(value) { - * return [value]; - * }) - * .value(); - * // => ['abc'] - */ - function thru(value, interceptor) { - return interceptor(value); - } - - /** - * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. - * - * @name chain - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 } - * ]; - * - * // A sequence without explicit chaining. - * _(users).head(); - * // => { 'user': 'barney', 'age': 36 } - * - * // A sequence with explicit chaining. - * _(users) - * .chain() - * .head() - * .pick('user') - * .value(); - * // => { 'user': 'barney' } - */ - function wrapperChain() { - return chain(this); - } - - /** - * Executes the chain sequence to resolve the unwrapped value. - * - * @name value - * @memberOf _ - * @since 0.1.0 - * @alias toJSON, valueOf - * @category Seq - * @returns {*} Returns the resolved unwrapped value. - * @example - * - * _([1, 2, 3]).value(); - * // => [1, 2, 3] - */ - function wrapperValue() { - return baseWrapperValue(this.__wrapped__, this.__actions__); - } - - /*------------------------------------------------------------------------*/ - - /** - * Checks if `predicate` returns truthy for **all** elements of `collection`. - * Iteration is stopped once `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * **Note:** This method returns `true` for - * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because - * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of - * elements of empty collections. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes'], Boolean); - * // => false - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.every(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.every(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.every(users, 'active'); - * // => false - */ - function every(collection, predicate, guard) { - predicate = guard ? undefined : predicate; - return baseEvery(collection, baseIteratee(predicate)); - } - - /** - * Iterates over elements of `collection`, returning an array of all elements - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * **Note:** Unlike `_.remove`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.reject - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * _.filter(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, { 'age': 36, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.filter(users, 'active'); - * // => objects for ['barney'] - * - * // Combining several predicates using `_.overEvery` or `_.overSome`. - * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); - * // => objects for ['fred', 'barney'] - */ - function filter(collection, predicate) { - return baseFilter(collection, baseIteratee(predicate)); - } - - /** - * Iterates over elements of `collection`, returning the first element - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false }, - * { 'user': 'pebbles', 'age': 1, 'active': true } - * ]; - * - * _.find(users, function(o) { return o.age < 40; }); - * // => object for 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.find(users, { 'age': 1, 'active': true }); - * // => object for 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.find(users, ['active', false]); - * // => object for 'fred' - * - * // The `_.property` iteratee shorthand. - * _.find(users, 'active'); - * // => object for 'barney' - */ - var find = createFind(findIndex); - - /** - * Iterates over elements of `collection` and invokes `iteratee` for each element. - * The iteratee is invoked with three arguments: (value, index|key, collection). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * **Note:** As with other "Collections" methods, objects with a "length" - * property are iterated like arrays. To avoid this behavior use `_.forIn` - * or `_.forOwn` for object iteration. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias each - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEachRight - * @example - * - * _.forEach([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `1` then `2`. - * - * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ - function forEach(collection, iteratee) { - return baseEach(collection, baseIteratee(iteratee)); - } - - /** - * Creates an array of values by running each element in `collection` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. - * - * The guarded methods are: - * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, - * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, - * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, - * `template`, `trim`, `trimEnd`, `trimStart`, and `words` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - * @example - * - * function square(n) { - * return n * n; - * } - * - * _.map([4, 8], square); - * // => [16, 64] - * - * _.map({ 'a': 4, 'b': 8 }, square); - * // => [16, 64] (iteration order is not guaranteed) - * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; - * - * // The `_.property` iteratee shorthand. - * _.map(users, 'user'); - * // => ['barney', 'fred'] - */ - function map(collection, iteratee) { - return baseMap(collection, baseIteratee(iteratee)); - } - - /** - * Reduces `collection` to a value which is the accumulated result of running - * each element in `collection` thru `iteratee`, where each successive - * invocation is supplied the return value of the previous. If `accumulator` - * is not given, the first element of `collection` is used as the initial - * value. The iteratee is invoked with four arguments: - * (accumulator, value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.reduce`, `_.reduceRight`, and `_.transform`. - * - * The guarded methods are: - * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, - * and `sortBy` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @returns {*} Returns the accumulated value. - * @see _.reduceRight - * @example - * - * _.reduce([1, 2], function(sum, n) { - * return sum + n; - * }, 0); - * // => 3 - * - * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * return result; - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) - */ - function reduce(collection, iteratee, accumulator) { - return baseReduce(collection, baseIteratee(iteratee), accumulator, arguments.length < 3, baseEach); - } - - /** - * Gets the size of `collection` by returning its length for array-like - * values or the number of own enumerable string keyed properties for objects. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns the collection size. - * @example - * - * _.size([1, 2, 3]); - * // => 3 - * - * _.size({ 'a': 1, 'b': 2 }); - * // => 2 - * - * _.size('pebbles'); - * // => 7 - */ - function size(collection) { - if (collection == null) { - return 0; - } - collection = isArrayLike(collection) ? collection : nativeKeys(collection); - return collection.length; - } - - /** - * Checks if `predicate` returns truthy for **any** element of `collection`. - * Iteration is stopped once `predicate` returns truthy. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - * @example - * - * _.some([null, 0, 'yes', false], Boolean); - * // => true - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.some(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.some(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.some(users, 'active'); - * // => true - */ - function some(collection, predicate, guard) { - predicate = guard ? undefined : predicate; - return baseSome(collection, baseIteratee(predicate)); - } - - /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection thru each iteratee. This method - * performs a stable sort, that is, it preserves the original sort order of - * equal elements. The iteratees are invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {...(Function|Function[])} [iteratees=[_.identity]] - * The iteratees to sort by. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 30 }, - * { 'user': 'barney', 'age': 34 } - * ]; - * - * _.sortBy(users, [function(o) { return o.user; }]); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] - * - * _.sortBy(users, ['user', 'age']); - * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] - */ - function sortBy(collection, iteratee) { - var index = 0; - iteratee = baseIteratee(iteratee); - - return baseMap(baseMap(collection, function(value, key, collection) { - return { 'value': value, 'index': index++, 'criteria': iteratee(value, key, collection) }; - }).sort(function(object, other) { - return compareAscending(object.criteria, other.criteria) || (object.index - other.index); - }), baseProperty('value')); - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it's called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {number} n The number of calls at which `func` is no longer invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * jQuery(element).on('click', _.before(5, addContactToList)); - * // => Allows adding up to 4 contacts to the list. - */ - function before(n, func) { - var result; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n > 0) { - result = func.apply(this, arguments); - } - if (n <= 1) { - func = undefined; - } - return result; - }; - } - - /** - * Creates a function that invokes `func` with the `this` binding of `thisArg` - * and `partials` prepended to the arguments it receives. - * - * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for partially applied arguments. - * - * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" - * property of bound functions. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to bind. - * @param {*} thisArg The `this` binding of `func`. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * function greet(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * - * var object = { 'user': 'fred' }; - * - * var bound = _.bind(greet, object, 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * // Bound with placeholders. - * var bound = _.bind(greet, object, _, '!'); - * bound('hi'); - * // => 'hi fred!' - */ - var bind = baseRest(function(func, thisArg, partials) { - return createPartial(func, WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG, thisArg, partials); - }); - - /** - * Defers invoking the `func` until the current call stack has cleared. Any - * additional arguments are provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to defer. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.defer(function(text) { - * console.log(text); - * }, 'deferred'); - * // => Logs 'deferred' after one millisecond. - */ - var defer = baseRest(function(func, args) { - return baseDelay(func, 1, args); - }); - - /** - * Invokes `func` after `wait` milliseconds. Any additional arguments are - * provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.delay(function(text) { - * console.log(text); - * }, 1000, 'later'); - * // => Logs 'later' after one second. - */ - var delay = baseRest(function(func, wait, args) { - return baseDelay(func, toNumber(wait) || 0, args); - }); - - /** - * Creates a function that negates the result of the predicate `func`. The - * `func` predicate is invoked with the `this` binding and arguments of the - * created function. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} predicate The predicate to negate. - * @returns {Function} Returns the new negated function. - * @example - * - * function isEven(n) { - * return n % 2 == 0; - * } - * - * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); - * // => [1, 3, 5] - */ - function negate(predicate) { - if (typeof predicate != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return function() { - var args = arguments; - return !predicate.apply(this, args); - }; - } - - /** - * Creates a function that is restricted to invoking `func` once. Repeat calls - * to the function return the value of the first invocation. The `func` is - * invoked with the `this` binding and arguments of the created function. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // => `createApplication` is invoked once - */ - function once(func) { - return before(2, func); - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates a shallow clone of `value`. - * - * **Note:** This method is loosely based on the - * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) - * and supports cloning arrays, array buffers, booleans, date objects, maps, - * numbers, `Object` objects, regexes, sets, strings, symbols, and typed - * arrays. The own enumerable properties of `arguments` objects are cloned - * as plain objects. An empty object is returned for uncloneable values such - * as error objects, functions, DOM nodes, and WeakMaps. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to clone. - * @returns {*} Returns the cloned value. - * @see _.cloneDeep - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var shallow = _.clone(objects); - * console.log(shallow[0] === objects[0]); - * // => true - */ - function clone(value) { - if (!isObject(value)) { - return value; - } - return isArray(value) ? copyArray(value) : copyObject(value, nativeKeys(value)); - } - - /** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ - function eq(value, other) { - return value === other || (value !== value && other !== other); - } - - /** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { - return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && - !propertyIsEnumerable.call(value, 'callee'); - }; - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ - var isArray = Array.isArray; - - /** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ - function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); - } - - /** - * Checks if `value` is classified as a boolean primitive or object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. - * @example - * - * _.isBoolean(false); - * // => true - * - * _.isBoolean(null); - * // => false - */ - function isBoolean(value) { - return value === true || value === false || - (isObjectLike(value) && baseGetTag(value) == boolTag); - } - - /** - * Checks if `value` is classified as a `Date` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - * @example - * - * _.isDate(new Date); - * // => true - * - * _.isDate('Mon April 23 2012'); - * // => false - */ - var isDate = baseIsDate; - - /** - * Checks if `value` is an empty object, collection, map, or set. - * - * Objects are considered empty if they have no own enumerable string keyed - * properties. - * - * Array-like values such as `arguments` objects, arrays, buffers, strings, or - * jQuery-like collections are considered empty if they have a `length` of `0`. - * Similarly, maps and sets are considered empty if they have a `size` of `0`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is empty, else `false`. - * @example - * - * _.isEmpty(null); - * // => true - * - * _.isEmpty(true); - * // => true - * - * _.isEmpty(1); - * // => true - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({ 'a': 1 }); - * // => false - */ - function isEmpty(value) { - if (isArrayLike(value) && - (isArray(value) || isString(value) || - isFunction(value.splice) || isArguments(value))) { - return !value.length; - } - return !nativeKeys(value).length; - } - - /** - * Performs a deep comparison between two values to determine if they are - * equivalent. - * - * **Note:** This method supports comparing arrays, array buffers, booleans, - * date objects, error objects, maps, numbers, `Object` objects, regexes, - * sets, strings, symbols, and typed arrays. `Object` objects are compared - * by their own, not inherited, enumerable properties. Functions and DOM - * nodes are compared by strict equality, i.e. `===`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.isEqual(object, other); - * // => true - * - * object === other; - * // => false - */ - function isEqual(value, other) { - return baseIsEqual(value, other); - } - - /** - * Checks if `value` is a finite primitive number. - * - * **Note:** This method is based on - * [`Number.isFinite`](https://mdn.io/Number/isFinite). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. - * @example - * - * _.isFinite(3); - * // => true - * - * _.isFinite(Number.MIN_VALUE); - * // => true - * - * _.isFinite(Infinity); - * // => false - * - * _.isFinite('3'); - * // => false - */ - function isFinite(value) { - return typeof value == 'number' && nativeIsFinite(value); - } - - /** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ - function isFunction(value) { - if (!isObject(value)) { - return false; - } - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 9 which returns 'object' for typed arrays and other constructors. - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; - } - - /** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ - function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; - } - - /** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ - function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); - } - - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - function isObjectLike(value) { - return value != null && typeof value == 'object'; - } - - /** - * Checks if `value` is `NaN`. - * - * **Note:** This method is based on - * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as - * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for - * `undefined` and other non-number values. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ - function isNaN(value) { - // An `NaN` primitive is the only value that is not equal to itself. - // Perform the `toStringTag` check first to avoid errors with some - // ActiveX objects in IE. - return isNumber(value) && value != +value; - } - - /** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(void 0); - * // => false - */ - function isNull(value) { - return value === null; - } - - /** - * Checks if `value` is classified as a `Number` primitive or object. - * - * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are - * classified as numbers, use the `_.isFinite` method. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a number, else `false`. - * @example - * - * _.isNumber(3); - * // => true - * - * _.isNumber(Number.MIN_VALUE); - * // => true - * - * _.isNumber(Infinity); - * // => true - * - * _.isNumber('3'); - * // => false - */ - function isNumber(value) { - return typeof value == 'number' || - (isObjectLike(value) && baseGetTag(value) == numberTag); - } - - /** - * Checks if `value` is classified as a `RegExp` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - * @example - * - * _.isRegExp(/abc/); - * // => true - * - * _.isRegExp('/abc/'); - * // => false - */ - var isRegExp = baseIsRegExp; - - /** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a string, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ - function isString(value) { - return typeof value == 'string' || - (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); - } - - /** - * Checks if `value` is `undefined`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - * - * _.isUndefined(null); - * // => false - */ - function isUndefined(value) { - return value === undefined; - } - - /** - * Converts `value` to an array. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to convert. - * @returns {Array} Returns the converted array. - * @example - * - * _.toArray({ 'a': 1, 'b': 2 }); - * // => [1, 2] - * - * _.toArray('abc'); - * // => ['a', 'b', 'c'] - * - * _.toArray(1); - * // => [] - * - * _.toArray(null); - * // => [] - */ - function toArray(value) { - if (!isArrayLike(value)) { - return values(value); - } - return value.length ? copyArray(value) : []; - } - - /** - * Converts `value` to an integer. - * - * **Note:** This method is loosely based on - * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toInteger(3.2); - * // => 3 - * - * _.toInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toInteger(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toInteger('3.2'); - * // => 3 - */ - var toInteger = Number; - - /** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3.2); - * // => 3.2 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3.2'); - * // => 3.2 - */ - var toNumber = Number; - - /** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ - function toString(value) { - if (typeof value == 'string') { - return value; - } - return value == null ? '' : (value + ''); - } - - /*------------------------------------------------------------------------*/ - - /** - * Assigns own enumerable string keyed properties of source objects to the - * destination object. Source objects are applied from left to right. - * Subsequent sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object` and is loosely based on - * [`Object.assign`](https://mdn.io/Object/assign). - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assignIn - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assign({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'c': 3 } - */ - var assign = createAssigner(function(object, source) { - copyObject(source, nativeKeys(source), object); - }); - - /** - * This method is like `_.assign` except that it iterates over own and - * inherited source properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extend - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assign - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assignIn({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } - */ - var assignIn = createAssigner(function(object, source) { - copyObject(source, nativeKeysIn(source), object); - }); - - /** - * Creates an object that inherits from the `prototype` object. If a - * `properties` object is given, its own enumerable string keyed properties - * are assigned to the created object. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Object - * @param {Object} prototype The object to inherit from. - * @param {Object} [properties] The properties to assign to the object. - * @returns {Object} Returns the new object. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * function Circle() { - * Shape.call(this); - * } - * - * Circle.prototype = _.create(Shape.prototype, { - * 'constructor': Circle - * }); - * - * var circle = new Circle; - * circle instanceof Circle; - * // => true - * - * circle instanceof Shape; - * // => true - */ - function create(prototype, properties) { - var result = baseCreate(prototype); - return properties == null ? result : assign(result, properties); - } - - /** - * Assigns own and inherited enumerable string keyed properties of source - * objects to the destination object for all destination properties that - * resolve to `undefined`. Source objects are applied from left to right. - * Once a property is set, additional values of the same property are ignored. - * - * **Note:** This method mutates `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaultsDeep - * @example - * - * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var defaults = baseRest(function(object, sources) { - object = Object(object); - - var index = -1; - var length = sources.length; - var guard = length > 2 ? sources[2] : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - length = 1; - } - - while (++index < length) { - var source = sources[index]; - var props = keysIn(source); - var propsIndex = -1; - var propsLength = props.length; - - while (++propsIndex < propsLength) { - var key = props[propsIndex]; - var value = object[key]; - - if (value === undefined || - (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { - object[key] = source[key]; - } - } - } - - return object; - }); - - /** - * Checks if `path` is a direct property of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = { 'a': { 'b': 2 } }; - * var other = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.has(object, 'a'); - * // => true - * - * _.has(object, 'a.b'); - * // => true - * - * _.has(object, ['a', 'b']); - * // => true - * - * _.has(other, 'a'); - * // => false - */ - function has(object, path) { - return object != null && hasOwnProperty.call(object, path); - } - - /** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ - var keys = nativeKeys; - - /** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ - var keysIn = nativeKeysIn; - - /** - * Creates an object composed of the picked `object` properties. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pick(object, ['a', 'c']); - * // => { 'a': 1, 'c': 3 } - */ - var pick = flatRest(function(object, paths) { - return object == null ? {} : basePick(object, paths); - }); - - /** - * This method is like `_.get` except that if the resolved value is a - * function it's invoked with the `this` binding of its parent object and - * its result is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to resolve. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; - * - * _.result(object, 'a[0].b.c1'); - * // => 3 - * - * _.result(object, 'a[0].b.c2'); - * // => 4 - * - * _.result(object, 'a[0].b.c3', 'default'); - * // => 'default' - * - * _.result(object, 'a[0].b.c3', _.constant('default')); - * // => 'default' - */ - function result(object, path, defaultValue) { - var value = object == null ? undefined : object[path]; - if (value === undefined) { - value = defaultValue; - } - return isFunction(value) ? value.call(object) : value; - } - - /** - * Creates an array of the own enumerable string keyed property values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.values(new Foo); - * // => [1, 2] (iteration order is not guaranteed) - * - * _.values('hi'); - * // => ['h', 'i'] - */ - function values(object) { - return object == null ? [] : baseValues(object, keys(object)); - } - - /*------------------------------------------------------------------------*/ - - /** - * Converts the characters "&", "<", ">", '"', and "'" in `string` to their - * corresponding HTML entities. - * - * **Note:** No other characters are escaped. To escape additional - * characters use a third-party library like [_he_](https://mths.be/he). - * - * Though the ">" character is escaped for symmetry, characters like - * ">" and "/" don't need escaping in HTML and have no special meaning - * unless they're part of a tag or unquoted attribute value. See - * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) - * (under "semi-related fun fact") for more details. - * - * When working with HTML you should always - * [quote attribute values](http://wonko.com/post/html-escaping) to reduce - * XSS vectors. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escape('fred, barney, & pebbles'); - * // => 'fred, barney, & pebbles' - */ - function escape(string) { - string = toString(string); - return (string && reHasUnescapedHtml.test(string)) - ? string.replace(reUnescapedHtml, escapeHtmlChar) - : string; - } - - /*------------------------------------------------------------------------*/ - - /** - * This method returns the first argument it receives. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'a': 1 }; - * - * console.log(_.identity(object) === object); - * // => true - */ - function identity(value) { - return value; - } - - /** - * Creates a function that invokes `func` with the arguments of the created - * function. If `func` is a property name, the created function returns the - * property value for a given element. If `func` is an array or object, the - * created function returns `true` for elements that contain the equivalent - * source properties, otherwise it returns `false`. - * - * @static - * @since 4.0.0 - * @memberOf _ - * @category Util - * @param {*} [func=_.identity] The value to convert to a callback. - * @returns {Function} Returns the callback. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true })); - * // => [{ 'user': 'barney', 'age': 36, 'active': true }] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, _.iteratee(['user', 'fred'])); - * // => [{ 'user': 'fred', 'age': 40 }] - * - * // The `_.property` iteratee shorthand. - * _.map(users, _.iteratee('user')); - * // => ['barney', 'fred'] - * - * // Create custom iteratee shorthands. - * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) { - * return !_.isRegExp(func) ? iteratee(func) : function(string) { - * return func.test(string); - * }; - * }); - * - * _.filter(['abc', 'def'], /ef/); - * // => ['def'] - */ - var iteratee = baseIteratee; - - /** - * Creates a function that performs a partial deep comparison between a given - * object and `source`, returning `true` if the given object has equivalent - * property values, else `false`. - * - * **Note:** The created function is equivalent to `_.isMatch` with `source` - * partially applied. - * - * Partial comparisons will match empty array and empty object `source` - * values against any array or object value, respectively. See `_.isEqual` - * for a list of supported value comparisons. - * - * **Note:** Multiple values can be checked by combining several matchers - * using `_.overSome` - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Util - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - * @example - * - * var objects = [ - * { 'a': 1, 'b': 2, 'c': 3 }, - * { 'a': 4, 'b': 5, 'c': 6 } - * ]; - * - * _.filter(objects, _.matches({ 'a': 4, 'c': 6 })); - * // => [{ 'a': 4, 'b': 5, 'c': 6 }] - * - * // Checking for several possible values - * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })])); - * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] - */ - function matches(source) { - return baseMatches(assign({}, source)); - } - - /** - * Adds all own enumerable string keyed function properties of a source - * object to the destination object. If `object` is a function, then methods - * are added to its prototype as well. - * - * **Note:** Use `_.runInContext` to create a pristine `lodash` function to - * avoid conflicts caused by modifying the original. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {Function|Object} [object=lodash] The destination object. - * @param {Object} source The object of functions to add. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.chain=true] Specify whether mixins are chainable. - * @returns {Function|Object} Returns `object`. - * @example - * - * function vowels(string) { - * return _.filter(string, function(v) { - * return /[aeiou]/i.test(v); - * }); - * } - * - * _.mixin({ 'vowels': vowels }); - * _.vowels('fred'); - * // => ['e'] - * - * _('fred').vowels().value(); - * // => ['e'] - * - * _.mixin({ 'vowels': vowels }, { 'chain': false }); - * _('fred').vowels(); - * // => ['e'] - */ - function mixin(object, source, options) { - var props = keys(source), - methodNames = baseFunctions(source, props); - - if (options == null && - !(isObject(source) && (methodNames.length || !props.length))) { - options = source; - source = object; - object = this; - methodNames = baseFunctions(source, keys(source)); - } - var chain = !(isObject(options) && 'chain' in options) || !!options.chain, - isFunc = isFunction(object); - - baseEach(methodNames, function(methodName) { - var func = source[methodName]; - object[methodName] = func; - if (isFunc) { - object.prototype[methodName] = function() { - var chainAll = this.__chain__; - if (chain || chainAll) { - var result = object(this.__wrapped__), - actions = result.__actions__ = copyArray(this.__actions__); - - actions.push({ 'func': func, 'args': arguments, 'thisArg': object }); - result.__chain__ = chainAll; - return result; - } - return func.apply(object, arrayPush([this.value()], arguments)); - }; - } - }); - - return object; - } - - /** - * Reverts the `_` variable to its previous value and returns a reference to - * the `lodash` function. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @returns {Function} Returns the `lodash` function. - * @example - * - * var lodash = _.noConflict(); - */ - function noConflict() { - if (root._ === this) { - root._ = oldDash; - } - return this; - } - - /** - * This method returns `undefined`. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Util - * @example - * - * _.times(2, _.noop); - * // => [undefined, undefined] - */ - function noop() { - // No operation performed. - } - - /** - * Generates a unique ID. If `prefix` is given, the ID is appended to it. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {string} [prefix=''] The value to prefix the ID with. - * @returns {string} Returns the unique ID. - * @example - * - * _.uniqueId('contact_'); - * // => 'contact_104' - * - * _.uniqueId(); - * // => '105' - */ - function uniqueId(prefix) { - var id = ++idCounter; - return toString(prefix) + id; - } - - /*------------------------------------------------------------------------*/ - - /** - * Computes the maximum value of `array`. If `array` is empty or falsey, - * `undefined` is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Math - * @param {Array} array The array to iterate over. - * @returns {*} Returns the maximum value. - * @example - * - * _.max([4, 2, 8, 6]); - * // => 8 - * - * _.max([]); - * // => undefined - */ - function max(array) { - return (array && array.length) - ? baseExtremum(array, identity, baseGt) - : undefined; - } - - /** - * Computes the minimum value of `array`. If `array` is empty or falsey, - * `undefined` is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Math - * @param {Array} array The array to iterate over. - * @returns {*} Returns the minimum value. - * @example - * - * _.min([4, 2, 8, 6]); - * // => 2 - * - * _.min([]); - * // => undefined - */ - function min(array) { - return (array && array.length) - ? baseExtremum(array, identity, baseLt) - : undefined; - } - - /*------------------------------------------------------------------------*/ - - // Add methods that return wrapped values in chain sequences. - lodash.assignIn = assignIn; - lodash.before = before; - lodash.bind = bind; - lodash.chain = chain; - lodash.compact = compact; - lodash.concat = concat; - lodash.create = create; - lodash.defaults = defaults; - lodash.defer = defer; - lodash.delay = delay; - lodash.filter = filter; - lodash.flatten = flatten; - lodash.flattenDeep = flattenDeep; - lodash.iteratee = iteratee; - lodash.keys = keys; - lodash.map = map; - lodash.matches = matches; - lodash.mixin = mixin; - lodash.negate = negate; - lodash.once = once; - lodash.pick = pick; - lodash.slice = slice; - lodash.sortBy = sortBy; - lodash.tap = tap; - lodash.thru = thru; - lodash.toArray = toArray; - lodash.values = values; - - // Add aliases. - lodash.extend = assignIn; - - // Add methods to `lodash.prototype`. - mixin(lodash, lodash); - - /*------------------------------------------------------------------------*/ - - // Add methods that return unwrapped values in chain sequences. - lodash.clone = clone; - lodash.escape = escape; - lodash.every = every; - lodash.find = find; - lodash.forEach = forEach; - lodash.has = has; - lodash.head = head; - lodash.identity = identity; - lodash.indexOf = indexOf; - lodash.isArguments = isArguments; - lodash.isArray = isArray; - lodash.isBoolean = isBoolean; - lodash.isDate = isDate; - lodash.isEmpty = isEmpty; - lodash.isEqual = isEqual; - lodash.isFinite = isFinite; - lodash.isFunction = isFunction; - lodash.isNaN = isNaN; - lodash.isNull = isNull; - lodash.isNumber = isNumber; - lodash.isObject = isObject; - lodash.isRegExp = isRegExp; - lodash.isString = isString; - lodash.isUndefined = isUndefined; - lodash.last = last; - lodash.max = max; - lodash.min = min; - lodash.noConflict = noConflict; - lodash.noop = noop; - lodash.reduce = reduce; - lodash.result = result; - lodash.size = size; - lodash.some = some; - lodash.uniqueId = uniqueId; - - // Add aliases. - lodash.each = forEach; - lodash.first = head; - - mixin(lodash, (function() { - var source = {}; - baseForOwn(lodash, function(func, methodName) { - if (!hasOwnProperty.call(lodash.prototype, methodName)) { - source[methodName] = func; - } - }); - return source; - }()), { 'chain': false }); - - /*------------------------------------------------------------------------*/ - - /** - * The semantic version number. - * - * @static - * @memberOf _ - * @type {string} - */ - lodash.VERSION = VERSION; - - // Add `Array` methods to `lodash.prototype`. - baseEach(['pop', 'join', 'replace', 'reverse', 'split', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) { - var func = (/^(?:replace|split)$/.test(methodName) ? String.prototype : arrayProto)[methodName], - chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru', - retUnwrapped = /^(?:pop|join|replace|shift)$/.test(methodName); - - lodash.prototype[methodName] = function() { - var args = arguments; - if (retUnwrapped && !this.__chain__) { - var value = this.value(); - return func.apply(isArray(value) ? value : [], args); - } - return this[chainName](function(value) { - return func.apply(isArray(value) ? value : [], args); - }); - }; - }); - - // Add chain sequence methods to the `lodash` wrapper. - lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue; - - /*--------------------------------------------------------------------------*/ - - // Some AMD build optimizers, like r.js, check for condition patterns like: - if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) { - // Expose Lodash on the global object to prevent errors when Lodash is - // loaded by a script tag in the presence of an AMD loader. - // See http://requirejs.org/docs/errors.html#mismatch for more details. - // Use `_.noConflict` to remove Lodash from the global object. - root._ = lodash; - - // Define as an anonymous module so, through path mapping, it can be - // referenced as the "underscore" module. - define(function() { - return lodash; - }); - } - // Check for `exports` after `define` in case a build optimizer adds it. - else if (freeModule) { - // Export for Node.js. - (freeModule.exports = lodash)._ = lodash; - // Export for CommonJS support. - freeExports._ = lodash; - } - else { - // Export to the global object. - root._ = lodash; - } -}.call(this)); diff --git a/node_modules/lodash/core.min.js b/node_modules/lodash/core.min.js deleted file mode 100644 index e425e4d..0000000 --- a/node_modules/lodash/core.min.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * Lodash (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE - * Build: `lodash core -o ./dist/lodash.core.js` - */ -;(function(){function n(n){return H(n)&&pn.call(n,"callee")&&!yn.call(n,"callee")}function t(n,t){return n.push.apply(n,t),n}function r(n){return function(t){return null==t?Z:t[n]}}function e(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function u(n,t){return j(t,function(t){return n[t]})}function o(n){return n instanceof i?n:new i(n)}function i(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t}function c(n,t,r){if(typeof n!="function")throw new TypeError("Expected a function"); -return setTimeout(function(){n.apply(Z,r)},t)}function f(n,t){var r=true;return mn(n,function(n,e,u){return r=!!t(n,e,u)}),r}function a(n,t,r){for(var e=-1,u=n.length;++et}function b(n,t,r,e,u){return n===t||(null==n||null==t||!H(n)&&!H(t)?n!==n&&t!==t:y(n,t,r,e,b,u))}function y(n,t,r,e,u,o){var i=Nn(n),c=Nn(t),f=i?"[object Array]":hn.call(n),a=c?"[object Array]":hn.call(t),f="[object Arguments]"==f?"[object Object]":f,a="[object Arguments]"==a?"[object Object]":a,l="[object Object]"==f,c="[object Object]"==a,a=f==a;o||(o=[]);var p=An(o,function(t){return t[0]==n}),s=An(o,function(n){ -return n[0]==t});if(p&&s)return p[1]==t;if(o.push([n,t]),o.push([t,n]),a&&!l){if(i)r=T(n,t,r,e,u,o);else n:{switch(f){case"[object Boolean]":case"[object Date]":case"[object Number]":r=J(+n,+t);break n;case"[object Error]":r=n.name==t.name&&n.message==t.message;break n;case"[object RegExp]":case"[object String]":r=n==t+"";break n}r=false}return o.pop(),r}return 1&r||(i=l&&pn.call(n,"__wrapped__"),f=c&&pn.call(t,"__wrapped__"),!i&&!f)?!!a&&(r=B(n,t,r,e,u,o),o.pop(),r):(i=i?n.value():n,f=f?t.value():t, -r=u(i,f,r,e,o),o.pop(),r)}function g(n){return typeof n=="function"?n:null==n?X:(typeof n=="object"?d:r)(n)}function _(n,t){return nt&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++ei))return false;var c=o.get(n),f=o.get(t);if(c&&f)return c==t&&f==n;for(var c=-1,f=true,a=2&r?[]:Z;++cr?jn(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++rarguments.length,mn); -}function G(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=Fn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=Z),r}}function J(n,t){return n===t||n!==n&&t!==t}function M(n){var t;return(t=null!=n)&&(t=n.length,t=typeof t=="number"&&-1=t),t&&!U(n)}function U(n){return!!V(n)&&(n=hn.call(n),"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n)}function V(n){var t=typeof n; -return null!=n&&("object"==t||"function"==t)}function H(n){return null!=n&&typeof n=="object"}function K(n){return typeof n=="number"||H(n)&&"[object Number]"==hn.call(n)}function L(n){return typeof n=="string"||!Nn(n)&&H(n)&&"[object String]"==hn.call(n)}function Q(n){return typeof n=="string"?n:null==n?"":n+""}function W(n){return null==n?[]:u(n,Dn(n))}function X(n){return n}function Y(n,r,e){var u=Dn(r),o=h(r,u);null!=e||V(r)&&(o.length||!u.length)||(e=r,r=n,n=this,o=h(r,Dn(r)));var i=!(V(e)&&"chain"in e&&!e.chain),c=U(n); -return mn(o,function(e){var u=r[e];n[e]=u,c&&(n.prototype[e]=function(){var r=this.__chain__;if(i||r){var e=n(this.__wrapped__);return(e.__actions__=A(this.__actions__)).push({func:u,args:arguments,thisArg:n}),e.__chain__=r,e}return u.apply(n,t([this.value()],arguments))})}),n}var Z,nn=1/0,tn=/[&<>"']/g,rn=RegExp(tn.source),en=/^(?:0|[1-9]\d*)$/,un=typeof self=="object"&&self&&self.Object===Object&&self,on=typeof global=="object"&&global&&global.Object===Object&&global||un||Function("return this")(),cn=(un=typeof exports=="object"&&exports&&!exports.nodeType&&exports)&&typeof module=="object"&&module&&!module.nodeType&&module,fn=function(n){ -return function(t){return null==n?Z:n[t]}}({"&":"&","<":"<",">":">",'"':""","'":"'"}),an=Array.prototype,ln=Object.prototype,pn=ln.hasOwnProperty,sn=0,hn=ln.toString,vn=on._,bn=Object.create,yn=ln.propertyIsEnumerable,gn=on.isFinite,_n=function(n,t){return function(r){return n(t(r))}}(Object.keys,Object),jn=Math.max,dn=function(){function n(){}return function(t){return V(t)?bn?bn(t):(n.prototype=t,t=new n,n.prototype=Z,t):{}}}();i.prototype=dn(o.prototype),i.prototype.constructor=i; -var mn=function(n,t){return function(r,e){if(null==r)return r;if(!M(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++or&&(r=jn(e+r,0));n:{for(t=g(t),e=n.length,r+=-1;++re||o&&c&&a||!u&&a||!i){r=1;break n}if(!o&&r { '4': 1, '6': 2 } - * - * // The `_.property` iteratee shorthand. - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } - */ -var countBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - ++result[key]; - } else { - baseAssignValue(result, key, 1); - } -}); - -module.exports = countBy; diff --git a/node_modules/lodash/create.js b/node_modules/lodash/create.js deleted file mode 100644 index 919edb8..0000000 --- a/node_modules/lodash/create.js +++ /dev/null @@ -1,43 +0,0 @@ -var baseAssign = require('./_baseAssign'), - baseCreate = require('./_baseCreate'); - -/** - * Creates an object that inherits from the `prototype` object. If a - * `properties` object is given, its own enumerable string keyed properties - * are assigned to the created object. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Object - * @param {Object} prototype The object to inherit from. - * @param {Object} [properties] The properties to assign to the object. - * @returns {Object} Returns the new object. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * function Circle() { - * Shape.call(this); - * } - * - * Circle.prototype = _.create(Shape.prototype, { - * 'constructor': Circle - * }); - * - * var circle = new Circle; - * circle instanceof Circle; - * // => true - * - * circle instanceof Shape; - * // => true - */ -function create(prototype, properties) { - var result = baseCreate(prototype); - return properties == null ? result : baseAssign(result, properties); -} - -module.exports = create; diff --git a/node_modules/lodash/curry.js b/node_modules/lodash/curry.js deleted file mode 100644 index 918db1a..0000000 --- a/node_modules/lodash/curry.js +++ /dev/null @@ -1,57 +0,0 @@ -var createWrap = require('./_createWrap'); - -/** Used to compose bitmasks for function metadata. */ -var WRAP_CURRY_FLAG = 8; - -/** - * Creates a function that accepts arguments of `func` and either invokes - * `func` returning its result, if at least `arity` number of arguments have - * been provided, or returns a function that accepts the remaining `func` - * arguments, and so on. The arity of `func` may be specified if `func.length` - * is not sufficient. - * - * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curry(abc); - * - * curried(1)(2)(3); - * // => [1, 2, 3] - * - * curried(1, 2)(3); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // Curried with placeholders. - * curried(1)(_, 3)(2); - * // => [1, 2, 3] - */ -function curry(func, arity, guard) { - arity = guard ? undefined : arity; - var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); - result.placeholder = curry.placeholder; - return result; -} - -// Assign default placeholders. -curry.placeholder = {}; - -module.exports = curry; diff --git a/node_modules/lodash/curryRight.js b/node_modules/lodash/curryRight.js deleted file mode 100644 index c85b6f3..0000000 --- a/node_modules/lodash/curryRight.js +++ /dev/null @@ -1,54 +0,0 @@ -var createWrap = require('./_createWrap'); - -/** Used to compose bitmasks for function metadata. */ -var WRAP_CURRY_RIGHT_FLAG = 16; - -/** - * This method is like `_.curry` except that arguments are applied to `func` - * in the manner of `_.partialRight` instead of `_.partial`. - * - * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curryRight(abc); - * - * curried(3)(2)(1); - * // => [1, 2, 3] - * - * curried(2, 3)(1); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // Curried with placeholders. - * curried(3)(1, _)(2); - * // => [1, 2, 3] - */ -function curryRight(func, arity, guard) { - arity = guard ? undefined : arity; - var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); - result.placeholder = curryRight.placeholder; - return result; -} - -// Assign default placeholders. -curryRight.placeholder = {}; - -module.exports = curryRight; diff --git a/node_modules/lodash/date.js b/node_modules/lodash/date.js deleted file mode 100644 index cbf5b41..0000000 --- a/node_modules/lodash/date.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - 'now': require('./now') -}; diff --git a/node_modules/lodash/debounce.js b/node_modules/lodash/debounce.js deleted file mode 100644 index 8f751d5..0000000 --- a/node_modules/lodash/debounce.js +++ /dev/null @@ -1,191 +0,0 @@ -var isObject = require('./isObject'), - now = require('./now'), - toNumber = require('./toNumber'); - -/** Error message constants. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max, - nativeMin = Math.min; - -/** - * Creates a debounced function that delays invoking `func` until after `wait` - * milliseconds have elapsed since the last time the debounced function was - * invoked. The debounced function comes with a `cancel` method to cancel - * delayed `func` invocations and a `flush` method to immediately invoke them. - * Provide `options` to indicate whether `func` should be invoked on the - * leading and/or trailing edge of the `wait` timeout. The `func` is invoked - * with the last arguments provided to the debounced function. Subsequent - * calls to the debounced function return the result of the last `func` - * invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the debounced function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.debounce` and `_.throttle`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to debounce. - * @param {number} [wait=0] The number of milliseconds to delay. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=false] - * Specify invoking on the leading edge of the timeout. - * @param {number} [options.maxWait] - * The maximum time `func` is allowed to be delayed before it's invoked. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // Avoid costly calculations while the window size is in flux. - * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); - * - * // Invoke `sendMail` when clicked, debouncing subsequent calls. - * jQuery(element).on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * })); - * - * // Ensure `batchLog` is invoked once after 1 second of debounced calls. - * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); - * var source = new EventSource('/stream'); - * jQuery(source).on('message', debounced); - * - * // Cancel the trailing debounced invocation. - * jQuery(window).on('popstate', debounced.cancel); - */ -function debounce(func, wait, options) { - var lastArgs, - lastThis, - maxWait, - result, - timerId, - lastCallTime, - lastInvokeTime = 0, - leading = false, - maxing = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - wait = toNumber(wait) || 0; - if (isObject(options)) { - leading = !!options.leading; - maxing = 'maxWait' in options; - maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - - function invokeFunc(time) { - var args = lastArgs, - thisArg = lastThis; - - lastArgs = lastThis = undefined; - lastInvokeTime = time; - result = func.apply(thisArg, args); - return result; - } - - function leadingEdge(time) { - // Reset any `maxWait` timer. - lastInvokeTime = time; - // Start the timer for the trailing edge. - timerId = setTimeout(timerExpired, wait); - // Invoke the leading edge. - return leading ? invokeFunc(time) : result; - } - - function remainingWait(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime, - timeWaiting = wait - timeSinceLastCall; - - return maxing - ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) - : timeWaiting; - } - - function shouldInvoke(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime; - - // Either this is the first call, activity has stopped and we're at the - // trailing edge, the system time has gone backwards and we're treating - // it as the trailing edge, or we've hit the `maxWait` limit. - return (lastCallTime === undefined || (timeSinceLastCall >= wait) || - (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); - } - - function timerExpired() { - var time = now(); - if (shouldInvoke(time)) { - return trailingEdge(time); - } - // Restart the timer. - timerId = setTimeout(timerExpired, remainingWait(time)); - } - - function trailingEdge(time) { - timerId = undefined; - - // Only invoke if we have `lastArgs` which means `func` has been - // debounced at least once. - if (trailing && lastArgs) { - return invokeFunc(time); - } - lastArgs = lastThis = undefined; - return result; - } - - function cancel() { - if (timerId !== undefined) { - clearTimeout(timerId); - } - lastInvokeTime = 0; - lastArgs = lastCallTime = lastThis = timerId = undefined; - } - - function flush() { - return timerId === undefined ? result : trailingEdge(now()); - } - - function debounced() { - var time = now(), - isInvoking = shouldInvoke(time); - - lastArgs = arguments; - lastThis = this; - lastCallTime = time; - - if (isInvoking) { - if (timerId === undefined) { - return leadingEdge(lastCallTime); - } - if (maxing) { - // Handle invocations in a tight loop. - clearTimeout(timerId); - timerId = setTimeout(timerExpired, wait); - return invokeFunc(lastCallTime); - } - } - if (timerId === undefined) { - timerId = setTimeout(timerExpired, wait); - } - return result; - } - debounced.cancel = cancel; - debounced.flush = flush; - return debounced; -} - -module.exports = debounce; diff --git a/node_modules/lodash/deburr.js b/node_modules/lodash/deburr.js deleted file mode 100644 index f85e314..0000000 --- a/node_modules/lodash/deburr.js +++ /dev/null @@ -1,45 +0,0 @@ -var deburrLetter = require('./_deburrLetter'), - toString = require('./toString'); - -/** Used to match Latin Unicode letters (excluding mathematical operators). */ -var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; - -/** Used to compose unicode character classes. */ -var rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange; - -/** Used to compose unicode capture groups. */ -var rsCombo = '[' + rsComboRange + ']'; - -/** - * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and - * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). - */ -var reComboMark = RegExp(rsCombo, 'g'); - -/** - * Deburrs `string` by converting - * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) - * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) - * letters to basic Latin letters and removing - * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to deburr. - * @returns {string} Returns the deburred string. - * @example - * - * _.deburr('déjà vu'); - * // => 'deja vu' - */ -function deburr(string) { - string = toString(string); - return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); -} - -module.exports = deburr; diff --git a/node_modules/lodash/defaultTo.js b/node_modules/lodash/defaultTo.js deleted file mode 100644 index 5b33359..0000000 --- a/node_modules/lodash/defaultTo.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Checks `value` to determine whether a default value should be returned in - * its place. The `defaultValue` is returned if `value` is `NaN`, `null`, - * or `undefined`. - * - * @static - * @memberOf _ - * @since 4.14.0 - * @category Util - * @param {*} value The value to check. - * @param {*} defaultValue The default value. - * @returns {*} Returns the resolved value. - * @example - * - * _.defaultTo(1, 10); - * // => 1 - * - * _.defaultTo(undefined, 10); - * // => 10 - */ -function defaultTo(value, defaultValue) { - return (value == null || value !== value) ? defaultValue : value; -} - -module.exports = defaultTo; diff --git a/node_modules/lodash/defaults.js b/node_modules/lodash/defaults.js deleted file mode 100644 index c74df04..0000000 --- a/node_modules/lodash/defaults.js +++ /dev/null @@ -1,64 +0,0 @@ -var baseRest = require('./_baseRest'), - eq = require('./eq'), - isIterateeCall = require('./_isIterateeCall'), - keysIn = require('./keysIn'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Assigns own and inherited enumerable string keyed properties of source - * objects to the destination object for all destination properties that - * resolve to `undefined`. Source objects are applied from left to right. - * Once a property is set, additional values of the same property are ignored. - * - * **Note:** This method mutates `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaultsDeep - * @example - * - * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ -var defaults = baseRest(function(object, sources) { - object = Object(object); - - var index = -1; - var length = sources.length; - var guard = length > 2 ? sources[2] : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - length = 1; - } - - while (++index < length) { - var source = sources[index]; - var props = keysIn(source); - var propsIndex = -1; - var propsLength = props.length; - - while (++propsIndex < propsLength) { - var key = props[propsIndex]; - var value = object[key]; - - if (value === undefined || - (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { - object[key] = source[key]; - } - } - } - - return object; -}); - -module.exports = defaults; diff --git a/node_modules/lodash/defaultsDeep.js b/node_modules/lodash/defaultsDeep.js deleted file mode 100644 index 9b5fa3e..0000000 --- a/node_modules/lodash/defaultsDeep.js +++ /dev/null @@ -1,30 +0,0 @@ -var apply = require('./_apply'), - baseRest = require('./_baseRest'), - customDefaultsMerge = require('./_customDefaultsMerge'), - mergeWith = require('./mergeWith'); - -/** - * This method is like `_.defaults` except that it recursively assigns - * default properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 3.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaults - * @example - * - * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); - * // => { 'a': { 'b': 2, 'c': 3 } } - */ -var defaultsDeep = baseRest(function(args) { - args.push(undefined, customDefaultsMerge); - return apply(mergeWith, undefined, args); -}); - -module.exports = defaultsDeep; diff --git a/node_modules/lodash/defer.js b/node_modules/lodash/defer.js deleted file mode 100644 index f6d6c6f..0000000 --- a/node_modules/lodash/defer.js +++ /dev/null @@ -1,26 +0,0 @@ -var baseDelay = require('./_baseDelay'), - baseRest = require('./_baseRest'); - -/** - * Defers invoking the `func` until the current call stack has cleared. Any - * additional arguments are provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to defer. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.defer(function(text) { - * console.log(text); - * }, 'deferred'); - * // => Logs 'deferred' after one millisecond. - */ -var defer = baseRest(function(func, args) { - return baseDelay(func, 1, args); -}); - -module.exports = defer; diff --git a/node_modules/lodash/delay.js b/node_modules/lodash/delay.js deleted file mode 100644 index bd55479..0000000 --- a/node_modules/lodash/delay.js +++ /dev/null @@ -1,28 +0,0 @@ -var baseDelay = require('./_baseDelay'), - baseRest = require('./_baseRest'), - toNumber = require('./toNumber'); - -/** - * Invokes `func` after `wait` milliseconds. Any additional arguments are - * provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.delay(function(text) { - * console.log(text); - * }, 1000, 'later'); - * // => Logs 'later' after one second. - */ -var delay = baseRest(function(func, wait, args) { - return baseDelay(func, toNumber(wait) || 0, args); -}); - -module.exports = delay; diff --git a/node_modules/lodash/difference.js b/node_modules/lodash/difference.js deleted file mode 100644 index fa28bb3..0000000 --- a/node_modules/lodash/difference.js +++ /dev/null @@ -1,33 +0,0 @@ -var baseDifference = require('./_baseDifference'), - baseFlatten = require('./_baseFlatten'), - baseRest = require('./_baseRest'), - isArrayLikeObject = require('./isArrayLikeObject'); - -/** - * Creates an array of `array` values not included in the other given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order and references of result values are - * determined by the first array. - * - * **Note:** Unlike `_.pullAll`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @see _.without, _.xor - * @example - * - * _.difference([2, 1], [2, 3]); - * // => [1] - */ -var difference = baseRest(function(array, values) { - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) - : []; -}); - -module.exports = difference; diff --git a/node_modules/lodash/differenceBy.js b/node_modules/lodash/differenceBy.js deleted file mode 100644 index 2cd63e7..0000000 --- a/node_modules/lodash/differenceBy.js +++ /dev/null @@ -1,44 +0,0 @@ -var baseDifference = require('./_baseDifference'), - baseFlatten = require('./_baseFlatten'), - baseIteratee = require('./_baseIteratee'), - baseRest = require('./_baseRest'), - isArrayLikeObject = require('./isArrayLikeObject'), - last = require('./last'); - -/** - * This method is like `_.difference` except that it accepts `iteratee` which - * is invoked for each element of `array` and `values` to generate the criterion - * by which they're compared. The order and references of result values are - * determined by the first array. The iteratee is invoked with one argument: - * (value). - * - * **Note:** Unlike `_.pullAllBy`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [1.2] - * - * // The `_.property` iteratee shorthand. - * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] - */ -var differenceBy = baseRest(function(array, values) { - var iteratee = last(values); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2)) - : []; -}); - -module.exports = differenceBy; diff --git a/node_modules/lodash/differenceWith.js b/node_modules/lodash/differenceWith.js deleted file mode 100644 index c0233f4..0000000 --- a/node_modules/lodash/differenceWith.js +++ /dev/null @@ -1,40 +0,0 @@ -var baseDifference = require('./_baseDifference'), - baseFlatten = require('./_baseFlatten'), - baseRest = require('./_baseRest'), - isArrayLikeObject = require('./isArrayLikeObject'), - last = require('./last'); - -/** - * This method is like `_.difference` except that it accepts `comparator` - * which is invoked to compare elements of `array` to `values`. The order and - * references of result values are determined by the first array. The comparator - * is invoked with two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.pullAllWith`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * - * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); - * // => [{ 'x': 2, 'y': 1 }] - */ -var differenceWith = baseRest(function(array, values) { - var comparator = last(values); - if (isArrayLikeObject(comparator)) { - comparator = undefined; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) - : []; -}); - -module.exports = differenceWith; diff --git a/node_modules/lodash/divide.js b/node_modules/lodash/divide.js deleted file mode 100644 index 8cae0cd..0000000 --- a/node_modules/lodash/divide.js +++ /dev/null @@ -1,22 +0,0 @@ -var createMathOperation = require('./_createMathOperation'); - -/** - * Divide two numbers. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Math - * @param {number} dividend The first number in a division. - * @param {number} divisor The second number in a division. - * @returns {number} Returns the quotient. - * @example - * - * _.divide(6, 4); - * // => 1.5 - */ -var divide = createMathOperation(function(dividend, divisor) { - return dividend / divisor; -}, 1); - -module.exports = divide; diff --git a/node_modules/lodash/drop.js b/node_modules/lodash/drop.js deleted file mode 100644 index d5c3cba..0000000 --- a/node_modules/lodash/drop.js +++ /dev/null @@ -1,38 +0,0 @@ -var baseSlice = require('./_baseSlice'), - toInteger = require('./toInteger'); - -/** - * Creates a slice of `array` with `n` elements dropped from the beginning. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.drop([1, 2, 3]); - * // => [2, 3] - * - * _.drop([1, 2, 3], 2); - * // => [3] - * - * _.drop([1, 2, 3], 5); - * // => [] - * - * _.drop([1, 2, 3], 0); - * // => [1, 2, 3] - */ -function drop(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - return baseSlice(array, n < 0 ? 0 : n, length); -} - -module.exports = drop; diff --git a/node_modules/lodash/dropRight.js b/node_modules/lodash/dropRight.js deleted file mode 100644 index 441fe99..0000000 --- a/node_modules/lodash/dropRight.js +++ /dev/null @@ -1,39 +0,0 @@ -var baseSlice = require('./_baseSlice'), - toInteger = require('./toInteger'); - -/** - * Creates a slice of `array` with `n` elements dropped from the end. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.dropRight([1, 2, 3]); - * // => [1, 2] - * - * _.dropRight([1, 2, 3], 2); - * // => [1] - * - * _.dropRight([1, 2, 3], 5); - * // => [] - * - * _.dropRight([1, 2, 3], 0); - * // => [1, 2, 3] - */ -function dropRight(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - n = length - n; - return baseSlice(array, 0, n < 0 ? 0 : n); -} - -module.exports = dropRight; diff --git a/node_modules/lodash/dropRightWhile.js b/node_modules/lodash/dropRightWhile.js deleted file mode 100644 index 9ad36a0..0000000 --- a/node_modules/lodash/dropRightWhile.js +++ /dev/null @@ -1,45 +0,0 @@ -var baseIteratee = require('./_baseIteratee'), - baseWhile = require('./_baseWhile'); - -/** - * Creates a slice of `array` excluding elements dropped from the end. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.dropRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney'] - * - * // The `_.matches` iteratee shorthand. - * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['barney', 'fred'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropRightWhile(users, ['active', false]); - * // => objects for ['barney'] - * - * // The `_.property` iteratee shorthand. - * _.dropRightWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] - */ -function dropRightWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, baseIteratee(predicate, 3), true, true) - : []; -} - -module.exports = dropRightWhile; diff --git a/node_modules/lodash/dropWhile.js b/node_modules/lodash/dropWhile.js deleted file mode 100644 index 903ef56..0000000 --- a/node_modules/lodash/dropWhile.js +++ /dev/null @@ -1,45 +0,0 @@ -var baseIteratee = require('./_baseIteratee'), - baseWhile = require('./_baseWhile'); - -/** - * Creates a slice of `array` excluding elements dropped from the beginning. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.dropWhile(users, function(o) { return !o.active; }); - * // => objects for ['pebbles'] - * - * // The `_.matches` iteratee shorthand. - * _.dropWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropWhile(users, ['active', false]); - * // => objects for ['pebbles'] - * - * // The `_.property` iteratee shorthand. - * _.dropWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] - */ -function dropWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, baseIteratee(predicate, 3), true) - : []; -} - -module.exports = dropWhile; diff --git a/node_modules/lodash/each.js b/node_modules/lodash/each.js deleted file mode 100644 index 8800f42..0000000 --- a/node_modules/lodash/each.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./forEach'); diff --git a/node_modules/lodash/eachRight.js b/node_modules/lodash/eachRight.js deleted file mode 100644 index 3252b2a..0000000 --- a/node_modules/lodash/eachRight.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./forEachRight'); diff --git a/node_modules/lodash/endsWith.js b/node_modules/lodash/endsWith.js deleted file mode 100644 index 76fc866..0000000 --- a/node_modules/lodash/endsWith.js +++ /dev/null @@ -1,43 +0,0 @@ -var baseClamp = require('./_baseClamp'), - baseToString = require('./_baseToString'), - toInteger = require('./toInteger'), - toString = require('./toString'); - -/** - * Checks if `string` ends with the given target string. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to inspect. - * @param {string} [target] The string to search for. - * @param {number} [position=string.length] The position to search up to. - * @returns {boolean} Returns `true` if `string` ends with `target`, - * else `false`. - * @example - * - * _.endsWith('abc', 'c'); - * // => true - * - * _.endsWith('abc', 'b'); - * // => false - * - * _.endsWith('abc', 'b', 2); - * // => true - */ -function endsWith(string, target, position) { - string = toString(string); - target = baseToString(target); - - var length = string.length; - position = position === undefined - ? length - : baseClamp(toInteger(position), 0, length); - - var end = position; - position -= target.length; - return position >= 0 && string.slice(position, end) == target; -} - -module.exports = endsWith; diff --git a/node_modules/lodash/entries.js b/node_modules/lodash/entries.js deleted file mode 100644 index 7a88df2..0000000 --- a/node_modules/lodash/entries.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./toPairs'); diff --git a/node_modules/lodash/entriesIn.js b/node_modules/lodash/entriesIn.js deleted file mode 100644 index f6c6331..0000000 --- a/node_modules/lodash/entriesIn.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./toPairsIn'); diff --git a/node_modules/lodash/eq.js b/node_modules/lodash/eq.js deleted file mode 100644 index a940688..0000000 --- a/node_modules/lodash/eq.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ -function eq(value, other) { - return value === other || (value !== value && other !== other); -} - -module.exports = eq; diff --git a/node_modules/lodash/escape.js b/node_modules/lodash/escape.js deleted file mode 100644 index 9247e00..0000000 --- a/node_modules/lodash/escape.js +++ /dev/null @@ -1,43 +0,0 @@ -var escapeHtmlChar = require('./_escapeHtmlChar'), - toString = require('./toString'); - -/** Used to match HTML entities and HTML characters. */ -var reUnescapedHtml = /[&<>"']/g, - reHasUnescapedHtml = RegExp(reUnescapedHtml.source); - -/** - * Converts the characters "&", "<", ">", '"', and "'" in `string` to their - * corresponding HTML entities. - * - * **Note:** No other characters are escaped. To escape additional - * characters use a third-party library like [_he_](https://mths.be/he). - * - * Though the ">" character is escaped for symmetry, characters like - * ">" and "/" don't need escaping in HTML and have no special meaning - * unless they're part of a tag or unquoted attribute value. See - * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) - * (under "semi-related fun fact") for more details. - * - * When working with HTML you should always - * [quote attribute values](http://wonko.com/post/html-escaping) to reduce - * XSS vectors. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escape('fred, barney, & pebbles'); - * // => 'fred, barney, & pebbles' - */ -function escape(string) { - string = toString(string); - return (string && reHasUnescapedHtml.test(string)) - ? string.replace(reUnescapedHtml, escapeHtmlChar) - : string; -} - -module.exports = escape; diff --git a/node_modules/lodash/escapeRegExp.js b/node_modules/lodash/escapeRegExp.js deleted file mode 100644 index 0a58c69..0000000 --- a/node_modules/lodash/escapeRegExp.js +++ /dev/null @@ -1,32 +0,0 @@ -var toString = require('./toString'); - -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, - reHasRegExpChar = RegExp(reRegExpChar.source); - -/** - * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", - * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escapeRegExp('[lodash](https://lodash.com/)'); - * // => '\[lodash\]\(https://lodash\.com/\)' - */ -function escapeRegExp(string) { - string = toString(string); - return (string && reHasRegExpChar.test(string)) - ? string.replace(reRegExpChar, '\\$&') - : string; -} - -module.exports = escapeRegExp; diff --git a/node_modules/lodash/every.js b/node_modules/lodash/every.js deleted file mode 100644 index 25080da..0000000 --- a/node_modules/lodash/every.js +++ /dev/null @@ -1,56 +0,0 @@ -var arrayEvery = require('./_arrayEvery'), - baseEvery = require('./_baseEvery'), - baseIteratee = require('./_baseIteratee'), - isArray = require('./isArray'), - isIterateeCall = require('./_isIterateeCall'); - -/** - * Checks if `predicate` returns truthy for **all** elements of `collection`. - * Iteration is stopped once `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * **Note:** This method returns `true` for - * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because - * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of - * elements of empty collections. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes'], Boolean); - * // => false - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.every(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.every(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.every(users, 'active'); - * // => false - */ -function every(collection, predicate, guard) { - var func = isArray(collection) ? arrayEvery : baseEvery; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined; - } - return func(collection, baseIteratee(predicate, 3)); -} - -module.exports = every; diff --git a/node_modules/lodash/extend.js b/node_modules/lodash/extend.js deleted file mode 100644 index e00166c..0000000 --- a/node_modules/lodash/extend.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./assignIn'); diff --git a/node_modules/lodash/extendWith.js b/node_modules/lodash/extendWith.js deleted file mode 100644 index dbdcb3b..0000000 --- a/node_modules/lodash/extendWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./assignInWith'); diff --git a/node_modules/lodash/fill.js b/node_modules/lodash/fill.js deleted file mode 100644 index ae13aa1..0000000 --- a/node_modules/lodash/fill.js +++ /dev/null @@ -1,45 +0,0 @@ -var baseFill = require('./_baseFill'), - isIterateeCall = require('./_isIterateeCall'); - -/** - * Fills elements of `array` with `value` from `start` up to, but not - * including, `end`. - * - * **Note:** This method mutates `array`. - * - * @static - * @memberOf _ - * @since 3.2.0 - * @category Array - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3]; - * - * _.fill(array, 'a'); - * console.log(array); - * // => ['a', 'a', 'a'] - * - * _.fill(Array(3), 2); - * // => [2, 2, 2] - * - * _.fill([4, 6, 8, 10], '*', 1, 3); - * // => [4, '*', '*', 10] - */ -function fill(array, value, start, end) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { - start = 0; - end = length; - } - return baseFill(array, value, start, end); -} - -module.exports = fill; diff --git a/node_modules/lodash/filter.js b/node_modules/lodash/filter.js deleted file mode 100644 index 89e0c8c..0000000 --- a/node_modules/lodash/filter.js +++ /dev/null @@ -1,52 +0,0 @@ -var arrayFilter = require('./_arrayFilter'), - baseFilter = require('./_baseFilter'), - baseIteratee = require('./_baseIteratee'), - isArray = require('./isArray'); - -/** - * Iterates over elements of `collection`, returning an array of all elements - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * **Note:** Unlike `_.remove`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.reject - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * _.filter(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, { 'age': 36, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.filter(users, 'active'); - * // => objects for ['barney'] - * - * // Combining several predicates using `_.overEvery` or `_.overSome`. - * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); - * // => objects for ['fred', 'barney'] - */ -function filter(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, baseIteratee(predicate, 3)); -} - -module.exports = filter; diff --git a/node_modules/lodash/find.js b/node_modules/lodash/find.js deleted file mode 100644 index de732cc..0000000 --- a/node_modules/lodash/find.js +++ /dev/null @@ -1,42 +0,0 @@ -var createFind = require('./_createFind'), - findIndex = require('./findIndex'); - -/** - * Iterates over elements of `collection`, returning the first element - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false }, - * { 'user': 'pebbles', 'age': 1, 'active': true } - * ]; - * - * _.find(users, function(o) { return o.age < 40; }); - * // => object for 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.find(users, { 'age': 1, 'active': true }); - * // => object for 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.find(users, ['active', false]); - * // => object for 'fred' - * - * // The `_.property` iteratee shorthand. - * _.find(users, 'active'); - * // => object for 'barney' - */ -var find = createFind(findIndex); - -module.exports = find; diff --git a/node_modules/lodash/findIndex.js b/node_modules/lodash/findIndex.js deleted file mode 100644 index 4689069..0000000 --- a/node_modules/lodash/findIndex.js +++ /dev/null @@ -1,55 +0,0 @@ -var baseFindIndex = require('./_baseFindIndex'), - baseIteratee = require('./_baseIteratee'), - toInteger = require('./toInteger'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * This method is like `_.find` except that it returns the index of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.findIndex(users, function(o) { return o.user == 'barney'; }); - * // => 0 - * - * // The `_.matches` iteratee shorthand. - * _.findIndex(users, { 'user': 'fred', 'active': false }); - * // => 1 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findIndex(users, ['active', false]); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.findIndex(users, 'active'); - * // => 2 - */ -function findIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseFindIndex(array, baseIteratee(predicate, 3), index); -} - -module.exports = findIndex; diff --git a/node_modules/lodash/findKey.js b/node_modules/lodash/findKey.js deleted file mode 100644 index cac0248..0000000 --- a/node_modules/lodash/findKey.js +++ /dev/null @@ -1,44 +0,0 @@ -var baseFindKey = require('./_baseFindKey'), - baseForOwn = require('./_baseForOwn'), - baseIteratee = require('./_baseIteratee'); - -/** - * This method is like `_.find` except that it returns the key of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findKey(users, function(o) { return o.age < 40; }); - * // => 'barney' (iteration order is not guaranteed) - * - * // The `_.matches` iteratee shorthand. - * _.findKey(users, { 'age': 1, 'active': true }); - * // => 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findKey(users, 'active'); - * // => 'barney' - */ -function findKey(object, predicate) { - return baseFindKey(object, baseIteratee(predicate, 3), baseForOwn); -} - -module.exports = findKey; diff --git a/node_modules/lodash/findLast.js b/node_modules/lodash/findLast.js deleted file mode 100644 index 70b4271..0000000 --- a/node_modules/lodash/findLast.js +++ /dev/null @@ -1,25 +0,0 @@ -var createFind = require('./_createFind'), - findLastIndex = require('./findLastIndex'); - -/** - * This method is like `_.find` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=collection.length-1] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * _.findLast([1, 2, 3, 4], function(n) { - * return n % 2 == 1; - * }); - * // => 3 - */ -var findLast = createFind(findLastIndex); - -module.exports = findLast; diff --git a/node_modules/lodash/findLastIndex.js b/node_modules/lodash/findLastIndex.js deleted file mode 100644 index 7da3431..0000000 --- a/node_modules/lodash/findLastIndex.js +++ /dev/null @@ -1,59 +0,0 @@ -var baseFindIndex = require('./_baseFindIndex'), - baseIteratee = require('./_baseIteratee'), - toInteger = require('./toInteger'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max, - nativeMin = Math.min; - -/** - * This method is like `_.findIndex` except that it iterates over elements - * of `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); - * // => 2 - * - * // The `_.matches` iteratee shorthand. - * _.findLastIndex(users, { 'user': 'barney', 'active': true }); - * // => 0 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findLastIndex(users, ['active', false]); - * // => 2 - * - * // The `_.property` iteratee shorthand. - * _.findLastIndex(users, 'active'); - * // => 0 - */ -function findLastIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = length - 1; - if (fromIndex !== undefined) { - index = toInteger(fromIndex); - index = fromIndex < 0 - ? nativeMax(length + index, 0) - : nativeMin(index, length - 1); - } - return baseFindIndex(array, baseIteratee(predicate, 3), index, true); -} - -module.exports = findLastIndex; diff --git a/node_modules/lodash/findLastKey.js b/node_modules/lodash/findLastKey.js deleted file mode 100644 index 66fb9fb..0000000 --- a/node_modules/lodash/findLastKey.js +++ /dev/null @@ -1,44 +0,0 @@ -var baseFindKey = require('./_baseFindKey'), - baseForOwnRight = require('./_baseForOwnRight'), - baseIteratee = require('./_baseIteratee'); - -/** - * This method is like `_.findKey` except that it iterates over elements of - * a collection in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findLastKey(users, function(o) { return o.age < 40; }); - * // => returns 'pebbles' assuming `_.findKey` returns 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.findLastKey(users, { 'age': 36, 'active': true }); - * // => 'barney' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findLastKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findLastKey(users, 'active'); - * // => 'pebbles' - */ -function findLastKey(object, predicate) { - return baseFindKey(object, baseIteratee(predicate, 3), baseForOwnRight); -} - -module.exports = findLastKey; diff --git a/node_modules/lodash/first.js b/node_modules/lodash/first.js deleted file mode 100644 index 53f4ad1..0000000 --- a/node_modules/lodash/first.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./head'); diff --git a/node_modules/lodash/flake.lock b/node_modules/lodash/flake.lock deleted file mode 100644 index dd03252..0000000 --- a/node_modules/lodash/flake.lock +++ /dev/null @@ -1,40 +0,0 @@ -{ - "nodes": { - "nixpkgs": { - "locked": { - "lastModified": 1613582597, - "narHash": "sha256-6LvipIvFuhyorHpUqK3HjySC5Y6gshXHFBhU9EJ4DoM=", - "path": "/nix/store/srvplqq673sqd9vyfhyc5w1p88y1gfm4-source", - "rev": "6b1057b452c55bb3b463f0d7055bc4ec3fd1f381", - "type": "path" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "root": { - "inputs": { - "nixpkgs": "nixpkgs", - "utils": "utils" - } - }, - "utils": { - "locked": { - "lastModified": 1610051610, - "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/node_modules/lodash/flake.nix b/node_modules/lodash/flake.nix deleted file mode 100644 index 15a451c..0000000 --- a/node_modules/lodash/flake.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - inputs = { - utils.url = "github:numtide/flake-utils"; - }; - - outputs = { self, nixpkgs, utils }: - utils.lib.eachDefaultSystem (system: - let - pkgs = nixpkgs.legacyPackages."${system}"; - in rec { - devShell = pkgs.mkShell { - nativeBuildInputs = with pkgs; [ - yarn - nodejs-14_x - nodePackages.typescript-language-server - nodePackages.eslint - ]; - }; - }); -} diff --git a/node_modules/lodash/flatMap.js b/node_modules/lodash/flatMap.js deleted file mode 100644 index e668506..0000000 --- a/node_modules/lodash/flatMap.js +++ /dev/null @@ -1,29 +0,0 @@ -var baseFlatten = require('./_baseFlatten'), - map = require('./map'); - -/** - * Creates a flattened array of values by running each element in `collection` - * thru `iteratee` and flattening the mapped results. The iteratee is invoked - * with three arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [n, n]; - * } - * - * _.flatMap([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ -function flatMap(collection, iteratee) { - return baseFlatten(map(collection, iteratee), 1); -} - -module.exports = flatMap; diff --git a/node_modules/lodash/flatMapDeep.js b/node_modules/lodash/flatMapDeep.js deleted file mode 100644 index 4653d60..0000000 --- a/node_modules/lodash/flatMapDeep.js +++ /dev/null @@ -1,31 +0,0 @@ -var baseFlatten = require('./_baseFlatten'), - map = require('./map'); - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * _.flatMapDeep([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ -function flatMapDeep(collection, iteratee) { - return baseFlatten(map(collection, iteratee), INFINITY); -} - -module.exports = flatMapDeep; diff --git a/node_modules/lodash/flatMapDepth.js b/node_modules/lodash/flatMapDepth.js deleted file mode 100644 index 6d72005..0000000 --- a/node_modules/lodash/flatMapDepth.js +++ /dev/null @@ -1,31 +0,0 @@ -var baseFlatten = require('./_baseFlatten'), - map = require('./map'), - toInteger = require('./toInteger'); - -/** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results up to `depth` times. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * _.flatMapDepth([1, 2], duplicate, 2); - * // => [[1, 1], [2, 2]] - */ -function flatMapDepth(collection, iteratee, depth) { - depth = depth === undefined ? 1 : toInteger(depth); - return baseFlatten(map(collection, iteratee), depth); -} - -module.exports = flatMapDepth; diff --git a/node_modules/lodash/flatten.js b/node_modules/lodash/flatten.js deleted file mode 100644 index 3f09f7f..0000000 --- a/node_modules/lodash/flatten.js +++ /dev/null @@ -1,22 +0,0 @@ -var baseFlatten = require('./_baseFlatten'); - -/** - * Flattens `array` a single level deep. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flatten([1, [2, [3, [4]], 5]]); - * // => [1, 2, [3, [4]], 5] - */ -function flatten(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, 1) : []; -} - -module.exports = flatten; diff --git a/node_modules/lodash/flattenDeep.js b/node_modules/lodash/flattenDeep.js deleted file mode 100644 index 8ad585c..0000000 --- a/node_modules/lodash/flattenDeep.js +++ /dev/null @@ -1,25 +0,0 @@ -var baseFlatten = require('./_baseFlatten'); - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** - * Recursively flattens `array`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flattenDeep([1, [2, [3, [4]], 5]]); - * // => [1, 2, 3, 4, 5] - */ -function flattenDeep(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, INFINITY) : []; -} - -module.exports = flattenDeep; diff --git a/node_modules/lodash/flattenDepth.js b/node_modules/lodash/flattenDepth.js deleted file mode 100644 index 441fdcc..0000000 --- a/node_modules/lodash/flattenDepth.js +++ /dev/null @@ -1,33 +0,0 @@ -var baseFlatten = require('./_baseFlatten'), - toInteger = require('./toInteger'); - -/** - * Recursively flatten `array` up to `depth` times. - * - * @static - * @memberOf _ - * @since 4.4.0 - * @category Array - * @param {Array} array The array to flatten. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. - * @example - * - * var array = [1, [2, [3, [4]], 5]]; - * - * _.flattenDepth(array, 1); - * // => [1, 2, [3, [4]], 5] - * - * _.flattenDepth(array, 2); - * // => [1, 2, 3, [4], 5] - */ -function flattenDepth(array, depth) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - depth = depth === undefined ? 1 : toInteger(depth); - return baseFlatten(array, depth); -} - -module.exports = flattenDepth; diff --git a/node_modules/lodash/flip.js b/node_modules/lodash/flip.js deleted file mode 100644 index c28dd78..0000000 --- a/node_modules/lodash/flip.js +++ /dev/null @@ -1,28 +0,0 @@ -var createWrap = require('./_createWrap'); - -/** Used to compose bitmasks for function metadata. */ -var WRAP_FLIP_FLAG = 512; - -/** - * Creates a function that invokes `func` with arguments reversed. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to flip arguments for. - * @returns {Function} Returns the new flipped function. - * @example - * - * var flipped = _.flip(function() { - * return _.toArray(arguments); - * }); - * - * flipped('a', 'b', 'c', 'd'); - * // => ['d', 'c', 'b', 'a'] - */ -function flip(func) { - return createWrap(func, WRAP_FLIP_FLAG); -} - -module.exports = flip; diff --git a/node_modules/lodash/floor.js b/node_modules/lodash/floor.js deleted file mode 100644 index ab6dfa2..0000000 --- a/node_modules/lodash/floor.js +++ /dev/null @@ -1,26 +0,0 @@ -var createRound = require('./_createRound'); - -/** - * Computes `number` rounded down to `precision`. - * - * @static - * @memberOf _ - * @since 3.10.0 - * @category Math - * @param {number} number The number to round down. - * @param {number} [precision=0] The precision to round down to. - * @returns {number} Returns the rounded down number. - * @example - * - * _.floor(4.006); - * // => 4 - * - * _.floor(0.046, 2); - * // => 0.04 - * - * _.floor(4060, -2); - * // => 4000 - */ -var floor = createRound('floor'); - -module.exports = floor; diff --git a/node_modules/lodash/flow.js b/node_modules/lodash/flow.js deleted file mode 100644 index 74b6b62..0000000 --- a/node_modules/lodash/flow.js +++ /dev/null @@ -1,27 +0,0 @@ -var createFlow = require('./_createFlow'); - -/** - * Creates a function that returns the result of invoking the given functions - * with the `this` binding of the created function, where each successive - * invocation is supplied the return value of the previous. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Util - * @param {...(Function|Function[])} [funcs] The functions to invoke. - * @returns {Function} Returns the new composite function. - * @see _.flowRight - * @example - * - * function square(n) { - * return n * n; - * } - * - * var addSquare = _.flow([_.add, square]); - * addSquare(1, 2); - * // => 9 - */ -var flow = createFlow(); - -module.exports = flow; diff --git a/node_modules/lodash/flowRight.js b/node_modules/lodash/flowRight.js deleted file mode 100644 index 1146141..0000000 --- a/node_modules/lodash/flowRight.js +++ /dev/null @@ -1,26 +0,0 @@ -var createFlow = require('./_createFlow'); - -/** - * This method is like `_.flow` except that it creates a function that - * invokes the given functions from right to left. - * - * @static - * @since 3.0.0 - * @memberOf _ - * @category Util - * @param {...(Function|Function[])} [funcs] The functions to invoke. - * @returns {Function} Returns the new composite function. - * @see _.flow - * @example - * - * function square(n) { - * return n * n; - * } - * - * var addSquare = _.flowRight([square, _.add]); - * addSquare(1, 2); - * // => 9 - */ -var flowRight = createFlow(true); - -module.exports = flowRight; diff --git a/node_modules/lodash/forEach.js b/node_modules/lodash/forEach.js deleted file mode 100644 index c64eaa7..0000000 --- a/node_modules/lodash/forEach.js +++ /dev/null @@ -1,41 +0,0 @@ -var arrayEach = require('./_arrayEach'), - baseEach = require('./_baseEach'), - castFunction = require('./_castFunction'), - isArray = require('./isArray'); - -/** - * Iterates over elements of `collection` and invokes `iteratee` for each element. - * The iteratee is invoked with three arguments: (value, index|key, collection). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * **Note:** As with other "Collections" methods, objects with a "length" - * property are iterated like arrays. To avoid this behavior use `_.forIn` - * or `_.forOwn` for object iteration. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias each - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEachRight - * @example - * - * _.forEach([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `1` then `2`. - * - * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ -function forEach(collection, iteratee) { - var func = isArray(collection) ? arrayEach : baseEach; - return func(collection, castFunction(iteratee)); -} - -module.exports = forEach; diff --git a/node_modules/lodash/forEachRight.js b/node_modules/lodash/forEachRight.js deleted file mode 100644 index 7390eba..0000000 --- a/node_modules/lodash/forEachRight.js +++ /dev/null @@ -1,31 +0,0 @@ -var arrayEachRight = require('./_arrayEachRight'), - baseEachRight = require('./_baseEachRight'), - castFunction = require('./_castFunction'), - isArray = require('./isArray'); - -/** - * This method is like `_.forEach` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @alias eachRight - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEach - * @example - * - * _.forEachRight([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `2` then `1`. - */ -function forEachRight(collection, iteratee) { - var func = isArray(collection) ? arrayEachRight : baseEachRight; - return func(collection, castFunction(iteratee)); -} - -module.exports = forEachRight; diff --git a/node_modules/lodash/forIn.js b/node_modules/lodash/forIn.js deleted file mode 100644 index 583a596..0000000 --- a/node_modules/lodash/forIn.js +++ /dev/null @@ -1,39 +0,0 @@ -var baseFor = require('./_baseFor'), - castFunction = require('./_castFunction'), - keysIn = require('./keysIn'); - -/** - * Iterates over own and inherited enumerable string keyed properties of an - * object and invokes `iteratee` for each property. The iteratee is invoked - * with three arguments: (value, key, object). Iteratee functions may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forInRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forIn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). - */ -function forIn(object, iteratee) { - return object == null - ? object - : baseFor(object, castFunction(iteratee), keysIn); -} - -module.exports = forIn; diff --git a/node_modules/lodash/forInRight.js b/node_modules/lodash/forInRight.js deleted file mode 100644 index 4aedf58..0000000 --- a/node_modules/lodash/forInRight.js +++ /dev/null @@ -1,37 +0,0 @@ -var baseForRight = require('./_baseForRight'), - castFunction = require('./_castFunction'), - keysIn = require('./keysIn'); - -/** - * This method is like `_.forIn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forIn - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forInRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. - */ -function forInRight(object, iteratee) { - return object == null - ? object - : baseForRight(object, castFunction(iteratee), keysIn); -} - -module.exports = forInRight; diff --git a/node_modules/lodash/forOwn.js b/node_modules/lodash/forOwn.js deleted file mode 100644 index 94eed84..0000000 --- a/node_modules/lodash/forOwn.js +++ /dev/null @@ -1,36 +0,0 @@ -var baseForOwn = require('./_baseForOwn'), - castFunction = require('./_castFunction'); - -/** - * Iterates over own enumerable string keyed properties of an object and - * invokes `iteratee` for each property. The iteratee is invoked with three - * arguments: (value, key, object). Iteratee functions may exit iteration - * early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forOwnRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ -function forOwn(object, iteratee) { - return object && baseForOwn(object, castFunction(iteratee)); -} - -module.exports = forOwn; diff --git a/node_modules/lodash/forOwnRight.js b/node_modules/lodash/forOwnRight.js deleted file mode 100644 index 86f338f..0000000 --- a/node_modules/lodash/forOwnRight.js +++ /dev/null @@ -1,34 +0,0 @@ -var baseForOwnRight = require('./_baseForOwnRight'), - castFunction = require('./_castFunction'); - -/** - * This method is like `_.forOwn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forOwn - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwnRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. - */ -function forOwnRight(object, iteratee) { - return object && baseForOwnRight(object, castFunction(iteratee)); -} - -module.exports = forOwnRight; diff --git a/node_modules/lodash/fp.js b/node_modules/lodash/fp.js deleted file mode 100644 index e372dbb..0000000 --- a/node_modules/lodash/fp.js +++ /dev/null @@ -1,2 +0,0 @@ -var _ = require('./lodash.min').runInContext(); -module.exports = require('./fp/_baseConvert')(_, _); diff --git a/node_modules/lodash/fp/F.js b/node_modules/lodash/fp/F.js deleted file mode 100644 index a05a63a..0000000 --- a/node_modules/lodash/fp/F.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./stubFalse'); diff --git a/node_modules/lodash/fp/T.js b/node_modules/lodash/fp/T.js deleted file mode 100644 index e2ba8ea..0000000 --- a/node_modules/lodash/fp/T.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./stubTrue'); diff --git a/node_modules/lodash/fp/__.js b/node_modules/lodash/fp/__.js deleted file mode 100644 index 4af98de..0000000 --- a/node_modules/lodash/fp/__.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./placeholder'); diff --git a/node_modules/lodash/fp/_baseConvert.js b/node_modules/lodash/fp/_baseConvert.js deleted file mode 100644 index 9baf8e1..0000000 --- a/node_modules/lodash/fp/_baseConvert.js +++ /dev/null @@ -1,569 +0,0 @@ -var mapping = require('./_mapping'), - fallbackHolder = require('./placeholder'); - -/** Built-in value reference. */ -var push = Array.prototype.push; - -/** - * Creates a function, with an arity of `n`, that invokes `func` with the - * arguments it receives. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} n The arity of the new function. - * @returns {Function} Returns the new function. - */ -function baseArity(func, n) { - return n == 2 - ? function(a, b) { return func.apply(undefined, arguments); } - : function(a) { return func.apply(undefined, arguments); }; -} - -/** - * Creates a function that invokes `func`, with up to `n` arguments, ignoring - * any additional arguments. - * - * @private - * @param {Function} func The function to cap arguments for. - * @param {number} n The arity cap. - * @returns {Function} Returns the new function. - */ -function baseAry(func, n) { - return n == 2 - ? function(a, b) { return func(a, b); } - : function(a) { return func(a); }; -} - -/** - * Creates a clone of `array`. - * - * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the cloned array. - */ -function cloneArray(array) { - var length = array ? array.length : 0, - result = Array(length); - - while (length--) { - result[length] = array[length]; - } - return result; -} - -/** - * Creates a function that clones a given object using the assignment `func`. - * - * @private - * @param {Function} func The assignment function. - * @returns {Function} Returns the new cloner function. - */ -function createCloner(func) { - return function(object) { - return func({}, object); - }; -} - -/** - * A specialized version of `_.spread` which flattens the spread array into - * the arguments of the invoked `func`. - * - * @private - * @param {Function} func The function to spread arguments over. - * @param {number} start The start position of the spread. - * @returns {Function} Returns the new function. - */ -function flatSpread(func, start) { - return function() { - var length = arguments.length, - lastIndex = length - 1, - args = Array(length); - - while (length--) { - args[length] = arguments[length]; - } - var array = args[start], - otherArgs = args.slice(0, start); - - if (array) { - push.apply(otherArgs, array); - } - if (start != lastIndex) { - push.apply(otherArgs, args.slice(start + 1)); - } - return func.apply(this, otherArgs); - }; -} - -/** - * Creates a function that wraps `func` and uses `cloner` to clone the first - * argument it receives. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} cloner The function to clone arguments. - * @returns {Function} Returns the new immutable function. - */ -function wrapImmutable(func, cloner) { - return function() { - var length = arguments.length; - if (!length) { - return; - } - var args = Array(length); - while (length--) { - args[length] = arguments[length]; - } - var result = args[0] = cloner.apply(undefined, args); - func.apply(undefined, args); - return result; - }; -} - -/** - * The base implementation of `convert` which accepts a `util` object of methods - * required to perform conversions. - * - * @param {Object} util The util object. - * @param {string} name The name of the function to convert. - * @param {Function} func The function to convert. - * @param {Object} [options] The options object. - * @param {boolean} [options.cap=true] Specify capping iteratee arguments. - * @param {boolean} [options.curry=true] Specify currying. - * @param {boolean} [options.fixed=true] Specify fixed arity. - * @param {boolean} [options.immutable=true] Specify immutable operations. - * @param {boolean} [options.rearg=true] Specify rearranging arguments. - * @returns {Function|Object} Returns the converted function or object. - */ -function baseConvert(util, name, func, options) { - var isLib = typeof name == 'function', - isObj = name === Object(name); - - if (isObj) { - options = func; - func = name; - name = undefined; - } - if (func == null) { - throw new TypeError; - } - options || (options = {}); - - var config = { - 'cap': 'cap' in options ? options.cap : true, - 'curry': 'curry' in options ? options.curry : true, - 'fixed': 'fixed' in options ? options.fixed : true, - 'immutable': 'immutable' in options ? options.immutable : true, - 'rearg': 'rearg' in options ? options.rearg : true - }; - - var defaultHolder = isLib ? func : fallbackHolder, - forceCurry = ('curry' in options) && options.curry, - forceFixed = ('fixed' in options) && options.fixed, - forceRearg = ('rearg' in options) && options.rearg, - pristine = isLib ? func.runInContext() : undefined; - - var helpers = isLib ? func : { - 'ary': util.ary, - 'assign': util.assign, - 'clone': util.clone, - 'curry': util.curry, - 'forEach': util.forEach, - 'isArray': util.isArray, - 'isError': util.isError, - 'isFunction': util.isFunction, - 'isWeakMap': util.isWeakMap, - 'iteratee': util.iteratee, - 'keys': util.keys, - 'rearg': util.rearg, - 'toInteger': util.toInteger, - 'toPath': util.toPath - }; - - var ary = helpers.ary, - assign = helpers.assign, - clone = helpers.clone, - curry = helpers.curry, - each = helpers.forEach, - isArray = helpers.isArray, - isError = helpers.isError, - isFunction = helpers.isFunction, - isWeakMap = helpers.isWeakMap, - keys = helpers.keys, - rearg = helpers.rearg, - toInteger = helpers.toInteger, - toPath = helpers.toPath; - - var aryMethodKeys = keys(mapping.aryMethod); - - var wrappers = { - 'castArray': function(castArray) { - return function() { - var value = arguments[0]; - return isArray(value) - ? castArray(cloneArray(value)) - : castArray.apply(undefined, arguments); - }; - }, - 'iteratee': function(iteratee) { - return function() { - var func = arguments[0], - arity = arguments[1], - result = iteratee(func, arity), - length = result.length; - - if (config.cap && typeof arity == 'number') { - arity = arity > 2 ? (arity - 2) : 1; - return (length && length <= arity) ? result : baseAry(result, arity); - } - return result; - }; - }, - 'mixin': function(mixin) { - return function(source) { - var func = this; - if (!isFunction(func)) { - return mixin(func, Object(source)); - } - var pairs = []; - each(keys(source), function(key) { - if (isFunction(source[key])) { - pairs.push([key, func.prototype[key]]); - } - }); - - mixin(func, Object(source)); - - each(pairs, function(pair) { - var value = pair[1]; - if (isFunction(value)) { - func.prototype[pair[0]] = value; - } else { - delete func.prototype[pair[0]]; - } - }); - return func; - }; - }, - 'nthArg': function(nthArg) { - return function(n) { - var arity = n < 0 ? 1 : (toInteger(n) + 1); - return curry(nthArg(n), arity); - }; - }, - 'rearg': function(rearg) { - return function(func, indexes) { - var arity = indexes ? indexes.length : 0; - return curry(rearg(func, indexes), arity); - }; - }, - 'runInContext': function(runInContext) { - return function(context) { - return baseConvert(util, runInContext(context), options); - }; - } - }; - - /*--------------------------------------------------------------------------*/ - - /** - * Casts `func` to a function with an arity capped iteratee if needed. - * - * @private - * @param {string} name The name of the function to inspect. - * @param {Function} func The function to inspect. - * @returns {Function} Returns the cast function. - */ - function castCap(name, func) { - if (config.cap) { - var indexes = mapping.iterateeRearg[name]; - if (indexes) { - return iterateeRearg(func, indexes); - } - var n = !isLib && mapping.iterateeAry[name]; - if (n) { - return iterateeAry(func, n); - } - } - return func; - } - - /** - * Casts `func` to a curried function if needed. - * - * @private - * @param {string} name The name of the function to inspect. - * @param {Function} func The function to inspect. - * @param {number} n The arity of `func`. - * @returns {Function} Returns the cast function. - */ - function castCurry(name, func, n) { - return (forceCurry || (config.curry && n > 1)) - ? curry(func, n) - : func; - } - - /** - * Casts `func` to a fixed arity function if needed. - * - * @private - * @param {string} name The name of the function to inspect. - * @param {Function} func The function to inspect. - * @param {number} n The arity cap. - * @returns {Function} Returns the cast function. - */ - function castFixed(name, func, n) { - if (config.fixed && (forceFixed || !mapping.skipFixed[name])) { - var data = mapping.methodSpread[name], - start = data && data.start; - - return start === undefined ? ary(func, n) : flatSpread(func, start); - } - return func; - } - - /** - * Casts `func` to an rearged function if needed. - * - * @private - * @param {string} name The name of the function to inspect. - * @param {Function} func The function to inspect. - * @param {number} n The arity of `func`. - * @returns {Function} Returns the cast function. - */ - function castRearg(name, func, n) { - return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name])) - ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n]) - : func; - } - - /** - * Creates a clone of `object` by `path`. - * - * @private - * @param {Object} object The object to clone. - * @param {Array|string} path The path to clone by. - * @returns {Object} Returns the cloned object. - */ - function cloneByPath(object, path) { - path = toPath(path); - - var index = -1, - length = path.length, - lastIndex = length - 1, - result = clone(Object(object)), - nested = result; - - while (nested != null && ++index < length) { - var key = path[index], - value = nested[key]; - - if (value != null && - !(isFunction(value) || isError(value) || isWeakMap(value))) { - nested[key] = clone(index == lastIndex ? value : Object(value)); - } - nested = nested[key]; - } - return result; - } - - /** - * Converts `lodash` to an immutable auto-curried iteratee-first data-last - * version with conversion `options` applied. - * - * @param {Object} [options] The options object. See `baseConvert` for more details. - * @returns {Function} Returns the converted `lodash`. - */ - function convertLib(options) { - return _.runInContext.convert(options)(undefined); - } - - /** - * Create a converter function for `func` of `name`. - * - * @param {string} name The name of the function to convert. - * @param {Function} func The function to convert. - * @returns {Function} Returns the new converter function. - */ - function createConverter(name, func) { - var realName = mapping.aliasToReal[name] || name, - methodName = mapping.remap[realName] || realName, - oldOptions = options; - - return function(options) { - var newUtil = isLib ? pristine : helpers, - newFunc = isLib ? pristine[methodName] : func, - newOptions = assign(assign({}, oldOptions), options); - - return baseConvert(newUtil, realName, newFunc, newOptions); - }; - } - - /** - * Creates a function that wraps `func` to invoke its iteratee, with up to `n` - * arguments, ignoring any additional arguments. - * - * @private - * @param {Function} func The function to cap iteratee arguments for. - * @param {number} n The arity cap. - * @returns {Function} Returns the new function. - */ - function iterateeAry(func, n) { - return overArg(func, function(func) { - return typeof func == 'function' ? baseAry(func, n) : func; - }); - } - - /** - * Creates a function that wraps `func` to invoke its iteratee with arguments - * arranged according to the specified `indexes` where the argument value at - * the first index is provided as the first argument, the argument value at - * the second index is provided as the second argument, and so on. - * - * @private - * @param {Function} func The function to rearrange iteratee arguments for. - * @param {number[]} indexes The arranged argument indexes. - * @returns {Function} Returns the new function. - */ - function iterateeRearg(func, indexes) { - return overArg(func, function(func) { - var n = indexes.length; - return baseArity(rearg(baseAry(func, n), indexes), n); - }); - } - - /** - * Creates a function that invokes `func` with its first argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ - function overArg(func, transform) { - return function() { - var length = arguments.length; - if (!length) { - return func(); - } - var args = Array(length); - while (length--) { - args[length] = arguments[length]; - } - var index = config.rearg ? 0 : (length - 1); - args[index] = transform(args[index]); - return func.apply(undefined, args); - }; - } - - /** - * Creates a function that wraps `func` and applys the conversions - * rules by `name`. - * - * @private - * @param {string} name The name of the function to wrap. - * @param {Function} func The function to wrap. - * @returns {Function} Returns the converted function. - */ - function wrap(name, func, placeholder) { - var result, - realName = mapping.aliasToReal[name] || name, - wrapped = func, - wrapper = wrappers[realName]; - - if (wrapper) { - wrapped = wrapper(func); - } - else if (config.immutable) { - if (mapping.mutate.array[realName]) { - wrapped = wrapImmutable(func, cloneArray); - } - else if (mapping.mutate.object[realName]) { - wrapped = wrapImmutable(func, createCloner(func)); - } - else if (mapping.mutate.set[realName]) { - wrapped = wrapImmutable(func, cloneByPath); - } - } - each(aryMethodKeys, function(aryKey) { - each(mapping.aryMethod[aryKey], function(otherName) { - if (realName == otherName) { - var data = mapping.methodSpread[realName], - afterRearg = data && data.afterRearg; - - result = afterRearg - ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey) - : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey); - - result = castCap(realName, result); - result = castCurry(realName, result, aryKey); - return false; - } - }); - return !result; - }); - - result || (result = wrapped); - if (result == func) { - result = forceCurry ? curry(result, 1) : function() { - return func.apply(this, arguments); - }; - } - result.convert = createConverter(realName, func); - result.placeholder = func.placeholder = placeholder; - - return result; - } - - /*--------------------------------------------------------------------------*/ - - if (!isObj) { - return wrap(name, func, defaultHolder); - } - var _ = func; - - // Convert methods by ary cap. - var pairs = []; - each(aryMethodKeys, function(aryKey) { - each(mapping.aryMethod[aryKey], function(key) { - var func = _[mapping.remap[key] || key]; - if (func) { - pairs.push([key, wrap(key, func, _)]); - } - }); - }); - - // Convert remaining methods. - each(keys(_), function(key) { - var func = _[key]; - if (typeof func == 'function') { - var length = pairs.length; - while (length--) { - if (pairs[length][0] == key) { - return; - } - } - func.convert = createConverter(key, func); - pairs.push([key, func]); - } - }); - - // Assign to `_` leaving `_.prototype` unchanged to allow chaining. - each(pairs, function(pair) { - _[pair[0]] = pair[1]; - }); - - _.convert = convertLib; - _.placeholder = _; - - // Assign aliases. - each(keys(_), function(key) { - each(mapping.realToAlias[key] || [], function(alias) { - _[alias] = _[key]; - }); - }); - - return _; -} - -module.exports = baseConvert; diff --git a/node_modules/lodash/fp/_convertBrowser.js b/node_modules/lodash/fp/_convertBrowser.js deleted file mode 100644 index bde030d..0000000 --- a/node_modules/lodash/fp/_convertBrowser.js +++ /dev/null @@ -1,18 +0,0 @@ -var baseConvert = require('./_baseConvert'); - -/** - * Converts `lodash` to an immutable auto-curried iteratee-first data-last - * version with conversion `options` applied. - * - * @param {Function} lodash The lodash function to convert. - * @param {Object} [options] The options object. See `baseConvert` for more details. - * @returns {Function} Returns the converted `lodash`. - */ -function browserConvert(lodash, options) { - return baseConvert(lodash, lodash, options); -} - -if (typeof _ == 'function' && typeof _.runInContext == 'function') { - _ = browserConvert(_.runInContext()); -} -module.exports = browserConvert; diff --git a/node_modules/lodash/fp/_falseOptions.js b/node_modules/lodash/fp/_falseOptions.js deleted file mode 100644 index 773235e..0000000 --- a/node_modules/lodash/fp/_falseOptions.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - 'cap': false, - 'curry': false, - 'fixed': false, - 'immutable': false, - 'rearg': false -}; diff --git a/node_modules/lodash/fp/_mapping.js b/node_modules/lodash/fp/_mapping.js deleted file mode 100644 index a642ec0..0000000 --- a/node_modules/lodash/fp/_mapping.js +++ /dev/null @@ -1,358 +0,0 @@ -/** Used to map aliases to their real names. */ -exports.aliasToReal = { - - // Lodash aliases. - 'each': 'forEach', - 'eachRight': 'forEachRight', - 'entries': 'toPairs', - 'entriesIn': 'toPairsIn', - 'extend': 'assignIn', - 'extendAll': 'assignInAll', - 'extendAllWith': 'assignInAllWith', - 'extendWith': 'assignInWith', - 'first': 'head', - - // Methods that are curried variants of others. - 'conforms': 'conformsTo', - 'matches': 'isMatch', - 'property': 'get', - - // Ramda aliases. - '__': 'placeholder', - 'F': 'stubFalse', - 'T': 'stubTrue', - 'all': 'every', - 'allPass': 'overEvery', - 'always': 'constant', - 'any': 'some', - 'anyPass': 'overSome', - 'apply': 'spread', - 'assoc': 'set', - 'assocPath': 'set', - 'complement': 'negate', - 'compose': 'flowRight', - 'contains': 'includes', - 'dissoc': 'unset', - 'dissocPath': 'unset', - 'dropLast': 'dropRight', - 'dropLastWhile': 'dropRightWhile', - 'equals': 'isEqual', - 'identical': 'eq', - 'indexBy': 'keyBy', - 'init': 'initial', - 'invertObj': 'invert', - 'juxt': 'over', - 'omitAll': 'omit', - 'nAry': 'ary', - 'path': 'get', - 'pathEq': 'matchesProperty', - 'pathOr': 'getOr', - 'paths': 'at', - 'pickAll': 'pick', - 'pipe': 'flow', - 'pluck': 'map', - 'prop': 'get', - 'propEq': 'matchesProperty', - 'propOr': 'getOr', - 'props': 'at', - 'symmetricDifference': 'xor', - 'symmetricDifferenceBy': 'xorBy', - 'symmetricDifferenceWith': 'xorWith', - 'takeLast': 'takeRight', - 'takeLastWhile': 'takeRightWhile', - 'unapply': 'rest', - 'unnest': 'flatten', - 'useWith': 'overArgs', - 'where': 'conformsTo', - 'whereEq': 'isMatch', - 'zipObj': 'zipObject' -}; - -/** Used to map ary to method names. */ -exports.aryMethod = { - '1': [ - 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create', - 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow', - 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll', - 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse', - 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart', - 'uniqueId', 'words', 'zipAll' - ], - '2': [ - 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith', - 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith', - 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN', - 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference', - 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq', - 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex', - 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach', - 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get', - 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection', - 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy', - 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty', - 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit', - 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial', - 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll', - 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove', - 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex', - 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy', - 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight', - 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars', - 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith', - 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject', - 'zipObjectDeep' - ], - '3': [ - 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith', - 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr', - 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith', - 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth', - 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd', - 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight', - 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy', - 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy', - 'xorWith', 'zipWith' - ], - '4': [ - 'fill', 'setWith', 'updateWith' - ] -}; - -/** Used to map ary to rearg configs. */ -exports.aryRearg = { - '2': [1, 0], - '3': [2, 0, 1], - '4': [3, 2, 0, 1] -}; - -/** Used to map method names to their iteratee ary. */ -exports.iterateeAry = { - 'dropRightWhile': 1, - 'dropWhile': 1, - 'every': 1, - 'filter': 1, - 'find': 1, - 'findFrom': 1, - 'findIndex': 1, - 'findIndexFrom': 1, - 'findKey': 1, - 'findLast': 1, - 'findLastFrom': 1, - 'findLastIndex': 1, - 'findLastIndexFrom': 1, - 'findLastKey': 1, - 'flatMap': 1, - 'flatMapDeep': 1, - 'flatMapDepth': 1, - 'forEach': 1, - 'forEachRight': 1, - 'forIn': 1, - 'forInRight': 1, - 'forOwn': 1, - 'forOwnRight': 1, - 'map': 1, - 'mapKeys': 1, - 'mapValues': 1, - 'partition': 1, - 'reduce': 2, - 'reduceRight': 2, - 'reject': 1, - 'remove': 1, - 'some': 1, - 'takeRightWhile': 1, - 'takeWhile': 1, - 'times': 1, - 'transform': 2 -}; - -/** Used to map method names to iteratee rearg configs. */ -exports.iterateeRearg = { - 'mapKeys': [1], - 'reduceRight': [1, 0] -}; - -/** Used to map method names to rearg configs. */ -exports.methodRearg = { - 'assignInAllWith': [1, 0], - 'assignInWith': [1, 2, 0], - 'assignAllWith': [1, 0], - 'assignWith': [1, 2, 0], - 'differenceBy': [1, 2, 0], - 'differenceWith': [1, 2, 0], - 'getOr': [2, 1, 0], - 'intersectionBy': [1, 2, 0], - 'intersectionWith': [1, 2, 0], - 'isEqualWith': [1, 2, 0], - 'isMatchWith': [2, 1, 0], - 'mergeAllWith': [1, 0], - 'mergeWith': [1, 2, 0], - 'padChars': [2, 1, 0], - 'padCharsEnd': [2, 1, 0], - 'padCharsStart': [2, 1, 0], - 'pullAllBy': [2, 1, 0], - 'pullAllWith': [2, 1, 0], - 'rangeStep': [1, 2, 0], - 'rangeStepRight': [1, 2, 0], - 'setWith': [3, 1, 2, 0], - 'sortedIndexBy': [2, 1, 0], - 'sortedLastIndexBy': [2, 1, 0], - 'unionBy': [1, 2, 0], - 'unionWith': [1, 2, 0], - 'updateWith': [3, 1, 2, 0], - 'xorBy': [1, 2, 0], - 'xorWith': [1, 2, 0], - 'zipWith': [1, 2, 0] -}; - -/** Used to map method names to spread configs. */ -exports.methodSpread = { - 'assignAll': { 'start': 0 }, - 'assignAllWith': { 'start': 0 }, - 'assignInAll': { 'start': 0 }, - 'assignInAllWith': { 'start': 0 }, - 'defaultsAll': { 'start': 0 }, - 'defaultsDeepAll': { 'start': 0 }, - 'invokeArgs': { 'start': 2 }, - 'invokeArgsMap': { 'start': 2 }, - 'mergeAll': { 'start': 0 }, - 'mergeAllWith': { 'start': 0 }, - 'partial': { 'start': 1 }, - 'partialRight': { 'start': 1 }, - 'without': { 'start': 1 }, - 'zipAll': { 'start': 0 } -}; - -/** Used to identify methods which mutate arrays or objects. */ -exports.mutate = { - 'array': { - 'fill': true, - 'pull': true, - 'pullAll': true, - 'pullAllBy': true, - 'pullAllWith': true, - 'pullAt': true, - 'remove': true, - 'reverse': true - }, - 'object': { - 'assign': true, - 'assignAll': true, - 'assignAllWith': true, - 'assignIn': true, - 'assignInAll': true, - 'assignInAllWith': true, - 'assignInWith': true, - 'assignWith': true, - 'defaults': true, - 'defaultsAll': true, - 'defaultsDeep': true, - 'defaultsDeepAll': true, - 'merge': true, - 'mergeAll': true, - 'mergeAllWith': true, - 'mergeWith': true, - }, - 'set': { - 'set': true, - 'setWith': true, - 'unset': true, - 'update': true, - 'updateWith': true - } -}; - -/** Used to map real names to their aliases. */ -exports.realToAlias = (function() { - var hasOwnProperty = Object.prototype.hasOwnProperty, - object = exports.aliasToReal, - result = {}; - - for (var key in object) { - var value = object[key]; - if (hasOwnProperty.call(result, value)) { - result[value].push(key); - } else { - result[value] = [key]; - } - } - return result; -}()); - -/** Used to map method names to other names. */ -exports.remap = { - 'assignAll': 'assign', - 'assignAllWith': 'assignWith', - 'assignInAll': 'assignIn', - 'assignInAllWith': 'assignInWith', - 'curryN': 'curry', - 'curryRightN': 'curryRight', - 'defaultsAll': 'defaults', - 'defaultsDeepAll': 'defaultsDeep', - 'findFrom': 'find', - 'findIndexFrom': 'findIndex', - 'findLastFrom': 'findLast', - 'findLastIndexFrom': 'findLastIndex', - 'getOr': 'get', - 'includesFrom': 'includes', - 'indexOfFrom': 'indexOf', - 'invokeArgs': 'invoke', - 'invokeArgsMap': 'invokeMap', - 'lastIndexOfFrom': 'lastIndexOf', - 'mergeAll': 'merge', - 'mergeAllWith': 'mergeWith', - 'padChars': 'pad', - 'padCharsEnd': 'padEnd', - 'padCharsStart': 'padStart', - 'propertyOf': 'get', - 'rangeStep': 'range', - 'rangeStepRight': 'rangeRight', - 'restFrom': 'rest', - 'spreadFrom': 'spread', - 'trimChars': 'trim', - 'trimCharsEnd': 'trimEnd', - 'trimCharsStart': 'trimStart', - 'zipAll': 'zip' -}; - -/** Used to track methods that skip fixing their arity. */ -exports.skipFixed = { - 'castArray': true, - 'flow': true, - 'flowRight': true, - 'iteratee': true, - 'mixin': true, - 'rearg': true, - 'runInContext': true -}; - -/** Used to track methods that skip rearranging arguments. */ -exports.skipRearg = { - 'add': true, - 'assign': true, - 'assignIn': true, - 'bind': true, - 'bindKey': true, - 'concat': true, - 'difference': true, - 'divide': true, - 'eq': true, - 'gt': true, - 'gte': true, - 'isEqual': true, - 'lt': true, - 'lte': true, - 'matchesProperty': true, - 'merge': true, - 'multiply': true, - 'overArgs': true, - 'partial': true, - 'partialRight': true, - 'propertyOf': true, - 'random': true, - 'range': true, - 'rangeRight': true, - 'subtract': true, - 'zip': true, - 'zipObject': true, - 'zipObjectDeep': true -}; diff --git a/node_modules/lodash/fp/_util.js b/node_modules/lodash/fp/_util.js deleted file mode 100644 index 1dbf36f..0000000 --- a/node_modules/lodash/fp/_util.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - 'ary': require('../ary'), - 'assign': require('../_baseAssign'), - 'clone': require('../clone'), - 'curry': require('../curry'), - 'forEach': require('../_arrayEach'), - 'isArray': require('../isArray'), - 'isError': require('../isError'), - 'isFunction': require('../isFunction'), - 'isWeakMap': require('../isWeakMap'), - 'iteratee': require('../iteratee'), - 'keys': require('../_baseKeys'), - 'rearg': require('../rearg'), - 'toInteger': require('../toInteger'), - 'toPath': require('../toPath') -}; diff --git a/node_modules/lodash/fp/add.js b/node_modules/lodash/fp/add.js deleted file mode 100644 index 816eeec..0000000 --- a/node_modules/lodash/fp/add.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('add', require('../add')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/after.js b/node_modules/lodash/fp/after.js deleted file mode 100644 index 21a0167..0000000 --- a/node_modules/lodash/fp/after.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('after', require('../after')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/all.js b/node_modules/lodash/fp/all.js deleted file mode 100644 index d0839f7..0000000 --- a/node_modules/lodash/fp/all.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./every'); diff --git a/node_modules/lodash/fp/allPass.js b/node_modules/lodash/fp/allPass.js deleted file mode 100644 index 79b73ef..0000000 --- a/node_modules/lodash/fp/allPass.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./overEvery'); diff --git a/node_modules/lodash/fp/always.js b/node_modules/lodash/fp/always.js deleted file mode 100644 index 9887703..0000000 --- a/node_modules/lodash/fp/always.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./constant'); diff --git a/node_modules/lodash/fp/any.js b/node_modules/lodash/fp/any.js deleted file mode 100644 index 900ac25..0000000 --- a/node_modules/lodash/fp/any.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./some'); diff --git a/node_modules/lodash/fp/anyPass.js b/node_modules/lodash/fp/anyPass.js deleted file mode 100644 index 2774ab3..0000000 --- a/node_modules/lodash/fp/anyPass.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./overSome'); diff --git a/node_modules/lodash/fp/apply.js b/node_modules/lodash/fp/apply.js deleted file mode 100644 index 2b75712..0000000 --- a/node_modules/lodash/fp/apply.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./spread'); diff --git a/node_modules/lodash/fp/array.js b/node_modules/lodash/fp/array.js deleted file mode 100644 index fe939c2..0000000 --- a/node_modules/lodash/fp/array.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../array')); diff --git a/node_modules/lodash/fp/ary.js b/node_modules/lodash/fp/ary.js deleted file mode 100644 index 8edf187..0000000 --- a/node_modules/lodash/fp/ary.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('ary', require('../ary')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/assign.js b/node_modules/lodash/fp/assign.js deleted file mode 100644 index 23f47af..0000000 --- a/node_modules/lodash/fp/assign.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('assign', require('../assign')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/assignAll.js b/node_modules/lodash/fp/assignAll.js deleted file mode 100644 index b1d36c7..0000000 --- a/node_modules/lodash/fp/assignAll.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('assignAll', require('../assign')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/assignAllWith.js b/node_modules/lodash/fp/assignAllWith.js deleted file mode 100644 index 21e836e..0000000 --- a/node_modules/lodash/fp/assignAllWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('assignAllWith', require('../assignWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/assignIn.js b/node_modules/lodash/fp/assignIn.js deleted file mode 100644 index 6e7c65f..0000000 --- a/node_modules/lodash/fp/assignIn.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('assignIn', require('../assignIn')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/assignInAll.js b/node_modules/lodash/fp/assignInAll.js deleted file mode 100644 index 7ba75db..0000000 --- a/node_modules/lodash/fp/assignInAll.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('assignInAll', require('../assignIn')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/assignInAllWith.js b/node_modules/lodash/fp/assignInAllWith.js deleted file mode 100644 index e766903..0000000 --- a/node_modules/lodash/fp/assignInAllWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('assignInAllWith', require('../assignInWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/assignInWith.js b/node_modules/lodash/fp/assignInWith.js deleted file mode 100644 index acb5923..0000000 --- a/node_modules/lodash/fp/assignInWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('assignInWith', require('../assignInWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/assignWith.js b/node_modules/lodash/fp/assignWith.js deleted file mode 100644 index eb92521..0000000 --- a/node_modules/lodash/fp/assignWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('assignWith', require('../assignWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/assoc.js b/node_modules/lodash/fp/assoc.js deleted file mode 100644 index 7648820..0000000 --- a/node_modules/lodash/fp/assoc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./set'); diff --git a/node_modules/lodash/fp/assocPath.js b/node_modules/lodash/fp/assocPath.js deleted file mode 100644 index 7648820..0000000 --- a/node_modules/lodash/fp/assocPath.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./set'); diff --git a/node_modules/lodash/fp/at.js b/node_modules/lodash/fp/at.js deleted file mode 100644 index cc39d25..0000000 --- a/node_modules/lodash/fp/at.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('at', require('../at')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/attempt.js b/node_modules/lodash/fp/attempt.js deleted file mode 100644 index 26ca42e..0000000 --- a/node_modules/lodash/fp/attempt.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('attempt', require('../attempt')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/before.js b/node_modules/lodash/fp/before.js deleted file mode 100644 index 7a2de65..0000000 --- a/node_modules/lodash/fp/before.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('before', require('../before')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/bind.js b/node_modules/lodash/fp/bind.js deleted file mode 100644 index 5cbe4f3..0000000 --- a/node_modules/lodash/fp/bind.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('bind', require('../bind')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/bindAll.js b/node_modules/lodash/fp/bindAll.js deleted file mode 100644 index 6b4a4a0..0000000 --- a/node_modules/lodash/fp/bindAll.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('bindAll', require('../bindAll')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/bindKey.js b/node_modules/lodash/fp/bindKey.js deleted file mode 100644 index 6a46c6b..0000000 --- a/node_modules/lodash/fp/bindKey.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('bindKey', require('../bindKey')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/camelCase.js b/node_modules/lodash/fp/camelCase.js deleted file mode 100644 index 87b77b4..0000000 --- a/node_modules/lodash/fp/camelCase.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('camelCase', require('../camelCase'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/capitalize.js b/node_modules/lodash/fp/capitalize.js deleted file mode 100644 index cac74e1..0000000 --- a/node_modules/lodash/fp/capitalize.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('capitalize', require('../capitalize'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/castArray.js b/node_modules/lodash/fp/castArray.js deleted file mode 100644 index 8681c09..0000000 --- a/node_modules/lodash/fp/castArray.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('castArray', require('../castArray')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/ceil.js b/node_modules/lodash/fp/ceil.js deleted file mode 100644 index f416b72..0000000 --- a/node_modules/lodash/fp/ceil.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('ceil', require('../ceil')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/chain.js b/node_modules/lodash/fp/chain.js deleted file mode 100644 index 604fe39..0000000 --- a/node_modules/lodash/fp/chain.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('chain', require('../chain'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/chunk.js b/node_modules/lodash/fp/chunk.js deleted file mode 100644 index 871ab08..0000000 --- a/node_modules/lodash/fp/chunk.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('chunk', require('../chunk')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/clamp.js b/node_modules/lodash/fp/clamp.js deleted file mode 100644 index 3b06c01..0000000 --- a/node_modules/lodash/fp/clamp.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('clamp', require('../clamp')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/clone.js b/node_modules/lodash/fp/clone.js deleted file mode 100644 index cadb59c..0000000 --- a/node_modules/lodash/fp/clone.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('clone', require('../clone'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/cloneDeep.js b/node_modules/lodash/fp/cloneDeep.js deleted file mode 100644 index a6107aa..0000000 --- a/node_modules/lodash/fp/cloneDeep.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('cloneDeep', require('../cloneDeep'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/cloneDeepWith.js b/node_modules/lodash/fp/cloneDeepWith.js deleted file mode 100644 index 6f01e44..0000000 --- a/node_modules/lodash/fp/cloneDeepWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('cloneDeepWith', require('../cloneDeepWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/cloneWith.js b/node_modules/lodash/fp/cloneWith.js deleted file mode 100644 index aa88578..0000000 --- a/node_modules/lodash/fp/cloneWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('cloneWith', require('../cloneWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/collection.js b/node_modules/lodash/fp/collection.js deleted file mode 100644 index fc8b328..0000000 --- a/node_modules/lodash/fp/collection.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../collection')); diff --git a/node_modules/lodash/fp/commit.js b/node_modules/lodash/fp/commit.js deleted file mode 100644 index 130a894..0000000 --- a/node_modules/lodash/fp/commit.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('commit', require('../commit'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/compact.js b/node_modules/lodash/fp/compact.js deleted file mode 100644 index ce8f7a1..0000000 --- a/node_modules/lodash/fp/compact.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('compact', require('../compact'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/complement.js b/node_modules/lodash/fp/complement.js deleted file mode 100644 index 93eb462..0000000 --- a/node_modules/lodash/fp/complement.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./negate'); diff --git a/node_modules/lodash/fp/compose.js b/node_modules/lodash/fp/compose.js deleted file mode 100644 index 1954e94..0000000 --- a/node_modules/lodash/fp/compose.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./flowRight'); diff --git a/node_modules/lodash/fp/concat.js b/node_modules/lodash/fp/concat.js deleted file mode 100644 index e59346a..0000000 --- a/node_modules/lodash/fp/concat.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('concat', require('../concat')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/cond.js b/node_modules/lodash/fp/cond.js deleted file mode 100644 index 6a0120e..0000000 --- a/node_modules/lodash/fp/cond.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('cond', require('../cond'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/conforms.js b/node_modules/lodash/fp/conforms.js deleted file mode 100644 index 3247f64..0000000 --- a/node_modules/lodash/fp/conforms.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./conformsTo'); diff --git a/node_modules/lodash/fp/conformsTo.js b/node_modules/lodash/fp/conformsTo.js deleted file mode 100644 index aa7f41e..0000000 --- a/node_modules/lodash/fp/conformsTo.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('conformsTo', require('../conformsTo')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/constant.js b/node_modules/lodash/fp/constant.js deleted file mode 100644 index 9e406fc..0000000 --- a/node_modules/lodash/fp/constant.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('constant', require('../constant'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/contains.js b/node_modules/lodash/fp/contains.js deleted file mode 100644 index 594722a..0000000 --- a/node_modules/lodash/fp/contains.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./includes'); diff --git a/node_modules/lodash/fp/convert.js b/node_modules/lodash/fp/convert.js deleted file mode 100644 index 4795dc4..0000000 --- a/node_modules/lodash/fp/convert.js +++ /dev/null @@ -1,18 +0,0 @@ -var baseConvert = require('./_baseConvert'), - util = require('./_util'); - -/** - * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last - * version with conversion `options` applied. If `name` is an object its methods - * will be converted. - * - * @param {string} name The name of the function to wrap. - * @param {Function} [func] The function to wrap. - * @param {Object} [options] The options object. See `baseConvert` for more details. - * @returns {Function|Object} Returns the converted function or object. - */ -function convert(name, func, options) { - return baseConvert(util, name, func, options); -} - -module.exports = convert; diff --git a/node_modules/lodash/fp/countBy.js b/node_modules/lodash/fp/countBy.js deleted file mode 100644 index dfa4643..0000000 --- a/node_modules/lodash/fp/countBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('countBy', require('../countBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/create.js b/node_modules/lodash/fp/create.js deleted file mode 100644 index 752025f..0000000 --- a/node_modules/lodash/fp/create.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('create', require('../create')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/curry.js b/node_modules/lodash/fp/curry.js deleted file mode 100644 index b0b4168..0000000 --- a/node_modules/lodash/fp/curry.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('curry', require('../curry')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/curryN.js b/node_modules/lodash/fp/curryN.js deleted file mode 100644 index 2ae7d00..0000000 --- a/node_modules/lodash/fp/curryN.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('curryN', require('../curry')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/curryRight.js b/node_modules/lodash/fp/curryRight.js deleted file mode 100644 index cb619eb..0000000 --- a/node_modules/lodash/fp/curryRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('curryRight', require('../curryRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/curryRightN.js b/node_modules/lodash/fp/curryRightN.js deleted file mode 100644 index 2495afc..0000000 --- a/node_modules/lodash/fp/curryRightN.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('curryRightN', require('../curryRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/date.js b/node_modules/lodash/fp/date.js deleted file mode 100644 index 82cb952..0000000 --- a/node_modules/lodash/fp/date.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../date')); diff --git a/node_modules/lodash/fp/debounce.js b/node_modules/lodash/fp/debounce.js deleted file mode 100644 index 2612229..0000000 --- a/node_modules/lodash/fp/debounce.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('debounce', require('../debounce')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/deburr.js b/node_modules/lodash/fp/deburr.js deleted file mode 100644 index 96463ab..0000000 --- a/node_modules/lodash/fp/deburr.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('deburr', require('../deburr'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/defaultTo.js b/node_modules/lodash/fp/defaultTo.js deleted file mode 100644 index d6b52a4..0000000 --- a/node_modules/lodash/fp/defaultTo.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('defaultTo', require('../defaultTo')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/defaults.js b/node_modules/lodash/fp/defaults.js deleted file mode 100644 index e1a8e6e..0000000 --- a/node_modules/lodash/fp/defaults.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('defaults', require('../defaults')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/defaultsAll.js b/node_modules/lodash/fp/defaultsAll.js deleted file mode 100644 index 238fcc3..0000000 --- a/node_modules/lodash/fp/defaultsAll.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('defaultsAll', require('../defaults')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/defaultsDeep.js b/node_modules/lodash/fp/defaultsDeep.js deleted file mode 100644 index 1f172ff..0000000 --- a/node_modules/lodash/fp/defaultsDeep.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('defaultsDeep', require('../defaultsDeep')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/defaultsDeepAll.js b/node_modules/lodash/fp/defaultsDeepAll.js deleted file mode 100644 index 6835f2f..0000000 --- a/node_modules/lodash/fp/defaultsDeepAll.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('defaultsDeepAll', require('../defaultsDeep')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/defer.js b/node_modules/lodash/fp/defer.js deleted file mode 100644 index ec7990f..0000000 --- a/node_modules/lodash/fp/defer.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('defer', require('../defer'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/delay.js b/node_modules/lodash/fp/delay.js deleted file mode 100644 index 556dbd5..0000000 --- a/node_modules/lodash/fp/delay.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('delay', require('../delay')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/difference.js b/node_modules/lodash/fp/difference.js deleted file mode 100644 index 2d03765..0000000 --- a/node_modules/lodash/fp/difference.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('difference', require('../difference')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/differenceBy.js b/node_modules/lodash/fp/differenceBy.js deleted file mode 100644 index 2f91491..0000000 --- a/node_modules/lodash/fp/differenceBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('differenceBy', require('../differenceBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/differenceWith.js b/node_modules/lodash/fp/differenceWith.js deleted file mode 100644 index bcf5ad2..0000000 --- a/node_modules/lodash/fp/differenceWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('differenceWith', require('../differenceWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/dissoc.js b/node_modules/lodash/fp/dissoc.js deleted file mode 100644 index 7ec7be1..0000000 --- a/node_modules/lodash/fp/dissoc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./unset'); diff --git a/node_modules/lodash/fp/dissocPath.js b/node_modules/lodash/fp/dissocPath.js deleted file mode 100644 index 7ec7be1..0000000 --- a/node_modules/lodash/fp/dissocPath.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./unset'); diff --git a/node_modules/lodash/fp/divide.js b/node_modules/lodash/fp/divide.js deleted file mode 100644 index 82048c5..0000000 --- a/node_modules/lodash/fp/divide.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('divide', require('../divide')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/drop.js b/node_modules/lodash/fp/drop.js deleted file mode 100644 index 2fa9b4f..0000000 --- a/node_modules/lodash/fp/drop.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('drop', require('../drop')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/dropLast.js b/node_modules/lodash/fp/dropLast.js deleted file mode 100644 index 174e525..0000000 --- a/node_modules/lodash/fp/dropLast.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dropRight'); diff --git a/node_modules/lodash/fp/dropLastWhile.js b/node_modules/lodash/fp/dropLastWhile.js deleted file mode 100644 index be2a9d2..0000000 --- a/node_modules/lodash/fp/dropLastWhile.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dropRightWhile'); diff --git a/node_modules/lodash/fp/dropRight.js b/node_modules/lodash/fp/dropRight.js deleted file mode 100644 index e98881f..0000000 --- a/node_modules/lodash/fp/dropRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('dropRight', require('../dropRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/dropRightWhile.js b/node_modules/lodash/fp/dropRightWhile.js deleted file mode 100644 index cacaa70..0000000 --- a/node_modules/lodash/fp/dropRightWhile.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('dropRightWhile', require('../dropRightWhile')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/dropWhile.js b/node_modules/lodash/fp/dropWhile.js deleted file mode 100644 index 285f864..0000000 --- a/node_modules/lodash/fp/dropWhile.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('dropWhile', require('../dropWhile')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/each.js b/node_modules/lodash/fp/each.js deleted file mode 100644 index 8800f42..0000000 --- a/node_modules/lodash/fp/each.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./forEach'); diff --git a/node_modules/lodash/fp/eachRight.js b/node_modules/lodash/fp/eachRight.js deleted file mode 100644 index 3252b2a..0000000 --- a/node_modules/lodash/fp/eachRight.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./forEachRight'); diff --git a/node_modules/lodash/fp/endsWith.js b/node_modules/lodash/fp/endsWith.js deleted file mode 100644 index 17dc2a4..0000000 --- a/node_modules/lodash/fp/endsWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('endsWith', require('../endsWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/entries.js b/node_modules/lodash/fp/entries.js deleted file mode 100644 index 7a88df2..0000000 --- a/node_modules/lodash/fp/entries.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./toPairs'); diff --git a/node_modules/lodash/fp/entriesIn.js b/node_modules/lodash/fp/entriesIn.js deleted file mode 100644 index f6c6331..0000000 --- a/node_modules/lodash/fp/entriesIn.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./toPairsIn'); diff --git a/node_modules/lodash/fp/eq.js b/node_modules/lodash/fp/eq.js deleted file mode 100644 index 9a3d21b..0000000 --- a/node_modules/lodash/fp/eq.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('eq', require('../eq')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/equals.js b/node_modules/lodash/fp/equals.js deleted file mode 100644 index e6a5ce0..0000000 --- a/node_modules/lodash/fp/equals.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./isEqual'); diff --git a/node_modules/lodash/fp/escape.js b/node_modules/lodash/fp/escape.js deleted file mode 100644 index 52c1fbb..0000000 --- a/node_modules/lodash/fp/escape.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('escape', require('../escape'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/escapeRegExp.js b/node_modules/lodash/fp/escapeRegExp.js deleted file mode 100644 index 369b2ef..0000000 --- a/node_modules/lodash/fp/escapeRegExp.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('escapeRegExp', require('../escapeRegExp'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/every.js b/node_modules/lodash/fp/every.js deleted file mode 100644 index 95c2776..0000000 --- a/node_modules/lodash/fp/every.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('every', require('../every')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/extend.js b/node_modules/lodash/fp/extend.js deleted file mode 100644 index e00166c..0000000 --- a/node_modules/lodash/fp/extend.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./assignIn'); diff --git a/node_modules/lodash/fp/extendAll.js b/node_modules/lodash/fp/extendAll.js deleted file mode 100644 index cc55b64..0000000 --- a/node_modules/lodash/fp/extendAll.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./assignInAll'); diff --git a/node_modules/lodash/fp/extendAllWith.js b/node_modules/lodash/fp/extendAllWith.js deleted file mode 100644 index 6679d20..0000000 --- a/node_modules/lodash/fp/extendAllWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./assignInAllWith'); diff --git a/node_modules/lodash/fp/extendWith.js b/node_modules/lodash/fp/extendWith.js deleted file mode 100644 index dbdcb3b..0000000 --- a/node_modules/lodash/fp/extendWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./assignInWith'); diff --git a/node_modules/lodash/fp/fill.js b/node_modules/lodash/fp/fill.js deleted file mode 100644 index b2d47e8..0000000 --- a/node_modules/lodash/fp/fill.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('fill', require('../fill')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/filter.js b/node_modules/lodash/fp/filter.js deleted file mode 100644 index 796d501..0000000 --- a/node_modules/lodash/fp/filter.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('filter', require('../filter')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/find.js b/node_modules/lodash/fp/find.js deleted file mode 100644 index f805d33..0000000 --- a/node_modules/lodash/fp/find.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('find', require('../find')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/findFrom.js b/node_modules/lodash/fp/findFrom.js deleted file mode 100644 index da8275e..0000000 --- a/node_modules/lodash/fp/findFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findFrom', require('../find')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/findIndex.js b/node_modules/lodash/fp/findIndex.js deleted file mode 100644 index 8c15fd1..0000000 --- a/node_modules/lodash/fp/findIndex.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findIndex', require('../findIndex')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/findIndexFrom.js b/node_modules/lodash/fp/findIndexFrom.js deleted file mode 100644 index 32e98cb..0000000 --- a/node_modules/lodash/fp/findIndexFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findIndexFrom', require('../findIndex')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/findKey.js b/node_modules/lodash/fp/findKey.js deleted file mode 100644 index 475bcfa..0000000 --- a/node_modules/lodash/fp/findKey.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findKey', require('../findKey')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/findLast.js b/node_modules/lodash/fp/findLast.js deleted file mode 100644 index 093fe94..0000000 --- a/node_modules/lodash/fp/findLast.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findLast', require('../findLast')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/findLastFrom.js b/node_modules/lodash/fp/findLastFrom.js deleted file mode 100644 index 76c38fb..0000000 --- a/node_modules/lodash/fp/findLastFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findLastFrom', require('../findLast')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/findLastIndex.js b/node_modules/lodash/fp/findLastIndex.js deleted file mode 100644 index 36986df..0000000 --- a/node_modules/lodash/fp/findLastIndex.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findLastIndex', require('../findLastIndex')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/findLastIndexFrom.js b/node_modules/lodash/fp/findLastIndexFrom.js deleted file mode 100644 index 34c8176..0000000 --- a/node_modules/lodash/fp/findLastIndexFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findLastIndexFrom', require('../findLastIndex')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/findLastKey.js b/node_modules/lodash/fp/findLastKey.js deleted file mode 100644 index 5f81b60..0000000 --- a/node_modules/lodash/fp/findLastKey.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findLastKey', require('../findLastKey')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/first.js b/node_modules/lodash/fp/first.js deleted file mode 100644 index 53f4ad1..0000000 --- a/node_modules/lodash/fp/first.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./head'); diff --git a/node_modules/lodash/fp/flatMap.js b/node_modules/lodash/fp/flatMap.js deleted file mode 100644 index d01dc4d..0000000 --- a/node_modules/lodash/fp/flatMap.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flatMap', require('../flatMap')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/flatMapDeep.js b/node_modules/lodash/fp/flatMapDeep.js deleted file mode 100644 index 569c42e..0000000 --- a/node_modules/lodash/fp/flatMapDeep.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flatMapDeep', require('../flatMapDeep')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/flatMapDepth.js b/node_modules/lodash/fp/flatMapDepth.js deleted file mode 100644 index 6eb68fd..0000000 --- a/node_modules/lodash/fp/flatMapDepth.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flatMapDepth', require('../flatMapDepth')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/flatten.js b/node_modules/lodash/fp/flatten.js deleted file mode 100644 index 30425d8..0000000 --- a/node_modules/lodash/fp/flatten.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flatten', require('../flatten'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/flattenDeep.js b/node_modules/lodash/fp/flattenDeep.js deleted file mode 100644 index aed5db2..0000000 --- a/node_modules/lodash/fp/flattenDeep.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flattenDeep', require('../flattenDeep'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/flattenDepth.js b/node_modules/lodash/fp/flattenDepth.js deleted file mode 100644 index ad65e37..0000000 --- a/node_modules/lodash/fp/flattenDepth.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flattenDepth', require('../flattenDepth')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/flip.js b/node_modules/lodash/fp/flip.js deleted file mode 100644 index 0547e7b..0000000 --- a/node_modules/lodash/fp/flip.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flip', require('../flip'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/floor.js b/node_modules/lodash/fp/floor.js deleted file mode 100644 index a6cf335..0000000 --- a/node_modules/lodash/fp/floor.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('floor', require('../floor')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/flow.js b/node_modules/lodash/fp/flow.js deleted file mode 100644 index cd83677..0000000 --- a/node_modules/lodash/fp/flow.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flow', require('../flow')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/flowRight.js b/node_modules/lodash/fp/flowRight.js deleted file mode 100644 index 972a5b9..0000000 --- a/node_modules/lodash/fp/flowRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flowRight', require('../flowRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/forEach.js b/node_modules/lodash/fp/forEach.js deleted file mode 100644 index 2f49452..0000000 --- a/node_modules/lodash/fp/forEach.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('forEach', require('../forEach')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/forEachRight.js b/node_modules/lodash/fp/forEachRight.js deleted file mode 100644 index 3ff9733..0000000 --- a/node_modules/lodash/fp/forEachRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('forEachRight', require('../forEachRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/forIn.js b/node_modules/lodash/fp/forIn.js deleted file mode 100644 index 9341749..0000000 --- a/node_modules/lodash/fp/forIn.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('forIn', require('../forIn')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/forInRight.js b/node_modules/lodash/fp/forInRight.js deleted file mode 100644 index cecf8bb..0000000 --- a/node_modules/lodash/fp/forInRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('forInRight', require('../forInRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/forOwn.js b/node_modules/lodash/fp/forOwn.js deleted file mode 100644 index 246449e..0000000 --- a/node_modules/lodash/fp/forOwn.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('forOwn', require('../forOwn')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/forOwnRight.js b/node_modules/lodash/fp/forOwnRight.js deleted file mode 100644 index c5e826e..0000000 --- a/node_modules/lodash/fp/forOwnRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('forOwnRight', require('../forOwnRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/fromPairs.js b/node_modules/lodash/fp/fromPairs.js deleted file mode 100644 index f8cc596..0000000 --- a/node_modules/lodash/fp/fromPairs.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('fromPairs', require('../fromPairs')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/function.js b/node_modules/lodash/fp/function.js deleted file mode 100644 index dfe69b1..0000000 --- a/node_modules/lodash/fp/function.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../function')); diff --git a/node_modules/lodash/fp/functions.js b/node_modules/lodash/fp/functions.js deleted file mode 100644 index 09d1bb1..0000000 --- a/node_modules/lodash/fp/functions.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('functions', require('../functions'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/functionsIn.js b/node_modules/lodash/fp/functionsIn.js deleted file mode 100644 index 2cfeb83..0000000 --- a/node_modules/lodash/fp/functionsIn.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('functionsIn', require('../functionsIn'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/get.js b/node_modules/lodash/fp/get.js deleted file mode 100644 index 6d3a328..0000000 --- a/node_modules/lodash/fp/get.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('get', require('../get')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/getOr.js b/node_modules/lodash/fp/getOr.js deleted file mode 100644 index 7dbf771..0000000 --- a/node_modules/lodash/fp/getOr.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('getOr', require('../get')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/groupBy.js b/node_modules/lodash/fp/groupBy.js deleted file mode 100644 index fc0bc78..0000000 --- a/node_modules/lodash/fp/groupBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('groupBy', require('../groupBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/gt.js b/node_modules/lodash/fp/gt.js deleted file mode 100644 index 9e57c80..0000000 --- a/node_modules/lodash/fp/gt.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('gt', require('../gt')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/gte.js b/node_modules/lodash/fp/gte.js deleted file mode 100644 index 4584786..0000000 --- a/node_modules/lodash/fp/gte.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('gte', require('../gte')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/has.js b/node_modules/lodash/fp/has.js deleted file mode 100644 index b901298..0000000 --- a/node_modules/lodash/fp/has.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('has', require('../has')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/hasIn.js b/node_modules/lodash/fp/hasIn.js deleted file mode 100644 index b3c3d1a..0000000 --- a/node_modules/lodash/fp/hasIn.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('hasIn', require('../hasIn')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/head.js b/node_modules/lodash/fp/head.js deleted file mode 100644 index 2694f0a..0000000 --- a/node_modules/lodash/fp/head.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('head', require('../head'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/identical.js b/node_modules/lodash/fp/identical.js deleted file mode 100644 index 85563f4..0000000 --- a/node_modules/lodash/fp/identical.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./eq'); diff --git a/node_modules/lodash/fp/identity.js b/node_modules/lodash/fp/identity.js deleted file mode 100644 index 096415a..0000000 --- a/node_modules/lodash/fp/identity.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('identity', require('../identity'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/inRange.js b/node_modules/lodash/fp/inRange.js deleted file mode 100644 index 202d940..0000000 --- a/node_modules/lodash/fp/inRange.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('inRange', require('../inRange')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/includes.js b/node_modules/lodash/fp/includes.js deleted file mode 100644 index 1146780..0000000 --- a/node_modules/lodash/fp/includes.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('includes', require('../includes')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/includesFrom.js b/node_modules/lodash/fp/includesFrom.js deleted file mode 100644 index 683afdb..0000000 --- a/node_modules/lodash/fp/includesFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('includesFrom', require('../includes')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/indexBy.js b/node_modules/lodash/fp/indexBy.js deleted file mode 100644 index 7e64bc0..0000000 --- a/node_modules/lodash/fp/indexBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./keyBy'); diff --git a/node_modules/lodash/fp/indexOf.js b/node_modules/lodash/fp/indexOf.js deleted file mode 100644 index 524658e..0000000 --- a/node_modules/lodash/fp/indexOf.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('indexOf', require('../indexOf')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/indexOfFrom.js b/node_modules/lodash/fp/indexOfFrom.js deleted file mode 100644 index d99c822..0000000 --- a/node_modules/lodash/fp/indexOfFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('indexOfFrom', require('../indexOf')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/init.js b/node_modules/lodash/fp/init.js deleted file mode 100644 index 2f88d8b..0000000 --- a/node_modules/lodash/fp/init.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./initial'); diff --git a/node_modules/lodash/fp/initial.js b/node_modules/lodash/fp/initial.js deleted file mode 100644 index b732ba0..0000000 --- a/node_modules/lodash/fp/initial.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('initial', require('../initial'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/intersection.js b/node_modules/lodash/fp/intersection.js deleted file mode 100644 index 52936d5..0000000 --- a/node_modules/lodash/fp/intersection.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('intersection', require('../intersection')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/intersectionBy.js b/node_modules/lodash/fp/intersectionBy.js deleted file mode 100644 index 72629f2..0000000 --- a/node_modules/lodash/fp/intersectionBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('intersectionBy', require('../intersectionBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/intersectionWith.js b/node_modules/lodash/fp/intersectionWith.js deleted file mode 100644 index e064f40..0000000 --- a/node_modules/lodash/fp/intersectionWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('intersectionWith', require('../intersectionWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/invert.js b/node_modules/lodash/fp/invert.js deleted file mode 100644 index 2d5d1f0..0000000 --- a/node_modules/lodash/fp/invert.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('invert', require('../invert')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/invertBy.js b/node_modules/lodash/fp/invertBy.js deleted file mode 100644 index 63ca97e..0000000 --- a/node_modules/lodash/fp/invertBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('invertBy', require('../invertBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/invertObj.js b/node_modules/lodash/fp/invertObj.js deleted file mode 100644 index f1d842e..0000000 --- a/node_modules/lodash/fp/invertObj.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./invert'); diff --git a/node_modules/lodash/fp/invoke.js b/node_modules/lodash/fp/invoke.js deleted file mode 100644 index fcf17f0..0000000 --- a/node_modules/lodash/fp/invoke.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('invoke', require('../invoke')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/invokeArgs.js b/node_modules/lodash/fp/invokeArgs.js deleted file mode 100644 index d3f2953..0000000 --- a/node_modules/lodash/fp/invokeArgs.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('invokeArgs', require('../invoke')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/invokeArgsMap.js b/node_modules/lodash/fp/invokeArgsMap.js deleted file mode 100644 index eaa9f84..0000000 --- a/node_modules/lodash/fp/invokeArgsMap.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('invokeArgsMap', require('../invokeMap')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/invokeMap.js b/node_modules/lodash/fp/invokeMap.js deleted file mode 100644 index 6515fd7..0000000 --- a/node_modules/lodash/fp/invokeMap.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('invokeMap', require('../invokeMap')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isArguments.js b/node_modules/lodash/fp/isArguments.js deleted file mode 100644 index 1d93c9e..0000000 --- a/node_modules/lodash/fp/isArguments.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isArguments', require('../isArguments'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isArray.js b/node_modules/lodash/fp/isArray.js deleted file mode 100644 index ba7ade8..0000000 --- a/node_modules/lodash/fp/isArray.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isArray', require('../isArray'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isArrayBuffer.js b/node_modules/lodash/fp/isArrayBuffer.js deleted file mode 100644 index 5088513..0000000 --- a/node_modules/lodash/fp/isArrayBuffer.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isArrayBuffer', require('../isArrayBuffer'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isArrayLike.js b/node_modules/lodash/fp/isArrayLike.js deleted file mode 100644 index 8f1856b..0000000 --- a/node_modules/lodash/fp/isArrayLike.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isArrayLike', require('../isArrayLike'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isArrayLikeObject.js b/node_modules/lodash/fp/isArrayLikeObject.js deleted file mode 100644 index 2108498..0000000 --- a/node_modules/lodash/fp/isArrayLikeObject.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isArrayLikeObject', require('../isArrayLikeObject'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isBoolean.js b/node_modules/lodash/fp/isBoolean.js deleted file mode 100644 index 9339f75..0000000 --- a/node_modules/lodash/fp/isBoolean.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isBoolean', require('../isBoolean'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isBuffer.js b/node_modules/lodash/fp/isBuffer.js deleted file mode 100644 index e60b123..0000000 --- a/node_modules/lodash/fp/isBuffer.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isBuffer', require('../isBuffer'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isDate.js b/node_modules/lodash/fp/isDate.js deleted file mode 100644 index dc41d08..0000000 --- a/node_modules/lodash/fp/isDate.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isDate', require('../isDate'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isElement.js b/node_modules/lodash/fp/isElement.js deleted file mode 100644 index 18ee039..0000000 --- a/node_modules/lodash/fp/isElement.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isElement', require('../isElement'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isEmpty.js b/node_modules/lodash/fp/isEmpty.js deleted file mode 100644 index 0f4ae84..0000000 --- a/node_modules/lodash/fp/isEmpty.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isEmpty', require('../isEmpty'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isEqual.js b/node_modules/lodash/fp/isEqual.js deleted file mode 100644 index 4138386..0000000 --- a/node_modules/lodash/fp/isEqual.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isEqual', require('../isEqual')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isEqualWith.js b/node_modules/lodash/fp/isEqualWith.js deleted file mode 100644 index 029ff5c..0000000 --- a/node_modules/lodash/fp/isEqualWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isEqualWith', require('../isEqualWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isError.js b/node_modules/lodash/fp/isError.js deleted file mode 100644 index 3dfd81c..0000000 --- a/node_modules/lodash/fp/isError.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isError', require('../isError'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isFinite.js b/node_modules/lodash/fp/isFinite.js deleted file mode 100644 index 0b647b8..0000000 --- a/node_modules/lodash/fp/isFinite.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isFinite', require('../isFinite'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isFunction.js b/node_modules/lodash/fp/isFunction.js deleted file mode 100644 index ff8e5c4..0000000 --- a/node_modules/lodash/fp/isFunction.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isFunction', require('../isFunction'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isInteger.js b/node_modules/lodash/fp/isInteger.js deleted file mode 100644 index 67af4ff..0000000 --- a/node_modules/lodash/fp/isInteger.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isInteger', require('../isInteger'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isLength.js b/node_modules/lodash/fp/isLength.js deleted file mode 100644 index fc101c5..0000000 --- a/node_modules/lodash/fp/isLength.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isLength', require('../isLength'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isMap.js b/node_modules/lodash/fp/isMap.js deleted file mode 100644 index a209aa6..0000000 --- a/node_modules/lodash/fp/isMap.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isMap', require('../isMap'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isMatch.js b/node_modules/lodash/fp/isMatch.js deleted file mode 100644 index 6264ca1..0000000 --- a/node_modules/lodash/fp/isMatch.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isMatch', require('../isMatch')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isMatchWith.js b/node_modules/lodash/fp/isMatchWith.js deleted file mode 100644 index d95f319..0000000 --- a/node_modules/lodash/fp/isMatchWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isMatchWith', require('../isMatchWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isNaN.js b/node_modules/lodash/fp/isNaN.js deleted file mode 100644 index 66a978f..0000000 --- a/node_modules/lodash/fp/isNaN.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isNaN', require('../isNaN'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isNative.js b/node_modules/lodash/fp/isNative.js deleted file mode 100644 index 3d775ba..0000000 --- a/node_modules/lodash/fp/isNative.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isNative', require('../isNative'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isNil.js b/node_modules/lodash/fp/isNil.js deleted file mode 100644 index 5952c02..0000000 --- a/node_modules/lodash/fp/isNil.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isNil', require('../isNil'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isNull.js b/node_modules/lodash/fp/isNull.js deleted file mode 100644 index f201a35..0000000 --- a/node_modules/lodash/fp/isNull.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isNull', require('../isNull'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isNumber.js b/node_modules/lodash/fp/isNumber.js deleted file mode 100644 index a2b5fa0..0000000 --- a/node_modules/lodash/fp/isNumber.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isNumber', require('../isNumber'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isObject.js b/node_modules/lodash/fp/isObject.js deleted file mode 100644 index 231ace0..0000000 --- a/node_modules/lodash/fp/isObject.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isObject', require('../isObject'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isObjectLike.js b/node_modules/lodash/fp/isObjectLike.js deleted file mode 100644 index f16082e..0000000 --- a/node_modules/lodash/fp/isObjectLike.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isObjectLike', require('../isObjectLike'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isPlainObject.js b/node_modules/lodash/fp/isPlainObject.js deleted file mode 100644 index b5bea90..0000000 --- a/node_modules/lodash/fp/isPlainObject.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isPlainObject', require('../isPlainObject'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isRegExp.js b/node_modules/lodash/fp/isRegExp.js deleted file mode 100644 index 12a1a3d..0000000 --- a/node_modules/lodash/fp/isRegExp.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isRegExp', require('../isRegExp'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isSafeInteger.js b/node_modules/lodash/fp/isSafeInteger.js deleted file mode 100644 index 7230f55..0000000 --- a/node_modules/lodash/fp/isSafeInteger.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isSafeInteger', require('../isSafeInteger'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isSet.js b/node_modules/lodash/fp/isSet.js deleted file mode 100644 index 35c01f6..0000000 --- a/node_modules/lodash/fp/isSet.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isSet', require('../isSet'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isString.js b/node_modules/lodash/fp/isString.js deleted file mode 100644 index 1fd0679..0000000 --- a/node_modules/lodash/fp/isString.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isString', require('../isString'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isSymbol.js b/node_modules/lodash/fp/isSymbol.js deleted file mode 100644 index 3867695..0000000 --- a/node_modules/lodash/fp/isSymbol.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isSymbol', require('../isSymbol'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isTypedArray.js b/node_modules/lodash/fp/isTypedArray.js deleted file mode 100644 index 8567953..0000000 --- a/node_modules/lodash/fp/isTypedArray.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isTypedArray', require('../isTypedArray'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isUndefined.js b/node_modules/lodash/fp/isUndefined.js deleted file mode 100644 index ddbca31..0000000 --- a/node_modules/lodash/fp/isUndefined.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isUndefined', require('../isUndefined'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isWeakMap.js b/node_modules/lodash/fp/isWeakMap.js deleted file mode 100644 index ef60c61..0000000 --- a/node_modules/lodash/fp/isWeakMap.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isWeakMap', require('../isWeakMap'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/isWeakSet.js b/node_modules/lodash/fp/isWeakSet.js deleted file mode 100644 index c99bfaa..0000000 --- a/node_modules/lodash/fp/isWeakSet.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isWeakSet', require('../isWeakSet'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/iteratee.js b/node_modules/lodash/fp/iteratee.js deleted file mode 100644 index 9f0f717..0000000 --- a/node_modules/lodash/fp/iteratee.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('iteratee', require('../iteratee')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/join.js b/node_modules/lodash/fp/join.js deleted file mode 100644 index a220e00..0000000 --- a/node_modules/lodash/fp/join.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('join', require('../join')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/juxt.js b/node_modules/lodash/fp/juxt.js deleted file mode 100644 index f71e04e..0000000 --- a/node_modules/lodash/fp/juxt.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./over'); diff --git a/node_modules/lodash/fp/kebabCase.js b/node_modules/lodash/fp/kebabCase.js deleted file mode 100644 index 60737f1..0000000 --- a/node_modules/lodash/fp/kebabCase.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('kebabCase', require('../kebabCase'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/keyBy.js b/node_modules/lodash/fp/keyBy.js deleted file mode 100644 index 9a6a85d..0000000 --- a/node_modules/lodash/fp/keyBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('keyBy', require('../keyBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/keys.js b/node_modules/lodash/fp/keys.js deleted file mode 100644 index e12bb07..0000000 --- a/node_modules/lodash/fp/keys.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('keys', require('../keys'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/keysIn.js b/node_modules/lodash/fp/keysIn.js deleted file mode 100644 index f3eb36a..0000000 --- a/node_modules/lodash/fp/keysIn.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('keysIn', require('../keysIn'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/lang.js b/node_modules/lodash/fp/lang.js deleted file mode 100644 index 08cc9c1..0000000 --- a/node_modules/lodash/fp/lang.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../lang')); diff --git a/node_modules/lodash/fp/last.js b/node_modules/lodash/fp/last.js deleted file mode 100644 index 0f71699..0000000 --- a/node_modules/lodash/fp/last.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('last', require('../last'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/lastIndexOf.js b/node_modules/lodash/fp/lastIndexOf.js deleted file mode 100644 index ddf39c3..0000000 --- a/node_modules/lodash/fp/lastIndexOf.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('lastIndexOf', require('../lastIndexOf')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/lastIndexOfFrom.js b/node_modules/lodash/fp/lastIndexOfFrom.js deleted file mode 100644 index 1ff6a0b..0000000 --- a/node_modules/lodash/fp/lastIndexOfFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('lastIndexOfFrom', require('../lastIndexOf')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/lowerCase.js b/node_modules/lodash/fp/lowerCase.js deleted file mode 100644 index ea64bc1..0000000 --- a/node_modules/lodash/fp/lowerCase.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('lowerCase', require('../lowerCase'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/lowerFirst.js b/node_modules/lodash/fp/lowerFirst.js deleted file mode 100644 index 539720a..0000000 --- a/node_modules/lodash/fp/lowerFirst.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('lowerFirst', require('../lowerFirst'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/lt.js b/node_modules/lodash/fp/lt.js deleted file mode 100644 index a31d21e..0000000 --- a/node_modules/lodash/fp/lt.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('lt', require('../lt')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/lte.js b/node_modules/lodash/fp/lte.js deleted file mode 100644 index d795d10..0000000 --- a/node_modules/lodash/fp/lte.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('lte', require('../lte')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/map.js b/node_modules/lodash/fp/map.js deleted file mode 100644 index cf98794..0000000 --- a/node_modules/lodash/fp/map.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('map', require('../map')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/mapKeys.js b/node_modules/lodash/fp/mapKeys.js deleted file mode 100644 index 1684587..0000000 --- a/node_modules/lodash/fp/mapKeys.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('mapKeys', require('../mapKeys')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/mapValues.js b/node_modules/lodash/fp/mapValues.js deleted file mode 100644 index 4004972..0000000 --- a/node_modules/lodash/fp/mapValues.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('mapValues', require('../mapValues')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/matches.js b/node_modules/lodash/fp/matches.js deleted file mode 100644 index 29d1e1e..0000000 --- a/node_modules/lodash/fp/matches.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./isMatch'); diff --git a/node_modules/lodash/fp/matchesProperty.js b/node_modules/lodash/fp/matchesProperty.js deleted file mode 100644 index 4575bd2..0000000 --- a/node_modules/lodash/fp/matchesProperty.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('matchesProperty', require('../matchesProperty')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/math.js b/node_modules/lodash/fp/math.js deleted file mode 100644 index e8f50f7..0000000 --- a/node_modules/lodash/fp/math.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../math')); diff --git a/node_modules/lodash/fp/max.js b/node_modules/lodash/fp/max.js deleted file mode 100644 index a66acac..0000000 --- a/node_modules/lodash/fp/max.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('max', require('../max'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/maxBy.js b/node_modules/lodash/fp/maxBy.js deleted file mode 100644 index d083fd6..0000000 --- a/node_modules/lodash/fp/maxBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('maxBy', require('../maxBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/mean.js b/node_modules/lodash/fp/mean.js deleted file mode 100644 index 3117246..0000000 --- a/node_modules/lodash/fp/mean.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('mean', require('../mean'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/meanBy.js b/node_modules/lodash/fp/meanBy.js deleted file mode 100644 index 556f25e..0000000 --- a/node_modules/lodash/fp/meanBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('meanBy', require('../meanBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/memoize.js b/node_modules/lodash/fp/memoize.js deleted file mode 100644 index 638eec6..0000000 --- a/node_modules/lodash/fp/memoize.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('memoize', require('../memoize')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/merge.js b/node_modules/lodash/fp/merge.js deleted file mode 100644 index ac66add..0000000 --- a/node_modules/lodash/fp/merge.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('merge', require('../merge')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/mergeAll.js b/node_modules/lodash/fp/mergeAll.js deleted file mode 100644 index a3674d6..0000000 --- a/node_modules/lodash/fp/mergeAll.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('mergeAll', require('../merge')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/mergeAllWith.js b/node_modules/lodash/fp/mergeAllWith.js deleted file mode 100644 index 4bd4206..0000000 --- a/node_modules/lodash/fp/mergeAllWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('mergeAllWith', require('../mergeWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/mergeWith.js b/node_modules/lodash/fp/mergeWith.js deleted file mode 100644 index 00d44d5..0000000 --- a/node_modules/lodash/fp/mergeWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('mergeWith', require('../mergeWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/method.js b/node_modules/lodash/fp/method.js deleted file mode 100644 index f4060c6..0000000 --- a/node_modules/lodash/fp/method.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('method', require('../method')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/methodOf.js b/node_modules/lodash/fp/methodOf.js deleted file mode 100644 index 6139905..0000000 --- a/node_modules/lodash/fp/methodOf.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('methodOf', require('../methodOf')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/min.js b/node_modules/lodash/fp/min.js deleted file mode 100644 index d12c6b4..0000000 --- a/node_modules/lodash/fp/min.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('min', require('../min'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/minBy.js b/node_modules/lodash/fp/minBy.js deleted file mode 100644 index fdb9e24..0000000 --- a/node_modules/lodash/fp/minBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('minBy', require('../minBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/mixin.js b/node_modules/lodash/fp/mixin.js deleted file mode 100644 index 332e6fb..0000000 --- a/node_modules/lodash/fp/mixin.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('mixin', require('../mixin')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/multiply.js b/node_modules/lodash/fp/multiply.js deleted file mode 100644 index 4dcf0b0..0000000 --- a/node_modules/lodash/fp/multiply.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('multiply', require('../multiply')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/nAry.js b/node_modules/lodash/fp/nAry.js deleted file mode 100644 index f262a76..0000000 --- a/node_modules/lodash/fp/nAry.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./ary'); diff --git a/node_modules/lodash/fp/negate.js b/node_modules/lodash/fp/negate.js deleted file mode 100644 index 8b6dc7c..0000000 --- a/node_modules/lodash/fp/negate.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('negate', require('../negate'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/next.js b/node_modules/lodash/fp/next.js deleted file mode 100644 index 140155e..0000000 --- a/node_modules/lodash/fp/next.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('next', require('../next'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/noop.js b/node_modules/lodash/fp/noop.js deleted file mode 100644 index b9e32cc..0000000 --- a/node_modules/lodash/fp/noop.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('noop', require('../noop'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/now.js b/node_modules/lodash/fp/now.js deleted file mode 100644 index 6de2068..0000000 --- a/node_modules/lodash/fp/now.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('now', require('../now'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/nth.js b/node_modules/lodash/fp/nth.js deleted file mode 100644 index da4fda7..0000000 --- a/node_modules/lodash/fp/nth.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('nth', require('../nth')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/nthArg.js b/node_modules/lodash/fp/nthArg.js deleted file mode 100644 index fce3165..0000000 --- a/node_modules/lodash/fp/nthArg.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('nthArg', require('../nthArg')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/number.js b/node_modules/lodash/fp/number.js deleted file mode 100644 index 5c10b88..0000000 --- a/node_modules/lodash/fp/number.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../number')); diff --git a/node_modules/lodash/fp/object.js b/node_modules/lodash/fp/object.js deleted file mode 100644 index ae39a13..0000000 --- a/node_modules/lodash/fp/object.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../object')); diff --git a/node_modules/lodash/fp/omit.js b/node_modules/lodash/fp/omit.js deleted file mode 100644 index fd68529..0000000 --- a/node_modules/lodash/fp/omit.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('omit', require('../omit')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/omitAll.js b/node_modules/lodash/fp/omitAll.js deleted file mode 100644 index 144cf4b..0000000 --- a/node_modules/lodash/fp/omitAll.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./omit'); diff --git a/node_modules/lodash/fp/omitBy.js b/node_modules/lodash/fp/omitBy.js deleted file mode 100644 index 90df738..0000000 --- a/node_modules/lodash/fp/omitBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('omitBy', require('../omitBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/once.js b/node_modules/lodash/fp/once.js deleted file mode 100644 index f8f0a5c..0000000 --- a/node_modules/lodash/fp/once.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('once', require('../once'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/orderBy.js b/node_modules/lodash/fp/orderBy.js deleted file mode 100644 index 848e210..0000000 --- a/node_modules/lodash/fp/orderBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('orderBy', require('../orderBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/over.js b/node_modules/lodash/fp/over.js deleted file mode 100644 index 01eba7b..0000000 --- a/node_modules/lodash/fp/over.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('over', require('../over')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/overArgs.js b/node_modules/lodash/fp/overArgs.js deleted file mode 100644 index 738556f..0000000 --- a/node_modules/lodash/fp/overArgs.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('overArgs', require('../overArgs')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/overEvery.js b/node_modules/lodash/fp/overEvery.js deleted file mode 100644 index 9f5a032..0000000 --- a/node_modules/lodash/fp/overEvery.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('overEvery', require('../overEvery')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/overSome.js b/node_modules/lodash/fp/overSome.js deleted file mode 100644 index 15939d5..0000000 --- a/node_modules/lodash/fp/overSome.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('overSome', require('../overSome')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/pad.js b/node_modules/lodash/fp/pad.js deleted file mode 100644 index f1dea4a..0000000 --- a/node_modules/lodash/fp/pad.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('pad', require('../pad')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/padChars.js b/node_modules/lodash/fp/padChars.js deleted file mode 100644 index d6e0804..0000000 --- a/node_modules/lodash/fp/padChars.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('padChars', require('../pad')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/padCharsEnd.js b/node_modules/lodash/fp/padCharsEnd.js deleted file mode 100644 index d4ab79a..0000000 --- a/node_modules/lodash/fp/padCharsEnd.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('padCharsEnd', require('../padEnd')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/padCharsStart.js b/node_modules/lodash/fp/padCharsStart.js deleted file mode 100644 index a08a300..0000000 --- a/node_modules/lodash/fp/padCharsStart.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('padCharsStart', require('../padStart')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/padEnd.js b/node_modules/lodash/fp/padEnd.js deleted file mode 100644 index a8522ec..0000000 --- a/node_modules/lodash/fp/padEnd.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('padEnd', require('../padEnd')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/padStart.js b/node_modules/lodash/fp/padStart.js deleted file mode 100644 index f4ca79d..0000000 --- a/node_modules/lodash/fp/padStart.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('padStart', require('../padStart')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/parseInt.js b/node_modules/lodash/fp/parseInt.js deleted file mode 100644 index 27314cc..0000000 --- a/node_modules/lodash/fp/parseInt.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('parseInt', require('../parseInt')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/partial.js b/node_modules/lodash/fp/partial.js deleted file mode 100644 index 5d46015..0000000 --- a/node_modules/lodash/fp/partial.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('partial', require('../partial')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/partialRight.js b/node_modules/lodash/fp/partialRight.js deleted file mode 100644 index 7f05fed..0000000 --- a/node_modules/lodash/fp/partialRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('partialRight', require('../partialRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/partition.js b/node_modules/lodash/fp/partition.js deleted file mode 100644 index 2ebcacc..0000000 --- a/node_modules/lodash/fp/partition.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('partition', require('../partition')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/path.js b/node_modules/lodash/fp/path.js deleted file mode 100644 index b29cfb2..0000000 --- a/node_modules/lodash/fp/path.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./get'); diff --git a/node_modules/lodash/fp/pathEq.js b/node_modules/lodash/fp/pathEq.js deleted file mode 100644 index 36c027a..0000000 --- a/node_modules/lodash/fp/pathEq.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./matchesProperty'); diff --git a/node_modules/lodash/fp/pathOr.js b/node_modules/lodash/fp/pathOr.js deleted file mode 100644 index 4ab5820..0000000 --- a/node_modules/lodash/fp/pathOr.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./getOr'); diff --git a/node_modules/lodash/fp/paths.js b/node_modules/lodash/fp/paths.js deleted file mode 100644 index 1eb7950..0000000 --- a/node_modules/lodash/fp/paths.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./at'); diff --git a/node_modules/lodash/fp/pick.js b/node_modules/lodash/fp/pick.js deleted file mode 100644 index 197393d..0000000 --- a/node_modules/lodash/fp/pick.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('pick', require('../pick')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/pickAll.js b/node_modules/lodash/fp/pickAll.js deleted file mode 100644 index a8ecd46..0000000 --- a/node_modules/lodash/fp/pickAll.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./pick'); diff --git a/node_modules/lodash/fp/pickBy.js b/node_modules/lodash/fp/pickBy.js deleted file mode 100644 index d832d16..0000000 --- a/node_modules/lodash/fp/pickBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('pickBy', require('../pickBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/pipe.js b/node_modules/lodash/fp/pipe.js deleted file mode 100644 index b2e1e2c..0000000 --- a/node_modules/lodash/fp/pipe.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./flow'); diff --git a/node_modules/lodash/fp/placeholder.js b/node_modules/lodash/fp/placeholder.js deleted file mode 100644 index 1ce1739..0000000 --- a/node_modules/lodash/fp/placeholder.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * The default argument placeholder value for methods. - * - * @type {Object} - */ -module.exports = {}; diff --git a/node_modules/lodash/fp/plant.js b/node_modules/lodash/fp/plant.js deleted file mode 100644 index eca8f32..0000000 --- a/node_modules/lodash/fp/plant.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('plant', require('../plant'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/pluck.js b/node_modules/lodash/fp/pluck.js deleted file mode 100644 index 0d1e1ab..0000000 --- a/node_modules/lodash/fp/pluck.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./map'); diff --git a/node_modules/lodash/fp/prop.js b/node_modules/lodash/fp/prop.js deleted file mode 100644 index b29cfb2..0000000 --- a/node_modules/lodash/fp/prop.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./get'); diff --git a/node_modules/lodash/fp/propEq.js b/node_modules/lodash/fp/propEq.js deleted file mode 100644 index 36c027a..0000000 --- a/node_modules/lodash/fp/propEq.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./matchesProperty'); diff --git a/node_modules/lodash/fp/propOr.js b/node_modules/lodash/fp/propOr.js deleted file mode 100644 index 4ab5820..0000000 --- a/node_modules/lodash/fp/propOr.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./getOr'); diff --git a/node_modules/lodash/fp/property.js b/node_modules/lodash/fp/property.js deleted file mode 100644 index b29cfb2..0000000 --- a/node_modules/lodash/fp/property.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./get'); diff --git a/node_modules/lodash/fp/propertyOf.js b/node_modules/lodash/fp/propertyOf.js deleted file mode 100644 index f6273ee..0000000 --- a/node_modules/lodash/fp/propertyOf.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('propertyOf', require('../get')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/props.js b/node_modules/lodash/fp/props.js deleted file mode 100644 index 1eb7950..0000000 --- a/node_modules/lodash/fp/props.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./at'); diff --git a/node_modules/lodash/fp/pull.js b/node_modules/lodash/fp/pull.js deleted file mode 100644 index 8d7084f..0000000 --- a/node_modules/lodash/fp/pull.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('pull', require('../pull')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/pullAll.js b/node_modules/lodash/fp/pullAll.js deleted file mode 100644 index 98d5c9a..0000000 --- a/node_modules/lodash/fp/pullAll.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('pullAll', require('../pullAll')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/pullAllBy.js b/node_modules/lodash/fp/pullAllBy.js deleted file mode 100644 index 876bc3b..0000000 --- a/node_modules/lodash/fp/pullAllBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('pullAllBy', require('../pullAllBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/pullAllWith.js b/node_modules/lodash/fp/pullAllWith.js deleted file mode 100644 index f71ba4d..0000000 --- a/node_modules/lodash/fp/pullAllWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('pullAllWith', require('../pullAllWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/pullAt.js b/node_modules/lodash/fp/pullAt.js deleted file mode 100644 index e8b3bb6..0000000 --- a/node_modules/lodash/fp/pullAt.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('pullAt', require('../pullAt')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/random.js b/node_modules/lodash/fp/random.js deleted file mode 100644 index 99d852e..0000000 --- a/node_modules/lodash/fp/random.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('random', require('../random')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/range.js b/node_modules/lodash/fp/range.js deleted file mode 100644 index a6bb591..0000000 --- a/node_modules/lodash/fp/range.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('range', require('../range')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/rangeRight.js b/node_modules/lodash/fp/rangeRight.js deleted file mode 100644 index fdb712f..0000000 --- a/node_modules/lodash/fp/rangeRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('rangeRight', require('../rangeRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/rangeStep.js b/node_modules/lodash/fp/rangeStep.js deleted file mode 100644 index d72dfc2..0000000 --- a/node_modules/lodash/fp/rangeStep.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('rangeStep', require('../range')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/rangeStepRight.js b/node_modules/lodash/fp/rangeStepRight.js deleted file mode 100644 index 8b2a67b..0000000 --- a/node_modules/lodash/fp/rangeStepRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('rangeStepRight', require('../rangeRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/rearg.js b/node_modules/lodash/fp/rearg.js deleted file mode 100644 index 678e02a..0000000 --- a/node_modules/lodash/fp/rearg.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('rearg', require('../rearg')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/reduce.js b/node_modules/lodash/fp/reduce.js deleted file mode 100644 index 4cef0a0..0000000 --- a/node_modules/lodash/fp/reduce.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('reduce', require('../reduce')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/reduceRight.js b/node_modules/lodash/fp/reduceRight.js deleted file mode 100644 index caf5bb5..0000000 --- a/node_modules/lodash/fp/reduceRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('reduceRight', require('../reduceRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/reject.js b/node_modules/lodash/fp/reject.js deleted file mode 100644 index c163273..0000000 --- a/node_modules/lodash/fp/reject.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('reject', require('../reject')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/remove.js b/node_modules/lodash/fp/remove.js deleted file mode 100644 index e9d1327..0000000 --- a/node_modules/lodash/fp/remove.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('remove', require('../remove')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/repeat.js b/node_modules/lodash/fp/repeat.js deleted file mode 100644 index 08470f2..0000000 --- a/node_modules/lodash/fp/repeat.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('repeat', require('../repeat')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/replace.js b/node_modules/lodash/fp/replace.js deleted file mode 100644 index 2227db6..0000000 --- a/node_modules/lodash/fp/replace.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('replace', require('../replace')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/rest.js b/node_modules/lodash/fp/rest.js deleted file mode 100644 index c1f3d64..0000000 --- a/node_modules/lodash/fp/rest.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('rest', require('../rest')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/restFrom.js b/node_modules/lodash/fp/restFrom.js deleted file mode 100644 index 714e42b..0000000 --- a/node_modules/lodash/fp/restFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('restFrom', require('../rest')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/result.js b/node_modules/lodash/fp/result.js deleted file mode 100644 index f86ce07..0000000 --- a/node_modules/lodash/fp/result.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('result', require('../result')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/reverse.js b/node_modules/lodash/fp/reverse.js deleted file mode 100644 index 07c9f5e..0000000 --- a/node_modules/lodash/fp/reverse.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('reverse', require('../reverse')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/round.js b/node_modules/lodash/fp/round.js deleted file mode 100644 index 4c0e5c8..0000000 --- a/node_modules/lodash/fp/round.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('round', require('../round')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/sample.js b/node_modules/lodash/fp/sample.js deleted file mode 100644 index 6bea125..0000000 --- a/node_modules/lodash/fp/sample.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sample', require('../sample'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/sampleSize.js b/node_modules/lodash/fp/sampleSize.js deleted file mode 100644 index 359ed6f..0000000 --- a/node_modules/lodash/fp/sampleSize.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sampleSize', require('../sampleSize')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/seq.js b/node_modules/lodash/fp/seq.js deleted file mode 100644 index d8f42b0..0000000 --- a/node_modules/lodash/fp/seq.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../seq')); diff --git a/node_modules/lodash/fp/set.js b/node_modules/lodash/fp/set.js deleted file mode 100644 index 0b56a56..0000000 --- a/node_modules/lodash/fp/set.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('set', require('../set')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/setWith.js b/node_modules/lodash/fp/setWith.js deleted file mode 100644 index 0b58495..0000000 --- a/node_modules/lodash/fp/setWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('setWith', require('../setWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/shuffle.js b/node_modules/lodash/fp/shuffle.js deleted file mode 100644 index aa3a1ca..0000000 --- a/node_modules/lodash/fp/shuffle.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('shuffle', require('../shuffle'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/size.js b/node_modules/lodash/fp/size.js deleted file mode 100644 index 7490136..0000000 --- a/node_modules/lodash/fp/size.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('size', require('../size'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/slice.js b/node_modules/lodash/fp/slice.js deleted file mode 100644 index 15945d3..0000000 --- a/node_modules/lodash/fp/slice.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('slice', require('../slice')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/snakeCase.js b/node_modules/lodash/fp/snakeCase.js deleted file mode 100644 index a0ff780..0000000 --- a/node_modules/lodash/fp/snakeCase.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('snakeCase', require('../snakeCase'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/some.js b/node_modules/lodash/fp/some.js deleted file mode 100644 index a4fa2d0..0000000 --- a/node_modules/lodash/fp/some.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('some', require('../some')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/sortBy.js b/node_modules/lodash/fp/sortBy.js deleted file mode 100644 index e0790ad..0000000 --- a/node_modules/lodash/fp/sortBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortBy', require('../sortBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/sortedIndex.js b/node_modules/lodash/fp/sortedIndex.js deleted file mode 100644 index 364a054..0000000 --- a/node_modules/lodash/fp/sortedIndex.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortedIndex', require('../sortedIndex')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/sortedIndexBy.js b/node_modules/lodash/fp/sortedIndexBy.js deleted file mode 100644 index 9593dbd..0000000 --- a/node_modules/lodash/fp/sortedIndexBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortedIndexBy', require('../sortedIndexBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/sortedIndexOf.js b/node_modules/lodash/fp/sortedIndexOf.js deleted file mode 100644 index c9084ca..0000000 --- a/node_modules/lodash/fp/sortedIndexOf.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortedIndexOf', require('../sortedIndexOf')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/sortedLastIndex.js b/node_modules/lodash/fp/sortedLastIndex.js deleted file mode 100644 index 47fe241..0000000 --- a/node_modules/lodash/fp/sortedLastIndex.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortedLastIndex', require('../sortedLastIndex')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/sortedLastIndexBy.js b/node_modules/lodash/fp/sortedLastIndexBy.js deleted file mode 100644 index 0f9a347..0000000 --- a/node_modules/lodash/fp/sortedLastIndexBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortedLastIndexBy', require('../sortedLastIndexBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/sortedLastIndexOf.js b/node_modules/lodash/fp/sortedLastIndexOf.js deleted file mode 100644 index 0d4d932..0000000 --- a/node_modules/lodash/fp/sortedLastIndexOf.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortedLastIndexOf', require('../sortedLastIndexOf')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/sortedUniq.js b/node_modules/lodash/fp/sortedUniq.js deleted file mode 100644 index 882d283..0000000 --- a/node_modules/lodash/fp/sortedUniq.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortedUniq', require('../sortedUniq'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/sortedUniqBy.js b/node_modules/lodash/fp/sortedUniqBy.js deleted file mode 100644 index 033db91..0000000 --- a/node_modules/lodash/fp/sortedUniqBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortedUniqBy', require('../sortedUniqBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/split.js b/node_modules/lodash/fp/split.js deleted file mode 100644 index 14de1a7..0000000 --- a/node_modules/lodash/fp/split.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('split', require('../split')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/spread.js b/node_modules/lodash/fp/spread.js deleted file mode 100644 index 2d11b70..0000000 --- a/node_modules/lodash/fp/spread.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('spread', require('../spread')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/spreadFrom.js b/node_modules/lodash/fp/spreadFrom.js deleted file mode 100644 index 0b630df..0000000 --- a/node_modules/lodash/fp/spreadFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('spreadFrom', require('../spread')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/startCase.js b/node_modules/lodash/fp/startCase.js deleted file mode 100644 index ada98c9..0000000 --- a/node_modules/lodash/fp/startCase.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('startCase', require('../startCase'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/startsWith.js b/node_modules/lodash/fp/startsWith.js deleted file mode 100644 index 985e2f2..0000000 --- a/node_modules/lodash/fp/startsWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('startsWith', require('../startsWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/string.js b/node_modules/lodash/fp/string.js deleted file mode 100644 index 773b037..0000000 --- a/node_modules/lodash/fp/string.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../string')); diff --git a/node_modules/lodash/fp/stubArray.js b/node_modules/lodash/fp/stubArray.js deleted file mode 100644 index cd604cb..0000000 --- a/node_modules/lodash/fp/stubArray.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('stubArray', require('../stubArray'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/stubFalse.js b/node_modules/lodash/fp/stubFalse.js deleted file mode 100644 index 3296664..0000000 --- a/node_modules/lodash/fp/stubFalse.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('stubFalse', require('../stubFalse'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/stubObject.js b/node_modules/lodash/fp/stubObject.js deleted file mode 100644 index c6c8ec4..0000000 --- a/node_modules/lodash/fp/stubObject.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('stubObject', require('../stubObject'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/stubString.js b/node_modules/lodash/fp/stubString.js deleted file mode 100644 index 701051e..0000000 --- a/node_modules/lodash/fp/stubString.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('stubString', require('../stubString'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/stubTrue.js b/node_modules/lodash/fp/stubTrue.js deleted file mode 100644 index 9249082..0000000 --- a/node_modules/lodash/fp/stubTrue.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('stubTrue', require('../stubTrue'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/subtract.js b/node_modules/lodash/fp/subtract.js deleted file mode 100644 index d32b16d..0000000 --- a/node_modules/lodash/fp/subtract.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('subtract', require('../subtract')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/sum.js b/node_modules/lodash/fp/sum.js deleted file mode 100644 index 5cce12b..0000000 --- a/node_modules/lodash/fp/sum.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sum', require('../sum'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/sumBy.js b/node_modules/lodash/fp/sumBy.js deleted file mode 100644 index c882656..0000000 --- a/node_modules/lodash/fp/sumBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sumBy', require('../sumBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/symmetricDifference.js b/node_modules/lodash/fp/symmetricDifference.js deleted file mode 100644 index 78c16ad..0000000 --- a/node_modules/lodash/fp/symmetricDifference.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./xor'); diff --git a/node_modules/lodash/fp/symmetricDifferenceBy.js b/node_modules/lodash/fp/symmetricDifferenceBy.js deleted file mode 100644 index 298fc7f..0000000 --- a/node_modules/lodash/fp/symmetricDifferenceBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./xorBy'); diff --git a/node_modules/lodash/fp/symmetricDifferenceWith.js b/node_modules/lodash/fp/symmetricDifferenceWith.js deleted file mode 100644 index 70bc6fa..0000000 --- a/node_modules/lodash/fp/symmetricDifferenceWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./xorWith'); diff --git a/node_modules/lodash/fp/tail.js b/node_modules/lodash/fp/tail.js deleted file mode 100644 index f122f0a..0000000 --- a/node_modules/lodash/fp/tail.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('tail', require('../tail'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/take.js b/node_modules/lodash/fp/take.js deleted file mode 100644 index 9af98a7..0000000 --- a/node_modules/lodash/fp/take.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('take', require('../take')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/takeLast.js b/node_modules/lodash/fp/takeLast.js deleted file mode 100644 index e98c84a..0000000 --- a/node_modules/lodash/fp/takeLast.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./takeRight'); diff --git a/node_modules/lodash/fp/takeLastWhile.js b/node_modules/lodash/fp/takeLastWhile.js deleted file mode 100644 index 5367968..0000000 --- a/node_modules/lodash/fp/takeLastWhile.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./takeRightWhile'); diff --git a/node_modules/lodash/fp/takeRight.js b/node_modules/lodash/fp/takeRight.js deleted file mode 100644 index b82950a..0000000 --- a/node_modules/lodash/fp/takeRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('takeRight', require('../takeRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/takeRightWhile.js b/node_modules/lodash/fp/takeRightWhile.js deleted file mode 100644 index 8ffb0a2..0000000 --- a/node_modules/lodash/fp/takeRightWhile.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('takeRightWhile', require('../takeRightWhile')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/takeWhile.js b/node_modules/lodash/fp/takeWhile.js deleted file mode 100644 index 2813664..0000000 --- a/node_modules/lodash/fp/takeWhile.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('takeWhile', require('../takeWhile')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/tap.js b/node_modules/lodash/fp/tap.js deleted file mode 100644 index d33ad6e..0000000 --- a/node_modules/lodash/fp/tap.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('tap', require('../tap')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/template.js b/node_modules/lodash/fp/template.js deleted file mode 100644 index 74857e1..0000000 --- a/node_modules/lodash/fp/template.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('template', require('../template')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/templateSettings.js b/node_modules/lodash/fp/templateSettings.js deleted file mode 100644 index 7bcc0a8..0000000 --- a/node_modules/lodash/fp/templateSettings.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('templateSettings', require('../templateSettings'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/throttle.js b/node_modules/lodash/fp/throttle.js deleted file mode 100644 index 77fff14..0000000 --- a/node_modules/lodash/fp/throttle.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('throttle', require('../throttle')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/thru.js b/node_modules/lodash/fp/thru.js deleted file mode 100644 index d42b3b1..0000000 --- a/node_modules/lodash/fp/thru.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('thru', require('../thru')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/times.js b/node_modules/lodash/fp/times.js deleted file mode 100644 index 0dab06d..0000000 --- a/node_modules/lodash/fp/times.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('times', require('../times')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/toArray.js b/node_modules/lodash/fp/toArray.js deleted file mode 100644 index f0c360a..0000000 --- a/node_modules/lodash/fp/toArray.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toArray', require('../toArray'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/toFinite.js b/node_modules/lodash/fp/toFinite.js deleted file mode 100644 index 3a47687..0000000 --- a/node_modules/lodash/fp/toFinite.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toFinite', require('../toFinite'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/toInteger.js b/node_modules/lodash/fp/toInteger.js deleted file mode 100644 index e0af6a7..0000000 --- a/node_modules/lodash/fp/toInteger.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toInteger', require('../toInteger'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/toIterator.js b/node_modules/lodash/fp/toIterator.js deleted file mode 100644 index 65e6baa..0000000 --- a/node_modules/lodash/fp/toIterator.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toIterator', require('../toIterator'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/toJSON.js b/node_modules/lodash/fp/toJSON.js deleted file mode 100644 index 2d718d0..0000000 --- a/node_modules/lodash/fp/toJSON.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toJSON', require('../toJSON'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/toLength.js b/node_modules/lodash/fp/toLength.js deleted file mode 100644 index b97cdd9..0000000 --- a/node_modules/lodash/fp/toLength.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toLength', require('../toLength'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/toLower.js b/node_modules/lodash/fp/toLower.js deleted file mode 100644 index 616ef36..0000000 --- a/node_modules/lodash/fp/toLower.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toLower', require('../toLower'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/toNumber.js b/node_modules/lodash/fp/toNumber.js deleted file mode 100644 index d0c6f4d..0000000 --- a/node_modules/lodash/fp/toNumber.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toNumber', require('../toNumber'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/toPairs.js b/node_modules/lodash/fp/toPairs.js deleted file mode 100644 index af78378..0000000 --- a/node_modules/lodash/fp/toPairs.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toPairs', require('../toPairs'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/toPairsIn.js b/node_modules/lodash/fp/toPairsIn.js deleted file mode 100644 index 66504ab..0000000 --- a/node_modules/lodash/fp/toPairsIn.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toPairsIn', require('../toPairsIn'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/toPath.js b/node_modules/lodash/fp/toPath.js deleted file mode 100644 index b4d5e50..0000000 --- a/node_modules/lodash/fp/toPath.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toPath', require('../toPath'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/toPlainObject.js b/node_modules/lodash/fp/toPlainObject.js deleted file mode 100644 index 278bb86..0000000 --- a/node_modules/lodash/fp/toPlainObject.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toPlainObject', require('../toPlainObject'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/toSafeInteger.js b/node_modules/lodash/fp/toSafeInteger.js deleted file mode 100644 index 367a26f..0000000 --- a/node_modules/lodash/fp/toSafeInteger.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toSafeInteger', require('../toSafeInteger'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/toString.js b/node_modules/lodash/fp/toString.js deleted file mode 100644 index cec4f8e..0000000 --- a/node_modules/lodash/fp/toString.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toString', require('../toString'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/toUpper.js b/node_modules/lodash/fp/toUpper.js deleted file mode 100644 index 54f9a56..0000000 --- a/node_modules/lodash/fp/toUpper.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toUpper', require('../toUpper'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/transform.js b/node_modules/lodash/fp/transform.js deleted file mode 100644 index 759d088..0000000 --- a/node_modules/lodash/fp/transform.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('transform', require('../transform')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/trim.js b/node_modules/lodash/fp/trim.js deleted file mode 100644 index e6319a7..0000000 --- a/node_modules/lodash/fp/trim.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('trim', require('../trim')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/trimChars.js b/node_modules/lodash/fp/trimChars.js deleted file mode 100644 index c9294de..0000000 --- a/node_modules/lodash/fp/trimChars.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('trimChars', require('../trim')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/trimCharsEnd.js b/node_modules/lodash/fp/trimCharsEnd.js deleted file mode 100644 index 284bc2f..0000000 --- a/node_modules/lodash/fp/trimCharsEnd.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('trimCharsEnd', require('../trimEnd')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/trimCharsStart.js b/node_modules/lodash/fp/trimCharsStart.js deleted file mode 100644 index ff0ee65..0000000 --- a/node_modules/lodash/fp/trimCharsStart.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('trimCharsStart', require('../trimStart')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/trimEnd.js b/node_modules/lodash/fp/trimEnd.js deleted file mode 100644 index 7190880..0000000 --- a/node_modules/lodash/fp/trimEnd.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('trimEnd', require('../trimEnd')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/trimStart.js b/node_modules/lodash/fp/trimStart.js deleted file mode 100644 index fda902c..0000000 --- a/node_modules/lodash/fp/trimStart.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('trimStart', require('../trimStart')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/truncate.js b/node_modules/lodash/fp/truncate.js deleted file mode 100644 index d265c1d..0000000 --- a/node_modules/lodash/fp/truncate.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('truncate', require('../truncate')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/unapply.js b/node_modules/lodash/fp/unapply.js deleted file mode 100644 index c5dfe77..0000000 --- a/node_modules/lodash/fp/unapply.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./rest'); diff --git a/node_modules/lodash/fp/unary.js b/node_modules/lodash/fp/unary.js deleted file mode 100644 index 286c945..0000000 --- a/node_modules/lodash/fp/unary.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('unary', require('../unary'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/unescape.js b/node_modules/lodash/fp/unescape.js deleted file mode 100644 index fddcb46..0000000 --- a/node_modules/lodash/fp/unescape.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('unescape', require('../unescape'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/union.js b/node_modules/lodash/fp/union.js deleted file mode 100644 index ef8228d..0000000 --- a/node_modules/lodash/fp/union.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('union', require('../union')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/unionBy.js b/node_modules/lodash/fp/unionBy.js deleted file mode 100644 index 603687a..0000000 --- a/node_modules/lodash/fp/unionBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('unionBy', require('../unionBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/unionWith.js b/node_modules/lodash/fp/unionWith.js deleted file mode 100644 index 65bb3a7..0000000 --- a/node_modules/lodash/fp/unionWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('unionWith', require('../unionWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/uniq.js b/node_modules/lodash/fp/uniq.js deleted file mode 100644 index bc18524..0000000 --- a/node_modules/lodash/fp/uniq.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('uniq', require('../uniq'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/uniqBy.js b/node_modules/lodash/fp/uniqBy.js deleted file mode 100644 index 634c6a8..0000000 --- a/node_modules/lodash/fp/uniqBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('uniqBy', require('../uniqBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/uniqWith.js b/node_modules/lodash/fp/uniqWith.js deleted file mode 100644 index 0ec601a..0000000 --- a/node_modules/lodash/fp/uniqWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('uniqWith', require('../uniqWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/uniqueId.js b/node_modules/lodash/fp/uniqueId.js deleted file mode 100644 index aa8fc2f..0000000 --- a/node_modules/lodash/fp/uniqueId.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('uniqueId', require('../uniqueId')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/unnest.js b/node_modules/lodash/fp/unnest.js deleted file mode 100644 index 5d34060..0000000 --- a/node_modules/lodash/fp/unnest.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./flatten'); diff --git a/node_modules/lodash/fp/unset.js b/node_modules/lodash/fp/unset.js deleted file mode 100644 index ea203a0..0000000 --- a/node_modules/lodash/fp/unset.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('unset', require('../unset')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/unzip.js b/node_modules/lodash/fp/unzip.js deleted file mode 100644 index cc364b3..0000000 --- a/node_modules/lodash/fp/unzip.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('unzip', require('../unzip'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/unzipWith.js b/node_modules/lodash/fp/unzipWith.js deleted file mode 100644 index 182eaa1..0000000 --- a/node_modules/lodash/fp/unzipWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('unzipWith', require('../unzipWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/update.js b/node_modules/lodash/fp/update.js deleted file mode 100644 index b8ce2cc..0000000 --- a/node_modules/lodash/fp/update.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('update', require('../update')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/updateWith.js b/node_modules/lodash/fp/updateWith.js deleted file mode 100644 index d5e8282..0000000 --- a/node_modules/lodash/fp/updateWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('updateWith', require('../updateWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/upperCase.js b/node_modules/lodash/fp/upperCase.js deleted file mode 100644 index c886f20..0000000 --- a/node_modules/lodash/fp/upperCase.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('upperCase', require('../upperCase'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/upperFirst.js b/node_modules/lodash/fp/upperFirst.js deleted file mode 100644 index d8c04df..0000000 --- a/node_modules/lodash/fp/upperFirst.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('upperFirst', require('../upperFirst'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/useWith.js b/node_modules/lodash/fp/useWith.js deleted file mode 100644 index d8b3df5..0000000 --- a/node_modules/lodash/fp/useWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./overArgs'); diff --git a/node_modules/lodash/fp/util.js b/node_modules/lodash/fp/util.js deleted file mode 100644 index 18c00ba..0000000 --- a/node_modules/lodash/fp/util.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../util')); diff --git a/node_modules/lodash/fp/value.js b/node_modules/lodash/fp/value.js deleted file mode 100644 index 555eec7..0000000 --- a/node_modules/lodash/fp/value.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('value', require('../value'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/valueOf.js b/node_modules/lodash/fp/valueOf.js deleted file mode 100644 index f968807..0000000 --- a/node_modules/lodash/fp/valueOf.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('valueOf', require('../valueOf'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/values.js b/node_modules/lodash/fp/values.js deleted file mode 100644 index 2dfc561..0000000 --- a/node_modules/lodash/fp/values.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('values', require('../values'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/valuesIn.js b/node_modules/lodash/fp/valuesIn.js deleted file mode 100644 index a1b2bb8..0000000 --- a/node_modules/lodash/fp/valuesIn.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('valuesIn', require('../valuesIn'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/where.js b/node_modules/lodash/fp/where.js deleted file mode 100644 index 3247f64..0000000 --- a/node_modules/lodash/fp/where.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./conformsTo'); diff --git a/node_modules/lodash/fp/whereEq.js b/node_modules/lodash/fp/whereEq.js deleted file mode 100644 index 29d1e1e..0000000 --- a/node_modules/lodash/fp/whereEq.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./isMatch'); diff --git a/node_modules/lodash/fp/without.js b/node_modules/lodash/fp/without.js deleted file mode 100644 index bad9e12..0000000 --- a/node_modules/lodash/fp/without.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('without', require('../without')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/words.js b/node_modules/lodash/fp/words.js deleted file mode 100644 index 4a90141..0000000 --- a/node_modules/lodash/fp/words.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('words', require('../words')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/wrap.js b/node_modules/lodash/fp/wrap.js deleted file mode 100644 index e93bd8a..0000000 --- a/node_modules/lodash/fp/wrap.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('wrap', require('../wrap')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/wrapperAt.js b/node_modules/lodash/fp/wrapperAt.js deleted file mode 100644 index 8f0a310..0000000 --- a/node_modules/lodash/fp/wrapperAt.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('wrapperAt', require('../wrapperAt'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/wrapperChain.js b/node_modules/lodash/fp/wrapperChain.js deleted file mode 100644 index 2a48ea2..0000000 --- a/node_modules/lodash/fp/wrapperChain.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('wrapperChain', require('../wrapperChain'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/wrapperLodash.js b/node_modules/lodash/fp/wrapperLodash.js deleted file mode 100644 index a7162d0..0000000 --- a/node_modules/lodash/fp/wrapperLodash.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('wrapperLodash', require('../wrapperLodash'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/wrapperReverse.js b/node_modules/lodash/fp/wrapperReverse.js deleted file mode 100644 index e1481aa..0000000 --- a/node_modules/lodash/fp/wrapperReverse.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('wrapperReverse', require('../wrapperReverse'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/wrapperValue.js b/node_modules/lodash/fp/wrapperValue.js deleted file mode 100644 index 8eb9112..0000000 --- a/node_modules/lodash/fp/wrapperValue.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('wrapperValue', require('../wrapperValue'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/xor.js b/node_modules/lodash/fp/xor.js deleted file mode 100644 index 29e2819..0000000 --- a/node_modules/lodash/fp/xor.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('xor', require('../xor')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/xorBy.js b/node_modules/lodash/fp/xorBy.js deleted file mode 100644 index b355686..0000000 --- a/node_modules/lodash/fp/xorBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('xorBy', require('../xorBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/xorWith.js b/node_modules/lodash/fp/xorWith.js deleted file mode 100644 index 8e05739..0000000 --- a/node_modules/lodash/fp/xorWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('xorWith', require('../xorWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/zip.js b/node_modules/lodash/fp/zip.js deleted file mode 100644 index 69e147a..0000000 --- a/node_modules/lodash/fp/zip.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('zip', require('../zip')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/zipAll.js b/node_modules/lodash/fp/zipAll.js deleted file mode 100644 index efa8ccb..0000000 --- a/node_modules/lodash/fp/zipAll.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('zipAll', require('../zip')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/zipObj.js b/node_modules/lodash/fp/zipObj.js deleted file mode 100644 index f4a3453..0000000 --- a/node_modules/lodash/fp/zipObj.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./zipObject'); diff --git a/node_modules/lodash/fp/zipObject.js b/node_modules/lodash/fp/zipObject.js deleted file mode 100644 index 462dbb6..0000000 --- a/node_modules/lodash/fp/zipObject.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('zipObject', require('../zipObject')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/zipObjectDeep.js b/node_modules/lodash/fp/zipObjectDeep.js deleted file mode 100644 index 53a5d33..0000000 --- a/node_modules/lodash/fp/zipObjectDeep.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('zipObjectDeep', require('../zipObjectDeep')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fp/zipWith.js b/node_modules/lodash/fp/zipWith.js deleted file mode 100644 index c5cf9e2..0000000 --- a/node_modules/lodash/fp/zipWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('zipWith', require('../zipWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/node_modules/lodash/fromPairs.js b/node_modules/lodash/fromPairs.js deleted file mode 100644 index ee7940d..0000000 --- a/node_modules/lodash/fromPairs.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * The inverse of `_.toPairs`; this method returns an object composed - * from key-value `pairs`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} pairs The key-value pairs. - * @returns {Object} Returns the new object. - * @example - * - * _.fromPairs([['a', 1], ['b', 2]]); - * // => { 'a': 1, 'b': 2 } - */ -function fromPairs(pairs) { - var index = -1, - length = pairs == null ? 0 : pairs.length, - result = {}; - - while (++index < length) { - var pair = pairs[index]; - result[pair[0]] = pair[1]; - } - return result; -} - -module.exports = fromPairs; diff --git a/node_modules/lodash/function.js b/node_modules/lodash/function.js deleted file mode 100644 index b0fc6d9..0000000 --- a/node_modules/lodash/function.js +++ /dev/null @@ -1,25 +0,0 @@ -module.exports = { - 'after': require('./after'), - 'ary': require('./ary'), - 'before': require('./before'), - 'bind': require('./bind'), - 'bindKey': require('./bindKey'), - 'curry': require('./curry'), - 'curryRight': require('./curryRight'), - 'debounce': require('./debounce'), - 'defer': require('./defer'), - 'delay': require('./delay'), - 'flip': require('./flip'), - 'memoize': require('./memoize'), - 'negate': require('./negate'), - 'once': require('./once'), - 'overArgs': require('./overArgs'), - 'partial': require('./partial'), - 'partialRight': require('./partialRight'), - 'rearg': require('./rearg'), - 'rest': require('./rest'), - 'spread': require('./spread'), - 'throttle': require('./throttle'), - 'unary': require('./unary'), - 'wrap': require('./wrap') -}; diff --git a/node_modules/lodash/functions.js b/node_modules/lodash/functions.js deleted file mode 100644 index 9722928..0000000 --- a/node_modules/lodash/functions.js +++ /dev/null @@ -1,31 +0,0 @@ -var baseFunctions = require('./_baseFunctions'), - keys = require('./keys'); - -/** - * Creates an array of function property names from own enumerable properties - * of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the function names. - * @see _.functionsIn - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functions(new Foo); - * // => ['a', 'b'] - */ -function functions(object) { - return object == null ? [] : baseFunctions(object, keys(object)); -} - -module.exports = functions; diff --git a/node_modules/lodash/functionsIn.js b/node_modules/lodash/functionsIn.js deleted file mode 100644 index f00345d..0000000 --- a/node_modules/lodash/functionsIn.js +++ /dev/null @@ -1,31 +0,0 @@ -var baseFunctions = require('./_baseFunctions'), - keysIn = require('./keysIn'); - -/** - * Creates an array of function property names from own and inherited - * enumerable properties of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the function names. - * @see _.functions - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functionsIn(new Foo); - * // => ['a', 'b', 'c'] - */ -function functionsIn(object) { - return object == null ? [] : baseFunctions(object, keysIn(object)); -} - -module.exports = functionsIn; diff --git a/node_modules/lodash/get.js b/node_modules/lodash/get.js deleted file mode 100644 index 8805ff9..0000000 --- a/node_modules/lodash/get.js +++ /dev/null @@ -1,33 +0,0 @@ -var baseGet = require('./_baseGet'); - -/** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ -function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; -} - -module.exports = get; diff --git a/node_modules/lodash/groupBy.js b/node_modules/lodash/groupBy.js deleted file mode 100644 index babf4f6..0000000 --- a/node_modules/lodash/groupBy.js +++ /dev/null @@ -1,41 +0,0 @@ -var baseAssignValue = require('./_baseAssignValue'), - createAggregator = require('./_createAggregator'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The order of grouped values - * is determined by the order they occur in `collection`. The corresponding - * value of each key is an array of elements responsible for generating the - * key. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([6.1, 4.2, 6.3], Math.floor); - * // => { '4': [4.2], '6': [6.1, 6.3] } - * - * // The `_.property` iteratee shorthand. - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } - */ -var groupBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - result[key].push(value); - } else { - baseAssignValue(result, key, [value]); - } -}); - -module.exports = groupBy; diff --git a/node_modules/lodash/gt.js b/node_modules/lodash/gt.js deleted file mode 100644 index 3a66282..0000000 --- a/node_modules/lodash/gt.js +++ /dev/null @@ -1,29 +0,0 @@ -var baseGt = require('./_baseGt'), - createRelationalOperation = require('./_createRelationalOperation'); - -/** - * Checks if `value` is greater than `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - * @see _.lt - * @example - * - * _.gt(3, 1); - * // => true - * - * _.gt(3, 3); - * // => false - * - * _.gt(1, 3); - * // => false - */ -var gt = createRelationalOperation(baseGt); - -module.exports = gt; diff --git a/node_modules/lodash/gte.js b/node_modules/lodash/gte.js deleted file mode 100644 index 4180a68..0000000 --- a/node_modules/lodash/gte.js +++ /dev/null @@ -1,30 +0,0 @@ -var createRelationalOperation = require('./_createRelationalOperation'); - -/** - * Checks if `value` is greater than or equal to `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than or equal to - * `other`, else `false`. - * @see _.lte - * @example - * - * _.gte(3, 1); - * // => true - * - * _.gte(3, 3); - * // => true - * - * _.gte(1, 3); - * // => false - */ -var gte = createRelationalOperation(function(value, other) { - return value >= other; -}); - -module.exports = gte; diff --git a/node_modules/lodash/has.js b/node_modules/lodash/has.js deleted file mode 100644 index 34df55e..0000000 --- a/node_modules/lodash/has.js +++ /dev/null @@ -1,35 +0,0 @@ -var baseHas = require('./_baseHas'), - hasPath = require('./_hasPath'); - -/** - * Checks if `path` is a direct property of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = { 'a': { 'b': 2 } }; - * var other = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.has(object, 'a'); - * // => true - * - * _.has(object, 'a.b'); - * // => true - * - * _.has(object, ['a', 'b']); - * // => true - * - * _.has(other, 'a'); - * // => false - */ -function has(object, path) { - return object != null && hasPath(object, path, baseHas); -} - -module.exports = has; diff --git a/node_modules/lodash/hasIn.js b/node_modules/lodash/hasIn.js deleted file mode 100644 index 06a3686..0000000 --- a/node_modules/lodash/hasIn.js +++ /dev/null @@ -1,34 +0,0 @@ -var baseHasIn = require('./_baseHasIn'), - hasPath = require('./_hasPath'); - -/** - * Checks if `path` is a direct or inherited property of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.hasIn(object, 'a'); - * // => true - * - * _.hasIn(object, 'a.b'); - * // => true - * - * _.hasIn(object, ['a', 'b']); - * // => true - * - * _.hasIn(object, 'b'); - * // => false - */ -function hasIn(object, path) { - return object != null && hasPath(object, path, baseHasIn); -} - -module.exports = hasIn; diff --git a/node_modules/lodash/head.js b/node_modules/lodash/head.js deleted file mode 100644 index dee9d1f..0000000 --- a/node_modules/lodash/head.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Gets the first element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias first - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the first element of `array`. - * @example - * - * _.head([1, 2, 3]); - * // => 1 - * - * _.head([]); - * // => undefined - */ -function head(array) { - return (array && array.length) ? array[0] : undefined; -} - -module.exports = head; diff --git a/node_modules/lodash/identity.js b/node_modules/lodash/identity.js deleted file mode 100644 index 2d5d963..0000000 --- a/node_modules/lodash/identity.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * This method returns the first argument it receives. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'a': 1 }; - * - * console.log(_.identity(object) === object); - * // => true - */ -function identity(value) { - return value; -} - -module.exports = identity; diff --git a/node_modules/lodash/inRange.js b/node_modules/lodash/inRange.js deleted file mode 100644 index f20728d..0000000 --- a/node_modules/lodash/inRange.js +++ /dev/null @@ -1,55 +0,0 @@ -var baseInRange = require('./_baseInRange'), - toFinite = require('./toFinite'), - toNumber = require('./toNumber'); - -/** - * Checks if `n` is between `start` and up to, but not including, `end`. If - * `end` is not specified, it's set to `start` with `start` then set to `0`. - * If `start` is greater than `end` the params are swapped to support - * negative ranges. - * - * @static - * @memberOf _ - * @since 3.3.0 - * @category Number - * @param {number} number The number to check. - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `number` is in the range, else `false`. - * @see _.range, _.rangeRight - * @example - * - * _.inRange(3, 2, 4); - * // => true - * - * _.inRange(4, 8); - * // => true - * - * _.inRange(4, 2); - * // => false - * - * _.inRange(2, 2); - * // => false - * - * _.inRange(1.2, 2); - * // => true - * - * _.inRange(5.2, 4); - * // => false - * - * _.inRange(-3, -2, -6); - * // => true - */ -function inRange(number, start, end) { - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - number = toNumber(number); - return baseInRange(number, start, end); -} - -module.exports = inRange; diff --git a/node_modules/lodash/includes.js b/node_modules/lodash/includes.js deleted file mode 100644 index ae0deed..0000000 --- a/node_modules/lodash/includes.js +++ /dev/null @@ -1,53 +0,0 @@ -var baseIndexOf = require('./_baseIndexOf'), - isArrayLike = require('./isArrayLike'), - isString = require('./isString'), - toInteger = require('./toInteger'), - values = require('./values'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * Checks if `value` is in `collection`. If `collection` is a string, it's - * checked for a substring of `value`, otherwise - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * is used for equality comparisons. If `fromIndex` is negative, it's used as - * the offset from the end of `collection`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. - * @returns {boolean} Returns `true` if `value` is found, else `false`. - * @example - * - * _.includes([1, 2, 3], 1); - * // => true - * - * _.includes([1, 2, 3], 1, 2); - * // => false - * - * _.includes({ 'a': 1, 'b': 2 }, 1); - * // => true - * - * _.includes('abcd', 'bc'); - * // => true - */ -function includes(collection, value, fromIndex, guard) { - collection = isArrayLike(collection) ? collection : values(collection); - fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; - - var length = collection.length; - if (fromIndex < 0) { - fromIndex = nativeMax(length + fromIndex, 0); - } - return isString(collection) - ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) - : (!!length && baseIndexOf(collection, value, fromIndex) > -1); -} - -module.exports = includes; diff --git a/node_modules/lodash/index.js b/node_modules/lodash/index.js deleted file mode 100644 index 5d063e2..0000000 --- a/node_modules/lodash/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lodash'); \ No newline at end of file diff --git a/node_modules/lodash/indexOf.js b/node_modules/lodash/indexOf.js deleted file mode 100644 index 3c644af..0000000 --- a/node_modules/lodash/indexOf.js +++ /dev/null @@ -1,42 +0,0 @@ -var baseIndexOf = require('./_baseIndexOf'), - toInteger = require('./toInteger'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * Gets the index at which the first occurrence of `value` is found in `array` - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. If `fromIndex` is negative, it's used as the - * offset from the end of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.indexOf([1, 2, 1, 2], 2); - * // => 1 - * - * // Search from the `fromIndex`. - * _.indexOf([1, 2, 1, 2], 2, 2); - * // => 3 - */ -function indexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseIndexOf(array, value, index); -} - -module.exports = indexOf; diff --git a/node_modules/lodash/initial.js b/node_modules/lodash/initial.js deleted file mode 100644 index f47fc50..0000000 --- a/node_modules/lodash/initial.js +++ /dev/null @@ -1,22 +0,0 @@ -var baseSlice = require('./_baseSlice'); - -/** - * Gets all but the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.initial([1, 2, 3]); - * // => [1, 2] - */ -function initial(array) { - var length = array == null ? 0 : array.length; - return length ? baseSlice(array, 0, -1) : []; -} - -module.exports = initial; diff --git a/node_modules/lodash/intersection.js b/node_modules/lodash/intersection.js deleted file mode 100644 index a94c135..0000000 --- a/node_modules/lodash/intersection.js +++ /dev/null @@ -1,30 +0,0 @@ -var arrayMap = require('./_arrayMap'), - baseIntersection = require('./_baseIntersection'), - baseRest = require('./_baseRest'), - castArrayLikeObject = require('./_castArrayLikeObject'); - -/** - * Creates an array of unique values that are included in all given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order and references of result values are - * determined by the first array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * _.intersection([2, 1], [2, 3]); - * // => [2] - */ -var intersection = baseRest(function(arrays) { - var mapped = arrayMap(arrays, castArrayLikeObject); - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped) - : []; -}); - -module.exports = intersection; diff --git a/node_modules/lodash/intersectionBy.js b/node_modules/lodash/intersectionBy.js deleted file mode 100644 index 31461aa..0000000 --- a/node_modules/lodash/intersectionBy.js +++ /dev/null @@ -1,45 +0,0 @@ -var arrayMap = require('./_arrayMap'), - baseIntersection = require('./_baseIntersection'), - baseIteratee = require('./_baseIteratee'), - baseRest = require('./_baseRest'), - castArrayLikeObject = require('./_castArrayLikeObject'), - last = require('./last'); - -/** - * This method is like `_.intersection` except that it accepts `iteratee` - * which is invoked for each element of each `arrays` to generate the criterion - * by which they're compared. The order and references of result values are - * determined by the first array. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [2.1] - * - * // The `_.property` iteratee shorthand. - * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }] - */ -var intersectionBy = baseRest(function(arrays) { - var iteratee = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - if (iteratee === last(mapped)) { - iteratee = undefined; - } else { - mapped.pop(); - } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, baseIteratee(iteratee, 2)) - : []; -}); - -module.exports = intersectionBy; diff --git a/node_modules/lodash/intersectionWith.js b/node_modules/lodash/intersectionWith.js deleted file mode 100644 index 63cabfa..0000000 --- a/node_modules/lodash/intersectionWith.js +++ /dev/null @@ -1,41 +0,0 @@ -var arrayMap = require('./_arrayMap'), - baseIntersection = require('./_baseIntersection'), - baseRest = require('./_baseRest'), - castArrayLikeObject = require('./_castArrayLikeObject'), - last = require('./last'); - -/** - * This method is like `_.intersection` except that it accepts `comparator` - * which is invoked to compare elements of `arrays`. The order and references - * of result values are determined by the first array. The comparator is - * invoked with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.intersectionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }] - */ -var intersectionWith = baseRest(function(arrays) { - var comparator = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - comparator = typeof comparator == 'function' ? comparator : undefined; - if (comparator) { - mapped.pop(); - } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, undefined, comparator) - : []; -}); - -module.exports = intersectionWith; diff --git a/node_modules/lodash/invert.js b/node_modules/lodash/invert.js deleted file mode 100644 index 8c47950..0000000 --- a/node_modules/lodash/invert.js +++ /dev/null @@ -1,42 +0,0 @@ -var constant = require('./constant'), - createInverter = require('./_createInverter'), - identity = require('./identity'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString = objectProto.toString; - -/** - * Creates an object composed of the inverted keys and values of `object`. - * If `object` contains duplicate values, subsequent values overwrite - * property assignments of previous values. - * - * @static - * @memberOf _ - * @since 0.7.0 - * @category Object - * @param {Object} object The object to invert. - * @returns {Object} Returns the new inverted object. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invert(object); - * // => { '1': 'c', '2': 'b' } - */ -var invert = createInverter(function(result, value, key) { - if (value != null && - typeof value.toString != 'function') { - value = nativeObjectToString.call(value); - } - - result[value] = key; -}, constant(identity)); - -module.exports = invert; diff --git a/node_modules/lodash/invertBy.js b/node_modules/lodash/invertBy.js deleted file mode 100644 index 3f4f7e5..0000000 --- a/node_modules/lodash/invertBy.js +++ /dev/null @@ -1,56 +0,0 @@ -var baseIteratee = require('./_baseIteratee'), - createInverter = require('./_createInverter'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString = objectProto.toString; - -/** - * This method is like `_.invert` except that the inverted object is generated - * from the results of running each element of `object` thru `iteratee`. The - * corresponding inverted value of each inverted key is an array of keys - * responsible for generating the inverted value. The iteratee is invoked - * with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.1.0 - * @category Object - * @param {Object} object The object to invert. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Object} Returns the new inverted object. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invertBy(object); - * // => { '1': ['a', 'c'], '2': ['b'] } - * - * _.invertBy(object, function(value) { - * return 'group' + value; - * }); - * // => { 'group1': ['a', 'c'], 'group2': ['b'] } - */ -var invertBy = createInverter(function(result, value, key) { - if (value != null && - typeof value.toString != 'function') { - value = nativeObjectToString.call(value); - } - - if (hasOwnProperty.call(result, value)) { - result[value].push(key); - } else { - result[value] = [key]; - } -}, baseIteratee); - -module.exports = invertBy; diff --git a/node_modules/lodash/invoke.js b/node_modules/lodash/invoke.js deleted file mode 100644 index 97d51eb..0000000 --- a/node_modules/lodash/invoke.js +++ /dev/null @@ -1,24 +0,0 @@ -var baseInvoke = require('./_baseInvoke'), - baseRest = require('./_baseRest'); - -/** - * Invokes the method at `path` of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the method to invoke. - * @param {...*} [args] The arguments to invoke the method with. - * @returns {*} Returns the result of the invoked method. - * @example - * - * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; - * - * _.invoke(object, 'a[0].b.c.slice', 1, 3); - * // => [2, 3] - */ -var invoke = baseRest(baseInvoke); - -module.exports = invoke; diff --git a/node_modules/lodash/invokeMap.js b/node_modules/lodash/invokeMap.js deleted file mode 100644 index 8da5126..0000000 --- a/node_modules/lodash/invokeMap.js +++ /dev/null @@ -1,41 +0,0 @@ -var apply = require('./_apply'), - baseEach = require('./_baseEach'), - baseInvoke = require('./_baseInvoke'), - baseRest = require('./_baseRest'), - isArrayLike = require('./isArrayLike'); - -/** - * Invokes the method at `path` of each element in `collection`, returning - * an array of the results of each invoked method. Any additional arguments - * are provided to each invoked method. If `path` is a function, it's invoked - * for, and `this` bound to, each element in `collection`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Array|Function|string} path The path of the method to invoke or - * the function invoked per iteration. - * @param {...*} [args] The arguments to invoke each method with. - * @returns {Array} Returns the array of results. - * @example - * - * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * _.invokeMap([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] - */ -var invokeMap = baseRest(function(collection, path, args) { - var index = -1, - isFunc = typeof path == 'function', - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value) { - result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); - }); - return result; -}); - -module.exports = invokeMap; diff --git a/node_modules/lodash/isArguments.js b/node_modules/lodash/isArguments.js deleted file mode 100644 index 8b9ed66..0000000 --- a/node_modules/lodash/isArguments.js +++ /dev/null @@ -1,36 +0,0 @@ -var baseIsArguments = require('./_baseIsArguments'), - isObjectLike = require('./isObjectLike'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** Built-in value references. */ -var propertyIsEnumerable = objectProto.propertyIsEnumerable; - -/** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ -var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { - return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && - !propertyIsEnumerable.call(value, 'callee'); -}; - -module.exports = isArguments; diff --git a/node_modules/lodash/isArray.js b/node_modules/lodash/isArray.js deleted file mode 100644 index 88ab55f..0000000 --- a/node_modules/lodash/isArray.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ -var isArray = Array.isArray; - -module.exports = isArray; diff --git a/node_modules/lodash/isArrayBuffer.js b/node_modules/lodash/isArrayBuffer.js deleted file mode 100644 index 12904a6..0000000 --- a/node_modules/lodash/isArrayBuffer.js +++ /dev/null @@ -1,27 +0,0 @@ -var baseIsArrayBuffer = require('./_baseIsArrayBuffer'), - baseUnary = require('./_baseUnary'), - nodeUtil = require('./_nodeUtil'); - -/* Node.js helper references. */ -var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer; - -/** - * Checks if `value` is classified as an `ArrayBuffer` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. - * @example - * - * _.isArrayBuffer(new ArrayBuffer(2)); - * // => true - * - * _.isArrayBuffer(new Array(2)); - * // => false - */ -var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; - -module.exports = isArrayBuffer; diff --git a/node_modules/lodash/isArrayLike.js b/node_modules/lodash/isArrayLike.js deleted file mode 100644 index 0f96680..0000000 --- a/node_modules/lodash/isArrayLike.js +++ /dev/null @@ -1,33 +0,0 @@ -var isFunction = require('./isFunction'), - isLength = require('./isLength'); - -/** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ -function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); -} - -module.exports = isArrayLike; diff --git a/node_modules/lodash/isArrayLikeObject.js b/node_modules/lodash/isArrayLikeObject.js deleted file mode 100644 index 6c4812a..0000000 --- a/node_modules/lodash/isArrayLikeObject.js +++ /dev/null @@ -1,33 +0,0 @@ -var isArrayLike = require('./isArrayLike'), - isObjectLike = require('./isObjectLike'); - -/** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ -function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); -} - -module.exports = isArrayLikeObject; diff --git a/node_modules/lodash/isBoolean.js b/node_modules/lodash/isBoolean.js deleted file mode 100644 index a43ed4b..0000000 --- a/node_modules/lodash/isBoolean.js +++ /dev/null @@ -1,29 +0,0 @@ -var baseGetTag = require('./_baseGetTag'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var boolTag = '[object Boolean]'; - -/** - * Checks if `value` is classified as a boolean primitive or object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. - * @example - * - * _.isBoolean(false); - * // => true - * - * _.isBoolean(null); - * // => false - */ -function isBoolean(value) { - return value === true || value === false || - (isObjectLike(value) && baseGetTag(value) == boolTag); -} - -module.exports = isBoolean; diff --git a/node_modules/lodash/isBuffer.js b/node_modules/lodash/isBuffer.js deleted file mode 100644 index c103cc7..0000000 --- a/node_modules/lodash/isBuffer.js +++ /dev/null @@ -1,38 +0,0 @@ -var root = require('./_root'), - stubFalse = require('./stubFalse'); - -/** Detect free variable `exports`. */ -var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - -/** Detect free variable `module`. */ -var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; - -/** Built-in value references. */ -var Buffer = moduleExports ? root.Buffer : undefined; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; - -/** - * Checks if `value` is a buffer. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. - * @example - * - * _.isBuffer(new Buffer(2)); - * // => true - * - * _.isBuffer(new Uint8Array(2)); - * // => false - */ -var isBuffer = nativeIsBuffer || stubFalse; - -module.exports = isBuffer; diff --git a/node_modules/lodash/isDate.js b/node_modules/lodash/isDate.js deleted file mode 100644 index 7f0209f..0000000 --- a/node_modules/lodash/isDate.js +++ /dev/null @@ -1,27 +0,0 @@ -var baseIsDate = require('./_baseIsDate'), - baseUnary = require('./_baseUnary'), - nodeUtil = require('./_nodeUtil'); - -/* Node.js helper references. */ -var nodeIsDate = nodeUtil && nodeUtil.isDate; - -/** - * Checks if `value` is classified as a `Date` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - * @example - * - * _.isDate(new Date); - * // => true - * - * _.isDate('Mon April 23 2012'); - * // => false - */ -var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; - -module.exports = isDate; diff --git a/node_modules/lodash/isElement.js b/node_modules/lodash/isElement.js deleted file mode 100644 index 76ae29c..0000000 --- a/node_modules/lodash/isElement.js +++ /dev/null @@ -1,25 +0,0 @@ -var isObjectLike = require('./isObjectLike'), - isPlainObject = require('./isPlainObject'); - -/** - * Checks if `value` is likely a DOM element. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. - * @example - * - * _.isElement(document.body); - * // => true - * - * _.isElement(''); - * // => false - */ -function isElement(value) { - return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); -} - -module.exports = isElement; diff --git a/node_modules/lodash/isEmpty.js b/node_modules/lodash/isEmpty.js deleted file mode 100644 index 3597294..0000000 --- a/node_modules/lodash/isEmpty.js +++ /dev/null @@ -1,77 +0,0 @@ -var baseKeys = require('./_baseKeys'), - getTag = require('./_getTag'), - isArguments = require('./isArguments'), - isArray = require('./isArray'), - isArrayLike = require('./isArrayLike'), - isBuffer = require('./isBuffer'), - isPrototype = require('./_isPrototype'), - isTypedArray = require('./isTypedArray'); - -/** `Object#toString` result references. */ -var mapTag = '[object Map]', - setTag = '[object Set]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Checks if `value` is an empty object, collection, map, or set. - * - * Objects are considered empty if they have no own enumerable string keyed - * properties. - * - * Array-like values such as `arguments` objects, arrays, buffers, strings, or - * jQuery-like collections are considered empty if they have a `length` of `0`. - * Similarly, maps and sets are considered empty if they have a `size` of `0`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is empty, else `false`. - * @example - * - * _.isEmpty(null); - * // => true - * - * _.isEmpty(true); - * // => true - * - * _.isEmpty(1); - * // => true - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({ 'a': 1 }); - * // => false - */ -function isEmpty(value) { - if (value == null) { - return true; - } - if (isArrayLike(value) && - (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || - isBuffer(value) || isTypedArray(value) || isArguments(value))) { - return !value.length; - } - var tag = getTag(value); - if (tag == mapTag || tag == setTag) { - return !value.size; - } - if (isPrototype(value)) { - return !baseKeys(value).length; - } - for (var key in value) { - if (hasOwnProperty.call(value, key)) { - return false; - } - } - return true; -} - -module.exports = isEmpty; diff --git a/node_modules/lodash/isEqual.js b/node_modules/lodash/isEqual.js deleted file mode 100644 index 5e23e76..0000000 --- a/node_modules/lodash/isEqual.js +++ /dev/null @@ -1,35 +0,0 @@ -var baseIsEqual = require('./_baseIsEqual'); - -/** - * Performs a deep comparison between two values to determine if they are - * equivalent. - * - * **Note:** This method supports comparing arrays, array buffers, booleans, - * date objects, error objects, maps, numbers, `Object` objects, regexes, - * sets, strings, symbols, and typed arrays. `Object` objects are compared - * by their own, not inherited, enumerable properties. Functions and DOM - * nodes are compared by strict equality, i.e. `===`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.isEqual(object, other); - * // => true - * - * object === other; - * // => false - */ -function isEqual(value, other) { - return baseIsEqual(value, other); -} - -module.exports = isEqual; diff --git a/node_modules/lodash/isEqualWith.js b/node_modules/lodash/isEqualWith.js deleted file mode 100644 index 21bdc7f..0000000 --- a/node_modules/lodash/isEqualWith.js +++ /dev/null @@ -1,41 +0,0 @@ -var baseIsEqual = require('./_baseIsEqual'); - -/** - * This method is like `_.isEqual` except that it accepts `customizer` which - * is invoked to compare values. If `customizer` returns `undefined`, comparisons - * are handled by the method instead. The `customizer` is invoked with up to - * six arguments: (objValue, othValue [, index|key, object, other, stack]). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, othValue) { - * if (isGreeting(objValue) && isGreeting(othValue)) { - * return true; - * } - * } - * - * var array = ['hello', 'goodbye']; - * var other = ['hi', 'goodbye']; - * - * _.isEqualWith(array, other, customizer); - * // => true - */ -function isEqualWith(value, other, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - var result = customizer ? customizer(value, other) : undefined; - return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result; -} - -module.exports = isEqualWith; diff --git a/node_modules/lodash/isError.js b/node_modules/lodash/isError.js deleted file mode 100644 index b4f41e0..0000000 --- a/node_modules/lodash/isError.js +++ /dev/null @@ -1,36 +0,0 @@ -var baseGetTag = require('./_baseGetTag'), - isObjectLike = require('./isObjectLike'), - isPlainObject = require('./isPlainObject'); - -/** `Object#toString` result references. */ -var domExcTag = '[object DOMException]', - errorTag = '[object Error]'; - -/** - * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, - * `SyntaxError`, `TypeError`, or `URIError` object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an error object, else `false`. - * @example - * - * _.isError(new Error); - * // => true - * - * _.isError(Error); - * // => false - */ -function isError(value) { - if (!isObjectLike(value)) { - return false; - } - var tag = baseGetTag(value); - return tag == errorTag || tag == domExcTag || - (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); -} - -module.exports = isError; diff --git a/node_modules/lodash/isFinite.js b/node_modules/lodash/isFinite.js deleted file mode 100644 index 601842b..0000000 --- a/node_modules/lodash/isFinite.js +++ /dev/null @@ -1,36 +0,0 @@ -var root = require('./_root'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeIsFinite = root.isFinite; - -/** - * Checks if `value` is a finite primitive number. - * - * **Note:** This method is based on - * [`Number.isFinite`](https://mdn.io/Number/isFinite). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. - * @example - * - * _.isFinite(3); - * // => true - * - * _.isFinite(Number.MIN_VALUE); - * // => true - * - * _.isFinite(Infinity); - * // => false - * - * _.isFinite('3'); - * // => false - */ -function isFinite(value) { - return typeof value == 'number' && nativeIsFinite(value); -} - -module.exports = isFinite; diff --git a/node_modules/lodash/isFunction.js b/node_modules/lodash/isFunction.js deleted file mode 100644 index 907a8cd..0000000 --- a/node_modules/lodash/isFunction.js +++ /dev/null @@ -1,37 +0,0 @@ -var baseGetTag = require('./_baseGetTag'), - isObject = require('./isObject'); - -/** `Object#toString` result references. */ -var asyncTag = '[object AsyncFunction]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - proxyTag = '[object Proxy]'; - -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - if (!isObject(value)) { - return false; - } - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 9 which returns 'object' for typed arrays and other constructors. - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; -} - -module.exports = isFunction; diff --git a/node_modules/lodash/isInteger.js b/node_modules/lodash/isInteger.js deleted file mode 100644 index 66aa87d..0000000 --- a/node_modules/lodash/isInteger.js +++ /dev/null @@ -1,33 +0,0 @@ -var toInteger = require('./toInteger'); - -/** - * Checks if `value` is an integer. - * - * **Note:** This method is based on - * [`Number.isInteger`](https://mdn.io/Number/isInteger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an integer, else `false`. - * @example - * - * _.isInteger(3); - * // => true - * - * _.isInteger(Number.MIN_VALUE); - * // => false - * - * _.isInteger(Infinity); - * // => false - * - * _.isInteger('3'); - * // => false - */ -function isInteger(value) { - return typeof value == 'number' && value == toInteger(value); -} - -module.exports = isInteger; diff --git a/node_modules/lodash/isLength.js b/node_modules/lodash/isLength.js deleted file mode 100644 index 3a95caa..0000000 --- a/node_modules/lodash/isLength.js +++ /dev/null @@ -1,35 +0,0 @@ -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ -function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} - -module.exports = isLength; diff --git a/node_modules/lodash/isMap.js b/node_modules/lodash/isMap.js deleted file mode 100644 index 44f8517..0000000 --- a/node_modules/lodash/isMap.js +++ /dev/null @@ -1,27 +0,0 @@ -var baseIsMap = require('./_baseIsMap'), - baseUnary = require('./_baseUnary'), - nodeUtil = require('./_nodeUtil'); - -/* Node.js helper references. */ -var nodeIsMap = nodeUtil && nodeUtil.isMap; - -/** - * Checks if `value` is classified as a `Map` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - * @example - * - * _.isMap(new Map); - * // => true - * - * _.isMap(new WeakMap); - * // => false - */ -var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; - -module.exports = isMap; diff --git a/node_modules/lodash/isMatch.js b/node_modules/lodash/isMatch.js deleted file mode 100644 index 9773a18..0000000 --- a/node_modules/lodash/isMatch.js +++ /dev/null @@ -1,36 +0,0 @@ -var baseIsMatch = require('./_baseIsMatch'), - getMatchData = require('./_getMatchData'); - -/** - * Performs a partial deep comparison between `object` and `source` to - * determine if `object` contains equivalent property values. - * - * **Note:** This method is equivalent to `_.matches` when `source` is - * partially applied. - * - * Partial comparisons will match empty array and empty object `source` - * values against any array or object value, respectively. See `_.isEqual` - * for a list of supported value comparisons. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * - * _.isMatch(object, { 'b': 2 }); - * // => true - * - * _.isMatch(object, { 'b': 1 }); - * // => false - */ -function isMatch(object, source) { - return object === source || baseIsMatch(object, source, getMatchData(source)); -} - -module.exports = isMatch; diff --git a/node_modules/lodash/isMatchWith.js b/node_modules/lodash/isMatchWith.js deleted file mode 100644 index 187b6a6..0000000 --- a/node_modules/lodash/isMatchWith.js +++ /dev/null @@ -1,41 +0,0 @@ -var baseIsMatch = require('./_baseIsMatch'), - getMatchData = require('./_getMatchData'); - -/** - * This method is like `_.isMatch` except that it accepts `customizer` which - * is invoked to compare values. If `customizer` returns `undefined`, comparisons - * are handled by the method instead. The `customizer` is invoked with five - * arguments: (objValue, srcValue, index|key, object, source). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, srcValue) { - * if (isGreeting(objValue) && isGreeting(srcValue)) { - * return true; - * } - * } - * - * var object = { 'greeting': 'hello' }; - * var source = { 'greeting': 'hi' }; - * - * _.isMatchWith(object, source, customizer); - * // => true - */ -function isMatchWith(object, source, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return baseIsMatch(object, source, getMatchData(source), customizer); -} - -module.exports = isMatchWith; diff --git a/node_modules/lodash/isNaN.js b/node_modules/lodash/isNaN.js deleted file mode 100644 index 7d0d783..0000000 --- a/node_modules/lodash/isNaN.js +++ /dev/null @@ -1,38 +0,0 @@ -var isNumber = require('./isNumber'); - -/** - * Checks if `value` is `NaN`. - * - * **Note:** This method is based on - * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as - * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for - * `undefined` and other non-number values. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ -function isNaN(value) { - // An `NaN` primitive is the only value that is not equal to itself. - // Perform the `toStringTag` check first to avoid errors with some - // ActiveX objects in IE. - return isNumber(value) && value != +value; -} - -module.exports = isNaN; diff --git a/node_modules/lodash/isNative.js b/node_modules/lodash/isNative.js deleted file mode 100644 index f0cb8d5..0000000 --- a/node_modules/lodash/isNative.js +++ /dev/null @@ -1,40 +0,0 @@ -var baseIsNative = require('./_baseIsNative'), - isMaskable = require('./_isMaskable'); - -/** Error message constants. */ -var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.'; - -/** - * Checks if `value` is a pristine native function. - * - * **Note:** This method can't reliably detect native functions in the presence - * of the core-js package because core-js circumvents this kind of detection. - * Despite multiple requests, the core-js maintainer has made it clear: any - * attempt to fix the detection will be obstructed. As a result, we're left - * with little choice but to throw an error. Unfortunately, this also affects - * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), - * which rely on core-js. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - * @example - * - * _.isNative(Array.prototype.push); - * // => true - * - * _.isNative(_); - * // => false - */ -function isNative(value) { - if (isMaskable(value)) { - throw new Error(CORE_ERROR_TEXT); - } - return baseIsNative(value); -} - -module.exports = isNative; diff --git a/node_modules/lodash/isNil.js b/node_modules/lodash/isNil.js deleted file mode 100644 index 79f0505..0000000 --- a/node_modules/lodash/isNil.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Checks if `value` is `null` or `undefined`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is nullish, else `false`. - * @example - * - * _.isNil(null); - * // => true - * - * _.isNil(void 0); - * // => true - * - * _.isNil(NaN); - * // => false - */ -function isNil(value) { - return value == null; -} - -module.exports = isNil; diff --git a/node_modules/lodash/isNull.js b/node_modules/lodash/isNull.js deleted file mode 100644 index c0a374d..0000000 --- a/node_modules/lodash/isNull.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(void 0); - * // => false - */ -function isNull(value) { - return value === null; -} - -module.exports = isNull; diff --git a/node_modules/lodash/isNumber.js b/node_modules/lodash/isNumber.js deleted file mode 100644 index cd34ee4..0000000 --- a/node_modules/lodash/isNumber.js +++ /dev/null @@ -1,38 +0,0 @@ -var baseGetTag = require('./_baseGetTag'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var numberTag = '[object Number]'; - -/** - * Checks if `value` is classified as a `Number` primitive or object. - * - * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are - * classified as numbers, use the `_.isFinite` method. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a number, else `false`. - * @example - * - * _.isNumber(3); - * // => true - * - * _.isNumber(Number.MIN_VALUE); - * // => true - * - * _.isNumber(Infinity); - * // => true - * - * _.isNumber('3'); - * // => false - */ -function isNumber(value) { - return typeof value == 'number' || - (isObjectLike(value) && baseGetTag(value) == numberTag); -} - -module.exports = isNumber; diff --git a/node_modules/lodash/isObject.js b/node_modules/lodash/isObject.js deleted file mode 100644 index 1dc8939..0000000 --- a/node_modules/lodash/isObject.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); -} - -module.exports = isObject; diff --git a/node_modules/lodash/isObjectLike.js b/node_modules/lodash/isObjectLike.js deleted file mode 100644 index 301716b..0000000 --- a/node_modules/lodash/isObjectLike.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return value != null && typeof value == 'object'; -} - -module.exports = isObjectLike; diff --git a/node_modules/lodash/isPlainObject.js b/node_modules/lodash/isPlainObject.js deleted file mode 100644 index 2387373..0000000 --- a/node_modules/lodash/isPlainObject.js +++ /dev/null @@ -1,62 +0,0 @@ -var baseGetTag = require('./_baseGetTag'), - getPrototype = require('./_getPrototype'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var objectTag = '[object Object]'; - -/** Used for built-in method references. */ -var funcProto = Function.prototype, - objectProto = Object.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** Used to infer the `Object` constructor. */ -var objectCtorString = funcToString.call(Object); - -/** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * @static - * @memberOf _ - * @since 0.8.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - * - * _.isPlainObject(Object.create(null)); - * // => true - */ -function isPlainObject(value) { - if (!isObjectLike(value) || baseGetTag(value) != objectTag) { - return false; - } - var proto = getPrototype(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; - return typeof Ctor == 'function' && Ctor instanceof Ctor && - funcToString.call(Ctor) == objectCtorString; -} - -module.exports = isPlainObject; diff --git a/node_modules/lodash/isRegExp.js b/node_modules/lodash/isRegExp.js deleted file mode 100644 index 76c9b6e..0000000 --- a/node_modules/lodash/isRegExp.js +++ /dev/null @@ -1,27 +0,0 @@ -var baseIsRegExp = require('./_baseIsRegExp'), - baseUnary = require('./_baseUnary'), - nodeUtil = require('./_nodeUtil'); - -/* Node.js helper references. */ -var nodeIsRegExp = nodeUtil && nodeUtil.isRegExp; - -/** - * Checks if `value` is classified as a `RegExp` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - * @example - * - * _.isRegExp(/abc/); - * // => true - * - * _.isRegExp('/abc/'); - * // => false - */ -var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; - -module.exports = isRegExp; diff --git a/node_modules/lodash/isSafeInteger.js b/node_modules/lodash/isSafeInteger.js deleted file mode 100644 index 2a48526..0000000 --- a/node_modules/lodash/isSafeInteger.js +++ /dev/null @@ -1,37 +0,0 @@ -var isInteger = require('./isInteger'); - -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** - * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 - * double precision number which isn't the result of a rounded unsafe integer. - * - * **Note:** This method is based on - * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. - * @example - * - * _.isSafeInteger(3); - * // => true - * - * _.isSafeInteger(Number.MIN_VALUE); - * // => false - * - * _.isSafeInteger(Infinity); - * // => false - * - * _.isSafeInteger('3'); - * // => false - */ -function isSafeInteger(value) { - return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; -} - -module.exports = isSafeInteger; diff --git a/node_modules/lodash/isSet.js b/node_modules/lodash/isSet.js deleted file mode 100644 index ab88bdf..0000000 --- a/node_modules/lodash/isSet.js +++ /dev/null @@ -1,27 +0,0 @@ -var baseIsSet = require('./_baseIsSet'), - baseUnary = require('./_baseUnary'), - nodeUtil = require('./_nodeUtil'); - -/* Node.js helper references. */ -var nodeIsSet = nodeUtil && nodeUtil.isSet; - -/** - * Checks if `value` is classified as a `Set` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - * @example - * - * _.isSet(new Set); - * // => true - * - * _.isSet(new WeakSet); - * // => false - */ -var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; - -module.exports = isSet; diff --git a/node_modules/lodash/isString.js b/node_modules/lodash/isString.js deleted file mode 100644 index 627eb9c..0000000 --- a/node_modules/lodash/isString.js +++ /dev/null @@ -1,30 +0,0 @@ -var baseGetTag = require('./_baseGetTag'), - isArray = require('./isArray'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var stringTag = '[object String]'; - -/** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a string, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ -function isString(value) { - return typeof value == 'string' || - (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); -} - -module.exports = isString; diff --git a/node_modules/lodash/isSymbol.js b/node_modules/lodash/isSymbol.js deleted file mode 100644 index dfb60b9..0000000 --- a/node_modules/lodash/isSymbol.js +++ /dev/null @@ -1,29 +0,0 @@ -var baseGetTag = require('./_baseGetTag'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var symbolTag = '[object Symbol]'; - -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && baseGetTag(value) == symbolTag); -} - -module.exports = isSymbol; diff --git a/node_modules/lodash/isTypedArray.js b/node_modules/lodash/isTypedArray.js deleted file mode 100644 index da3f8dd..0000000 --- a/node_modules/lodash/isTypedArray.js +++ /dev/null @@ -1,27 +0,0 @@ -var baseIsTypedArray = require('./_baseIsTypedArray'), - baseUnary = require('./_baseUnary'), - nodeUtil = require('./_nodeUtil'); - -/* Node.js helper references. */ -var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - -/** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true - * - * _.isTypedArray([]); - * // => false - */ -var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - -module.exports = isTypedArray; diff --git a/node_modules/lodash/isUndefined.js b/node_modules/lodash/isUndefined.js deleted file mode 100644 index 377d121..0000000 --- a/node_modules/lodash/isUndefined.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Checks if `value` is `undefined`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - * - * _.isUndefined(null); - * // => false - */ -function isUndefined(value) { - return value === undefined; -} - -module.exports = isUndefined; diff --git a/node_modules/lodash/isWeakMap.js b/node_modules/lodash/isWeakMap.js deleted file mode 100644 index 8d36f66..0000000 --- a/node_modules/lodash/isWeakMap.js +++ /dev/null @@ -1,28 +0,0 @@ -var getTag = require('./_getTag'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var weakMapTag = '[object WeakMap]'; - -/** - * Checks if `value` is classified as a `WeakMap` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. - * @example - * - * _.isWeakMap(new WeakMap); - * // => true - * - * _.isWeakMap(new Map); - * // => false - */ -function isWeakMap(value) { - return isObjectLike(value) && getTag(value) == weakMapTag; -} - -module.exports = isWeakMap; diff --git a/node_modules/lodash/isWeakSet.js b/node_modules/lodash/isWeakSet.js deleted file mode 100644 index e628b26..0000000 --- a/node_modules/lodash/isWeakSet.js +++ /dev/null @@ -1,28 +0,0 @@ -var baseGetTag = require('./_baseGetTag'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var weakSetTag = '[object WeakSet]'; - -/** - * Checks if `value` is classified as a `WeakSet` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. - * @example - * - * _.isWeakSet(new WeakSet); - * // => true - * - * _.isWeakSet(new Set); - * // => false - */ -function isWeakSet(value) { - return isObjectLike(value) && baseGetTag(value) == weakSetTag; -} - -module.exports = isWeakSet; diff --git a/node_modules/lodash/iteratee.js b/node_modules/lodash/iteratee.js deleted file mode 100644 index 61b73a8..0000000 --- a/node_modules/lodash/iteratee.js +++ /dev/null @@ -1,53 +0,0 @@ -var baseClone = require('./_baseClone'), - baseIteratee = require('./_baseIteratee'); - -/** Used to compose bitmasks for cloning. */ -var CLONE_DEEP_FLAG = 1; - -/** - * Creates a function that invokes `func` with the arguments of the created - * function. If `func` is a property name, the created function returns the - * property value for a given element. If `func` is an array or object, the - * created function returns `true` for elements that contain the equivalent - * source properties, otherwise it returns `false`. - * - * @static - * @since 4.0.0 - * @memberOf _ - * @category Util - * @param {*} [func=_.identity] The value to convert to a callback. - * @returns {Function} Returns the callback. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true })); - * // => [{ 'user': 'barney', 'age': 36, 'active': true }] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, _.iteratee(['user', 'fred'])); - * // => [{ 'user': 'fred', 'age': 40 }] - * - * // The `_.property` iteratee shorthand. - * _.map(users, _.iteratee('user')); - * // => ['barney', 'fred'] - * - * // Create custom iteratee shorthands. - * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) { - * return !_.isRegExp(func) ? iteratee(func) : function(string) { - * return func.test(string); - * }; - * }); - * - * _.filter(['abc', 'def'], /ef/); - * // => ['def'] - */ -function iteratee(func) { - return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG)); -} - -module.exports = iteratee; diff --git a/node_modules/lodash/join.js b/node_modules/lodash/join.js deleted file mode 100644 index 45de079..0000000 --- a/node_modules/lodash/join.js +++ /dev/null @@ -1,26 +0,0 @@ -/** Used for built-in method references. */ -var arrayProto = Array.prototype; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeJoin = arrayProto.join; - -/** - * Converts all elements in `array` into a string separated by `separator`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to convert. - * @param {string} [separator=','] The element separator. - * @returns {string} Returns the joined string. - * @example - * - * _.join(['a', 'b', 'c'], '~'); - * // => 'a~b~c' - */ -function join(array, separator) { - return array == null ? '' : nativeJoin.call(array, separator); -} - -module.exports = join; diff --git a/node_modules/lodash/kebabCase.js b/node_modules/lodash/kebabCase.js deleted file mode 100644 index 8a52be6..0000000 --- a/node_modules/lodash/kebabCase.js +++ /dev/null @@ -1,28 +0,0 @@ -var createCompounder = require('./_createCompounder'); - -/** - * Converts `string` to - * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the kebab cased string. - * @example - * - * _.kebabCase('Foo Bar'); - * // => 'foo-bar' - * - * _.kebabCase('fooBar'); - * // => 'foo-bar' - * - * _.kebabCase('__FOO_BAR__'); - * // => 'foo-bar' - */ -var kebabCase = createCompounder(function(result, word, index) { - return result + (index ? '-' : '') + word.toLowerCase(); -}); - -module.exports = kebabCase; diff --git a/node_modules/lodash/keyBy.js b/node_modules/lodash/keyBy.js deleted file mode 100644 index acc007a..0000000 --- a/node_modules/lodash/keyBy.js +++ /dev/null @@ -1,36 +0,0 @@ -var baseAssignValue = require('./_baseAssignValue'), - createAggregator = require('./_createAggregator'); - -/** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The corresponding value of - * each key is the last element responsible for generating the key. The - * iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * var array = [ - * { 'dir': 'left', 'code': 97 }, - * { 'dir': 'right', 'code': 100 } - * ]; - * - * _.keyBy(array, function(o) { - * return String.fromCharCode(o.code); - * }); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - * - * _.keyBy(array, 'dir'); - * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } - */ -var keyBy = createAggregator(function(result, value, key) { - baseAssignValue(result, key, value); -}); - -module.exports = keyBy; diff --git a/node_modules/lodash/keys.js b/node_modules/lodash/keys.js deleted file mode 100644 index d143c71..0000000 --- a/node_modules/lodash/keys.js +++ /dev/null @@ -1,37 +0,0 @@ -var arrayLikeKeys = require('./_arrayLikeKeys'), - baseKeys = require('./_baseKeys'), - isArrayLike = require('./isArrayLike'); - -/** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ -function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); -} - -module.exports = keys; diff --git a/node_modules/lodash/keysIn.js b/node_modules/lodash/keysIn.js deleted file mode 100644 index a62308f..0000000 --- a/node_modules/lodash/keysIn.js +++ /dev/null @@ -1,32 +0,0 @@ -var arrayLikeKeys = require('./_arrayLikeKeys'), - baseKeysIn = require('./_baseKeysIn'), - isArrayLike = require('./isArrayLike'); - -/** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ -function keysIn(object) { - return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); -} - -module.exports = keysIn; diff --git a/node_modules/lodash/lang.js b/node_modules/lodash/lang.js deleted file mode 100644 index a396216..0000000 --- a/node_modules/lodash/lang.js +++ /dev/null @@ -1,58 +0,0 @@ -module.exports = { - 'castArray': require('./castArray'), - 'clone': require('./clone'), - 'cloneDeep': require('./cloneDeep'), - 'cloneDeepWith': require('./cloneDeepWith'), - 'cloneWith': require('./cloneWith'), - 'conformsTo': require('./conformsTo'), - 'eq': require('./eq'), - 'gt': require('./gt'), - 'gte': require('./gte'), - 'isArguments': require('./isArguments'), - 'isArray': require('./isArray'), - 'isArrayBuffer': require('./isArrayBuffer'), - 'isArrayLike': require('./isArrayLike'), - 'isArrayLikeObject': require('./isArrayLikeObject'), - 'isBoolean': require('./isBoolean'), - 'isBuffer': require('./isBuffer'), - 'isDate': require('./isDate'), - 'isElement': require('./isElement'), - 'isEmpty': require('./isEmpty'), - 'isEqual': require('./isEqual'), - 'isEqualWith': require('./isEqualWith'), - 'isError': require('./isError'), - 'isFinite': require('./isFinite'), - 'isFunction': require('./isFunction'), - 'isInteger': require('./isInteger'), - 'isLength': require('./isLength'), - 'isMap': require('./isMap'), - 'isMatch': require('./isMatch'), - 'isMatchWith': require('./isMatchWith'), - 'isNaN': require('./isNaN'), - 'isNative': require('./isNative'), - 'isNil': require('./isNil'), - 'isNull': require('./isNull'), - 'isNumber': require('./isNumber'), - 'isObject': require('./isObject'), - 'isObjectLike': require('./isObjectLike'), - 'isPlainObject': require('./isPlainObject'), - 'isRegExp': require('./isRegExp'), - 'isSafeInteger': require('./isSafeInteger'), - 'isSet': require('./isSet'), - 'isString': require('./isString'), - 'isSymbol': require('./isSymbol'), - 'isTypedArray': require('./isTypedArray'), - 'isUndefined': require('./isUndefined'), - 'isWeakMap': require('./isWeakMap'), - 'isWeakSet': require('./isWeakSet'), - 'lt': require('./lt'), - 'lte': require('./lte'), - 'toArray': require('./toArray'), - 'toFinite': require('./toFinite'), - 'toInteger': require('./toInteger'), - 'toLength': require('./toLength'), - 'toNumber': require('./toNumber'), - 'toPlainObject': require('./toPlainObject'), - 'toSafeInteger': require('./toSafeInteger'), - 'toString': require('./toString') -}; diff --git a/node_modules/lodash/last.js b/node_modules/lodash/last.js deleted file mode 100644 index cad1eaf..0000000 --- a/node_modules/lodash/last.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Gets the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the last element of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - */ -function last(array) { - var length = array == null ? 0 : array.length; - return length ? array[length - 1] : undefined; -} - -module.exports = last; diff --git a/node_modules/lodash/lastIndexOf.js b/node_modules/lodash/lastIndexOf.js deleted file mode 100644 index dabfb61..0000000 --- a/node_modules/lodash/lastIndexOf.js +++ /dev/null @@ -1,46 +0,0 @@ -var baseFindIndex = require('./_baseFindIndex'), - baseIsNaN = require('./_baseIsNaN'), - strictLastIndexOf = require('./_strictLastIndexOf'), - toInteger = require('./toInteger'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max, - nativeMin = Math.min; - -/** - * This method is like `_.indexOf` except that it iterates over elements of - * `array` from right to left. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.lastIndexOf([1, 2, 1, 2], 2); - * // => 3 - * - * // Search from the `fromIndex`. - * _.lastIndexOf([1, 2, 1, 2], 2, 2); - * // => 1 - */ -function lastIndexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = length; - if (fromIndex !== undefined) { - index = toInteger(fromIndex); - index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); - } - return value === value - ? strictLastIndexOf(array, value, index) - : baseFindIndex(array, baseIsNaN, index, true); -} - -module.exports = lastIndexOf; diff --git a/node_modules/lodash/lodash.js b/node_modules/lodash/lodash.js deleted file mode 100644 index 4131e93..0000000 --- a/node_modules/lodash/lodash.js +++ /dev/null @@ -1,17209 +0,0 @@ -/** - * @license - * Lodash - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ -;(function() { - - /** Used as a safe reference for `undefined` in pre-ES5 environments. */ - var undefined; - - /** Used as the semantic version number. */ - var VERSION = '4.17.21'; - - /** Used as the size to enable large array optimizations. */ - var LARGE_ARRAY_SIZE = 200; - - /** Error message constants. */ - var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', - FUNC_ERROR_TEXT = 'Expected a function', - INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`'; - - /** Used to stand-in for `undefined` hash values. */ - var HASH_UNDEFINED = '__lodash_hash_undefined__'; - - /** Used as the maximum memoize cache size. */ - var MAX_MEMOIZE_SIZE = 500; - - /** Used as the internal argument placeholder. */ - var PLACEHOLDER = '__lodash_placeholder__'; - - /** Used to compose bitmasks for cloning. */ - var CLONE_DEEP_FLAG = 1, - CLONE_FLAT_FLAG = 2, - CLONE_SYMBOLS_FLAG = 4; - - /** Used to compose bitmasks for value comparisons. */ - var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - - /** Used to compose bitmasks for function metadata. */ - var WRAP_BIND_FLAG = 1, - WRAP_BIND_KEY_FLAG = 2, - WRAP_CURRY_BOUND_FLAG = 4, - WRAP_CURRY_FLAG = 8, - WRAP_CURRY_RIGHT_FLAG = 16, - WRAP_PARTIAL_FLAG = 32, - WRAP_PARTIAL_RIGHT_FLAG = 64, - WRAP_ARY_FLAG = 128, - WRAP_REARG_FLAG = 256, - WRAP_FLIP_FLAG = 512; - - /** Used as default options for `_.truncate`. */ - var DEFAULT_TRUNC_LENGTH = 30, - DEFAULT_TRUNC_OMISSION = '...'; - - /** Used to detect hot functions by number of calls within a span of milliseconds. */ - var HOT_COUNT = 800, - HOT_SPAN = 16; - - /** Used to indicate the type of lazy iteratees. */ - var LAZY_FILTER_FLAG = 1, - LAZY_MAP_FLAG = 2, - LAZY_WHILE_FLAG = 3; - - /** Used as references for various `Number` constants. */ - var INFINITY = 1 / 0, - MAX_SAFE_INTEGER = 9007199254740991, - MAX_INTEGER = 1.7976931348623157e+308, - NAN = 0 / 0; - - /** Used as references for the maximum length and index of an array. */ - var MAX_ARRAY_LENGTH = 4294967295, - MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, - HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; - - /** Used to associate wrap methods with their bit flags. */ - var wrapFlags = [ - ['ary', WRAP_ARY_FLAG], - ['bind', WRAP_BIND_FLAG], - ['bindKey', WRAP_BIND_KEY_FLAG], - ['curry', WRAP_CURRY_FLAG], - ['curryRight', WRAP_CURRY_RIGHT_FLAG], - ['flip', WRAP_FLIP_FLAG], - ['partial', WRAP_PARTIAL_FLAG], - ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], - ['rearg', WRAP_REARG_FLAG] - ]; - - /** `Object#toString` result references. */ - var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - asyncTag = '[object AsyncFunction]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - domExcTag = '[object DOMException]', - errorTag = '[object Error]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - mapTag = '[object Map]', - numberTag = '[object Number]', - nullTag = '[object Null]', - objectTag = '[object Object]', - promiseTag = '[object Promise]', - proxyTag = '[object Proxy]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]', - undefinedTag = '[object Undefined]', - weakMapTag = '[object WeakMap]', - weakSetTag = '[object WeakSet]'; - - var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - - /** Used to match empty string literals in compiled template source. */ - var reEmptyStringLeading = /\b__p \+= '';/g, - reEmptyStringMiddle = /\b(__p \+=) '' \+/g, - reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; - - /** Used to match HTML entities and HTML characters. */ - var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, - reUnescapedHtml = /[&<>"']/g, - reHasEscapedHtml = RegExp(reEscapedHtml.source), - reHasUnescapedHtml = RegExp(reUnescapedHtml.source); - - /** Used to match template delimiters. */ - var reEscape = /<%-([\s\S]+?)%>/g, - reEvaluate = /<%([\s\S]+?)%>/g, - reInterpolate = /<%=([\s\S]+?)%>/g; - - /** Used to match property names within property paths. */ - var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/, - rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - - /** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ - var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, - reHasRegExpChar = RegExp(reRegExpChar.source); - - /** Used to match leading whitespace. */ - var reTrimStart = /^\s+/; - - /** Used to match a single whitespace character. */ - var reWhitespace = /\s/; - - /** Used to match wrap detail comments. */ - var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, - reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, - reSplitDetails = /,? & /; - - /** Used to match words composed of alphanumeric characters. */ - var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; - - /** - * Used to validate the `validate` option in `_.template` variable. - * - * Forbids characters which could potentially change the meaning of the function argument definition: - * - "()," (modification of function parameters) - * - "=" (default value) - * - "[]{}" (destructuring of function parameters) - * - "/" (beginning of a comment) - * - whitespace - */ - var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; - - /** Used to match backslashes in property paths. */ - var reEscapeChar = /\\(\\)?/g; - - /** - * Used to match - * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). - */ - var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; - - /** Used to match `RegExp` flags from their coerced string values. */ - var reFlags = /\w*$/; - - /** Used to detect bad signed hexadecimal string values. */ - var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; - - /** Used to detect binary string values. */ - var reIsBinary = /^0b[01]+$/i; - - /** Used to detect host constructors (Safari). */ - var reIsHostCtor = /^\[object .+?Constructor\]$/; - - /** Used to detect octal string values. */ - var reIsOctal = /^0o[0-7]+$/i; - - /** Used to detect unsigned integer values. */ - var reIsUint = /^(?:0|[1-9]\d*)$/; - - /** Used to match Latin Unicode letters (excluding mathematical operators). */ - var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; - - /** Used to ensure capturing order of template delimiters. */ - var reNoMatch = /($^)/; - - /** Used to match unescaped characters in compiled string literals. */ - var reUnescapedString = /['\n\r\u2028\u2029\\]/g; - - /** Used to compose unicode character classes. */ - var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, - rsDingbatRange = '\\u2700-\\u27bf', - rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', - rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', - rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', - rsPunctuationRange = '\\u2000-\\u206f', - rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', - rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', - rsVarRange = '\\ufe0e\\ufe0f', - rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; - - /** Used to compose unicode capture groups. */ - var rsApos = "['\u2019]", - rsAstral = '[' + rsAstralRange + ']', - rsBreak = '[' + rsBreakRange + ']', - rsCombo = '[' + rsComboRange + ']', - rsDigits = '\\d+', - rsDingbat = '[' + rsDingbatRange + ']', - rsLower = '[' + rsLowerRange + ']', - rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', - rsFitz = '\\ud83c[\\udffb-\\udfff]', - rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', - rsNonAstral = '[^' + rsAstralRange + ']', - rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsUpper = '[' + rsUpperRange + ']', - rsZWJ = '\\u200d'; - - /** Used to compose unicode regexes. */ - var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', - rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', - rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', - rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', - reOptMod = rsModifier + '?', - rsOptVar = '[' + rsVarRange + ']?', - rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', - rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', - rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', - rsSeq = rsOptVar + reOptMod + rsOptJoin, - rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, - rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; - - /** Used to match apostrophes. */ - var reApos = RegExp(rsApos, 'g'); - - /** - * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and - * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). - */ - var reComboMark = RegExp(rsCombo, 'g'); - - /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ - var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); - - /** Used to match complex or compound words. */ - var reUnicodeWord = RegExp([ - rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', - rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', - rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, - rsUpper + '+' + rsOptContrUpper, - rsOrdUpper, - rsOrdLower, - rsDigits, - rsEmoji - ].join('|'), 'g'); - - /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ - var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); - - /** Used to detect strings that need a more robust regexp to match words. */ - var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; - - /** Used to assign default `context` object properties. */ - var contextProps = [ - 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', - 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', - 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', - 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', - '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' - ]; - - /** Used to make template sourceURLs easier to identify. */ - var templateCounter = -1; - - /** Used to identify `toStringTag` values of typed arrays. */ - var typedArrayTags = {}; - typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = - typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = - typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = - typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = - typedArrayTags[uint32Tag] = true; - typedArrayTags[argsTag] = typedArrayTags[arrayTag] = - typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = - typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = - typedArrayTags[errorTag] = typedArrayTags[funcTag] = - typedArrayTags[mapTag] = typedArrayTags[numberTag] = - typedArrayTags[objectTag] = typedArrayTags[regexpTag] = - typedArrayTags[setTag] = typedArrayTags[stringTag] = - typedArrayTags[weakMapTag] = false; - - /** Used to identify `toStringTag` values supported by `_.clone`. */ - var cloneableTags = {}; - cloneableTags[argsTag] = cloneableTags[arrayTag] = - cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = - cloneableTags[boolTag] = cloneableTags[dateTag] = - cloneableTags[float32Tag] = cloneableTags[float64Tag] = - cloneableTags[int8Tag] = cloneableTags[int16Tag] = - cloneableTags[int32Tag] = cloneableTags[mapTag] = - cloneableTags[numberTag] = cloneableTags[objectTag] = - cloneableTags[regexpTag] = cloneableTags[setTag] = - cloneableTags[stringTag] = cloneableTags[symbolTag] = - cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = - cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; - cloneableTags[errorTag] = cloneableTags[funcTag] = - cloneableTags[weakMapTag] = false; - - /** Used to map Latin Unicode letters to basic Latin letters. */ - var deburredLetters = { - // Latin-1 Supplement block. - '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', - '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', - '\xc7': 'C', '\xe7': 'c', - '\xd0': 'D', '\xf0': 'd', - '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', - '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', - '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', - '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', - '\xd1': 'N', '\xf1': 'n', - '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', - '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', - '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', - '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', - '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', - '\xc6': 'Ae', '\xe6': 'ae', - '\xde': 'Th', '\xfe': 'th', - '\xdf': 'ss', - // Latin Extended-A block. - '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', - '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', - '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', - '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', - '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', - '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', - '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', - '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', - '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', - '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', - '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', - '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', - '\u0134': 'J', '\u0135': 'j', - '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', - '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', - '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', - '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', - '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', - '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', - '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', - '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', - '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', - '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', - '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', - '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', - '\u0163': 't', '\u0165': 't', '\u0167': 't', - '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', - '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', - '\u0174': 'W', '\u0175': 'w', - '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', - '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', - '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', - '\u0132': 'IJ', '\u0133': 'ij', - '\u0152': 'Oe', '\u0153': 'oe', - '\u0149': "'n", '\u017f': 's' - }; - - /** Used to map characters to HTML entities. */ - var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' - }; - - /** Used to map HTML entities to characters. */ - var htmlUnescapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - ''': "'" - }; - - /** Used to escape characters for inclusion in compiled string literals. */ - var stringEscapes = { - '\\': '\\', - "'": "'", - '\n': 'n', - '\r': 'r', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - /** Built-in method references without a dependency on `root`. */ - var freeParseFloat = parseFloat, - freeParseInt = parseInt; - - /** Detect free variable `global` from Node.js. */ - var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; - - /** Detect free variable `self`. */ - var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - - /** Used as a reference to the global object. */ - var root = freeGlobal || freeSelf || Function('return this')(); - - /** Detect free variable `exports`. */ - var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - - /** Detect free variable `module`. */ - var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - - /** Detect the popular CommonJS extension `module.exports`. */ - var moduleExports = freeModule && freeModule.exports === freeExports; - - /** Detect free variable `process` from Node.js. */ - var freeProcess = moduleExports && freeGlobal.process; - - /** Used to access faster Node.js helpers. */ - var nodeUtil = (function() { - try { - // Use `util.types` for Node.js 10+. - var types = freeModule && freeModule.require && freeModule.require('util').types; - - if (types) { - return types; - } - - // Legacy `process.binding('util')` for Node.js < 10. - return freeProcess && freeProcess.binding && freeProcess.binding('util'); - } catch (e) {} - }()); - - /* Node.js helper references. */ - var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, - nodeIsDate = nodeUtil && nodeUtil.isDate, - nodeIsMap = nodeUtil && nodeUtil.isMap, - nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, - nodeIsSet = nodeUtil && nodeUtil.isSet, - nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - - /*--------------------------------------------------------------------------*/ - - /** - * A faster alternative to `Function#apply`, this function invokes `func` - * with the `this` binding of `thisArg` and the arguments of `args`. - * - * @private - * @param {Function} func The function to invoke. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} args The arguments to invoke `func` with. - * @returns {*} Returns the result of `func`. - */ - function apply(func, thisArg, args) { - switch (args.length) { - case 0: return func.call(thisArg); - case 1: return func.call(thisArg, args[0]); - case 2: return func.call(thisArg, args[0], args[1]); - case 3: return func.call(thisArg, args[0], args[1], args[2]); - } - return func.apply(thisArg, args); - } - - /** - * A specialized version of `baseAggregator` for arrays. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ - function arrayAggregator(array, setter, iteratee, accumulator) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - var value = array[index]; - setter(accumulator, value, iteratee(value), array); - } - return accumulator; - } - - /** - * A specialized version of `_.forEach` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEach(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; - } - } - return array; - } - - /** - * A specialized version of `_.forEachRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEachRight(array, iteratee) { - var length = array == null ? 0 : array.length; - - while (length--) { - if (iteratee(array[length], length, array) === false) { - break; - } - } - return array; - } - - /** - * A specialized version of `_.every` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - */ - function arrayEvery(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (!predicate(array[index], index, array)) { - return false; - } - } - return true; - } - - /** - * A specialized version of `_.filter` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function arrayFilter(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[resIndex++] = value; - } - } - return result; - } - - /** - * A specialized version of `_.includes` for arrays without support for - * specifying an index to search from. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ - function arrayIncludes(array, value) { - var length = array == null ? 0 : array.length; - return !!length && baseIndexOf(array, value, 0) > -1; - } - - /** - * This function is like `arrayIncludes` except that it accepts a comparator. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @param {Function} comparator The comparator invoked per element. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ - function arrayIncludesWith(array, value, comparator) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (comparator(value, array[index])) { - return true; - } - } - return false; - } - - /** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function arrayMap(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; - } - - /** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ - function arrayPush(array, values) { - var index = -1, - length = values.length, - offset = array.length; - - while (++index < length) { - array[offset + index] = values[index]; - } - return array; - } - - /** - * A specialized version of `_.reduce` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the first element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduce(array, iteratee, accumulator, initAccum) { - var index = -1, - length = array == null ? 0 : array.length; - - if (initAccum && length) { - accumulator = array[++index]; - } - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - return accumulator; - } - - /** - * A specialized version of `_.reduceRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the last element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduceRight(array, iteratee, accumulator, initAccum) { - var length = array == null ? 0 : array.length; - if (initAccum && length) { - accumulator = array[--length]; - } - while (length--) { - accumulator = iteratee(accumulator, array[length], length, array); - } - return accumulator; - } - - /** - * A specialized version of `_.some` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function arraySome(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; - } - } - return false; - } - - /** - * Gets the size of an ASCII `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ - var asciiSize = baseProperty('length'); - - /** - * Converts an ASCII `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function asciiToArray(string) { - return string.split(''); - } - - /** - * Splits an ASCII `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ - function asciiWords(string) { - return string.match(reAsciiWord) || []; - } - - /** - * The base implementation of methods like `_.findKey` and `_.findLastKey`, - * without support for iteratee shorthands, which iterates over `collection` - * using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the found element or its key, else `undefined`. - */ - function baseFindKey(collection, predicate, eachFunc) { - var result; - eachFunc(collection, function(value, key, collection) { - if (predicate(value, key, collection)) { - result = key; - return false; - } - }); - return result; - } - - /** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); - - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseIndexOf(array, value, fromIndex) { - return value === value - ? strictIndexOf(array, value, fromIndex) - : baseFindIndex(array, baseIsNaN, fromIndex); - } - - /** - * This function is like `baseIndexOf` except that it accepts a comparator. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @param {Function} comparator The comparator invoked per element. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseIndexOfWith(array, value, fromIndex, comparator) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (comparator(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.isNaN` without support for number objects. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - */ - function baseIsNaN(value) { - return value !== value; - } - - /** - * The base implementation of `_.mean` and `_.meanBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the mean. - */ - function baseMean(array, iteratee) { - var length = array == null ? 0 : array.length; - return length ? (baseSum(array, iteratee) / length) : NAN; - } - - /** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; - } - - /** - * The base implementation of `_.propertyOf` without support for deep paths. - * - * @private - * @param {Object} object The object to query. - * @returns {Function} Returns the new accessor function. - */ - function basePropertyOf(object) { - return function(key) { - return object == null ? undefined : object[key]; - }; - } - - /** - * The base implementation of `_.reduce` and `_.reduceRight`, without support - * for iteratee shorthands, which iterates over `collection` using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} accumulator The initial value. - * @param {boolean} initAccum Specify using the first or last element of - * `collection` as the initial value. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the accumulated value. - */ - function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { - eachFunc(collection, function(value, index, collection) { - accumulator = initAccum - ? (initAccum = false, value) - : iteratee(accumulator, value, index, collection); - }); - return accumulator; - } - - /** - * The base implementation of `_.sortBy` which uses `comparer` to define the - * sort order of `array` and replaces criteria objects with their corresponding - * values. - * - * @private - * @param {Array} array The array to sort. - * @param {Function} comparer The function to define sort order. - * @returns {Array} Returns `array`. - */ - function baseSortBy(array, comparer) { - var length = array.length; - - array.sort(comparer); - while (length--) { - array[length] = array[length].value; - } - return array; - } - - /** - * The base implementation of `_.sum` and `_.sumBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the sum. - */ - function baseSum(array, iteratee) { - var result, - index = -1, - length = array.length; - - while (++index < length) { - var current = iteratee(array[index]); - if (current !== undefined) { - result = result === undefined ? current : (result + current); - } - } - return result; - } - - /** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ - function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); - - while (++index < n) { - result[index] = iteratee(index); - } - return result; - } - - /** - * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array - * of key-value pairs for `object` corresponding to the property names of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the key-value pairs. - */ - function baseToPairs(object, props) { - return arrayMap(props, function(key) { - return [key, object[key]]; - }); - } - - /** - * The base implementation of `_.trim`. - * - * @private - * @param {string} string The string to trim. - * @returns {string} Returns the trimmed string. - */ - function baseTrim(string) { - return string - ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') - : string; - } - - /** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ - function baseUnary(func) { - return function(value) { - return func(value); - }; - } - - /** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. - */ - function baseValues(object, props) { - return arrayMap(props, function(key) { - return object[key]; - }); - } - - /** - * Checks if a `cache` value for `key` exists. - * - * @private - * @param {Object} cache The cache to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function cacheHas(cache, key) { - return cache.has(key); - } - - /** - * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the first unmatched string symbol. - */ - function charsStartIndex(strSymbols, chrSymbols) { - var index = -1, - length = strSymbols.length; - - while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; - } - - /** - * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the last unmatched string symbol. - */ - function charsEndIndex(strSymbols, chrSymbols) { - var index = strSymbols.length; - - while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; - } - - /** - * Gets the number of `placeholder` occurrences in `array`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} placeholder The placeholder to search for. - * @returns {number} Returns the placeholder count. - */ - function countHolders(array, placeholder) { - var length = array.length, - result = 0; - - while (length--) { - if (array[length] === placeholder) { - ++result; - } - } - return result; - } - - /** - * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A - * letters to basic Latin letters. - * - * @private - * @param {string} letter The matched letter to deburr. - * @returns {string} Returns the deburred letter. - */ - var deburrLetter = basePropertyOf(deburredLetters); - - /** - * Used by `_.escape` to convert characters to HTML entities. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - var escapeHtmlChar = basePropertyOf(htmlEscapes); - - /** - * Used by `_.template` to escape characters for inclusion in compiled string literals. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeStringChar(chr) { - return '\\' + stringEscapes[chr]; - } - - /** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ - function getValue(object, key) { - return object == null ? undefined : object[key]; - } - - /** - * Checks if `string` contains Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a symbol is found, else `false`. - */ - function hasUnicode(string) { - return reHasUnicode.test(string); - } - - /** - * Checks if `string` contains a word composed of Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a word is found, else `false`. - */ - function hasUnicodeWord(string) { - return reHasUnicodeWord.test(string); - } - - /** - * Converts `iterator` to an array. - * - * @private - * @param {Object} iterator The iterator to convert. - * @returns {Array} Returns the converted array. - */ - function iteratorToArray(iterator) { - var data, - result = []; - - while (!(data = iterator.next()).done) { - result.push(data.value); - } - return result; - } - - /** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ - function mapToArray(map) { - var index = -1, - result = Array(map.size); - - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; - } - - /** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ - function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; - } - - /** - * Replaces all `placeholder` elements in `array` with an internal placeholder - * and returns an array of their indexes. - * - * @private - * @param {Array} array The array to modify. - * @param {*} placeholder The placeholder to replace. - * @returns {Array} Returns the new array of placeholder indexes. - */ - function replaceHolders(array, placeholder) { - var index = -1, - length = array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value === placeholder || value === PLACEHOLDER) { - array[index] = PLACEHOLDER; - result[resIndex++] = index; - } - } - return result; - } - - /** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ - function setToArray(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = value; - }); - return result; - } - - /** - * Converts `set` to its value-value pairs. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the value-value pairs. - */ - function setToPairs(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = [value, value]; - }); - return result; - } - - /** - * A specialized version of `_.indexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function strictIndexOf(array, value, fromIndex) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * A specialized version of `_.lastIndexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function strictLastIndexOf(array, value, fromIndex) { - var index = fromIndex + 1; - while (index--) { - if (array[index] === value) { - return index; - } - } - return index; - } - - /** - * Gets the number of symbols in `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the string size. - */ - function stringSize(string) { - return hasUnicode(string) - ? unicodeSize(string) - : asciiSize(string); - } - - /** - * Converts `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function stringToArray(string) { - return hasUnicode(string) - ? unicodeToArray(string) - : asciiToArray(string); - } - - /** - * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace - * character of `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the index of the last non-whitespace character. - */ - function trimmedEndIndex(string) { - var index = string.length; - - while (index-- && reWhitespace.test(string.charAt(index))) {} - return index; - } - - /** - * Used by `_.unescape` to convert HTML entities to characters. - * - * @private - * @param {string} chr The matched character to unescape. - * @returns {string} Returns the unescaped character. - */ - var unescapeHtmlChar = basePropertyOf(htmlUnescapes); - - /** - * Gets the size of a Unicode `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ - function unicodeSize(string) { - var result = reUnicode.lastIndex = 0; - while (reUnicode.test(string)) { - ++result; - } - return result; - } - - /** - * Converts a Unicode `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function unicodeToArray(string) { - return string.match(reUnicode) || []; - } - - /** - * Splits a Unicode `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ - function unicodeWords(string) { - return string.match(reUnicodeWord) || []; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Create a new pristine `lodash` function using the `context` object. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Util - * @param {Object} [context=root] The context object. - * @returns {Function} Returns a new `lodash` function. - * @example - * - * _.mixin({ 'foo': _.constant('foo') }); - * - * var lodash = _.runInContext(); - * lodash.mixin({ 'bar': lodash.constant('bar') }); - * - * _.isFunction(_.foo); - * // => true - * _.isFunction(_.bar); - * // => false - * - * lodash.isFunction(lodash.foo); - * // => false - * lodash.isFunction(lodash.bar); - * // => true - * - * // Create a suped-up `defer` in Node.js. - * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; - */ - var runInContext = (function runInContext(context) { - context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); - - /** Built-in constructor references. */ - var Array = context.Array, - Date = context.Date, - Error = context.Error, - Function = context.Function, - Math = context.Math, - Object = context.Object, - RegExp = context.RegExp, - String = context.String, - TypeError = context.TypeError; - - /** Used for built-in method references. */ - var arrayProto = Array.prototype, - funcProto = Function.prototype, - objectProto = Object.prototype; - - /** Used to detect overreaching core-js shims. */ - var coreJsData = context['__core-js_shared__']; - - /** Used to resolve the decompiled source of functions. */ - var funcToString = funcProto.toString; - - /** Used to check objects for own properties. */ - var hasOwnProperty = objectProto.hasOwnProperty; - - /** Used to generate unique IDs. */ - var idCounter = 0; - - /** Used to detect methods masquerading as native. */ - var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; - }()); - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var nativeObjectToString = objectProto.toString; - - /** Used to infer the `Object` constructor. */ - var objectCtorString = funcToString.call(Object); - - /** Used to restore the original `_` reference in `_.noConflict`. */ - var oldDash = root._; - - /** Used to detect if a method is native. */ - var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' - ); - - /** Built-in value references. */ - var Buffer = moduleExports ? context.Buffer : undefined, - Symbol = context.Symbol, - Uint8Array = context.Uint8Array, - allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, - getPrototype = overArg(Object.getPrototypeOf, Object), - objectCreate = Object.create, - propertyIsEnumerable = objectProto.propertyIsEnumerable, - splice = arrayProto.splice, - spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined, - symIterator = Symbol ? Symbol.iterator : undefined, - symToStringTag = Symbol ? Symbol.toStringTag : undefined; - - var defineProperty = (function() { - try { - var func = getNative(Object, 'defineProperty'); - func({}, '', {}); - return func; - } catch (e) {} - }()); - - /** Mocked built-ins. */ - var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, - ctxNow = Date && Date.now !== root.Date.now && Date.now, - ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeCeil = Math.ceil, - nativeFloor = Math.floor, - nativeGetSymbols = Object.getOwnPropertySymbols, - nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, - nativeIsFinite = context.isFinite, - nativeJoin = arrayProto.join, - nativeKeys = overArg(Object.keys, Object), - nativeMax = Math.max, - nativeMin = Math.min, - nativeNow = Date.now, - nativeParseInt = context.parseInt, - nativeRandom = Math.random, - nativeReverse = arrayProto.reverse; - - /* Built-in method references that are verified to be native. */ - var DataView = getNative(context, 'DataView'), - Map = getNative(context, 'Map'), - Promise = getNative(context, 'Promise'), - Set = getNative(context, 'Set'), - WeakMap = getNative(context, 'WeakMap'), - nativeCreate = getNative(Object, 'create'); - - /** Used to store function metadata. */ - var metaMap = WeakMap && new WeakMap; - - /** Used to lookup unminified function names. */ - var realNames = {}; - - /** Used to detect maps, sets, and weakmaps. */ - var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map), - promiseCtorString = toSource(Promise), - setCtorString = toSource(Set), - weakMapCtorString = toSource(WeakMap); - - /** Used to convert symbols to primitives and strings. */ - var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` object which wraps `value` to enable implicit method - * chain sequences. Methods that operate on and return arrays, collections, - * and functions can be chained together. Methods that retrieve a single value - * or may return a primitive value will automatically end the chain sequence - * and return the unwrapped value. Otherwise, the value must be unwrapped - * with `_#value`. - * - * Explicit chain sequences, which must be unwrapped with `_#value`, may be - * enabled using `_.chain`. - * - * The execution of chained methods is lazy, that is, it's deferred until - * `_#value` is implicitly or explicitly called. - * - * Lazy evaluation allows several methods to support shortcut fusion. - * Shortcut fusion is an optimization to merge iteratee calls; this avoids - * the creation of intermediate arrays and can greatly reduce the number of - * iteratee executions. Sections of a chain sequence qualify for shortcut - * fusion if the section is applied to an array and iteratees accept only - * one argument. The heuristic for whether a section qualifies for shortcut - * fusion is subject to change. - * - * Chaining is supported in custom builds as long as the `_#value` method is - * directly or indirectly included in the build. - * - * In addition to lodash methods, wrappers have `Array` and `String` methods. - * - * The wrapper `Array` methods are: - * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` - * - * The wrapper `String` methods are: - * `replace` and `split` - * - * The wrapper methods that support shortcut fusion are: - * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, - * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, - * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` - * - * The chainable wrapper methods are: - * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, - * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, - * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, - * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, - * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, - * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, - * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, - * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, - * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, - * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, - * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, - * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, - * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, - * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, - * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, - * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, - * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, - * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, - * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, - * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, - * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, - * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, - * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, - * `zipObject`, `zipObjectDeep`, and `zipWith` - * - * The wrapper methods that are **not** chainable by default are: - * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, - * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, - * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, - * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, - * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, - * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, - * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, - * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, - * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, - * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, - * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, - * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, - * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, - * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, - * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, - * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, - * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, - * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, - * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, - * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, - * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, - * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, - * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, - * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, - * `upperFirst`, `value`, and `words` - * - * @name _ - * @constructor - * @category Seq - * @param {*} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var wrapped = _([1, 2, 3]); - * - * // Returns an unwrapped value. - * wrapped.reduce(_.add); - * // => 6 - * - * // Returns a wrapped value. - * var squares = wrapped.map(square); - * - * _.isArray(squares); - * // => false - * - * _.isArray(squares.value()); - * // => true - */ - function lodash(value) { - if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { - if (value instanceof LodashWrapper) { - return value; - } - if (hasOwnProperty.call(value, '__wrapped__')) { - return wrapperClone(value); - } - } - return new LodashWrapper(value); - } - - /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} proto The object to inherit from. - * @returns {Object} Returns the new object. - */ - var baseCreate = (function() { - function object() {} - return function(proto) { - if (!isObject(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); - } - object.prototype = proto; - var result = new object; - object.prototype = undefined; - return result; - }; - }()); - - /** - * The function whose prototype chain sequence wrappers inherit from. - * - * @private - */ - function baseLodash() { - // No operation performed. - } - - /** - * The base constructor for creating `lodash` wrapper objects. - * - * @private - * @param {*} value The value to wrap. - * @param {boolean} [chainAll] Enable explicit method chain sequences. - */ - function LodashWrapper(value, chainAll) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__chain__ = !!chainAll; - this.__index__ = 0; - this.__values__ = undefined; - } - - /** - * By default, the template delimiters used by lodash are like those in - * embedded Ruby (ERB) as well as ES2015 template strings. Change the - * following template settings to use alternative delimiters. - * - * @static - * @memberOf _ - * @type {Object} - */ - lodash.templateSettings = { - - /** - * Used to detect `data` property values to be HTML-escaped. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'escape': reEscape, - - /** - * Used to detect code to be evaluated. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'evaluate': reEvaluate, - - /** - * Used to detect `data` property values to inject. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'interpolate': reInterpolate, - - /** - * Used to reference the data object in the template text. - * - * @memberOf _.templateSettings - * @type {string} - */ - 'variable': '', - - /** - * Used to import variables into the compiled template. - * - * @memberOf _.templateSettings - * @type {Object} - */ - 'imports': { - - /** - * A reference to the `lodash` function. - * - * @memberOf _.templateSettings.imports - * @type {Function} - */ - '_': lodash - } - }; - - // Ensure wrappers are instances of `baseLodash`. - lodash.prototype = baseLodash.prototype; - lodash.prototype.constructor = lodash; - - LodashWrapper.prototype = baseCreate(baseLodash.prototype); - LodashWrapper.prototype.constructor = LodashWrapper; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. - * - * @private - * @constructor - * @param {*} value The value to wrap. - */ - function LazyWrapper(value) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__dir__ = 1; - this.__filtered__ = false; - this.__iteratees__ = []; - this.__takeCount__ = MAX_ARRAY_LENGTH; - this.__views__ = []; - } - - /** - * Creates a clone of the lazy wrapper object. - * - * @private - * @name clone - * @memberOf LazyWrapper - * @returns {Object} Returns the cloned `LazyWrapper` object. - */ - function lazyClone() { - var result = new LazyWrapper(this.__wrapped__); - result.__actions__ = copyArray(this.__actions__); - result.__dir__ = this.__dir__; - result.__filtered__ = this.__filtered__; - result.__iteratees__ = copyArray(this.__iteratees__); - result.__takeCount__ = this.__takeCount__; - result.__views__ = copyArray(this.__views__); - return result; - } - - /** - * Reverses the direction of lazy iteration. - * - * @private - * @name reverse - * @memberOf LazyWrapper - * @returns {Object} Returns the new reversed `LazyWrapper` object. - */ - function lazyReverse() { - if (this.__filtered__) { - var result = new LazyWrapper(this); - result.__dir__ = -1; - result.__filtered__ = true; - } else { - result = this.clone(); - result.__dir__ *= -1; - } - return result; - } - - /** - * Extracts the unwrapped value from its lazy wrapper. - * - * @private - * @name value - * @memberOf LazyWrapper - * @returns {*} Returns the unwrapped value. - */ - function lazyValue() { - var array = this.__wrapped__.value(), - dir = this.__dir__, - isArr = isArray(array), - isRight = dir < 0, - arrLength = isArr ? array.length : 0, - view = getView(0, arrLength, this.__views__), - start = view.start, - end = view.end, - length = end - start, - index = isRight ? end : (start - 1), - iteratees = this.__iteratees__, - iterLength = iteratees.length, - resIndex = 0, - takeCount = nativeMin(length, this.__takeCount__); - - if (!isArr || (!isRight && arrLength == length && takeCount == length)) { - return baseWrapperValue(array, this.__actions__); - } - var result = []; - - outer: - while (length-- && resIndex < takeCount) { - index += dir; - - var iterIndex = -1, - value = array[index]; - - while (++iterIndex < iterLength) { - var data = iteratees[iterIndex], - iteratee = data.iteratee, - type = data.type, - computed = iteratee(value); - - if (type == LAZY_MAP_FLAG) { - value = computed; - } else if (!computed) { - if (type == LAZY_FILTER_FLAG) { - continue outer; - } else { - break outer; - } - } - } - result[resIndex++] = value; - } - return result; - } - - // Ensure `LazyWrapper` is an instance of `baseLodash`. - LazyWrapper.prototype = baseCreate(baseLodash.prototype); - LazyWrapper.prototype.constructor = LazyWrapper; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function Hash(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ - function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; - } - - /** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function hashDelete(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; - return result; - } - - /** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; - } - - /** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function hashHas(key) { - var data = this.__data__; - return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); - } - - /** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ - function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; - } - - // Add methods to `Hash`. - Hash.prototype.clear = hashClear; - Hash.prototype['delete'] = hashDelete; - Hash.prototype.get = hashGet; - Hash.prototype.has = hashHas; - Hash.prototype.set = hashSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function ListCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ - function listCacheClear() { - this.__data__ = []; - this.size = 0; - } - - /** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - --this.size; - return true; - } - - /** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; - } - - /** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; - } - - /** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ - function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; - } - - // Add methods to `ListCache`. - ListCache.prototype.clear = listCacheClear; - ListCache.prototype['delete'] = listCacheDelete; - ListCache.prototype.get = listCacheGet; - ListCache.prototype.has = listCacheHas; - ListCache.prototype.set = listCacheSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function MapCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ - function mapCacheClear() { - this.size = 0; - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; - } - - /** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function mapCacheDelete(key) { - var result = getMapData(this, key)['delete'](key); - this.size -= result ? 1 : 0; - return result; - } - - /** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function mapCacheGet(key) { - return getMapData(this, key).get(key); - } - - /** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function mapCacheHas(key) { - return getMapData(this, key).has(key); - } - - /** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ - function mapCacheSet(key, value) { - var data = getMapData(this, key), - size = data.size; - - data.set(key, value); - this.size += data.size == size ? 0 : 1; - return this; - } - - // Add methods to `MapCache`. - MapCache.prototype.clear = mapCacheClear; - MapCache.prototype['delete'] = mapCacheDelete; - MapCache.prototype.get = mapCacheGet; - MapCache.prototype.has = mapCacheHas; - MapCache.prototype.set = mapCacheSet; - - /*------------------------------------------------------------------------*/ - - /** - * - * Creates an array cache object to store unique values. - * - * @private - * @constructor - * @param {Array} [values] The values to cache. - */ - function SetCache(values) { - var index = -1, - length = values == null ? 0 : values.length; - - this.__data__ = new MapCache; - while (++index < length) { - this.add(values[index]); - } - } - - /** - * Adds `value` to the array cache. - * - * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. - */ - function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; - } - - /** - * Checks if `value` is in the array cache. - * - * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. - */ - function setCacheHas(value) { - return this.__data__.has(value); - } - - // Add methods to `SetCache`. - SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; - SetCache.prototype.has = setCacheHas; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a stack cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function Stack(entries) { - var data = this.__data__ = new ListCache(entries); - this.size = data.size; - } - - /** - * Removes all key-value entries from the stack. - * - * @private - * @name clear - * @memberOf Stack - */ - function stackClear() { - this.__data__ = new ListCache; - this.size = 0; - } - - /** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function stackDelete(key) { - var data = this.__data__, - result = data['delete'](key); - - this.size = data.size; - return result; - } - - /** - * Gets the stack value for `key`. - * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function stackGet(key) { - return this.__data__.get(key); - } - - /** - * Checks if a stack value for `key` exists. - * - * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function stackHas(key) { - return this.__data__.has(key); - } - - /** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. - */ - function stackSet(key, value) { - var data = this.__data__; - if (data instanceof ListCache) { - var pairs = data.__data__; - if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - this.size = ++data.size; - return this; - } - data = this.__data__ = new MapCache(pairs); - } - data.set(key, value); - this.size = data.size; - return this; - } - - // Add methods to `Stack`. - Stack.prototype.clear = stackClear; - Stack.prototype['delete'] = stackDelete; - Stack.prototype.get = stackGet; - Stack.prototype.has = stackHas; - Stack.prototype.set = stackSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ - function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), - isArg = !isArr && isArguments(value), - isBuff = !isArr && !isArg && isBuffer(value), - isType = !isArr && !isArg && !isBuff && isTypedArray(value), - skipIndexes = isArr || isArg || isBuff || isType, - result = skipIndexes ? baseTimes(value.length, String) : [], - length = result.length; - - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && ( - // Safari 9 has enumerable `arguments.length` in strict mode. - key == 'length' || - // Node.js 0.10 has enumerable non-index properties on buffers. - (isBuff && (key == 'offset' || key == 'parent')) || - // PhantomJS 2 has enumerable non-index properties on typed arrays. - (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || - // Skip index properties. - isIndex(key, length) - ))) { - result.push(key); - } - } - return result; - } - - /** - * A specialized version of `_.sample` for arrays. - * - * @private - * @param {Array} array The array to sample. - * @returns {*} Returns the random element. - */ - function arraySample(array) { - var length = array.length; - return length ? array[baseRandom(0, length - 1)] : undefined; - } - - /** - * A specialized version of `_.sampleSize` for arrays. - * - * @private - * @param {Array} array The array to sample. - * @param {number} n The number of elements to sample. - * @returns {Array} Returns the random elements. - */ - function arraySampleSize(array, n) { - return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); - } - - /** - * A specialized version of `_.shuffle` for arrays. - * - * @private - * @param {Array} array The array to shuffle. - * @returns {Array} Returns the new shuffled array. - */ - function arrayShuffle(array) { - return shuffleSelf(copyArray(array)); - } - - /** - * This function is like `assignValue` except that it doesn't assign - * `undefined` values. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignMergeValue(object, key, value) { - if ((value !== undefined && !eq(object[key], value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } - } - - /** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } - } - - /** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; - } - - /** - * Aggregates elements of `collection` on `accumulator` with keys transformed - * by `iteratee` and values set by `setter`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ - function baseAggregator(collection, setter, iteratee, accumulator) { - baseEach(collection, function(value, key, collection) { - setter(accumulator, value, iteratee(value), collection); - }); - return accumulator; - } - - /** - * The base implementation of `_.assign` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ - function baseAssign(object, source) { - return object && copyObject(source, keys(source), object); - } - - /** - * The base implementation of `_.assignIn` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ - function baseAssignIn(object, source) { - return object && copyObject(source, keysIn(source), object); - } - - /** - * The base implementation of `assignValue` and `assignMergeValue` without - * value checks. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function baseAssignValue(object, key, value) { - if (key == '__proto__' && defineProperty) { - defineProperty(object, key, { - 'configurable': true, - 'enumerable': true, - 'value': value, - 'writable': true - }); - } else { - object[key] = value; - } - } - - /** - * The base implementation of `_.at` without support for individual paths. - * - * @private - * @param {Object} object The object to iterate over. - * @param {string[]} paths The property paths to pick. - * @returns {Array} Returns the picked elements. - */ - function baseAt(object, paths) { - var index = -1, - length = paths.length, - result = Array(length), - skip = object == null; - - while (++index < length) { - result[index] = skip ? undefined : get(object, paths[index]); - } - return result; - } - - /** - * The base implementation of `_.clamp` which doesn't coerce arguments. - * - * @private - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. - */ - function baseClamp(number, lower, upper) { - if (number === number) { - if (upper !== undefined) { - number = number <= upper ? number : upper; - } - if (lower !== undefined) { - number = number >= lower ? number : lower; - } - } - return number; - } - - /** - * The base implementation of `_.clone` and `_.cloneDeep` which tracks - * traversed objects. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} bitmask The bitmask flags. - * 1 - Deep clone - * 2 - Flatten inherited properties - * 4 - Clone symbols - * @param {Function} [customizer] The function to customize cloning. - * @param {string} [key] The key of `value`. - * @param {Object} [object] The parent object of `value`. - * @param {Object} [stack] Tracks traversed objects and their clone counterparts. - * @returns {*} Returns the cloned value. - */ - function baseClone(value, bitmask, customizer, key, object, stack) { - var result, - isDeep = bitmask & CLONE_DEEP_FLAG, - isFlat = bitmask & CLONE_FLAT_FLAG, - isFull = bitmask & CLONE_SYMBOLS_FLAG; - - if (customizer) { - result = object ? customizer(value, key, object, stack) : customizer(value); - } - if (result !== undefined) { - return result; - } - if (!isObject(value)) { - return value; - } - var isArr = isArray(value); - if (isArr) { - result = initCloneArray(value); - if (!isDeep) { - return copyArray(value, result); - } - } else { - var tag = getTag(value), - isFunc = tag == funcTag || tag == genTag; - - if (isBuffer(value)) { - return cloneBuffer(value, isDeep); - } - if (tag == objectTag || tag == argsTag || (isFunc && !object)) { - result = (isFlat || isFunc) ? {} : initCloneObject(value); - if (!isDeep) { - return isFlat - ? copySymbolsIn(value, baseAssignIn(result, value)) - : copySymbols(value, baseAssign(result, value)); - } - } else { - if (!cloneableTags[tag]) { - return object ? value : {}; - } - result = initCloneByTag(value, tag, isDeep); - } - } - // Check for circular references and return its corresponding clone. - stack || (stack = new Stack); - var stacked = stack.get(value); - if (stacked) { - return stacked; - } - stack.set(value, result); - - if (isSet(value)) { - value.forEach(function(subValue) { - result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); - }); - } else if (isMap(value)) { - value.forEach(function(subValue, key) { - result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - } - - var keysFunc = isFull - ? (isFlat ? getAllKeysIn : getAllKeys) - : (isFlat ? keysIn : keys); - - var props = isArr ? undefined : keysFunc(value); - arrayEach(props || value, function(subValue, key) { - if (props) { - key = subValue; - subValue = value[key]; - } - // Recursively populate clone (susceptible to call stack limits). - assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - return result; - } - - /** - * The base implementation of `_.conforms` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property predicates to conform to. - * @returns {Function} Returns the new spec function. - */ - function baseConforms(source) { - var props = keys(source); - return function(object) { - return baseConformsTo(object, source, props); - }; - } - - /** - * The base implementation of `_.conformsTo` which accepts `props` to check. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - */ - function baseConformsTo(object, source, props) { - var length = props.length; - if (object == null) { - return !length; - } - object = Object(object); - while (length--) { - var key = props[length], - predicate = source[key], - value = object[key]; - - if ((value === undefined && !(key in object)) || !predicate(value)) { - return false; - } - } - return true; - } - - /** - * The base implementation of `_.delay` and `_.defer` which accepts `args` - * to provide to `func`. - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {Array} args The arguments to provide to `func`. - * @returns {number|Object} Returns the timer id or timeout object. - */ - function baseDelay(func, wait, args) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return setTimeout(function() { func.apply(undefined, args); }, wait); - } - - /** - * The base implementation of methods like `_.difference` without support - * for excluding multiple arrays or iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Array} values The values to exclude. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - */ - function baseDifference(array, values, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - isCommon = true, - length = array.length, - result = [], - valuesLength = values.length; - - if (!length) { - return result; - } - if (iteratee) { - values = arrayMap(values, baseUnary(iteratee)); - } - if (comparator) { - includes = arrayIncludesWith; - isCommon = false; - } - else if (values.length >= LARGE_ARRAY_SIZE) { - includes = cacheHas; - isCommon = false; - values = new SetCache(values); - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee == null ? value : iteratee(value); - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var valuesIndex = valuesLength; - while (valuesIndex--) { - if (values[valuesIndex] === computed) { - continue outer; - } - } - result.push(value); - } - else if (!includes(values, computed, comparator)) { - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.forEach` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ - var baseEach = createBaseEach(baseForOwn); - - /** - * The base implementation of `_.forEachRight` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ - var baseEachRight = createBaseEach(baseForOwnRight, true); - - /** - * The base implementation of `_.every` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false` - */ - function baseEvery(collection, predicate) { - var result = true; - baseEach(collection, function(value, index, collection) { - result = !!predicate(value, index, collection); - return result; - }); - return result; - } - - /** - * The base implementation of methods like `_.max` and `_.min` which accepts a - * `comparator` to determine the extremum value. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The iteratee invoked per iteration. - * @param {Function} comparator The comparator used to compare values. - * @returns {*} Returns the extremum value. - */ - function baseExtremum(array, iteratee, comparator) { - var index = -1, - length = array.length; - - while (++index < length) { - var value = array[index], - current = iteratee(value); - - if (current != null && (computed === undefined - ? (current === current && !isSymbol(current)) - : comparator(current, computed) - )) { - var computed = current, - result = value; - } - } - return result; - } - - /** - * The base implementation of `_.fill` without an iteratee call guard. - * - * @private - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - */ - function baseFill(array, value, start, end) { - var length = array.length; - - start = toInteger(start); - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = (end === undefined || end > length) ? length : toInteger(end); - if (end < 0) { - end += length; - } - end = start > end ? 0 : toLength(end); - while (start < end) { - array[start++] = value; - } - return array; - } - - /** - * The base implementation of `_.filter` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function baseFilter(collection, predicate) { - var result = []; - baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result.push(value); - } - }); - return result; - } - - /** - * The base implementation of `_.flatten` with support for restricting flattening. - * - * @private - * @param {Array} array The array to flatten. - * @param {number} depth The maximum recursion depth. - * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. - * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. - * @param {Array} [result=[]] The initial result value. - * @returns {Array} Returns the new flattened array. - */ - function baseFlatten(array, depth, predicate, isStrict, result) { - var index = -1, - length = array.length; - - predicate || (predicate = isFlattenable); - result || (result = []); - - while (++index < length) { - var value = array[index]; - if (depth > 0 && predicate(value)) { - if (depth > 1) { - // Recursively flatten arrays (susceptible to call stack limits). - baseFlatten(value, depth - 1, predicate, isStrict, result); - } else { - arrayPush(result, value); - } - } else if (!isStrict) { - result[result.length] = value; - } - } - return result; - } - - /** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseFor = createBaseFor(); - - /** - * This function is like `baseFor` except that it iterates over properties - * in the opposite order. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseForRight = createBaseFor(true); - - /** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); - } - - /** - * The base implementation of `_.forOwnRight` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwnRight(object, iteratee) { - return object && baseForRight(object, iteratee, keys); - } - - /** - * The base implementation of `_.functions` which creates an array of - * `object` function property names filtered from `props`. - * - * @private - * @param {Object} object The object to inspect. - * @param {Array} props The property names to filter. - * @returns {Array} Returns the function names. - */ - function baseFunctions(object, props) { - return arrayFilter(props, function(key) { - return isFunction(object[key]); - }); - } - - /** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ - function baseGet(object, path) { - path = castPath(path, object); - - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[toKey(path[index++])]; - } - return (index && index == length) ? object : undefined; - } - - /** - * The base implementation of `getAllKeys` and `getAllKeysIn` which uses - * `keysFunc` and `symbolsFunc` to get the enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Function} keysFunc The function to get the keys of `object`. - * @param {Function} symbolsFunc The function to get the symbols of `object`. - * @returns {Array} Returns the array of property names and symbols. - */ - function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result = keysFunc(object); - return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); - } - - /** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; - } - return (symToStringTag && symToStringTag in Object(value)) - ? getRawTag(value) - : objectToString(value); - } - - /** - * The base implementation of `_.gt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - */ - function baseGt(value, other) { - return value > other; - } - - /** - * The base implementation of `_.has` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ - function baseHas(object, key) { - return object != null && hasOwnProperty.call(object, key); - } - - /** - * The base implementation of `_.hasIn` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ - function baseHasIn(object, key) { - return object != null && key in Object(object); - } - - /** - * The base implementation of `_.inRange` which doesn't coerce arguments. - * - * @private - * @param {number} number The number to check. - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `number` is in the range, else `false`. - */ - function baseInRange(number, start, end) { - return number >= nativeMin(start, end) && number < nativeMax(start, end); - } - - /** - * The base implementation of methods like `_.intersection`, without support - * for iteratee shorthands, that accepts an array of arrays to inspect. - * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of shared values. - */ - function baseIntersection(arrays, iteratee, comparator) { - var includes = comparator ? arrayIncludesWith : arrayIncludes, - length = arrays[0].length, - othLength = arrays.length, - othIndex = othLength, - caches = Array(othLength), - maxLength = Infinity, - result = []; - - while (othIndex--) { - var array = arrays[othIndex]; - if (othIndex && iteratee) { - array = arrayMap(array, baseUnary(iteratee)); - } - maxLength = nativeMin(array.length, maxLength); - caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) - ? new SetCache(othIndex && array) - : undefined; - } - array = arrays[0]; - - var index = -1, - seen = caches[0]; - - outer: - while (++index < length && result.length < maxLength) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (!(seen - ? cacheHas(seen, computed) - : includes(result, computed, comparator) - )) { - othIndex = othLength; - while (--othIndex) { - var cache = caches[othIndex]; - if (!(cache - ? cacheHas(cache, computed) - : includes(arrays[othIndex], computed, comparator)) - ) { - continue outer; - } - } - if (seen) { - seen.push(computed); - } - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.invert` and `_.invertBy` which inverts - * `object` with values transformed by `iteratee` and set by `setter`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform values. - * @param {Object} accumulator The initial inverted object. - * @returns {Function} Returns `accumulator`. - */ - function baseInverter(object, setter, iteratee, accumulator) { - baseForOwn(object, function(value, key, object) { - setter(accumulator, iteratee(value), key, object); - }); - return accumulator; - } - - /** - * The base implementation of `_.invoke` without support for individual - * method arguments. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the method to invoke. - * @param {Array} args The arguments to invoke the method with. - * @returns {*} Returns the result of the invoked method. - */ - function baseInvoke(object, path, args) { - path = castPath(path, object); - object = parent(object, path); - var func = object == null ? object : object[toKey(last(path))]; - return func == null ? undefined : apply(func, object, args); - } - - /** - * The base implementation of `_.isArguments`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - */ - function baseIsArguments(value) { - return isObjectLike(value) && baseGetTag(value) == argsTag; - } - - /** - * The base implementation of `_.isArrayBuffer` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. - */ - function baseIsArrayBuffer(value) { - return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; - } - - /** - * The base implementation of `_.isDate` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - */ - function baseIsDate(value) { - return isObjectLike(value) && baseGetTag(value) == dateTag; - } - - /** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {boolean} bitmask The bitmask flags. - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Function} [customizer] The function to customize comparisons. - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ - function baseIsEqual(value, other, bitmask, customizer, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); - } - - /** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = objIsArr ? arrayTag : getTag(object), - othTag = othIsArr ? arrayTag : getTag(other); - - objTag = objTag == argsTag ? objectTag : objTag; - othTag = othTag == argsTag ? objectTag : othTag; - - var objIsObj = objTag == objectTag, - othIsObj = othTag == objectTag, - isSameTag = objTag == othTag; - - if (isSameTag && isBuffer(object)) { - if (!isBuffer(other)) { - return false; - } - objIsArr = true; - objIsObj = false; - } - if (isSameTag && !objIsObj) { - stack || (stack = new Stack); - return (objIsArr || isTypedArray(object)) - ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) - : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); - } - if (!(bitmask & COMPARE_PARTIAL_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; - - stack || (stack = new Stack); - return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); - } - } - if (!isSameTag) { - return false; - } - stack || (stack = new Stack); - return equalObjects(object, other, bitmask, customizer, equalFunc, stack); - } - - /** - * The base implementation of `_.isMap` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - */ - function baseIsMap(value) { - return isObjectLike(value) && getTag(value) == mapTag; - } - - /** - * The base implementation of `_.isMatch` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Array} matchData The property names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - */ - function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; - - if (object == null) { - return !length; - } - object = Object(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; - } - } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; - - if (noCustomizer && data[2]) { - if (objValue === undefined && !(key in object)) { - return false; - } - } else { - var stack = new Stack; - if (customizer) { - var result = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result === undefined - ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) - : result - )) { - return false; - } - } - } - return true; - } - - /** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ - function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); - } - - /** - * The base implementation of `_.isRegExp` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - */ - function baseIsRegExp(value) { - return isObjectLike(value) && baseGetTag(value) == regexpTag; - } - - /** - * The base implementation of `_.isSet` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - */ - function baseIsSet(value) { - return isObjectLike(value) && getTag(value) == setTag; - } - - /** - * The base implementation of `_.isTypedArray` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - */ - function baseIsTypedArray(value) { - return isObjectLike(value) && - isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; - } - - /** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ - function baseIteratee(value) { - // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. - // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. - if (typeof value == 'function') { - return value; - } - if (value == null) { - return identity; - } - if (typeof value == 'object') { - return isArray(value) - ? baseMatchesProperty(value[0], value[1]) - : baseMatches(value); - } - return property(value); - } - - /** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; - } - - /** - * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeysIn(object) { - if (!isObject(object)) { - return nativeKeysIn(object); - } - var isProto = isPrototype(object), - result = []; - - for (var key in object) { - if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; - } - - /** - * The base implementation of `_.lt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - */ - function baseLt(value, other) { - return value < other; - } - - /** - * The base implementation of `_.map` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function baseMap(collection, iteratee) { - var index = -1, - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value, key, collection) { - result[++index] = iteratee(value, key, collection); - }); - return result; - } - - /** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - */ - function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable(matchData[0][0], matchData[0][1]); - } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); - }; - } - - /** - * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. - * - * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ - function baseMatchesProperty(path, srcValue) { - if (isKey(path) && isStrictComparable(srcValue)) { - return matchesStrictComparable(toKey(path), srcValue); - } - return function(object) { - var objValue = get(object, path); - return (objValue === undefined && objValue === srcValue) - ? hasIn(object, path) - : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); - }; - } - - /** - * The base implementation of `_.merge` without support for multiple sources. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {number} srcIndex The index of `source`. - * @param {Function} [customizer] The function to customize merged values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ - function baseMerge(object, source, srcIndex, customizer, stack) { - if (object === source) { - return; - } - baseFor(source, function(srcValue, key) { - stack || (stack = new Stack); - if (isObject(srcValue)) { - baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); - } - else { - var newValue = customizer - ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) - : undefined; - - if (newValue === undefined) { - newValue = srcValue; - } - assignMergeValue(object, key, newValue); - } - }, keysIn); - } - - /** - * A specialized version of `baseMerge` for arrays and objects which performs - * deep merges and tracks traversed objects enabling objects with circular - * references to be merged. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {string} key The key of the value to merge. - * @param {number} srcIndex The index of `source`. - * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize assigned values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ - function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { - var objValue = safeGet(object, key), - srcValue = safeGet(source, key), - stacked = stack.get(srcValue); - - if (stacked) { - assignMergeValue(object, key, stacked); - return; - } - var newValue = customizer - ? customizer(objValue, srcValue, (key + ''), object, source, stack) - : undefined; - - var isCommon = newValue === undefined; - - if (isCommon) { - var isArr = isArray(srcValue), - isBuff = !isArr && isBuffer(srcValue), - isTyped = !isArr && !isBuff && isTypedArray(srcValue); - - newValue = srcValue; - if (isArr || isBuff || isTyped) { - if (isArray(objValue)) { - newValue = objValue; - } - else if (isArrayLikeObject(objValue)) { - newValue = copyArray(objValue); - } - else if (isBuff) { - isCommon = false; - newValue = cloneBuffer(srcValue, true); - } - else if (isTyped) { - isCommon = false; - newValue = cloneTypedArray(srcValue, true); - } - else { - newValue = []; - } - } - else if (isPlainObject(srcValue) || isArguments(srcValue)) { - newValue = objValue; - if (isArguments(objValue)) { - newValue = toPlainObject(objValue); - } - else if (!isObject(objValue) || isFunction(objValue)) { - newValue = initCloneObject(srcValue); - } - } - else { - isCommon = false; - } - } - if (isCommon) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack['delete'](srcValue); - } - assignMergeValue(object, key, newValue); - } - - /** - * The base implementation of `_.nth` which doesn't coerce arguments. - * - * @private - * @param {Array} array The array to query. - * @param {number} n The index of the element to return. - * @returns {*} Returns the nth element of `array`. - */ - function baseNth(array, n) { - var length = array.length; - if (!length) { - return; - } - n += n < 0 ? length : 0; - return isIndex(n, length) ? array[n] : undefined; - } - - /** - * The base implementation of `_.orderBy` without param guards. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. - * @param {string[]} orders The sort orders of `iteratees`. - * @returns {Array} Returns the new sorted array. - */ - function baseOrderBy(collection, iteratees, orders) { - if (iteratees.length) { - iteratees = arrayMap(iteratees, function(iteratee) { - if (isArray(iteratee)) { - return function(value) { - return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); - } - } - return iteratee; - }); - } else { - iteratees = [identity]; - } - - var index = -1; - iteratees = arrayMap(iteratees, baseUnary(getIteratee())); - - var result = baseMap(collection, function(value, key, collection) { - var criteria = arrayMap(iteratees, function(iteratee) { - return iteratee(value); - }); - return { 'criteria': criteria, 'index': ++index, 'value': value }; - }); - - return baseSortBy(result, function(object, other) { - return compareMultiple(object, other, orders); - }); - } - - /** - * The base implementation of `_.pick` without support for individual - * property identifiers. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @returns {Object} Returns the new object. - */ - function basePick(object, paths) { - return basePickBy(object, paths, function(value, path) { - return hasIn(object, path); - }); - } - - /** - * The base implementation of `_.pickBy` without support for iteratee shorthands. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @param {Function} predicate The function invoked per property. - * @returns {Object} Returns the new object. - */ - function basePickBy(object, paths, predicate) { - var index = -1, - length = paths.length, - result = {}; - - while (++index < length) { - var path = paths[index], - value = baseGet(object, path); - - if (predicate(value, path)) { - baseSet(result, castPath(path, object), value); - } - } - return result; - } - - /** - * A specialized version of `baseProperty` which supports deep paths. - * - * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function basePropertyDeep(path) { - return function(object) { - return baseGet(object, path); - }; - } - - /** - * The base implementation of `_.pullAllBy` without support for iteratee - * shorthands. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns `array`. - */ - function basePullAll(array, values, iteratee, comparator) { - var indexOf = comparator ? baseIndexOfWith : baseIndexOf, - index = -1, - length = values.length, - seen = array; - - if (array === values) { - values = copyArray(values); - } - if (iteratee) { - seen = arrayMap(array, baseUnary(iteratee)); - } - while (++index < length) { - var fromIndex = 0, - value = values[index], - computed = iteratee ? iteratee(value) : value; - - while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { - if (seen !== array) { - splice.call(seen, fromIndex, 1); - } - splice.call(array, fromIndex, 1); - } - } - return array; - } - - /** - * The base implementation of `_.pullAt` without support for individual - * indexes or capturing the removed elements. - * - * @private - * @param {Array} array The array to modify. - * @param {number[]} indexes The indexes of elements to remove. - * @returns {Array} Returns `array`. - */ - function basePullAt(array, indexes) { - var length = array ? indexes.length : 0, - lastIndex = length - 1; - - while (length--) { - var index = indexes[length]; - if (length == lastIndex || index !== previous) { - var previous = index; - if (isIndex(index)) { - splice.call(array, index, 1); - } else { - baseUnset(array, index); - } - } - } - return array; - } - - /** - * The base implementation of `_.random` without support for returning - * floating-point numbers. - * - * @private - * @param {number} lower The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the random number. - */ - function baseRandom(lower, upper) { - return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); - } - - /** - * The base implementation of `_.range` and `_.rangeRight` which doesn't - * coerce arguments. - * - * @private - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @param {number} step The value to increment or decrement by. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the range of numbers. - */ - function baseRange(start, end, step, fromRight) { - var index = -1, - length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), - result = Array(length); - - while (length--) { - result[fromRight ? length : ++index] = start; - start += step; - } - return result; - } - - /** - * The base implementation of `_.repeat` which doesn't coerce arguments. - * - * @private - * @param {string} string The string to repeat. - * @param {number} n The number of times to repeat the string. - * @returns {string} Returns the repeated string. - */ - function baseRepeat(string, n) { - var result = ''; - if (!string || n < 1 || n > MAX_SAFE_INTEGER) { - return result; - } - // Leverage the exponentiation by squaring algorithm for a faster repeat. - // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. - do { - if (n % 2) { - result += string; - } - n = nativeFloor(n / 2); - if (n) { - string += string; - } - } while (n); - - return result; - } - - /** - * The base implementation of `_.rest` which doesn't validate or coerce arguments. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - */ - function baseRest(func, start) { - return setToString(overRest(func, start, identity), func + ''); - } - - /** - * The base implementation of `_.sample`. - * - * @private - * @param {Array|Object} collection The collection to sample. - * @returns {*} Returns the random element. - */ - function baseSample(collection) { - return arraySample(values(collection)); - } - - /** - * The base implementation of `_.sampleSize` without param guards. - * - * @private - * @param {Array|Object} collection The collection to sample. - * @param {number} n The number of elements to sample. - * @returns {Array} Returns the random elements. - */ - function baseSampleSize(collection, n) { - var array = values(collection); - return shuffleSelf(array, baseClamp(n, 0, array.length)); - } - - /** - * The base implementation of `_.set`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ - function baseSet(object, path, value, customizer) { - if (!isObject(object)) { - return object; - } - path = castPath(path, object); - - var index = -1, - length = path.length, - lastIndex = length - 1, - nested = object; - - while (nested != null && ++index < length) { - var key = toKey(path[index]), - newValue = value; - - if (key === '__proto__' || key === 'constructor' || key === 'prototype') { - return object; - } - - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined; - if (newValue === undefined) { - newValue = isObject(objValue) - ? objValue - : (isIndex(path[index + 1]) ? [] : {}); - } - } - assignValue(nested, key, newValue); - nested = nested[key]; - } - return object; - } - - /** - * The base implementation of `setData` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ - var baseSetData = !metaMap ? identity : function(func, data) { - metaMap.set(func, data); - return func; - }; - - /** - * The base implementation of `setToString` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ - var baseSetToString = !defineProperty ? identity : function(func, string) { - return defineProperty(func, 'toString', { - 'configurable': true, - 'enumerable': false, - 'value': constant(string), - 'writable': true - }); - }; - - /** - * The base implementation of `_.shuffle`. - * - * @private - * @param {Array|Object} collection The collection to shuffle. - * @returns {Array} Returns the new shuffled array. - */ - function baseShuffle(collection) { - return shuffleSelf(values(collection)); - } - - /** - * The base implementation of `_.slice` without an iteratee call guard. - * - * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; - } - return result; - } - - /** - * The base implementation of `_.some` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function baseSome(collection, predicate) { - var result; - - baseEach(collection, function(value, index, collection) { - result = predicate(value, index, collection); - return !result; - }); - return !!result; - } - - /** - * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which - * performs a binary search of `array` to determine the index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ - function baseSortedIndex(array, value, retHighest) { - var low = 0, - high = array == null ? low : array.length; - - if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { - while (low < high) { - var mid = (low + high) >>> 1, - computed = array[mid]; - - if (computed !== null && !isSymbol(computed) && - (retHighest ? (computed <= value) : (computed < value))) { - low = mid + 1; - } else { - high = mid; - } - } - return high; - } - return baseSortedIndexBy(array, value, identity, retHighest); - } - - /** - * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` - * which invokes `iteratee` for `value` and each element of `array` to compute - * their sort ranking. The iteratee is invoked with one argument; (value). - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} iteratee The iteratee invoked per element. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ - function baseSortedIndexBy(array, value, iteratee, retHighest) { - var low = 0, - high = array == null ? 0 : array.length; - if (high === 0) { - return 0; - } - - value = iteratee(value); - var valIsNaN = value !== value, - valIsNull = value === null, - valIsSymbol = isSymbol(value), - valIsUndefined = value === undefined; - - while (low < high) { - var mid = nativeFloor((low + high) / 2), - computed = iteratee(array[mid]), - othIsDefined = computed !== undefined, - othIsNull = computed === null, - othIsReflexive = computed === computed, - othIsSymbol = isSymbol(computed); - - if (valIsNaN) { - var setLow = retHighest || othIsReflexive; - } else if (valIsUndefined) { - setLow = othIsReflexive && (retHighest || othIsDefined); - } else if (valIsNull) { - setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); - } else if (valIsSymbol) { - setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); - } else if (othIsNull || othIsSymbol) { - setLow = false; - } else { - setLow = retHighest ? (computed <= value) : (computed < value); - } - if (setLow) { - low = mid + 1; - } else { - high = mid; - } - } - return nativeMin(high, MAX_ARRAY_INDEX); - } - - /** - * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ - function baseSortedUniq(array, iteratee) { - var index = -1, - length = array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - if (!index || !eq(computed, seen)) { - var seen = computed; - result[resIndex++] = value === 0 ? 0 : value; - } - } - return result; - } - - /** - * The base implementation of `_.toNumber` which doesn't ensure correct - * conversions of binary, hexadecimal, or octal string values. - * - * @private - * @param {*} value The value to process. - * @returns {number} Returns the number. - */ - function baseToNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - return +value; - } - - /** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ - function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isArray(value)) { - // Recursively convert values (susceptible to call stack limits). - return arrayMap(value, baseToString) + ''; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; - } - - /** - * The base implementation of `_.uniqBy` without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ - function baseUniq(array, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - length = array.length, - isCommon = true, - result = [], - seen = result; - - if (comparator) { - isCommon = false; - includes = arrayIncludesWith; - } - else if (length >= LARGE_ARRAY_SIZE) { - var set = iteratee ? null : createSet(array); - if (set) { - return setToArray(set); - } - isCommon = false; - includes = cacheHas; - seen = new SetCache; - } - else { - seen = iteratee ? [] : result; - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; - } - } - if (iteratee) { - seen.push(computed); - } - result.push(value); - } - else if (!includes(seen, computed, comparator)) { - if (seen !== result) { - seen.push(computed); - } - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.unset`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The property path to unset. - * @returns {boolean} Returns `true` if the property is deleted, else `false`. - */ - function baseUnset(object, path) { - path = castPath(path, object); - object = parent(object, path); - return object == null || delete object[toKey(last(path))]; - } - - /** - * The base implementation of `_.update`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to update. - * @param {Function} updater The function to produce the updated value. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ - function baseUpdate(object, path, updater, customizer) { - return baseSet(object, path, updater(baseGet(object, path)), customizer); - } - - /** - * The base implementation of methods like `_.dropWhile` and `_.takeWhile` - * without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to query. - * @param {Function} predicate The function invoked per iteration. - * @param {boolean} [isDrop] Specify dropping elements instead of taking them. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the slice of `array`. - */ - function baseWhile(array, predicate, isDrop, fromRight) { - var length = array.length, - index = fromRight ? length : -1; - - while ((fromRight ? index-- : ++index < length) && - predicate(array[index], index, array)) {} - - return isDrop - ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) - : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); - } - - /** - * The base implementation of `wrapperValue` which returns the result of - * performing a sequence of actions on the unwrapped `value`, where each - * successive action is supplied the return value of the previous. - * - * @private - * @param {*} value The unwrapped value. - * @param {Array} actions Actions to perform to resolve the unwrapped value. - * @returns {*} Returns the resolved value. - */ - function baseWrapperValue(value, actions) { - var result = value; - if (result instanceof LazyWrapper) { - result = result.value(); - } - return arrayReduce(actions, function(result, action) { - return action.func.apply(action.thisArg, arrayPush([result], action.args)); - }, result); - } - - /** - * The base implementation of methods like `_.xor`, without support for - * iteratee shorthands, that accepts an array of arrays to inspect. - * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of values. - */ - function baseXor(arrays, iteratee, comparator) { - var length = arrays.length; - if (length < 2) { - return length ? baseUniq(arrays[0]) : []; - } - var index = -1, - result = Array(length); - - while (++index < length) { - var array = arrays[index], - othIndex = -1; - - while (++othIndex < length) { - if (othIndex != index) { - result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); - } - } - } - return baseUniq(baseFlatten(result, 1), iteratee, comparator); - } - - /** - * This base implementation of `_.zipObject` which assigns values using `assignFunc`. - * - * @private - * @param {Array} props The property identifiers. - * @param {Array} values The property values. - * @param {Function} assignFunc The function to assign values. - * @returns {Object} Returns the new object. - */ - function baseZipObject(props, values, assignFunc) { - var index = -1, - length = props.length, - valsLength = values.length, - result = {}; - - while (++index < length) { - var value = index < valsLength ? values[index] : undefined; - assignFunc(result, props[index], value); - } - return result; - } - - /** - * Casts `value` to an empty array if it's not an array like object. - * - * @private - * @param {*} value The value to inspect. - * @returns {Array|Object} Returns the cast array-like object. - */ - function castArrayLikeObject(value) { - return isArrayLikeObject(value) ? value : []; - } - - /** - * Casts `value` to `identity` if it's not a function. - * - * @private - * @param {*} value The value to inspect. - * @returns {Function} Returns cast function. - */ - function castFunction(value) { - return typeof value == 'function' ? value : identity; - } - - /** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @param {Object} [object] The object to query keys on. - * @returns {Array} Returns the cast property path array. - */ - function castPath(value, object) { - if (isArray(value)) { - return value; - } - return isKey(value, object) ? [value] : stringToPath(toString(value)); - } - - /** - * A `baseRest` alias which can be replaced with `identity` by module - * replacement plugins. - * - * @private - * @type {Function} - * @param {Function} func The function to apply a rest parameter to. - * @returns {Function} Returns the new function. - */ - var castRest = baseRest; - - /** - * Casts `array` to a slice if it's needed. - * - * @private - * @param {Array} array The array to inspect. - * @param {number} start The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the cast slice. - */ - function castSlice(array, start, end) { - var length = array.length; - end = end === undefined ? length : end; - return (!start && end >= length) ? array : baseSlice(array, start, end); - } - - /** - * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). - * - * @private - * @param {number|Object} id The timer id or timeout object of the timer to clear. - */ - var clearTimeout = ctxClearTimeout || function(id) { - return root.clearTimeout(id); - }; - - /** - * Creates a clone of `buffer`. - * - * @private - * @param {Buffer} buffer The buffer to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Buffer} Returns the cloned buffer. - */ - function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var length = buffer.length, - result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); - - buffer.copy(result); - return result; - } - - /** - * Creates a clone of `arrayBuffer`. - * - * @private - * @param {ArrayBuffer} arrayBuffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. - */ - function cloneArrayBuffer(arrayBuffer) { - var result = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array(result).set(new Uint8Array(arrayBuffer)); - return result; - } - - /** - * Creates a clone of `dataView`. - * - * @private - * @param {Object} dataView The data view to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned data view. - */ - function cloneDataView(dataView, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; - return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); - } - - /** - * Creates a clone of `regexp`. - * - * @private - * @param {Object} regexp The regexp to clone. - * @returns {Object} Returns the cloned regexp. - */ - function cloneRegExp(regexp) { - var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); - result.lastIndex = regexp.lastIndex; - return result; - } - - /** - * Creates a clone of the `symbol` object. - * - * @private - * @param {Object} symbol The symbol object to clone. - * @returns {Object} Returns the cloned symbol object. - */ - function cloneSymbol(symbol) { - return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; - } - - /** - * Creates a clone of `typedArray`. - * - * @private - * @param {Object} typedArray The typed array to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned typed array. - */ - function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); - } - - /** - * Compares values to sort them in ascending order. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {number} Returns the sort order indicator for `value`. - */ - function compareAscending(value, other) { - if (value !== other) { - var valIsDefined = value !== undefined, - valIsNull = value === null, - valIsReflexive = value === value, - valIsSymbol = isSymbol(value); - - var othIsDefined = other !== undefined, - othIsNull = other === null, - othIsReflexive = other === other, - othIsSymbol = isSymbol(other); - - if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || - (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || - (valIsNull && othIsDefined && othIsReflexive) || - (!valIsDefined && othIsReflexive) || - !valIsReflexive) { - return 1; - } - if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || - (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || - (othIsNull && valIsDefined && valIsReflexive) || - (!othIsDefined && valIsReflexive) || - !othIsReflexive) { - return -1; - } - } - return 0; - } - - /** - * Used by `_.orderBy` to compare multiple properties of a value to another - * and stable sort them. - * - * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, - * specify an order of "desc" for descending or "asc" for ascending sort order - * of corresponding values. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {boolean[]|string[]} orders The order to sort by for each property. - * @returns {number} Returns the sort order indicator for `object`. - */ - function compareMultiple(object, other, orders) { - var index = -1, - objCriteria = object.criteria, - othCriteria = other.criteria, - length = objCriteria.length, - ordersLength = orders.length; - - while (++index < length) { - var result = compareAscending(objCriteria[index], othCriteria[index]); - if (result) { - if (index >= ordersLength) { - return result; - } - var order = orders[index]; - return result * (order == 'desc' ? -1 : 1); - } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to provide the same value for - // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 - // for more details. - // - // This also ensures a stable sort in V8 and other engines. - // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. - return object.index - other.index; - } - - /** - * Creates an array that is the composition of partially applied arguments, - * placeholders, and provided arguments into a single array of arguments. - * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to prepend to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. - */ - function composeArgs(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersLength = holders.length, - leftIndex = -1, - leftLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(leftLength + rangeLength), - isUncurried = !isCurried; - - while (++leftIndex < leftLength) { - result[leftIndex] = partials[leftIndex]; - } - while (++argsIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[holders[argsIndex]] = args[argsIndex]; - } - } - while (rangeLength--) { - result[leftIndex++] = args[argsIndex++]; - } - return result; - } - - /** - * This function is like `composeArgs` except that the arguments composition - * is tailored for `_.partialRight`. - * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to append to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. - */ - function composeArgsRight(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersIndex = -1, - holdersLength = holders.length, - rightIndex = -1, - rightLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(rangeLength + rightLength), - isUncurried = !isCurried; - - while (++argsIndex < rangeLength) { - result[argsIndex] = args[argsIndex]; - } - var offset = argsIndex; - while (++rightIndex < rightLength) { - result[offset + rightIndex] = partials[rightIndex]; - } - while (++holdersIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[offset + holders[holdersIndex]] = args[argsIndex++]; - } - } - return result; - } - - /** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ - function copyArray(source, array) { - var index = -1, - length = source.length; - - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; - } - - /** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. - */ - function copyObject(source, props, object, customizer) { - var isNew = !object; - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined; - - if (newValue === undefined) { - newValue = source[key]; - } - if (isNew) { - baseAssignValue(object, key, newValue); - } else { - assignValue(object, key, newValue); - } - } - return object; - } - - /** - * Copies own symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ - function copySymbols(source, object) { - return copyObject(source, getSymbols(source), object); - } - - /** - * Copies own and inherited symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ - function copySymbolsIn(source, object) { - return copyObject(source, getSymbolsIn(source), object); - } - - /** - * Creates a function like `_.groupBy`. - * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} [initializer] The accumulator object initializer. - * @returns {Function} Returns the new aggregator function. - */ - function createAggregator(setter, initializer) { - return function(collection, iteratee) { - var func = isArray(collection) ? arrayAggregator : baseAggregator, - accumulator = initializer ? initializer() : {}; - - return func(collection, setter, getIteratee(iteratee, 2), accumulator); - }; - } - - /** - * Creates a function like `_.assign`. - * - * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. - */ - function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index = -1, - length = sources.length, - customizer = length > 1 ? sources[length - 1] : undefined, - guard = length > 2 ? sources[2] : undefined; - - customizer = (assigner.length > 3 && typeof customizer == 'function') - ? (length--, customizer) - : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? undefined : customizer; - length = 1; - } - object = Object(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); - } - - /** - * Creates a `baseEach` or `baseEachRight` function. - * - * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee) { - if (collection == null) { - return collection; - } - if (!isArrayLike(collection)) { - return eachFunc(collection, iteratee); - } - var length = collection.length, - index = fromRight ? length : -1, - iterable = Object(collection); - - while ((fromRight ? index-- : ++index < length)) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; - } - - /** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; - } - - /** - * Creates a function that wraps `func` to invoke it with the optional `this` - * binding of `thisArg`. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createBind(func, bitmask, thisArg) { - var isBind = bitmask & WRAP_BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return fn.apply(isBind ? thisArg : this, arguments); - } - return wrapper; - } - - /** - * Creates a function like `_.lowerFirst`. - * - * @private - * @param {string} methodName The name of the `String` case method to use. - * @returns {Function} Returns the new case function. - */ - function createCaseFirst(methodName) { - return function(string) { - string = toString(string); - - var strSymbols = hasUnicode(string) - ? stringToArray(string) - : undefined; - - var chr = strSymbols - ? strSymbols[0] - : string.charAt(0); - - var trailing = strSymbols - ? castSlice(strSymbols, 1).join('') - : string.slice(1); - - return chr[methodName]() + trailing; - }; - } - - /** - * Creates a function like `_.camelCase`. - * - * @private - * @param {Function} callback The function to combine each word. - * @returns {Function} Returns the new compounder function. - */ - function createCompounder(callback) { - return function(string) { - return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); - }; - } - - /** - * Creates a function that produces an instance of `Ctor` regardless of - * whether it was invoked as part of a `new` expression or by `call` or `apply`. - * - * @private - * @param {Function} Ctor The constructor to wrap. - * @returns {Function} Returns the new wrapped function. - */ - function createCtor(Ctor) { - return function() { - // Use a `switch` statement to work with class constructors. See - // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist - // for more details. - var args = arguments; - switch (args.length) { - case 0: return new Ctor; - case 1: return new Ctor(args[0]); - case 2: return new Ctor(args[0], args[1]); - case 3: return new Ctor(args[0], args[1], args[2]); - case 4: return new Ctor(args[0], args[1], args[2], args[3]); - case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); - case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); - case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); - } - var thisBinding = baseCreate(Ctor.prototype), - result = Ctor.apply(thisBinding, args); - - // Mimic the constructor's `return` behavior. - // See https://es5.github.io/#x13.2.2 for more details. - return isObject(result) ? result : thisBinding; - }; - } - - /** - * Creates a function that wraps `func` to enable currying. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {number} arity The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createCurry(func, bitmask, arity) { - var Ctor = createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length, - placeholder = getHolder(wrapper); - - while (index--) { - args[index] = arguments[index]; - } - var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) - ? [] - : replaceHolders(args, placeholder); - - length -= holders.length; - if (length < arity) { - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, undefined, - args, holders, undefined, undefined, arity - length); - } - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return apply(fn, this, args); - } - return wrapper; - } - - /** - * Creates a `_.find` or `_.findLast` function. - * - * @private - * @param {Function} findIndexFunc The function to find the collection index. - * @returns {Function} Returns the new find function. - */ - function createFind(findIndexFunc) { - return function(collection, predicate, fromIndex) { - var iterable = Object(collection); - if (!isArrayLike(collection)) { - var iteratee = getIteratee(predicate, 3); - collection = keys(collection); - predicate = function(key) { return iteratee(iterable[key], key, iterable); }; - } - var index = findIndexFunc(collection, predicate, fromIndex); - return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; - }; - } - - /** - * Creates a `_.flow` or `_.flowRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new flow function. - */ - function createFlow(fromRight) { - return flatRest(function(funcs) { - var length = funcs.length, - index = length, - prereq = LodashWrapper.prototype.thru; - - if (fromRight) { - funcs.reverse(); - } - while (index--) { - var func = funcs[index]; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (prereq && !wrapper && getFuncName(func) == 'wrapper') { - var wrapper = new LodashWrapper([], true); - } - } - index = wrapper ? index : length; - while (++index < length) { - func = funcs[index]; - - var funcName = getFuncName(func), - data = funcName == 'wrapper' ? getData(func) : undefined; - - if (data && isLaziable(data[0]) && - data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && - !data[4].length && data[9] == 1 - ) { - wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); - } else { - wrapper = (func.length == 1 && isLaziable(func)) - ? wrapper[funcName]() - : wrapper.thru(func); - } - } - return function() { - var args = arguments, - value = args[0]; - - if (wrapper && args.length == 1 && isArray(value)) { - return wrapper.plant(value).value(); - } - var index = 0, - result = length ? funcs[index].apply(this, args) : value; - - while (++index < length) { - result = funcs[index].call(this, result); - } - return result; - }; - }); - } - - /** - * Creates a function that wraps `func` to invoke it with optional `this` - * binding of `thisArg`, partial application, and currying. - * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [partialsRight] The arguments to append to those provided - * to the new function. - * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { - var isAry = bitmask & WRAP_ARY_FLAG, - isBind = bitmask & WRAP_BIND_FLAG, - isBindKey = bitmask & WRAP_BIND_KEY_FLAG, - isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), - isFlip = bitmask & WRAP_FLIP_FLAG, - Ctor = isBindKey ? undefined : createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length; - - while (index--) { - args[index] = arguments[index]; - } - if (isCurried) { - var placeholder = getHolder(wrapper), - holdersCount = countHolders(args, placeholder); - } - if (partials) { - args = composeArgs(args, partials, holders, isCurried); - } - if (partialsRight) { - args = composeArgsRight(args, partialsRight, holdersRight, isCurried); - } - length -= holdersCount; - if (isCurried && length < arity) { - var newHolders = replaceHolders(args, placeholder); - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, thisArg, - args, newHolders, argPos, ary, arity - length - ); - } - var thisBinding = isBind ? thisArg : this, - fn = isBindKey ? thisBinding[func] : func; - - length = args.length; - if (argPos) { - args = reorder(args, argPos); - } else if (isFlip && length > 1) { - args.reverse(); - } - if (isAry && ary < length) { - args.length = ary; - } - if (this && this !== root && this instanceof wrapper) { - fn = Ctor || createCtor(fn); - } - return fn.apply(thisBinding, args); - } - return wrapper; - } - - /** - * Creates a function like `_.invertBy`. - * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} toIteratee The function to resolve iteratees. - * @returns {Function} Returns the new inverter function. - */ - function createInverter(setter, toIteratee) { - return function(object, iteratee) { - return baseInverter(object, setter, toIteratee(iteratee), {}); - }; - } - - /** - * Creates a function that performs a mathematical operation on two values. - * - * @private - * @param {Function} operator The function to perform the operation. - * @param {number} [defaultValue] The value used for `undefined` arguments. - * @returns {Function} Returns the new mathematical operation function. - */ - function createMathOperation(operator, defaultValue) { - return function(value, other) { - var result; - if (value === undefined && other === undefined) { - return defaultValue; - } - if (value !== undefined) { - result = value; - } - if (other !== undefined) { - if (result === undefined) { - return other; - } - if (typeof value == 'string' || typeof other == 'string') { - value = baseToString(value); - other = baseToString(other); - } else { - value = baseToNumber(value); - other = baseToNumber(other); - } - result = operator(value, other); - } - return result; - }; - } - - /** - * Creates a function like `_.over`. - * - * @private - * @param {Function} arrayFunc The function to iterate over iteratees. - * @returns {Function} Returns the new over function. - */ - function createOver(arrayFunc) { - return flatRest(function(iteratees) { - iteratees = arrayMap(iteratees, baseUnary(getIteratee())); - return baseRest(function(args) { - var thisArg = this; - return arrayFunc(iteratees, function(iteratee) { - return apply(iteratee, thisArg, args); - }); - }); - }); - } - - /** - * Creates the padding for `string` based on `length`. The `chars` string - * is truncated if the number of characters exceeds `length`. - * - * @private - * @param {number} length The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padding for `string`. - */ - function createPadding(length, chars) { - chars = chars === undefined ? ' ' : baseToString(chars); - - var charsLength = chars.length; - if (charsLength < 2) { - return charsLength ? baseRepeat(chars, length) : chars; - } - var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); - return hasUnicode(chars) - ? castSlice(stringToArray(result), 0, length).join('') - : result.slice(0, length); - } - - /** - * Creates a function that wraps `func` to invoke it with the `this` binding - * of `thisArg` and `partials` prepended to the arguments it receives. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} partials The arguments to prepend to those provided to - * the new function. - * @returns {Function} Returns the new wrapped function. - */ - function createPartial(func, bitmask, thisArg, partials) { - var isBind = bitmask & WRAP_BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var argsIndex = -1, - argsLength = arguments.length, - leftIndex = -1, - leftLength = partials.length, - args = Array(leftLength + argsLength), - fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - - while (++leftIndex < leftLength) { - args[leftIndex] = partials[leftIndex]; - } - while (argsLength--) { - args[leftIndex++] = arguments[++argsIndex]; - } - return apply(fn, isBind ? thisArg : this, args); - } - return wrapper; - } - - /** - * Creates a `_.range` or `_.rangeRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new range function. - */ - function createRange(fromRight) { - return function(start, end, step) { - if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { - end = step = undefined; - } - // Ensure the sign of `-0` is preserved. - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); - return baseRange(start, end, step, fromRight); - }; - } - - /** - * Creates a function that performs a relational operation on two values. - * - * @private - * @param {Function} operator The function to perform the operation. - * @returns {Function} Returns the new relational operation function. - */ - function createRelationalOperation(operator) { - return function(value, other) { - if (!(typeof value == 'string' && typeof other == 'string')) { - value = toNumber(value); - other = toNumber(other); - } - return operator(value, other); - }; - } - - /** - * Creates a function that wraps `func` to continue currying. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {Function} wrapFunc The function to create the `func` wrapper. - * @param {*} placeholder The placeholder value. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { - var isCurry = bitmask & WRAP_CURRY_FLAG, - newHolders = isCurry ? holders : undefined, - newHoldersRight = isCurry ? undefined : holders, - newPartials = isCurry ? partials : undefined, - newPartialsRight = isCurry ? undefined : partials; - - bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); - bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); - - if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { - bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); - } - var newData = [ - func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, - newHoldersRight, argPos, ary, arity - ]; - - var result = wrapFunc.apply(undefined, newData); - if (isLaziable(func)) { - setData(result, newData); - } - result.placeholder = placeholder; - return setWrapToString(result, func, bitmask); - } - - /** - * Creates a function like `_.round`. - * - * @private - * @param {string} methodName The name of the `Math` method to use when rounding. - * @returns {Function} Returns the new round function. - */ - function createRound(methodName) { - var func = Math[methodName]; - return function(number, precision) { - number = toNumber(number); - precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); - if (precision && nativeIsFinite(number)) { - // Shift with exponential notation to avoid floating-point issues. - // See [MDN](https://mdn.io/round#Examples) for more details. - var pair = (toString(number) + 'e').split('e'), - value = func(pair[0] + 'e' + (+pair[1] + precision)); - - pair = (toString(value) + 'e').split('e'); - return +(pair[0] + 'e' + (+pair[1] - precision)); - } - return func(number); - }; - } - - /** - * Creates a set object of `values`. - * - * @private - * @param {Array} values The values to add to the set. - * @returns {Object} Returns the new set. - */ - var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { - return new Set(values); - }; - - /** - * Creates a `_.toPairs` or `_.toPairsIn` function. - * - * @private - * @param {Function} keysFunc The function to get the keys of a given object. - * @returns {Function} Returns the new pairs function. - */ - function createToPairs(keysFunc) { - return function(object) { - var tag = getTag(object); - if (tag == mapTag) { - return mapToArray(object); - } - if (tag == setTag) { - return setToPairs(object); - } - return baseToPairs(object, keysFunc(object)); - }; - } - - /** - * Creates a function that either curries or invokes `func` with optional - * `this` binding and partially applied arguments. - * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` or `_.curryRight` of a bound function - * 8 - `_.curry` - * 16 - `_.curryRight` - * 32 - `_.partial` - * 64 - `_.partialRight` - * 128 - `_.rearg` - * 256 - `_.ary` - * 512 - `_.flip` - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to be partially applied. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { - var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; - if (!isBindKey && typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - var length = partials ? partials.length : 0; - if (!length) { - bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); - partials = holders = undefined; - } - ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); - arity = arity === undefined ? arity : toInteger(arity); - length -= holders ? holders.length : 0; - - if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { - var partialsRight = partials, - holdersRight = holders; - - partials = holders = undefined; - } - var data = isBindKey ? undefined : getData(func); - - var newData = [ - func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, - argPos, ary, arity - ]; - - if (data) { - mergeData(newData, data); - } - func = newData[0]; - bitmask = newData[1]; - thisArg = newData[2]; - partials = newData[3]; - holders = newData[4]; - arity = newData[9] = newData[9] === undefined - ? (isBindKey ? 0 : func.length) - : nativeMax(newData[9] - length, 0); - - if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { - bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); - } - if (!bitmask || bitmask == WRAP_BIND_FLAG) { - var result = createBind(func, bitmask, thisArg); - } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { - result = createCurry(func, bitmask, arity); - } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { - result = createPartial(func, bitmask, thisArg, partials); - } else { - result = createHybrid.apply(undefined, newData); - } - var setter = data ? baseSetData : setData; - return setWrapToString(setter(result, newData), func, bitmask); - } - - /** - * Used by `_.defaults` to customize its `_.assignIn` use to assign properties - * of source objects to the destination object for all destination properties - * that resolve to `undefined`. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to assign. - * @param {Object} object The parent object of `objValue`. - * @returns {*} Returns the value to assign. - */ - function customDefaultsAssignIn(objValue, srcValue, key, object) { - if (objValue === undefined || - (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { - return srcValue; - } - return objValue; - } - - /** - * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source - * objects into destination objects that are passed thru. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to merge. - * @param {Object} object The parent object of `objValue`. - * @param {Object} source The parent object of `srcValue`. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - * @returns {*} Returns the value to assign. - */ - function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { - if (isObject(objValue) && isObject(srcValue)) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, objValue); - baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); - stack['delete'](srcValue); - } - return objValue; - } - - /** - * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain - * objects. - * - * @private - * @param {*} value The value to inspect. - * @param {string} key The key of the property to inspect. - * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. - */ - function customOmitClone(value) { - return isPlainObject(value) ? undefined : value; - } - - /** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ - function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - arrLength = array.length, - othLength = other.length; - - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - // Check that cyclic values are equal. - var arrStacked = stack.get(array); - var othStacked = stack.get(other); - if (arrStacked && othStacked) { - return arrStacked == other && othStacked == array; - } - var index = -1, - result = true, - seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; - - stack.set(array, other); - stack.set(other, array); - - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, arrValue, index, other, array, stack) - : customizer(arrValue, othValue, index, array, other, stack); - } - if (compared !== undefined) { - if (compared) { - continue; - } - result = false; - break; - } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!arraySome(other, function(othValue, othIndex) { - if (!cacheHas(seen, othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, bitmask, customizer, stack) - )) { - result = false; - break; - } - } - stack['delete'](array); - stack['delete'](other); - return result; - } - - /** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { - switch (tag) { - case dataViewTag: - if ((object.byteLength != other.byteLength) || - (object.byteOffset != other.byteOffset)) { - return false; - } - object = object.buffer; - other = other.buffer; - - case arrayBufferTag: - if ((object.byteLength != other.byteLength) || - !equalFunc(new Uint8Array(object), new Uint8Array(other))) { - return false; - } - return true; - - case boolTag: - case dateTag: - case numberTag: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq(+object, +other); - - case errorTag: - return object.name == other.name && object.message == other.message; - - case regexpTag: - case stringTag: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); - - case mapTag: - var convert = mapToArray; - - case setTag: - var isPartial = bitmask & COMPARE_PARTIAL_FLAG; - convert || (convert = setToArray); - - if (object.size != other.size && !isPartial) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= COMPARE_UNORDERED_FLAG; - - // Recursively compare objects (susceptible to call stack limits). - stack.set(object, other); - var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); - stack['delete'](object); - return result; - - case symbolTag: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } - } - return false; - } - - /** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - objProps = getAllKeys(object), - objLength = objProps.length, - othProps = getAllKeys(other), - othLength = othProps.length; - - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { - return false; - } - } - // Check that cyclic values are equal. - var objStacked = stack.get(object); - var othStacked = stack.get(other); - if (objStacked && othStacked) { - return objStacked == other && othStacked == object; - } - var result = true; - stack.set(object, other); - stack.set(other, object); - - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, objValue, key, other, object, stack) - : customizer(objValue, othValue, key, object, other, stack); - } - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); - } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; - - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; - } - } - stack['delete'](object); - stack['delete'](other); - return result; - } - - /** - * A specialized version of `baseRest` which flattens the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @returns {Function} Returns the new function. - */ - function flatRest(func) { - return setToString(overRest(func, undefined, flatten), func + ''); - } - - /** - * Creates an array of own enumerable property names and symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ - function getAllKeys(object) { - return baseGetAllKeys(object, keys, getSymbols); - } - - /** - * Creates an array of own and inherited enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ - function getAllKeysIn(object) { - return baseGetAllKeys(object, keysIn, getSymbolsIn); - } - - /** - * Gets metadata for `func`. - * - * @private - * @param {Function} func The function to query. - * @returns {*} Returns the metadata for `func`. - */ - var getData = !metaMap ? noop : function(func) { - return metaMap.get(func); - }; - - /** - * Gets the name of `func`. - * - * @private - * @param {Function} func The function to query. - * @returns {string} Returns the function name. - */ - function getFuncName(func) { - var result = (func.name + ''), - array = realNames[result], - length = hasOwnProperty.call(realNames, result) ? array.length : 0; - - while (length--) { - var data = array[length], - otherFunc = data.func; - if (otherFunc == null || otherFunc == func) { - return data.name; - } - } - return result; - } - - /** - * Gets the argument placeholder value for `func`. - * - * @private - * @param {Function} func The function to inspect. - * @returns {*} Returns the placeholder value. - */ - function getHolder(func) { - var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; - return object.placeholder; - } - - /** - * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, - * this function returns the custom method, otherwise it returns `baseIteratee`. - * If arguments are provided, the chosen function is invoked with them and - * its result is returned. - * - * @private - * @param {*} [value] The value to convert to an iteratee. - * @param {number} [arity] The arity of the created iteratee. - * @returns {Function} Returns the chosen function or its result. - */ - function getIteratee() { - var result = lodash.iteratee || iteratee; - result = result === iteratee ? baseIteratee : result; - return arguments.length ? result(arguments[0], arguments[1]) : result; - } - - /** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ - function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; - } - - /** - * Gets the property names, values, and compare flags of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. - */ - function getMatchData(object) { - var result = keys(object), - length = result.length; - - while (length--) { - var key = result[length], - value = object[key]; - - result[length] = [key, value, isStrictComparable(value)]; - } - return result; - } - - /** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ - function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; - } - - /** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. - */ - function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag), - tag = value[symToStringTag]; - - try { - value[symToStringTag] = undefined; - var unmasked = true; - } catch (e) {} - - var result = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; - } else { - delete value[symToStringTag]; - } - } - return result; - } - - /** - * Creates an array of the own enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ - var getSymbols = !nativeGetSymbols ? stubArray : function(object) { - if (object == null) { - return []; - } - object = Object(object); - return arrayFilter(nativeGetSymbols(object), function(symbol) { - return propertyIsEnumerable.call(object, symbol); - }); - }; - - /** - * Creates an array of the own and inherited enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ - var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { - var result = []; - while (object) { - arrayPush(result, getSymbols(object)); - object = getPrototype(object); - } - return result; - }; - - /** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - var getTag = baseGetTag; - - // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. - if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || - (Map && getTag(new Map) != mapTag) || - (Promise && getTag(Promise.resolve()) != promiseTag) || - (Set && getTag(new Set) != setTag) || - (WeakMap && getTag(new WeakMap) != weakMapTag)) { - getTag = function(value) { - var result = baseGetTag(value), - Ctor = result == objectTag ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : ''; - - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag; - case mapCtorString: return mapTag; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag; - case weakMapCtorString: return weakMapTag; - } - } - return result; - }; - } - - /** - * Gets the view, applying any `transforms` to the `start` and `end` positions. - * - * @private - * @param {number} start The start of the view. - * @param {number} end The end of the view. - * @param {Array} transforms The transformations to apply to the view. - * @returns {Object} Returns an object containing the `start` and `end` - * positions of the view. - */ - function getView(start, end, transforms) { - var index = -1, - length = transforms.length; - - while (++index < length) { - var data = transforms[index], - size = data.size; - - switch (data.type) { - case 'drop': start += size; break; - case 'dropRight': end -= size; break; - case 'take': end = nativeMin(end, start + size); break; - case 'takeRight': start = nativeMax(start, end - size); break; - } - } - return { 'start': start, 'end': end }; - } - - /** - * Extracts wrapper details from the `source` body comment. - * - * @private - * @param {string} source The source to inspect. - * @returns {Array} Returns the wrapper details. - */ - function getWrapDetails(source) { - var match = source.match(reWrapDetails); - return match ? match[1].split(reSplitDetails) : []; - } - - /** - * Checks if `path` exists on `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @param {Function} hasFunc The function to check properties. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - */ - function hasPath(object, path, hasFunc) { - path = castPath(path, object); - - var index = -1, - length = path.length, - result = false; - - while (++index < length) { - var key = toKey(path[index]); - if (!(result = object != null && hasFunc(object, key))) { - break; - } - object = object[key]; - } - if (result || ++index != length) { - return result; - } - length = object == null ? 0 : object.length; - return !!length && isLength(length) && isIndex(key, length) && - (isArray(object) || isArguments(object)); - } - - /** - * Initializes an array clone. - * - * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the initialized clone. - */ - function initCloneArray(array) { - var length = array.length, - result = new array.constructor(length); - - // Add properties assigned by `RegExp#exec`. - if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { - result.index = array.index; - result.input = array.input; - } - return result; - } - - /** - * Initializes an object clone. - * - * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneObject(object) { - return (typeof object.constructor == 'function' && !isPrototype(object)) - ? baseCreate(getPrototype(object)) - : {}; - } - - /** - * Initializes an object clone based on its `toStringTag`. - * - * **Note:** This function only supports cloning values with tags of - * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. - * - * @private - * @param {Object} object The object to clone. - * @param {string} tag The `toStringTag` of the object to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneByTag(object, tag, isDeep) { - var Ctor = object.constructor; - switch (tag) { - case arrayBufferTag: - return cloneArrayBuffer(object); - - case boolTag: - case dateTag: - return new Ctor(+object); - - case dataViewTag: - return cloneDataView(object, isDeep); - - case float32Tag: case float64Tag: - case int8Tag: case int16Tag: case int32Tag: - case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: - return cloneTypedArray(object, isDeep); - - case mapTag: - return new Ctor; - - case numberTag: - case stringTag: - return new Ctor(object); - - case regexpTag: - return cloneRegExp(object); - - case setTag: - return new Ctor; - - case symbolTag: - return cloneSymbol(object); - } - } - - /** - * Inserts wrapper `details` in a comment at the top of the `source` body. - * - * @private - * @param {string} source The source to modify. - * @returns {Array} details The details to insert. - * @returns {string} Returns the modified source. - */ - function insertWrapDetails(source, details) { - var length = details.length; - if (!length) { - return source; - } - var lastIndex = length - 1; - details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; - details = details.join(length > 2 ? ', ' : ' '); - return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); - } - - /** - * Checks if `value` is a flattenable `arguments` object or array. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. - */ - function isFlattenable(value) { - return isArray(value) || isArguments(value) || - !!(spreadableSymbol && value && value[spreadableSymbol]); - } - - /** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ - function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER : length; - - return !!length && - (type == 'number' || - (type != 'symbol' && reIsUint.test(value))) && - (value > -1 && value % 1 == 0 && value < length); - } - - /** - * Checks if the given arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, - * else `false`. - */ - function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object) - ) { - return eq(object[index], value); - } - return false; - } - - /** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ - function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); - } - - /** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ - function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); - } - - /** - * Checks if `func` has a lazy counterpart. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` has a lazy counterpart, - * else `false`. - */ - function isLaziable(func) { - var funcName = getFuncName(func), - other = lodash[funcName]; - - if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { - return false; - } - if (func === other) { - return true; - } - var data = getData(other); - return !!data && func === data[0]; - } - - /** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ - function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); - } - - /** - * Checks if `func` is capable of being masked. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `func` is maskable, else `false`. - */ - var isMaskable = coreJsData ? isFunction : stubFalse; - - /** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ - function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; - - return value === proto; - } - - /** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. - */ - function isStrictComparable(value) { - return value === value && !isObject(value); - } - - /** - * A specialized version of `matchesProperty` for source values suitable - * for strict equality comparisons, i.e. `===`. - * - * @private - * @param {string} key The key of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ - function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; - } - return object[key] === srcValue && - (srcValue !== undefined || (key in Object(object))); - }; - } - - /** - * A specialized version of `_.memoize` which clears the memoized function's - * cache when it exceeds `MAX_MEMOIZE_SIZE`. - * - * @private - * @param {Function} func The function to have its output memoized. - * @returns {Function} Returns the new memoized function. - */ - function memoizeCapped(func) { - var result = memoize(func, function(key) { - if (cache.size === MAX_MEMOIZE_SIZE) { - cache.clear(); - } - return key; - }); - - var cache = result.cache; - return result; - } - - /** - * Merges the function metadata of `source` into `data`. - * - * Merging metadata reduces the number of wrappers used to invoke a function. - * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` - * may be applied regardless of execution order. Methods like `_.ary` and - * `_.rearg` modify function arguments, making the order in which they are - * executed important, preventing the merging of metadata. However, we make - * an exception for a safe combined case where curried functions have `_.ary` - * and or `_.rearg` applied. - * - * @private - * @param {Array} data The destination metadata. - * @param {Array} source The source metadata. - * @returns {Array} Returns `data`. - */ - function mergeData(data, source) { - var bitmask = data[1], - srcBitmask = source[1], - newBitmask = bitmask | srcBitmask, - isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); - - var isCombo = - ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || - ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || - ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); - - // Exit early if metadata can't be merged. - if (!(isCommon || isCombo)) { - return data; - } - // Use source `thisArg` if available. - if (srcBitmask & WRAP_BIND_FLAG) { - data[2] = source[2]; - // Set when currying a bound function. - newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; - } - // Compose partial arguments. - var value = source[3]; - if (value) { - var partials = data[3]; - data[3] = partials ? composeArgs(partials, value, source[4]) : value; - data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; - } - // Compose partial right arguments. - value = source[5]; - if (value) { - partials = data[5]; - data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; - data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; - } - // Use source `argPos` if available. - value = source[7]; - if (value) { - data[7] = value; - } - // Use source `ary` if it's smaller. - if (srcBitmask & WRAP_ARY_FLAG) { - data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); - } - // Use source `arity` if one is not provided. - if (data[9] == null) { - data[9] = source[9]; - } - // Use source `func` and merge bitmasks. - data[0] = source[0]; - data[1] = newBitmask; - - return data; - } - - /** - * This function is like - * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * except that it includes inherited enumerable properties. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); - } - } - return result; - } - - /** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ - function objectToString(value) { - return nativeObjectToString.call(value); - } - - /** - * A specialized version of `baseRest` which transforms the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @param {Function} transform The rest array transform. - * @returns {Function} Returns the new function. - */ - function overRest(func, start, transform) { - start = nativeMax(start === undefined ? (func.length - 1) : start, 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - array = Array(length); - - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = transform(array); - return apply(func, this, otherArgs); - }; - } - - /** - * Gets the parent value at `path` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} path The path to get the parent value of. - * @returns {*} Returns the parent value. - */ - function parent(object, path) { - return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); - } - - /** - * Reorder `array` according to the specified indexes where the element at - * the first index is assigned as the first element, the element at - * the second index is assigned as the second element, and so on. - * - * @private - * @param {Array} array The array to reorder. - * @param {Array} indexes The arranged array indexes. - * @returns {Array} Returns `array`. - */ - function reorder(array, indexes) { - var arrLength = array.length, - length = nativeMin(indexes.length, arrLength), - oldArray = copyArray(array); - - while (length--) { - var index = indexes[length]; - array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; - } - return array; - } - - /** - * Gets the value at `key`, unless `key` is "__proto__" or "constructor". - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ - function safeGet(object, key) { - if (key === 'constructor' && typeof object[key] === 'function') { - return; - } - - if (key == '__proto__') { - return; - } - - return object[key]; - } - - /** - * Sets metadata for `func`. - * - * **Note:** If this function becomes hot, i.e. is invoked a lot in a short - * period of time, it will trip its breaker and transition to an identity - * function to avoid garbage collection pauses in V8. See - * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) - * for more details. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ - var setData = shortOut(baseSetData); - - /** - * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @returns {number|Object} Returns the timer id or timeout object. - */ - var setTimeout = ctxSetTimeout || function(func, wait) { - return root.setTimeout(func, wait); - }; - - /** - * Sets the `toString` method of `func` to return `string`. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ - var setToString = shortOut(baseSetToString); - - /** - * Sets the `toString` method of `wrapper` to mimic the source of `reference` - * with wrapper details in a comment at the top of the source body. - * - * @private - * @param {Function} wrapper The function to modify. - * @param {Function} reference The reference function. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Function} Returns `wrapper`. - */ - function setWrapToString(wrapper, reference, bitmask) { - var source = (reference + ''); - return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); - } - - /** - * Creates a function that'll short out and invoke `identity` instead - * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` - * milliseconds. - * - * @private - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new shortable function. - */ - function shortOut(func) { - var count = 0, - lastCalled = 0; - - return function() { - var stamp = nativeNow(), - remaining = HOT_SPAN - (stamp - lastCalled); - - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return arguments[0]; - } - } else { - count = 0; - } - return func.apply(undefined, arguments); - }; - } - - /** - * A specialized version of `_.shuffle` which mutates and sets the size of `array`. - * - * @private - * @param {Array} array The array to shuffle. - * @param {number} [size=array.length] The size of `array`. - * @returns {Array} Returns `array`. - */ - function shuffleSelf(array, size) { - var index = -1, - length = array.length, - lastIndex = length - 1; - - size = size === undefined ? length : size; - while (++index < size) { - var rand = baseRandom(index, lastIndex), - value = array[rand]; - - array[rand] = array[index]; - array[index] = value; - } - array.length = size; - return array; - } - - /** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ - var stringToPath = memoizeCapped(function(string) { - var result = []; - if (string.charCodeAt(0) === 46 /* . */) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, subString) { - result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; - }); - - /** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ - function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; - } - - /** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to convert. - * @returns {string} Returns the source code. - */ - function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; - } - - /** - * Updates wrapper `details` based on `bitmask` flags. - * - * @private - * @returns {Array} details The details to modify. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Array} Returns `details`. - */ - function updateWrapDetails(details, bitmask) { - arrayEach(wrapFlags, function(pair) { - var value = '_.' + pair[0]; - if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { - details.push(value); - } - }); - return details.sort(); - } - - /** - * Creates a clone of `wrapper`. - * - * @private - * @param {Object} wrapper The wrapper to clone. - * @returns {Object} Returns the cloned wrapper. - */ - function wrapperClone(wrapper) { - if (wrapper instanceof LazyWrapper) { - return wrapper.clone(); - } - var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); - result.__actions__ = copyArray(wrapper.__actions__); - result.__index__ = wrapper.__index__; - result.__values__ = wrapper.__values__; - return result; - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates an array of elements split into groups the length of `size`. - * If `array` can't be split evenly, the final chunk will be the remaining - * elements. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to process. - * @param {number} [size=1] The length of each chunk - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the new array of chunks. - * @example - * - * _.chunk(['a', 'b', 'c', 'd'], 2); - * // => [['a', 'b'], ['c', 'd']] - * - * _.chunk(['a', 'b', 'c', 'd'], 3); - * // => [['a', 'b', 'c'], ['d']] - */ - function chunk(array, size, guard) { - if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { - size = 1; - } else { - size = nativeMax(toInteger(size), 0); - } - var length = array == null ? 0 : array.length; - if (!length || size < 1) { - return []; - } - var index = 0, - resIndex = 0, - result = Array(nativeCeil(length / size)); - - while (index < length) { - result[resIndex++] = baseSlice(array, index, (index += size)); - } - return result; - } - - /** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are falsey. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to compact. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ - function compact(array) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value) { - result[resIndex++] = value; - } - } - return result; - } - - /** - * Creates a new array concatenating `array` with any additional arrays - * and/or values. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to concatenate. - * @param {...*} [values] The values to concatenate. - * @returns {Array} Returns the new concatenated array. - * @example - * - * var array = [1]; - * var other = _.concat(array, 2, [3], [[4]]); - * - * console.log(other); - * // => [1, 2, 3, [4]] - * - * console.log(array); - * // => [1] - */ - function concat() { - var length = arguments.length; - if (!length) { - return []; - } - var args = Array(length - 1), - array = arguments[0], - index = length; - - while (index--) { - args[index - 1] = arguments[index]; - } - return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); - } - - /** - * Creates an array of `array` values not included in the other given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order and references of result values are - * determined by the first array. - * - * **Note:** Unlike `_.pullAll`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @see _.without, _.xor - * @example - * - * _.difference([2, 1], [2, 3]); - * // => [1] - */ - var difference = baseRest(function(array, values) { - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) - : []; - }); - - /** - * This method is like `_.difference` except that it accepts `iteratee` which - * is invoked for each element of `array` and `values` to generate the criterion - * by which they're compared. The order and references of result values are - * determined by the first array. The iteratee is invoked with one argument: - * (value). - * - * **Note:** Unlike `_.pullAllBy`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [1.2] - * - * // The `_.property` iteratee shorthand. - * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] - */ - var differenceBy = baseRest(function(array, values) { - var iteratee = last(values); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) - : []; - }); - - /** - * This method is like `_.difference` except that it accepts `comparator` - * which is invoked to compare elements of `array` to `values`. The order and - * references of result values are determined by the first array. The comparator - * is invoked with two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.pullAllWith`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * - * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); - * // => [{ 'x': 2, 'y': 1 }] - */ - var differenceWith = baseRest(function(array, values) { - var comparator = last(values); - if (isArrayLikeObject(comparator)) { - comparator = undefined; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) - : []; - }); - - /** - * Creates a slice of `array` with `n` elements dropped from the beginning. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.drop([1, 2, 3]); - * // => [2, 3] - * - * _.drop([1, 2, 3], 2); - * // => [3] - * - * _.drop([1, 2, 3], 5); - * // => [] - * - * _.drop([1, 2, 3], 0); - * // => [1, 2, 3] - */ - function drop(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - return baseSlice(array, n < 0 ? 0 : n, length); - } - - /** - * Creates a slice of `array` with `n` elements dropped from the end. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.dropRight([1, 2, 3]); - * // => [1, 2] - * - * _.dropRight([1, 2, 3], 2); - * // => [1] - * - * _.dropRight([1, 2, 3], 5); - * // => [] - * - * _.dropRight([1, 2, 3], 0); - * // => [1, 2, 3] - */ - function dropRight(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - n = length - n; - return baseSlice(array, 0, n < 0 ? 0 : n); - } - - /** - * Creates a slice of `array` excluding elements dropped from the end. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.dropRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney'] - * - * // The `_.matches` iteratee shorthand. - * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['barney', 'fred'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropRightWhile(users, ['active', false]); - * // => objects for ['barney'] - * - * // The `_.property` iteratee shorthand. - * _.dropRightWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] - */ - function dropRightWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), true, true) - : []; - } - - /** - * Creates a slice of `array` excluding elements dropped from the beginning. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.dropWhile(users, function(o) { return !o.active; }); - * // => objects for ['pebbles'] - * - * // The `_.matches` iteratee shorthand. - * _.dropWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropWhile(users, ['active', false]); - * // => objects for ['pebbles'] - * - * // The `_.property` iteratee shorthand. - * _.dropWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] - */ - function dropWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), true) - : []; - } - - /** - * Fills elements of `array` with `value` from `start` up to, but not - * including, `end`. - * - * **Note:** This method mutates `array`. - * - * @static - * @memberOf _ - * @since 3.2.0 - * @category Array - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3]; - * - * _.fill(array, 'a'); - * console.log(array); - * // => ['a', 'a', 'a'] - * - * _.fill(Array(3), 2); - * // => [2, 2, 2] - * - * _.fill([4, 6, 8, 10], '*', 1, 3); - * // => [4, '*', '*', 10] - */ - function fill(array, value, start, end) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { - start = 0; - end = length; - } - return baseFill(array, value, start, end); - } - - /** - * This method is like `_.find` except that it returns the index of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.findIndex(users, function(o) { return o.user == 'barney'; }); - * // => 0 - * - * // The `_.matches` iteratee shorthand. - * _.findIndex(users, { 'user': 'fred', 'active': false }); - * // => 1 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findIndex(users, ['active', false]); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.findIndex(users, 'active'); - * // => 2 - */ - function findIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseFindIndex(array, getIteratee(predicate, 3), index); - } - - /** - * This method is like `_.findIndex` except that it iterates over elements - * of `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); - * // => 2 - * - * // The `_.matches` iteratee shorthand. - * _.findLastIndex(users, { 'user': 'barney', 'active': true }); - * // => 0 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findLastIndex(users, ['active', false]); - * // => 2 - * - * // The `_.property` iteratee shorthand. - * _.findLastIndex(users, 'active'); - * // => 0 - */ - function findLastIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = length - 1; - if (fromIndex !== undefined) { - index = toInteger(fromIndex); - index = fromIndex < 0 - ? nativeMax(length + index, 0) - : nativeMin(index, length - 1); - } - return baseFindIndex(array, getIteratee(predicate, 3), index, true); - } - - /** - * Flattens `array` a single level deep. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flatten([1, [2, [3, [4]], 5]]); - * // => [1, 2, [3, [4]], 5] - */ - function flatten(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, 1) : []; - } - - /** - * Recursively flattens `array`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flattenDeep([1, [2, [3, [4]], 5]]); - * // => [1, 2, 3, 4, 5] - */ - function flattenDeep(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, INFINITY) : []; - } - - /** - * Recursively flatten `array` up to `depth` times. - * - * @static - * @memberOf _ - * @since 4.4.0 - * @category Array - * @param {Array} array The array to flatten. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. - * @example - * - * var array = [1, [2, [3, [4]], 5]]; - * - * _.flattenDepth(array, 1); - * // => [1, 2, [3, [4]], 5] - * - * _.flattenDepth(array, 2); - * // => [1, 2, 3, [4], 5] - */ - function flattenDepth(array, depth) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - depth = depth === undefined ? 1 : toInteger(depth); - return baseFlatten(array, depth); - } - - /** - * The inverse of `_.toPairs`; this method returns an object composed - * from key-value `pairs`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} pairs The key-value pairs. - * @returns {Object} Returns the new object. - * @example - * - * _.fromPairs([['a', 1], ['b', 2]]); - * // => { 'a': 1, 'b': 2 } - */ - function fromPairs(pairs) { - var index = -1, - length = pairs == null ? 0 : pairs.length, - result = {}; - - while (++index < length) { - var pair = pairs[index]; - result[pair[0]] = pair[1]; - } - return result; - } - - /** - * Gets the first element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias first - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the first element of `array`. - * @example - * - * _.head([1, 2, 3]); - * // => 1 - * - * _.head([]); - * // => undefined - */ - function head(array) { - return (array && array.length) ? array[0] : undefined; - } - - /** - * Gets the index at which the first occurrence of `value` is found in `array` - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. If `fromIndex` is negative, it's used as the - * offset from the end of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.indexOf([1, 2, 1, 2], 2); - * // => 1 - * - * // Search from the `fromIndex`. - * _.indexOf([1, 2, 1, 2], 2, 2); - * // => 3 - */ - function indexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseIndexOf(array, value, index); - } - - /** - * Gets all but the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.initial([1, 2, 3]); - * // => [1, 2] - */ - function initial(array) { - var length = array == null ? 0 : array.length; - return length ? baseSlice(array, 0, -1) : []; - } - - /** - * Creates an array of unique values that are included in all given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order and references of result values are - * determined by the first array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * _.intersection([2, 1], [2, 3]); - * // => [2] - */ - var intersection = baseRest(function(arrays) { - var mapped = arrayMap(arrays, castArrayLikeObject); - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped) - : []; - }); - - /** - * This method is like `_.intersection` except that it accepts `iteratee` - * which is invoked for each element of each `arrays` to generate the criterion - * by which they're compared. The order and references of result values are - * determined by the first array. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [2.1] - * - * // The `_.property` iteratee shorthand. - * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }] - */ - var intersectionBy = baseRest(function(arrays) { - var iteratee = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - if (iteratee === last(mapped)) { - iteratee = undefined; - } else { - mapped.pop(); - } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, getIteratee(iteratee, 2)) - : []; - }); - - /** - * This method is like `_.intersection` except that it accepts `comparator` - * which is invoked to compare elements of `arrays`. The order and references - * of result values are determined by the first array. The comparator is - * invoked with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.intersectionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }] - */ - var intersectionWith = baseRest(function(arrays) { - var comparator = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - comparator = typeof comparator == 'function' ? comparator : undefined; - if (comparator) { - mapped.pop(); - } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, undefined, comparator) - : []; - }); - - /** - * Converts all elements in `array` into a string separated by `separator`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to convert. - * @param {string} [separator=','] The element separator. - * @returns {string} Returns the joined string. - * @example - * - * _.join(['a', 'b', 'c'], '~'); - * // => 'a~b~c' - */ - function join(array, separator) { - return array == null ? '' : nativeJoin.call(array, separator); - } - - /** - * Gets the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the last element of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - */ - function last(array) { - var length = array == null ? 0 : array.length; - return length ? array[length - 1] : undefined; - } - - /** - * This method is like `_.indexOf` except that it iterates over elements of - * `array` from right to left. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.lastIndexOf([1, 2, 1, 2], 2); - * // => 3 - * - * // Search from the `fromIndex`. - * _.lastIndexOf([1, 2, 1, 2], 2, 2); - * // => 1 - */ - function lastIndexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = length; - if (fromIndex !== undefined) { - index = toInteger(fromIndex); - index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); - } - return value === value - ? strictLastIndexOf(array, value, index) - : baseFindIndex(array, baseIsNaN, index, true); - } - - /** - * Gets the element at index `n` of `array`. If `n` is negative, the nth - * element from the end is returned. - * - * @static - * @memberOf _ - * @since 4.11.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=0] The index of the element to return. - * @returns {*} Returns the nth element of `array`. - * @example - * - * var array = ['a', 'b', 'c', 'd']; - * - * _.nth(array, 1); - * // => 'b' - * - * _.nth(array, -2); - * // => 'c'; - */ - function nth(array, n) { - return (array && array.length) ? baseNth(array, toInteger(n)) : undefined; - } - - /** - * Removes all given values from `array` using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` - * to remove elements from an array by predicate. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {...*} [values] The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = ['a', 'b', 'c', 'a', 'b', 'c']; - * - * _.pull(array, 'a', 'c'); - * console.log(array); - * // => ['b', 'b'] - */ - var pull = baseRest(pullAll); - - /** - * This method is like `_.pull` except that it accepts an array of values to remove. - * - * **Note:** Unlike `_.difference`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = ['a', 'b', 'c', 'a', 'b', 'c']; - * - * _.pullAll(array, ['a', 'c']); - * console.log(array); - * // => ['b', 'b'] - */ - function pullAll(array, values) { - return (array && array.length && values && values.length) - ? basePullAll(array, values) - : array; - } - - /** - * This method is like `_.pullAll` except that it accepts `iteratee` which is - * invoked for each element of `array` and `values` to generate the criterion - * by which they're compared. The iteratee is invoked with one argument: (value). - * - * **Note:** Unlike `_.differenceBy`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns `array`. - * @example - * - * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; - * - * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); - * console.log(array); - * // => [{ 'x': 2 }] - */ - function pullAllBy(array, values, iteratee) { - return (array && array.length && values && values.length) - ? basePullAll(array, values, getIteratee(iteratee, 2)) - : array; - } - - /** - * This method is like `_.pullAll` except that it accepts `comparator` which - * is invoked to compare elements of `array` to `values`. The comparator is - * invoked with two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.differenceWith`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns `array`. - * @example - * - * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; - * - * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); - * console.log(array); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] - */ - function pullAllWith(array, values, comparator) { - return (array && array.length && values && values.length) - ? basePullAll(array, values, undefined, comparator) - : array; - } - - /** - * Removes elements from `array` corresponding to `indexes` and returns an - * array of removed elements. - * - * **Note:** Unlike `_.at`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {...(number|number[])} [indexes] The indexes of elements to remove. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = ['a', 'b', 'c', 'd']; - * var pulled = _.pullAt(array, [1, 3]); - * - * console.log(array); - * // => ['a', 'c'] - * - * console.log(pulled); - * // => ['b', 'd'] - */ - var pullAt = flatRest(function(array, indexes) { - var length = array == null ? 0 : array.length, - result = baseAt(array, indexes); - - basePullAt(array, arrayMap(indexes, function(index) { - return isIndex(index, length) ? +index : index; - }).sort(compareAscending)); - - return result; - }); - - /** - * Removes all elements from `array` that `predicate` returns truthy for - * and returns an array of the removed elements. The predicate is invoked - * with three arguments: (value, index, array). - * - * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` - * to pull elements from an array by value. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = [1, 2, 3, 4]; - * var evens = _.remove(array, function(n) { - * return n % 2 == 0; - * }); - * - * console.log(array); - * // => [1, 3] - * - * console.log(evens); - * // => [2, 4] - */ - function remove(array, predicate) { - var result = []; - if (!(array && array.length)) { - return result; - } - var index = -1, - indexes = [], - length = array.length; - - predicate = getIteratee(predicate, 3); - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result.push(value); - indexes.push(index); - } - } - basePullAt(array, indexes); - return result; - } - - /** - * Reverses `array` so that the first element becomes the last, the second - * element becomes the second to last, and so on. - * - * **Note:** This method mutates `array` and is based on - * [`Array#reverse`](https://mdn.io/Array/reverse). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3]; - * - * _.reverse(array); - * // => [3, 2, 1] - * - * console.log(array); - * // => [3, 2, 1] - */ - function reverse(array) { - return array == null ? array : nativeReverse.call(array); - } - - /** - * Creates a slice of `array` from `start` up to, but not including, `end`. - * - * **Note:** This method is used instead of - * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are - * returned. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function slice(array, start, end) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { - start = 0; - end = length; - } - else { - start = start == null ? 0 : toInteger(start); - end = end === undefined ? length : toInteger(end); - } - return baseSlice(array, start, end); - } - - /** - * Uses a binary search to determine the lowest index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedIndex([30, 50], 40); - * // => 1 - */ - function sortedIndex(array, value) { - return baseSortedIndex(array, value); - } - - /** - * This method is like `_.sortedIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * var objects = [{ 'x': 4 }, { 'x': 5 }]; - * - * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); - * // => 0 - */ - function sortedIndexBy(array, value, iteratee) { - return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); - } - - /** - * This method is like `_.indexOf` except that it performs a binary - * search on a sorted `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.sortedIndexOf([4, 5, 5, 5, 6], 5); - * // => 1 - */ - function sortedIndexOf(array, value) { - var length = array == null ? 0 : array.length; - if (length) { - var index = baseSortedIndex(array, value); - if (index < length && eq(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * This method is like `_.sortedIndex` except that it returns the highest - * index at which `value` should be inserted into `array` in order to - * maintain its sort order. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedLastIndex([4, 5, 5, 5, 6], 5); - * // => 4 - */ - function sortedLastIndex(array, value) { - return baseSortedIndex(array, value, true); - } - - /** - * This method is like `_.sortedLastIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * var objects = [{ 'x': 4 }, { 'x': 5 }]; - * - * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); - * // => 1 - * - * // The `_.property` iteratee shorthand. - * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); - * // => 1 - */ - function sortedLastIndexBy(array, value, iteratee) { - return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); - } - - /** - * This method is like `_.lastIndexOf` except that it performs a binary - * search on a sorted `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); - * // => 3 - */ - function sortedLastIndexOf(array, value) { - var length = array == null ? 0 : array.length; - if (length) { - var index = baseSortedIndex(array, value, true) - 1; - if (eq(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * This method is like `_.uniq` except that it's designed and optimized - * for sorted arrays. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.sortedUniq([1, 1, 2]); - * // => [1, 2] - */ - function sortedUniq(array) { - return (array && array.length) - ? baseSortedUniq(array) - : []; - } - - /** - * This method is like `_.uniqBy` except that it's designed and optimized - * for sorted arrays. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); - * // => [1.1, 2.3] - */ - function sortedUniqBy(array, iteratee) { - return (array && array.length) - ? baseSortedUniq(array, getIteratee(iteratee, 2)) - : []; - } - - /** - * Gets all but the first element of `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.tail([1, 2, 3]); - * // => [2, 3] - */ - function tail(array) { - var length = array == null ? 0 : array.length; - return length ? baseSlice(array, 1, length) : []; - } - - /** - * Creates a slice of `array` with `n` elements taken from the beginning. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.take([1, 2, 3]); - * // => [1] - * - * _.take([1, 2, 3], 2); - * // => [1, 2] - * - * _.take([1, 2, 3], 5); - * // => [1, 2, 3] - * - * _.take([1, 2, 3], 0); - * // => [] - */ - function take(array, n, guard) { - if (!(array && array.length)) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - return baseSlice(array, 0, n < 0 ? 0 : n); - } - - /** - * Creates a slice of `array` with `n` elements taken from the end. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.takeRight([1, 2, 3]); - * // => [3] - * - * _.takeRight([1, 2, 3], 2); - * // => [2, 3] - * - * _.takeRight([1, 2, 3], 5); - * // => [1, 2, 3] - * - * _.takeRight([1, 2, 3], 0); - * // => [] - */ - function takeRight(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - n = length - n; - return baseSlice(array, n < 0 ? 0 : n, length); - } - - /** - * Creates a slice of `array` with elements taken from the end. Elements are - * taken until `predicate` returns falsey. The predicate is invoked with - * three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.takeRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.matches` iteratee shorthand. - * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['pebbles'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.takeRightWhile(users, ['active', false]); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.property` iteratee shorthand. - * _.takeRightWhile(users, 'active'); - * // => [] - */ - function takeRightWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), false, true) - : []; - } - - /** - * Creates a slice of `array` with elements taken from the beginning. Elements - * are taken until `predicate` returns falsey. The predicate is invoked with - * three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.takeWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney', 'fred'] - * - * // The `_.matches` iteratee shorthand. - * _.takeWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.takeWhile(users, ['active', false]); - * // => objects for ['barney', 'fred'] - * - * // The `_.property` iteratee shorthand. - * _.takeWhile(users, 'active'); - * // => [] - */ - function takeWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3)) - : []; - } - - /** - * Creates an array of unique values, in order, from all given arrays using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of combined values. - * @example - * - * _.union([2], [1, 2]); - * // => [2, 1] - */ - var union = baseRest(function(arrays) { - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); - }); - - /** - * This method is like `_.union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by - * which uniqueness is computed. Result values are chosen from the first - * array in which the value occurs. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of combined values. - * @example - * - * _.unionBy([2.1], [1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - * - * // The `_.property` iteratee shorthand. - * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - var unionBy = baseRest(function(arrays) { - var iteratee = last(arrays); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); - }); - - /** - * This method is like `_.union` except that it accepts `comparator` which - * is invoked to compare elements of `arrays`. Result values are chosen from - * the first array in which the value occurs. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of combined values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.unionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ - var unionWith = baseRest(function(arrays) { - var comparator = last(arrays); - comparator = typeof comparator == 'function' ? comparator : undefined; - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator); - }); - - /** - * Creates a duplicate-free version of an array, using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons, in which only the first occurrence of each element - * is kept. The order of result values is determined by the order they occur - * in the array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.uniq([2, 1, 2]); - * // => [2, 1] - */ - function uniq(array) { - return (array && array.length) ? baseUniq(array) : []; - } - - /** - * This method is like `_.uniq` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the criterion by which - * uniqueness is computed. The order of result values is determined by the - * order they occur in the array. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.uniqBy([2.1, 1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - * - * // The `_.property` iteratee shorthand. - * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - function uniqBy(array, iteratee) { - return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : []; - } - - /** - * This method is like `_.uniq` except that it accepts `comparator` which - * is invoked to compare elements of `array`. The order of result values is - * determined by the order they occur in the array.The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.uniqWith(objects, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] - */ - function uniqWith(array, comparator) { - comparator = typeof comparator == 'function' ? comparator : undefined; - return (array && array.length) ? baseUniq(array, undefined, comparator) : []; - } - - /** - * This method is like `_.zip` except that it accepts an array of grouped - * elements and creates an array regrouping the elements to their pre-zip - * configuration. - * - * @static - * @memberOf _ - * @since 1.2.0 - * @category Array - * @param {Array} array The array of grouped elements to process. - * @returns {Array} Returns the new array of regrouped elements. - * @example - * - * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); - * // => [['a', 1, true], ['b', 2, false]] - * - * _.unzip(zipped); - * // => [['a', 'b'], [1, 2], [true, false]] - */ - function unzip(array) { - if (!(array && array.length)) { - return []; - } - var length = 0; - array = arrayFilter(array, function(group) { - if (isArrayLikeObject(group)) { - length = nativeMax(group.length, length); - return true; - } - }); - return baseTimes(length, function(index) { - return arrayMap(array, baseProperty(index)); - }); - } - - /** - * This method is like `_.unzip` except that it accepts `iteratee` to specify - * how regrouped values should be combined. The iteratee is invoked with the - * elements of each group: (...group). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Array - * @param {Array} array The array of grouped elements to process. - * @param {Function} [iteratee=_.identity] The function to combine - * regrouped values. - * @returns {Array} Returns the new array of regrouped elements. - * @example - * - * var zipped = _.zip([1, 2], [10, 20], [100, 200]); - * // => [[1, 10, 100], [2, 20, 200]] - * - * _.unzipWith(zipped, _.add); - * // => [3, 30, 300] - */ - function unzipWith(array, iteratee) { - if (!(array && array.length)) { - return []; - } - var result = unzip(array); - if (iteratee == null) { - return result; - } - return arrayMap(result, function(group) { - return apply(iteratee, undefined, group); - }); - } - - /** - * Creates an array excluding all given values using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * **Note:** Unlike `_.pull`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...*} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @see _.difference, _.xor - * @example - * - * _.without([2, 1, 2, 3], 1, 2); - * // => [3] - */ - var without = baseRest(function(array, values) { - return isArrayLikeObject(array) - ? baseDifference(array, values) - : []; - }); - - /** - * Creates an array of unique values that is the - * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) - * of the given arrays. The order of result values is determined by the order - * they occur in the arrays. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of filtered values. - * @see _.difference, _.without - * @example - * - * _.xor([2, 1], [2, 3]); - * // => [1, 3] - */ - var xor = baseRest(function(arrays) { - return baseXor(arrayFilter(arrays, isArrayLikeObject)); - }); - - /** - * This method is like `_.xor` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by - * which by which they're compared. The order of result values is determined - * by the order they occur in the arrays. The iteratee is invoked with one - * argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [1.2, 3.4] - * - * // The `_.property` iteratee shorthand. - * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] - */ - var xorBy = baseRest(function(arrays) { - var iteratee = last(arrays); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); - }); - - /** - * This method is like `_.xor` except that it accepts `comparator` which is - * invoked to compare elements of `arrays`. The order of result values is - * determined by the order they occur in the arrays. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.xorWith(objects, others, _.isEqual); - * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ - var xorWith = baseRest(function(arrays) { - var comparator = last(arrays); - comparator = typeof comparator == 'function' ? comparator : undefined; - return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator); - }); - - /** - * Creates an array of grouped elements, the first of which contains the - * first elements of the given arrays, the second of which contains the - * second elements of the given arrays, and so on. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @returns {Array} Returns the new array of grouped elements. - * @example - * - * _.zip(['a', 'b'], [1, 2], [true, false]); - * // => [['a', 1, true], ['b', 2, false]] - */ - var zip = baseRest(unzip); - - /** - * This method is like `_.fromPairs` except that it accepts two arrays, - * one of property identifiers and one of corresponding values. - * - * @static - * @memberOf _ - * @since 0.4.0 - * @category Array - * @param {Array} [props=[]] The property identifiers. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example - * - * _.zipObject(['a', 'b'], [1, 2]); - * // => { 'a': 1, 'b': 2 } - */ - function zipObject(props, values) { - return baseZipObject(props || [], values || [], assignValue); - } - - /** - * This method is like `_.zipObject` except that it supports property paths. - * - * @static - * @memberOf _ - * @since 4.1.0 - * @category Array - * @param {Array} [props=[]] The property identifiers. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example - * - * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); - * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } - */ - function zipObjectDeep(props, values) { - return baseZipObject(props || [], values || [], baseSet); - } - - /** - * This method is like `_.zip` except that it accepts `iteratee` to specify - * how grouped values should be combined. The iteratee is invoked with the - * elements of each group: (...group). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @param {Function} [iteratee=_.identity] The function to combine - * grouped values. - * @returns {Array} Returns the new array of grouped elements. - * @example - * - * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { - * return a + b + c; - * }); - * // => [111, 222] - */ - var zipWith = baseRest(function(arrays) { - var length = arrays.length, - iteratee = length > 1 ? arrays[length - 1] : undefined; - - iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined; - return unzipWith(arrays, iteratee); - }); - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` wrapper instance that wraps `value` with explicit method - * chain sequences enabled. The result of such sequences must be unwrapped - * with `_#value`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Seq - * @param {*} value The value to wrap. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'pebbles', 'age': 1 } - * ]; - * - * var youngest = _ - * .chain(users) - * .sortBy('age') - * .map(function(o) { - * return o.user + ' is ' + o.age; - * }) - * .head() - * .value(); - * // => 'pebbles is 1' - */ - function chain(value) { - var result = lodash(value); - result.__chain__ = true; - return result; - } - - /** - * This method invokes `interceptor` and returns `value`. The interceptor - * is invoked with one argument; (value). The purpose of this method is to - * "tap into" a method chain sequence in order to modify intermediate results. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns `value`. - * @example - * - * _([1, 2, 3]) - * .tap(function(array) { - * // Mutate input array. - * array.pop(); - * }) - * .reverse() - * .value(); - * // => [2, 1] - */ - function tap(value, interceptor) { - interceptor(value); - return value; - } - - /** - * This method is like `_.tap` except that it returns the result of `interceptor`. - * The purpose of this method is to "pass thru" values replacing intermediate - * results in a method chain sequence. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns the result of `interceptor`. - * @example - * - * _(' abc ') - * .chain() - * .trim() - * .thru(function(value) { - * return [value]; - * }) - * .value(); - * // => ['abc'] - */ - function thru(value, interceptor) { - return interceptor(value); - } - - /** - * This method is the wrapper version of `_.at`. - * - * @name at - * @memberOf _ - * @since 1.0.0 - * @category Seq - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; - * - * _(object).at(['a[0].b.c', 'a[1]']).value(); - * // => [3, 4] - */ - var wrapperAt = flatRest(function(paths) { - var length = paths.length, - start = length ? paths[0] : 0, - value = this.__wrapped__, - interceptor = function(object) { return baseAt(object, paths); }; - - if (length > 1 || this.__actions__.length || - !(value instanceof LazyWrapper) || !isIndex(start)) { - return this.thru(interceptor); - } - value = value.slice(start, +start + (length ? 1 : 0)); - value.__actions__.push({ - 'func': thru, - 'args': [interceptor], - 'thisArg': undefined - }); - return new LodashWrapper(value, this.__chain__).thru(function(array) { - if (length && !array.length) { - array.push(undefined); - } - return array; - }); - }); - - /** - * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. - * - * @name chain - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 } - * ]; - * - * // A sequence without explicit chaining. - * _(users).head(); - * // => { 'user': 'barney', 'age': 36 } - * - * // A sequence with explicit chaining. - * _(users) - * .chain() - * .head() - * .pick('user') - * .value(); - * // => { 'user': 'barney' } - */ - function wrapperChain() { - return chain(this); - } - - /** - * Executes the chain sequence and returns the wrapped result. - * - * @name commit - * @memberOf _ - * @since 3.2.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2]; - * var wrapped = _(array).push(3); - * - * console.log(array); - * // => [1, 2] - * - * wrapped = wrapped.commit(); - * console.log(array); - * // => [1, 2, 3] - * - * wrapped.last(); - * // => 3 - * - * console.log(array); - * // => [1, 2, 3] - */ - function wrapperCommit() { - return new LodashWrapper(this.value(), this.__chain__); - } - - /** - * Gets the next value on a wrapped object following the - * [iterator protocol](https://mdn.io/iteration_protocols#iterator). - * - * @name next - * @memberOf _ - * @since 4.0.0 - * @category Seq - * @returns {Object} Returns the next iterator value. - * @example - * - * var wrapped = _([1, 2]); - * - * wrapped.next(); - * // => { 'done': false, 'value': 1 } - * - * wrapped.next(); - * // => { 'done': false, 'value': 2 } - * - * wrapped.next(); - * // => { 'done': true, 'value': undefined } - */ - function wrapperNext() { - if (this.__values__ === undefined) { - this.__values__ = toArray(this.value()); - } - var done = this.__index__ >= this.__values__.length, - value = done ? undefined : this.__values__[this.__index__++]; - - return { 'done': done, 'value': value }; - } - - /** - * Enables the wrapper to be iterable. - * - * @name Symbol.iterator - * @memberOf _ - * @since 4.0.0 - * @category Seq - * @returns {Object} Returns the wrapper object. - * @example - * - * var wrapped = _([1, 2]); - * - * wrapped[Symbol.iterator]() === wrapped; - * // => true - * - * Array.from(wrapped); - * // => [1, 2] - */ - function wrapperToIterator() { - return this; - } - - /** - * Creates a clone of the chain sequence planting `value` as the wrapped value. - * - * @name plant - * @memberOf _ - * @since 3.2.0 - * @category Seq - * @param {*} value The value to plant. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var wrapped = _([1, 2]).map(square); - * var other = wrapped.plant([3, 4]); - * - * other.value(); - * // => [9, 16] - * - * wrapped.value(); - * // => [1, 4] - */ - function wrapperPlant(value) { - var result, - parent = this; - - while (parent instanceof baseLodash) { - var clone = wrapperClone(parent); - clone.__index__ = 0; - clone.__values__ = undefined; - if (result) { - previous.__wrapped__ = clone; - } else { - result = clone; - } - var previous = clone; - parent = parent.__wrapped__; - } - previous.__wrapped__ = value; - return result; - } - - /** - * This method is the wrapper version of `_.reverse`. - * - * **Note:** This method mutates the wrapped array. - * - * @name reverse - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2, 3]; - * - * _(array).reverse().value() - * // => [3, 2, 1] - * - * console.log(array); - * // => [3, 2, 1] - */ - function wrapperReverse() { - var value = this.__wrapped__; - if (value instanceof LazyWrapper) { - var wrapped = value; - if (this.__actions__.length) { - wrapped = new LazyWrapper(this); - } - wrapped = wrapped.reverse(); - wrapped.__actions__.push({ - 'func': thru, - 'args': [reverse], - 'thisArg': undefined - }); - return new LodashWrapper(wrapped, this.__chain__); - } - return this.thru(reverse); - } - - /** - * Executes the chain sequence to resolve the unwrapped value. - * - * @name value - * @memberOf _ - * @since 0.1.0 - * @alias toJSON, valueOf - * @category Seq - * @returns {*} Returns the resolved unwrapped value. - * @example - * - * _([1, 2, 3]).value(); - * // => [1, 2, 3] - */ - function wrapperValue() { - return baseWrapperValue(this.__wrapped__, this.__actions__); - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The corresponding value of - * each key is the number of times the key was returned by `iteratee`. The - * iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.countBy([6.1, 4.2, 6.3], Math.floor); - * // => { '4': 1, '6': 2 } - * - * // The `_.property` iteratee shorthand. - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } - */ - var countBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - ++result[key]; - } else { - baseAssignValue(result, key, 1); - } - }); - - /** - * Checks if `predicate` returns truthy for **all** elements of `collection`. - * Iteration is stopped once `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * **Note:** This method returns `true` for - * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because - * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of - * elements of empty collections. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes'], Boolean); - * // => false - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.every(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.every(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.every(users, 'active'); - * // => false - */ - function every(collection, predicate, guard) { - var func = isArray(collection) ? arrayEvery : baseEvery; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined; - } - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Iterates over elements of `collection`, returning an array of all elements - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * **Note:** Unlike `_.remove`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.reject - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * _.filter(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, { 'age': 36, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.filter(users, 'active'); - * // => objects for ['barney'] - * - * // Combining several predicates using `_.overEvery` or `_.overSome`. - * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); - * // => objects for ['fred', 'barney'] - */ - function filter(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Iterates over elements of `collection`, returning the first element - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false }, - * { 'user': 'pebbles', 'age': 1, 'active': true } - * ]; - * - * _.find(users, function(o) { return o.age < 40; }); - * // => object for 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.find(users, { 'age': 1, 'active': true }); - * // => object for 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.find(users, ['active', false]); - * // => object for 'fred' - * - * // The `_.property` iteratee shorthand. - * _.find(users, 'active'); - * // => object for 'barney' - */ - var find = createFind(findIndex); - - /** - * This method is like `_.find` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=collection.length-1] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * _.findLast([1, 2, 3, 4], function(n) { - * return n % 2 == 1; - * }); - * // => 3 - */ - var findLast = createFind(findLastIndex); - - /** - * Creates a flattened array of values by running each element in `collection` - * thru `iteratee` and flattening the mapped results. The iteratee is invoked - * with three arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [n, n]; - * } - * - * _.flatMap([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ - function flatMap(collection, iteratee) { - return baseFlatten(map(collection, iteratee), 1); - } - - /** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * _.flatMapDeep([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ - function flatMapDeep(collection, iteratee) { - return baseFlatten(map(collection, iteratee), INFINITY); - } - - /** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results up to `depth` times. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * _.flatMapDepth([1, 2], duplicate, 2); - * // => [[1, 1], [2, 2]] - */ - function flatMapDepth(collection, iteratee, depth) { - depth = depth === undefined ? 1 : toInteger(depth); - return baseFlatten(map(collection, iteratee), depth); - } - - /** - * Iterates over elements of `collection` and invokes `iteratee` for each element. - * The iteratee is invoked with three arguments: (value, index|key, collection). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * **Note:** As with other "Collections" methods, objects with a "length" - * property are iterated like arrays. To avoid this behavior use `_.forIn` - * or `_.forOwn` for object iteration. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias each - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEachRight - * @example - * - * _.forEach([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `1` then `2`. - * - * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ - function forEach(collection, iteratee) { - var func = isArray(collection) ? arrayEach : baseEach; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.forEach` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @alias eachRight - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEach - * @example - * - * _.forEachRight([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `2` then `1`. - */ - function forEachRight(collection, iteratee) { - var func = isArray(collection) ? arrayEachRight : baseEachRight; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The order of grouped values - * is determined by the order they occur in `collection`. The corresponding - * value of each key is an array of elements responsible for generating the - * key. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([6.1, 4.2, 6.3], Math.floor); - * // => { '4': [4.2], '6': [6.1, 6.3] } - * - * // The `_.property` iteratee shorthand. - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } - */ - var groupBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - result[key].push(value); - } else { - baseAssignValue(result, key, [value]); - } - }); - - /** - * Checks if `value` is in `collection`. If `collection` is a string, it's - * checked for a substring of `value`, otherwise - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * is used for equality comparisons. If `fromIndex` is negative, it's used as - * the offset from the end of `collection`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. - * @returns {boolean} Returns `true` if `value` is found, else `false`. - * @example - * - * _.includes([1, 2, 3], 1); - * // => true - * - * _.includes([1, 2, 3], 1, 2); - * // => false - * - * _.includes({ 'a': 1, 'b': 2 }, 1); - * // => true - * - * _.includes('abcd', 'bc'); - * // => true - */ - function includes(collection, value, fromIndex, guard) { - collection = isArrayLike(collection) ? collection : values(collection); - fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; - - var length = collection.length; - if (fromIndex < 0) { - fromIndex = nativeMax(length + fromIndex, 0); - } - return isString(collection) - ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) - : (!!length && baseIndexOf(collection, value, fromIndex) > -1); - } - - /** - * Invokes the method at `path` of each element in `collection`, returning - * an array of the results of each invoked method. Any additional arguments - * are provided to each invoked method. If `path` is a function, it's invoked - * for, and `this` bound to, each element in `collection`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Array|Function|string} path The path of the method to invoke or - * the function invoked per iteration. - * @param {...*} [args] The arguments to invoke each method with. - * @returns {Array} Returns the array of results. - * @example - * - * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * _.invokeMap([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] - */ - var invokeMap = baseRest(function(collection, path, args) { - var index = -1, - isFunc = typeof path == 'function', - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value) { - result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); - }); - return result; - }); - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The corresponding value of - * each key is the last element responsible for generating the key. The - * iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * var array = [ - * { 'dir': 'left', 'code': 97 }, - * { 'dir': 'right', 'code': 100 } - * ]; - * - * _.keyBy(array, function(o) { - * return String.fromCharCode(o.code); - * }); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - * - * _.keyBy(array, 'dir'); - * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } - */ - var keyBy = createAggregator(function(result, value, key) { - baseAssignValue(result, key, value); - }); - - /** - * Creates an array of values by running each element in `collection` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. - * - * The guarded methods are: - * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, - * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, - * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, - * `template`, `trim`, `trimEnd`, `trimStart`, and `words` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - * @example - * - * function square(n) { - * return n * n; - * } - * - * _.map([4, 8], square); - * // => [16, 64] - * - * _.map({ 'a': 4, 'b': 8 }, square); - * // => [16, 64] (iteration order is not guaranteed) - * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; - * - * // The `_.property` iteratee shorthand. - * _.map(users, 'user'); - * // => ['barney', 'fred'] - */ - function map(collection, iteratee) { - var func = isArray(collection) ? arrayMap : baseMap; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.sortBy` except that it allows specifying the sort - * orders of the iteratees to sort by. If `orders` is unspecified, all values - * are sorted in ascending order. Otherwise, specify an order of "desc" for - * descending or "asc" for ascending sort order of corresponding values. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] - * The iteratees to sort by. - * @param {string[]} [orders] The sort orders of `iteratees`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 34 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'barney', 'age': 36 } - * ]; - * - * // Sort by `user` in ascending order and by `age` in descending order. - * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] - */ - function orderBy(collection, iteratees, orders, guard) { - if (collection == null) { - return []; - } - if (!isArray(iteratees)) { - iteratees = iteratees == null ? [] : [iteratees]; - } - orders = guard ? undefined : orders; - if (!isArray(orders)) { - orders = orders == null ? [] : [orders]; - } - return baseOrderBy(collection, iteratees, orders); - } - - /** - * Creates an array of elements split into two groups, the first of which - * contains elements `predicate` returns truthy for, the second of which - * contains elements `predicate` returns falsey for. The predicate is - * invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the array of grouped elements. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true }, - * { 'user': 'pebbles', 'age': 1, 'active': false } - * ]; - * - * _.partition(users, function(o) { return o.active; }); - * // => objects for [['fred'], ['barney', 'pebbles']] - * - * // The `_.matches` iteratee shorthand. - * _.partition(users, { 'age': 1, 'active': false }); - * // => objects for [['pebbles'], ['barney', 'fred']] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.partition(users, ['active', false]); - * // => objects for [['barney', 'pebbles'], ['fred']] - * - * // The `_.property` iteratee shorthand. - * _.partition(users, 'active'); - * // => objects for [['fred'], ['barney', 'pebbles']] - */ - var partition = createAggregator(function(result, value, key) { - result[key ? 0 : 1].push(value); - }, function() { return [[], []]; }); - - /** - * Reduces `collection` to a value which is the accumulated result of running - * each element in `collection` thru `iteratee`, where each successive - * invocation is supplied the return value of the previous. If `accumulator` - * is not given, the first element of `collection` is used as the initial - * value. The iteratee is invoked with four arguments: - * (accumulator, value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.reduce`, `_.reduceRight`, and `_.transform`. - * - * The guarded methods are: - * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, - * and `sortBy` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @returns {*} Returns the accumulated value. - * @see _.reduceRight - * @example - * - * _.reduce([1, 2], function(sum, n) { - * return sum + n; - * }, 0); - * // => 3 - * - * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * return result; - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) - */ - function reduce(collection, iteratee, accumulator) { - var func = isArray(collection) ? arrayReduce : baseReduce, - initAccum = arguments.length < 3; - - return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach); - } - - /** - * This method is like `_.reduce` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @returns {*} Returns the accumulated value. - * @see _.reduce - * @example - * - * var array = [[0, 1], [2, 3], [4, 5]]; - * - * _.reduceRight(array, function(flattened, other) { - * return flattened.concat(other); - * }, []); - * // => [4, 5, 2, 3, 0, 1] - */ - function reduceRight(collection, iteratee, accumulator) { - var func = isArray(collection) ? arrayReduceRight : baseReduce, - initAccum = arguments.length < 3; - - return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); - } - - /** - * The opposite of `_.filter`; this method returns the elements of `collection` - * that `predicate` does **not** return truthy for. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.filter - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true } - * ]; - * - * _.reject(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.reject(users, { 'age': 40, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.reject(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.reject(users, 'active'); - * // => objects for ['barney'] - */ - function reject(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, negate(getIteratee(predicate, 3))); - } - - /** - * Gets a random element from `collection`. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Collection - * @param {Array|Object} collection The collection to sample. - * @returns {*} Returns the random element. - * @example - * - * _.sample([1, 2, 3, 4]); - * // => 2 - */ - function sample(collection) { - var func = isArray(collection) ? arraySample : baseSample; - return func(collection); - } - - /** - * Gets `n` random elements at unique keys from `collection` up to the - * size of `collection`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to sample. - * @param {number} [n=1] The number of elements to sample. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the random elements. - * @example - * - * _.sampleSize([1, 2, 3], 2); - * // => [3, 1] - * - * _.sampleSize([1, 2, 3], 4); - * // => [2, 3, 1] - */ - function sampleSize(collection, n, guard) { - if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) { - n = 1; - } else { - n = toInteger(n); - } - var func = isArray(collection) ? arraySampleSize : baseSampleSize; - return func(collection, n); - } - - /** - * Creates an array of shuffled values, using a version of the - * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to shuffle. - * @returns {Array} Returns the new shuffled array. - * @example - * - * _.shuffle([1, 2, 3, 4]); - * // => [4, 1, 3, 2] - */ - function shuffle(collection) { - var func = isArray(collection) ? arrayShuffle : baseShuffle; - return func(collection); - } - - /** - * Gets the size of `collection` by returning its length for array-like - * values or the number of own enumerable string keyed properties for objects. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns the collection size. - * @example - * - * _.size([1, 2, 3]); - * // => 3 - * - * _.size({ 'a': 1, 'b': 2 }); - * // => 2 - * - * _.size('pebbles'); - * // => 7 - */ - function size(collection) { - if (collection == null) { - return 0; - } - if (isArrayLike(collection)) { - return isString(collection) ? stringSize(collection) : collection.length; - } - var tag = getTag(collection); - if (tag == mapTag || tag == setTag) { - return collection.size; - } - return baseKeys(collection).length; - } - - /** - * Checks if `predicate` returns truthy for **any** element of `collection`. - * Iteration is stopped once `predicate` returns truthy. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - * @example - * - * _.some([null, 0, 'yes', false], Boolean); - * // => true - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.some(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.some(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.some(users, 'active'); - * // => true - */ - function some(collection, predicate, guard) { - var func = isArray(collection) ? arraySome : baseSome; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined; - } - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection thru each iteratee. This method - * performs a stable sort, that is, it preserves the original sort order of - * equal elements. The iteratees are invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {...(Function|Function[])} [iteratees=[_.identity]] - * The iteratees to sort by. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 30 }, - * { 'user': 'barney', 'age': 34 } - * ]; - * - * _.sortBy(users, [function(o) { return o.user; }]); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] - * - * _.sortBy(users, ['user', 'age']); - * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] - */ - var sortBy = baseRest(function(collection, iteratees) { - if (collection == null) { - return []; - } - var length = iteratees.length; - if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { - iteratees = []; - } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { - iteratees = [iteratees[0]]; - } - return baseOrderBy(collection, baseFlatten(iteratees, 1), []); - }); - - /*------------------------------------------------------------------------*/ - - /** - * Gets the timestamp of the number of milliseconds that have elapsed since - * the Unix epoch (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Date - * @returns {number} Returns the timestamp. - * @example - * - * _.defer(function(stamp) { - * console.log(_.now() - stamp); - * }, _.now()); - * // => Logs the number of milliseconds it took for the deferred invocation. - */ - var now = ctxNow || function() { - return root.Date.now(); - }; - - /*------------------------------------------------------------------------*/ - - /** - * The opposite of `_.before`; this method creates a function that invokes - * `func` once it's called `n` or more times. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {number} n The number of calls before `func` is invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var saves = ['profile', 'settings']; - * - * var done = _.after(saves.length, function() { - * console.log('done saving!'); - * }); - * - * _.forEach(saves, function(type) { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => Logs 'done saving!' after the two async saves have completed. - */ - function after(n, func) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; - } - - /** - * Creates a function that invokes `func`, with up to `n` arguments, - * ignoring any additional arguments. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to cap arguments for. - * @param {number} [n=func.length] The arity cap. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new capped function. - * @example - * - * _.map(['6', '8', '10'], _.ary(parseInt, 1)); - * // => [6, 8, 10] - */ - function ary(func, n, guard) { - n = guard ? undefined : n; - n = (func && n == null) ? func.length : n; - return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n); - } - - /** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it's called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {number} n The number of calls at which `func` is no longer invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * jQuery(element).on('click', _.before(5, addContactToList)); - * // => Allows adding up to 4 contacts to the list. - */ - function before(n, func) { - var result; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n > 0) { - result = func.apply(this, arguments); - } - if (n <= 1) { - func = undefined; - } - return result; - }; - } - - /** - * Creates a function that invokes `func` with the `this` binding of `thisArg` - * and `partials` prepended to the arguments it receives. - * - * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for partially applied arguments. - * - * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" - * property of bound functions. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to bind. - * @param {*} thisArg The `this` binding of `func`. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * function greet(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * - * var object = { 'user': 'fred' }; - * - * var bound = _.bind(greet, object, 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * // Bound with placeholders. - * var bound = _.bind(greet, object, _, '!'); - * bound('hi'); - * // => 'hi fred!' - */ - var bind = baseRest(function(func, thisArg, partials) { - var bitmask = WRAP_BIND_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bind)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(func, bitmask, thisArg, partials, holders); - }); - - /** - * Creates a function that invokes the method at `object[key]` with `partials` - * prepended to the arguments it receives. - * - * This method differs from `_.bind` by allowing bound functions to reference - * methods that may be redefined or don't yet exist. See - * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) - * for more details. - * - * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Function - * @param {Object} object The object to invoke the method on. - * @param {string} key The key of the method. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var object = { - * 'user': 'fred', - * 'greet': function(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * }; - * - * var bound = _.bindKey(object, 'greet', 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * object.greet = function(greeting, punctuation) { - * return greeting + 'ya ' + this.user + punctuation; - * }; - * - * bound('!'); - * // => 'hiya fred!' - * - * // Bound with placeholders. - * var bound = _.bindKey(object, 'greet', _, '!'); - * bound('hi'); - * // => 'hiya fred!' - */ - var bindKey = baseRest(function(object, key, partials) { - var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bindKey)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(key, bitmask, object, partials, holders); - }); - - /** - * Creates a function that accepts arguments of `func` and either invokes - * `func` returning its result, if at least `arity` number of arguments have - * been provided, or returns a function that accepts the remaining `func` - * arguments, and so on. The arity of `func` may be specified if `func.length` - * is not sufficient. - * - * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curry(abc); - * - * curried(1)(2)(3); - * // => [1, 2, 3] - * - * curried(1, 2)(3); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // Curried with placeholders. - * curried(1)(_, 3)(2); - * // => [1, 2, 3] - */ - function curry(func, arity, guard) { - arity = guard ? undefined : arity; - var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); - result.placeholder = curry.placeholder; - return result; - } - - /** - * This method is like `_.curry` except that arguments are applied to `func` - * in the manner of `_.partialRight` instead of `_.partial`. - * - * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curryRight(abc); - * - * curried(3)(2)(1); - * // => [1, 2, 3] - * - * curried(2, 3)(1); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // Curried with placeholders. - * curried(3)(1, _)(2); - * // => [1, 2, 3] - */ - function curryRight(func, arity, guard) { - arity = guard ? undefined : arity; - var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); - result.placeholder = curryRight.placeholder; - return result; - } - - /** - * Creates a debounced function that delays invoking `func` until after `wait` - * milliseconds have elapsed since the last time the debounced function was - * invoked. The debounced function comes with a `cancel` method to cancel - * delayed `func` invocations and a `flush` method to immediately invoke them. - * Provide `options` to indicate whether `func` should be invoked on the - * leading and/or trailing edge of the `wait` timeout. The `func` is invoked - * with the last arguments provided to the debounced function. Subsequent - * calls to the debounced function return the result of the last `func` - * invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the debounced function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.debounce` and `_.throttle`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to debounce. - * @param {number} [wait=0] The number of milliseconds to delay. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=false] - * Specify invoking on the leading edge of the timeout. - * @param {number} [options.maxWait] - * The maximum time `func` is allowed to be delayed before it's invoked. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // Avoid costly calculations while the window size is in flux. - * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); - * - * // Invoke `sendMail` when clicked, debouncing subsequent calls. - * jQuery(element).on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * })); - * - * // Ensure `batchLog` is invoked once after 1 second of debounced calls. - * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); - * var source = new EventSource('/stream'); - * jQuery(source).on('message', debounced); - * - * // Cancel the trailing debounced invocation. - * jQuery(window).on('popstate', debounced.cancel); - */ - function debounce(func, wait, options) { - var lastArgs, - lastThis, - maxWait, - result, - timerId, - lastCallTime, - lastInvokeTime = 0, - leading = false, - maxing = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - wait = toNumber(wait) || 0; - if (isObject(options)) { - leading = !!options.leading; - maxing = 'maxWait' in options; - maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - - function invokeFunc(time) { - var args = lastArgs, - thisArg = lastThis; - - lastArgs = lastThis = undefined; - lastInvokeTime = time; - result = func.apply(thisArg, args); - return result; - } - - function leadingEdge(time) { - // Reset any `maxWait` timer. - lastInvokeTime = time; - // Start the timer for the trailing edge. - timerId = setTimeout(timerExpired, wait); - // Invoke the leading edge. - return leading ? invokeFunc(time) : result; - } - - function remainingWait(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime, - timeWaiting = wait - timeSinceLastCall; - - return maxing - ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) - : timeWaiting; - } - - function shouldInvoke(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime; - - // Either this is the first call, activity has stopped and we're at the - // trailing edge, the system time has gone backwards and we're treating - // it as the trailing edge, or we've hit the `maxWait` limit. - return (lastCallTime === undefined || (timeSinceLastCall >= wait) || - (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); - } - - function timerExpired() { - var time = now(); - if (shouldInvoke(time)) { - return trailingEdge(time); - } - // Restart the timer. - timerId = setTimeout(timerExpired, remainingWait(time)); - } - - function trailingEdge(time) { - timerId = undefined; - - // Only invoke if we have `lastArgs` which means `func` has been - // debounced at least once. - if (trailing && lastArgs) { - return invokeFunc(time); - } - lastArgs = lastThis = undefined; - return result; - } - - function cancel() { - if (timerId !== undefined) { - clearTimeout(timerId); - } - lastInvokeTime = 0; - lastArgs = lastCallTime = lastThis = timerId = undefined; - } - - function flush() { - return timerId === undefined ? result : trailingEdge(now()); - } - - function debounced() { - var time = now(), - isInvoking = shouldInvoke(time); - - lastArgs = arguments; - lastThis = this; - lastCallTime = time; - - if (isInvoking) { - if (timerId === undefined) { - return leadingEdge(lastCallTime); - } - if (maxing) { - // Handle invocations in a tight loop. - clearTimeout(timerId); - timerId = setTimeout(timerExpired, wait); - return invokeFunc(lastCallTime); - } - } - if (timerId === undefined) { - timerId = setTimeout(timerExpired, wait); - } - return result; - } - debounced.cancel = cancel; - debounced.flush = flush; - return debounced; - } - - /** - * Defers invoking the `func` until the current call stack has cleared. Any - * additional arguments are provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to defer. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.defer(function(text) { - * console.log(text); - * }, 'deferred'); - * // => Logs 'deferred' after one millisecond. - */ - var defer = baseRest(function(func, args) { - return baseDelay(func, 1, args); - }); - - /** - * Invokes `func` after `wait` milliseconds. Any additional arguments are - * provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.delay(function(text) { - * console.log(text); - * }, 1000, 'later'); - * // => Logs 'later' after one second. - */ - var delay = baseRest(function(func, wait, args) { - return baseDelay(func, toNumber(wait) || 0, args); - }); - - /** - * Creates a function that invokes `func` with arguments reversed. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to flip arguments for. - * @returns {Function} Returns the new flipped function. - * @example - * - * var flipped = _.flip(function() { - * return _.toArray(arguments); - * }); - * - * flipped('a', 'b', 'c', 'd'); - * // => ['d', 'c', 'b', 'a'] - */ - function flip(func) { - return createWrap(func, WRAP_FLIP_FLAG); - } - - /** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `clear`, `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ - function memoize(func, resolver) { - if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result) || cache; - return result; - }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; - } - - // Expose `MapCache`. - memoize.Cache = MapCache; - - /** - * Creates a function that negates the result of the predicate `func`. The - * `func` predicate is invoked with the `this` binding and arguments of the - * created function. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} predicate The predicate to negate. - * @returns {Function} Returns the new negated function. - * @example - * - * function isEven(n) { - * return n % 2 == 0; - * } - * - * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); - * // => [1, 3, 5] - */ - function negate(predicate) { - if (typeof predicate != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return function() { - var args = arguments; - switch (args.length) { - case 0: return !predicate.call(this); - case 1: return !predicate.call(this, args[0]); - case 2: return !predicate.call(this, args[0], args[1]); - case 3: return !predicate.call(this, args[0], args[1], args[2]); - } - return !predicate.apply(this, args); - }; - } - - /** - * Creates a function that is restricted to invoking `func` once. Repeat calls - * to the function return the value of the first invocation. The `func` is - * invoked with the `this` binding and arguments of the created function. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // => `createApplication` is invoked once - */ - function once(func) { - return before(2, func); - } - - /** - * Creates a function that invokes `func` with its arguments transformed. - * - * @static - * @since 4.0.0 - * @memberOf _ - * @category Function - * @param {Function} func The function to wrap. - * @param {...(Function|Function[])} [transforms=[_.identity]] - * The argument transforms. - * @returns {Function} Returns the new function. - * @example - * - * function doubled(n) { - * return n * 2; - * } - * - * function square(n) { - * return n * n; - * } - * - * var func = _.overArgs(function(x, y) { - * return [x, y]; - * }, [square, doubled]); - * - * func(9, 3); - * // => [81, 6] - * - * func(10, 5); - * // => [100, 10] - */ - var overArgs = castRest(function(func, transforms) { - transforms = (transforms.length == 1 && isArray(transforms[0])) - ? arrayMap(transforms[0], baseUnary(getIteratee())) - : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); - - var funcsLength = transforms.length; - return baseRest(function(args) { - var index = -1, - length = nativeMin(args.length, funcsLength); - - while (++index < length) { - args[index] = transforms[index].call(this, args[index]); - } - return apply(func, this, args); - }); - }); - - /** - * Creates a function that invokes `func` with `partials` prepended to the - * arguments it receives. This method is like `_.bind` except it does **not** - * alter the `this` binding. - * - * The `_.partial.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method doesn't set the "length" property of partially - * applied functions. - * - * @static - * @memberOf _ - * @since 0.2.0 - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * function greet(greeting, name) { - * return greeting + ' ' + name; - * } - * - * var sayHelloTo = _.partial(greet, 'hello'); - * sayHelloTo('fred'); - * // => 'hello fred' - * - * // Partially applied with placeholders. - * var greetFred = _.partial(greet, _, 'fred'); - * greetFred('hi'); - * // => 'hi fred' - */ - var partial = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partial)); - return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders); - }); - - /** - * This method is like `_.partial` except that partially applied arguments - * are appended to the arguments it receives. - * - * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method doesn't set the "length" property of partially - * applied functions. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * function greet(greeting, name) { - * return greeting + ' ' + name; - * } - * - * var greetFred = _.partialRight(greet, 'fred'); - * greetFred('hi'); - * // => 'hi fred' - * - * // Partially applied with placeholders. - * var sayHelloTo = _.partialRight(greet, 'hello', _); - * sayHelloTo('fred'); - * // => 'hello fred' - */ - var partialRight = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partialRight)); - return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders); - }); - - /** - * Creates a function that invokes `func` with arguments arranged according - * to the specified `indexes` where the argument value at the first index is - * provided as the first argument, the argument value at the second index is - * provided as the second argument, and so on. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to rearrange arguments for. - * @param {...(number|number[])} indexes The arranged argument indexes. - * @returns {Function} Returns the new function. - * @example - * - * var rearged = _.rearg(function(a, b, c) { - * return [a, b, c]; - * }, [2, 0, 1]); - * - * rearged('b', 'c', 'a') - * // => ['a', 'b', 'c'] - */ - var rearg = flatRest(function(func, indexes) { - return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes); - }); - - /** - * Creates a function that invokes `func` with the `this` binding of the - * created function and arguments from `start` and beyond provided as - * an array. - * - * **Note:** This method is based on the - * [rest parameter](https://mdn.io/rest_parameters). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - * @example - * - * var say = _.rest(function(what, names) { - * return what + ' ' + _.initial(names).join(', ') + - * (_.size(names) > 1 ? ', & ' : '') + _.last(names); - * }); - * - * say('hello', 'fred', 'barney', 'pebbles'); - * // => 'hello fred, barney, & pebbles' - */ - function rest(func, start) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - start = start === undefined ? start : toInteger(start); - return baseRest(func, start); - } - - /** - * Creates a function that invokes `func` with the `this` binding of the - * create function and an array of arguments much like - * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). - * - * **Note:** This method is based on the - * [spread operator](https://mdn.io/spread_operator). - * - * @static - * @memberOf _ - * @since 3.2.0 - * @category Function - * @param {Function} func The function to spread arguments over. - * @param {number} [start=0] The start position of the spread. - * @returns {Function} Returns the new function. - * @example - * - * var say = _.spread(function(who, what) { - * return who + ' says ' + what; - * }); - * - * say(['fred', 'hello']); - * // => 'fred says hello' - * - * var numbers = Promise.all([ - * Promise.resolve(40), - * Promise.resolve(36) - * ]); - * - * numbers.then(_.spread(function(x, y) { - * return x + y; - * })); - * // => a Promise of 76 - */ - function spread(func, start) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - start = start == null ? 0 : nativeMax(toInteger(start), 0); - return baseRest(function(args) { - var array = args[start], - otherArgs = castSlice(args, 0, start); - - if (array) { - arrayPush(otherArgs, array); - } - return apply(func, this, otherArgs); - }); - } - - /** - * Creates a throttled function that only invokes `func` at most once per - * every `wait` milliseconds. The throttled function comes with a `cancel` - * method to cancel delayed `func` invocations and a `flush` method to - * immediately invoke them. Provide `options` to indicate whether `func` - * should be invoked on the leading and/or trailing edge of the `wait` - * timeout. The `func` is invoked with the last arguments provided to the - * throttled function. Subsequent calls to the throttled function return the - * result of the last `func` invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the throttled function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.throttle` and `_.debounce`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to throttle. - * @param {number} [wait=0] The number of milliseconds to throttle invocations to. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=true] - * Specify invoking on the leading edge of the timeout. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new throttled function. - * @example - * - * // Avoid excessively updating the position while scrolling. - * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); - * - * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. - * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); - * jQuery(element).on('click', throttled); - * - * // Cancel the trailing throttled invocation. - * jQuery(window).on('popstate', throttled.cancel); - */ - function throttle(func, wait, options) { - var leading = true, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (isObject(options)) { - leading = 'leading' in options ? !!options.leading : leading; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - return debounce(func, wait, { - 'leading': leading, - 'maxWait': wait, - 'trailing': trailing - }); - } - - /** - * Creates a function that accepts up to one argument, ignoring any - * additional arguments. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - * @example - * - * _.map(['6', '8', '10'], _.unary(parseInt)); - * // => [6, 8, 10] - */ - function unary(func) { - return ary(func, 1); - } - - /** - * Creates a function that provides `value` to `wrapper` as its first - * argument. Any additional arguments provided to the function are appended - * to those provided to the `wrapper`. The wrapper is invoked with the `this` - * binding of the created function. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {*} value The value to wrap. - * @param {Function} [wrapper=identity] The wrapper function. - * @returns {Function} Returns the new function. - * @example - * - * var p = _.wrap(_.escape, function(func, text) { - * return '

' + func(text) + '

'; - * }); - * - * p('fred, barney, & pebbles'); - * // => '

fred, barney, & pebbles

' - */ - function wrap(value, wrapper) { - return partial(castFunction(wrapper), value); - } - - /*------------------------------------------------------------------------*/ - - /** - * Casts `value` as an array if it's not one. - * - * @static - * @memberOf _ - * @since 4.4.0 - * @category Lang - * @param {*} value The value to inspect. - * @returns {Array} Returns the cast array. - * @example - * - * _.castArray(1); - * // => [1] - * - * _.castArray({ 'a': 1 }); - * // => [{ 'a': 1 }] - * - * _.castArray('abc'); - * // => ['abc'] - * - * _.castArray(null); - * // => [null] - * - * _.castArray(undefined); - * // => [undefined] - * - * _.castArray(); - * // => [] - * - * var array = [1, 2, 3]; - * console.log(_.castArray(array) === array); - * // => true - */ - function castArray() { - if (!arguments.length) { - return []; - } - var value = arguments[0]; - return isArray(value) ? value : [value]; - } - - /** - * Creates a shallow clone of `value`. - * - * **Note:** This method is loosely based on the - * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) - * and supports cloning arrays, array buffers, booleans, date objects, maps, - * numbers, `Object` objects, regexes, sets, strings, symbols, and typed - * arrays. The own enumerable properties of `arguments` objects are cloned - * as plain objects. An empty object is returned for uncloneable values such - * as error objects, functions, DOM nodes, and WeakMaps. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to clone. - * @returns {*} Returns the cloned value. - * @see _.cloneDeep - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var shallow = _.clone(objects); - * console.log(shallow[0] === objects[0]); - * // => true - */ - function clone(value) { - return baseClone(value, CLONE_SYMBOLS_FLAG); - } - - /** - * This method is like `_.clone` except that it accepts `customizer` which - * is invoked to produce the cloned value. If `customizer` returns `undefined`, - * cloning is handled by the method instead. The `customizer` is invoked with - * up to four arguments; (value [, index|key, object, stack]). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to clone. - * @param {Function} [customizer] The function to customize cloning. - * @returns {*} Returns the cloned value. - * @see _.cloneDeepWith - * @example - * - * function customizer(value) { - * if (_.isElement(value)) { - * return value.cloneNode(false); - * } - * } - * - * var el = _.cloneWith(document.body, customizer); - * - * console.log(el === document.body); - * // => false - * console.log(el.nodeName); - * // => 'BODY' - * console.log(el.childNodes.length); - * // => 0 - */ - function cloneWith(value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); - } - - /** - * This method is like `_.clone` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @returns {*} Returns the deep cloned value. - * @see _.clone - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var deep = _.cloneDeep(objects); - * console.log(deep[0] === objects[0]); - * // => false - */ - function cloneDeep(value) { - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); - } - - /** - * This method is like `_.cloneWith` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @param {Function} [customizer] The function to customize cloning. - * @returns {*} Returns the deep cloned value. - * @see _.cloneWith - * @example - * - * function customizer(value) { - * if (_.isElement(value)) { - * return value.cloneNode(true); - * } - * } - * - * var el = _.cloneDeepWith(document.body, customizer); - * - * console.log(el === document.body); - * // => false - * console.log(el.nodeName); - * // => 'BODY' - * console.log(el.childNodes.length); - * // => 20 - */ - function cloneDeepWith(value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); - } - - /** - * Checks if `object` conforms to `source` by invoking the predicate - * properties of `source` with the corresponding property values of `object`. - * - * **Note:** This method is equivalent to `_.conforms` when `source` is - * partially applied. - * - * @static - * @memberOf _ - * @since 4.14.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * - * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); - * // => true - * - * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); - * // => false - */ - function conformsTo(object, source) { - return source == null || baseConformsTo(object, source, keys(source)); - } - - /** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ - function eq(value, other) { - return value === other || (value !== value && other !== other); - } - - /** - * Checks if `value` is greater than `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - * @see _.lt - * @example - * - * _.gt(3, 1); - * // => true - * - * _.gt(3, 3); - * // => false - * - * _.gt(1, 3); - * // => false - */ - var gt = createRelationalOperation(baseGt); - - /** - * Checks if `value` is greater than or equal to `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than or equal to - * `other`, else `false`. - * @see _.lte - * @example - * - * _.gte(3, 1); - * // => true - * - * _.gte(3, 3); - * // => true - * - * _.gte(1, 3); - * // => false - */ - var gte = createRelationalOperation(function(value, other) { - return value >= other; - }); - - /** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { - return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && - !propertyIsEnumerable.call(value, 'callee'); - }; - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ - var isArray = Array.isArray; - - /** - * Checks if `value` is classified as an `ArrayBuffer` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. - * @example - * - * _.isArrayBuffer(new ArrayBuffer(2)); - * // => true - * - * _.isArrayBuffer(new Array(2)); - * // => false - */ - var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; - - /** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ - function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); - } - - /** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ - function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); - } - - /** - * Checks if `value` is classified as a boolean primitive or object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. - * @example - * - * _.isBoolean(false); - * // => true - * - * _.isBoolean(null); - * // => false - */ - function isBoolean(value) { - return value === true || value === false || - (isObjectLike(value) && baseGetTag(value) == boolTag); - } - - /** - * Checks if `value` is a buffer. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. - * @example - * - * _.isBuffer(new Buffer(2)); - * // => true - * - * _.isBuffer(new Uint8Array(2)); - * // => false - */ - var isBuffer = nativeIsBuffer || stubFalse; - - /** - * Checks if `value` is classified as a `Date` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - * @example - * - * _.isDate(new Date); - * // => true - * - * _.isDate('Mon April 23 2012'); - * // => false - */ - var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; - - /** - * Checks if `value` is likely a DOM element. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. - * @example - * - * _.isElement(document.body); - * // => true - * - * _.isElement(''); - * // => false - */ - function isElement(value) { - return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); - } - - /** - * Checks if `value` is an empty object, collection, map, or set. - * - * Objects are considered empty if they have no own enumerable string keyed - * properties. - * - * Array-like values such as `arguments` objects, arrays, buffers, strings, or - * jQuery-like collections are considered empty if they have a `length` of `0`. - * Similarly, maps and sets are considered empty if they have a `size` of `0`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is empty, else `false`. - * @example - * - * _.isEmpty(null); - * // => true - * - * _.isEmpty(true); - * // => true - * - * _.isEmpty(1); - * // => true - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({ 'a': 1 }); - * // => false - */ - function isEmpty(value) { - if (value == null) { - return true; - } - if (isArrayLike(value) && - (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || - isBuffer(value) || isTypedArray(value) || isArguments(value))) { - return !value.length; - } - var tag = getTag(value); - if (tag == mapTag || tag == setTag) { - return !value.size; - } - if (isPrototype(value)) { - return !baseKeys(value).length; - } - for (var key in value) { - if (hasOwnProperty.call(value, key)) { - return false; - } - } - return true; - } - - /** - * Performs a deep comparison between two values to determine if they are - * equivalent. - * - * **Note:** This method supports comparing arrays, array buffers, booleans, - * date objects, error objects, maps, numbers, `Object` objects, regexes, - * sets, strings, symbols, and typed arrays. `Object` objects are compared - * by their own, not inherited, enumerable properties. Functions and DOM - * nodes are compared by strict equality, i.e. `===`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.isEqual(object, other); - * // => true - * - * object === other; - * // => false - */ - function isEqual(value, other) { - return baseIsEqual(value, other); - } - - /** - * This method is like `_.isEqual` except that it accepts `customizer` which - * is invoked to compare values. If `customizer` returns `undefined`, comparisons - * are handled by the method instead. The `customizer` is invoked with up to - * six arguments: (objValue, othValue [, index|key, object, other, stack]). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, othValue) { - * if (isGreeting(objValue) && isGreeting(othValue)) { - * return true; - * } - * } - * - * var array = ['hello', 'goodbye']; - * var other = ['hi', 'goodbye']; - * - * _.isEqualWith(array, other, customizer); - * // => true - */ - function isEqualWith(value, other, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - var result = customizer ? customizer(value, other) : undefined; - return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result; - } - - /** - * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, - * `SyntaxError`, `TypeError`, or `URIError` object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an error object, else `false`. - * @example - * - * _.isError(new Error); - * // => true - * - * _.isError(Error); - * // => false - */ - function isError(value) { - if (!isObjectLike(value)) { - return false; - } - var tag = baseGetTag(value); - return tag == errorTag || tag == domExcTag || - (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); - } - - /** - * Checks if `value` is a finite primitive number. - * - * **Note:** This method is based on - * [`Number.isFinite`](https://mdn.io/Number/isFinite). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. - * @example - * - * _.isFinite(3); - * // => true - * - * _.isFinite(Number.MIN_VALUE); - * // => true - * - * _.isFinite(Infinity); - * // => false - * - * _.isFinite('3'); - * // => false - */ - function isFinite(value) { - return typeof value == 'number' && nativeIsFinite(value); - } - - /** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ - function isFunction(value) { - if (!isObject(value)) { - return false; - } - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 9 which returns 'object' for typed arrays and other constructors. - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; - } - - /** - * Checks if `value` is an integer. - * - * **Note:** This method is based on - * [`Number.isInteger`](https://mdn.io/Number/isInteger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an integer, else `false`. - * @example - * - * _.isInteger(3); - * // => true - * - * _.isInteger(Number.MIN_VALUE); - * // => false - * - * _.isInteger(Infinity); - * // => false - * - * _.isInteger('3'); - * // => false - */ - function isInteger(value) { - return typeof value == 'number' && value == toInteger(value); - } - - /** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ - function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; - } - - /** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ - function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); - } - - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - function isObjectLike(value) { - return value != null && typeof value == 'object'; - } - - /** - * Checks if `value` is classified as a `Map` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - * @example - * - * _.isMap(new Map); - * // => true - * - * _.isMap(new WeakMap); - * // => false - */ - var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; - - /** - * Performs a partial deep comparison between `object` and `source` to - * determine if `object` contains equivalent property values. - * - * **Note:** This method is equivalent to `_.matches` when `source` is - * partially applied. - * - * Partial comparisons will match empty array and empty object `source` - * values against any array or object value, respectively. See `_.isEqual` - * for a list of supported value comparisons. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * - * _.isMatch(object, { 'b': 2 }); - * // => true - * - * _.isMatch(object, { 'b': 1 }); - * // => false - */ - function isMatch(object, source) { - return object === source || baseIsMatch(object, source, getMatchData(source)); - } - - /** - * This method is like `_.isMatch` except that it accepts `customizer` which - * is invoked to compare values. If `customizer` returns `undefined`, comparisons - * are handled by the method instead. The `customizer` is invoked with five - * arguments: (objValue, srcValue, index|key, object, source). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, srcValue) { - * if (isGreeting(objValue) && isGreeting(srcValue)) { - * return true; - * } - * } - * - * var object = { 'greeting': 'hello' }; - * var source = { 'greeting': 'hi' }; - * - * _.isMatchWith(object, source, customizer); - * // => true - */ - function isMatchWith(object, source, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return baseIsMatch(object, source, getMatchData(source), customizer); - } - - /** - * Checks if `value` is `NaN`. - * - * **Note:** This method is based on - * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as - * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for - * `undefined` and other non-number values. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ - function isNaN(value) { - // An `NaN` primitive is the only value that is not equal to itself. - // Perform the `toStringTag` check first to avoid errors with some - // ActiveX objects in IE. - return isNumber(value) && value != +value; - } - - /** - * Checks if `value` is a pristine native function. - * - * **Note:** This method can't reliably detect native functions in the presence - * of the core-js package because core-js circumvents this kind of detection. - * Despite multiple requests, the core-js maintainer has made it clear: any - * attempt to fix the detection will be obstructed. As a result, we're left - * with little choice but to throw an error. Unfortunately, this also affects - * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), - * which rely on core-js. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - * @example - * - * _.isNative(Array.prototype.push); - * // => true - * - * _.isNative(_); - * // => false - */ - function isNative(value) { - if (isMaskable(value)) { - throw new Error(CORE_ERROR_TEXT); - } - return baseIsNative(value); - } - - /** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(void 0); - * // => false - */ - function isNull(value) { - return value === null; - } - - /** - * Checks if `value` is `null` or `undefined`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is nullish, else `false`. - * @example - * - * _.isNil(null); - * // => true - * - * _.isNil(void 0); - * // => true - * - * _.isNil(NaN); - * // => false - */ - function isNil(value) { - return value == null; - } - - /** - * Checks if `value` is classified as a `Number` primitive or object. - * - * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are - * classified as numbers, use the `_.isFinite` method. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a number, else `false`. - * @example - * - * _.isNumber(3); - * // => true - * - * _.isNumber(Number.MIN_VALUE); - * // => true - * - * _.isNumber(Infinity); - * // => true - * - * _.isNumber('3'); - * // => false - */ - function isNumber(value) { - return typeof value == 'number' || - (isObjectLike(value) && baseGetTag(value) == numberTag); - } - - /** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * @static - * @memberOf _ - * @since 0.8.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - * - * _.isPlainObject(Object.create(null)); - * // => true - */ - function isPlainObject(value) { - if (!isObjectLike(value) || baseGetTag(value) != objectTag) { - return false; - } - var proto = getPrototype(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; - return typeof Ctor == 'function' && Ctor instanceof Ctor && - funcToString.call(Ctor) == objectCtorString; - } - - /** - * Checks if `value` is classified as a `RegExp` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - * @example - * - * _.isRegExp(/abc/); - * // => true - * - * _.isRegExp('/abc/'); - * // => false - */ - var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; - - /** - * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 - * double precision number which isn't the result of a rounded unsafe integer. - * - * **Note:** This method is based on - * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. - * @example - * - * _.isSafeInteger(3); - * // => true - * - * _.isSafeInteger(Number.MIN_VALUE); - * // => false - * - * _.isSafeInteger(Infinity); - * // => false - * - * _.isSafeInteger('3'); - * // => false - */ - function isSafeInteger(value) { - return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; - } - - /** - * Checks if `value` is classified as a `Set` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - * @example - * - * _.isSet(new Set); - * // => true - * - * _.isSet(new WeakSet); - * // => false - */ - var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; - - /** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a string, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ - function isString(value) { - return typeof value == 'string' || - (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); - } - - /** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ - function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && baseGetTag(value) == symbolTag); - } - - /** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true - * - * _.isTypedArray([]); - * // => false - */ - var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - - /** - * Checks if `value` is `undefined`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - * - * _.isUndefined(null); - * // => false - */ - function isUndefined(value) { - return value === undefined; - } - - /** - * Checks if `value` is classified as a `WeakMap` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. - * @example - * - * _.isWeakMap(new WeakMap); - * // => true - * - * _.isWeakMap(new Map); - * // => false - */ - function isWeakMap(value) { - return isObjectLike(value) && getTag(value) == weakMapTag; - } - - /** - * Checks if `value` is classified as a `WeakSet` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. - * @example - * - * _.isWeakSet(new WeakSet); - * // => true - * - * _.isWeakSet(new Set); - * // => false - */ - function isWeakSet(value) { - return isObjectLike(value) && baseGetTag(value) == weakSetTag; - } - - /** - * Checks if `value` is less than `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - * @see _.gt - * @example - * - * _.lt(1, 3); - * // => true - * - * _.lt(3, 3); - * // => false - * - * _.lt(3, 1); - * // => false - */ - var lt = createRelationalOperation(baseLt); - - /** - * Checks if `value` is less than or equal to `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than or equal to - * `other`, else `false`. - * @see _.gte - * @example - * - * _.lte(1, 3); - * // => true - * - * _.lte(3, 3); - * // => true - * - * _.lte(3, 1); - * // => false - */ - var lte = createRelationalOperation(function(value, other) { - return value <= other; - }); - - /** - * Converts `value` to an array. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to convert. - * @returns {Array} Returns the converted array. - * @example - * - * _.toArray({ 'a': 1, 'b': 2 }); - * // => [1, 2] - * - * _.toArray('abc'); - * // => ['a', 'b', 'c'] - * - * _.toArray(1); - * // => [] - * - * _.toArray(null); - * // => [] - */ - function toArray(value) { - if (!value) { - return []; - } - if (isArrayLike(value)) { - return isString(value) ? stringToArray(value) : copyArray(value); - } - if (symIterator && value[symIterator]) { - return iteratorToArray(value[symIterator]()); - } - var tag = getTag(value), - func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); - - return func(value); - } - - /** - * Converts `value` to a finite number. - * - * @static - * @memberOf _ - * @since 4.12.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted number. - * @example - * - * _.toFinite(3.2); - * // => 3.2 - * - * _.toFinite(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toFinite(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toFinite('3.2'); - * // => 3.2 - */ - function toFinite(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber(value); - if (value === INFINITY || value === -INFINITY) { - var sign = (value < 0 ? -1 : 1); - return sign * MAX_INTEGER; - } - return value === value ? value : 0; - } - - /** - * Converts `value` to an integer. - * - * **Note:** This method is loosely based on - * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toInteger(3.2); - * // => 3 - * - * _.toInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toInteger(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toInteger('3.2'); - * // => 3 - */ - function toInteger(value) { - var result = toFinite(value), - remainder = result % 1; - - return result === result ? (remainder ? result - remainder : result) : 0; - } - - /** - * Converts `value` to an integer suitable for use as the length of an - * array-like object. - * - * **Note:** This method is based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toLength(3.2); - * // => 3 - * - * _.toLength(Number.MIN_VALUE); - * // => 0 - * - * _.toLength(Infinity); - * // => 4294967295 - * - * _.toLength('3.2'); - * // => 3 - */ - function toLength(value) { - return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; - } - - /** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3.2); - * // => 3.2 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3.2'); - * // => 3.2 - */ - function toNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - if (isObject(value)) { - var other = typeof value.valueOf == 'function' ? value.valueOf() : value; - value = isObject(other) ? (other + '') : other; - } - if (typeof value != 'string') { - return value === 0 ? value : +value; - } - value = baseTrim(value); - var isBinary = reIsBinary.test(value); - return (isBinary || reIsOctal.test(value)) - ? freeParseInt(value.slice(2), isBinary ? 2 : 8) - : (reIsBadHex.test(value) ? NAN : +value); - } - - /** - * Converts `value` to a plain object flattening inherited enumerable string - * keyed properties of `value` to own properties of the plain object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {Object} Returns the converted plain object. - * @example - * - * function Foo() { - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.assign({ 'a': 1 }, new Foo); - * // => { 'a': 1, 'b': 2 } - * - * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); - * // => { 'a': 1, 'b': 2, 'c': 3 } - */ - function toPlainObject(value) { - return copyObject(value, keysIn(value)); - } - - /** - * Converts `value` to a safe integer. A safe integer can be compared and - * represented correctly. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toSafeInteger(3.2); - * // => 3 - * - * _.toSafeInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toSafeInteger(Infinity); - * // => 9007199254740991 - * - * _.toSafeInteger('3.2'); - * // => 3 - */ - function toSafeInteger(value) { - return value - ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) - : (value === 0 ? value : 0); - } - - /** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ - function toString(value) { - return value == null ? '' : baseToString(value); - } - - /*------------------------------------------------------------------------*/ - - /** - * Assigns own enumerable string keyed properties of source objects to the - * destination object. Source objects are applied from left to right. - * Subsequent sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object` and is loosely based on - * [`Object.assign`](https://mdn.io/Object/assign). - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assignIn - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assign({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'c': 3 } - */ - var assign = createAssigner(function(object, source) { - if (isPrototype(source) || isArrayLike(source)) { - copyObject(source, keys(source), object); - return; - } - for (var key in source) { - if (hasOwnProperty.call(source, key)) { - assignValue(object, key, source[key]); - } - } - }); - - /** - * This method is like `_.assign` except that it iterates over own and - * inherited source properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extend - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assign - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assignIn({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } - */ - var assignIn = createAssigner(function(object, source) { - copyObject(source, keysIn(source), object); - }); - - /** - * This method is like `_.assignIn` except that it accepts `customizer` - * which is invoked to produce the assigned values. If `customizer` returns - * `undefined`, assignment is handled by the method instead. The `customizer` - * is invoked with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extendWith - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @see _.assignWith - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignInWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keysIn(source), object, customizer); - }); - - /** - * This method is like `_.assign` except that it accepts `customizer` - * which is invoked to produce the assigned values. If `customizer` returns - * `undefined`, assignment is handled by the method instead. The `customizer` - * is invoked with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @see _.assignInWith - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var assignWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keys(source), object, customizer); - }); - - /** - * Creates an array of values corresponding to `paths` of `object`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Array} Returns the picked values. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; - * - * _.at(object, ['a[0].b.c', 'a[1]']); - * // => [3, 4] - */ - var at = flatRest(baseAt); - - /** - * Creates an object that inherits from the `prototype` object. If a - * `properties` object is given, its own enumerable string keyed properties - * are assigned to the created object. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Object - * @param {Object} prototype The object to inherit from. - * @param {Object} [properties] The properties to assign to the object. - * @returns {Object} Returns the new object. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * function Circle() { - * Shape.call(this); - * } - * - * Circle.prototype = _.create(Shape.prototype, { - * 'constructor': Circle - * }); - * - * var circle = new Circle; - * circle instanceof Circle; - * // => true - * - * circle instanceof Shape; - * // => true - */ - function create(prototype, properties) { - var result = baseCreate(prototype); - return properties == null ? result : baseAssign(result, properties); - } - - /** - * Assigns own and inherited enumerable string keyed properties of source - * objects to the destination object for all destination properties that - * resolve to `undefined`. Source objects are applied from left to right. - * Once a property is set, additional values of the same property are ignored. - * - * **Note:** This method mutates `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaultsDeep - * @example - * - * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var defaults = baseRest(function(object, sources) { - object = Object(object); - - var index = -1; - var length = sources.length; - var guard = length > 2 ? sources[2] : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - length = 1; - } - - while (++index < length) { - var source = sources[index]; - var props = keysIn(source); - var propsIndex = -1; - var propsLength = props.length; - - while (++propsIndex < propsLength) { - var key = props[propsIndex]; - var value = object[key]; - - if (value === undefined || - (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { - object[key] = source[key]; - } - } - } - - return object; - }); - - /** - * This method is like `_.defaults` except that it recursively assigns - * default properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 3.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaults - * @example - * - * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); - * // => { 'a': { 'b': 2, 'c': 3 } } - */ - var defaultsDeep = baseRest(function(args) { - args.push(undefined, customDefaultsMerge); - return apply(mergeWith, undefined, args); - }); - - /** - * This method is like `_.find` except that it returns the key of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findKey(users, function(o) { return o.age < 40; }); - * // => 'barney' (iteration order is not guaranteed) - * - * // The `_.matches` iteratee shorthand. - * _.findKey(users, { 'age': 1, 'active': true }); - * // => 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findKey(users, 'active'); - * // => 'barney' - */ - function findKey(object, predicate) { - return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); - } - - /** - * This method is like `_.findKey` except that it iterates over elements of - * a collection in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findLastKey(users, function(o) { return o.age < 40; }); - * // => returns 'pebbles' assuming `_.findKey` returns 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.findLastKey(users, { 'age': 36, 'active': true }); - * // => 'barney' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findLastKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findLastKey(users, 'active'); - * // => 'pebbles' - */ - function findLastKey(object, predicate) { - return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); - } - - /** - * Iterates over own and inherited enumerable string keyed properties of an - * object and invokes `iteratee` for each property. The iteratee is invoked - * with three arguments: (value, key, object). Iteratee functions may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forInRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forIn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). - */ - function forIn(object, iteratee) { - return object == null - ? object - : baseFor(object, getIteratee(iteratee, 3), keysIn); - } - - /** - * This method is like `_.forIn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forIn - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forInRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. - */ - function forInRight(object, iteratee) { - return object == null - ? object - : baseForRight(object, getIteratee(iteratee, 3), keysIn); - } - - /** - * Iterates over own enumerable string keyed properties of an object and - * invokes `iteratee` for each property. The iteratee is invoked with three - * arguments: (value, key, object). Iteratee functions may exit iteration - * early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forOwnRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ - function forOwn(object, iteratee) { - return object && baseForOwn(object, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.forOwn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forOwn - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwnRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. - */ - function forOwnRight(object, iteratee) { - return object && baseForOwnRight(object, getIteratee(iteratee, 3)); - } - - /** - * Creates an array of function property names from own enumerable properties - * of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the function names. - * @see _.functionsIn - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functions(new Foo); - * // => ['a', 'b'] - */ - function functions(object) { - return object == null ? [] : baseFunctions(object, keys(object)); - } - - /** - * Creates an array of function property names from own and inherited - * enumerable properties of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the function names. - * @see _.functions - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functionsIn(new Foo); - * // => ['a', 'b', 'c'] - */ - function functionsIn(object) { - return object == null ? [] : baseFunctions(object, keysIn(object)); - } - - /** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ - function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; - } - - /** - * Checks if `path` is a direct property of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = { 'a': { 'b': 2 } }; - * var other = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.has(object, 'a'); - * // => true - * - * _.has(object, 'a.b'); - * // => true - * - * _.has(object, ['a', 'b']); - * // => true - * - * _.has(other, 'a'); - * // => false - */ - function has(object, path) { - return object != null && hasPath(object, path, baseHas); - } - - /** - * Checks if `path` is a direct or inherited property of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.hasIn(object, 'a'); - * // => true - * - * _.hasIn(object, 'a.b'); - * // => true - * - * _.hasIn(object, ['a', 'b']); - * // => true - * - * _.hasIn(object, 'b'); - * // => false - */ - function hasIn(object, path) { - return object != null && hasPath(object, path, baseHasIn); - } - - /** - * Creates an object composed of the inverted keys and values of `object`. - * If `object` contains duplicate values, subsequent values overwrite - * property assignments of previous values. - * - * @static - * @memberOf _ - * @since 0.7.0 - * @category Object - * @param {Object} object The object to invert. - * @returns {Object} Returns the new inverted object. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invert(object); - * // => { '1': 'c', '2': 'b' } - */ - var invert = createInverter(function(result, value, key) { - if (value != null && - typeof value.toString != 'function') { - value = nativeObjectToString.call(value); - } - - result[value] = key; - }, constant(identity)); - - /** - * This method is like `_.invert` except that the inverted object is generated - * from the results of running each element of `object` thru `iteratee`. The - * corresponding inverted value of each inverted key is an array of keys - * responsible for generating the inverted value. The iteratee is invoked - * with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.1.0 - * @category Object - * @param {Object} object The object to invert. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Object} Returns the new inverted object. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invertBy(object); - * // => { '1': ['a', 'c'], '2': ['b'] } - * - * _.invertBy(object, function(value) { - * return 'group' + value; - * }); - * // => { 'group1': ['a', 'c'], 'group2': ['b'] } - */ - var invertBy = createInverter(function(result, value, key) { - if (value != null && - typeof value.toString != 'function') { - value = nativeObjectToString.call(value); - } - - if (hasOwnProperty.call(result, value)) { - result[value].push(key); - } else { - result[value] = [key]; - } - }, getIteratee); - - /** - * Invokes the method at `path` of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the method to invoke. - * @param {...*} [args] The arguments to invoke the method with. - * @returns {*} Returns the result of the invoked method. - * @example - * - * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; - * - * _.invoke(object, 'a[0].b.c.slice', 1, 3); - * // => [2, 3] - */ - var invoke = baseRest(baseInvoke); - - /** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ - function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); - } - - /** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ - function keysIn(object) { - return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); - } - - /** - * The opposite of `_.mapValues`; this method creates an object with the - * same values as `object` and keys generated by running each own enumerable - * string keyed property of `object` thru `iteratee`. The iteratee is invoked - * with three arguments: (value, key, object). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapValues - * @example - * - * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { - * return key + value; - * }); - * // => { 'a1': 1, 'b2': 2 } - */ - function mapKeys(object, iteratee) { - var result = {}; - iteratee = getIteratee(iteratee, 3); - - baseForOwn(object, function(value, key, object) { - baseAssignValue(result, iteratee(value, key, object), value); - }); - return result; - } - - /** - * Creates an object with the same keys as `object` and values generated - * by running each own enumerable string keyed property of `object` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, key, object). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapKeys - * @example - * - * var users = { - * 'fred': { 'user': 'fred', 'age': 40 }, - * 'pebbles': { 'user': 'pebbles', 'age': 1 } - * }; - * - * _.mapValues(users, function(o) { return o.age; }); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - * - * // The `_.property` iteratee shorthand. - * _.mapValues(users, 'age'); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - */ - function mapValues(object, iteratee) { - var result = {}; - iteratee = getIteratee(iteratee, 3); - - baseForOwn(object, function(value, key, object) { - baseAssignValue(result, key, iteratee(value, key, object)); - }); - return result; - } - - /** - * This method is like `_.assign` except that it recursively merges own and - * inherited enumerable string keyed properties of source objects into the - * destination object. Source properties that resolve to `undefined` are - * skipped if a destination value exists. Array and plain object properties - * are merged recursively. Other objects and value types are overridden by - * assignment. Source objects are applied from left to right. Subsequent - * sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @example - * - * var object = { - * 'a': [{ 'b': 2 }, { 'd': 4 }] - * }; - * - * var other = { - * 'a': [{ 'c': 3 }, { 'e': 5 }] - * }; - * - * _.merge(object, other); - * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } - */ - var merge = createAssigner(function(object, source, srcIndex) { - baseMerge(object, source, srcIndex); - }); - - /** - * This method is like `_.merge` except that it accepts `customizer` which - * is invoked to produce the merged values of the destination and source - * properties. If `customizer` returns `undefined`, merging is handled by the - * method instead. The `customizer` is invoked with six arguments: - * (objValue, srcValue, key, object, source, stack). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} customizer The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * function customizer(objValue, srcValue) { - * if (_.isArray(objValue)) { - * return objValue.concat(srcValue); - * } - * } - * - * var object = { 'a': [1], 'b': [2] }; - * var other = { 'a': [3], 'b': [4] }; - * - * _.mergeWith(object, other, customizer); - * // => { 'a': [1, 3], 'b': [2, 4] } - */ - var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { - baseMerge(object, source, srcIndex, customizer); - }); - - /** - * The opposite of `_.pick`; this method creates an object composed of the - * own and inherited enumerable property paths of `object` that are not omitted. - * - * **Note:** This method is considerably slower than `_.pick`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [paths] The property paths to omit. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.omit(object, ['a', 'c']); - * // => { 'b': '2' } - */ - var omit = flatRest(function(object, paths) { - var result = {}; - if (object == null) { - return result; - } - var isDeep = false; - paths = arrayMap(paths, function(path) { - path = castPath(path, object); - isDeep || (isDeep = path.length > 1); - return path; - }); - copyObject(object, getAllKeysIn(object), result); - if (isDeep) { - result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); - } - var length = paths.length; - while (length--) { - baseUnset(result, paths[length]); - } - return result; - }); - - /** - * The opposite of `_.pickBy`; this method creates an object composed of - * the own and inherited enumerable string keyed properties of `object` that - * `predicate` doesn't return truthy for. The predicate is invoked with two - * arguments: (value, key). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The source object. - * @param {Function} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.omitBy(object, _.isNumber); - * // => { 'b': '2' } - */ - function omitBy(object, predicate) { - return pickBy(object, negate(getIteratee(predicate))); - } - - /** - * Creates an object composed of the picked `object` properties. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pick(object, ['a', 'c']); - * // => { 'a': 1, 'c': 3 } - */ - var pick = flatRest(function(object, paths) { - return object == null ? {} : basePick(object, paths); - }); - - /** - * Creates an object composed of the `object` properties `predicate` returns - * truthy for. The predicate is invoked with two arguments: (value, key). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The source object. - * @param {Function} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pickBy(object, _.isNumber); - * // => { 'a': 1, 'c': 3 } - */ - function pickBy(object, predicate) { - if (object == null) { - return {}; - } - var props = arrayMap(getAllKeysIn(object), function(prop) { - return [prop]; - }); - predicate = getIteratee(predicate); - return basePickBy(object, props, function(value, path) { - return predicate(value, path[0]); - }); - } - - /** - * This method is like `_.get` except that if the resolved value is a - * function it's invoked with the `this` binding of its parent object and - * its result is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to resolve. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; - * - * _.result(object, 'a[0].b.c1'); - * // => 3 - * - * _.result(object, 'a[0].b.c2'); - * // => 4 - * - * _.result(object, 'a[0].b.c3', 'default'); - * // => 'default' - * - * _.result(object, 'a[0].b.c3', _.constant('default')); - * // => 'default' - */ - function result(object, path, defaultValue) { - path = castPath(path, object); - - var index = -1, - length = path.length; - - // Ensure the loop is entered when path is empty. - if (!length) { - length = 1; - object = undefined; - } - while (++index < length) { - var value = object == null ? undefined : object[toKey(path[index])]; - if (value === undefined) { - index = length; - value = defaultValue; - } - object = isFunction(value) ? value.call(object) : value; - } - return object; - } - - /** - * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, - * it's created. Arrays are created for missing index properties while objects - * are created for all other missing properties. Use `_.setWith` to customize - * `path` creation. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @returns {Object} Returns `object`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.set(object, 'a[0].b.c', 4); - * console.log(object.a[0].b.c); - * // => 4 - * - * _.set(object, ['x', '0', 'y', 'z'], 5); - * console.log(object.x[0].y.z); - * // => 5 - */ - function set(object, path, value) { - return object == null ? object : baseSet(object, path, value); - } - - /** - * This method is like `_.set` except that it accepts `customizer` which is - * invoked to produce the objects of `path`. If `customizer` returns `undefined` - * path creation is handled by the method instead. The `customizer` is invoked - * with three arguments: (nsValue, key, nsObject). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * var object = {}; - * - * _.setWith(object, '[0][1]', 'a', Object); - * // => { '0': { '1': 'a' } } - */ - function setWith(object, path, value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return object == null ? object : baseSet(object, path, value, customizer); - } - - /** - * Creates an array of own enumerable string keyed-value pairs for `object` - * which can be consumed by `_.fromPairs`. If `object` is a map or set, its - * entries are returned. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias entries - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the key-value pairs. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.toPairs(new Foo); - * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) - */ - var toPairs = createToPairs(keys); - - /** - * Creates an array of own and inherited enumerable string keyed-value pairs - * for `object` which can be consumed by `_.fromPairs`. If `object` is a map - * or set, its entries are returned. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias entriesIn - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the key-value pairs. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.toPairsIn(new Foo); - * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) - */ - var toPairsIn = createToPairs(keysIn); - - /** - * An alternative to `_.reduce`; this method transforms `object` to a new - * `accumulator` object which is the result of running each of its own - * enumerable string keyed properties thru `iteratee`, with each invocation - * potentially mutating the `accumulator` object. If `accumulator` is not - * provided, a new object with the same `[[Prototype]]` will be used. The - * iteratee is invoked with four arguments: (accumulator, value, key, object). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The custom accumulator value. - * @returns {*} Returns the accumulated value. - * @example - * - * _.transform([2, 3, 4], function(result, n) { - * result.push(n *= n); - * return n % 2 == 0; - * }, []); - * // => [4, 9] - * - * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } - */ - function transform(object, iteratee, accumulator) { - var isArr = isArray(object), - isArrLike = isArr || isBuffer(object) || isTypedArray(object); - - iteratee = getIteratee(iteratee, 4); - if (accumulator == null) { - var Ctor = object && object.constructor; - if (isArrLike) { - accumulator = isArr ? new Ctor : []; - } - else if (isObject(object)) { - accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; - } - else { - accumulator = {}; - } - } - (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { - return iteratee(accumulator, value, index, object); - }); - return accumulator; - } - - /** - * Removes the property at `path` of `object`. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to unset. - * @returns {boolean} Returns `true` if the property is deleted, else `false`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 7 } }] }; - * _.unset(object, 'a[0].b.c'); - * // => true - * - * console.log(object); - * // => { 'a': [{ 'b': {} }] }; - * - * _.unset(object, ['a', '0', 'b', 'c']); - * // => true - * - * console.log(object); - * // => { 'a': [{ 'b': {} }] }; - */ - function unset(object, path) { - return object == null ? true : baseUnset(object, path); - } - - /** - * This method is like `_.set` except that accepts `updater` to produce the - * value to set. Use `_.updateWith` to customize `path` creation. The `updater` - * is invoked with one argument: (value). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {Function} updater The function to produce the updated value. - * @returns {Object} Returns `object`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.update(object, 'a[0].b.c', function(n) { return n * n; }); - * console.log(object.a[0].b.c); - * // => 9 - * - * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); - * console.log(object.x[0].y.z); - * // => 0 - */ - function update(object, path, updater) { - return object == null ? object : baseUpdate(object, path, castFunction(updater)); - } - - /** - * This method is like `_.update` except that it accepts `customizer` which is - * invoked to produce the objects of `path`. If `customizer` returns `undefined` - * path creation is handled by the method instead. The `customizer` is invoked - * with three arguments: (nsValue, key, nsObject). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {Function} updater The function to produce the updated value. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * var object = {}; - * - * _.updateWith(object, '[0][1]', _.constant('a'), Object); - * // => { '0': { '1': 'a' } } - */ - function updateWith(object, path, updater, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); - } - - /** - * Creates an array of the own enumerable string keyed property values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.values(new Foo); - * // => [1, 2] (iteration order is not guaranteed) - * - * _.values('hi'); - * // => ['h', 'i'] - */ - function values(object) { - return object == null ? [] : baseValues(object, keys(object)); - } - - /** - * Creates an array of the own and inherited enumerable string keyed property - * values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.valuesIn(new Foo); - * // => [1, 2, 3] (iteration order is not guaranteed) - */ - function valuesIn(object) { - return object == null ? [] : baseValues(object, keysIn(object)); - } - - /*------------------------------------------------------------------------*/ - - /** - * Clamps `number` within the inclusive `lower` and `upper` bounds. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Number - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. - * @example - * - * _.clamp(-10, -5, 5); - * // => -5 - * - * _.clamp(10, -5, 5); - * // => 5 - */ - function clamp(number, lower, upper) { - if (upper === undefined) { - upper = lower; - lower = undefined; - } - if (upper !== undefined) { - upper = toNumber(upper); - upper = upper === upper ? upper : 0; - } - if (lower !== undefined) { - lower = toNumber(lower); - lower = lower === lower ? lower : 0; - } - return baseClamp(toNumber(number), lower, upper); - } - - /** - * Checks if `n` is between `start` and up to, but not including, `end`. If - * `end` is not specified, it's set to `start` with `start` then set to `0`. - * If `start` is greater than `end` the params are swapped to support - * negative ranges. - * - * @static - * @memberOf _ - * @since 3.3.0 - * @category Number - * @param {number} number The number to check. - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `number` is in the range, else `false`. - * @see _.range, _.rangeRight - * @example - * - * _.inRange(3, 2, 4); - * // => true - * - * _.inRange(4, 8); - * // => true - * - * _.inRange(4, 2); - * // => false - * - * _.inRange(2, 2); - * // => false - * - * _.inRange(1.2, 2); - * // => true - * - * _.inRange(5.2, 4); - * // => false - * - * _.inRange(-3, -2, -6); - * // => true - */ - function inRange(number, start, end) { - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - number = toNumber(number); - return baseInRange(number, start, end); - } - - /** - * Produces a random number between the inclusive `lower` and `upper` bounds. - * If only one argument is provided a number between `0` and the given number - * is returned. If `floating` is `true`, or either `lower` or `upper` are - * floats, a floating-point number is returned instead of an integer. - * - * **Note:** JavaScript follows the IEEE-754 standard for resolving - * floating-point values which can produce unexpected results. - * - * @static - * @memberOf _ - * @since 0.7.0 - * @category Number - * @param {number} [lower=0] The lower bound. - * @param {number} [upper=1] The upper bound. - * @param {boolean} [floating] Specify returning a floating-point number. - * @returns {number} Returns the random number. - * @example - * - * _.random(0, 5); - * // => an integer between 0 and 5 - * - * _.random(5); - * // => also an integer between 0 and 5 - * - * _.random(5, true); - * // => a floating-point number between 0 and 5 - * - * _.random(1.2, 5.2); - * // => a floating-point number between 1.2 and 5.2 - */ - function random(lower, upper, floating) { - if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) { - upper = floating = undefined; - } - if (floating === undefined) { - if (typeof upper == 'boolean') { - floating = upper; - upper = undefined; - } - else if (typeof lower == 'boolean') { - floating = lower; - lower = undefined; - } - } - if (lower === undefined && upper === undefined) { - lower = 0; - upper = 1; - } - else { - lower = toFinite(lower); - if (upper === undefined) { - upper = lower; - lower = 0; - } else { - upper = toFinite(upper); - } - } - if (lower > upper) { - var temp = lower; - lower = upper; - upper = temp; - } - if (floating || lower % 1 || upper % 1) { - var rand = nativeRandom(); - return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper); - } - return baseRandom(lower, upper); - } - - /*------------------------------------------------------------------------*/ - - /** - * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the camel cased string. - * @example - * - * _.camelCase('Foo Bar'); - * // => 'fooBar' - * - * _.camelCase('--foo-bar--'); - * // => 'fooBar' - * - * _.camelCase('__FOO_BAR__'); - * // => 'fooBar' - */ - var camelCase = createCompounder(function(result, word, index) { - word = word.toLowerCase(); - return result + (index ? capitalize(word) : word); - }); - - /** - * Converts the first character of `string` to upper case and the remaining - * to lower case. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to capitalize. - * @returns {string} Returns the capitalized string. - * @example - * - * _.capitalize('FRED'); - * // => 'Fred' - */ - function capitalize(string) { - return upperFirst(toString(string).toLowerCase()); - } - - /** - * Deburrs `string` by converting - * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) - * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) - * letters to basic Latin letters and removing - * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to deburr. - * @returns {string} Returns the deburred string. - * @example - * - * _.deburr('déjà vu'); - * // => 'deja vu' - */ - function deburr(string) { - string = toString(string); - return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); - } - - /** - * Checks if `string` ends with the given target string. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to inspect. - * @param {string} [target] The string to search for. - * @param {number} [position=string.length] The position to search up to. - * @returns {boolean} Returns `true` if `string` ends with `target`, - * else `false`. - * @example - * - * _.endsWith('abc', 'c'); - * // => true - * - * _.endsWith('abc', 'b'); - * // => false - * - * _.endsWith('abc', 'b', 2); - * // => true - */ - function endsWith(string, target, position) { - string = toString(string); - target = baseToString(target); - - var length = string.length; - position = position === undefined - ? length - : baseClamp(toInteger(position), 0, length); - - var end = position; - position -= target.length; - return position >= 0 && string.slice(position, end) == target; - } - - /** - * Converts the characters "&", "<", ">", '"', and "'" in `string` to their - * corresponding HTML entities. - * - * **Note:** No other characters are escaped. To escape additional - * characters use a third-party library like [_he_](https://mths.be/he). - * - * Though the ">" character is escaped for symmetry, characters like - * ">" and "/" don't need escaping in HTML and have no special meaning - * unless they're part of a tag or unquoted attribute value. See - * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) - * (under "semi-related fun fact") for more details. - * - * When working with HTML you should always - * [quote attribute values](http://wonko.com/post/html-escaping) to reduce - * XSS vectors. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escape('fred, barney, & pebbles'); - * // => 'fred, barney, & pebbles' - */ - function escape(string) { - string = toString(string); - return (string && reHasUnescapedHtml.test(string)) - ? string.replace(reUnescapedHtml, escapeHtmlChar) - : string; - } - - /** - * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", - * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escapeRegExp('[lodash](https://lodash.com/)'); - * // => '\[lodash\]\(https://lodash\.com/\)' - */ - function escapeRegExp(string) { - string = toString(string); - return (string && reHasRegExpChar.test(string)) - ? string.replace(reRegExpChar, '\\$&') - : string; - } - - /** - * Converts `string` to - * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the kebab cased string. - * @example - * - * _.kebabCase('Foo Bar'); - * // => 'foo-bar' - * - * _.kebabCase('fooBar'); - * // => 'foo-bar' - * - * _.kebabCase('__FOO_BAR__'); - * // => 'foo-bar' - */ - var kebabCase = createCompounder(function(result, word, index) { - return result + (index ? '-' : '') + word.toLowerCase(); - }); - - /** - * Converts `string`, as space separated words, to lower case. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the lower cased string. - * @example - * - * _.lowerCase('--Foo-Bar--'); - * // => 'foo bar' - * - * _.lowerCase('fooBar'); - * // => 'foo bar' - * - * _.lowerCase('__FOO_BAR__'); - * // => 'foo bar' - */ - var lowerCase = createCompounder(function(result, word, index) { - return result + (index ? ' ' : '') + word.toLowerCase(); - }); - - /** - * Converts the first character of `string` to lower case. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.lowerFirst('Fred'); - * // => 'fred' - * - * _.lowerFirst('FRED'); - * // => 'fRED' - */ - var lowerFirst = createCaseFirst('toLowerCase'); - - /** - * Pads `string` on the left and right sides if it's shorter than `length`. - * Padding characters are truncated if they can't be evenly divided by `length`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.pad('abc', 8); - * // => ' abc ' - * - * _.pad('abc', 8, '_-'); - * // => '_-abc_-_' - * - * _.pad('abc', 3); - * // => 'abc' - */ - function pad(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - if (!length || strLength >= length) { - return string; - } - var mid = (length - strLength) / 2; - return ( - createPadding(nativeFloor(mid), chars) + - string + - createPadding(nativeCeil(mid), chars) - ); - } - - /** - * Pads `string` on the right side if it's shorter than `length`. Padding - * characters are truncated if they exceed `length`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.padEnd('abc', 6); - * // => 'abc ' - * - * _.padEnd('abc', 6, '_-'); - * // => 'abc_-_' - * - * _.padEnd('abc', 3); - * // => 'abc' - */ - function padEnd(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - return (length && strLength < length) - ? (string + createPadding(length - strLength, chars)) - : string; - } - - /** - * Pads `string` on the left side if it's shorter than `length`. Padding - * characters are truncated if they exceed `length`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.padStart('abc', 6); - * // => ' abc' - * - * _.padStart('abc', 6, '_-'); - * // => '_-_abc' - * - * _.padStart('abc', 3); - * // => 'abc' - */ - function padStart(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - return (length && strLength < length) - ? (createPadding(length - strLength, chars) + string) - : string; - } - - /** - * Converts `string` to an integer of the specified radix. If `radix` is - * `undefined` or `0`, a `radix` of `10` is used unless `value` is a - * hexadecimal, in which case a `radix` of `16` is used. - * - * **Note:** This method aligns with the - * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category String - * @param {string} string The string to convert. - * @param {number} [radix=10] The radix to interpret `value` by. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {number} Returns the converted integer. - * @example - * - * _.parseInt('08'); - * // => 8 - * - * _.map(['6', '08', '10'], _.parseInt); - * // => [6, 8, 10] - */ - function parseInt(string, radix, guard) { - if (guard || radix == null) { - radix = 0; - } else if (radix) { - radix = +radix; - } - return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0); - } - - /** - * Repeats the given string `n` times. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to repeat. - * @param {number} [n=1] The number of times to repeat the string. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {string} Returns the repeated string. - * @example - * - * _.repeat('*', 3); - * // => '***' - * - * _.repeat('abc', 2); - * // => 'abcabc' - * - * _.repeat('abc', 0); - * // => '' - */ - function repeat(string, n, guard) { - if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) { - n = 1; - } else { - n = toInteger(n); - } - return baseRepeat(toString(string), n); - } - - /** - * Replaces matches for `pattern` in `string` with `replacement`. - * - * **Note:** This method is based on - * [`String#replace`](https://mdn.io/String/replace). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to modify. - * @param {RegExp|string} pattern The pattern to replace. - * @param {Function|string} replacement The match replacement. - * @returns {string} Returns the modified string. - * @example - * - * _.replace('Hi Fred', 'Fred', 'Barney'); - * // => 'Hi Barney' - */ - function replace() { - var args = arguments, - string = toString(args[0]); - - return args.length < 3 ? string : string.replace(args[1], args[2]); - } - - /** - * Converts `string` to - * [snake case](https://en.wikipedia.org/wiki/Snake_case). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the snake cased string. - * @example - * - * _.snakeCase('Foo Bar'); - * // => 'foo_bar' - * - * _.snakeCase('fooBar'); - * // => 'foo_bar' - * - * _.snakeCase('--FOO-BAR--'); - * // => 'foo_bar' - */ - var snakeCase = createCompounder(function(result, word, index) { - return result + (index ? '_' : '') + word.toLowerCase(); - }); - - /** - * Splits `string` by `separator`. - * - * **Note:** This method is based on - * [`String#split`](https://mdn.io/String/split). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to split. - * @param {RegExp|string} separator The separator pattern to split by. - * @param {number} [limit] The length to truncate results to. - * @returns {Array} Returns the string segments. - * @example - * - * _.split('a-b-c', '-', 2); - * // => ['a', 'b'] - */ - function split(string, separator, limit) { - if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { - separator = limit = undefined; - } - limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0; - if (!limit) { - return []; - } - string = toString(string); - if (string && ( - typeof separator == 'string' || - (separator != null && !isRegExp(separator)) - )) { - separator = baseToString(separator); - if (!separator && hasUnicode(string)) { - return castSlice(stringToArray(string), 0, limit); - } - } - return string.split(separator, limit); - } - - /** - * Converts `string` to - * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). - * - * @static - * @memberOf _ - * @since 3.1.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the start cased string. - * @example - * - * _.startCase('--foo-bar--'); - * // => 'Foo Bar' - * - * _.startCase('fooBar'); - * // => 'Foo Bar' - * - * _.startCase('__FOO_BAR__'); - * // => 'FOO BAR' - */ - var startCase = createCompounder(function(result, word, index) { - return result + (index ? ' ' : '') + upperFirst(word); - }); - - /** - * Checks if `string` starts with the given target string. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to inspect. - * @param {string} [target] The string to search for. - * @param {number} [position=0] The position to search from. - * @returns {boolean} Returns `true` if `string` starts with `target`, - * else `false`. - * @example - * - * _.startsWith('abc', 'a'); - * // => true - * - * _.startsWith('abc', 'b'); - * // => false - * - * _.startsWith('abc', 'b', 1); - * // => true - */ - function startsWith(string, target, position) { - string = toString(string); - position = position == null - ? 0 - : baseClamp(toInteger(position), 0, string.length); - - target = baseToString(target); - return string.slice(position, position + target.length) == target; - } - - /** - * Creates a compiled template function that can interpolate data properties - * in "interpolate" delimiters, HTML-escape interpolated data properties in - * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data - * properties may be accessed as free variables in the template. If a setting - * object is given, it takes precedence over `_.templateSettings` values. - * - * **Note:** In the development build `_.template` utilizes - * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) - * for easier debugging. - * - * For more information on precompiling templates see - * [lodash's custom builds documentation](https://lodash.com/custom-builds). - * - * For more information on Chrome extension sandboxes see - * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category String - * @param {string} [string=''] The template string. - * @param {Object} [options={}] The options object. - * @param {RegExp} [options.escape=_.templateSettings.escape] - * The HTML "escape" delimiter. - * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] - * The "evaluate" delimiter. - * @param {Object} [options.imports=_.templateSettings.imports] - * An object to import into the template as free variables. - * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] - * The "interpolate" delimiter. - * @param {string} [options.sourceURL='lodash.templateSources[n]'] - * The sourceURL of the compiled template. - * @param {string} [options.variable='obj'] - * The data object variable name. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the compiled template function. - * @example - * - * // Use the "interpolate" delimiter to create a compiled template. - * var compiled = _.template('hello <%= user %>!'); - * compiled({ 'user': 'fred' }); - * // => 'hello fred!' - * - * // Use the HTML "escape" delimiter to escape data property values. - * var compiled = _.template('<%- value %>'); - * compiled({ 'value': '