From fbf47eaa3a9e6fdb5c5fa6e55e9121036f0ee881 Mon Sep 17 00:00:00 2001 From: Whykioh Date: Mon, 11 Mar 2024 00:54:46 +0100 Subject: [PATCH] Import Ruty --- ruty/WhykIA/Mon premier neurone.ipynb | 384 + ruty/img/agenda.png | Bin 0 -> 10224 bytes ruty/img/home.png | Bin 0 -> 10615 bytes ruty/img/logo.png | Bin 0 -> 227613 bytes ruty/img/logout.png | Bin 0 -> 8528 bytes ruty/img/mails.png | Bin 0 -> 16186 bytes ruty/img/notepad.png | Bin 0 -> 14615 bytes ruty/img/todo.png | Bin 0 -> 6903 bytes ruty/js/node_modules/.bin/mime | 12 + ruty/js/node_modules/.bin/mime.cmd | 17 + ruty/js/node_modules/.bin/mime.ps1 | 28 + ruty/js/node_modules/.package-lock.json | 595 ++ ruty/js/node_modules/accepts/HISTORY.md | 243 + ruty/js/node_modules/accepts/LICENSE | 23 + ruty/js/node_modules/accepts/README.md | 140 + ruty/js/node_modules/accepts/index.js | 238 + ruty/js/node_modules/accepts/package.json | 47 + ruty/js/node_modules/array-flatten/LICENSE | 21 + ruty/js/node_modules/array-flatten/README.md | 43 + .../array-flatten/array-flatten.js | 64 + .../node_modules/array-flatten/package.json | 39 + ruty/js/node_modules/async/.travis.yml | 5 + ruty/js/node_modules/async/LICENSE | 19 + ruty/js/node_modules/async/README.md | 1647 ++++ ruty/js/node_modules/async/bower.json | 38 + ruty/js/node_modules/async/component.json | 16 + ruty/js/node_modules/async/lib/async.js | 1123 +++ ruty/js/node_modules/async/package.json | 54 + .../async/support/sync-package-managers.js | 53 + ruty/js/node_modules/body-parser/HISTORY.md | 657 ++ ruty/js/node_modules/body-parser/LICENSE | 23 + ruty/js/node_modules/body-parser/README.md | 464 + ruty/js/node_modules/body-parser/SECURITY.md | 25 + ruty/js/node_modules/body-parser/index.js | 156 + ruty/js/node_modules/body-parser/lib/read.js | 205 + .../body-parser/lib/types/json.js | 236 + .../node_modules/body-parser/lib/types/raw.js | 101 + .../body-parser/lib/types/text.js | 121 + .../body-parser/lib/types/urlencoded.js | 284 + ruty/js/node_modules/body-parser/package.json | 56 + ruty/js/node_modules/bytes/History.md | 97 + ruty/js/node_modules/bytes/LICENSE | 23 + ruty/js/node_modules/bytes/Readme.md | 152 + ruty/js/node_modules/bytes/index.js | 170 + ruty/js/node_modules/bytes/package.json | 42 + ruty/js/node_modules/call-bind/.eslintignore | 1 + ruty/js/node_modules/call-bind/.eslintrc | 17 + .../call-bind/.github/FUNDING.yml | 12 + ruty/js/node_modules/call-bind/.nycrc | 13 + ruty/js/node_modules/call-bind/CHANGELOG.md | 42 + ruty/js/node_modules/call-bind/LICENSE | 21 + ruty/js/node_modules/call-bind/README.md | 2 + ruty/js/node_modules/call-bind/callBound.js | 15 + ruty/js/node_modules/call-bind/index.js | 47 + ruty/js/node_modules/call-bind/package.json | 80 + .../node_modules/call-bind/test/callBound.js | 55 + ruty/js/node_modules/call-bind/test/index.js | 66 + .../content-disposition/HISTORY.md | 60 + .../node_modules/content-disposition/LICENSE | 22 + .../content-disposition/README.md | 142 + .../node_modules/content-disposition/index.js | 458 + .../content-disposition/package.json | 44 + ruty/js/node_modules/content-type/HISTORY.md | 29 + ruty/js/node_modules/content-type/LICENSE | 22 + ruty/js/node_modules/content-type/README.md | 94 + ruty/js/node_modules/content-type/index.js | 225 + .../js/node_modules/content-type/package.json | 42 + .../node_modules/cookie-signature/.npmignore | 4 + .../node_modules/cookie-signature/History.md | 38 + .../node_modules/cookie-signature/Readme.md | 42 + .../js/node_modules/cookie-signature/index.js | 51 + .../cookie-signature/package.json | 18 + ruty/js/node_modules/cookie/HISTORY.md | 142 + ruty/js/node_modules/cookie/LICENSE | 24 + ruty/js/node_modules/cookie/README.md | 302 + ruty/js/node_modules/cookie/SECURITY.md | 25 + ruty/js/node_modules/cookie/index.js | 270 + ruty/js/node_modules/cookie/package.json | 44 + ruty/js/node_modules/debug/.coveralls.yml | 1 + ruty/js/node_modules/debug/.eslintrc | 11 + ruty/js/node_modules/debug/.npmignore | 9 + ruty/js/node_modules/debug/.travis.yml | 14 + ruty/js/node_modules/debug/CHANGELOG.md | 362 + ruty/js/node_modules/debug/LICENSE | 19 + ruty/js/node_modules/debug/Makefile | 50 + ruty/js/node_modules/debug/README.md | 312 + ruty/js/node_modules/debug/component.json | 19 + ruty/js/node_modules/debug/karma.conf.js | 70 + ruty/js/node_modules/debug/node.js | 1 + ruty/js/node_modules/debug/package.json | 49 + ruty/js/node_modules/debug/src/browser.js | 185 + ruty/js/node_modules/debug/src/debug.js | 202 + ruty/js/node_modules/debug/src/index.js | 10 + .../node_modules/debug/src/inspector-log.js | 15 + ruty/js/node_modules/debug/src/node.js | 248 + ruty/js/node_modules/depd/History.md | 103 + ruty/js/node_modules/depd/LICENSE | 22 + ruty/js/node_modules/depd/Readme.md | 280 + ruty/js/node_modules/depd/index.js | 538 ++ .../js/node_modules/depd/lib/browser/index.js | 77 + ruty/js/node_modules/depd/package.json | 45 + ruty/js/node_modules/destroy/LICENSE | 23 + ruty/js/node_modules/destroy/README.md | 63 + ruty/js/node_modules/destroy/index.js | 209 + ruty/js/node_modules/destroy/package.json | 48 + ruty/js/node_modules/ee-first/LICENSE | 22 + ruty/js/node_modules/ee-first/README.md | 80 + ruty/js/node_modules/ee-first/index.js | 95 + ruty/js/node_modules/ee-first/package.json | 29 + ruty/js/node_modules/encodeurl/HISTORY.md | 14 + ruty/js/node_modules/encodeurl/LICENSE | 22 + ruty/js/node_modules/encodeurl/README.md | 128 + ruty/js/node_modules/encodeurl/index.js | 60 + ruty/js/node_modules/encodeurl/package.json | 40 + ruty/js/node_modules/escape-html/LICENSE | 24 + ruty/js/node_modules/escape-html/Readme.md | 43 + ruty/js/node_modules/escape-html/index.js | 78 + ruty/js/node_modules/escape-html/package.json | 24 + ruty/js/node_modules/etag/HISTORY.md | 83 + ruty/js/node_modules/etag/LICENSE | 22 + ruty/js/node_modules/etag/README.md | 159 + ruty/js/node_modules/etag/index.js | 131 + ruty/js/node_modules/etag/package.json | 47 + ruty/js/node_modules/express/History.md | 3588 +++++++ ruty/js/node_modules/express/LICENSE | 24 + ruty/js/node_modules/express/Readme.md | 166 + ruty/js/node_modules/express/index.js | 11 + .../node_modules/express/lib/application.js | 661 ++ ruty/js/node_modules/express/lib/express.js | 116 + .../express/lib/middleware/init.js | 43 + .../express/lib/middleware/query.js | 47 + ruty/js/node_modules/express/lib/request.js | 525 + ruty/js/node_modules/express/lib/response.js | 1169 +++ .../node_modules/express/lib/router/index.js | 673 ++ .../node_modules/express/lib/router/layer.js | 181 + .../node_modules/express/lib/router/route.js | 225 + ruty/js/node_modules/express/lib/utils.js | 304 + ruty/js/node_modules/express/lib/view.js | 182 + ruty/js/node_modules/express/package.json | 99 + ruty/js/node_modules/finalhandler/HISTORY.md | 195 + ruty/js/node_modules/finalhandler/LICENSE | 22 + ruty/js/node_modules/finalhandler/README.md | 147 + ruty/js/node_modules/finalhandler/SECURITY.md | 25 + ruty/js/node_modules/finalhandler/index.js | 336 + .../js/node_modules/finalhandler/package.json | 46 + ruty/js/node_modules/forwarded/HISTORY.md | 21 + ruty/js/node_modules/forwarded/LICENSE | 22 + ruty/js/node_modules/forwarded/README.md | 57 + ruty/js/node_modules/forwarded/index.js | 90 + ruty/js/node_modules/forwarded/package.json | 45 + ruty/js/node_modules/fresh/HISTORY.md | 70 + ruty/js/node_modules/fresh/LICENSE | 23 + ruty/js/node_modules/fresh/README.md | 119 + ruty/js/node_modules/fresh/index.js | 137 + ruty/js/node_modules/fresh/package.json | 46 + .../node_modules/function-bind/.editorconfig | 20 + ruty/js/node_modules/function-bind/.eslintrc | 15 + ruty/js/node_modules/function-bind/.jscs.json | 176 + ruty/js/node_modules/function-bind/.npmignore | 22 + .../js/node_modules/function-bind/.travis.yml | 168 + ruty/js/node_modules/function-bind/LICENSE | 20 + ruty/js/node_modules/function-bind/README.md | 48 + .../function-bind/implementation.js | 52 + ruty/js/node_modules/function-bind/index.js | 5 + .../node_modules/function-bind/package.json | 63 + .../node_modules/function-bind/test/.eslintrc | 9 + .../node_modules/function-bind/test/index.js | 252 + ruty/js/node_modules/get-intrinsic/.eslintrc | 38 + .../get-intrinsic/.github/FUNDING.yml | 12 + ruty/js/node_modules/get-intrinsic/.nycrc | 9 + .../node_modules/get-intrinsic/CHANGELOG.md | 117 + ruty/js/node_modules/get-intrinsic/LICENSE | 21 + ruty/js/node_modules/get-intrinsic/README.md | 71 + ruty/js/node_modules/get-intrinsic/index.js | 351 + .../node_modules/get-intrinsic/package.json | 93 + .../get-intrinsic/test/GetIntrinsic.js | 274 + ruty/js/node_modules/has-proto/.eslintrc | 5 + .../has-proto/.github/FUNDING.yml | 12 + ruty/js/node_modules/has-proto/CHANGELOG.md | 23 + ruty/js/node_modules/has-proto/LICENSE | 21 + ruty/js/node_modules/has-proto/README.md | 38 + ruty/js/node_modules/has-proto/index.js | 11 + ruty/js/node_modules/has-proto/package.json | 74 + ruty/js/node_modules/has-proto/test/index.js | 19 + ruty/js/node_modules/has-symbols/.eslintrc | 11 + .../has-symbols/.github/FUNDING.yml | 12 + ruty/js/node_modules/has-symbols/.nycrc | 9 + ruty/js/node_modules/has-symbols/CHANGELOG.md | 75 + ruty/js/node_modules/has-symbols/LICENSE | 21 + ruty/js/node_modules/has-symbols/README.md | 46 + ruty/js/node_modules/has-symbols/index.js | 13 + ruty/js/node_modules/has-symbols/package.json | 101 + ruty/js/node_modules/has-symbols/shams.js | 42 + .../js/node_modules/has-symbols/test/index.js | 22 + .../has-symbols/test/shams/core-js.js | 28 + .../test/shams/get-own-property-symbols.js | 28 + .../js/node_modules/has-symbols/test/tests.js | 56 + ruty/js/node_modules/has/LICENSE-MIT | 22 + ruty/js/node_modules/has/README.md | 18 + ruty/js/node_modules/has/package.json | 48 + ruty/js/node_modules/has/src/index.js | 5 + ruty/js/node_modules/has/test/index.js | 10 + ruty/js/node_modules/http-errors/HISTORY.md | 180 + ruty/js/node_modules/http-errors/LICENSE | 23 + ruty/js/node_modules/http-errors/README.md | 169 + ruty/js/node_modules/http-errors/index.js | 289 + ruty/js/node_modules/http-errors/package.json | 50 + ruty/js/node_modules/iconv-lite/Changelog.md | 162 + ruty/js/node_modules/iconv-lite/LICENSE | 21 + ruty/js/node_modules/iconv-lite/README.md | 156 + .../iconv-lite/encodings/dbcs-codec.js | 555 ++ .../iconv-lite/encodings/dbcs-data.js | 176 + .../iconv-lite/encodings/index.js | 22 + .../iconv-lite/encodings/internal.js | 188 + .../iconv-lite/encodings/sbcs-codec.js | 72 + .../encodings/sbcs-data-generated.js | 451 + .../iconv-lite/encodings/sbcs-data.js | 174 + .../encodings/tables/big5-added.json | 122 + .../iconv-lite/encodings/tables/cp936.json | 264 + .../iconv-lite/encodings/tables/cp949.json | 273 + .../iconv-lite/encodings/tables/cp950.json | 177 + .../iconv-lite/encodings/tables/eucjp.json | 182 + .../encodings/tables/gb18030-ranges.json | 1 + .../encodings/tables/gbk-added.json | 55 + .../iconv-lite/encodings/tables/shiftjis.json | 125 + .../iconv-lite/encodings/utf16.js | 177 + .../node_modules/iconv-lite/encodings/utf7.js | 290 + .../iconv-lite/lib/bom-handling.js | 52 + .../iconv-lite/lib/extend-node.js | 217 + .../js/node_modules/iconv-lite/lib/index.d.ts | 24 + ruty/js/node_modules/iconv-lite/lib/index.js | 153 + .../js/node_modules/iconv-lite/lib/streams.js | 121 + ruty/js/node_modules/iconv-lite/package.json | 46 + ruty/js/node_modules/imageinfo/README.md | 25 + ruty/js/node_modules/imageinfo/index.js | 230 + ruty/js/node_modules/imageinfo/package.json | 29 + ruty/js/node_modules/imageinfo/test/info.js | 254 + ruty/js/node_modules/inherits/LICENSE | 16 + ruty/js/node_modules/inherits/README.md | 42 + ruty/js/node_modules/inherits/inherits.js | 9 + .../node_modules/inherits/inherits_browser.js | 27 + ruty/js/node_modules/inherits/package.json | 29 + ruty/js/node_modules/ipaddr.js/LICENSE | 19 + ruty/js/node_modules/ipaddr.js/README.md | 233 + ruty/js/node_modules/ipaddr.js/ipaddr.min.js | 1 + ruty/js/node_modules/ipaddr.js/lib/ipaddr.js | 673 ++ .../node_modules/ipaddr.js/lib/ipaddr.js.d.ts | 68 + ruty/js/node_modules/ipaddr.js/package.json | 35 + ruty/js/node_modules/media-typer/HISTORY.md | 22 + ruty/js/node_modules/media-typer/LICENSE | 22 + ruty/js/node_modules/media-typer/README.md | 81 + ruty/js/node_modules/media-typer/index.js | 270 + ruty/js/node_modules/media-typer/package.json | 26 + .../node_modules/merge-descriptors/HISTORY.md | 21 + .../js/node_modules/merge-descriptors/LICENSE | 23 + .../node_modules/merge-descriptors/README.md | 48 + .../node_modules/merge-descriptors/index.js | 60 + .../merge-descriptors/package.json | 32 + ruty/js/node_modules/methods/HISTORY.md | 29 + ruty/js/node_modules/methods/LICENSE | 24 + ruty/js/node_modules/methods/README.md | 51 + ruty/js/node_modules/methods/index.js | 69 + ruty/js/node_modules/methods/package.json | 36 + ruty/js/node_modules/mime-db/HISTORY.md | 507 + ruty/js/node_modules/mime-db/LICENSE | 23 + ruty/js/node_modules/mime-db/README.md | 100 + ruty/js/node_modules/mime-db/db.json | 8519 +++++++++++++++++ ruty/js/node_modules/mime-db/index.js | 12 + ruty/js/node_modules/mime-db/package.json | 60 + ruty/js/node_modules/mime-types/HISTORY.md | 397 + ruty/js/node_modules/mime-types/LICENSE | 23 + ruty/js/node_modules/mime-types/README.md | 113 + ruty/js/node_modules/mime-types/index.js | 188 + ruty/js/node_modules/mime-types/package.json | 44 + ruty/js/node_modules/mime/.npmignore | 0 ruty/js/node_modules/mime/CHANGELOG.md | 164 + ruty/js/node_modules/mime/LICENSE | 21 + ruty/js/node_modules/mime/README.md | 90 + ruty/js/node_modules/mime/cli.js | 8 + ruty/js/node_modules/mime/mime.js | 108 + ruty/js/node_modules/mime/package.json | 44 + ruty/js/node_modules/mime/src/build.js | 53 + ruty/js/node_modules/mime/src/test.js | 60 + ruty/js/node_modules/mime/types.json | 1 + ruty/js/node_modules/ms/index.js | 152 + ruty/js/node_modules/ms/license.md | 21 + ruty/js/node_modules/ms/package.json | 37 + ruty/js/node_modules/ms/readme.md | 51 + ruty/js/node_modules/negotiator/HISTORY.md | 108 + ruty/js/node_modules/negotiator/LICENSE | 24 + ruty/js/node_modules/negotiator/README.md | 203 + ruty/js/node_modules/negotiator/index.js | 82 + .../js/node_modules/negotiator/lib/charset.js | 169 + .../node_modules/negotiator/lib/encoding.js | 184 + .../node_modules/negotiator/lib/language.js | 179 + .../node_modules/negotiator/lib/mediaType.js | 294 + ruty/js/node_modules/negotiator/package.json | 42 + ruty/js/node_modules/object-inspect/.eslintrc | 53 + .../object-inspect/.github/FUNDING.yml | 12 + ruty/js/node_modules/object-inspect/.nycrc | 13 + .../node_modules/object-inspect/CHANGELOG.md | 370 + ruty/js/node_modules/object-inspect/LICENSE | 21 + .../object-inspect/example/all.js | 23 + .../object-inspect/example/circular.js | 6 + .../node_modules/object-inspect/example/fn.js | 5 + .../object-inspect/example/inspect.js | 10 + ruty/js/node_modules/object-inspect/index.js | 516 + .../object-inspect/package-support.json | 20 + .../node_modules/object-inspect/package.json | 97 + .../object-inspect/readme.markdown | 86 + .../object-inspect/test-core-js.js | 26 + .../object-inspect/test/bigint.js | 58 + .../object-inspect/test/browser/dom.js | 15 + .../object-inspect/test/circular.js | 16 + .../node_modules/object-inspect/test/deep.js | 12 + .../object-inspect/test/element.js | 53 + .../node_modules/object-inspect/test/err.js | 48 + .../node_modules/object-inspect/test/fakes.js | 29 + .../js/node_modules/object-inspect/test/fn.js | 76 + .../node_modules/object-inspect/test/has.js | 15 + .../node_modules/object-inspect/test/holes.js | 15 + .../object-inspect/test/indent-option.js | 271 + .../object-inspect/test/inspect.js | 139 + .../object-inspect/test/lowbyte.js | 12 + .../object-inspect/test/number.js | 58 + .../object-inspect/test/quoteStyle.js | 17 + .../object-inspect/test/toStringTag.js | 40 + .../node_modules/object-inspect/test/undef.js | 12 + .../object-inspect/test/values.js | 211 + .../object-inspect/util.inspect.js | 1 + ruty/js/node_modules/on-finished/HISTORY.md | 98 + ruty/js/node_modules/on-finished/LICENSE | 23 + ruty/js/node_modules/on-finished/README.md | 162 + ruty/js/node_modules/on-finished/index.js | 234 + ruty/js/node_modules/on-finished/package.json | 39 + ruty/js/node_modules/parseurl/HISTORY.md | 58 + ruty/js/node_modules/parseurl/LICENSE | 24 + ruty/js/node_modules/parseurl/README.md | 133 + ruty/js/node_modules/parseurl/index.js | 158 + ruty/js/node_modules/parseurl/package.json | 40 + .../js/node_modules/path-to-regexp/History.md | 36 + ruty/js/node_modules/path-to-regexp/LICENSE | 21 + ruty/js/node_modules/path-to-regexp/Readme.md | 35 + ruty/js/node_modules/path-to-regexp/index.js | 129 + .../node_modules/path-to-regexp/package.json | 30 + ruty/js/node_modules/proxy-addr/HISTORY.md | 161 + ruty/js/node_modules/proxy-addr/LICENSE | 22 + ruty/js/node_modules/proxy-addr/README.md | 139 + ruty/js/node_modules/proxy-addr/index.js | 327 + ruty/js/node_modules/proxy-addr/package.json | 47 + ruty/js/node_modules/qs/.editorconfig | 43 + ruty/js/node_modules/qs/.eslintrc | 38 + ruty/js/node_modules/qs/.github/FUNDING.yml | 12 + ruty/js/node_modules/qs/.nycrc | 13 + ruty/js/node_modules/qs/CHANGELOG.md | 546 ++ ruty/js/node_modules/qs/LICENSE.md | 29 + ruty/js/node_modules/qs/README.md | 625 ++ ruty/js/node_modules/qs/dist/qs.js | 2054 ++++ ruty/js/node_modules/qs/lib/formats.js | 23 + ruty/js/node_modules/qs/lib/index.js | 11 + ruty/js/node_modules/qs/lib/parse.js | 263 + ruty/js/node_modules/qs/lib/stringify.js | 326 + ruty/js/node_modules/qs/lib/utils.js | 252 + ruty/js/node_modules/qs/package.json | 77 + ruty/js/node_modules/qs/test/parse.js | 855 ++ ruty/js/node_modules/qs/test/stringify.js | 909 ++ ruty/js/node_modules/qs/test/utils.js | 136 + ruty/js/node_modules/range-parser/HISTORY.md | 56 + ruty/js/node_modules/range-parser/LICENSE | 23 + ruty/js/node_modules/range-parser/README.md | 84 + ruty/js/node_modules/range-parser/index.js | 162 + .../js/node_modules/range-parser/package.json | 44 + ruty/js/node_modules/raw-body/HISTORY.md | 303 + ruty/js/node_modules/raw-body/LICENSE | 22 + ruty/js/node_modules/raw-body/README.md | 223 + ruty/js/node_modules/raw-body/SECURITY.md | 24 + ruty/js/node_modules/raw-body/index.d.ts | 87 + ruty/js/node_modules/raw-body/index.js | 329 + ruty/js/node_modules/raw-body/package.json | 49 + ruty/js/node_modules/rtf/.npmignore | 15 + ruty/js/node_modules/rtf/README.md | 4 + ruty/js/node_modules/rtf/examples/dog.jpg | Bin 0 -> 69754 bytes .../node_modules/rtf/examples/formatting.js | 51 + .../js/node_modules/rtf/examples/halloween.js | 21 + ruty/js/node_modules/rtf/examples/image.js | 16 + ruty/js/node_modules/rtf/examples/tables.js | 31 + ruty/js/node_modules/rtf/lib/align.js | 6 + ruty/js/node_modules/rtf/lib/colors.js | 15 + .../node_modules/rtf/lib/elements/element.js | 13 + .../js/node_modules/rtf/lib/elements/group.js | 37 + .../js/node_modules/rtf/lib/elements/image.js | 41 + .../js/node_modules/rtf/lib/elements/table.js | 88 + ruty/js/node_modules/rtf/lib/elements/text.js | 12 + ruty/js/node_modules/rtf/lib/fonts.js | 12 + ruty/js/node_modules/rtf/lib/format.js | 118 + ruty/js/node_modules/rtf/lib/language.js | 6 + ruty/js/node_modules/rtf/lib/orientation.js | 4 + ruty/js/node_modules/rtf/lib/rgb.js | 5 + ruty/js/node_modules/rtf/lib/rtf-utils.js | 76 + ruty/js/node_modules/rtf/lib/rtf.js | 138 + ruty/js/node_modules/rtf/package.json | 21 + ruty/js/node_modules/safe-buffer/LICENSE | 21 + ruty/js/node_modules/safe-buffer/README.md | 584 ++ ruty/js/node_modules/safe-buffer/index.d.ts | 187 + ruty/js/node_modules/safe-buffer/index.js | 65 + ruty/js/node_modules/safe-buffer/package.json | 51 + ruty/js/node_modules/safer-buffer/LICENSE | 21 + .../safer-buffer/Porting-Buffer.md | 268 + ruty/js/node_modules/safer-buffer/Readme.md | 156 + .../js/node_modules/safer-buffer/dangerous.js | 58 + .../js/node_modules/safer-buffer/package.json | 34 + ruty/js/node_modules/safer-buffer/safer.js | 77 + ruty/js/node_modules/safer-buffer/tests.js | 406 + ruty/js/node_modules/send/HISTORY.md | 521 + ruty/js/node_modules/send/LICENSE | 23 + ruty/js/node_modules/send/README.md | 327 + ruty/js/node_modules/send/SECURITY.md | 24 + ruty/js/node_modules/send/index.js | 1143 +++ .../send/node_modules/ms/index.js | 162 + .../send/node_modules/ms/license.md | 21 + .../send/node_modules/ms/package.json | 38 + .../send/node_modules/ms/readme.md | 59 + ruty/js/node_modules/send/package.json | 62 + ruty/js/node_modules/serve-static/HISTORY.md | 471 + ruty/js/node_modules/serve-static/LICENSE | 25 + ruty/js/node_modules/serve-static/README.md | 257 + ruty/js/node_modules/serve-static/index.js | 210 + .../js/node_modules/serve-static/package.json | 42 + ruty/js/node_modules/setprototypeof/LICENSE | 13 + ruty/js/node_modules/setprototypeof/README.md | 31 + .../js/node_modules/setprototypeof/index.d.ts | 2 + ruty/js/node_modules/setprototypeof/index.js | 17 + .../node_modules/setprototypeof/package.json | 38 + .../node_modules/setprototypeof/test/index.js | 24 + .../node_modules/side-channel/.eslintignore | 1 + ruty/js/node_modules/side-channel/.eslintrc | 11 + .../side-channel/.github/FUNDING.yml | 12 + ruty/js/node_modules/side-channel/.nycrc | 13 + .../js/node_modules/side-channel/CHANGELOG.md | 65 + ruty/js/node_modules/side-channel/LICENSE | 21 + ruty/js/node_modules/side-channel/README.md | 2 + ruty/js/node_modules/side-channel/index.js | 124 + .../js/node_modules/side-channel/package.json | 67 + .../node_modules/side-channel/test/index.js | 78 + ruty/js/node_modules/statuses/HISTORY.md | 82 + ruty/js/node_modules/statuses/LICENSE | 23 + ruty/js/node_modules/statuses/README.md | 136 + ruty/js/node_modules/statuses/codes.json | 65 + ruty/js/node_modules/statuses/index.js | 146 + ruty/js/node_modules/statuses/package.json | 49 + ruty/js/node_modules/toidentifier/HISTORY.md | 9 + ruty/js/node_modules/toidentifier/LICENSE | 21 + ruty/js/node_modules/toidentifier/README.md | 61 + ruty/js/node_modules/toidentifier/index.js | 32 + .../js/node_modules/toidentifier/package.json | 38 + ruty/js/node_modules/type-is/HISTORY.md | 259 + ruty/js/node_modules/type-is/LICENSE | 23 + ruty/js/node_modules/type-is/README.md | 170 + ruty/js/node_modules/type-is/index.js | 266 + ruty/js/node_modules/type-is/package.json | 45 + ruty/js/node_modules/unpipe/HISTORY.md | 4 + ruty/js/node_modules/unpipe/LICENSE | 22 + ruty/js/node_modules/unpipe/README.md | 43 + ruty/js/node_modules/unpipe/index.js | 69 + ruty/js/node_modules/unpipe/package.json | 27 + ruty/js/node_modules/utils-merge/.npmignore | 9 + ruty/js/node_modules/utils-merge/LICENSE | 20 + ruty/js/node_modules/utils-merge/README.md | 34 + ruty/js/node_modules/utils-merge/index.js | 23 + ruty/js/node_modules/utils-merge/package.json | 40 + ruty/js/node_modules/vary/HISTORY.md | 39 + ruty/js/node_modules/vary/LICENSE | 22 + ruty/js/node_modules/vary/README.md | 101 + ruty/js/node_modules/vary/index.js | 149 + ruty/js/node_modules/vary/package.json | 43 + ruty/js/package-lock.json | 600 ++ ruty/js/package.json | 5 + ruty/js/script.js | 17 + ruty/js/scriptnotepad.js | 316 + ruty/js/scripttodo.js | 17 + ruty/js/server.js | 28 + ruty/styles/style.css | 66 + ruty/styles/style1.css | 125 + ruty/styles/stylenote.css | 163 + ruty/styles/styletodo.css | 102 + 485 files changed, 67750 insertions(+) create mode 100644 ruty/WhykIA/Mon premier neurone.ipynb create mode 100644 ruty/img/agenda.png create mode 100644 ruty/img/home.png create mode 100644 ruty/img/logo.png create mode 100644 ruty/img/logout.png create mode 100644 ruty/img/mails.png create mode 100644 ruty/img/notepad.png create mode 100644 ruty/img/todo.png create mode 100644 ruty/js/node_modules/.bin/mime create mode 100644 ruty/js/node_modules/.bin/mime.cmd create mode 100644 ruty/js/node_modules/.bin/mime.ps1 create mode 100644 ruty/js/node_modules/.package-lock.json create mode 100644 ruty/js/node_modules/accepts/HISTORY.md create mode 100644 ruty/js/node_modules/accepts/LICENSE create mode 100644 ruty/js/node_modules/accepts/README.md create mode 100644 ruty/js/node_modules/accepts/index.js create mode 100644 ruty/js/node_modules/accepts/package.json create mode 100644 ruty/js/node_modules/array-flatten/LICENSE create mode 100644 ruty/js/node_modules/array-flatten/README.md create mode 100644 ruty/js/node_modules/array-flatten/array-flatten.js create mode 100644 ruty/js/node_modules/array-flatten/package.json create mode 100644 ruty/js/node_modules/async/.travis.yml create mode 100644 ruty/js/node_modules/async/LICENSE create mode 100644 ruty/js/node_modules/async/README.md create mode 100644 ruty/js/node_modules/async/bower.json create mode 100644 ruty/js/node_modules/async/component.json create mode 100644 ruty/js/node_modules/async/lib/async.js create mode 100644 ruty/js/node_modules/async/package.json create mode 100644 ruty/js/node_modules/async/support/sync-package-managers.js create mode 100644 ruty/js/node_modules/body-parser/HISTORY.md create mode 100644 ruty/js/node_modules/body-parser/LICENSE create mode 100644 ruty/js/node_modules/body-parser/README.md create mode 100644 ruty/js/node_modules/body-parser/SECURITY.md create mode 100644 ruty/js/node_modules/body-parser/index.js create mode 100644 ruty/js/node_modules/body-parser/lib/read.js create mode 100644 ruty/js/node_modules/body-parser/lib/types/json.js create mode 100644 ruty/js/node_modules/body-parser/lib/types/raw.js create mode 100644 ruty/js/node_modules/body-parser/lib/types/text.js create mode 100644 ruty/js/node_modules/body-parser/lib/types/urlencoded.js create mode 100644 ruty/js/node_modules/body-parser/package.json create mode 100644 ruty/js/node_modules/bytes/History.md create mode 100644 ruty/js/node_modules/bytes/LICENSE create mode 100644 ruty/js/node_modules/bytes/Readme.md create mode 100644 ruty/js/node_modules/bytes/index.js create mode 100644 ruty/js/node_modules/bytes/package.json create mode 100644 ruty/js/node_modules/call-bind/.eslintignore create mode 100644 ruty/js/node_modules/call-bind/.eslintrc create mode 100644 ruty/js/node_modules/call-bind/.github/FUNDING.yml create mode 100644 ruty/js/node_modules/call-bind/.nycrc create mode 100644 ruty/js/node_modules/call-bind/CHANGELOG.md create mode 100644 ruty/js/node_modules/call-bind/LICENSE create mode 100644 ruty/js/node_modules/call-bind/README.md create mode 100644 ruty/js/node_modules/call-bind/callBound.js create mode 100644 ruty/js/node_modules/call-bind/index.js create mode 100644 ruty/js/node_modules/call-bind/package.json create mode 100644 ruty/js/node_modules/call-bind/test/callBound.js create mode 100644 ruty/js/node_modules/call-bind/test/index.js create mode 100644 ruty/js/node_modules/content-disposition/HISTORY.md create mode 100644 ruty/js/node_modules/content-disposition/LICENSE create mode 100644 ruty/js/node_modules/content-disposition/README.md create mode 100644 ruty/js/node_modules/content-disposition/index.js create mode 100644 ruty/js/node_modules/content-disposition/package.json create mode 100644 ruty/js/node_modules/content-type/HISTORY.md create mode 100644 ruty/js/node_modules/content-type/LICENSE create mode 100644 ruty/js/node_modules/content-type/README.md create mode 100644 ruty/js/node_modules/content-type/index.js create mode 100644 ruty/js/node_modules/content-type/package.json create mode 100644 ruty/js/node_modules/cookie-signature/.npmignore create mode 100644 ruty/js/node_modules/cookie-signature/History.md create mode 100644 ruty/js/node_modules/cookie-signature/Readme.md create mode 100644 ruty/js/node_modules/cookie-signature/index.js create mode 100644 ruty/js/node_modules/cookie-signature/package.json create mode 100644 ruty/js/node_modules/cookie/HISTORY.md create mode 100644 ruty/js/node_modules/cookie/LICENSE create mode 100644 ruty/js/node_modules/cookie/README.md create mode 100644 ruty/js/node_modules/cookie/SECURITY.md create mode 100644 ruty/js/node_modules/cookie/index.js create mode 100644 ruty/js/node_modules/cookie/package.json create mode 100644 ruty/js/node_modules/debug/.coveralls.yml create mode 100644 ruty/js/node_modules/debug/.eslintrc create mode 100644 ruty/js/node_modules/debug/.npmignore create mode 100644 ruty/js/node_modules/debug/.travis.yml create mode 100644 ruty/js/node_modules/debug/CHANGELOG.md create mode 100644 ruty/js/node_modules/debug/LICENSE create mode 100644 ruty/js/node_modules/debug/Makefile create mode 100644 ruty/js/node_modules/debug/README.md create mode 100644 ruty/js/node_modules/debug/component.json create mode 100644 ruty/js/node_modules/debug/karma.conf.js create mode 100644 ruty/js/node_modules/debug/node.js create mode 100644 ruty/js/node_modules/debug/package.json create mode 100644 ruty/js/node_modules/debug/src/browser.js create mode 100644 ruty/js/node_modules/debug/src/debug.js create mode 100644 ruty/js/node_modules/debug/src/index.js create mode 100644 ruty/js/node_modules/debug/src/inspector-log.js create mode 100644 ruty/js/node_modules/debug/src/node.js create mode 100644 ruty/js/node_modules/depd/History.md create mode 100644 ruty/js/node_modules/depd/LICENSE create mode 100644 ruty/js/node_modules/depd/Readme.md create mode 100644 ruty/js/node_modules/depd/index.js create mode 100644 ruty/js/node_modules/depd/lib/browser/index.js create mode 100644 ruty/js/node_modules/depd/package.json create mode 100644 ruty/js/node_modules/destroy/LICENSE create mode 100644 ruty/js/node_modules/destroy/README.md create mode 100644 ruty/js/node_modules/destroy/index.js create mode 100644 ruty/js/node_modules/destroy/package.json create mode 100644 ruty/js/node_modules/ee-first/LICENSE create mode 100644 ruty/js/node_modules/ee-first/README.md create mode 100644 ruty/js/node_modules/ee-first/index.js create mode 100644 ruty/js/node_modules/ee-first/package.json create mode 100644 ruty/js/node_modules/encodeurl/HISTORY.md create mode 100644 ruty/js/node_modules/encodeurl/LICENSE create mode 100644 ruty/js/node_modules/encodeurl/README.md create mode 100644 ruty/js/node_modules/encodeurl/index.js create mode 100644 ruty/js/node_modules/encodeurl/package.json create mode 100644 ruty/js/node_modules/escape-html/LICENSE create mode 100644 ruty/js/node_modules/escape-html/Readme.md create mode 100644 ruty/js/node_modules/escape-html/index.js create mode 100644 ruty/js/node_modules/escape-html/package.json create mode 100644 ruty/js/node_modules/etag/HISTORY.md create mode 100644 ruty/js/node_modules/etag/LICENSE create mode 100644 ruty/js/node_modules/etag/README.md create mode 100644 ruty/js/node_modules/etag/index.js create mode 100644 ruty/js/node_modules/etag/package.json create mode 100644 ruty/js/node_modules/express/History.md create mode 100644 ruty/js/node_modules/express/LICENSE create mode 100644 ruty/js/node_modules/express/Readme.md create mode 100644 ruty/js/node_modules/express/index.js create mode 100644 ruty/js/node_modules/express/lib/application.js create mode 100644 ruty/js/node_modules/express/lib/express.js create mode 100644 ruty/js/node_modules/express/lib/middleware/init.js create mode 100644 ruty/js/node_modules/express/lib/middleware/query.js create mode 100644 ruty/js/node_modules/express/lib/request.js create mode 100644 ruty/js/node_modules/express/lib/response.js create mode 100644 ruty/js/node_modules/express/lib/router/index.js create mode 100644 ruty/js/node_modules/express/lib/router/layer.js create mode 100644 ruty/js/node_modules/express/lib/router/route.js create mode 100644 ruty/js/node_modules/express/lib/utils.js create mode 100644 ruty/js/node_modules/express/lib/view.js create mode 100644 ruty/js/node_modules/express/package.json create mode 100644 ruty/js/node_modules/finalhandler/HISTORY.md create mode 100644 ruty/js/node_modules/finalhandler/LICENSE create mode 100644 ruty/js/node_modules/finalhandler/README.md create mode 100644 ruty/js/node_modules/finalhandler/SECURITY.md create mode 100644 ruty/js/node_modules/finalhandler/index.js create mode 100644 ruty/js/node_modules/finalhandler/package.json create mode 100644 ruty/js/node_modules/forwarded/HISTORY.md create mode 100644 ruty/js/node_modules/forwarded/LICENSE create mode 100644 ruty/js/node_modules/forwarded/README.md create mode 100644 ruty/js/node_modules/forwarded/index.js create mode 100644 ruty/js/node_modules/forwarded/package.json create mode 100644 ruty/js/node_modules/fresh/HISTORY.md create mode 100644 ruty/js/node_modules/fresh/LICENSE create mode 100644 ruty/js/node_modules/fresh/README.md create mode 100644 ruty/js/node_modules/fresh/index.js create mode 100644 ruty/js/node_modules/fresh/package.json create mode 100644 ruty/js/node_modules/function-bind/.editorconfig create mode 100644 ruty/js/node_modules/function-bind/.eslintrc create mode 100644 ruty/js/node_modules/function-bind/.jscs.json create mode 100644 ruty/js/node_modules/function-bind/.npmignore create mode 100644 ruty/js/node_modules/function-bind/.travis.yml create mode 100644 ruty/js/node_modules/function-bind/LICENSE create mode 100644 ruty/js/node_modules/function-bind/README.md create mode 100644 ruty/js/node_modules/function-bind/implementation.js create mode 100644 ruty/js/node_modules/function-bind/index.js create mode 100644 ruty/js/node_modules/function-bind/package.json create mode 100644 ruty/js/node_modules/function-bind/test/.eslintrc create mode 100644 ruty/js/node_modules/function-bind/test/index.js create mode 100644 ruty/js/node_modules/get-intrinsic/.eslintrc create mode 100644 ruty/js/node_modules/get-intrinsic/.github/FUNDING.yml create mode 100644 ruty/js/node_modules/get-intrinsic/.nycrc create mode 100644 ruty/js/node_modules/get-intrinsic/CHANGELOG.md create mode 100644 ruty/js/node_modules/get-intrinsic/LICENSE create mode 100644 ruty/js/node_modules/get-intrinsic/README.md create mode 100644 ruty/js/node_modules/get-intrinsic/index.js create mode 100644 ruty/js/node_modules/get-intrinsic/package.json create mode 100644 ruty/js/node_modules/get-intrinsic/test/GetIntrinsic.js create mode 100644 ruty/js/node_modules/has-proto/.eslintrc create mode 100644 ruty/js/node_modules/has-proto/.github/FUNDING.yml create mode 100644 ruty/js/node_modules/has-proto/CHANGELOG.md create mode 100644 ruty/js/node_modules/has-proto/LICENSE create mode 100644 ruty/js/node_modules/has-proto/README.md create mode 100644 ruty/js/node_modules/has-proto/index.js create mode 100644 ruty/js/node_modules/has-proto/package.json create mode 100644 ruty/js/node_modules/has-proto/test/index.js create mode 100644 ruty/js/node_modules/has-symbols/.eslintrc create mode 100644 ruty/js/node_modules/has-symbols/.github/FUNDING.yml create mode 100644 ruty/js/node_modules/has-symbols/.nycrc create mode 100644 ruty/js/node_modules/has-symbols/CHANGELOG.md create mode 100644 ruty/js/node_modules/has-symbols/LICENSE create mode 100644 ruty/js/node_modules/has-symbols/README.md create mode 100644 ruty/js/node_modules/has-symbols/index.js create mode 100644 ruty/js/node_modules/has-symbols/package.json create mode 100644 ruty/js/node_modules/has-symbols/shams.js create mode 100644 ruty/js/node_modules/has-symbols/test/index.js create mode 100644 ruty/js/node_modules/has-symbols/test/shams/core-js.js create mode 100644 ruty/js/node_modules/has-symbols/test/shams/get-own-property-symbols.js create mode 100644 ruty/js/node_modules/has-symbols/test/tests.js create mode 100644 ruty/js/node_modules/has/LICENSE-MIT create mode 100644 ruty/js/node_modules/has/README.md create mode 100644 ruty/js/node_modules/has/package.json create mode 100644 ruty/js/node_modules/has/src/index.js create mode 100644 ruty/js/node_modules/has/test/index.js create mode 100644 ruty/js/node_modules/http-errors/HISTORY.md create mode 100644 ruty/js/node_modules/http-errors/LICENSE create mode 100644 ruty/js/node_modules/http-errors/README.md create mode 100644 ruty/js/node_modules/http-errors/index.js create mode 100644 ruty/js/node_modules/http-errors/package.json create mode 100644 ruty/js/node_modules/iconv-lite/Changelog.md create mode 100644 ruty/js/node_modules/iconv-lite/LICENSE create mode 100644 ruty/js/node_modules/iconv-lite/README.md create mode 100644 ruty/js/node_modules/iconv-lite/encodings/dbcs-codec.js create mode 100644 ruty/js/node_modules/iconv-lite/encodings/dbcs-data.js create mode 100644 ruty/js/node_modules/iconv-lite/encodings/index.js create mode 100644 ruty/js/node_modules/iconv-lite/encodings/internal.js create mode 100644 ruty/js/node_modules/iconv-lite/encodings/sbcs-codec.js create mode 100644 ruty/js/node_modules/iconv-lite/encodings/sbcs-data-generated.js create mode 100644 ruty/js/node_modules/iconv-lite/encodings/sbcs-data.js create mode 100644 ruty/js/node_modules/iconv-lite/encodings/tables/big5-added.json create mode 100644 ruty/js/node_modules/iconv-lite/encodings/tables/cp936.json create mode 100644 ruty/js/node_modules/iconv-lite/encodings/tables/cp949.json create mode 100644 ruty/js/node_modules/iconv-lite/encodings/tables/cp950.json create mode 100644 ruty/js/node_modules/iconv-lite/encodings/tables/eucjp.json create mode 100644 ruty/js/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json create mode 100644 ruty/js/node_modules/iconv-lite/encodings/tables/gbk-added.json create mode 100644 ruty/js/node_modules/iconv-lite/encodings/tables/shiftjis.json create mode 100644 ruty/js/node_modules/iconv-lite/encodings/utf16.js create mode 100644 ruty/js/node_modules/iconv-lite/encodings/utf7.js create mode 100644 ruty/js/node_modules/iconv-lite/lib/bom-handling.js create mode 100644 ruty/js/node_modules/iconv-lite/lib/extend-node.js create mode 100644 ruty/js/node_modules/iconv-lite/lib/index.d.ts create mode 100644 ruty/js/node_modules/iconv-lite/lib/index.js create mode 100644 ruty/js/node_modules/iconv-lite/lib/streams.js create mode 100644 ruty/js/node_modules/iconv-lite/package.json create mode 100644 ruty/js/node_modules/imageinfo/README.md create mode 100644 ruty/js/node_modules/imageinfo/index.js create mode 100644 ruty/js/node_modules/imageinfo/package.json create mode 100644 ruty/js/node_modules/imageinfo/test/info.js create mode 100644 ruty/js/node_modules/inherits/LICENSE create mode 100644 ruty/js/node_modules/inherits/README.md create mode 100644 ruty/js/node_modules/inherits/inherits.js create mode 100644 ruty/js/node_modules/inherits/inherits_browser.js create mode 100644 ruty/js/node_modules/inherits/package.json create mode 100644 ruty/js/node_modules/ipaddr.js/LICENSE create mode 100644 ruty/js/node_modules/ipaddr.js/README.md create mode 100644 ruty/js/node_modules/ipaddr.js/ipaddr.min.js create mode 100644 ruty/js/node_modules/ipaddr.js/lib/ipaddr.js create mode 100644 ruty/js/node_modules/ipaddr.js/lib/ipaddr.js.d.ts create mode 100644 ruty/js/node_modules/ipaddr.js/package.json create mode 100644 ruty/js/node_modules/media-typer/HISTORY.md create mode 100644 ruty/js/node_modules/media-typer/LICENSE create mode 100644 ruty/js/node_modules/media-typer/README.md create mode 100644 ruty/js/node_modules/media-typer/index.js create mode 100644 ruty/js/node_modules/media-typer/package.json create mode 100644 ruty/js/node_modules/merge-descriptors/HISTORY.md create mode 100644 ruty/js/node_modules/merge-descriptors/LICENSE create mode 100644 ruty/js/node_modules/merge-descriptors/README.md create mode 100644 ruty/js/node_modules/merge-descriptors/index.js create mode 100644 ruty/js/node_modules/merge-descriptors/package.json create mode 100644 ruty/js/node_modules/methods/HISTORY.md create mode 100644 ruty/js/node_modules/methods/LICENSE create mode 100644 ruty/js/node_modules/methods/README.md create mode 100644 ruty/js/node_modules/methods/index.js create mode 100644 ruty/js/node_modules/methods/package.json create mode 100644 ruty/js/node_modules/mime-db/HISTORY.md create mode 100644 ruty/js/node_modules/mime-db/LICENSE create mode 100644 ruty/js/node_modules/mime-db/README.md create mode 100644 ruty/js/node_modules/mime-db/db.json create mode 100644 ruty/js/node_modules/mime-db/index.js create mode 100644 ruty/js/node_modules/mime-db/package.json create mode 100644 ruty/js/node_modules/mime-types/HISTORY.md create mode 100644 ruty/js/node_modules/mime-types/LICENSE create mode 100644 ruty/js/node_modules/mime-types/README.md create mode 100644 ruty/js/node_modules/mime-types/index.js create mode 100644 ruty/js/node_modules/mime-types/package.json create mode 100644 ruty/js/node_modules/mime/.npmignore create mode 100644 ruty/js/node_modules/mime/CHANGELOG.md create mode 100644 ruty/js/node_modules/mime/LICENSE create mode 100644 ruty/js/node_modules/mime/README.md create mode 100644 ruty/js/node_modules/mime/cli.js create mode 100644 ruty/js/node_modules/mime/mime.js create mode 100644 ruty/js/node_modules/mime/package.json create mode 100644 ruty/js/node_modules/mime/src/build.js create mode 100644 ruty/js/node_modules/mime/src/test.js create mode 100644 ruty/js/node_modules/mime/types.json create mode 100644 ruty/js/node_modules/ms/index.js create mode 100644 ruty/js/node_modules/ms/license.md create mode 100644 ruty/js/node_modules/ms/package.json create mode 100644 ruty/js/node_modules/ms/readme.md create mode 100644 ruty/js/node_modules/negotiator/HISTORY.md create mode 100644 ruty/js/node_modules/negotiator/LICENSE create mode 100644 ruty/js/node_modules/negotiator/README.md create mode 100644 ruty/js/node_modules/negotiator/index.js create mode 100644 ruty/js/node_modules/negotiator/lib/charset.js create mode 100644 ruty/js/node_modules/negotiator/lib/encoding.js create mode 100644 ruty/js/node_modules/negotiator/lib/language.js create mode 100644 ruty/js/node_modules/negotiator/lib/mediaType.js create mode 100644 ruty/js/node_modules/negotiator/package.json create mode 100644 ruty/js/node_modules/object-inspect/.eslintrc create mode 100644 ruty/js/node_modules/object-inspect/.github/FUNDING.yml create mode 100644 ruty/js/node_modules/object-inspect/.nycrc create mode 100644 ruty/js/node_modules/object-inspect/CHANGELOG.md create mode 100644 ruty/js/node_modules/object-inspect/LICENSE create mode 100644 ruty/js/node_modules/object-inspect/example/all.js create mode 100644 ruty/js/node_modules/object-inspect/example/circular.js create mode 100644 ruty/js/node_modules/object-inspect/example/fn.js create mode 100644 ruty/js/node_modules/object-inspect/example/inspect.js create mode 100644 ruty/js/node_modules/object-inspect/index.js create mode 100644 ruty/js/node_modules/object-inspect/package-support.json create mode 100644 ruty/js/node_modules/object-inspect/package.json create mode 100644 ruty/js/node_modules/object-inspect/readme.markdown create mode 100644 ruty/js/node_modules/object-inspect/test-core-js.js create mode 100644 ruty/js/node_modules/object-inspect/test/bigint.js create mode 100644 ruty/js/node_modules/object-inspect/test/browser/dom.js create mode 100644 ruty/js/node_modules/object-inspect/test/circular.js create mode 100644 ruty/js/node_modules/object-inspect/test/deep.js create mode 100644 ruty/js/node_modules/object-inspect/test/element.js create mode 100644 ruty/js/node_modules/object-inspect/test/err.js create mode 100644 ruty/js/node_modules/object-inspect/test/fakes.js create mode 100644 ruty/js/node_modules/object-inspect/test/fn.js create mode 100644 ruty/js/node_modules/object-inspect/test/has.js create mode 100644 ruty/js/node_modules/object-inspect/test/holes.js create mode 100644 ruty/js/node_modules/object-inspect/test/indent-option.js create mode 100644 ruty/js/node_modules/object-inspect/test/inspect.js create mode 100644 ruty/js/node_modules/object-inspect/test/lowbyte.js create mode 100644 ruty/js/node_modules/object-inspect/test/number.js create mode 100644 ruty/js/node_modules/object-inspect/test/quoteStyle.js create mode 100644 ruty/js/node_modules/object-inspect/test/toStringTag.js create mode 100644 ruty/js/node_modules/object-inspect/test/undef.js create mode 100644 ruty/js/node_modules/object-inspect/test/values.js create mode 100644 ruty/js/node_modules/object-inspect/util.inspect.js create mode 100644 ruty/js/node_modules/on-finished/HISTORY.md create mode 100644 ruty/js/node_modules/on-finished/LICENSE create mode 100644 ruty/js/node_modules/on-finished/README.md create mode 100644 ruty/js/node_modules/on-finished/index.js create mode 100644 ruty/js/node_modules/on-finished/package.json create mode 100644 ruty/js/node_modules/parseurl/HISTORY.md create mode 100644 ruty/js/node_modules/parseurl/LICENSE create mode 100644 ruty/js/node_modules/parseurl/README.md create mode 100644 ruty/js/node_modules/parseurl/index.js create mode 100644 ruty/js/node_modules/parseurl/package.json create mode 100644 ruty/js/node_modules/path-to-regexp/History.md create mode 100644 ruty/js/node_modules/path-to-regexp/LICENSE create mode 100644 ruty/js/node_modules/path-to-regexp/Readme.md create mode 100644 ruty/js/node_modules/path-to-regexp/index.js create mode 100644 ruty/js/node_modules/path-to-regexp/package.json create mode 100644 ruty/js/node_modules/proxy-addr/HISTORY.md create mode 100644 ruty/js/node_modules/proxy-addr/LICENSE create mode 100644 ruty/js/node_modules/proxy-addr/README.md create mode 100644 ruty/js/node_modules/proxy-addr/index.js create mode 100644 ruty/js/node_modules/proxy-addr/package.json create mode 100644 ruty/js/node_modules/qs/.editorconfig create mode 100644 ruty/js/node_modules/qs/.eslintrc create mode 100644 ruty/js/node_modules/qs/.github/FUNDING.yml create mode 100644 ruty/js/node_modules/qs/.nycrc create mode 100644 ruty/js/node_modules/qs/CHANGELOG.md create mode 100644 ruty/js/node_modules/qs/LICENSE.md create mode 100644 ruty/js/node_modules/qs/README.md create mode 100644 ruty/js/node_modules/qs/dist/qs.js create mode 100644 ruty/js/node_modules/qs/lib/formats.js create mode 100644 ruty/js/node_modules/qs/lib/index.js create mode 100644 ruty/js/node_modules/qs/lib/parse.js create mode 100644 ruty/js/node_modules/qs/lib/stringify.js create mode 100644 ruty/js/node_modules/qs/lib/utils.js create mode 100644 ruty/js/node_modules/qs/package.json create mode 100644 ruty/js/node_modules/qs/test/parse.js create mode 100644 ruty/js/node_modules/qs/test/stringify.js create mode 100644 ruty/js/node_modules/qs/test/utils.js create mode 100644 ruty/js/node_modules/range-parser/HISTORY.md create mode 100644 ruty/js/node_modules/range-parser/LICENSE create mode 100644 ruty/js/node_modules/range-parser/README.md create mode 100644 ruty/js/node_modules/range-parser/index.js create mode 100644 ruty/js/node_modules/range-parser/package.json create mode 100644 ruty/js/node_modules/raw-body/HISTORY.md create mode 100644 ruty/js/node_modules/raw-body/LICENSE create mode 100644 ruty/js/node_modules/raw-body/README.md create mode 100644 ruty/js/node_modules/raw-body/SECURITY.md create mode 100644 ruty/js/node_modules/raw-body/index.d.ts create mode 100644 ruty/js/node_modules/raw-body/index.js create mode 100644 ruty/js/node_modules/raw-body/package.json create mode 100644 ruty/js/node_modules/rtf/.npmignore create mode 100644 ruty/js/node_modules/rtf/README.md create mode 100644 ruty/js/node_modules/rtf/examples/dog.jpg create mode 100644 ruty/js/node_modules/rtf/examples/formatting.js create mode 100644 ruty/js/node_modules/rtf/examples/halloween.js create mode 100644 ruty/js/node_modules/rtf/examples/image.js create mode 100644 ruty/js/node_modules/rtf/examples/tables.js create mode 100644 ruty/js/node_modules/rtf/lib/align.js create mode 100644 ruty/js/node_modules/rtf/lib/colors.js create mode 100644 ruty/js/node_modules/rtf/lib/elements/element.js create mode 100644 ruty/js/node_modules/rtf/lib/elements/group.js create mode 100644 ruty/js/node_modules/rtf/lib/elements/image.js create mode 100644 ruty/js/node_modules/rtf/lib/elements/table.js create mode 100644 ruty/js/node_modules/rtf/lib/elements/text.js create mode 100644 ruty/js/node_modules/rtf/lib/fonts.js create mode 100644 ruty/js/node_modules/rtf/lib/format.js create mode 100644 ruty/js/node_modules/rtf/lib/language.js create mode 100644 ruty/js/node_modules/rtf/lib/orientation.js create mode 100644 ruty/js/node_modules/rtf/lib/rgb.js create mode 100644 ruty/js/node_modules/rtf/lib/rtf-utils.js create mode 100644 ruty/js/node_modules/rtf/lib/rtf.js create mode 100644 ruty/js/node_modules/rtf/package.json create mode 100644 ruty/js/node_modules/safe-buffer/LICENSE create mode 100644 ruty/js/node_modules/safe-buffer/README.md create mode 100644 ruty/js/node_modules/safe-buffer/index.d.ts create mode 100644 ruty/js/node_modules/safe-buffer/index.js create mode 100644 ruty/js/node_modules/safe-buffer/package.json create mode 100644 ruty/js/node_modules/safer-buffer/LICENSE create mode 100644 ruty/js/node_modules/safer-buffer/Porting-Buffer.md create mode 100644 ruty/js/node_modules/safer-buffer/Readme.md create mode 100644 ruty/js/node_modules/safer-buffer/dangerous.js create mode 100644 ruty/js/node_modules/safer-buffer/package.json create mode 100644 ruty/js/node_modules/safer-buffer/safer.js create mode 100644 ruty/js/node_modules/safer-buffer/tests.js create mode 100644 ruty/js/node_modules/send/HISTORY.md create mode 100644 ruty/js/node_modules/send/LICENSE create mode 100644 ruty/js/node_modules/send/README.md create mode 100644 ruty/js/node_modules/send/SECURITY.md create mode 100644 ruty/js/node_modules/send/index.js create mode 100644 ruty/js/node_modules/send/node_modules/ms/index.js create mode 100644 ruty/js/node_modules/send/node_modules/ms/license.md create mode 100644 ruty/js/node_modules/send/node_modules/ms/package.json create mode 100644 ruty/js/node_modules/send/node_modules/ms/readme.md create mode 100644 ruty/js/node_modules/send/package.json create mode 100644 ruty/js/node_modules/serve-static/HISTORY.md create mode 100644 ruty/js/node_modules/serve-static/LICENSE create mode 100644 ruty/js/node_modules/serve-static/README.md create mode 100644 ruty/js/node_modules/serve-static/index.js create mode 100644 ruty/js/node_modules/serve-static/package.json create mode 100644 ruty/js/node_modules/setprototypeof/LICENSE create mode 100644 ruty/js/node_modules/setprototypeof/README.md create mode 100644 ruty/js/node_modules/setprototypeof/index.d.ts create mode 100644 ruty/js/node_modules/setprototypeof/index.js create mode 100644 ruty/js/node_modules/setprototypeof/package.json create mode 100644 ruty/js/node_modules/setprototypeof/test/index.js create mode 100644 ruty/js/node_modules/side-channel/.eslintignore create mode 100644 ruty/js/node_modules/side-channel/.eslintrc create mode 100644 ruty/js/node_modules/side-channel/.github/FUNDING.yml create mode 100644 ruty/js/node_modules/side-channel/.nycrc create mode 100644 ruty/js/node_modules/side-channel/CHANGELOG.md create mode 100644 ruty/js/node_modules/side-channel/LICENSE create mode 100644 ruty/js/node_modules/side-channel/README.md create mode 100644 ruty/js/node_modules/side-channel/index.js create mode 100644 ruty/js/node_modules/side-channel/package.json create mode 100644 ruty/js/node_modules/side-channel/test/index.js create mode 100644 ruty/js/node_modules/statuses/HISTORY.md create mode 100644 ruty/js/node_modules/statuses/LICENSE create mode 100644 ruty/js/node_modules/statuses/README.md create mode 100644 ruty/js/node_modules/statuses/codes.json create mode 100644 ruty/js/node_modules/statuses/index.js create mode 100644 ruty/js/node_modules/statuses/package.json create mode 100644 ruty/js/node_modules/toidentifier/HISTORY.md create mode 100644 ruty/js/node_modules/toidentifier/LICENSE create mode 100644 ruty/js/node_modules/toidentifier/README.md create mode 100644 ruty/js/node_modules/toidentifier/index.js create mode 100644 ruty/js/node_modules/toidentifier/package.json create mode 100644 ruty/js/node_modules/type-is/HISTORY.md create mode 100644 ruty/js/node_modules/type-is/LICENSE create mode 100644 ruty/js/node_modules/type-is/README.md create mode 100644 ruty/js/node_modules/type-is/index.js create mode 100644 ruty/js/node_modules/type-is/package.json create mode 100644 ruty/js/node_modules/unpipe/HISTORY.md create mode 100644 ruty/js/node_modules/unpipe/LICENSE create mode 100644 ruty/js/node_modules/unpipe/README.md create mode 100644 ruty/js/node_modules/unpipe/index.js create mode 100644 ruty/js/node_modules/unpipe/package.json create mode 100644 ruty/js/node_modules/utils-merge/.npmignore create mode 100644 ruty/js/node_modules/utils-merge/LICENSE create mode 100644 ruty/js/node_modules/utils-merge/README.md create mode 100644 ruty/js/node_modules/utils-merge/index.js create mode 100644 ruty/js/node_modules/utils-merge/package.json create mode 100644 ruty/js/node_modules/vary/HISTORY.md create mode 100644 ruty/js/node_modules/vary/LICENSE create mode 100644 ruty/js/node_modules/vary/README.md create mode 100644 ruty/js/node_modules/vary/index.js create mode 100644 ruty/js/node_modules/vary/package.json create mode 100644 ruty/js/package-lock.json create mode 100644 ruty/js/package.json create mode 100644 ruty/js/script.js create mode 100644 ruty/js/scriptnotepad.js create mode 100644 ruty/js/scripttodo.js create mode 100644 ruty/js/server.js create mode 100644 ruty/styles/style.css create mode 100644 ruty/styles/style1.css create mode 100644 ruty/styles/stylenote.css create mode 100644 ruty/styles/styletodo.css diff --git a/ruty/WhykIA/Mon premier neurone.ipynb b/ruty/WhykIA/Mon premier neurone.ipynb new file mode 100644 index 0000000..fb5cd95 --- /dev/null +++ b/ruty/WhykIA/Mon premier neurone.ipynb @@ -0,0 +1,384 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1048, + "metadata": {}, + "outputs": [], + "source": [ + "#Neurone artificiel\n", + "#importation\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.metrics import *\n", + "from sklearn.datasets import make_blobs" + ] + }, + { + "cell_type": "code", + "execution_count": 1049, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dimension de X: (100, 2)\n", + "dimension de y: (100, 1)\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Génération du dataset\n", + "X, y=make_blobs(n_samples= 100, n_features=2, centers=2, random_state=0)\n", + "y = y.reshape((y.shape[0], 1))\n", + "\n", + "#Affichage des dimension du dataset\n", + "print(\"dimension de X:\", X.shape)\n", + "print(\"dimension de y:\", y.shape)\n", + "\n", + "#Mise en graphique du dataset\n", + "plt.scatter(X[:,0], X[:,1], c=y, cmap=\"summer\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 1050, + "metadata": {}, + "outputs": [], + "source": [ + "#Création de la fonction d'initialisation de la matrice \"W\" et de l'entier \"b\"\n", + "def Initialisation(X):\n", + " W = np.random.randn(X.shape[1], 1)\n", + " b = np.random.randn(1)\n", + " return (W, b)" + ] + }, + { + "cell_type": "code", + "execution_count": 1051, + "metadata": {}, + "outputs": [], + "source": [ + "#initialisation de la fonction de création du model linéaire\n", + "def Model(X, W, b):\n", + " Z = X.dot(W) + b\n", + " A = 1 / (1 + np.exp(-Z))\n", + " return A" + ] + }, + { + "cell_type": "code", + "execution_count": 1052, + "metadata": {}, + "outputs": [], + "source": [ + "#initialisation de la fonction cout (logloss) afin de determiner la marge d'erreur de notre model linéaire\n", + "def Log_loss(A, y):\n", + " return 1 / len(y) * np.sum(-y * np.log(A) - (1 - y) * np.log(1 - A))" + ] + }, + { + "cell_type": "code", + "execution_count": 1053, + "metadata": {}, + "outputs": [], + "source": [ + "#initialisation des valeurs des gradient de W et b\n", + "def Gradients(A, X, y):\n", + " dW = 1 / len(y) * np.dot(X.T, A - y)\n", + " db = 1 /len(y) * np.sum(A - y)\n", + " return (dW, db)" + ] + }, + { + "cell_type": "code", + "execution_count": 1054, + "metadata": {}, + "outputs": [], + "source": [ + "#initialisation de la fonction d'update servant a mettre a jour les valeur de W en fonction de dW et de b en fonction de db afin de miniùmiser la marge d'erreur\n", + "def Update(W, b, dW, db, LearningRate):\n", + " W = W - LearningRate * dW\n", + " b = b - LearningRate * db\n", + " return (W, b)" + ] + }, + { + "cell_type": "code", + "execution_count": 1055, + "metadata": {}, + "outputs": [], + "source": [ + "#initialisation de la fonction permettant de prédire à quelle classe appartiendrat un nouveaux cas selon \"x\" variable (2)\n", + "def Predict(X, W, b):\n", + " A = Model(X, W, b)\n", + " print(A)\n", + " return A >= 0.5" + ] + }, + { + "cell_type": "code", + "execution_count": 1056, + "metadata": {}, + "outputs": [], + "source": [ + "#initialisation de la fonction rassemblant toutes les autre pour former un neurone artificiel\n", + "def ArtificialNeuron(X, y, LearningRate = 0.1, NbIter = 100):\n", + " #initialisation W, b\n", + " W, b = Initialisation(X)\n", + "\n", + " #création d'une liste de suivit de la marge d'erreur du neurone en fonction du nombre d'itération\n", + " Loss = []\n", + "\n", + " #Aprentissage: Répétition de la descente de grdient pour minimiser la marge d'erreure \n", + " for i in range(NbIter):\n", + " A=Model(X, W, b)\n", + " Loss.append(Log_loss(A, y))\n", + " dW, db = Gradients(A, X, y)\n", + " W, b = Update(W, b, dW, db, LearningRate)\n", + "\n", + " #prédiction du dataset selon notre neurone après aprentissage\n", + " y_pred = Predict(X, W, b)\n", + "\n", + " #comparaison avec les vrai réponse\n", + " print(accuracy_score(y, y_pred))\n", + " \n", + " \n", + " \n", + " #affichage de la liste de suivit de la marge d'erreur\n", + " plt.plot(Loss)\n", + " plt.show()\n", + "\n", + " #renvoi des paramètre finaux après aprentissage\n", + " return (W, b)" + ] + }, + { + "cell_type": "code", + "execution_count": 1057, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[9.79688138e-01]\n", + " [6.22791607e-01]\n", + " [5.18082049e-03]\n", + " [8.88739676e-02]\n", + " [9.64849669e-01]\n", + " [3.30771238e-01]\n", + " [7.61475671e-02]\n", + " [9.67544074e-01]\n", + " [4.57105461e-02]\n", + " [7.73783334e-01]\n", + " [3.30105495e-02]\n", + " [8.15190806e-01]\n", + " [3.68744341e-02]\n", + " [1.60359382e-02]\n", + " [6.75235745e-01]\n", + " [9.89457701e-01]\n", + " [9.88236894e-01]\n", + " [3.19214556e-02]\n", + " [5.67615062e-01]\n", + " [5.53629690e-01]\n", + " [5.60677414e-02]\n", + " [3.78090404e-02]\n", + " [3.52313676e-01]\n", + " [5.30181359e-03]\n", + " [9.39871220e-01]\n", + " [3.78858770e-02]\n", + " [8.07734208e-01]\n", + " [1.39690586e-02]\n", + " [8.65599153e-02]\n", + " [7.53658384e-01]\n", + " [9.65607891e-01]\n", + " [5.26937372e-02]\n", + " [5.35192277e-01]\n", + " [9.66381696e-01]\n", + " [3.95912523e-01]\n", + " [3.05464666e-01]\n", + " [6.89238507e-01]\n", + " [5.59582898e-01]\n", + " [5.08428441e-01]\n", + " [3.16860896e-01]\n", + " [4.51492407e-02]\n", + " [1.51285886e-01]\n", + " [9.61208671e-04]\n", + " [1.77121842e-01]\n", + " [1.68126301e-01]\n", + " [8.20798139e-01]\n", + " [9.41461262e-01]\n", + " [9.23440007e-01]\n", + " [3.89208057e-03]\n", + " [1.23389526e-02]\n", + " [9.04906833e-01]\n", + " [4.19536712e-01]\n", + " [1.03402487e-01]\n", + " [5.68340945e-02]\n", + " [8.69963723e-01]\n", + " [5.28641961e-02]\n", + " [7.74660620e-01]\n", + " [7.56496114e-01]\n", + " [9.48556791e-01]\n", + " [9.84316161e-01]\n", + " [5.73324815e-01]\n", + " [2.34083446e-01]\n", + " [5.33881791e-03]\n", + " [9.21932085e-01]\n", + " [2.24979024e-02]\n", + " [3.57710691e-01]\n", + " [2.88507806e-02]\n", + " [7.09065742e-01]\n", + " [9.47263130e-01]\n", + " [3.09850898e-01]\n", + " [1.79196482e-01]\n", + " [8.65083643e-01]\n", + " [9.78336202e-01]\n", + " [1.47291503e-01]\n", + " [8.03834871e-02]\n", + " [3.38069095e-02]\n", + " [4.25549261e-01]\n", + " [8.73996450e-01]\n", + " [4.30033780e-02]\n", + " [4.15428194e-02]\n", + " [2.48388164e-01]\n", + " [1.07674416e-01]\n", + " [4.27780057e-03]\n", + " [1.54167179e-01]\n", + " [7.86249419e-02]\n", + " [1.22575801e-02]\n", + " [9.66556144e-01]\n", + " [1.25420806e-01]\n", + " [7.15793882e-01]\n", + " [9.45841986e-01]\n", + " [9.05183630e-01]\n", + " [9.74895565e-01]\n", + " [3.78248543e-01]\n", + " [8.42701951e-01]\n", + " [4.17794856e-01]\n", + " [8.41845869e-04]\n", + " [9.42413229e-01]\n", + " [9.59184874e-01]\n", + " [7.13395316e-03]\n", + " [3.26378301e-01]]\n", + "0.86\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#execution de la fonction d'entrainement du neurone artificiel\n", + "W, b = ArtificialNeuron(X, y)" + ] + }, + { + "cell_type": "code", + "execution_count": 1058, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/q1/84vf8ynd79g502ds_gw52x580000gp/T/ipykernel_80509/3911570722.py:12: UserWarning: No data for colormapping provided via 'c'. Parameters 'cmap' will be ignored\n", + " plt.scatter(new_plant[0], new_plant[1], c='red', cmap=\"summer\")\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0.83940979]\n" + ] + }, + { + "data": { + "text/plain": [ + "array([ True])" + ] + }, + "execution_count": 1058, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#création d'une nouvelle plante\n", + "new_plant = np.array([2,1])\n", + "\n", + "#calcul de la frontière de déscision\n", + "x0 = np.linspace(-2, 5, 100)\n", + "x1 = ( -W[0] * x0 -b) / W[1]\n", + "\n", + "#affichage du dataset de base\n", + "plt.scatter(X[:,0], X[:,1], c=y, cmap=\"summer\")\n", + "\n", + "#ajout de la nouvelle plante en rouge dans le dataset\n", + "plt.scatter(new_plant[0], new_plant[1], c='red', cmap=\"summer\")\n", + "\n", + "\n", + "#affichage de la frontière de déscision\n", + "plt.plot(x0, x1, 'b', lw=2)\n", + "plt.show()\n", + "\n", + "#prédiction sur le type de la nouvelle plante\n", + "Predict(new_plant, W, b)\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.4" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/ruty/img/agenda.png b/ruty/img/agenda.png new file mode 100644 index 0000000000000000000000000000000000000000..977d7fd994c4e34e517713895c8fbf471e97bb68 GIT binary patch literal 10224 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 F{sRgA7sUVo literal 0 HcmV?d00001 diff --git a/ruty/img/home.png b/ruty/img/home.png new file mode 100644 index 0000000000000000000000000000000000000000..0d9a1e6b0005bc234b188d49b19e8f5c792bfa38 GIT binary patch literal 10615 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�3b#{CuE1_CmmO-wlB!&djtN_>fwxZogN^HG*9s>*z5*|{B#xw#MY zAPhrk)1w?w*Mq35dPe0>E3>vQ^=rEh+YUZQ)_1^yy;@xrtckVhF3d7X>ik#|? zHgsP)`ary-)!vw+%z3->#d^f*@#67ZO2`N4%m2o-uZ3Fl#Azm1UO zKR<+69WWV1fEOa>d^iWDgf^OlmwJezuPbb@r!Q$gv(B4%bsp`LB-1 z@_yKWI(r`?Y?PVhcXp0yIX%dqz-6i%akaT0*cC@gY%Z2RTRe$w-fo3z(F+>LZB1-6 zG0X0>EP*Fem8Ey*3OsKb0C{lZddxal+C0jiCGFm|1%ynbizLb4$(ci5Rle`oD-c}p z*VcjC-mcpIdBt}11K@a%n5pxn*0KV=(+|&PnY?`an%~j#og|j2_X?y}{J&*~&ixB# zoT0n<(Coe`vzP30c8OyuEtQ=?@$gD&KZcnSH3H`fqicJ*4n{0AvMjzyOS_2{_-gwiGEFz10Br!Pde^Q zxDnK2UYAi_D;TCUG(8@_xEZ$N24hW()o*IW4jjvlBCH06haQ+Cw&ou*sz2W8@}C?2 zHf8B2f;BZW39n8YtP$i8>TAAq1)MW0v|y;+UE$|ie4i@j_t)p@6ED%vY`3B=@p=5 z)hG;2zkEBLCzeoKK4KGLv1B9G#vgd$jfsz+9!X;dRZt6I52CjZ0hyiV&0-Cl`K1>M{!h<5OEyPQ!OkVAmH7dMt;X--mr%WN%#DhAc z#j>XNZ`}KIM<|urm)^Xzm&^d#1y!WR2~2-kL>rMY>u4$eq55{49k&9DRX-meoaj@C zoA@^20xzSN%Hc$q!`?~qln+w3eg*D{AvHQBuNib(fdOn56(Y8Eh`woLdoQ)!A{cT9 zPDI{y(3yXaE81Bj%z+Az8K^D6St{Ik>2Q07wv8}w4+s|>pi6{Z&1E6t+$Cp@?3}E)7q6He`wQ8(qxmmG z%)@PnzZw^#kXS{3uNYdhcnfRz&XfeOxAK;Do?_I?RD%j&7$ddp&-HLL@#E4z+t?3l z!Az&~8+tdBf^c5ha2G1K?>QwDWf^ob37`(ZO5SXcwf0>+3l~S9aXH-%FwK1@1;lpy zp_$YTuB&%rx37P%iXQMF%y&5K5t^2@YwSVt>7|9OS1nr`t8}aDm&? z(o0=acI}H`u5%M)d+$!oI_A3&nC%03b<}>529L=XK<-;`Vy{%+daDXT?y53~{f_UB zYH*+10zOq}#l8>!cqd6lHF{!G2n7@|Wo;4ji8K=rIYJG}Xa`q9Or&)WHJgn}z^~j_ z-@7yFeKJooI0*ToO{)~I_ybXSEW`wVr43}uYd_*VbtCjj95e>Ya? zHYswvrdp#Js3cWcUcI)JKQJsJ?9AyuXtDZ$6>jb@ZT6^O@}!HmRz2#eL9MONKD1c8 zT`Islc&r97>HKsl&u2eavH>zz`DEz5PbWgdLs>^dwISFyg#q%0AlF-Gcw`f=uf&^j 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ℓ!=e4w-jUWVJ-8_*v`6k8s=f@x?Rq4fhzwk{>I>*LRr&|& zTqKkZu7k)V?pfp5f5eYpdyKF)J}y{U|#YGNGIXlCw1o+B{yP%E@f%i%ptYoWuc!X~5v-

*r3}7a+Dr$(B zm~{YTMqaQ&C4- zs{Mi5^j=nTjL=RSyn^z7e(5e< z+nB_dW32vcRM!<5!Zjsc0bM$RoLbq&*nW4UvHM-(`>JDVj(Pi(pxA6|ngzEPQ-wJ~ zhi7!j>F*&7vvX(&fkji<3_{#w=+phyu==S4n_Vi_Ck&o6hpgXtVDn|6ql%%d*Abed z#5<}?*Y7HmHia>XtZQE@^3%cP7)xRFFhlOHIH|UW&pm?&$QB-}lhYcx9vk_6AA0cl zXvSfyOLg>0NpXC>?HaGb?=En4uvHCC92%YAf3<$gjl?o*1)+^?S-eOn&(uIO*ID8g zZeVwNz%^1T&r%8+GLh5mjta{IHT0jN81{D}^v=q~R7bnnd*%5itc$Z-wR>DSeZ1%< z*qNj}hqFVbv9NQ6>^sdO#E(%+2;rs z1!~s@d?18;B#tOEtPl7|{9bS_PRt)30)w9TXrmNUL~R>Ch+O*pQ9!e95kmT0L}dPg*2cRK>j*f0ZP1p9Z66a8CbS*{0~Y;}vVzSoc*_f&1pT%Ry)ikM zs~~xflk3-M|A3p)k~V`K@%k_5B{x>PY~8qZtIOK&F9HWX?cd@M_N1<~v@|$vWTaB9 zAVenf>!=PwIL+_+ExL-sUl=L4y%`?suQkco=zich{7w%gE_UoUFe-7%h zYpaUYx+i7P_)xsRkuydb_O+kxuQHliHPz?rcwwbI)TWq&>_CVsuV(}5!l3E#)%EON z>>r>O{*Dv#gi~SuiOQSREfomj8&V)9SoQx-hyb%M?tIqR)TH|OuaLBF6A%{#ZHA@O!Dmyg7>yovYtn1VpOU6&B*hNc63gxHp+mDJn^1XE(FIM zf@Aix%5r+J$=0+s&>@74yUc36bjMpQSQsRYFD(T2$KG{Z0Z#;wt=V0_9YXgCgw(A* zbm(S$oSE)TA2x(6HtaVvB|X_xCmUC?8e;Sq1sz_C(fD_0#TVPIA%p%yc>w-Kr3_LG zFtPy{^$cgzT>>}>DbXSXtE}|?wl^t1bzfV9&4)orE*F=BlzrK~bU0j0vMhG@mKU9A zuba{^@?k~DUe)QgB2GO~pSN?jcQ4ukUIlikuTYf)h<*l5<}i^1IsqLpLV&+fd?FG1 z7>(bY+&EneplIevPO38(_wp6+em_3mS-NI5Y~~u9er)%OEs)itoD2Oxc<0J9Dhi`# z-FaL1?#ElThtNTikez#e{E``^&JV7eFu_< z2!gr^`v>|E{Tl>1P24ic_BE^fy%~*1z1KL3sRoO8TEGQ^j>w!jye>qxc6jgjWEk7o zri8-u^vz@azj)0$5*b;b)C>7)v)_3%!J>A|g{#J_=~dI35`~yh~Ph?BhuBdoIm7W<;z&fgo{S zGGWC{~=_{SpaxzX#+AR#(2|q?#s?S0Oz-l4z%^ya5-Jt#URL0{!+Tm zQ@gLP*2uNj-hBzlarC{cwf+~Vjktm8&&5k{VR>W^K|-Eh%yC*Y4Z$+qP!3*)?zG{i z+(XWTagx@ZUL*UjZ6Er&chVs4V3eR>&&RIVy3qtdC`4F_8Z9gM@ia8l%@U8Bi3X>0 zayU1ssO(Q+vF&Z_(I`)j_3>GV$i1B$m~g(SJJH&e6-Tp?UXU|~UT@{)K3}z;zi!DY z_&NE2B1S`w2#9-VrJGOO4=iy#lKAb)QK9b+b*CSB|1jqkP+R3QGE(E{0IPtm5LuSH z##xPx_mvDcbWO2`INBww7n}roBkTk54T2XJMr-yEUcd(Om+#rucs_laD>2!fdzWL zzD;{nmwvxc=BDiAkD>U~S4XoiihjZVv0fgIZ?dMh zmRYxEK;L4q$J^n-7A`GMpcccnTiKnPwwG7GWgBu*(kP>g11qE$HI|4qxQfGpXDxRL zyNgO;!$P)qMMY|EG(jq2bfgNK=NtUJ7eq?vAg>Y|ew>(_S}{V0IJjeqf@w^8wehJKu0#{UV(%_-l>bv&+I^?{o!2 zoK}R?r1Llq2Z8MMUx#8f0GGb&b@mYSRq4f6H!V4r!g5MzAIzZEwVW6o7*1o(^1Q!I z`Rxi82H>8z+mqXVoIXoZgvm&Ep7q-Vsr^q%6Y?b%53ke($>k5My-<{4y;ZyD+)9SE-;mT z$>-lw*Ah0P*`Jy=>V7Ww*<}2LteUr%wcp?JZ@C`iv_)C^U;U4_!Kp&QJ&Uy4~`zdWQ2TPu@h&Kgem%w_Rtum1@RaWrWygIh^z?PQ|QNr`w{ zwx7MtdZSImJc9$GM4S4NuFBTCJW{Wrp#RBE7usI9#@f;*5n?IZZL732cNI=tcKcFd zU;m%bCrK5aK|FF2e9LTY@~n!=c$2HK#-g7nT!qKae+jEdqs){l+4}?E9$$XBj{ZXm zncSz#_+13trbcNh8l(3|_++oVv>Cd5xZC&$v#@^;uVXiLwHt!ksk>_EN@DnQW4`jUT*JqvwfQn8U|+9!AqvUzqv37R$OHV+?5pE!z#Ai+mlF z9Zhi^$NS6Ey!c>N6H_1Ui}zJ$j&Hv^n_t_Jex~|NP;JN&sISU8p2)qJkx}*htVN@M zb=(26&MW@6hhM$o;#Et0e?0lzgI97JCgBo^o{Wf?%braZZggqpk@$px51pt&Brd?i2EYjTmvtHlWEs!^V| za+2YMV9Io}zj686J9$GW{%~`{%jh$N5j4VZf`f}RR3+vD@c|#2CAOIETKz05BHd@s zEPd^HG;)aL3%RR$&17b>uNCmCsvkZ{kdb!3Ui_dM)PN^L}KRC z)H7m`VUq!M;tg;;eZ))Y##eQQ-PIY-?Sr=Ih*hm`W;b7d;sguZzq)M+$5akC^R1kL ztHVd@ic2fK&&&=FT&x(QkCoD36a{$?IA?BBaO${Xa95ZPA=yn;j?HcI9*Xdh5$;yM z&GNRbPuX`nZe31r2|j2FR5e`RuHEtxa&pk3x2GUqhvx>C!gB+|{v6k2z+4kAkMk*J zx`Uisn3rgtAj)QTaB=f=a_>KffiKhU~%nIbJ8Me1Gd zn{pD!-L)$+=eeT>XJammquEh)FS*WpO%0nAI*jkD3}Hu*HS2UC)`m$9G%?5NF2}V^sIS>m=-Sir1|^5&2?{?`@qoNcW!y+y{34`z{?NbB zojy9dHD4AD*~{R5KpOm&1A13m$b_n<%wAdrfHIg9m4&1O^EhL&Nrr*b5Qo_vgiE>*y&%s5 z@|Nv3y2}d=jHg0nfNkzWzwUHf-?sc~=-w=0NR)=58eAaSR9Px*=j3b`Z8?;cz8QrM zA$68l2ZTli(+kLVN_FjK+V9-CvuSSm`{9;}`l0k!$rBT*GZ|!ZX%@q2$S#psciMWw z;hQ3Sf55!2hq>Eb5&r@)>o#w<>TK&|y-!WzocGKm&+LzrnUyg!t|>faOHmqL9;C?; z7|WM6hXjLoK2m56+?Ag6tgmooVo7I{{n!*&RA1A1go%5!S_`1ma6K%7^1`k5bt zmkjP6(ZJkjZrhzZFHXc3X!h4}BG=dl}~-_`uzXuA?PJ8aQ*Zid0L=6|jZkdB|( z@QoG9%8Hx=*-^&@e-V?$d0M0qN13dxy=w+z;J0HUE&gfdUMMOc$a?f2>66DwA{BTz z?Q7bh{48nz(s}=DygqASeEbUE)2CjZ31J(WHCf!iaM{!?nNv4dY;43prbx4YJ?_y~*3 zftL)&59sO9?|gK0d)J+yBjbB^=Ord4D!UF1rN%_6dY$`sBnJsy8=rd#0480eB`dM7 zpb}nZPS?uQ9uq-{>_pLqw1j5mE)HX*RRFN^%4K=`RaM8b;QsaE;;-2nC_`&dp~Rk< z*GLa7pxCIvp$jO+qMG#VXIyf+$EHU0wjO;I#nn#;;o=P`<2Ze^#G}n@W$w{W_I{M6 z!6bgaV7qt;diCt3eqCncTpOWmfbYyi>J z=$^vYm*u}q8Y}I)k_WM~l&So=2PKQ36o5GSp$jVXz7NxB7il@zm(uwD;RilDqr-4d zMfI*r6CuZRTi$e@#!{A-I`jf>57QTLt-@25gjea1vPkn9Hl&*MzprM!8)DGNN=m#n zncfCmqWppjWeh)iMOYBKu;q56=v@*gL};Fz1NG=$R~zWh>m3|aMi390=6=HrOiKJz zNBd=@=*%K|ji7Ej07+c2|CdeDO#fmU$W5dI<`AEBjX*=aK;mR3s*v z4p|mccXJciX1qwtJu9L~?|d}y1}=&MQ9_{)%AIHDJ=j=-ecR`@rRkE7L*4vsL<-J* zkdSaRb56xFhr0E2%gooGKf$sT&m44{4OY&`^0G%OS|0g}&rkNuNVJs`>t zJ&kj4xCg#5uXsZLrF~Z=Fa9!m6`=mU|Hs3}$2F z^t1x={7Sxr#0je^9=r%*xvGkX-$4JG-{NIo(l)|=Nl7SbBPKuQ4K?e_|18~^2U9a= zG#N*CLr)nVV}p-WDWP#df9ijMv?faA7Y|b`CQVMuT{h-9-Ewkt5Isdaae6@?*ATLfo zbrzbX(33GPhr7L@h605zh)lzO=DV0LTbS=oZ;yW-2(&f^T<$}693Byowemcqaj--c zv{`{vnpINLoQ$5qkWTVb(2<7AFHf(kit(Iy$YTaD94Gc4+ui3pZ@WhSGeBA1-IZ6{ zzJ^#7$B|65=7QMp(XykmCzP7-7zZQBc%rXf4&WTH?D9PH5z_q+ zQaQYUA`*H_VI@L58jF*{Ud}s&-Z6s=C-;IxsIp))A&rCY57g-y^w$cTW{7%f z^U=)Faoyc{OPTyWWVx^zZ})8edea*8&bdwQ>t$&b=zq{x&Und4xU0U`6`4m*?d^j$>Gf@XBQ6krG6_w)av zV;y|UDI1_}4<^wF_;vQ|*?~cIDX2d7F40ASzl;T=l;`I%f3fQh)-bP}lGI!}w0O3g z2tP#d%-f@Ywu2<)Iy`w&W~nq`yeqqAQUx6j+t^)ujB)^70vf!qm0`G?;O`+p2ZQ(% zg`Dz9ri~lB0}A|OlIHajjq4B(by@`wr>OEHCjobBIUOIhDWiia(0fh(?e|(Ve_xHd zs>k|ZqIfC9)?Lup`^RfucEQK^Dqqpy4>_1I4<-hE|7&#F!M@+isKH8^UeROtIO<)H ze5`mt`W_0DqLuu=1ej&JHMQ>m6o~83ovxmp33~mnc+8_;i7cjBw=rrRJ`&`r?>!Ek zX|RnH-#e&$j$nzm3~eS|3D#MJHN3%_t`Regw_ICL4 z{k<{QoBMC#2Bf_W-F&_mtyGo3Bfq&A>VnYCU{9T#W@Vjfff17%ML(fNapK|J<-2_~~$1pA>1pk*v zB=yXJ@S9Ln`qIOZupga@V4WIGog7Ey)P+{&kSdzzFH9>3_=^1^CCv) zA`vn?3-b4TGFBGNC*9L(d#s3gwq1|s%JeY+e)Gv*#h};&T>%~b0u?z$OU^{@NK#s9ZK6^~4h$qzJjbF453F{1 zie?&aBNrcI>)^Sn>fZ*{4llGb4!-q?{&M&(0s6r354;vmV^}sVIJk7w(r#5149m)& z8~-tn0V`4apk1!YcX8|td&V7)7JpuUPUn`u9r{u1qjzW)S!yX)EGEMvm|S4ece83< z*1SEy-8ay;Tu+nJwwj7MUs`0y7cY9DGs5#x#5Vk+G#fkR-yUo=I(U#FA|fK-q5URZ z9IQ@bJXTPn<%~1}bV_c&kYC#U_NIlYx3}ve2~4Ztq!^dZWL% zg`-$_=mf{J|L%O>es|isDDh8nH{j&b96&HX^DHbdF77=4_CXDpeV+H)Td__;2OLfR zd!y>c>&I)4TmMPz{4f8Z`Af=`wI;An=sN0AHh|V4F#iJ5EYqQ>^-m*Daiz)vW1D|r zY$yy`fbx~n1d2q5TkpPplp#Ye4W?&}aGW>=_ZGl6nQ2iT2PtUO0XL z56*)iH`AnaYb0?{=IoDlC?278JX~WxUc-KQh~_WvM;ddX^Z8JvXcsi+hbf&R7&kqV zrwO0NhZhhTn)0-{5Ud`UKGo0BmGa^RFNBdJQgFZvAu3=>UnfG#yemFDJ{h1N&Xfiz zAvza~t8OR@=Kg&4(9-$@|K%SlwmDA3|BA$?uq-S8F3pI>q{!+d+UC&V95`hmNMs0H z?fzXCp7}b`T+`$8uhP}aK{;Fq=`rSe`|r@SpJR@PtHaZ?vd2eOK{X2uJ~KrR>4@j@ zoayQ5@A@HU?9=o34Clo4N)tsMPK(z>IBbm$nIS|Yn#=mJRa8tfR$api^(x&B@8x>Y zLKnn9Nt^hP%-$l-0lQt1KCL5_lHOmRPxs9g&AH#3ZrojXzd->ZY{0n3hbC8p!s&87 zhW~45k{`oNk+lN<0VSFGcdza9|J|uo2o9t+Y=oZRpW~|d-D3>hV&11B^rgE880W}V zwA2np(8vd&q#!slb8iGZVfJLy*7R9M6t*c2}i zBcxYpz26<%=W5r?=L8uXyMR*J<82It*DASE)0qm_A6}&(NE%jdq&+^yp++u-7EW8s z=)aOlUO6Z*{?L(fGD|_UlLZ@>dmGgy9YxoYJ%|!UfZOT+j#omAwXvVv&d7>*e|fyy z{uNqnC}l{xq3P1wX&upwK|^k|MdE6!%>mj|FiNPxRwz_zrogvNxLdV zTIxMpl7lA687SAJFi$1Dl_u8$IBcS@TyLNOo$P_;hB~=e4MQVBq&< zCoKfCP$< z#hk_tqnC!ay;CPI+I^lsI^cSy2VTLe?7d);9`EgCet$L+9>=r1f$7L;nj3DsKr}Iv ziB?+4nV0Bs(?C0pbjON#asw~oR8=%~(d1ap$7FF}-YP7LjP;-;37Fcds)S55XLfg2 z%EQ;_&>8?fY3bB}a&zVG+Vt%p(pWl7)f8xQZe|VR)Dpbh($n?20}Zw&zp$=MU_>g~ za%w4uS@IfEPr4Tpq5FcdtOIVG|GSwE2XS;ufD1fxsAKA@q(cB4N)(0wyK8tWQf7^^ z?Brl2Uvl2)%}QlultO<@woWuBQzmyakFEq$4P$b7RI|vA0<&J|xUfa#GJ=#Bs&ikh z8;sG#_Tr1d+fILvwI+8mk0MY?v)MKM=>2Q4@e-5hE0B#x`LH7jeMMszOn7oi;PN>- zL>Vi6#LCffE@jKq$cs@S%$)3;$8iG)Pb|wk$24XX=H7HAdwug^9N~oJ_^~QotSims zywu22Xge{aG397FnGr1`b-I?+O)f{$D5+DglAp@v0P7I~dRpkejZQg5aCEDKB%u3i z|HMGgSJXe|3KVvFr_UnVi9vmESF*>^dNI&81*}9*=%cB*fNmzxk+^Lo=KsW?iW@!e z&^O%{rm4z+9QBYAX~^OCjvBiD{_Y%VUBS0#l^Q7u{b{&Bsx| z$@yHA_V82YZf2Jtyp=yX;5+oAT&fU85y1#Zf#bEFa6_K)Dq&z%CvKQDhnzatg{zcN z$3hsMIn90Be7@}>6}^b`*uBrCX{Z@2VY+hzM?dt0_Tb8nsYB867 z+N^2`a9WxHBgPF*3jf`}zZ_(Csl~>EW}o1T#9FE5F84wGFONYZ8yx6ENbp!W1ZJdU zVH)wOp9c%Y4q85fBRyP0^Ck@lMvMTce!qS>pw17Q#XuE#DQ4AVO`2N^=IGYqtU?E7 zR&Er-ravJa>ix8w&LPIy^;L4MPM*rM9UpxGsPUnG#0K7h`a4Q=iZV{=Fzd#}olEz9 z_+ax=w%EHEr#iRku%et=gmJ2B4NXoxoZzsLiSFK%$M=-D{xOKH2qeS zcho0u+IO((F)zakq6n+jB3?G_=RcAjoa=x(OBZ`hyh>pQ~!qLcfU zNE1Raza_lf{MnLAhHTH6>4Q%{ez^9yv)_j#Yo2QJl-ca|=rP5{A!MojgD2^^T3#jF z4yoo!`)u;f=?(uNMOZ;SUC8nK>clII5hkH z>30sB%)~Z*-$QC})ni%a)MCyLC2uBcl3FhXquT0^FJeY>k@)u)_J7zyIC^ey`m5L26Yk z6I1`nAlOZLqRH55&TnADBx5Y;A)KJKp~9yd7;Ecla?53kgO*=AbE=@3JQ3A6>)oun zh;TW}|5dWl-X$l|-AG~XBo^*w`n$TAe&t4Yv%&scdu{R8r+sTe8Hv5Uc`rt~Zc326 zA#Wli3mM`3}rvfQ%DJiLKs*}yjxHRacd4eM1s<*H3R(9wvGclD$Iu>CT zJxr53yk8-8HK=tBkDGAxJyh~hRyvm6$8p_sX8WsuC1H_u;b>ffc)(qPpdnPAwFh;g zRDWIJJJPaj?P9+jL!Nn4hkW-VYV|R;Gc|f9waza{pg31?#fgU7#{R0l4zk-W5`!lD z0}2}_zuUvrI^XSqJ53q_C9jhG#=CB|G8(T1k=?`j(@sldk;W^9tG-u^M#WiqM-p#u z4YOmI>e#F5HtR#TWN2LId#LS$1+0PLg=}6l!Lklj;R? z8z}26o@IJGoaikcW1VFo33$k}=CP-FE1!8shyd)k0k^Dx5I4Y$c+_8h1x;%jKg~>; zwJMjHTL-HRHv2bPzqx;iqDoiB5VVZ`8rbb($(5mKZ217gcqAHQ4YenHfoKP%Z4j%1 zQVCJk#mlZ{k7%6e>ElsQ)_#c^jHl#sc&D8Si9(MCAczz#Q0qUH!%mS+PfM0NIAqUt z?aW#^VE^~dudYjAqrP?XTIT3T&_z}L0=7{%G3uO)@UGyK+9Vrb_oNa?e39!<^r@36 z_6Z~2)`2ckMXxEaDBZ@#VTjU2v_(xuY>V$v>pl&m8wXq}fydv`?mSq9mO)N}!{xAkNB# z{k2JuAyb(vx;{3+hseXVO4Rmmps!SEm@CADE}H$QR9J7o=h67Q`uOfAeG|w-A?XC+ zIw&FsR)0n!Va}WyV0+n;%h*aidq<*p*=F|ueS5{`xcVLBZM@sl^J0ixLXY$0S9sT- z-H(`{c*~5*g+q-xG%1at-a~3+3ku%Rv-JIWz{SV)<0a`4PmeXOck+l`G-hFtCtFeJ z!Y`fQ1!8H^z{Em;>*Rjl=sI5%3iyl+Z6r6ojLTi_x5H;Ac`n;3d~PGC_ZD8Z@W!e7 zpe2#3nTPv@OhbWnt0nUX&=rs1D@ss@1)It3_SrA0HfBDABR7Y#axeYA$(-q_N#5o& zWj~X(NRvI1(t7t*@?!SoO*X(o2N4l8`-weD-9gCe$yZ*Jl$7E28-dF`!bc?0?Hh;9 zW*kQ4yjOL4$Mfv$BOSx}EOp8#FCCBpbkU92qD0BR5Nb7Gcy_{fMFJC?CjVN*VKW(^ z?h^uL^H0#;Vt=1@PoQ#jL4jYtwS}3NZ6$J3d}&=Lt_DpP*u+IZC`hJ03xo%wY$J##-y zH0P9B@*D?eWHVoO+?Cva5Wg*MfLM0U)-lCiRX0A4QX*4#eqA}a|5l>63eKyW>7Q}zvDl$JIX;>bOuVFX+}QZE?y=+*^4lH2ost3}!f1j6`@n31 z1$Dl3f8z1H9_0)^@KA(tj=NlXn!W77v)e%_27A9gU8K2mb$LC6JA2t#V->-Y#;tMD zouw|iZC+mv#<+h02YGOEv?3=8NP;`AqSV9}2U29ENsJ&T9D4r}1wNG;T^sGXlGE={ zKyHpBgci+5U^_A&KB%MO3FcsfdzX2Um6)eOeo)7ruca})a-Meat3c3Y>FGUtSx(8{ zakXXeQ}G0Wz-uo1cCj%LF5+C#r@jxFnR9Yp4TqL(=Jl$Kkn8zg;gV9D4?{yk*NFss zh>^I!c(pk(sp9B}$5(l;<#PFoIrLQe6LAOA?7%A|+EAGL-Pm!zALgAF zq0;pz06yROy4D#S?L({ZW#E5ITL&J2qHM4^-NYzhmyoRNKtwXo^@OnvX~Pr0)Yfx< zCN~iI^ac>~<3mJhl`XN)*h`$Uf)L=sFG=_ZBs+}t;E{FI8B#qx{lnW#O3$m1IDCa8 zVW%G@_P9~b;g*j40Tv3fLkH-c_1!4d?-10GzUVyqe}K530gLzkc40*0)cwav^(&G{@-yqIOr_LQf6xjI#a z`7HH~dM2LV%8>V>Kn(%c^mOWW^X+;3RPX)6rqTy0{pGA~*5-p>3m>q&P2`H*oyE=* zYlsqrm5mS&xO|riK^vpH4=OcofGd#9)yRR_o+GEPm@$aM&F$-;u1tcLg1~A?r>XPe zwUo`Gr{TQU4zo}c&Wv;_iUlr>%!iCEaEN|g4E(wf=cF@r+KH2TQ`2D<2E~QM+mAZZ z+ab(6P%b05hPQ1O9KA-twX86IeVwxK8C;GM4YDPTqHaC#dG7B|zuMpt!bo+Nog_FG1WSw%h^>Z20rd=fLDgmU`b zG)l35U!2%e%koD4=8v^x)ID38Hr;kvy_zrw1cZv>i||ojR}@Cv5X$(3W=b#*n8r}?S|2M=#uoqGo$#THU4Szo$-dJtt1ZV#a_ zu0+Kizc*LUKBzwXc{R{^?7%sO1`X+glW8 z#<_wqmGPzVua$0(f6s!5!0aD3CN=3tMM+sqP3wR$?D*+9CwP{Dig;xY3LYy}dM5u$ zX5}Cj6X@i2>}-tkQ_Vfy-2yv;ixsAh)Pi4(=~4FSBTTcjj%E2>GAQytdCd z6U5MctW^V*(O_fJ#>TV|!WpWfdeO{Ux}H6IJ$(eH->0?0dg^al53RpXZ!zRx=GAk4 zD`S%kNE;tTLRL`EGAy-}?#shfP@+utH$BX0P7(`k*3-3R^waNtX@!)iu`!k5As^`# zRqW#Y@p##(uZmXK0!!g4V@P!E#d%xx;y9~_((8zah4PbjGBzau9XWU~y$)ugs9?~c zxS%-Y_~VJ?dx&5z_wEdz$_hi3C1~#=4HiatR|c{qrZNd!7_X=zA!pka3!OV9tIii+ zroh9X)|AdW5)ZE}i7cK$BiIrS5~v%=7^^fRf2k>PM)xSbsoAv~qv7`Oo~&r%B{`T& zDF#~{Tz_6jk)4YKnH1?BF4Mmhm7aUZ4rn~t?}Rc%RBgZg^B}H|{d??_YnYf;Ry$WC zFQ6c!y#@nyf)>@SIC5(#1wHwsi>}a`aMdl?*3Pz3L;6ih!V(JTxLif$1tRid4=e-E znxNr5j8ai?PmbKBN`W59J)^+oMEP*PSqyEEe%GE07(KK74Hv0JTS%?t!VRIaaHjIx^K_t!A$L-qo#fs?9y{yIx z#)@LcifA;z!|nZ2Hxk?N&L;kAE}=^-|8fgl7-jDk+F z6JA)zXQjSz_MoWQx7@I8F25W}l$HF67t+7tJC#9qx{sNO5D!)sHBS>yYoCs!`_h28|F4WpaS^NxXD3COD>nNX#iuNfhGslrz4!D#nyD>ivD%9dC1 zcE9ATf;$ku9&l4f@$Y7Xan3C_1))&zo)17hLRm49B1Iz9BDgn)&XsI924|Et8coT; zsPU7NpK)%?cT;+=BEkVrcn~&#z3Jli_LmA#$KB5&~=*!JqD zaR_36sW+@@Xp6T!jH{W$3+2$s~Y#soT`C}c^L7U=u-cJQ_{R^ zqB)qITme>ZGAt4jh4t3qyRx9VE2fhY%JdQIw=o4=MJY0QKdYMwP$GK0Na9L7gD*H3 z!fDtR2L@+|8dYfB5jF{zyx!*a+r1a%%CxZF$ptZkDcQn5sYOIt->6TWop-uL={E}qPMazt55V^2aSwweQmtY7Z5iH1AMsAW zFO?sZZ?zu_rG%)Iwv=tdv#w`!>!1zUv}+d;C_r9Nt&y<787@ZI;B8D1$1u|hnc3vD zmBN<1O@M_GD*`_5Dx_NS+&C)%OQ?kSOxwQ#8_WYJ-%$#9{Z9HY7=f0-6&e!z#ToR; zt=e?!ZUPwp$z8oNB}1_k%A%F<=rQ-%sWDI~kOJY7*5G z%@azH0_=7%l102A8ry(h86mWdDiz*YKRUaa)H1M(i;#`Ix2BqM})=@_8x z6ENaf$ixX^xU#L-K@G$c@|coRbwtR)R{|*q0)Px&zlY~m%zMsxeYt0wklZ7G1et`` zYB&-%o_kcyZ={siY}mO;$xEDGG3pU-!WU+nIQz|d6&8m&Kfgyc#^~5m!cw3~3&*B) z@Jio8VA0Dn?C0vb#@uaFvdZrchyAg*AEr`I>-<3+wgA4eJIP^=|Y z}0Ba^I*jw@8oU|8Q7Wy3=bfhib@jTxUF}FsMd`DZ;yV zs9U1eUAeLDO1^273{#f@$lM>5xf&o#mn9*gXmK9fGUOFf&txSRnJ#p%kLSkFy zOE*bdw@=4J$S$kpn7TlJbUfJBGAjN%pvTN~hYVg4G@GP`^QVJaOQSr5u>n~q-1A*VPo<$*P+`~?MOzxfaF$SBdrJ_nM%}S zaBeok{@)CtjT_z!D~mBk2y#}P%a&w%3Rigo9)DQn>ve;8DVaA2EDZt~Cc+4aP#9OM zBhlS8Ll^LO1fI|MBe}W1^sdxKnY)tvu05NYba$0mCPKFRXiC<~otkyE zz6L7?P`0StK{4Tu4Wr*_Xv{+&o}b{QlAp0qx=TZnF=aPYf8gnz>KyBG!96 z%gY;nQ9XAz6+ElhYvSOS<-F{T8&2sqX}GKwM6&m>F|C=P2RJ)DU+Fm5Xrd!Ew-{;O$Hwczw~F@EDxmHD3-I=uAfX zPnk*+OK?Frz~dEvqH3Ck&pV&CSFeT=k3{?(ol6NT3GA)6!*g-Z{V}(S&9oeBg5&$A@fgM7>)74o0*<- zcJoRa0Zwih;DP;WLSFC!zZL=!r@B;LqG&DUdyBQ-#qal)B&-BMT*)t4YrqyVu-SP# zg-wb#XwQ{6I(>6Mrbrl`vc#hdM025i+_!z+L*%htZ2cP0a;s9GO|1}pR|xaQJ#oAm z$sTM4%?3X#7}da|HG%ISU`P7lH5j-G=})MvjhlOuWTqdKMg}BF20*{P32dwjbOHJ#ZeJx5&TXoE0Cg;+(5)d@)*eNmfwTOLo?7}53bD2 zYZe41o0pYyG$jtTM=w61Uf~yYRXa`@xH!@1^7N8X5wTj0d)hLU+iG4*u+^ieGqCuxm7XKZP{kh!c}}=L0^XGgk4sPA}?A>EMmMW z0MA76>LM|4VPugh#60!n;p?--9W83DEIeB1qI#}zo2!Cn-l@j4Bf#WZmQ!vNNX_qA zkwUr^^pMMFa`oIQ{6o3a1||k$?6etz@Gs<)3I1OG)mu z^)?E9!)N=3C-UmbH(4CVzBYcvtL^73zz5qcVcBEmK7*yTs}Hw&T!8M2i>y##>-CXs zu%E)Lp}6FAObpL#7cGXblEN3-gt^R2`nkyr$2Ou)6==XIXb}geB!-s^k5KLo)HoUQ z<=2R#V3xp!sRKZeVCu+-a;LGGyZib!Lo5S)(W+m8P2T+ zwro*r(H6Moh}?OYmJ$!8w}eNQ5MKyvlVuJLQ5^H0@UlH|>Ha%=ABN6Gl;*rkcghS@W?w;}SK_n7XPG%K zK0k{Z=CoTNSXqJVw>0QqK(PTC2u#HU`=zTj=3IEE6m}&KQb<7E^NHpU^WQ3_ zPmx%Bv#LABYMsj$RsXr?rE^p2CVNcoE_;>C8us4*Jtky{O7ku5eZdBDvoe#5`{mDF zZ)&LynEo<34u}WP{xB08aV$H-5hCpA=nZd@U?0mSk2a6 z7Sv`QT>=R~y#`?&#vNfk3Y0Ol{eyf4e;ho95j3%op!{r1eqDLs=?u^+pJRpK5m?D@ z$j@mj4xi}2*QzsyfwP&gw^vuKF?zNvOuz`W7(HLjK>y6qqM^ma`K=d;mCHZ&*Fo*l zcReZ12F>IQ5oVrDOb>^RtxK1ooDy2tfM$BJ8}lAUP}j@S8Wo>=cih`jxJtrs75npR z^o3bn8g#KMU2BwdH}ekbhpS@CAb|@T$qZ2U1+#dHa(pkw@$%XJFg3Caliv=M<7r(k zu#jM?SAwZ@2fT%elCxspg4mw{CIHc8YMea3`Z(4waQNn!D+xRdU(B4|x{pq%0_F{# z*5Fw?hfQ+aQ zN$6Qp}ph(k(PyW%HNN1q?KH5w`e(R1Ca5n5@8)|9h=&*3jgjWSpw#e^Q=VyT_YAAfBDl^ z9SkwUa=X6Ve$j^&Xt=%e`5Hz)m0HIvuyxJ5dp9uoHS8O(K<|D*@~f#35rOfu)miiT z%8feAE)c>NKWvtU;RIGZmLbDBE|usy#xHwUVRQ&Cw1FmPOy?Zg#A}v>tY=h*ApMIs zW7)ARJ8ne(lRGoSE3wNU27tdZDihWHTQGU7F4~{&%R*uQ2de#EX{|1pJV#~fUWT;k zy(VhQ;94;Z7p?yh0yBNYcX461wRN`WBGErm)t--cI278T9DSN;TUYw+Ncp_$A^Lg3 z!kG^?%x%2c-=np5?o+RSUr^AH$#P%*Edtj+f26;VnFq5-Z*S5QUe^8-bcBuR`q*Z7R+OzK;UkC-)eZ3liLNCdCVR<-K z1rw)yz)akP7Er+hRIHkc+S>7$pNADmfsi1cv#RZ55lEv25^$6R<+TfRbB8i64Bg;& z-|DsO>c?l~yx`%8GEck}O2~eJTgaj5o{iWp&Mw@=a10u5Nz>01$a$?7t`Y`BE8a*5 z%?ji~^bhS~u2@}2RGsR64x_O44)t^xTtm11Pnaz;!S-|c1^ABo`eluRf+J!ViG;?U zmnX1*Q@Oro=+OS6PAM;v2qZf2N3D-C9E8!LFO6|@uh((ms`Jebp{DFYbxER&NDi-U z7$WqIa&8fqH1Xm(roC_+l5KJ)CKuak`*0tJFL$|p`Q?4QZ@?m7AnZx?3|xV{TDj8q zdJ$yN!butHP-0*LXo04+VcE}~2!KO-F9>tfjmI`!ATAEM8*=y~-32T*JfzDk%jLUc zy~^yncnL{XbfwOPq0NpAOiG)@ea18GMHv;z+1ZgOHG!>+Bt01Ytc-}8h`nuQ1aoPZ z3esW5dv*E2#aI{!r{n(YrN=5^j1IlKzkGV8(n|t3M48xebvsELdfx;ka75@IiOO90 zZJaGbGV>nQKBv=Q35C6i3(3J-q1M3RlNX6*!n`Zu9$BCzbA&^E0WSMZW4rlu@$A9p zqfhK57#Su{7ZuYJB(7eSfyoF|K@h^Bg~0I^w-%!?nPS20P6Jj7`?VS0b;HF;e2XwH z$VJ3u=)O;3heiV6BV`RtE;{L{1K>#Sv^kYM0he$i&*27Ac2!Y~ zzsoWkHMiTix#deNT%}9}gY-3H^#!dgAc+*nn$Wmg>*EP&c*-i`Akie&wLMS7l^!! zQ?kt}T(Edg=?Y(EO=$-0q$#wvS|^BH$kO?I6IDoTE06vhEV7==o`P|aLZX8PrU&cl zl8fKKBK2J@5nzUrxtlmjWnnOU?;$=444kbArI)|o#m<2)CJzrO{8m4z7Dh)-@RUQ7E zG)>5PclUe%FPkwGRl(DG4ZKU_%LDx&31EEse{)BFj5cI{kKMwVBx96s`cgjNfVK7h z9_ETFUS!4r>riGfLdbtW;WL(-U<(K_{JE**(Y3{;F&-V1YZ#wBI!5Kg^ATXK z(dV#0)E$*3ywpa2E(EWE|Au*87Fwg>7SZlUG;l_Mz{euYg{yKHw<2xs_{c8F4YpH0 zfTo@3Uv~H(YgkMscut$=rSM)`g@vQ{nII_NYjmz0{0C1X_hl$?lU!D$a-zdbzU#3y zNHCHDQ_nZyJwj->xS5jW%bCAF7e6cwhkenQI5$FL?VNG&M#e69bwc-|>bBvlza-r| z*0(G0vYkuvpUwE8i6Ri{%z z3FMWFF=K>@kl)dCXefTFcx$O5yn2kPM=B_VnCD9f;_{aQjstl8sC{~jO9Kbf+kcMs zZ1yTq_I}prFSrO=nb_|qekAfWf&pCFP71DZHU$8@C+mCtr&B}3|12+sGHr=b9wFcN z!4&M!{h7Fbjtcr3tzyp_Pb0wNbXa(gqe00$8uTT+JdCn-0j^vtjp>o&_WLA`S6 zaU2QDVf+_08?&OL^V_MCmF{>N0g*QRg)aU>Ti=vMcW={|o+RL#d8)$5aMc;jZf|xm zK%%3r@cHXk)Hh;(2mUaYsQQKnR^9_&`~sh0%Hd}y92(0Yf5j+%5t6uW10!FME&7ZG z{FVGM8={znQm&P-=)N{adXu`98d-J9Vs6~ncQfe>3g+k;tzsB?yn7}IPSyS5;3nan zApidiwr)eiME2J=DHQ?Sk&be$qtCjkaxQAKszNRP9(=8p_Cs)5Hdcn|9y zU7RB$&n^-X`#~&!)uCS?*2zDGlY=tU*~tUPjn$hBm`B%9*a&u6y^A5dKf)|4Fkj0- z;4H^)nB$`02~N2!+MmxIi&*^RK5+Y14>DxG3tUeBYuw6@&&I%MK=hBK|3~T>k6LMI zD_=)ACJ^~(8)4r32sEb|xLU(B3IpnZo!DRMAJML+-K56U^y9^RP``m{A5+mWXJ*;@ zHOPuKY-;xy6ViNj2?eJ4exlW?KY|nSu@A}yl#W3B!?_pZCZ5^|R~gF9KuM#0qKEYS zIa=UFxv&Z*Ett?s@=6{oa5MiSVu-qyNOZ!=BfOCx^XBqq1?TQ{!Z`;=7sG#WpI`l} z&tGYmc?#WRqL5N=Y%TW zN~n?c{0Exc{+NE~E*@QbaOi{bvMr`K8#sc(AAk;h=vClEEO#G*qv~jgihsXy{LR7y{aUhn zlYh-eE9)Bt<1d8BcbS$&Pz*bevwGj24O&$&Y`oX7nLv*3}Vt+Bw%bGuJmaf$ZYDJU;G|Cw}KqZ0__G%H@M>+%de}=ALTOB3$RU zfgXRFHrgk{m~|)rAJU7uekDXGiQ;hN=u!LcTPp0*`6hFW>BVuE<+d5#r7t8t09}BJ z&^QcjjSk!wKhbE-%Xv9J9E9>HZRb5S2q-}ww8gd4A)ijBE=_2}Z;wZi2@bzIFyY); zNGx2-6rja6YC1RE@A$q*ltF}i>Po&)QhI~e++yKR9NjMT7RYBuA6w_waRlVD)_eq^ zE&9jjOUF`pq~e6=twWgE?$vJ3j^$w6SHDz?89D8!9G@}@JH&(_1ho>VR_=qSp{kGw z2jl{e<=FM847R);-$g9uI=|ywlxF*!O19-ykm4b^gA7Q^Dz?4H)R^y{{imy?MNLm% zAtoP36XXrN&j|&&FaOU+H$fH(Z!k0Zg!!Yr;ui$@jpZ}ogshp-Fx~35ZFERWR!F%9 z93sakIrHbQhn{eBJD&CzIgW84RwatVj^DU$kF?N9*9zTZcAjbohmot849KI`Bav@vP_;(? zEaABEZvu=-oqEg4EwvV7Vdq$}YvWu*fz++j%q~*rw<5(^KmI`ohJMW*r6~le-TurPyHvp{Zb>zUJ1RF{!l< z^9BN0$VrIkVE!rvCJvVSd3A~!P~_BE^u74xPmET*yM-%CL6!v+7#|wFijWB-T2-rVI~)1 zLW~D{QSXxgmw zYF^3Tc)OdIOKFNN$87xi#0QH!hbMfL4X&ND^vlKsD`vz<@6cfA8O6bA^M!s7$+JB! zStqQ1oC9kQf0mYc=0iUgBY(d9D~FGrW;-RS2L&Y5Zq7D%jLpoAR7*vlVb-0}B}YXq zcJ^T*ZuyU#Jy{}gH$a56?iV>rY-6e&%RB-}FEG0-GDEX{ago=+?VZx96MXNTinL}I zlk^QstrF%fIM)1kM)UerFVW@3fBbT8=q1C0)xP!WO>FtyFrZh=T^7lFgt|=uZ1H*xe00KM?7;tK$whgF#V=$2d+?5 zyuV$1)PpavN4*awhtKU`R0&n-HRz~(6PB{MZ0}KkH zBK0}faQ^TzirrWD0sm!VUD-;~Dv&(vlI0Cdy2K&*ZA<0DhY!noT$anTl#$2a&1U!` zl`j8H`+7EqYCrPAcc+i;j)(tI2ZxP?MSRHzhE_OBNjP`hmZ1v+0wKCFB@9tWt-o1w z<#*nX)>>IOm<&fobxmjS@NXF5_{f(RySgtSF=>43GGqW46gOimb$&i*dvNeqh|EoU zLkx;`Yqny=r5z2LCY3bPzt=!YL9bIdw1=S0?$baQD`5X!rn0T=|5ZlF>o=82-OS_} zng35{GzLri$_t9La$P@DP#&SYmbDAriWF|+4IHdtsz`?z4*esp{(TAOt-KSszqRUg zQc#^Z<})@nH}If9j30_q39OV@wy{cpeD?~3qdqlq&uJLrLI3i>&HiFI);esXZvzfi z;GE3_&Pv5^Hw2+?=mTlh*XJlmEsHEUc$S`|Zw?US2?fx+Z;i~@Qf9yT-{ei3t3;Ex zR^v47uidU#IpG?=oyab%muNt78FK--J18`KV?k~%y>vf7_(J8`FzfW%rRwVKAb4y+ zLiF#nm7kIx6v1@yvux#$=^_mHtk}bLGP_8CI~mD5k-ITrRr1eS0NChA~WeMLjwyzEzh#mYSQPKU(_BffMT&|+~^i_O6~9$;=hBYD=y&`^FHkypcAwKNP){>TQk#vuWmY!Wi>PTvr`J4*__}Cw`zN|P>Vk1cKe+jwEcwPEW|yZ) ztg3ZBdX*2)2iMDpB9C_K3hU+Bi}Lnw_ZGsmn6T?NC2r&LEB5SohpUWxm^q&whwnx5 z^Z#S(%EPJJ-v1^UN;n!EAyd&U!x5Q_5Opivd&^LX6PZG$P{zYi6r$T;ij<;4lp$m| zCsTu>go8|}%u_N?zjyC_aKF#zWBLo4LKu!1{^6Rxz zdvo7;FVt}eXY`BTsW-Q%hm~@us5Hz2VeWZp9s~4~d$+Q%XhlqJ>Hd#(xMh_!eVro# zn)1L6Mco7A&|Zofa@AhC`D%}PUK9P z6&EJFGB-~mNMmnUN-uFBJ*0_VBAzC>J(1#L5$)TQR8twejTD04VphZ z$*;OP>hZ~iL9B0p_I5>Ej1(BZEGIik%RilkzGw#=ioQ7oFl?cjHy~$Yzf>?;JovOY zvHD-oRq(MoS>_O;Xg2Oi#(cdUoKwmahrAsR9xGD;*V;?4_kZ-zaewvZ-8RfX{z47p zEEe!6ID^foZeF*ZgObl)_Nkul^$)Yk!u)&}41Yl$CvIhKB9-K|%75-x>?aP~jdK2p zdx16-fM8O_Pywq3Fwy+I)O}tr&pr@cP3ZB(zzB{5v|rEhVUC5uwxUdF53b3}TpSFu zzoWni>Q;tsd^8*j7!&vH##TJ5@7BU;d`W&{_2lHFl?A_Qn-7TKWHmeT;QbD^{z-2@ zS_f_iC}Ohwa9PFv4(ZDse%&P8uAh){qMY1Xa9zyi3O?n9pXv!(^BBWLRQ~PqBKhx9 z{oa4YmIKM1GB>oV-k?xwoop#*`yxd8U0X3)N;l3Go`7axvzu3NfXrHU_v^b$(Vi zO-IeDR=tO$P8Q$mh6c}pL#$P=?Bx)?MzZQV*qZzK^FKIvKX6NQ0fVJca6bgoN{g8H zeY_kk@UyHax^#QrHTqN1&$}T?>zSkgWF(D71g8^J{ZCH@p{KPs_pZPG9wrD#6`r}##Szqq2AwB&-?yh+gVHqkyExu6Me#ird z`h%qQ-nmhgcE3gEzLHq8(o>hDCsun+dIIC7WR?t>kx^#%uEyo?p5L>k3=`f1@k_#+ zEGO{s<7Ii7YEeDG!_vmwd8BqO*U7L^8BEV=dE65|TBH}vF5LU@&BkpVeJ)PTJW$`1}y<_!as3z0Os0=kwjU^HJJ`U(6b{+JhJyqhQk|Q|uBxelTgF7j_m6l8*_hu)lI?DC)-@ z+DWU_mR{en3<$}qPPG5^F+f+pbxmGrspyy+&GwR_G*a#*n;HxKD%g;<=F5&+-Kev2 zbqhVkvza(>&!by!*KPt90uGWIdxLkd&SF}(UgefM=ce5 zgFq0Aw0BJ?Ht?@)OD_9y{2;kb;}3QXjdrf?nyFVQJUHX_00?zGMgS<_ch1X8{^t+M z(N@yhmCS=`(;h`k+up3m*7=YY`W=DpvRJjukee6Hxs?|$$HP0h>>bZpiB_Fz#1YvrWCdB9BA zRIRfy&`7~__^VkhHDb7lm>$8F-Zpa?(p2y``| z>TB>6D0+}{)1dT~fT>Qy^g}FgV5auz7tq;?qdLKhHM*E^*{Li|Q2!VYHOs>9ZU6Vn z+3uZdL79itAoMwc1DG6xcleO9%1!OtU|%-)qX%jp@r&%UYd zBkCtspE+dvQ|I8J*H4M(FS+i$tL6TyrLltC#k9XSyxBGdlkdIE9uxcdBk3%f4M9=N zygwSG#*PegpbMwyEL)v8KLg|J} ztY^${>#Xu<>}$hg)-CVAj`p_q06Fksf%4l=Xek-kobpb-H@tfX!-ELHQG~R zdNaRg=fGFf=f~eYZF!uRSp0&qPToV>=Y1h0g_#=dc9o`cNIB?ojFy_OPrrHkp?%Nu zUcO8_wKzdmok?t8jqn*63(@b$pN7nWwiHuGwnKLu6ZdSZzmqj)`}6g$Z*z2m@lyBj z*FPiK$n_1`_RjmbCw!N_a*d`FrjsS~T<)wS@vyUl!|Vv0|Ad5|B?+JA5;yy3oe0TB z4pAiad+H06WLQ@wE-W`5>_F1;s7Cu3ohe!8+)dx@ZFSrvjcEMIJ#lGi^e~#vDY(=i zV%!c^VcWeAU4_5@BsKY^9Q!JY>I;a~hsRMA7?xXq`_vY!h^ZaB>{kBJ_`1P(zj5hA zO=0Jc%hS||Q{9_+%AWG2Tr2hN{`p$KqHoLH%#Wr=xF>LkUAsk1pL~Bm8i|+ZzZn`j zAO2qZ`O_G;fPlrO76B>??KgyXW&V)Lz1u93jLGcwWrHXwV1yVuef6HUCmK7gOS4QL zJKB{M6Q6%QE?~32$oU-_;icw%m8}co5|$)_X&vOuwiLkEti?@lWsqOJ@==gmRngqs z=HHeP2Iu^#pKxM3WnOZN_6Ozg*NG&IcFWP^_nvCAZn4V35hb29){L?bXF^)ao<^4a zHSjR9&tqo9y=3I~=K68}ar-Hw)7{nS?=r1!2~%;HKJiA4b*)ZTmyu8e<*lRB9u>B= zz^|BUNSSTc$&Y$Jb?43<9o%k6J(%~|f_|7%v<&;3zmcY%=7kuEhTLZy6s_<7-PtXp zS*(8!_T%BG(C7P>z{|>)$$*CHg{p?C@*8k6-WY0|?|9g<35YlaM9lVIv}8?1cDdD* zVPx!p19EV|qyE0VVQH>*x@? za({-j)za(n5?Qsc`3CgE!v=;1EAqKFba#7c5hw3dkP(+4u(W$p1;=N>qIE%tEZ8so zC&sD2mecC&y$)8~c*x$I>;$TR3RQi7jbIns=6**frz$nR4QB%av<3zS4!e~BD=t2F zQ2S7&Od=m1CgSNMd5I;rAm-6ou{1mD<*ZU^okTpnZ^Z#?gdm3VK1NcNL9Hj7He0JtQbp-fu1LK8lyg8wPI4uA z6w6dFKDdHqNym2!F6sDout&1(oW|1&O81H+*{E=`DIykEofmi-1#dP(kR$#&R*T7T zC~UsPeaF6;xX>jRVV97UJ!WD3JoqeZ-*WE8#1TNXxWBYqeL8`Rq4PW_&(W<+WGio=D3ZaVPHTr)Jtr8C|DXPI8f{_R;HNcE+;;sO4OHCMi$vR;Nw z;55A#Yv?n6Ei}qi0AA?tal#7u>IqBa;|ugN=MrZ`*zcXz6{3@OfP@oILAepK8R3Hq z&3*5jtT6OT-t-@_v{_=JE}LgjLkMQ9d9F1mxcygPQ7F%c&mN41>Om*ulBfOM(O`Gp1wX z3rt84MT;-R-Zz^P4r&E-mnGzL1O=gUxC|~Q5zX)%*28nV+Ey#%aK8H=VYu*T6WCOR zUTJ?jNunMc7D=hWRULwr54ftwplJB3vJy6zxUDP3IrZw2Ooq}7GavFfe%pT5wo0D_ z<$ADQ?y{*jWUxYx_7$c`igB%oruT9;7216$&Wk zgXg?Zr;9OGY~#upUS=zdRWA8gImqbz;hC$bnkTZsIex1s7Bj|%$vtRhMvsa3#Qylt z>q<*TLYy`Ju)R2=Tmh9x*Q2a+|H6TEp8;VPp%t}{`imDT zpiXzT=MFAl+HfN!v*hyd$&BKO`KI)R@QGKg5a?82$44vX*Uh>r8I>V>ik@^H)aFmr zbUp1GH#`5TWw04Ur7z_zW{jiYqAce6?A11-q0I+;h)o8rn7bNZ|7Q5`uL6|LqMTF0 zU8R<4so0VQA9^K z{DZ~U)}c9U=McU&p~*2%PtQIzJ{JjKfb6Y${VWs&oy8o8q6S8ZmEMh{EehBKn3Ndb zc}dbV=IleYHdR6O_K zlBIm=kuzJ`SK{RQJc!}9g8g{&HC|05;L`Lzm;r&*#*aJ>4s<=*LQK|_G6bmftu_R7 z7{5eZQG6;e4`KA(HQ;UyB%3s*kT^KMNX!5{#7V=dp-E_sLERiW5R$0})(+A}2W=)^@A+XlkA>n5-oubM5BSc2)MTSWKp zi0+B=`^s8iw~JNdxEt6<>I5I;(l|HiFd*}{Q72#VW49w9owwk0qo_-b6ufCGz_%81 z9k*My2&0oj9x)l8xA&Z~Tj23We1Rf6P=JP7yEtjK*)OJ0c=ej(*-L?xH}VFUw&kDF zcIb7{PFcbss<_2HQJ;T2o}NPX4uuM^zLquY2LV7wwr)5E%EBE19eE4kjBof~nyY|Ee{Z*^UX( zXLM=`jqcuJcshk*(Z zDu&{XZr((+y&{IOE*YB*?Ba>2$OIe|++Jx(p(E~4r|A&>#J zC2GwCldCj5-aLm)v8U&j>Zyyghrj}*9&f|4VZ7bq7(|@tSTuL$QbE$!$l9IlaBtoa zDDnYu>|w)$!fC zPKoaM6NkSLs=$q}s#=u-+M9HSGmg5{3%~*m7{C29qakG> z45bxjgoa4t8gp&0_wTKm7pEB6_cu0!r2VP3G)LI-RPyrZ?An)kd1VU={;Lew(4oo3 z5QL83z0x`y1}MR=y$2&*#|7LtJV1>@vh?6O+wHnsz}pRgrinQq9a=hB-78!vxkjhV z0e53=IH;}jW*R&bg4vU2rtd1(exyF z-6^_Q0Qz>65$6(4?@Ph`0#b+jsz0}A`U>y$-kL7%1kp;oHPcAsQuzkh0H*@?c>7;@ zY1#dHti2V6l0Zv}MDk9A&%@b;F=DHu%WW}<Sg5yYob_cQ~Vu0ma6U^kiO%_YM*%SErug6!3-(qh!6pnX07 zH;HASqxJn*rR55SwSIMA0!#*TYt2Xf^zbQtdc+D&>xM&Qe7lxL5)3AHX(-e(T3gow zZ06Tg=YtEeC^xyUBtL!Xy(e`a-gb8u-4BKSV(_kICHvt|HP2o?ou>=)w9r*c#n7*D`JTGTXB8KERaYdp=S_@`C=>BACvbqZvn(^VWo* zBR>ak?(LV>nm+NsfWs1~J;KWD(V*#}f!~r@TZe1Lu?73Z=NaTLf3hiSR4w`NOTpyz zV1zQ;dOW-L-z$Jz4M2i_idT#A1F)=t#%B6&9~7ZW;H$HX!OU*lU%6_fjF%h3;c|ML zVLK+*ZXe`SE*MVy9qXkvCDz%s3eAtGo?A+pxBFl}7E@e{OIk*tEcXkN+A7BR)JBQ?1_t_rIu@GkOVlH? z!Cgs-=U4l5#<%-Jx9vBe*gNR#!y6wd6&07Myc8}@JeMH$H|C3D9&zwiXdH(6QhFB# zHs6H7@eD8xzsdb3kClT4hlg$5c4|Y)hhlm9eQ#xSv^}RVRxRB}?}ulc(5p8Ia?NE=YW%&Hc9Z zF#KHuCFIhs8!Xiyp;9rU#5#ME@AYLf{l%8j`BRo8vKiWVDHn%3i0}PX&c4Yr`^wrU zI9r@%lMOgp;>GeVPa96X4$=J0eRwR0WY{F+c zqCl146b*wWZuV?R)~=jjGTQO!P}8y|FDGY%|FBnpG&(%Q6A$})CohC_HugLD9QW5| zAqAoeFR%_r9nE;-&+`N=MFF|H35q5>Ab&<)Y@VRctMy$zH9o6Gj|R+SkKE3j^Im(N5ZVdZX-}8io2{~(d9Ne`1E$g; zNc&+w=`o_8CZyu5xYktwdTMKdM=vk9W5qY+~44lmmZrul-1;i_BqJlUIg z-1(%+ry$_}?taenU%z4%ITqn?4>Jjp)EPUGPat#+uTGA$0{U_IV`a-Wf%rwlA>SZfd-c5b&UV_>l{@n7oRnJkDShoWak1 zQ5*MGBPwhw7~ndBDeQH80MuG1L_hbtD1#g=AD~t=BV^%Jm%)02!Oc!80P2jtX~=XI z{4x4;FsJ^`Ns5B6AB6gM0&y!f+XS#To*rYo@xF}w$9StVU_1X5XVrLTLyEb}8E)S@ z+V3%7oON&RyR8nX!&Dg#J8lD!ciTEw=xIi&v6YpTy-K6F7UQSeA`~|UKHeR^$C^-D zdbBBUHSFH9lptAV5z=j#nr&P9t}%1L#?-vzOJ2)rRLncZ&?1xV>&(Uodrjp!*7Z}U zcsmQ>VfL*Go2*?7?nJugzLq3mk#(he1sW9-{WEPXY566#mKZtz+Jcj_?(qXLano54f!k2wcVwp?TOUZc z89`PY0a^z94spJ6-Xx4e^WF!twmr-bI)KI{M;lj{a($bQcAo$H)cMsh5yOB2%v2n( zakn#hf3WDwpk@S@Jsb^`?G{SA{z8yD@hF?VUdX~Mx2265PrrxI8kfcW6I7b^p;b-SdP8r~9%{JC#9=Igrjq52o zlxSbWjdQ~}(|Lgh9NAYjL$w{2Z9eH@+f_RCE?`T^uiF;#oyLKxC}1&DI)sfZ27Ka< zrxOk8Q+-Fb&2Dc#047OTGAkLV07vOQ4jZP~bh|_L!qfBh$B)#koC_sCUh*7%Z$lEZ z1upj0_4LnVpV7?DF7kbw6X@z&lY8FYg`pmk-zjEf$Xkl-W?D{b-almP zm9sJ}=0AL{LhfR%jwTNGCGBfG4=cN%8|rvqP43tupl!n1?vBq^T|t*GrdkabhH`cr4bG%2DVh^fxw-U^m_u2l&+~k&n_VVo(tX3CWvT$KO zh#NDp01yp0H5x3L9b7kd`>-C`d9J6$$pc7?DD@6)ZhxE$Wjwsc+v|Q zS=q~QpI`eQe%!R)aWvx-i&x-Df8gdP#F6bi)-9h^^FlEE?p2yy9AEkwSn=2W{dbB-Lt16jTxYplVM zFaPfWct@h|>rj~w$E%*_-rdr(OnXrXp)52cH( zgYQGb|4iLT|B=Yc$xkD)k<{ONs5qr9FOFv}OlWBNcM0v|Za81;ZZrp{^$BC0Vm>99 z;FZE9M3*_kk25&$P(aAWMj~23`OfVm(sIDGc%u6-uLoPySFMhW>qf2UjV2`36-_>0 zJBTkq0hf<=6aTy%Q(ChX&L@W6Wy2~PlA9Q-Eu#0FG)!(Ej$Q9^(m5XAQ^*&Ox#V=mF%j28kZpjSZV8DWVAm^~{y9gs zL*>u{_2a14leV1MmiDQP&jzfhihQ?ano-W!^0Z9<-DV5j7RnkOTPJlnO)y^KWBCG8l=l2E!7Tx*j&}K{&>xX|R+VYfKA%-vB zD}HtLM%Q6pjRkJo{O^v8&fgagHua|;EDOqb6MnGCj6?aykMxK_qpa+g?+)J8eJ0tb z{KoppA)W%6$$yXWALQWh<2t6 zy8lRI<>-;ee(WM|o4TERHX#nOm^C*R#Z|j;41^D=WWj@GQ3whzL`D z+*bXmG-m7nq;$|O<$;hvwq6_C#tZ^3D%`nK)V^xOEYrx^wGQutrlhzC zrVE*|zke_9@AusQVoAT%0UfqGaB8+}G(AR&Ky=#1=8zB6h=+=wt-ODC5QleQEI;+r ze)wwYJ$@g z$)HUkWgnY<{H2WzzR_BXb7P{7u9Z(Lri~kIS*mMe6*I3djtEwgogE#|UxqE|C|SIM zEo^0j?-pJ773{|mLegZ4zzK?~Bs@%IqZ|)PgE?4=t0>kVo?K5m2 zyZN3x5W*QQoX^?76TLVp8c?`k5-?sG888-K`epnCqWE(c(dp&$0uOJ4DWd@4m&Xfr z*w~9`%Ubx+I_vz@%;)=~jh7Z}d375<%Xx4}vc}63OixN={d5xyF9z$eR)Bue(#pO6 zSKqnCkoLWcEvH3SlceRSpEdzYb{-A3NR^3{Q@`{}ugG)g<-nGUcV-E$g*(E0m`uqD zd{1uuD@4|#HDIg; zeCIY_x-|%_@j{b)z*wgLn9Aa`8!Fb(#PAbO7yW%C=G3h_vV2PCK3I7BRuDS=@Xy^5 zrooPt=#U)PaHr9iMjrPdtvj6kC4}Zb+JES@XjwHTTtDE93839wzVyrR1v$TNUb&*K z9Ym5dsFS^wyMvR#oJWJpnZ<>QSd*^!_PK5A*%B*vOL`LpV_K- z$YFy>6#=u3u;~v4lV!(;7s~=l#&(wel5PBlQm~%-+ydi5r^)>29%^v!G-wK^Ge4qP z=9Ts$|BNb589CVh^!H2BWWa=&|F42>vt#b-949bd|Jusl59Z^v7@NbBfZ1XHsZ$Ut zy!-Iz(Y8!gYfx0vgu;nWZDZ;MM3NfVk(w!lzlICMx8;e zt$H}N)Wn(vb*;Cg+_yVdAawe~Z z@2ZbyT>PQp-}*Q()s?wD@y#7#`l&6BjS7siso#ON=G}vDzP(oc_lz>OfI`4_>m*2p za5kqUwbSkgoyxK3qv7!`?Z_WM~Qnzwl>nRNmB-{(hIx6 z5D^0=n{*rLKOdgAGL(~V;BEB!)}H{|Z-MmZ3Dh4z`bJLr$)Vy!^|?ApgX?o?&uUl> z7;rbpqNMi(sjM1(R>StsY_e7n5$x{-qG_MJBh2dvek#)&=zjAt2$*Srign*`THN^fZ{Z}q1!OYc>{^O0dtVe45$1OcP ztbMs0bK768?>GpYRdvGQkv3dnS@_l?t4X~upRW{-Qs|af5X2|Gp85kkj|mrj*GN^s zO#8z7Z})W<3;W%X&-~OMRv?Lf22&n+{bLjG&GRF<+1+;kvg z9My(Cw!%T@fC?YCs)dQil&%cU4)B&7nSbgq7Vz`x%~gf=gM{Glv|976^8oK# z&Vv%HRC!MNu5UYtwOcK-a$r=?D;Bn|G}qc)Q~&M#gs0RPqbnTla;tz@1R#ObgYEq~ z`}+(S#O|{edfOE>Kq7pdv%vy*@&(dsfNkiAN|ssEVBghWcJ(z@Jo9a>y&x^!Y2r7Y z)~I1)L6cb;aD+{Pn0r*zv8vr~!ewr!MQ%Rd=vtlFSU!xF^5x_Y&^#i)KFGS#2==j; zle3>Qo!g?fW>x0;=9I?%h)jQ!n4b{D3d=vZA&)_lVAdZ9CWa4MumR6p7~q2hAr!i|d2-K3PGs38is z2PuM4%cf?KTloaSVLWSyDhX^#Bi6IB|_8l(}F)1x+{9d!M@F7oWr9kP-e9!px zraiSvOX4s9*FoD(zwNd#rTD^TNViJf(dIcT%U>D%`U$Rw)o`j#+Tc&er60iE0H9 z)pnn;us9hSFq5l0P90x2<@jqWip?rzLg}ADO2R-&et?vmJsm+ur5Q6tP3*oWYcBz6 zs`}KJ{N4iW(P>ex+AYhohx3D4A7@hQqhI^akTsf{Cpc+8bur?cfcC&>PHs;F&N~V~ z9I5_4x$`ix7skwtu~-Uw*MDkMol|$U6b@p^xy4jDWEQSLmG7f1X~T_qqc_FBZB^)h~YgW|HYu zeTyQT&(skYZA;PwXvxIXNk(#{RPY&(IghihXM`#BrMqzGP<@l=m?A`fDtqH!hIg2Gmv|UhmWHydI{ceKS{MPmyT9^xz4z} z4_C;R)00oFqA$N4j^>FFjeD6Lj2YDf2f39`OOP0%aIH0(Yb1NH+w?p|D6A9ug8zv7VeQM~{UYvBNv3(H(pgxl2<4KT5gf}115Ik|b@yifud zdZ!x_=)zCNvROoa%RE+cMywcsn(MFcS6zP_Su8xwq_A{s#_MM^=<1}TVmh4+N<1sc zN~Nw3@^}MDEXngoGkJ@Gsb0}5$vO3Yp;e#LbTenZ!J5Wr=UqA3Y0+kx?<`vn;3Tv; z#LYf{iN5~LtMm!D%B!w3UFYQ&6M9?k3?JpEhWpR@(QZ|Mrt20>IX<|!@uRBdU2K)d zI^rAs0dG|xPnb`4lpT60f0wr=8o^{!sa1tXbW6Y$%PfKQf%M-H4=A83+!gYkOuIYo zU2J;#^t1%hKN%rPo@`5d_wCK7AY<0bj?( zkwFqVLb$BFs0fEeq+Eck?4@b0EZ)h}Ohu2;il!&M!WeER6irWr+feJeB}_R$jD-lU z&%sGImsykSBGrFCrDjGOCWiW#YVknvJnJQZI?HgJDE9f>?5z@*gvJ+ePgqNkV%AAR zz4}@jSvwy7_rW;CqASc|-v76EmE&4+VV?up2`b**>K3%+O;_gr(c{djKGij5=jHFU2x(RSO*@oTV3KC z$LV{kYWG5hB?DHUoas8{@vU4HF66vA3`oeA7CfJRa)Y@ zm)|Ds*-$#U5T?Hv7G?qXqi*$q;rXXB4FmW9NwMW*C~l)FQkVqiUUPE)G~jG-h1|$L zdPQ}B!UngpQ|Fmx`g$o23AB^v&KYg;O2@1KaKC?OC_w1*B5k+x|XTB)GWB@zT0&XB#7H9>mgA7i6Jw1-b zQx=yD(fNFKA%s7NJe90OiS1_XQ@}O?aMfJ>lEe&Z4cAhPz0-Dtr5WS;Q7b10nMpuP z&;Y+T8fY4Ioez6mU1H(05=D7E_0w)}D_!5;u7@?1%o$m*tV*iK*t!NMYBTh-1JVGS z$*$EnfiB9Pi+&O9$i5mX8pBy@V@Yx|4ly6EfF<=!&UW!}Q__83?g$ey#uo(J$Vqlm z7*SxW9@;T>;3#J$R5t9kNetc|Yfgv&& zLq;5(P^qZp)*+Rk8#=FrdL3SE2lsP1)nj1#hwI#GZCjk1c&oV>FMOLF`}W1>d04X# zlshb-mHND1`Tm~<{|;BElF_?d5Zfw`XAkthRP`*7({*Wyq?+M3?HstZol7g zh?*Drb^3w;FW|#Dm$*)iOf8mNMY$SRwV#v-Z8Y_~5+(NP+B|0LlDX=0-WM=XD2fdH z29i9B<-|tQE-?dD#59dM@6c=wt%gcB`NC5nvyE#?JYN)mjsj5vw;7{YFFAAOmx+i!R9ItoBdp-pa%YD?Fm1VA%u7qxofln<) zC(IO-nC}zdeM~IrzaL>ej=mp_MkJyozgZn)b#wh$oz|79$6aX-ulsAEf^EUlfeh)F z8?D0iv?tMI@6^cW!L{9Bb?PKB@yy0@O#wriSo0+{j9gSpR(&e^mv7xe%H4eK%CO&H z{1fynJlKpu$|-+L15Fya*JBe(dIdD?#h@OwDZUY$O;K>KrUqDl zKVj6JjSjPr*`EO-IFFZVAfV_VsM*%(pw>X1C0K-9xRhhvFRLJFo{u!f7h z->>#$J`3-XM`E&HK7EmYt_NEKG63eS7&D;M3n|zf5?~I^mP2fUJ3s zfC)h0(I1)65&SHYjdI~UWFXe;1Mz>wo-qh4m}^`yKns$s-pqGSq6$qK>52|B&aKy=K=!BiHe~ z`GjUEOLr)ky5qk55 zNpXEY%DKLNzVWFb& zTcb1-7(?}#+T$QL_s1~~3bjy_kO~;b_FsIE!#9cHU-5P99ST^OE}f1J@E_AU`N#Kz zoR!A`AOk`6)Umzl{vY;~PmxPd=L6>R&R-F|rE80$g3vLupB?g2{(Jz)B)R zwG{qNT3bk@*57Xg7#*IR>0c@elo1*^!J=*TH8Rv4nDQJyBLlHH!mW>ISjBcqka{@9 ziO0|i?Edn}!y9{oAV;?x+c!{ZIFZf$8DPjy^5V-FlVDFCWG(|myIR9+34Nf zbs}l4TNvHDxNWKrr2&XJ^2)7vN0>)4UN<7Qm6LOBV=O(ppN(BalFh0Q_<2%qj&U~d znVmZ~oM-VnEX`tmVd_^SH0G|_yA!dy%}hu);1)+4YW>ann5w>j;G73YxE?LP>J`}+ zYMbQ1LEWfGZ?>54o2&vG?jqKn`R-dB0iQq=#LRiP$wcXw989i;N+weyf?*2hxB;z3 zKJy>} zRXyLQ-KZ%Dg1-`nPA4K18=ul0VY@YOwkJiDldHp);X*Bbj8E3ME2xEwgQ3)h zdJ>e@iTzQdQMB8k`PL(_M{I2ov*imB6F^PCqnUtJ*?*-RTz=gA08j=To4kZvEIPD{ zm*lq>+whT5XI{5L|5p-hl2@O~oYyZul>)k{#F+UWA%l}!40;@)X0|j3&m)}ryTB4f zg!U`L14^~0ZmKX500kmrRZh&pzq!WA%~&r^d{VDi(1jLDNVL6f#ZFz85W)e$-w6iI` z8YBTA8FQd^xphmLxm}fRU6(k5m6b(sL)^xfK=RIn1eVb==z38Co_Gq`J;eD-0ixCQwesqj*e^kBPG-{|#7x zKyYpW{7*9Izp0XfKZ%r+595J|u^yTBg_CY~7fhjExko&V__HJ9tAoS;fvR1!oeJk`AbIclX z_I^0tmr2VQxR)dXX#QbFURwyLoigA*U%CFKN)q#Fb8WN$fu;gb9U&>|kTz#P@_&8= z5cuJyA8&<@G9P@kmHmDEvMyBL;tN;K7bd)Pgtf;6O-ebd;uA#%ZV+XTt_-vKKe_@r;NNo5_re*;N5#NA-HG663gQge@+-q#muzzqRNpuE<~#}`Qphjjdk zw*G6%Xq(WvJ^{TVsge);4Hml^010W9fdl*~i1+sb0tN)%AJW-Q>ifBD&naik*phDp zAJ+pPu~+6pO%<8*j^T}_#~oQ#$A9^QKAnU$K3hG4^pQbKiXCj8Ds2jb`YNspq|vnENM! z^c0DL@)h*!;xACXKpoUVOJ?!P{)c$@f!gtiP6=XxX;|nhR6`RyPviG^BghBnB7njZ zQ=V$K>yTdj1sWe}8W}pP46>4NVW))Li9PtxN+CoUJkf_v+D=%U*z_1?%Av)AB;D*& z2{ye~v=4{6NUa#u5>^PO&mVN-HYnBp@>6-}sDB%f9Z;;|h7W8frNHoARzYnmF1UjM zdhUfk<+BD7^KHMS)4fKP9Pi5xH@CX~p2_`x! zFUwKVXfXM^;~t6gO(b}*w;1MPDvN(SCyeM=xbon}O?fYiMHaeS+D%0-q)A*2=eB2##;wp{3A&fX6zbpY$sFA z?chL_rnGktN;o~6Qh<8neJU4C0l_31F)i#YBp$JZC}s>#8gS}MAGiK{adq(-u$#3f zJ=pS;3uf>}O$4?w;&ck3>8n1P?c+(11*Nt~Py)vz__(#} zAjz32`Z1uaFu-tG{!iBICl#KP1%ku5;!4dv%q=`f&!%X4$>HV4UUWzh6L4s0s3$ym z8itH;N3o;>uDX=-Zi4W19PVddfD|X79_g)h)@%tZKk4tj{^Dq6iVP`C>qj$5OlKno z+jG>xIKqZl*avV+o%K|Fkt@DLr1lJ!2wZwn1D*s2Qh++n-g@WSEIH45~9hD1geU7sXA*VirM9z{pM8WNe%mwMwm-8gl$k4QO8;6q62$3Hd{i) zSLhB-B4j}SJj6|C)&zyy7lQb>6CdmdOFw#G6{4-{c=*{b<^%^$%Ki7bEASj#6pkQ@ z+m=>4kpX9!uZ;BW^+cXP)QBdig1(-a(pGRCaadS?7hef&AGFz&_)jfHD6jixnWgHG zF}nDC9KetvtZ3u#RT};@#ooRJ(iclA(6d#XSfp*VX;Q)xJ@y0PFg74Zhl9+bznBy> zDYit*+7m#d)vzTD5r+7X`9y3AY%pGa!XBR3hCVS6zx+f&3MBQGpST21K=KKmh+Tdn zJ_W+vl_$j6sKx66M$n!u&$+0SLSP!kTC;34*Ts|;sCx#{Z=oOQfpii6k=lz`;%4ay0eE5q>_b9& z#Fn4fT=(BGPNQRBPw*{2p0r!4xj@&8~R< zKU|@0;i8kTpcFlOV96z&waWZ2MR|2du&WVPAqWbHucfKU=|4;vxXH);lWf54*;>Sc z*gbi`aoStxL`Ty|rm>3(C4P8Xe$`f}D{<8?uHWXIf)!6}>C7p-Rwgd(Hu>|KK{U z0j#gRI8F=g#`&heJ8OJvty2O!@*Q}N--Zg3gMlE6|#%olsQ zq9bMGd@ZHM#PP4#(Dsw;Lg_9!n+S~(-|`a>B#M@Ckj=A(c`h?jQf-~p1X&gE9EhR> z8R zSv{7g7CUR9kh*1gfyM5Ej_S-=+|B1?Ux(IF1@=2LAftLL=kME>1ALioKoyCmPaMT< zdo{F!)w%Ymk=A-4fYOqpfeAoOhB{s^@LvrAQb&qyRXuQPT;i&L_4t=-2sk<@{~<*-VT&- zlOgM|i6G#|3-<9d1`EO3V83aHmC61IlLak&re7Wp1y@9y3dzd%Mkl7KP{aj43XeT@ zh%NN9g7UkrQ1Z8!ltU^e~yd*7KAz_RE5^wEVdQwpBY%J~O(-)5|1~T@S%a(z* z#Pqdne2;_MLF z5<)AWt$?3G38Fy>NU>0~f?<&WRsvG36%bjY0f{Vv#Rc^XAU;J6O9WJ84U0>wXo??j zeb$y@MK&c?z&sFm=aQSe`upb3+>@EJ%{gbzoSA9b3`--ewi^(L?LcTI!HxDv$rwzi zw7(ByzL(onYUHXTDvj{)O~CRqZNE9JMO?Q-_=YWU&J2m&9}cW0v>GZ-wXs^jd>LTg z`QoxVl7>t&dwi;h{0DOQ{0V;3>B4+hH?P^nt_D3`N_n+h&xwSjapTNR2uc?>*so+7;5(L?rVcbpn4FLa=;4KCQWH;j?vP2(rSp5|WPUxtkF8k}j_Mcc(c-`I0Sk$moO-UMMjN;J z2McY)u?kcWF=Q@R6|o=Oj?jDn|48}&A9FHbRg4Q_?1XYs#r-I^8vSSHzFo%%-eU6t zF7Z6*@oSJK5^V~jMNkzXLg^m4wxiaUG+2W(SzWX;-45MY4TSx;y+Ji0Qh^I>b}cxD z{_ViWplG^D7_-ycBjuJAVr$K9o3F4^_LxKTSUm_mCNWt8ug<`}HpJDb&*MLhTU~4h zE5?Nu3gwZw$8s=EEPzyp!xW4kmKWaJ)PavNxtMKiP zcWCWYMb(pTv{jc2-(EaM7(vN)f}IE9Qc}S;Cwo2%)o>NL!vPebA@{klzG7s;ZzVdz z$Sfwy;_@iFBo>~A+~L*P6Sul$jl2Q~EHOkq_zGGIleP3+b`9Of9Xs)zDr5Zl<(2FQ zEqa9GWfPU#8z~f)x zi5@#?p=Qx>zHoR~O7wFA@=rKWfe$Wn+~`2{0Y>)NYrgk!fP_(UgX+z?-2~VVL@O$b$HJ7nzY{RDzk7!Aw){I1qr7r-zTD5|#mYT| zm7+QmOsoVy((He-he{if@mW7B#FnkQS*gsB<{knB%9c}%2bu@N|9y-!=&i8J90MRMq z5uuQ-){97-&F(v9J7iaHBk`jY??CY)HUYJZh^IwxgBrKQ_U94MoFy45;;9rL6|6g# z(61p9F(cs|97?-jD}2YV&*odhTV8p$3GG%eJXIkUEvRZY$yktwPZfg~p$rrK=B-ag_6Ev6AeXfugaD9gN&!3`HD`qgI|vKmKcQZbu}7l~ zIeF-l8TpIFM3<$oXotd170C+ViwqH3ohtjYQ=h7Iw{Djs!biu@ADVzWx? z0eUD3HYIi?P+b;O&4FQJM1hp)mu-dan(ZS#;p$WBV*84b(J;!}c)H03Q-uwyD+F*{ zy5%_dHCy4d(fqsV1|JXer`Aa4Ry=YN#upy}+O!J<)6;$N4RdR6!76j1-G^EiCmh)T82+qJVEb;${x@G5GhW@EQ()+3 zMds-NKMO3Zj2Zd$24snM73}3NG=|@?wtm=#LA$&`%$tV4#F$Aqgs&0;MK~n70+*p0 zQ)MD#!Db1oGc6`km!agFF(LCoK?=pv2S_b|WWghH(lcchy4$n^yu!;btBSV$-u<$A zPo%nhOqAxSO>Tu`Bo(rqDD7*omulgYFYafcn*$eGKAch&d08v^Oaq?T8-OkV&rsS` zTVWx;=+d5W^~-8fDw2`~zOuY0SjNpz45o zVSRRU=gf#r10?m2aFAtz*6swqC*6&EG-^d!%4&D6Wd&Sf1G1>jQ=p5jaWn?6J7ft3 z2$nQWk}OL`WaJTM=V1qQD4;B*=C#_JJB>P6 z74XdizE$Jj8lwC$@P0*fiKB30*HvZj9LRLK;nci`-p7FVukswW7?SIHR)o&sbicYu z7)4YE?*QjQG&a->lTfq|TpyGdX15>zY!O!b%rG6c;!i8G$S5w)I9D5BsX)2Jl*!To z_qUW%5=+Jo$7{Ck-TGmY139yW#^{5i?0g6{O#y+rt^NU7b{ff=9U)pIraZn^u(}HiRfVF3q6e!V)ls5DoWa`r(egd-l?3767>iNI;?fj2CGG+(!%VT zqz1!;L2u1|o4sa%t%GC*NfW1xb9F)TVl5au4jeGg(=cGe@z{SPy|Qu(KU7$i<~F^Q z7#_*a12A}gF&vsf_kA@x&KW^WW>Qm|)FAux1L0MX%+1l*0{F@O9k^7`3}I1msP>Yh z?(Zv#Lq7!l%Zlht{EXkmaRfzff)qRVH*cekbK%&DaaHiWQGcAt2~!MeMkQa&^k5?? z?8Km?YFl9kU>K(7`g&#y`(7`_abHH*fj<=5AfAFw;pzm`bQrF^O)Ik%mfMaER|>;L zE_!)V;qjKi-3p}=1xGjpF@Qt+z_4)xZGVm_I3n6@p1@9!1`7>SyFzCa1aXWUjguh( z%{>SNiCvF%^sATI6Xi$&Vp~!v1v5t{+%d?IqNqqjLA;oZ1y_{b} zx(C(=+XR2(#g4jn@cn^JWbS*=4)JL)JQ%;Dc;oeL2g&Z{DyMHNo@Rv0? z65>}RQUM-dg>i1Nl6rF|eg1VXzqY=n{lgDVDe)<06zow{ZhuoI!zRc=w7RLayyL^k5{n{j%Lxcx@v%(cZ$kxT6~zOh z-Jb-s&UP$|mRU`G+1A%xpuj6J?+#~2tLN~)EJcH)7W3bqKi1YqPF`?-@>x!ZLGs+q zgqX)qca)2T2~Sc+YZO94=j)7h^tNdaPI@&lXHCnWzI{F$xQ)c^0^7&PU$ZJ(r~9Hw zj?Rb4;^ySdXPU|=hq|8J3z<-0%eG&7@sI5uAEKw5HqM$}$$8N@b30r`JP31~YY72O zuMG1U?^AhtczCw^nr?k}x)iJbb8^GDpG~A+k^*x{OwKRTb+neGF8x-i8rC&b%u9c*35eg4#QrFE%@3SD8;BJYFDR zlM44W5P$?=X}z=Wu8&wR$eq1GRKp-7kN{! z8Kz^F%lm@oU0NDj$7b{q8#j5%CT^_P?Zwjq;^L3~dhmcng>x@u|4U6Mz{THEQ#P3h z5Y6G!4d@PCW4|g^2UFmNlprX!Gh)rUifT`0XVj9e_7$|B zlzY@@cw-T@qPYdU_fs4q7zC(nT!DVZjUOQ(qeEs+`70VbNsS!`LO(|&?%t2aO~%Is z8yiD%y`IglrtFW$N9I)Sm&Pzi@5CV4*KqU*}f2fN(~TLlHL z=^t^;7r2&1+25P^;l%LrlB%@X$uC+OOK$ZaP(=yErRDO@c3q$x6|DJfS)6oFGM|4) zvvsiD9#Q|UNsLE;69fc)`R+NZvMRSpw{JLYH{B53_DT)a75rW7LjptoTFWdu!<>mZ zugL4=_k~kf;(WElN2-RJPW>IS-x;S|44Elkg+F9!*k7aPc?eGyNo8$g7D0!$nzMZlyo9MDbPN6_-aD+aFJ(g*RH1c- z6~QceT%%sytcpR_@Olt3GKiIPrQ9EY^5GK_b^3L(+*_sMP+q#0;BSWDivc;X&(>$f zv@8|R-ydpDx#O_{@)ya+j8R^7W^)o~SQkRW);^=O?k(?NsyFWr@_d`%9^0ekA#$D7 z`5_^`>q46-WP=Q0R0yU9--4Yem0s{qxC3V&e>^>edjYBvp4Q_hO2=hsWPWo%%$bVu zb7>*LUPX%wmI#qd8c*lcA6v;^NwuVF@@)^0D9Mv|FmyA%b63Hv26vo>Pr(Y*>!rBM zV*OyV^t-jD*IWEGxK3g$5=6vWC5PE1zTE~*EAkkBr-z&<9H}l(r%wDj+?%I0>W{xg zi}9j3GJ+F^shn%~Gw){3+#Ipz2oG%kbPhYDrg?xI5-&vdHuPIHaNhWU9TsUo9>*j% za;A1+mBjL80nyQJYC;y0g_HEh?bxed5d87;%j(wE$sVL`!ZX!)-=~*bk$;$qE5ZE< zYSx$J#`#}=!YN9&>g?sA!qd|9$Vl}r)fbV=5Ebm(;f6-egEIUwLdAKSZE4qbedzkf zPX@YH5v-qBhV;OBkE`D>$l+6vlury*0i;ZB4fF*fVa6+T>Ftp+luKGPcny|zKE#%-z*Fr?U{Qvhcf)4u%f!eb zXARgD7ugEo^LorZyh!SI1nmC!%JlK&F~=g+DUDBRp(#Q|VknT@D^az)4m~QBVP8n- zbhH||eLXRT0rWRM@rKrE_6uW!&1yTCp!G zf^JZH9nWcvfU6X%aJ@1yx>bf1<%MNJ(fBwp^X}AkW)E_}dDNd*$xO#QOierWJexUp z=;i&)(M?@LX@wgWe6<$_4Xc!dW5)%O&cb*S5j{MYkYrX$pV{vShUNbXM0h6Lua6oq9UIEwA zzeh|};*n6oqI5YXx@=@x9Q&uN2+MHo6U(}G2TvFM#~!Pp zdq!@ZM*^*1A6xnD;MG?}uUe~19_`E0`=bvyif#xb&5r~Y7k+MIYWa%qwwVu(*jujY z*QaCBQP2{1%%8HL79F^aDsBb}dGVz*s&SmXK0eQ%?gxi{nd=7@h9 zqB;KF!n-|wd~oWCVfPwz1of!w)zzvH?{}CtP}0xT$IkR6MLIN$bn~?Z{-szL{=AR9qL|aPemo8rcUQ zSb9v{a=Mx%=(^i#h|aA-vw&j~K3nS|QIkJi{=%J?SW5KJ^PSATRt`4x<{a4<_kR0g z4fk?~hTwNKEAs1B?)s8O>ZCRcn-C|F;u@zAKAGLy+1cKsQsPlK z5>S_WNgo?u$q*{s^{L(c$AgUC&W_lwqh2AWM*?c}z#cU9teP%kY5BO!2M4=j@;r+NI)St zthFUL`mtv!kC4sj&L%I!Sgy9D%PFRW)So{+P3$KHrF+{~|JW5L<*K@dlE=If8++A6 zCs=Aueq;Tt&BfVZN>Ai_T!r}dFyQ&B!hmb)CSsXdxhF7}_fSKUSe>>cHS&TXbYPQA zGtv=b(zO36_8dxkXawC5t`)g9b&#r2FG3zY16vOq$>R~TFyZHETiLNIPI^`MslB}^ zGL8$%=Ff61{PC(Qc%sZU_IJ}J7tU{3gX=C1m2RcI$NkjwQ`R9T?}6NUv;v$B59bxH zEfjlThH5H#2fo9E41fs3>tk;gNdM9-1vJVp=axxWiQ`{}0gbzJW!%e>)A!u-g zvCO`YMm(EW&QNE{f25o(Mfz9vH*a9IpE{n#Ndf9JB#^K1$K|yABvi@OL6F<~6YBLa z)jbl+?oNQM!y<_ELv-Tr_@~)R+*iy`J^g#xnjO*!6`RJI#mu+=Pmgoc@SFuit`3IM zG<0pil-Nf5|8G93zmjld`-H=EjVdb;QlxsL$2!Nc;}{xd9o#^)kbb!@S{!0?N-bn# zROo9AgL4_d*KftD@nfl*`OdukyeIHv&e~c?gB+MgJh5_mBj4v*(foBIAv39+A}0tr z-myn9sQi(&_zJuWCg{&Zggx_U@IgE&Z+zG|+AP=f9IM5G0sDf&_|wj2`VFGB@Hq_8p44@w z>|cjgEGALes>_LI&0~$&*Qfo6X2RB#_w$?RWA3~!$i#Q5CS9^!41VXg`T&&HZTc3M zvY^kq1v(x{zJ$Q^!Xj4D177yZ;*xzG&N6d1K#n1K$q4Dx6Iz?!1mUry+dh3_q#n0YVvCmpB@miu}((G?^Ynb`tviyw5|3PM;E`JQ7hI$S30hb!5mfG>#;%Lh@ z`q!|_wgOPHIabfKaOl9XrEC5Xt{*xnEXS>pCFi~|tWu#Hev^GeLon3m&#rOKDiYyy zkay>#fdZr<(YF%uWo0n^P90D0J8+1%niu#&64Q@KGj@E6A;Cp0tpTN7Sx74RX6O#! zG!#y6M7|-l%vFH>$aqKHX`cmeh)J?1tqweZGm|x={Zawb@jQq#ONunD z=EyZ8mk=@S#Ui#xW-4^fj--~b3wg}Z4+GACGdhNSKmxI}k<_qC2$k9=Jgp>1NgoXg zpqTxAuFI7^hk1S_FU|O>K|C-(6M-Ix!>@e^q2W-PN6lJ(ixqcV&;hI_bPmn~st?+q z16neF%m6PwdO#bDaC-p_cbjrSq z5L~0~_MsZ}ub|8YV8;XRV}PqU&5>UK$Hfgz#eQ`FL-|}mw1G@1|0R4KP8gvy+hn~sf? zVfP9@$Ppopf~_v?(&20I9)Qc|g)mG?VArvYU>2UfSS2`LY2f_D%i64F<{j-t7Hr+6 z8j2H`(~ard=mwN^Z_=|C4Dv^bU|NK4p;URgG(8y5^EQi)3GLoE&+-o9D?IA_|Tml$+i zcex5s+xe_Lw*4r ziW_H+F4n9rx9FZ=9&8Tedi`K>^W8SfG<}W(4 zkk#6YmZ&pv9{v=7L7fRXe}3Cu)H47j38)e+`Y(e^K#9ju7r_ct$tX~=AO&Uilq zN=ntW7ZaB}((os%CHpNfn;`;>u{~s61XyF~0j36Cflw$kCNV|`#l8?y#*Y(dxOGBa zb|yJe+KbSYCe6$+{H>yI-d>FJqpvFvU1am}XbjQsg{ zyT%;KJ8>v?Y!zbPcCsj(khScWs?U?wMnXw|+mgg&bm{R*Z`hnT?&i}B=>1RG-9ZLI zmfjyahn7t%8&*DA-}mIs!l6gN0Lp9d4NiX=zfM7x0TXgzA3g=BgA)mhGOCKP-uJN3 z_};--7lFw>5Et$5V=7niVw#cb1T+8FW;1WofW0XewD5jL)?2MLCzoje#y~WHHX{>T z_7zDQ)4;aA%>i8R$F^*O4Ieda8Ge(V!Dt5?T-`p%+Gl{R5mjnjmp`wFnqpX?jM#fyX-Lv?*-py)HEk#69iNjk7#W2be26YtWmKQO1w;_ad)uMR@Hqaod-RoKMDl-- zm>H&1&w}zY3Y#V_ECHRabIC=(TM3ZBP{9|<4%o`x7UV6Oc>|0r^cF-8U%f{Er2JNJn=0kCJ3MVZbp;r_v&2@O5KWcvSvj?7>JZ-fYGd zjRm7UAd%Wc@BD}5%0l@8M7$q(hNZ6PR}$O78T?C@u7H=O*2bj}+P%zBTasX9j8_sSI2pNIJ%6vX`dtv>oAMl{z;svQgfJSt$Ne+Q4svbd@WWnYCL5gG@r-dqO{w)g~o*DZ+|MfXTVRAW?VxJr!8tjl`LI! z!EaTS^0ZkMk$!wJ?4S`kxzIzbM!Wzwoqdb3E<}Q^P$eE?r7L^`^DhZR(3p4Ts!7VF4KNRMT*!gmQph3$S13 zFIaQ@U%oYenxclfklQ#p(Q!0k{HJ7pBX0tfZH4}-E~(KH!lg2V{0TSC0z8Ez-9rRT zoBNe58az;c;j6S|UXxji149OZAy;bKlc3!y15A&LsLNS{U6xG4?3DlS_j%WkjH1mT z)JRA#oJr@ztrbd1qG9R?F&6bATpbXTwG;^r*7GtDye@%ejaCCF84neE&Fd4^XWNrh zqks)_xl;p~QHUqF{tuvYDp|!`fdsuuzAz(ViFcDgU7)cq{1tQGmSoga3o?#+ z)Y)kyF~wN2C@HopBDIF;JNCXt-0N==Qk*)4u{G00+kzFM}oH6qFZKZe&<^i(=9 zn;k*UP;M+*ShcW|%rlP-J#$M*4WlQ(~wKdEwdy=pcEWD8rkHR-1IWLOb(*_} zxn4z2w@G^{SFUjAo8>%&+U)}I5vghE#MB>4>GweiiCGS_yFd~Ut zh|X`SPZt>!?iZeyh}+VWCv-*8Ev#HfpkS6YdEd3|&2+-isN+xmEJLn49{sQhR2q8q z?y8%#W`NaX(eP9F21!uF*JilPvv*(jN!nxmxJ*^>JEZ5jDO7~a**NaVbV0zj*m!pVRK}^$ zvwL3Y>vRjxaUKO>|4J?5*WK*bdX^2VHrB6-k*(Uuj{PO|vGJMbMSbkC_0T7GMOG3^ zhCf534Ap2Zv~QeE@(YwF^mRfn$Lpo0RrwB%dOZhQ7)?T+hd?g-qw#~k}5TDpBxmqfZ3G=x`93UfHQ6IPNLI2~KFavIN9=TUf~CmP~C>c6c^ zpONER5#Bkr%Mo(hAvf1N$J(I*+j_s>F$-Cd(nDd00r}|Id%4#ooO0&zgn-$bHs$yZ zEx#ROrdu}HhQkkTgGwbwAny8m(Tb37{LDTiG=gWqtV~~*F^StsrhGT~GtP|nkvA0Y z&H(n>ef`H_{o(_1^t@tA0Ql~vNMC5!3$A?h^k(!&Qx>Q@Zo)&3*&k07f3)n|AJH|O z*_gNoL{z#B(kR{7J^1NJ9+eKRUmWRnLWg?X>M)z~=1i6zuuX3KYM`nRO2Nlb+zmEf zYF4Qc8P_Zq&u0R8W7Pp1ZTvILwE|#}Nb#GPWxWVou&g)E#9q+f0rH z^6u9efk07G5MQ|?Hs=2Xe`J|#10Z@_Hw$ET~*dNLvEUboL~`H_|kNb{g|7Ur$A z)y6MgGL>4r^~3is0!N?`_44~lWPc-O3bu5r_py#&KatP!L=}tPRU9->tv?bVPsdxc zF{|*qUFY}b9RD2CfnHNjNx(mn1;!-)gUiW;k8-&m2&m5 zL+Vpeb4jB_cXnTECTrF+!;28-GyaaeC97>fDV~f0-xBPzD-$0RF00_@ zBz7yb9e;9GgDWO>IIx&z0{)d68rsgkTfBm_C8oHtyU(0K6j{I5i+5iw6~(HQHr+~Q zk8c4xFV$?lPl{zfZn0buvbY&4B@WD&N3ELjDdDhE)diK#AC*o#$l7{McJ1 z>_~1{G4fHGc~&Gg``xV{=Ob5tJ%ijsdXNG{9ogF@KV_iyFxVg=gs$Mqjy+*qFGU`0 zf%qO`j*NKom1c6iYid@RyzoRUL4ab<4qrXvRr|+XgR8b1)_IZ%uee2`JA-?t$7#6u z_*vNb^IL>HqNPEO|6s~8@&D<-R%ltl{Iv#`qERlcblO|y(|#F#D6jTavLkzMSiC-V zV^3{5=j>s8aqN4@fwvJGHWiFiqa%$z&ty&Y+;apwfkznFj%LG`-F>G?f^>~PO_{8q zH}X3kUSfCS3bAfhg&SUqr^4G<_rZ6M8r7-bJjyeIVum!xdhHmV1Sg|I9D6HD-tf?q zqubaV(K;hZZzAS?WL%O4xio7Jm0q1NsU%Ehhdd5D74lt0v{8nwfd}W&KkNM<#Gc)4 zc$Os?Ribjfd;76D3c#Vs1n^XGK?sY2p#-=Q=d%1$`J~E0-&>Vv38o| zkeo2)TkN8J+#V{HKdz+~eiQs)pb7mgfFNKinVlQ3jwS?yylpMA`SA@8*^>QFv3MrJRgGV^5+Vd?3IF) zNs{1krt&RNzDYcv$*M+b9bNgqy&BlYEF#JM^jcOn#sIqv6Ma3u^P?8;E26nCO1`T8 zbdf%}d>`btDpbTmB?jgzQG>gb7dANR3#sp0>=>3Ab?4D|TD-UW7LRY{^O?u9Irg)Q Y&Vm^Qt8(o?uo#GJ=VDv2m3r#G0EU83a{vGU literal 0 HcmV?d00001 diff --git a/ruty/img/mails.png b/ruty/img/mails.png new file mode 100644 index 0000000000000000000000000000000000000000..3eb4e731a8692681bac506ac867563369d113266 GIT binary patch literal 16186 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 AvH$=8 literal 0 HcmV?d00001 diff --git a/ruty/img/notepad.png b/ruty/img/notepad.png new file mode 100644 index 0000000000000000000000000000000000000000..15e80b1799b652313a13aba8aeeaa83194d895a0 GIT binary patch literal 14615 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 Xu^4&L(*D>i1b(c{Y;n&|`CR{hbpqhX literal 0 HcmV?d00001 diff --git a/ruty/img/todo.png b/ruty/img/todo.png new file mode 100644 index 0000000000000000000000000000000000000000..28c4c5184c2458a34ce9b0f3198bd867d8deaba9 GIT binary patch literal 6903 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 || title %COMSPEC% & "%_prog%" "%dp0%\..\mime\cli.js" %* diff --git a/ruty/js/node_modules/.bin/mime.ps1 b/ruty/js/node_modules/.bin/mime.ps1 new file mode 100644 index 0000000..2222f40 --- /dev/null +++ b/ruty/js/node_modules/.bin/mime.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../mime/cli.js" $args + } else { + & "$basedir/node$exe" "$basedir/../mime/cli.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../mime/cli.js" $args + } else { + & "node$exe" "$basedir/../mime/cli.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/ruty/js/node_modules/.package-lock.json b/ruty/js/node_modules/.package-lock.json new file mode 100644 index 0000000..5e7f140 --- /dev/null +++ b/ruty/js/node_modules/.package-lock.json @@ -0,0 +1,595 @@ +{ + "name": "ruty", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + } + } +} diff --git a/ruty/js/node_modules/accepts/HISTORY.md b/ruty/js/node_modules/accepts/HISTORY.md new file mode 100644 index 0000000..cb5990c --- /dev/null +++ b/ruty/js/node_modules/accepts/HISTORY.md @@ -0,0 +1,243 @@ +1.3.8 / 2022-02-02 +================== + + * deps: mime-types@~2.1.34 + - deps: mime-db@~1.51.0 + * deps: negotiator@0.6.3 + +1.3.7 / 2019-04-29 +================== + + * deps: negotiator@0.6.2 + - Fix sorting charset, encoding, and language with extra parameters + +1.3.6 / 2019-04-28 +================== + + * deps: mime-types@~2.1.24 + - deps: mime-db@~1.40.0 + +1.3.5 / 2018-02-28 +================== + + * deps: mime-types@~2.1.18 + - deps: mime-db@~1.33.0 + +1.3.4 / 2017-08-22 +================== + + * deps: mime-types@~2.1.16 + - deps: mime-db@~1.29.0 + +1.3.3 / 2016-05-02 +================== + + * deps: mime-types@~2.1.11 + - deps: mime-db@~1.23.0 + * deps: negotiator@0.6.1 + - perf: improve `Accept` parsing speed + - perf: improve `Accept-Charset` parsing speed + - perf: improve `Accept-Encoding` parsing speed + - perf: improve `Accept-Language` parsing speed + +1.3.2 / 2016-03-08 +================== + + * deps: mime-types@~2.1.10 + - Fix extension of `application/dash+xml` + - Update primary extension for `audio/mp4` + - deps: mime-db@~1.22.0 + +1.3.1 / 2016-01-19 +================== + + * deps: mime-types@~2.1.9 + - deps: mime-db@~1.21.0 + +1.3.0 / 2015-09-29 +================== + + * deps: mime-types@~2.1.7 + - deps: mime-db@~1.19.0 + * deps: negotiator@0.6.0 + - Fix including type extensions in parameters in `Accept` parsing + - Fix parsing `Accept` parameters with quoted equals + - Fix parsing `Accept` parameters with quoted semicolons + - Lazy-load modules from main entry point + - perf: delay type concatenation until needed + - perf: enable strict mode + - perf: hoist regular expressions + - perf: remove closures getting spec properties + - perf: remove a closure from media type parsing + - perf: remove property delete from media type parsing + +1.2.13 / 2015-09-06 +=================== + + * deps: mime-types@~2.1.6 + - deps: mime-db@~1.18.0 + +1.2.12 / 2015-07-30 +=================== + + * deps: mime-types@~2.1.4 + - deps: mime-db@~1.16.0 + +1.2.11 / 2015-07-16 +=================== + + * deps: mime-types@~2.1.3 + - deps: mime-db@~1.15.0 + +1.2.10 / 2015-07-01 +=================== + + * deps: mime-types@~2.1.2 + - deps: mime-db@~1.14.0 + +1.2.9 / 2015-06-08 +================== + + * deps: mime-types@~2.1.1 + - perf: fix deopt during mapping + +1.2.8 / 2015-06-07 +================== + + * deps: mime-types@~2.1.0 + - deps: mime-db@~1.13.0 + * perf: avoid argument reassignment & argument slice + * perf: avoid negotiator recursive construction + * perf: enable strict mode + * perf: remove unnecessary bitwise operator + +1.2.7 / 2015-05-10 +================== + + * deps: negotiator@0.5.3 + - Fix media type parameter matching to be case-insensitive + +1.2.6 / 2015-05-07 +================== + + * deps: mime-types@~2.0.11 + - deps: mime-db@~1.9.1 + * deps: negotiator@0.5.2 + - Fix comparing media types with quoted values + - Fix splitting media types with quoted commas + +1.2.5 / 2015-03-13 +================== + + * deps: mime-types@~2.0.10 + - deps: mime-db@~1.8.0 + +1.2.4 / 2015-02-14 +================== + + * Support Node.js 0.6 + * deps: mime-types@~2.0.9 + - deps: mime-db@~1.7.0 + * deps: negotiator@0.5.1 + - Fix preference sorting to be stable for long acceptable lists + +1.2.3 / 2015-01-31 +================== + + * deps: mime-types@~2.0.8 + - deps: mime-db@~1.6.0 + +1.2.2 / 2014-12-30 +================== + + * deps: mime-types@~2.0.7 + - deps: mime-db@~1.5.0 + +1.2.1 / 2014-12-30 +================== + + * deps: mime-types@~2.0.5 + - deps: mime-db@~1.3.1 + +1.2.0 / 2014-12-19 +================== + + * deps: negotiator@0.5.0 + - Fix list return order when large accepted list + - Fix missing identity encoding when q=0 exists + - Remove dynamic building of Negotiator class + +1.1.4 / 2014-12-10 +================== + + * deps: mime-types@~2.0.4 + - deps: mime-db@~1.3.0 + +1.1.3 / 2014-11-09 +================== + + * deps: mime-types@~2.0.3 + - deps: mime-db@~1.2.0 + +1.1.2 / 2014-10-14 +================== + + * deps: negotiator@0.4.9 + - Fix error when media type has invalid parameter + +1.1.1 / 2014-09-28 +================== + + * deps: mime-types@~2.0.2 + - deps: mime-db@~1.1.0 + * deps: negotiator@0.4.8 + - Fix all negotiations to be case-insensitive + - Stable sort preferences of same quality according to client order + +1.1.0 / 2014-09-02 +================== + + * update `mime-types` + +1.0.7 / 2014-07-04 +================== + + * Fix wrong type returned from `type` when match after unknown extension + +1.0.6 / 2014-06-24 +================== + + * deps: negotiator@0.4.7 + +1.0.5 / 2014-06-20 +================== + + * fix crash when unknown extension given + +1.0.4 / 2014-06-19 +================== + + * use `mime-types` + +1.0.3 / 2014-06-11 +================== + + * deps: negotiator@0.4.6 + - Order by specificity when quality is the same + +1.0.2 / 2014-05-29 +================== + + * Fix interpretation when header not in request + * deps: pin negotiator@0.4.5 + +1.0.1 / 2014-01-18 +================== + + * Identity encoding isn't always acceptable + * deps: negotiator@~0.4.0 + +1.0.0 / 2013-12-27 +================== + + * Genesis diff --git a/ruty/js/node_modules/accepts/LICENSE b/ruty/js/node_modules/accepts/LICENSE new file mode 100644 index 0000000..0616607 --- /dev/null +++ b/ruty/js/node_modules/accepts/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015 Douglas Christopher Wilson + +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/ruty/js/node_modules/accepts/README.md b/ruty/js/node_modules/accepts/README.md new file mode 100644 index 0000000..82680c5 --- /dev/null +++ b/ruty/js/node_modules/accepts/README.md @@ -0,0 +1,140 @@ +# accepts + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][github-actions-ci-image]][github-actions-ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). +Extracted from [koa](https://www.npmjs.com/package/koa) for general use. + +In addition to negotiator, it allows: + +- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` + as well as `('text/html', 'application/json')`. +- Allows type shorthands such as `json`. +- Returns `false` when no types match +- Treats non-existent headers as `*` + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install accepts +``` + +## API + +```js +var accepts = require('accepts') +``` + +### accepts(req) + +Create a new `Accepts` object for the given `req`. + +#### .charset(charsets) + +Return the first accepted charset. If nothing in `charsets` is accepted, +then `false` is returned. + +#### .charsets() + +Return the charsets that the request accepts, in the order of the client's +preference (most preferred first). + +#### .encoding(encodings) + +Return the first accepted encoding. If nothing in `encodings` is accepted, +then `false` is returned. + +#### .encodings() + +Return the encodings that the request accepts, in the order of the client's +preference (most preferred first). + +#### .language(languages) + +Return the first accepted language. If nothing in `languages` is accepted, +then `false` is returned. + +#### .languages() + +Return the languages that the request accepts, in the order of the client's +preference (most preferred first). + +#### .type(types) + +Return the first accepted type (and it is returned as the same text as what +appears in the `types` array). If nothing in `types` is accepted, then `false` +is returned. + +The `types` array can contain full MIME types or file extensions. Any value +that is not a full MIME types is passed to `require('mime-types').lookup`. + +#### .types() + +Return the types that the request accepts, in the order of the client's +preference (most preferred first). + +## Examples + +### Simple type negotiation + +This simple example shows how to use `accepts` to return a different typed +respond body based on what the client wants to accept. The server lists it's +preferences in order and will get back the best match between the client and +server. + +```js +var accepts = require('accepts') +var http = require('http') + +function app (req, res) { + var accept = accepts(req) + + // the order of this list is significant; should be server preferred order + switch (accept.type(['json', 'html'])) { + case 'json': + res.setHeader('Content-Type', 'application/json') + res.write('{"hello":"world!"}') + break + case 'html': + res.setHeader('Content-Type', 'text/html') + res.write('hello, world!') + break + default: + // the fallback is text/plain, so no need to specify it above + res.setHeader('Content-Type', 'text/plain') + res.write('hello, world!') + break + } + + res.end() +} + +http.createServer(app).listen(3000) +``` + +You can test this out with the cURL program: +```sh +curl -I -H'Accept: text/html' http://localhost:3000/ +``` + +## License + +[MIT](LICENSE) + +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/accepts/master +[coveralls-url]: https://coveralls.io/r/jshttp/accepts?branch=master +[github-actions-ci-image]: https://badgen.net/github/checks/jshttp/accepts/master?label=ci +[github-actions-ci-url]: https://github.com/jshttp/accepts/actions/workflows/ci.yml +[node-version-image]: https://badgen.net/npm/node/accepts +[node-version-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/accepts +[npm-url]: https://npmjs.org/package/accepts +[npm-version-image]: https://badgen.net/npm/v/accepts diff --git a/ruty/js/node_modules/accepts/index.js b/ruty/js/node_modules/accepts/index.js new file mode 100644 index 0000000..e9b2f63 --- /dev/null +++ b/ruty/js/node_modules/accepts/index.js @@ -0,0 +1,238 @@ +/*! + * accepts + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var Negotiator = require('negotiator') +var mime = require('mime-types') + +/** + * Module exports. + * @public + */ + +module.exports = Accepts + +/** + * Create a new Accepts object for the given req. + * + * @param {object} req + * @public + */ + +function Accepts (req) { + if (!(this instanceof Accepts)) { + return new Accepts(req) + } + + this.headers = req.headers + this.negotiator = new Negotiator(req) +} + +/** + * Check if the given `type(s)` is acceptable, returning + * the best match when true, otherwise `undefined`, in which + * case you should respond with 406 "Not Acceptable". + * + * The `type` value may be a single mime type string + * such as "application/json", the extension name + * such as "json" or an array `["json", "html", "text/plain"]`. When a list + * or array is given the _best_ match, if any is returned. + * + * Examples: + * + * // Accept: text/html + * this.types('html'); + * // => "html" + * + * // Accept: text/*, application/json + * this.types('html'); + * // => "html" + * this.types('text/html'); + * // => "text/html" + * this.types('json', 'text'); + * // => "json" + * this.types('application/json'); + * // => "application/json" + * + * // Accept: text/*, application/json + * this.types('image/png'); + * this.types('png'); + * // => undefined + * + * // Accept: text/*;q=.5, application/json + * this.types(['html', 'json']); + * this.types('html', 'json'); + * // => "json" + * + * @param {String|Array} types... + * @return {String|Array|Boolean} + * @public + */ + +Accepts.prototype.type = +Accepts.prototype.types = function (types_) { + var types = types_ + + // support flattened arguments + if (types && !Array.isArray(types)) { + types = new Array(arguments.length) + for (var i = 0; i < types.length; i++) { + types[i] = arguments[i] + } + } + + // no types, return all requested types + if (!types || types.length === 0) { + return this.negotiator.mediaTypes() + } + + // no accept header, return first given type + if (!this.headers.accept) { + return types[0] + } + + var mimes = types.map(extToMime) + var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)) + var first = accepts[0] + + return first + ? types[mimes.indexOf(first)] + : false +} + +/** + * Return accepted encodings or best fit based on `encodings`. + * + * Given `Accept-Encoding: gzip, deflate` + * an array sorted by quality is returned: + * + * ['gzip', 'deflate'] + * + * @param {String|Array} encodings... + * @return {String|Array} + * @public + */ + +Accepts.prototype.encoding = +Accepts.prototype.encodings = function (encodings_) { + var encodings = encodings_ + + // support flattened arguments + if (encodings && !Array.isArray(encodings)) { + encodings = new Array(arguments.length) + for (var i = 0; i < encodings.length; i++) { + encodings[i] = arguments[i] + } + } + + // no encodings, return all requested encodings + if (!encodings || encodings.length === 0) { + return this.negotiator.encodings() + } + + return this.negotiator.encodings(encodings)[0] || false +} + +/** + * Return accepted charsets or best fit based on `charsets`. + * + * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5` + * an array sorted by quality is returned: + * + * ['utf-8', 'utf-7', 'iso-8859-1'] + * + * @param {String|Array} charsets... + * @return {String|Array} + * @public + */ + +Accepts.prototype.charset = +Accepts.prototype.charsets = function (charsets_) { + var charsets = charsets_ + + // support flattened arguments + if (charsets && !Array.isArray(charsets)) { + charsets = new Array(arguments.length) + for (var i = 0; i < charsets.length; i++) { + charsets[i] = arguments[i] + } + } + + // no charsets, return all requested charsets + if (!charsets || charsets.length === 0) { + return this.negotiator.charsets() + } + + return this.negotiator.charsets(charsets)[0] || false +} + +/** + * Return accepted languages or best fit based on `langs`. + * + * Given `Accept-Language: en;q=0.8, es, pt` + * an array sorted by quality is returned: + * + * ['es', 'pt', 'en'] + * + * @param {String|Array} langs... + * @return {Array|String} + * @public + */ + +Accepts.prototype.lang = +Accepts.prototype.langs = +Accepts.prototype.language = +Accepts.prototype.languages = function (languages_) { + var languages = languages_ + + // support flattened arguments + if (languages && !Array.isArray(languages)) { + languages = new Array(arguments.length) + for (var i = 0; i < languages.length; i++) { + languages[i] = arguments[i] + } + } + + // no languages, return all requested languages + if (!languages || languages.length === 0) { + return this.negotiator.languages() + } + + return this.negotiator.languages(languages)[0] || false +} + +/** + * Convert extnames to mime. + * + * @param {String} type + * @return {String} + * @private + */ + +function extToMime (type) { + return type.indexOf('/') === -1 + ? mime.lookup(type) + : type +} + +/** + * Check if mime is valid. + * + * @param {String} type + * @return {String} + * @private + */ + +function validMime (type) { + return typeof type === 'string' +} diff --git a/ruty/js/node_modules/accepts/package.json b/ruty/js/node_modules/accepts/package.json new file mode 100644 index 0000000..0f2d15d --- /dev/null +++ b/ruty/js/node_modules/accepts/package.json @@ -0,0 +1,47 @@ +{ + "name": "accepts", + "description": "Higher-level content negotiation", + "version": "1.3.8", + "contributors": [ + "Douglas Christopher Wilson ", + "Jonathan Ong (http://jongleberry.com)" + ], + "license": "MIT", + "repository": "jshttp/accepts", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "devDependencies": { + "deep-equal": "1.0.1", + "eslint": "7.32.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "4.3.1", + "eslint-plugin-standard": "4.1.0", + "mocha": "9.2.0", + "nyc": "15.1.0" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec --check-leaks --bail test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + }, + "keywords": [ + "content", + "negotiation", + "accept", + "accepts" + ] +} diff --git a/ruty/js/node_modules/array-flatten/LICENSE b/ruty/js/node_modules/array-flatten/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/ruty/js/node_modules/array-flatten/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.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/ruty/js/node_modules/array-flatten/README.md b/ruty/js/node_modules/array-flatten/README.md new file mode 100644 index 0000000..91fa5b6 --- /dev/null +++ b/ruty/js/node_modules/array-flatten/README.md @@ -0,0 +1,43 @@ +# Array Flatten + +[![NPM version][npm-image]][npm-url] +[![NPM downloads][downloads-image]][downloads-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] + +> Flatten an array of nested arrays into a single flat array. Accepts an optional depth. + +## Installation + +``` +npm install array-flatten --save +``` + +## Usage + +```javascript +var flatten = require('array-flatten') + +flatten([1, [2, [3, [4, [5], 6], 7], 8], 9]) +//=> [1, 2, 3, 4, 5, 6, 7, 8, 9] + +flatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2) +//=> [1, 2, 3, [4, [5], 6], 7, 8, 9] + +(function () { + flatten(arguments) //=> [1, 2, 3] +})(1, [2, 3]) +``` + +## License + +MIT + +[npm-image]: https://img.shields.io/npm/v/array-flatten.svg?style=flat +[npm-url]: https://npmjs.org/package/array-flatten +[downloads-image]: https://img.shields.io/npm/dm/array-flatten.svg?style=flat +[downloads-url]: https://npmjs.org/package/array-flatten +[travis-image]: https://img.shields.io/travis/blakeembrey/array-flatten.svg?style=flat +[travis-url]: https://travis-ci.org/blakeembrey/array-flatten +[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat +[coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master diff --git a/ruty/js/node_modules/array-flatten/array-flatten.js b/ruty/js/node_modules/array-flatten/array-flatten.js new file mode 100644 index 0000000..089117b --- /dev/null +++ b/ruty/js/node_modules/array-flatten/array-flatten.js @@ -0,0 +1,64 @@ +'use strict' + +/** + * Expose `arrayFlatten`. + */ +module.exports = arrayFlatten + +/** + * Recursive flatten function with depth. + * + * @param {Array} array + * @param {Array} result + * @param {Number} depth + * @return {Array} + */ +function flattenWithDepth (array, result, depth) { + for (var i = 0; i < array.length; i++) { + var value = array[i] + + if (depth > 0 && Array.isArray(value)) { + flattenWithDepth(value, result, depth - 1) + } else { + result.push(value) + } + } + + return result +} + +/** + * Recursive flatten function. Omitting depth is slightly faster. + * + * @param {Array} array + * @param {Array} result + * @return {Array} + */ +function flattenForever (array, result) { + for (var i = 0; i < array.length; i++) { + var value = array[i] + + if (Array.isArray(value)) { + flattenForever(value, result) + } else { + result.push(value) + } + } + + return result +} + +/** + * Flatten an array, with the ability to define a depth. + * + * @param {Array} array + * @param {Number} depth + * @return {Array} + */ +function arrayFlatten (array, depth) { + if (depth == null) { + return flattenForever(array, []) + } + + return flattenWithDepth(array, [], depth) +} diff --git a/ruty/js/node_modules/array-flatten/package.json b/ruty/js/node_modules/array-flatten/package.json new file mode 100644 index 0000000..1a24e2a --- /dev/null +++ b/ruty/js/node_modules/array-flatten/package.json @@ -0,0 +1,39 @@ +{ + "name": "array-flatten", + "version": "1.1.1", + "description": "Flatten an array of nested arrays into a single flat array", + "main": "array-flatten.js", + "files": [ + "array-flatten.js", + "LICENSE" + ], + "scripts": { + "test": "istanbul cover _mocha -- -R spec" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/array-flatten.git" + }, + "keywords": [ + "array", + "flatten", + "arguments", + "depth" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/array-flatten/issues" + }, + "homepage": "https://github.com/blakeembrey/array-flatten", + "devDependencies": { + "istanbul": "^0.3.13", + "mocha": "^2.2.4", + "pre-commit": "^1.0.7", + "standard": "^3.7.3" + } +} diff --git a/ruty/js/node_modules/async/.travis.yml b/ruty/js/node_modules/async/.travis.yml new file mode 100644 index 0000000..6064ca0 --- /dev/null +++ b/ruty/js/node_modules/async/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - "0.10" + - "0.12" + - "iojs" diff --git a/ruty/js/node_modules/async/LICENSE b/ruty/js/node_modules/async/LICENSE new file mode 100644 index 0000000..8f29698 --- /dev/null +++ b/ruty/js/node_modules/async/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2010-2014 Caolan McMahon + +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/ruty/js/node_modules/async/README.md b/ruty/js/node_modules/async/README.md new file mode 100644 index 0000000..6cfb922 --- /dev/null +++ b/ruty/js/node_modules/async/README.md @@ -0,0 +1,1647 @@ +# Async.js + +[![Build Status via Travis CI](https://travis-ci.org/caolan/async.svg?branch=master)](https://travis-ci.org/caolan/async) + + +Async is a utility module which provides straight-forward, powerful functions +for working with asynchronous JavaScript. Although originally designed for +use with [Node.js](http://nodejs.org) and installable via `npm install async`, +it can also be used directly in the browser. + +Async is also installable via: + +- [bower](http://bower.io/): `bower install async` +- [component](https://github.com/component/component): `component install + caolan/async` +- [jam](http://jamjs.org/): `jam install async` +- [spm](http://spmjs.io/): `spm install async` + +Async provides around 20 functions that include the usual 'functional' +suspects (`map`, `reduce`, `filter`, `each`…) as well as some common patterns +for asynchronous control flow (`parallel`, `series`, `waterfall`…). All these +functions assume you follow the Node.js convention of providing a single +callback as the last argument of your `async` function. + + +## Quick Examples + +```javascript +async.map(['file1','file2','file3'], fs.stat, function(err, results){ + // results is now an array of stats for each file +}); + +async.filter(['file1','file2','file3'], fs.exists, function(results){ + // results now equals an array of the existing files +}); + +async.parallel([ + function(){ ... }, + function(){ ... } +], callback); + +async.series([ + function(){ ... }, + function(){ ... } +]); +``` + +There are many more functions available so take a look at the docs below for a +full list. This module aims to be comprehensive, so if you feel anything is +missing please create a GitHub issue for it. + +## Common Pitfalls + +### Binding a context to an iterator + +This section is really about `bind`, not about `async`. If you are wondering how to +make `async` execute your iterators in a given context, or are confused as to why +a method of another library isn't working as an iterator, study this example: + +```js +// Here is a simple object with an (unnecessarily roundabout) squaring method +var AsyncSquaringLibrary = { + squareExponent: 2, + square: function(number, callback){ + var result = Math.pow(number, this.squareExponent); + setTimeout(function(){ + callback(null, result); + }, 200); + } +}; + +async.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){ + // result is [NaN, NaN, NaN] + // This fails because the `this.squareExponent` expression in the square + // function is not evaluated in the context of AsyncSquaringLibrary, and is + // therefore undefined. +}); + +async.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){ + // result is [1, 4, 9] + // With the help of bind we can attach a context to the iterator before + // passing it to async. Now the square function will be executed in its + // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent` + // will be as expected. +}); +``` + +## Download + +The source is available for download from +[GitHub](http://github.com/caolan/async). +Alternatively, you can install using Node Package Manager (`npm`): + + npm install async + +__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed + +## In the Browser + +So far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. + +Usage: + +```html + + +``` + +## Documentation + +### Collections + +* [`each`](#each) +* [`eachSeries`](#eachSeries) +* [`eachLimit`](#eachLimit) +* [`map`](#map) +* [`mapSeries`](#mapSeries) +* [`mapLimit`](#mapLimit) +* [`filter`](#filter) +* [`filterSeries`](#filterSeries) +* [`reject`](#reject) +* [`rejectSeries`](#rejectSeries) +* [`reduce`](#reduce) +* [`reduceRight`](#reduceRight) +* [`detect`](#detect) +* [`detectSeries`](#detectSeries) +* [`sortBy`](#sortBy) +* [`some`](#some) +* [`every`](#every) +* [`concat`](#concat) +* [`concatSeries`](#concatSeries) + +### Control Flow + +* [`series`](#seriestasks-callback) +* [`parallel`](#parallel) +* [`parallelLimit`](#parallellimittasks-limit-callback) +* [`whilst`](#whilst) +* [`doWhilst`](#doWhilst) +* [`until`](#until) +* [`doUntil`](#doUntil) +* [`forever`](#forever) +* [`waterfall`](#waterfall) +* [`compose`](#compose) +* [`seq`](#seq) +* [`applyEach`](#applyEach) +* [`applyEachSeries`](#applyEachSeries) +* [`queue`](#queue) +* [`priorityQueue`](#priorityQueue) +* [`cargo`](#cargo) +* [`auto`](#auto) +* [`retry`](#retry) +* [`iterator`](#iterator) +* [`apply`](#apply) +* [`nextTick`](#nextTick) +* [`times`](#times) +* [`timesSeries`](#timesSeries) + +### Utils + +* [`memoize`](#memoize) +* [`unmemoize`](#unmemoize) +* [`log`](#log) +* [`dir`](#dir) +* [`noConflict`](#noConflict) + + +## Collections + + + +### each(arr, iterator, callback) + +Applies the function `iterator` to each item in `arr`, in parallel. +The `iterator` is called with an item from the list, and a callback for when it +has finished. If the `iterator` passes an error to its `callback`, the main +`callback` (for the `each` function) is immediately called with the error. + +Note, that since this function applies `iterator` to each item in parallel, +there is no guarantee that the iterator functions will complete in order. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A function to apply to each item in `arr`. + The iterator is passed a `callback(err)` which must be called once it has + completed. If no error has occurred, the `callback` should be run without + arguments or with an explicit `null` argument. +* `callback(err)` - A callback which is called when all `iterator` functions + have finished, or an error occurs. + +__Examples__ + + +```js +// assuming openFiles is an array of file names and saveFile is a function +// to save the modified contents of that file: + +async.each(openFiles, saveFile, function(err){ + // if any of the saves produced an error, err would equal that error +}); +``` + +```js +// assuming openFiles is an array of file names + +async.each(openFiles, function(file, callback) { + + // Perform operation on file here. + console.log('Processing file ' + file); + + if( file.length > 32 ) { + console.log('This file name is too long'); + callback('File name too long'); + } else { + // Do work to process file here + console.log('File processed'); + callback(); + } +}, function(err){ + // if any of the file processing produced an error, err would equal that error + if( err ) { + // One of the iterations produced an error. + // All processing will now stop. + console.log('A file failed to process'); + } else { + console.log('All files have been processed successfully'); + } +}); +``` + +--------------------------------------- + + + +### eachSeries(arr, iterator, callback) + +The same as [`each`](#each), only `iterator` is applied to each item in `arr` in +series. The next `iterator` is only called once the current one has completed. +This means the `iterator` functions will complete in order. + + +--------------------------------------- + + + +### eachLimit(arr, limit, iterator, callback) + +The same as [`each`](#each), only no more than `limit` `iterator`s will be simultaneously +running at any time. + +Note that the items in `arr` are not processed in batches, so there is no guarantee that +the first `limit` `iterator` functions will complete before any others are started. + +__Arguments__ + +* `arr` - An array to iterate over. +* `limit` - The maximum number of `iterator`s to run at any time. +* `iterator(item, callback)` - A function to apply to each item in `arr`. + The iterator is passed a `callback(err)` which must be called once it has + completed. If no error has occurred, the callback should be run without + arguments or with an explicit `null` argument. +* `callback(err)` - A callback which is called when all `iterator` functions + have finished, or an error occurs. + +__Example__ + +```js +// Assume documents is an array of JSON objects and requestApi is a +// function that interacts with a rate-limited REST api. + +async.eachLimit(documents, 20, requestApi, function(err){ + // if any of the saves produced an error, err would equal that error +}); +``` + +--------------------------------------- + + +### map(arr, iterator, callback) + +Produces a new array of values by mapping each value in `arr` through +the `iterator` function. The `iterator` is called with an item from `arr` and a +callback for when it has finished processing. Each of these callback takes 2 arguments: +an `error`, and the transformed item from `arr`. If `iterator` passes an error to his +callback, the main `callback` (for the `map` function) is immediately called with the error. + +Note, that since this function applies the `iterator` to each item in parallel, +there is no guarantee that the `iterator` functions will complete in order. +However, the results array will be in the same order as the original `arr`. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A function to apply to each item in `arr`. + The iterator is passed a `callback(err, transformed)` which must be called once + it has completed with an error (which can be `null`) and a transformed item. +* `callback(err, results)` - A callback which is called when all `iterator` + functions have finished, or an error occurs. Results is an array of the + transformed items from the `arr`. + +__Example__ + +```js +async.map(['file1','file2','file3'], fs.stat, function(err, results){ + // results is now an array of stats for each file +}); +``` + +--------------------------------------- + + +### mapSeries(arr, iterator, callback) + +The same as [`map`](#map), only the `iterator` is applied to each item in `arr` in +series. The next `iterator` is only called once the current one has completed. +The results array will be in the same order as the original. + + +--------------------------------------- + + +### mapLimit(arr, limit, iterator, callback) + +The same as [`map`](#map), only no more than `limit` `iterator`s will be simultaneously +running at any time. + +Note that the items are not processed in batches, so there is no guarantee that +the first `limit` `iterator` functions will complete before any others are started. + +__Arguments__ + +* `arr` - An array to iterate over. +* `limit` - The maximum number of `iterator`s to run at any time. +* `iterator(item, callback)` - A function to apply to each item in `arr`. + The iterator is passed a `callback(err, transformed)` which must be called once + it has completed with an error (which can be `null`) and a transformed item. +* `callback(err, results)` - A callback which is called when all `iterator` + calls have finished, or an error occurs. The result is an array of the + transformed items from the original `arr`. + +__Example__ + +```js +async.mapLimit(['file1','file2','file3'], 1, fs.stat, function(err, results){ + // results is now an array of stats for each file +}); +``` + +--------------------------------------- + + + +### filter(arr, iterator, callback) + +__Alias:__ `select` + +Returns a new array of all the values in `arr` which pass an async truth test. +_The callback for each `iterator` call only accepts a single argument of `true` or +`false`; it does not accept an error argument first!_ This is in-line with the +way node libraries work with truth tests like `fs.exists`. This operation is +performed in parallel, but the results array will be in the same order as the +original. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A truth test to apply to each item in `arr`. + The `iterator` is passed a `callback(truthValue)`, which must be called with a + boolean argument once it has completed. +* `callback(results)` - A callback which is called after all the `iterator` + functions have finished. + +__Example__ + +```js +async.filter(['file1','file2','file3'], fs.exists, function(results){ + // results now equals an array of the existing files +}); +``` + +--------------------------------------- + + + +### filterSeries(arr, iterator, callback) + +__Alias:__ `selectSeries` + +The same as [`filter`](#filter) only the `iterator` is applied to each item in `arr` in +series. The next `iterator` is only called once the current one has completed. +The results array will be in the same order as the original. + +--------------------------------------- + + +### reject(arr, iterator, callback) + +The opposite of [`filter`](#filter). Removes values that pass an `async` truth test. + +--------------------------------------- + + +### rejectSeries(arr, iterator, callback) + +The same as [`reject`](#reject), only the `iterator` is applied to each item in `arr` +in series. + + +--------------------------------------- + + +### reduce(arr, memo, iterator, callback) + +__Aliases:__ `inject`, `foldl` + +Reduces `arr` into a single value using an async `iterator` to return +each successive step. `memo` is the initial state of the reduction. +This function only operates in series. + +For performance reasons, it may make sense to split a call to this function into +a parallel map, and then use the normal `Array.prototype.reduce` on the results. +This function is for situations where each step in the reduction needs to be async; +if you can get the data before reducing it, then it's probably a good idea to do so. + +__Arguments__ + +* `arr` - An array to iterate over. +* `memo` - The initial state of the reduction. +* `iterator(memo, item, callback)` - A function applied to each item in the + array to produce the next step in the reduction. The `iterator` is passed a + `callback(err, reduction)` which accepts an optional error as its first + argument, and the state of the reduction as the second. If an error is + passed to the callback, the reduction is stopped and the main `callback` is + immediately called with the error. +* `callback(err, result)` - A callback which is called after all the `iterator` + functions have finished. Result is the reduced value. + +__Example__ + +```js +async.reduce([1,2,3], 0, function(memo, item, callback){ + // pointless async: + process.nextTick(function(){ + callback(null, memo + item) + }); +}, function(err, result){ + // result is now equal to the last value of memo, which is 6 +}); +``` + +--------------------------------------- + + +### reduceRight(arr, memo, iterator, callback) + +__Alias:__ `foldr` + +Same as [`reduce`](#reduce), only operates on `arr` in reverse order. + + +--------------------------------------- + + +### detect(arr, iterator, callback) + +Returns the first value in `arr` that passes an async truth test. The +`iterator` is applied in parallel, meaning the first iterator to return `true` will +fire the detect `callback` with that result. That means the result might not be +the first item in the original `arr` (in terms of order) that passes the test. + +If order within the original `arr` is important, then look at [`detectSeries`](#detectSeries). + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A truth test to apply to each item in `arr`. + The iterator is passed a `callback(truthValue)` which must be called with a + boolean argument once it has completed. +* `callback(result)` - A callback which is called as soon as any iterator returns + `true`, or after all the `iterator` functions have finished. Result will be + the first item in the array that passes the truth test (iterator) or the + value `undefined` if none passed. + +__Example__ + +```js +async.detect(['file1','file2','file3'], fs.exists, function(result){ + // result now equals the first file in the list that exists +}); +``` + +--------------------------------------- + + +### detectSeries(arr, iterator, callback) + +The same as [`detect`](#detect), only the `iterator` is applied to each item in `arr` +in series. This means the result is always the first in the original `arr` (in +terms of array order) that passes the truth test. + + +--------------------------------------- + + +### sortBy(arr, iterator, callback) + +Sorts a list by the results of running each `arr` value through an async `iterator`. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A function to apply to each item in `arr`. + The iterator is passed a `callback(err, sortValue)` which must be called once it + has completed with an error (which can be `null`) and a value to use as the sort + criteria. +* `callback(err, results)` - A callback which is called after all the `iterator` + functions have finished, or an error occurs. Results is the items from + the original `arr` sorted by the values returned by the `iterator` calls. + +__Example__ + +```js +async.sortBy(['file1','file2','file3'], function(file, callback){ + fs.stat(file, function(err, stats){ + callback(err, stats.mtime); + }); +}, function(err, results){ + // results is now the original array of files sorted by + // modified date +}); +``` + +__Sort Order__ + +By modifying the callback parameter the sorting order can be influenced: + +```js +//ascending order +async.sortBy([1,9,3,5], function(x, callback){ + callback(null, x); +}, function(err,result){ + //result callback +} ); + +//descending order +async.sortBy([1,9,3,5], function(x, callback){ + callback(null, x*-1); //<- x*-1 instead of x, turns the order around +}, function(err,result){ + //result callback +} ); +``` + +--------------------------------------- + + +### some(arr, iterator, callback) + +__Alias:__ `any` + +Returns `true` if at least one element in the `arr` satisfies an async test. +_The callback for each iterator call only accepts a single argument of `true` or +`false`; it does not accept an error argument first!_ This is in-line with the +way node libraries work with truth tests like `fs.exists`. Once any iterator +call returns `true`, the main `callback` is immediately called. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A truth test to apply to each item in the array + in parallel. The iterator is passed a callback(truthValue) which must be + called with a boolean argument once it has completed. +* `callback(result)` - A callback which is called as soon as any iterator returns + `true`, or after all the iterator functions have finished. Result will be + either `true` or `false` depending on the values of the async tests. + +__Example__ + +```js +async.some(['file1','file2','file3'], fs.exists, function(result){ + // if result is true then at least one of the files exists +}); +``` + +--------------------------------------- + + +### every(arr, iterator, callback) + +__Alias:__ `all` + +Returns `true` if every element in `arr` satisfies an async test. +_The callback for each `iterator` call only accepts a single argument of `true` or +`false`; it does not accept an error argument first!_ This is in-line with the +way node libraries work with truth tests like `fs.exists`. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A truth test to apply to each item in the array + in parallel. The iterator is passed a callback(truthValue) which must be + called with a boolean argument once it has completed. +* `callback(result)` - A callback which is called after all the `iterator` + functions have finished. Result will be either `true` or `false` depending on + the values of the async tests. + +__Example__ + +```js +async.every(['file1','file2','file3'], fs.exists, function(result){ + // if result is true then every file exists +}); +``` + +--------------------------------------- + + +### concat(arr, iterator, callback) + +Applies `iterator` to each item in `arr`, concatenating the results. Returns the +concatenated list. The `iterator`s are called in parallel, and the results are +concatenated as they return. There is no guarantee that the results array will +be returned in the original order of `arr` passed to the `iterator` function. + +__Arguments__ + +* `arr` - An array to iterate over. +* `iterator(item, callback)` - A function to apply to each item in `arr`. + The iterator is passed a `callback(err, results)` which must be called once it + has completed with an error (which can be `null`) and an array of results. +* `callback(err, results)` - A callback which is called after all the `iterator` + functions have finished, or an error occurs. Results is an array containing + the concatenated results of the `iterator` function. + +__Example__ + +```js +async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){ + // files is now a list of filenames that exist in the 3 directories +}); +``` + +--------------------------------------- + + +### concatSeries(arr, iterator, callback) + +Same as [`concat`](#concat), but executes in series instead of parallel. + + +## Control Flow + + +### series(tasks, [callback]) + +Run the functions in the `tasks` array in series, each one running once the previous +function has completed. If any functions in the series pass an error to its +callback, no more functions are run, and `callback` is immediately called with the value of the error. +Otherwise, `callback` receives an array of results when `tasks` have completed. + +It is also possible to use an object instead of an array. Each property will be +run as a function, and the results will be passed to the final `callback` as an object +instead of an array. This can be a more readable way of handling results from +[`series`](#series). + +**Note** that while many implementations preserve the order of object properties, the +[ECMAScript Language Specifcation](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) +explicitly states that + +> The mechanics and order of enumerating the properties is not specified. + +So if you rely on the order in which your series of functions are executed, and want +this to work on all platforms, consider using an array. + +__Arguments__ + +* `tasks` - An array or object containing functions to run, each function is passed + a `callback(err, result)` it must call on completion with an error `err` (which can + be `null`) and an optional `result` value. +* `callback(err, results)` - An optional callback to run once all the functions + have completed. This function gets a results array (or object) containing all + the result arguments passed to the `task` callbacks. + +__Example__ + +```js +async.series([ + function(callback){ + // do some stuff ... + callback(null, 'one'); + }, + function(callback){ + // do some more stuff ... + callback(null, 'two'); + } +], +// optional callback +function(err, results){ + // results is now equal to ['one', 'two'] +}); + + +// an example using an object instead of an array +async.series({ + one: function(callback){ + setTimeout(function(){ + callback(null, 1); + }, 200); + }, + two: function(callback){ + setTimeout(function(){ + callback(null, 2); + }, 100); + } +}, +function(err, results) { + // results is now equal to: {one: 1, two: 2} +}); +``` + +--------------------------------------- + + +### parallel(tasks, [callback]) + +Run the `tasks` array of functions in parallel, without waiting until the previous +function has completed. If any of the functions pass an error to its +callback, the main `callback` is immediately called with the value of the error. +Once the `tasks` have completed, the results are passed to the final `callback` as an +array. + +It is also possible to use an object instead of an array. Each property will be +run as a function and the results will be passed to the final `callback` as an object +instead of an array. This can be a more readable way of handling results from +[`parallel`](#parallel). + + +__Arguments__ + +* `tasks` - An array or object containing functions to run. Each function is passed + a `callback(err, result)` which it must call on completion with an error `err` + (which can be `null`) and an optional `result` value. +* `callback(err, results)` - An optional callback to run once all the functions + have completed. This function gets a results array (or object) containing all + the result arguments passed to the task callbacks. + +__Example__ + +```js +async.parallel([ + function(callback){ + setTimeout(function(){ + callback(null, 'one'); + }, 200); + }, + function(callback){ + setTimeout(function(){ + callback(null, 'two'); + }, 100); + } +], +// optional callback +function(err, results){ + // the results array will equal ['one','two'] even though + // the second function had a shorter timeout. +}); + + +// an example using an object instead of an array +async.parallel({ + one: function(callback){ + setTimeout(function(){ + callback(null, 1); + }, 200); + }, + two: function(callback){ + setTimeout(function(){ + callback(null, 2); + }, 100); + } +}, +function(err, results) { + // results is now equals to: {one: 1, two: 2} +}); +``` + +--------------------------------------- + + +### parallelLimit(tasks, limit, [callback]) + +The same as [`parallel`](#parallel), only `tasks` are executed in parallel +with a maximum of `limit` tasks executing at any time. + +Note that the `tasks` are not executed in batches, so there is no guarantee that +the first `limit` tasks will complete before any others are started. + +__Arguments__ + +* `tasks` - An array or object containing functions to run, each function is passed + a `callback(err, result)` it must call on completion with an error `err` (which can + be `null`) and an optional `result` value. +* `limit` - The maximum number of `tasks` to run at any time. +* `callback(err, results)` - An optional callback to run once all the functions + have completed. This function gets a results array (or object) containing all + the result arguments passed to the `task` callbacks. + +--------------------------------------- + + +### whilst(test, fn, callback) + +Repeatedly call `fn`, while `test` returns `true`. Calls `callback` when stopped, +or an error occurs. + +__Arguments__ + +* `test()` - synchronous truth test to perform before each execution of `fn`. +* `fn(callback)` - A function which is called each time `test` passes. The function is + passed a `callback(err)`, which must be called once it has completed with an + optional `err` argument. +* `callback(err)` - A callback which is called after the test fails and repeated + execution of `fn` has stopped. + +__Example__ + +```js +var count = 0; + +async.whilst( + function () { return count < 5; }, + function (callback) { + count++; + setTimeout(callback, 1000); + }, + function (err) { + // 5 seconds have passed + } +); +``` + +--------------------------------------- + + +### doWhilst(fn, test, callback) + +The post-check version of [`whilst`](#whilst). To reflect the difference in +the order of operations, the arguments `test` and `fn` are switched. + +`doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. + +--------------------------------------- + + +### until(test, fn, callback) + +Repeatedly call `fn` until `test` returns `true`. Calls `callback` when stopped, +or an error occurs. + +The inverse of [`whilst`](#whilst). + +--------------------------------------- + + +### doUntil(fn, test, callback) + +Like [`doWhilst`](#doWhilst), except the `test` is inverted. Note the argument ordering differs from `until`. + +--------------------------------------- + + +### forever(fn, errback) + +Calls the asynchronous function `fn` with a callback parameter that allows it to +call itself again, in series, indefinitely. + +If an error is passed to the callback then `errback` is called with the +error, and execution stops, otherwise it will never be called. + +```js +async.forever( + function(next) { + // next is suitable for passing to things that need a callback(err [, whatever]); + // it will result in this function being called again. + }, + function(err) { + // if next is called with a value in its first parameter, it will appear + // in here as 'err', and execution will stop. + } +); +``` + +--------------------------------------- + + +### waterfall(tasks, [callback]) + +Runs the `tasks` array of functions in series, each passing their results to the next in +the array. However, if any of the `tasks` pass an error to their own callback, the +next function is not executed, and the main `callback` is immediately called with +the error. + +__Arguments__ + +* `tasks` - An array of functions to run, each function is passed a + `callback(err, result1, result2, ...)` it must call on completion. The first + argument is an error (which can be `null`) and any further arguments will be + passed as arguments in order to the next task. +* `callback(err, [results])` - An optional callback to run once all the functions + have completed. This will be passed the results of the last task's callback. + + + +__Example__ + +```js +async.waterfall([ + function(callback) { + callback(null, 'one', 'two'); + }, + function(arg1, arg2, callback) { + // arg1 now equals 'one' and arg2 now equals 'two' + callback(null, 'three'); + }, + function(arg1, callback) { + // arg1 now equals 'three' + callback(null, 'done'); + } +], function (err, result) { + // result now equals 'done' +}); +``` + +--------------------------------------- + +### compose(fn1, fn2...) + +Creates a function which is a composition of the passed asynchronous +functions. Each function consumes the return value of the function that +follows. Composing functions `f()`, `g()`, and `h()` would produce the result of +`f(g(h()))`, only this version uses callbacks to obtain the return values. + +Each function is executed with the `this` binding of the composed function. + +__Arguments__ + +* `functions...` - the asynchronous functions to compose + + +__Example__ + +```js +function add1(n, callback) { + setTimeout(function () { + callback(null, n + 1); + }, 10); +} + +function mul3(n, callback) { + setTimeout(function () { + callback(null, n * 3); + }, 10); +} + +var add1mul3 = async.compose(mul3, add1); + +add1mul3(4, function (err, result) { + // result now equals 15 +}); +``` + +--------------------------------------- + +### seq(fn1, fn2...) + +Version of the compose function that is more natural to read. +Each function consumes the return value of the previous function. +It is the equivalent of [`compose`](#compose) with the arguments reversed. + +Each function is executed with the `this` binding of the composed function. + +__Arguments__ + +* functions... - the asynchronous functions to compose + + +__Example__ + +```js +// Requires lodash (or underscore), express3 and dresende's orm2. +// Part of an app, that fetches cats of the logged user. +// This example uses `seq` function to avoid overnesting and error +// handling clutter. +app.get('/cats', function(request, response) { + var User = request.models.User; + async.seq( + _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data)) + function(user, fn) { + user.getCats(fn); // 'getCats' has signature (callback(err, data)) + } + )(req.session.user_id, function (err, cats) { + if (err) { + console.error(err); + response.json({ status: 'error', message: err.message }); + } else { + response.json({ status: 'ok', message: 'Cats found', data: cats }); + } + }); +}); +``` + +--------------------------------------- + +### applyEach(fns, args..., callback) + +Applies the provided arguments to each function in the array, calling +`callback` after all functions have completed. If you only provide the first +argument, then it will return a function which lets you pass in the +arguments as if it were a single function call. + +__Arguments__ + +* `fns` - the asynchronous functions to all call with the same arguments +* `args...` - any number of separate arguments to pass to the function +* `callback` - the final argument should be the callback, called when all + functions have completed processing + + +__Example__ + +```js +async.applyEach([enableSearch, updateSchema], 'bucket', callback); + +// partial application example: +async.each( + buckets, + async.applyEach([enableSearch, updateSchema]), + callback +); +``` + +--------------------------------------- + + +### applyEachSeries(arr, iterator, callback) + +The same as [`applyEach`](#applyEach) only the functions are applied in series. + +--------------------------------------- + + +### queue(worker, concurrency) + +Creates a `queue` object with the specified `concurrency`. Tasks added to the +`queue` are processed in parallel (up to the `concurrency` limit). If all +`worker`s are in progress, the task is queued until one becomes available. +Once a `worker` completes a `task`, that `task`'s callback is called. + +__Arguments__ + +* `worker(task, callback)` - An asynchronous function for processing a queued + task, which must call its `callback(err)` argument when finished, with an + optional `error` as an argument. +* `concurrency` - An `integer` for determining how many `worker` functions should be + run in parallel. + +__Queue objects__ + +The `queue` object returned by this function has the following properties and +methods: + +* `length()` - a function returning the number of items waiting to be processed. +* `started` - a function returning whether or not any items have been pushed and processed by the queue +* `running()` - a function returning the number of items currently being processed. +* `idle()` - a function returning false if there are items waiting or being processed, or true if not. +* `concurrency` - an integer for determining how many `worker` functions should be + run in parallel. This property can be changed after a `queue` is created to + alter the concurrency on-the-fly. +* `push(task, [callback])` - add a new task to the `queue`. Calls `callback` once + the `worker` has finished processing the task. Instead of a single task, a `tasks` array + can be submitted. The respective callback is used for every task in the list. +* `unshift(task, [callback])` - add a new task to the front of the `queue`. +* `saturated` - a callback that is called when the `queue` length hits the `concurrency` limit, + and further tasks will be queued. +* `empty` - a callback that is called when the last item from the `queue` is given to a `worker`. +* `drain` - a callback that is called when the last item from the `queue` has returned from the `worker`. +* `paused` - a boolean for determining whether the queue is in a paused state +* `pause()` - a function that pauses the processing of tasks until `resume()` is called. +* `resume()` - a function that resumes the processing of queued tasks when the queue is paused. +* `kill()` - a function that removes the `drain` callback and empties remaining tasks from the queue forcing it to go idle. + +__Example__ + +```js +// create a queue object with concurrency 2 + +var q = async.queue(function (task, callback) { + console.log('hello ' + task.name); + callback(); +}, 2); + + +// assign a callback +q.drain = function() { + console.log('all items have been processed'); +} + +// add some items to the queue + +q.push({name: 'foo'}, function (err) { + console.log('finished processing foo'); +}); +q.push({name: 'bar'}, function (err) { + console.log('finished processing bar'); +}); + +// add some items to the queue (batch-wise) + +q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) { + console.log('finished processing item'); +}); + +// add some items to the front of the queue + +q.unshift({name: 'bar'}, function (err) { + console.log('finished processing bar'); +}); +``` + + +--------------------------------------- + + +### priorityQueue(worker, concurrency) + +The same as [`queue`](#queue) only tasks are assigned a priority and completed in ascending priority order. There are two differences between `queue` and `priorityQueue` objects: + +* `push(task, priority, [callback])` - `priority` should be a number. If an array of + `tasks` is given, all tasks will be assigned the same priority. +* The `unshift` method was removed. + +--------------------------------------- + + +### cargo(worker, [payload]) + +Creates a `cargo` object with the specified payload. Tasks added to the +cargo will be processed altogether (up to the `payload` limit). If the +`worker` is in progress, the task is queued until it becomes available. Once +the `worker` has completed some tasks, each callback of those tasks is called. +Check out [this animation](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) for how `cargo` and `queue` work. + +While [queue](#queue) passes only one task to one of a group of workers +at a time, cargo passes an array of tasks to a single worker, repeating +when the worker is finished. + +__Arguments__ + +* `worker(tasks, callback)` - An asynchronous function for processing an array of + queued tasks, which must call its `callback(err)` argument when finished, with + an optional `err` argument. +* `payload` - An optional `integer` for determining how many tasks should be + processed per round; if omitted, the default is unlimited. + +__Cargo objects__ + +The `cargo` object returned by this function has the following properties and +methods: + +* `length()` - A function returning the number of items waiting to be processed. +* `payload` - An `integer` for determining how many tasks should be + process per round. This property can be changed after a `cargo` is created to + alter the payload on-the-fly. +* `push(task, [callback])` - Adds `task` to the `queue`. The callback is called + once the `worker` has finished processing the task. Instead of a single task, an array of `tasks` + can be submitted. The respective callback is used for every task in the list. +* `saturated` - A callback that is called when the `queue.length()` hits the concurrency and further tasks will be queued. +* `empty` - A callback that is called when the last item from the `queue` is given to a `worker`. +* `drain` - A callback that is called when the last item from the `queue` has returned from the `worker`. + +__Example__ + +```js +// create a cargo object with payload 2 + +var cargo = async.cargo(function (tasks, callback) { + for(var i=0; i +### auto(tasks, [callback]) + +Determines the best order for running the functions in `tasks`, based on their +requirements. Each function can optionally depend on other functions being completed +first, and each function is run as soon as its requirements are satisfied. + +If any of the functions pass an error to their callback, it will not +complete (so any other functions depending on it will not run), and the main +`callback` is immediately called with the error. Functions also receive an +object containing the results of functions which have completed so far. + +Note, all functions are called with a `results` object as a second argument, +so it is unsafe to pass functions in the `tasks` object which cannot handle the +extra argument. + +For example, this snippet of code: + +```js +async.auto({ + readData: async.apply(fs.readFile, 'data.txt', 'utf-8') +}, callback); +``` + +will have the effect of calling `readFile` with the results object as the last +argument, which will fail: + +```js +fs.readFile('data.txt', 'utf-8', cb, {}); +``` + +Instead, wrap the call to `readFile` in a function which does not forward the +`results` object: + +```js +async.auto({ + readData: function(cb, results){ + fs.readFile('data.txt', 'utf-8', cb); + } +}, callback); +``` + +__Arguments__ + +* `tasks` - An object. Each of its properties is either a function or an array of + requirements, with the function itself the last item in the array. The object's key + of a property serves as the name of the task defined by that property, + i.e. can be used when specifying requirements for other tasks. + The function receives two arguments: (1) a `callback(err, result)` which must be + called when finished, passing an `error` (which can be `null`) and the result of + the function's execution, and (2) a `results` object, containing the results of + the previously executed functions. +* `callback(err, results)` - An optional callback which is called when all the + tasks have been completed. It receives the `err` argument if any `tasks` + pass an error to their callback. Results are always returned; however, if + an error occurs, no further `tasks` will be performed, and the results + object will only contain partial results. + + +__Example__ + +```js +async.auto({ + get_data: function(callback){ + console.log('in get_data'); + // async code to get some data + callback(null, 'data', 'converted to array'); + }, + make_folder: function(callback){ + console.log('in make_folder'); + // async code to create a directory to store a file in + // this is run at the same time as getting the data + callback(null, 'folder'); + }, + write_file: ['get_data', 'make_folder', function(callback, results){ + console.log('in write_file', JSON.stringify(results)); + // once there is some data and the directory exists, + // write the data to a file in the directory + callback(null, 'filename'); + }], + email_link: ['write_file', function(callback, results){ + console.log('in email_link', JSON.stringify(results)); + // once the file is written let's email a link to it... + // results.write_file contains the filename returned by write_file. + callback(null, {'file':results.write_file, 'email':'user@example.com'}); + }] +}, function(err, results) { + console.log('err = ', err); + console.log('results = ', results); +}); +``` + +This is a fairly trivial example, but to do this using the basic parallel and +series functions would look like this: + +```js +async.parallel([ + function(callback){ + console.log('in get_data'); + // async code to get some data + callback(null, 'data', 'converted to array'); + }, + function(callback){ + console.log('in make_folder'); + // async code to create a directory to store a file in + // this is run at the same time as getting the data + callback(null, 'folder'); + } +], +function(err, results){ + async.series([ + function(callback){ + console.log('in write_file', JSON.stringify(results)); + // once there is some data and the directory exists, + // write the data to a file in the directory + results.push('filename'); + callback(null); + }, + function(callback){ + console.log('in email_link', JSON.stringify(results)); + // once the file is written let's email a link to it... + callback(null, {'file':results.pop(), 'email':'user@example.com'}); + } + ]); +}); +``` + +For a complicated series of `async` tasks, using the [`auto`](#auto) function makes adding +new tasks much easier (and the code more readable). + + +--------------------------------------- + + +### retry([times = 5], task, [callback]) + +Attempts to get a successful response from `task` no more than `times` times before +returning an error. If the task is successful, the `callback` will be passed the result +of the successful task. If all attempts fail, the callback will be passed the error and +result (if any) of the final attempt. + +__Arguments__ + +* `times` - An integer indicating how many times to attempt the `task` before giving up. Defaults to 5. +* `task(callback, results)` - A function which receives two arguments: (1) a `callback(err, result)` + which must be called when finished, passing `err` (which can be `null`) and the `result` of + the function's execution, and (2) a `results` object, containing the results of + the previously executed functions (if nested inside another control flow). +* `callback(err, results)` - An optional callback which is called when the + task has succeeded, or after the final failed attempt. It receives the `err` and `result` arguments of the last attempt at completing the `task`. + +The [`retry`](#retry) function can be used as a stand-alone control flow by passing a +callback, as shown below: + +```js +async.retry(3, apiMethod, function(err, result) { + // do something with the result +}); +``` + +It can also be embeded within other control flow functions to retry individual methods +that are not as reliable, like this: + +```js +async.auto({ + users: api.getUsers.bind(api), + payments: async.retry(3, api.getPayments.bind(api)) +}, function(err, results) { + // do something with the results +}); +``` + + +--------------------------------------- + + +### iterator(tasks) + +Creates an iterator function which calls the next function in the `tasks` array, +returning a continuation to call the next one after that. It's also possible to +“peek” at the next iterator with `iterator.next()`. + +This function is used internally by the `async` module, but can be useful when +you want to manually control the flow of functions in series. + +__Arguments__ + +* `tasks` - An array of functions to run. + +__Example__ + +```js +var iterator = async.iterator([ + function(){ sys.p('one'); }, + function(){ sys.p('two'); }, + function(){ sys.p('three'); } +]); + +node> var iterator2 = iterator(); +'one' +node> var iterator3 = iterator2(); +'two' +node> iterator3(); +'three' +node> var nextfn = iterator2.next(); +node> nextfn(); +'three' +``` + +--------------------------------------- + + +### apply(function, arguments..) + +Creates a continuation function with some arguments already applied. + +Useful as a shorthand when combined with other control flow functions. Any arguments +passed to the returned function are added to the arguments originally passed +to apply. + +__Arguments__ + +* `function` - The function you want to eventually apply all arguments to. +* `arguments...` - Any number of arguments to automatically apply when the + continuation is called. + +__Example__ + +```js +// using apply + +async.parallel([ + async.apply(fs.writeFile, 'testfile1', 'test1'), + async.apply(fs.writeFile, 'testfile2', 'test2'), +]); + + +// the same process without using apply + +async.parallel([ + function(callback){ + fs.writeFile('testfile1', 'test1', callback); + }, + function(callback){ + fs.writeFile('testfile2', 'test2', callback); + } +]); +``` + +It's possible to pass any number of additional arguments when calling the +continuation: + +```js +node> var fn = async.apply(sys.puts, 'one'); +node> fn('two', 'three'); +one +two +three +``` + +--------------------------------------- + + +### nextTick(callback), setImmediate(callback) + +Calls `callback` on a later loop around the event loop. In Node.js this just +calls `process.nextTick`; in the browser it falls back to `setImmediate(callback)` +if available, otherwise `setTimeout(callback, 0)`, which means other higher priority +events may precede the execution of `callback`. + +This is used internally for browser-compatibility purposes. + +__Arguments__ + +* `callback` - The function to call on a later loop around the event loop. + +__Example__ + +```js +var call_order = []; +async.nextTick(function(){ + call_order.push('two'); + // call_order now equals ['one','two'] +}); +call_order.push('one') +``` + + +### times(n, callback) + +Calls the `callback` function `n` times, and accumulates results in the same manner +you would use with [`map`](#map). + +__Arguments__ + +* `n` - The number of times to run the function. +* `callback` - The function to call `n` times. + +__Example__ + +```js +// Pretend this is some complicated async factory +var createUser = function(id, callback) { + callback(null, { + id: 'user' + id + }) +} +// generate 5 users +async.times(5, function(n, next){ + createUser(n, function(err, user) { + next(err, user) + }) +}, function(err, users) { + // we should now have 5 users +}); +``` + + +### timesSeries(n, callback) + +The same as [`times`](#times), only the iterator is applied to each item in `arr` in +series. The next `iterator` is only called once the current one has completed. +The results array will be in the same order as the original. + + +## Utils + + +### memoize(fn, [hasher]) + +Caches the results of an `async` function. When creating a hash to store function +results against, the callback is omitted from the hash and an optional hash +function can be used. + +The cache of results is exposed as the `memo` property of the function returned +by `memoize`. + +__Arguments__ + +* `fn` - The function to proxy and cache results from. +* `hasher` - Tn optional function for generating a custom hash for storing + results. It has all the arguments applied to it apart from the callback, and + must be synchronous. + +__Example__ + +```js +var slow_fn = function (name, callback) { + // do something + callback(null, result); +}; +var fn = async.memoize(slow_fn); + +// fn can now be used as if it were slow_fn +fn('some name', function () { + // callback +}); +``` + + +### unmemoize(fn) + +Undoes a [`memoize`](#memoize)d function, reverting it to the original, unmemoized +form. Handy for testing. + +__Arguments__ + +* `fn` - the memoized function + + +### log(function, arguments) + +Logs the result of an `async` function to the `console`. Only works in Node.js or +in browsers that support `console.log` and `console.error` (such as FF and Chrome). +If multiple arguments are returned from the async function, `console.log` is +called on each argument in order. + +__Arguments__ + +* `function` - The function you want to eventually apply all arguments to. +* `arguments...` - Any number of arguments to apply to the function. + +__Example__ + +```js +var hello = function(name, callback){ + setTimeout(function(){ + callback(null, 'hello ' + name); + }, 1000); +}; +``` +```js +node> async.log(hello, 'world'); +'hello world' +``` + +--------------------------------------- + + +### dir(function, arguments) + +Logs the result of an `async` function to the `console` using `console.dir` to +display the properties of the resulting object. Only works in Node.js or +in browsers that support `console.dir` and `console.error` (such as FF and Chrome). +If multiple arguments are returned from the async function, `console.dir` is +called on each argument in order. + +__Arguments__ + +* `function` - The function you want to eventually apply all arguments to. +* `arguments...` - Any number of arguments to apply to the function. + +__Example__ + +```js +var hello = function(name, callback){ + setTimeout(function(){ + callback(null, {hello: name}); + }, 1000); +}; +``` +```js +node> async.dir(hello, 'world'); +{hello: 'world'} +``` + +--------------------------------------- + + +### noConflict() + +Changes the value of `async` back to its original value, returning a reference to the +`async` object. diff --git a/ruty/js/node_modules/async/bower.json b/ruty/js/node_modules/async/bower.json new file mode 100644 index 0000000..1817688 --- /dev/null +++ b/ruty/js/node_modules/async/bower.json @@ -0,0 +1,38 @@ +{ + "name": "async", + "description": "Higher-order functions and common patterns for asynchronous code", + "version": "0.9.2", + "main": "lib/async.js", + "keywords": [ + "async", + "callback", + "utility", + "module" + ], + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/caolan/async.git" + }, + "devDependencies": { + "nodeunit": ">0.0.0", + "uglify-js": "1.2.x", + "nodelint": ">0.0.0", + "lodash": ">=2.4.1" + }, + "moduleType": [ + "amd", + "globals", + "node" + ], + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "authors": [ + "Caolan McMahon" + ] +} \ No newline at end of file diff --git a/ruty/js/node_modules/async/component.json b/ruty/js/node_modules/async/component.json new file mode 100644 index 0000000..5003a7c --- /dev/null +++ b/ruty/js/node_modules/async/component.json @@ -0,0 +1,16 @@ +{ + "name": "async", + "description": "Higher-order functions and common patterns for asynchronous code", + "version": "0.9.2", + "keywords": [ + "async", + "callback", + "utility", + "module" + ], + "license": "MIT", + "repository": "caolan/async", + "scripts": [ + "lib/async.js" + ] +} \ No newline at end of file diff --git a/ruty/js/node_modules/async/lib/async.js b/ruty/js/node_modules/async/lib/async.js new file mode 100644 index 0000000..394c41c --- /dev/null +++ b/ruty/js/node_modules/async/lib/async.js @@ -0,0 +1,1123 @@ +/*! + * async + * https://github.com/caolan/async + * + * Copyright 2010-2014 Caolan McMahon + * Released under the MIT license + */ +/*jshint onevar: false, indent:4 */ +/*global setImmediate: false, setTimeout: false, console: false */ +(function () { + + var async = {}; + + // global on the server, window in the browser + var root, previous_async; + + root = this; + if (root != null) { + previous_async = root.async; + } + + async.noConflict = function () { + root.async = previous_async; + return async; + }; + + function only_once(fn) { + var called = false; + return function() { + if (called) throw new Error("Callback was already called."); + called = true; + fn.apply(root, arguments); + } + } + + //// cross-browser compatiblity functions //// + + var _toString = Object.prototype.toString; + + var _isArray = Array.isArray || function (obj) { + return _toString.call(obj) === '[object Array]'; + }; + + var _each = function (arr, iterator) { + for (var i = 0; i < arr.length; i += 1) { + iterator(arr[i], i, arr); + } + }; + + var _map = function (arr, iterator) { + if (arr.map) { + return arr.map(iterator); + } + var results = []; + _each(arr, function (x, i, a) { + results.push(iterator(x, i, a)); + }); + return results; + }; + + var _reduce = function (arr, iterator, memo) { + if (arr.reduce) { + return arr.reduce(iterator, memo); + } + _each(arr, function (x, i, a) { + memo = iterator(memo, x, i, a); + }); + return memo; + }; + + var _keys = function (obj) { + if (Object.keys) { + return Object.keys(obj); + } + var keys = []; + for (var k in obj) { + if (obj.hasOwnProperty(k)) { + keys.push(k); + } + } + return keys; + }; + + //// exported async module functions //// + + //// nextTick implementation with browser-compatible fallback //// + if (typeof process === 'undefined' || !(process.nextTick)) { + if (typeof setImmediate === 'function') { + async.nextTick = function (fn) { + // not a direct alias for IE10 compatibility + setImmediate(fn); + }; + async.setImmediate = async.nextTick; + } + else { + async.nextTick = function (fn) { + setTimeout(fn, 0); + }; + async.setImmediate = async.nextTick; + } + } + else { + async.nextTick = process.nextTick; + if (typeof setImmediate !== 'undefined') { + async.setImmediate = function (fn) { + // not a direct alias for IE10 compatibility + setImmediate(fn); + }; + } + else { + async.setImmediate = async.nextTick; + } + } + + async.each = function (arr, iterator, callback) { + callback = callback || function () {}; + if (!arr.length) { + return callback(); + } + var completed = 0; + _each(arr, function (x) { + iterator(x, only_once(done) ); + }); + function done(err) { + if (err) { + callback(err); + callback = function () {}; + } + else { + completed += 1; + if (completed >= arr.length) { + callback(); + } + } + } + }; + async.forEach = async.each; + + async.eachSeries = function (arr, iterator, callback) { + callback = callback || function () {}; + if (!arr.length) { + return callback(); + } + var completed = 0; + var iterate = function () { + iterator(arr[completed], function (err) { + if (err) { + callback(err); + callback = function () {}; + } + else { + completed += 1; + if (completed >= arr.length) { + callback(); + } + else { + iterate(); + } + } + }); + }; + iterate(); + }; + async.forEachSeries = async.eachSeries; + + async.eachLimit = function (arr, limit, iterator, callback) { + var fn = _eachLimit(limit); + fn.apply(null, [arr, iterator, callback]); + }; + async.forEachLimit = async.eachLimit; + + var _eachLimit = function (limit) { + + return function (arr, iterator, callback) { + callback = callback || function () {}; + if (!arr.length || limit <= 0) { + return callback(); + } + var completed = 0; + var started = 0; + var running = 0; + + (function replenish () { + if (completed >= arr.length) { + return callback(); + } + + while (running < limit && started < arr.length) { + started += 1; + running += 1; + iterator(arr[started - 1], function (err) { + if (err) { + callback(err); + callback = function () {}; + } + else { + completed += 1; + running -= 1; + if (completed >= arr.length) { + callback(); + } + else { + replenish(); + } + } + }); + } + })(); + }; + }; + + + var doParallel = function (fn) { + return function () { + var args = Array.prototype.slice.call(arguments); + return fn.apply(null, [async.each].concat(args)); + }; + }; + var doParallelLimit = function(limit, fn) { + return function () { + var args = Array.prototype.slice.call(arguments); + return fn.apply(null, [_eachLimit(limit)].concat(args)); + }; + }; + var doSeries = function (fn) { + return function () { + var args = Array.prototype.slice.call(arguments); + return fn.apply(null, [async.eachSeries].concat(args)); + }; + }; + + + var _asyncMap = function (eachfn, arr, iterator, callback) { + arr = _map(arr, function (x, i) { + return {index: i, value: x}; + }); + if (!callback) { + eachfn(arr, function (x, callback) { + iterator(x.value, function (err) { + callback(err); + }); + }); + } else { + var results = []; + eachfn(arr, function (x, callback) { + iterator(x.value, function (err, v) { + results[x.index] = v; + callback(err); + }); + }, function (err) { + callback(err, results); + }); + } + }; + async.map = doParallel(_asyncMap); + async.mapSeries = doSeries(_asyncMap); + async.mapLimit = function (arr, limit, iterator, callback) { + return _mapLimit(limit)(arr, iterator, callback); + }; + + var _mapLimit = function(limit) { + return doParallelLimit(limit, _asyncMap); + }; + + // reduce only has a series version, as doing reduce in parallel won't + // work in many situations. + async.reduce = function (arr, memo, iterator, callback) { + async.eachSeries(arr, function (x, callback) { + iterator(memo, x, function (err, v) { + memo = v; + callback(err); + }); + }, function (err) { + callback(err, memo); + }); + }; + // inject alias + async.inject = async.reduce; + // foldl alias + async.foldl = async.reduce; + + async.reduceRight = function (arr, memo, iterator, callback) { + var reversed = _map(arr, function (x) { + return x; + }).reverse(); + async.reduce(reversed, memo, iterator, callback); + }; + // foldr alias + async.foldr = async.reduceRight; + + var _filter = function (eachfn, arr, iterator, callback) { + var results = []; + arr = _map(arr, function (x, i) { + return {index: i, value: x}; + }); + eachfn(arr, function (x, callback) { + iterator(x.value, function (v) { + if (v) { + results.push(x); + } + callback(); + }); + }, function (err) { + callback(_map(results.sort(function (a, b) { + return a.index - b.index; + }), function (x) { + return x.value; + })); + }); + }; + async.filter = doParallel(_filter); + async.filterSeries = doSeries(_filter); + // select alias + async.select = async.filter; + async.selectSeries = async.filterSeries; + + var _reject = function (eachfn, arr, iterator, callback) { + var results = []; + arr = _map(arr, function (x, i) { + return {index: i, value: x}; + }); + eachfn(arr, function (x, callback) { + iterator(x.value, function (v) { + if (!v) { + results.push(x); + } + callback(); + }); + }, function (err) { + callback(_map(results.sort(function (a, b) { + return a.index - b.index; + }), function (x) { + return x.value; + })); + }); + }; + async.reject = doParallel(_reject); + async.rejectSeries = doSeries(_reject); + + var _detect = function (eachfn, arr, iterator, main_callback) { + eachfn(arr, function (x, callback) { + iterator(x, function (result) { + if (result) { + main_callback(x); + main_callback = function () {}; + } + else { + callback(); + } + }); + }, function (err) { + main_callback(); + }); + }; + async.detect = doParallel(_detect); + async.detectSeries = doSeries(_detect); + + async.some = function (arr, iterator, main_callback) { + async.each(arr, function (x, callback) { + iterator(x, function (v) { + if (v) { + main_callback(true); + main_callback = function () {}; + } + callback(); + }); + }, function (err) { + main_callback(false); + }); + }; + // any alias + async.any = async.some; + + async.every = function (arr, iterator, main_callback) { + async.each(arr, function (x, callback) { + iterator(x, function (v) { + if (!v) { + main_callback(false); + main_callback = function () {}; + } + callback(); + }); + }, function (err) { + main_callback(true); + }); + }; + // all alias + async.all = async.every; + + async.sortBy = function (arr, iterator, callback) { + async.map(arr, function (x, callback) { + iterator(x, function (err, criteria) { + if (err) { + callback(err); + } + else { + callback(null, {value: x, criteria: criteria}); + } + }); + }, function (err, results) { + if (err) { + return callback(err); + } + else { + var fn = function (left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + }; + callback(null, _map(results.sort(fn), function (x) { + return x.value; + })); + } + }); + }; + + async.auto = function (tasks, callback) { + callback = callback || function () {}; + var keys = _keys(tasks); + var remainingTasks = keys.length + if (!remainingTasks) { + return callback(); + } + + var results = {}; + + var listeners = []; + var addListener = function (fn) { + listeners.unshift(fn); + }; + var removeListener = function (fn) { + for (var i = 0; i < listeners.length; i += 1) { + if (listeners[i] === fn) { + listeners.splice(i, 1); + return; + } + } + }; + var taskComplete = function () { + remainingTasks-- + _each(listeners.slice(0), function (fn) { + fn(); + }); + }; + + addListener(function () { + if (!remainingTasks) { + var theCallback = callback; + // prevent final callback from calling itself if it errors + callback = function () {}; + + theCallback(null, results); + } + }); + + _each(keys, function (k) { + var task = _isArray(tasks[k]) ? tasks[k]: [tasks[k]]; + var taskCallback = function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + if (err) { + var safeResults = {}; + _each(_keys(results), function(rkey) { + safeResults[rkey] = results[rkey]; + }); + safeResults[k] = args; + callback(err, safeResults); + // stop subsequent errors hitting callback multiple times + callback = function () {}; + } + else { + results[k] = args; + async.setImmediate(taskComplete); + } + }; + var requires = task.slice(0, Math.abs(task.length - 1)) || []; + var ready = function () { + return _reduce(requires, function (a, x) { + return (a && results.hasOwnProperty(x)); + }, true) && !results.hasOwnProperty(k); + }; + if (ready()) { + task[task.length - 1](taskCallback, results); + } + else { + var listener = function () { + if (ready()) { + removeListener(listener); + task[task.length - 1](taskCallback, results); + } + }; + addListener(listener); + } + }); + }; + + async.retry = function(times, task, callback) { + var DEFAULT_TIMES = 5; + var attempts = []; + // Use defaults if times not passed + if (typeof times === 'function') { + callback = task; + task = times; + times = DEFAULT_TIMES; + } + // Make sure times is a number + times = parseInt(times, 10) || DEFAULT_TIMES; + var wrappedTask = function(wrappedCallback, wrappedResults) { + var retryAttempt = function(task, finalAttempt) { + return function(seriesCallback) { + task(function(err, result){ + seriesCallback(!err || finalAttempt, {err: err, result: result}); + }, wrappedResults); + }; + }; + while (times) { + attempts.push(retryAttempt(task, !(times-=1))); + } + async.series(attempts, function(done, data){ + data = data[data.length - 1]; + (wrappedCallback || callback)(data.err, data.result); + }); + } + // If a callback is passed, run this as a controll flow + return callback ? wrappedTask() : wrappedTask + }; + + async.waterfall = function (tasks, callback) { + callback = callback || function () {}; + if (!_isArray(tasks)) { + var err = new Error('First argument to waterfall must be an array of functions'); + return callback(err); + } + if (!tasks.length) { + return callback(); + } + var wrapIterator = function (iterator) { + return function (err) { + if (err) { + callback.apply(null, arguments); + callback = function () {}; + } + else { + var args = Array.prototype.slice.call(arguments, 1); + var next = iterator.next(); + if (next) { + args.push(wrapIterator(next)); + } + else { + args.push(callback); + } + async.setImmediate(function () { + iterator.apply(null, args); + }); + } + }; + }; + wrapIterator(async.iterator(tasks))(); + }; + + var _parallel = function(eachfn, tasks, callback) { + callback = callback || function () {}; + if (_isArray(tasks)) { + eachfn.map(tasks, function (fn, callback) { + if (fn) { + fn(function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + callback.call(null, err, args); + }); + } + }, callback); + } + else { + var results = {}; + eachfn.each(_keys(tasks), function (k, callback) { + tasks[k](function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + results[k] = args; + callback(err); + }); + }, function (err) { + callback(err, results); + }); + } + }; + + async.parallel = function (tasks, callback) { + _parallel({ map: async.map, each: async.each }, tasks, callback); + }; + + async.parallelLimit = function(tasks, limit, callback) { + _parallel({ map: _mapLimit(limit), each: _eachLimit(limit) }, tasks, callback); + }; + + async.series = function (tasks, callback) { + callback = callback || function () {}; + if (_isArray(tasks)) { + async.mapSeries(tasks, function (fn, callback) { + if (fn) { + fn(function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + callback.call(null, err, args); + }); + } + }, callback); + } + else { + var results = {}; + async.eachSeries(_keys(tasks), function (k, callback) { + tasks[k](function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + results[k] = args; + callback(err); + }); + }, function (err) { + callback(err, results); + }); + } + }; + + async.iterator = function (tasks) { + var makeCallback = function (index) { + var fn = function () { + if (tasks.length) { + tasks[index].apply(null, arguments); + } + return fn.next(); + }; + fn.next = function () { + return (index < tasks.length - 1) ? makeCallback(index + 1): null; + }; + return fn; + }; + return makeCallback(0); + }; + + async.apply = function (fn) { + var args = Array.prototype.slice.call(arguments, 1); + return function () { + return fn.apply( + null, args.concat(Array.prototype.slice.call(arguments)) + ); + }; + }; + + var _concat = function (eachfn, arr, fn, callback) { + var r = []; + eachfn(arr, function (x, cb) { + fn(x, function (err, y) { + r = r.concat(y || []); + cb(err); + }); + }, function (err) { + callback(err, r); + }); + }; + async.concat = doParallel(_concat); + async.concatSeries = doSeries(_concat); + + async.whilst = function (test, iterator, callback) { + if (test()) { + iterator(function (err) { + if (err) { + return callback(err); + } + async.whilst(test, iterator, callback); + }); + } + else { + callback(); + } + }; + + async.doWhilst = function (iterator, test, callback) { + iterator(function (err) { + if (err) { + return callback(err); + } + var args = Array.prototype.slice.call(arguments, 1); + if (test.apply(null, args)) { + async.doWhilst(iterator, test, callback); + } + else { + callback(); + } + }); + }; + + async.until = function (test, iterator, callback) { + if (!test()) { + iterator(function (err) { + if (err) { + return callback(err); + } + async.until(test, iterator, callback); + }); + } + else { + callback(); + } + }; + + async.doUntil = function (iterator, test, callback) { + iterator(function (err) { + if (err) { + return callback(err); + } + var args = Array.prototype.slice.call(arguments, 1); + if (!test.apply(null, args)) { + async.doUntil(iterator, test, callback); + } + else { + callback(); + } + }); + }; + + async.queue = function (worker, concurrency) { + if (concurrency === undefined) { + concurrency = 1; + } + function _insert(q, data, pos, callback) { + if (!q.started){ + q.started = true; + } + if (!_isArray(data)) { + data = [data]; + } + if(data.length == 0) { + // call drain immediately if there are no tasks + return async.setImmediate(function() { + if (q.drain) { + q.drain(); + } + }); + } + _each(data, function(task) { + var item = { + data: task, + callback: typeof callback === 'function' ? callback : null + }; + + if (pos) { + q.tasks.unshift(item); + } else { + q.tasks.push(item); + } + + if (q.saturated && q.tasks.length === q.concurrency) { + q.saturated(); + } + async.setImmediate(q.process); + }); + } + + var workers = 0; + var q = { + tasks: [], + concurrency: concurrency, + saturated: null, + empty: null, + drain: null, + started: false, + paused: false, + push: function (data, callback) { + _insert(q, data, false, callback); + }, + kill: function () { + q.drain = null; + q.tasks = []; + }, + unshift: function (data, callback) { + _insert(q, data, true, callback); + }, + process: function () { + if (!q.paused && workers < q.concurrency && q.tasks.length) { + var task = q.tasks.shift(); + if (q.empty && q.tasks.length === 0) { + q.empty(); + } + workers += 1; + var next = function () { + workers -= 1; + if (task.callback) { + task.callback.apply(task, arguments); + } + if (q.drain && q.tasks.length + workers === 0) { + q.drain(); + } + q.process(); + }; + var cb = only_once(next); + worker(task.data, cb); + } + }, + length: function () { + return q.tasks.length; + }, + running: function () { + return workers; + }, + idle: function() { + return q.tasks.length + workers === 0; + }, + pause: function () { + if (q.paused === true) { return; } + q.paused = true; + }, + resume: function () { + if (q.paused === false) { return; } + q.paused = false; + // Need to call q.process once per concurrent + // worker to preserve full concurrency after pause + for (var w = 1; w <= q.concurrency; w++) { + async.setImmediate(q.process); + } + } + }; + return q; + }; + + async.priorityQueue = function (worker, concurrency) { + + function _compareTasks(a, b){ + return a.priority - b.priority; + }; + + function _binarySearch(sequence, item, compare) { + var beg = -1, + end = sequence.length - 1; + while (beg < end) { + var mid = beg + ((end - beg + 1) >>> 1); + if (compare(item, sequence[mid]) >= 0) { + beg = mid; + } else { + end = mid - 1; + } + } + return beg; + } + + function _insert(q, data, priority, callback) { + if (!q.started){ + q.started = true; + } + if (!_isArray(data)) { + data = [data]; + } + if(data.length == 0) { + // call drain immediately if there are no tasks + return async.setImmediate(function() { + if (q.drain) { + q.drain(); + } + }); + } + _each(data, function(task) { + var item = { + data: task, + priority: priority, + callback: typeof callback === 'function' ? callback : null + }; + + q.tasks.splice(_binarySearch(q.tasks, item, _compareTasks) + 1, 0, item); + + if (q.saturated && q.tasks.length === q.concurrency) { + q.saturated(); + } + async.setImmediate(q.process); + }); + } + + // Start with a normal queue + var q = async.queue(worker, concurrency); + + // Override push to accept second parameter representing priority + q.push = function (data, priority, callback) { + _insert(q, data, priority, callback); + }; + + // Remove unshift function + delete q.unshift; + + return q; + }; + + async.cargo = function (worker, payload) { + var working = false, + tasks = []; + + var cargo = { + tasks: tasks, + payload: payload, + saturated: null, + empty: null, + drain: null, + drained: true, + push: function (data, callback) { + if (!_isArray(data)) { + data = [data]; + } + _each(data, function(task) { + tasks.push({ + data: task, + callback: typeof callback === 'function' ? callback : null + }); + cargo.drained = false; + if (cargo.saturated && tasks.length === payload) { + cargo.saturated(); + } + }); + async.setImmediate(cargo.process); + }, + process: function process() { + if (working) return; + if (tasks.length === 0) { + if(cargo.drain && !cargo.drained) cargo.drain(); + cargo.drained = true; + return; + } + + var ts = typeof payload === 'number' + ? tasks.splice(0, payload) + : tasks.splice(0, tasks.length); + + var ds = _map(ts, function (task) { + return task.data; + }); + + if(cargo.empty) cargo.empty(); + working = true; + worker(ds, function () { + working = false; + + var args = arguments; + _each(ts, function (data) { + if (data.callback) { + data.callback.apply(null, args); + } + }); + + process(); + }); + }, + length: function () { + return tasks.length; + }, + running: function () { + return working; + } + }; + return cargo; + }; + + var _console_fn = function (name) { + return function (fn) { + var args = Array.prototype.slice.call(arguments, 1); + fn.apply(null, args.concat([function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (typeof console !== 'undefined') { + if (err) { + if (console.error) { + console.error(err); + } + } + else if (console[name]) { + _each(args, function (x) { + console[name](x); + }); + } + } + }])); + }; + }; + async.log = _console_fn('log'); + async.dir = _console_fn('dir'); + /*async.info = _console_fn('info'); + async.warn = _console_fn('warn'); + async.error = _console_fn('error');*/ + + async.memoize = function (fn, hasher) { + var memo = {}; + var queues = {}; + hasher = hasher || function (x) { + return x; + }; + var memoized = function () { + var args = Array.prototype.slice.call(arguments); + var callback = args.pop(); + var key = hasher.apply(null, args); + if (key in memo) { + async.nextTick(function () { + callback.apply(null, memo[key]); + }); + } + else if (key in queues) { + queues[key].push(callback); + } + else { + queues[key] = [callback]; + fn.apply(null, args.concat([function () { + memo[key] = arguments; + var q = queues[key]; + delete queues[key]; + for (var i = 0, l = q.length; i < l; i++) { + q[i].apply(null, arguments); + } + }])); + } + }; + memoized.memo = memo; + memoized.unmemoized = fn; + return memoized; + }; + + async.unmemoize = function (fn) { + return function () { + return (fn.unmemoized || fn).apply(null, arguments); + }; + }; + + async.times = function (count, iterator, callback) { + var counter = []; + for (var i = 0; i < count; i++) { + counter.push(i); + } + return async.map(counter, iterator, callback); + }; + + async.timesSeries = function (count, iterator, callback) { + var counter = []; + for (var i = 0; i < count; i++) { + counter.push(i); + } + return async.mapSeries(counter, iterator, callback); + }; + + async.seq = function (/* functions... */) { + var fns = arguments; + return function () { + var that = this; + var args = Array.prototype.slice.call(arguments); + var callback = args.pop(); + async.reduce(fns, args, function (newargs, fn, cb) { + fn.apply(that, newargs.concat([function () { + var err = arguments[0]; + var nextargs = Array.prototype.slice.call(arguments, 1); + cb(err, nextargs); + }])) + }, + function (err, results) { + callback.apply(that, [err].concat(results)); + }); + }; + }; + + async.compose = function (/* functions... */) { + return async.seq.apply(null, Array.prototype.reverse.call(arguments)); + }; + + var _applyEach = function (eachfn, fns /*args...*/) { + var go = function () { + var that = this; + var args = Array.prototype.slice.call(arguments); + var callback = args.pop(); + return eachfn(fns, function (fn, cb) { + fn.apply(that, args.concat([cb])); + }, + callback); + }; + if (arguments.length > 2) { + var args = Array.prototype.slice.call(arguments, 2); + return go.apply(this, args); + } + else { + return go; + } + }; + async.applyEach = doParallel(_applyEach); + async.applyEachSeries = doSeries(_applyEach); + + async.forever = function (fn, callback) { + function next(err) { + if (err) { + if (callback) { + return callback(err); + } + throw err; + } + fn(next); + } + next(); + }; + + // Node.js + if (typeof module !== 'undefined' && module.exports) { + module.exports = async; + } + // AMD / RequireJS + else if (typeof define !== 'undefined' && define.amd) { + define([], function () { + return async; + }); + } + // included directly via