From dff1eeb2014ce754dd93eb87d658c70a40e9ab4d Mon Sep 17 00:00:00 2001 From: jade <101148768+jadeddelta@users.noreply.github.com> Date: Sun, 3 Nov 2024 02:23:10 -0500 Subject: [PATCH 1/6] initial headphone-check plugin release --- .changeset/wicked-humans-grow.md | 5 + package-lock.json | 2448 ++++++++++++----- packages/plugin-headphone-check/README.md | 37 + .../docs/headphone-check.md | 53 + .../examples/audio/antiphase_HC_IOS.wav | Bin 0 -> 352856 bytes .../examples/audio/antiphase_HC_ISO.wav | Bin 0 -> 352856 bytes .../examples/audio/antiphase_HC_OIS.wav | Bin 0 -> 352856 bytes .../examples/audio/antiphase_HC_OSI.wav | Bin 0 -> 352856 bytes .../examples/audio/antiphase_HC_SIO.wav | Bin 0 -> 352856 bytes .../examples/audio/antiphase_HC_SOI.wav | Bin 0 -> 352856 bytes .../examples/audio/noise_calib_stim.wav | Bin 0 -> 32046 bytes .../examples/index.html | 35 + .../plugin-headphone-check/jest.config.cjs | 1 + packages/plugin-headphone-check/package.json | 48 + .../plugin-headphone-check/rollup.config.mjs | 3 + .../plugin-headphone-check/src/index.spec.ts | 19 + packages/plugin-headphone-check/src/index.ts | 456 +++ packages/plugin-headphone-check/tsconfig.json | 7 + 18 files changed, 2486 insertions(+), 626 deletions(-) create mode 100644 .changeset/wicked-humans-grow.md create mode 100644 packages/plugin-headphone-check/README.md create mode 100644 packages/plugin-headphone-check/docs/headphone-check.md create mode 100644 packages/plugin-headphone-check/examples/audio/antiphase_HC_IOS.wav create mode 100644 packages/plugin-headphone-check/examples/audio/antiphase_HC_ISO.wav create mode 100644 packages/plugin-headphone-check/examples/audio/antiphase_HC_OIS.wav create mode 100644 packages/plugin-headphone-check/examples/audio/antiphase_HC_OSI.wav create mode 100644 packages/plugin-headphone-check/examples/audio/antiphase_HC_SIO.wav create mode 100644 packages/plugin-headphone-check/examples/audio/antiphase_HC_SOI.wav create mode 100644 packages/plugin-headphone-check/examples/audio/noise_calib_stim.wav create mode 100644 packages/plugin-headphone-check/examples/index.html create mode 100644 packages/plugin-headphone-check/jest.config.cjs create mode 100644 packages/plugin-headphone-check/package.json create mode 100644 packages/plugin-headphone-check/rollup.config.mjs create mode 100644 packages/plugin-headphone-check/src/index.spec.ts create mode 100644 packages/plugin-headphone-check/src/index.ts create mode 100644 packages/plugin-headphone-check/tsconfig.json diff --git a/.changeset/wicked-humans-grow.md b/.changeset/wicked-humans-grow.md new file mode 100644 index 00000000..d6127095 --- /dev/null +++ b/.changeset/wicked-humans-grow.md @@ -0,0 +1,5 @@ +--- +"@jspsych-contrib/plugin-headphone-check": major +--- + +Initial headphone check plugin release. diff --git a/package-lock.json b/package-lock.json index 0a97c4a4..a092174f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2326,6 +2326,38 @@ "integrity": "sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==", "dev": true }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.14.tgz", + "integrity": "sha512-+Rb20XXxRGisNu2WmNKk+scpanb7nL5yhuI1KR9wQFiC43ddPj/V1fmNyzlFC9bKiG4mYzxW7egtoHVcynr+OA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.14.tgz", + "integrity": "sha512-eQi9rosGNVQFJyJWV0HCA5WZae/qWIQME7s8/j8DMvnylfBv62Pbu+zJ2eUDqNf2O4u3WB+OEXyfkpBoe194sg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@gulpjs/messages": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@gulpjs/messages/-/messages-1.1.0.tgz", @@ -3426,6 +3458,10 @@ "resolved": "packages/plugin-gamepad", "link": true }, + "node_modules/@jspsych-contrib/plugin-headphone-check": { + "resolved": "packages/plugin-headphone-check", + "link": true + }, "node_modules/@jspsych-contrib/plugin-html-choice": { "resolved": "packages/plugin-html-choice", "link": true @@ -3967,6 +4003,48 @@ "node": ">= 0.10" } }, + "node_modules/@jspsych/config/node_modules/rollup": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.3.0.tgz", + "integrity": "sha512-scIi1NrKLDIYSPK66jjECtII7vIgdAMFmFo8h6qm++I6nN9qDSV35Ku6erzGVqYjx+lj+j5wkusRMr++8SyDZg==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.3.0", + "@rollup/rollup-android-arm64": "4.3.0", + "@rollup/rollup-darwin-arm64": "4.3.0", + "@rollup/rollup-darwin-x64": "4.3.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.3.0", + "@rollup/rollup-linux-arm64-gnu": "4.3.0", + "@rollup/rollup-linux-arm64-musl": "4.3.0", + "@rollup/rollup-linux-x64-gnu": "4.3.0", + "@rollup/rollup-linux-x64-musl": "4.3.0", + "@rollup/rollup-win32-arm64-msvc": "4.3.0", + "@rollup/rollup-win32-ia32-msvc": "4.3.0", + "@rollup/rollup-win32-x64-msvc": "4.3.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/@jspsych/config/node_modules/rollup/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/@jspsych/config/node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -4002,6 +4080,19 @@ "node": ">= 0.10" } }, + "node_modules/@jspsych/config/node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/@jspsych/config/node_modules/undertaker": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", @@ -7793,6 +7884,12 @@ "node": ">= 0.4" } }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true + }, "node_modules/es-object-atoms": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", @@ -7897,636 +7994,695 @@ "es6-symbol": "^3.1.1" } }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "node_modules/esbuild": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.14.tgz", + "integrity": "sha512-pJN8j42fvWLFWwSMG4luuupl2Me7mxciUOsMegKvwCmhEbJ2covUdFnihxm0FMIBV+cbwbtMoHgMCCI+pj1btQ==", "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, + "hasInstallScript": true, "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=6.0" + "node": ">=12" }, "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/esniff": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", - "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "@esbuild/android-arm": "0.15.14", + "@esbuild/linux-loong64": "0.15.14", + "esbuild-android-64": "0.15.14", + "esbuild-android-arm64": "0.15.14", + "esbuild-darwin-64": "0.15.14", + "esbuild-darwin-arm64": "0.15.14", + "esbuild-freebsd-64": "0.15.14", + "esbuild-freebsd-arm64": "0.15.14", + "esbuild-linux-32": "0.15.14", + "esbuild-linux-64": "0.15.14", + "esbuild-linux-arm": "0.15.14", + "esbuild-linux-arm64": "0.15.14", + "esbuild-linux-mips64le": "0.15.14", + "esbuild-linux-ppc64le": "0.15.14", + "esbuild-linux-riscv64": "0.15.14", + "esbuild-linux-s390x": "0.15.14", + "esbuild-netbsd-64": "0.15.14", + "esbuild-openbsd-64": "0.15.14", + "esbuild-sunos-64": "0.15.14", + "esbuild-windows-32": "0.15.14", + "esbuild-windows-64": "0.15.14", + "esbuild-windows-arm64": "0.15.14" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.14.tgz", + "integrity": "sha512-HuilVIb4rk9abT4U6bcFdU35UHOzcWVGLSjEmC58OVr96q5UiRqzDtWjPlCMugjhgUGKEs8Zf4ueIvYbOStbIg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "event-emitter": "^0.3.5", - "type": "^2.7.2" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=0.10" + "node": ">=12" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/esbuild-android-arm64": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.14.tgz", + "integrity": "sha512-/QnxRVxsR2Vtf3XottAHj7hENAMW2wCs6S+OZcAbc/8nlhbAL/bCQRCVD78VtI5mdwqWkVi3wMqM94kScQCgqg==", + "cpu": [ + "arm64" + ], "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/esbuild-darwin-64": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.14.tgz", + "integrity": "sha512-ToNuf1uifu8hhwWvoZJGCdLIX/1zpo8cOGnT0XAhDQXiKOKYaotVNx7pOVB1f+wHoWwTLInrOmh3EmA7Fd+8Vg==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=4.0" + "node": ">=12" } }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.14.tgz", + "integrity": "sha512-KgGP+y77GszfYJgceO0Wi/PiRtYo5y2Xo9rhBUpxTPaBgWDJ14gqYN0+NMbu+qC2fykxXaipHxN4Scaj9tUS1A==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/eve": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/eve/-/eve-0.5.4.tgz", - "integrity": "sha512-aqprQ9MAOh1t66PrHxDFmMXPlgNO6Uv1uqvxmwjprQV50jaQ2RqO7O1neY4PJwC+hMnkyMDphu2AQPOPZdjQog==" - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "node_modules/esbuild-freebsd-64": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.14.tgz", + "integrity": "sha512-xr0E2n5lyWw3uFSwwUXHc0EcaBDtsal/iIfLioflHdhAe10KSctV978Te7YsfnsMKzcoGeS366+tqbCXdqDHQA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.14.tgz", + "integrity": "sha512-8XH96sOQ4b1LhMlO10eEWOjEngmZ2oyw3pW4o8kvBcpF6pULr56eeYVP5radtgw54g3T8nKHDHYEI5AItvskZg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=12" } }, - "node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/esbuild-linux-32": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.14.tgz", + "integrity": "sha512-6ssnvwaTAi8AzKN8By2V0nS+WF5jTP7SfuK6sStGnDP7MCJo/4zHgM9oE1eQTS2jPmo3D673rckuCzRlig+HMA==", + "cpu": [ + "ia32" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "node_modules/esbuild-linux-64": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.14.tgz", + "integrity": "sha512-ONySx3U0wAJOJuxGUlXBWxVKFVpWv88JEv0NZ6NlHknmDd1yCbf4AEdClSgLrqKQDXYywmw4gYDvdLsS6z0hcw==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.8.0" + "node": ">=12" } }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "node_modules/esbuild-linux-arm": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.14.tgz", + "integrity": "sha512-D2LImAIV3QzL7lHURyCHBkycVFbKwkDb1XEUWan+2fb4qfW7qAeUtul7ZIcIwFKZgPcl+6gKZmvLgPSj26RQ2Q==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/esbuild-linux-arm64": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.14.tgz", + "integrity": "sha512-kle2Ov6a1e5AjlHlMQl1e+c4myGTeggrRzArQFmWp6O6JoqqB9hT+B28EW4tjFWgV/NxUq46pWYpgaWXsXRPAg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "ms": "2.0.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.14.tgz", + "integrity": "sha512-FVdMYIzOLXUq+OE7XYKesuEAqZhmAIV6qOoYahvUp93oXy0MOVTP370ECbPfGXXUdlvc0TNgkJa3YhEwyZ6MRA==", + "cpu": [ + "mips64el" + ], "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.14.tgz", + "integrity": "sha512-2NzH+iuzMDA+jjtPjuIz/OhRDf8tzbQ1tRZJI//aT25o1HKc0reMMXxKIYq/8nSHXiJSnYV4ODzTiv45s+h73w==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.14.tgz", + "integrity": "sha512-VqxvutZNlQxmUNS7Ac+aczttLEoHBJ9e3OYGqnULrfipRvG97qLrAv9EUY9iSrRKBqeEbSvS9bSfstZqwz0T4Q==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.4" + "node": ">=12" } }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "node_modules/esbuild-linux-s390x": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.14.tgz", + "integrity": "sha512-+KVHEUshX5n6VP6Vp/AKv9fZIl5kr2ph8EUFmQUJnDpHwcfTSn2AQgYYm0HTBR2Mr4d0Wlr0FxF/Cs5pbFgiOw==", + "cpu": [ + "s390x" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "node_modules/esbuild-netbsd-64": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.14.tgz", + "integrity": "sha512-6D/dr17piEgevIm1xJfZP2SjB9Z+g8ERhNnBdlZPBWZl+KSPUKLGF13AbvC+nzGh8IxOH2TyTIdRMvKMP0nEzQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.14.tgz", + "integrity": "sha512-rREQBIlMibBetgr2E9Lywt2Qxv2ZdpmYahR4IUlAQ1Efv/A5gYdO0/VIN3iowDbCNTLxp0bb57Vf0LFcffD6kA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "node_modules/esbuild-sunos-64": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.14.tgz", + "integrity": "sha512-DNVjSp/BY4IfwtdUAvWGIDaIjJXY5KI4uD82+15v6k/w7px9dnaDaJJ2R6Mu+KCgr5oklmFc0KjBjh311Gxl9Q==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "node_modules/esbuild-windows-32": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.14.tgz", + "integrity": "sha512-pHBWrcA+/oLgvViuG9FO3kNPO635gkoVrRQwe6ZY1S0jdET07xe2toUvQoJQ8KT3/OkxqUasIty5hpuKFLD+eg==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "type": "^2.7.2" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "node_modules/esbuild-windows-64": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.14.tgz", + "integrity": "sha512-CszIGQVk/P8FOS5UgAH4hKc9zOaFo69fe+k1rqgBHx3CSK3Opyk5lwYriIamaWOVjBt7IwEP6NALz+tkVWdFog==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "node_modules/esbuild-windows-arm64": { + "version": "0.15.14", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.14.tgz", + "integrity": "sha512-KW9W4psdZceaS9A7Jsgl4WialOznSURvqX/oHZk3gOP7KbjtHLSsnmSvNdzagGJfxbAe30UVGXRe8q8nDsOSQw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/extendable-error": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz", - "integrity": "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==", - "dev": true + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "engines": { + "node": ">=6" + } }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "engines": { - "node": ">=4" + "node": ">=0.8.0" } }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", "dev": true, "dependencies": { - "is-descriptor": "^1.0.0" + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.10" } }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "dependencies": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, "engines": { - "node": ">=8.6.0" + "node": ">=4.0" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, - "node_modules/fast-levenshtein": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", - "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", - "dependencies": { - "fastest-levenshtein": "^1.0.7" - } - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, "engines": { - "node": ">= 4.9.1" + "node": ">=0.10.0" } }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dependencies": { - "reusify": "^1.0.4" - } + "node_modules/eve": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/eve/-/eve-0.5.4.tgz", + "integrity": "sha512-aqprQ9MAOh1t66PrHxDFmMXPlgNO6Uv1uqvxmwjprQV50jaQ2RqO7O1neY4PJwC+hMnkyMDphu2AQPOPZdjQog==" }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", "dev": true, "dependencies": { - "bser": "2.1.1" + "d": "1", + "es5-ext": "~0.10.14" } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { - "escape-string-regexp": "^1.0.5" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, - "optional": true + "engines": { + "node": ">= 0.8.0" + } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" + "ms": "2.0.0" } }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "is-descriptor": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "is-extendable": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=6" + "node": ">= 0.4" } }, - "node_modules/find-cache-dir/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "dependencies": { - "find-up": "^3.0.0" + "homedir-polyfill": "^1.0.1" }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/find-line-column": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/find-line-column/-/find-line-column-0.5.2.tgz", - "integrity": "sha512-eNhNkDt5RbxY4X++JwyDURP62FYhV1bh9LF4dfOiwpVCTk5vvfEANhnui5ypUEELGR02QZSrWFtaTgd4ulW5tw==", - "dev": true - }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "dev": true - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/find-yarn-workspace-root2": { - "version": "1.2.16", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz", - "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==", + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "dev": true, "dependencies": { - "micromatch": "^4.0.2", - "pkg-dir": "^4.2.0" + "type": "^2.7.2" } }, - "node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "dev": true, "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, - "node_modules/findup-sync/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, + "node_modules/extendable-error": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz", + "integrity": "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==", + "dev": true + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/findup-sync/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/findup-sync/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "is-descriptor": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/findup-sync/node_modules/fill-range/node_modules/extend-shallow": { + "node_modules/extglob/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", @@ -8538,7 +8694,7 @@ "node": ">=0.10.0" } }, - "node_modules/findup-sync/node_modules/is-extendable": { + "node_modules/extglob/node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", @@ -8547,265 +8703,563 @@ "node": ">=0.10.0" } }, - "node_modules/findup-sync/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "node_modules/fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/findup-sync/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dependencies": { - "is-buffer": "^1.1.5" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6.0" } }, - "node_modules/findup-sync/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, - "node_modules/findup-sync/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, + "node_modules/fast-levenshtein": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", + "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, + "fastest-levenshtein": "^1.0.7" + } + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "engines": { - "node": ">=0.10.0" + "node": ">= 4.9.1" } }, - "node_modules/findup-sync/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" + "reusify": "^1.0.4" } }, - "node_modules/fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" + "bser": "2.1.1" } }, - "node_modules/fined/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "dependencies": { - "isobject": "^3.0.1" + "escape-string-regexp": "^1.0.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", "dev": true, + "optional": true + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/flow-parser": { - "version": "0.237.2", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.237.2.tgz", - "integrity": "sha512-mvI/kdfr3l1waaPbThPA8dJa77nHXrfZIun+SWvFwSwDjmeByU7mGJGRmv1+7guU6ccyLV8e1lqZA1lD4iMGnQ==", + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, "engines": { - "node": ">=0.4.0" + "node": ">=6" } }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "dependencies": { - "for-in": "^1.0.1" + "p-limit": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "find-up": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": ">=6" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "node_modules/find-line-column": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/find-line-column/-/find-line-column-0.5.2.tgz", + "integrity": "sha512-eNhNkDt5RbxY4X++JwyDURP62FYhV1bh9LF4dfOiwpVCTk5vvfEANhnui5ypUEELGR02QZSrWFtaTgd4ulW5tw==", + "dev": true + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "map-cache": "^0.2.2" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "node_modules/find-yarn-workspace-root2": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz", + "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "micromatch": "^4.0.2", + "pkg-dir": "^4.2.0" + } + }, + "node_modules/findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" }, "engines": { - "node": ">=6 <7 || >=8" + "node": ">= 0.10" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "node_modules/findup-sync/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, "dependencies": { - "minipass": "^3.0.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/findup-sync/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, "dependencies": { - "yallist": "^4.0.0" + "is-extendable": "^0.1.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/fs-minipass/node_modules/yallist": { + "node_modules/findup-sync/node_modules/fill-range": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/fs-mkdirp-stream": { + "node_modules/findup-sync/node_modules/fill-range/node_modules/extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz", - "integrity": "sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, "dependencies": { - "graceful-fs": "^4.2.8", - "streamx": "^2.12.0" + "is-extendable": "^0.1.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=0.10.0" } }, - "node_modules/fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "node_modules/findup-sync/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/findup-sync/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=0.10.0" } }, - "node_modules/function-bind": { - "version": "1.1.2", + "node_modules/findup-sync/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fined/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flow-parser": { + "version": "0.237.2", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.237.2.tgz", + "integrity": "sha512-mvI/kdfr3l1waaPbThPA8dJa77nHXrfZIun+SWvFwSwDjmeByU7mGJGRmv1+7guU6ccyLV8e1lqZA1lD4iMGnQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/fs-mkdirp-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz", + "integrity": "sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==", + "dependencies": { + "graceful-fs": "^4.2.8", + "streamx": "^2.12.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "funding": { @@ -12765,6 +13219,15 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -13124,6 +13587,12 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true + }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -15703,33 +16172,89 @@ } }, "node_modules/rollup": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.3.0.tgz", - "integrity": "sha512-scIi1NrKLDIYSPK66jjECtII7vIgdAMFmFo8h6qm++I6nN9qDSV35Ku6erzGVqYjx+lj+j5wkusRMr++8SyDZg==", + "version": "3.29.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz", + "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==", "dev": true, + "peer": true, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=18.0.0", + "node": ">=14.18.0", "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.3.0", - "@rollup/rollup-android-arm64": "4.3.0", - "@rollup/rollup-darwin-arm64": "4.3.0", - "@rollup/rollup-darwin-x64": "4.3.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.3.0", - "@rollup/rollup-linux-arm64-gnu": "4.3.0", - "@rollup/rollup-linux-arm64-musl": "4.3.0", - "@rollup/rollup-linux-x64-gnu": "4.3.0", - "@rollup/rollup-linux-x64-musl": "4.3.0", - "@rollup/rollup-win32-arm64-msvc": "4.3.0", - "@rollup/rollup-win32-ia32-msvc": "4.3.0", - "@rollup/rollup-win32-x64-msvc": "4.3.0", "fsevents": "~2.3.2" } }, + "node_modules/rollup-plugin-dts": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-5.0.0.tgz", + "integrity": "sha512-OO8ayCvuJCKaQSShyVTARxGurVVk4ulzbuvz+0zFd1f93vlnWFU5pBMT7HFeS6uj7MvvZLx4kUAarGATSU1+Ng==", + "dev": true, + "dependencies": { + "magic-string": "^0.26.7" + }, + "engines": { + "node": ">=v14" + }, + "funding": { + "url": "https://github.com/sponsors/Swatinem" + }, + "optionalDependencies": { + "@babel/code-frame": "^7.18.6" + }, + "peerDependencies": { + "rollup": "^3.0.0", + "typescript": "^4.1" + } + }, + "node_modules/rollup-plugin-dts/node_modules/magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/rollup-plugin-esbuild": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-5.0.0.tgz", + "integrity": "sha512-1cRIOHAPh8WQgdQQyyvFdeOdxuiyk+zB5zJ5+YOwrZP4cJ0MT3Fs48pQxrZeyZHcn+klFherytILVfE4aYrneg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "debug": "^4.3.4", + "es-module-lexer": "^1.0.5", + "joycon": "^3.1.1", + "jsonc-parser": "^3.2.0" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.10.1", + "rollup": "^1.20.0 || ^2.0.0 || ^3.0.0" + } + }, + "node_modules/rollup-plugin-node-externals": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-externals/-/rollup-plugin-node-externals-5.0.2.tgz", + "integrity": "sha512-UGAPdPjD0PPk4hNcHLnqwqsfNc/u0vaAjWnjkyS6j2jIMB4LLi1pW3TE01eaytJKZactNik2t8AQC33esS9GKw==", + "dev": true, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.60.0 || ^3.0.0" + } + }, "node_modules/rollup-plugin-typescript2": { "version": "0.36.0", "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.36.0.tgz", @@ -16580,6 +17105,13 @@ "deprecated": "See https://github.com/lydell/source-map-url#deprecated", "dev": true }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true + }, "node_modules/sparkles": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", @@ -17726,16 +18258,17 @@ "dev": true }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=14.17" + "node": ">=4.2.0" } }, "node_modules/unbox-primitive": { @@ -18846,6 +19379,669 @@ "jspsych": ">=7.0.0" } }, + "packages/plugin-headphone-check": { + "name": "@jspsych-contrib/plugin-headphone-check", + "version": "0.0.1", + "license": "MIT", + "devDependencies": { + "@jspsych/config": "^3.0.1", + "@jspsych/test-utils": "^1.0.0", + "jspsych": "^8.0.0" + }, + "peerDependencies": { + "jspsych": ">=8.0.0" + } + }, + "packages/plugin-headphone-check/node_modules/@jspsych/config": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@jspsych/config/-/config-3.0.1.tgz", + "integrity": "sha512-D4hcvgSublBPMuDR7C09d48Zxf8f65a7EBhLRaP1Fvy5qcxVrLOfL2t3eSUaPLyxV13xvDIuojh/7J6ET5Oeag==", + "dev": true, + "dependencies": { + "@rollup/plugin-commonjs": "25.0.7", + "@rollup/plugin-node-resolve": "15.2.3", + "@sucrase/jest-plugin": "3.0.0", + "@types/gulp": "4.0.17", + "@types/jest": "29.5.8", + "alias-hq": "6.2.3", + "canvas": "^2.11.2", + "esbuild": "0.15.14", + "gulp": "4.0.2", + "gulp-cli": "2.3.0", + "gulp-file": "0.4.0", + "gulp-rename": "2.0.0", + "gulp-replace": "1.1.4", + "gulp-zip": "6.0.0", + "jest": "29.7.0", + "jest-environment-jsdom": "29.7.0", + "merge-stream": "2.0.0", + "rollup": "4.3.0", + "rollup-plugin-dts": "5.0.0", + "rollup-plugin-esbuild": "5.0.0", + "rollup-plugin-node-externals": "5.0.2", + "sucrase": "3.34.0", + "tslib": "2.6.2", + "typescript": "^5.2.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "packages/plugin-headphone-check/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "packages/plugin-headphone-check/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/plugin-headphone-check/node_modules/async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "dev": true, + "dependencies": { + "async-done": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "packages/plugin-headphone-check/node_modules/bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "dev": true, + "dependencies": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "packages/plugin-headphone-check/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/plugin-headphone-check/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/plugin-headphone-check/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/plugin-headphone-check/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "packages/plugin-headphone-check/node_modules/chokidar/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "Upgrade to fsevents v2 to mitigate potential security issues", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "packages/plugin-headphone-check/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "packages/plugin-headphone-check/node_modules/fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==", + "dev": true + }, + "packages/plugin-headphone-check/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/plugin-headphone-check/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/plugin-headphone-check/node_modules/fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "packages/plugin-headphone-check/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "packages/plugin-headphone-check/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/plugin-headphone-check/node_modules/glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "dev": true, + "dependencies": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "packages/plugin-headphone-check/node_modules/glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "packages/plugin-headphone-check/node_modules/gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dev": true, + "dependencies": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "packages/plugin-headphone-check/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/plugin-headphone-check/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/plugin-headphone-check/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/plugin-headphone-check/node_modules/jspsych": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/jspsych/-/jspsych-8.0.2.tgz", + "integrity": "sha512-R7Ve/Gl28PCEGLN4u5y/FA9fgVquJuyrPMxsVMyUfVtGZK2LB/XoyDbln9pHvAkJFmNcOS34kKnq08QbSiOk3w==", + "dev": true, + "dependencies": { + "auto-bind": "^4.0.0", + "random-words": "^1.1.1", + "seedrandom": "^3.0.5", + "type-fest": "^2.9.0" + } + }, + "packages/plugin-headphone-check/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/plugin-headphone-check/node_modules/last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", + "dev": true, + "dependencies": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "packages/plugin-headphone-check/node_modules/lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "dev": true, + "dependencies": { + "flush-write-stream": "^1.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "packages/plugin-headphone-check/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/plugin-headphone-check/node_modules/micromatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/plugin-headphone-check/node_modules/now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "dependencies": { + "once": "^1.3.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "packages/plugin-headphone-check/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "packages/plugin-headphone-check/node_modules/resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "dev": true, + "dependencies": { + "value-or-function": "^3.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "packages/plugin-headphone-check/node_modules/rollup": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.3.0.tgz", + "integrity": "sha512-scIi1NrKLDIYSPK66jjECtII7vIgdAMFmFo8h6qm++I6nN9qDSV35Ku6erzGVqYjx+lj+j5wkusRMr++8SyDZg==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.3.0", + "@rollup/rollup-android-arm64": "4.3.0", + "@rollup/rollup-darwin-arm64": "4.3.0", + "@rollup/rollup-darwin-x64": "4.3.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.3.0", + "@rollup/rollup-linux-arm64-gnu": "4.3.0", + "@rollup/rollup-linux-arm64-musl": "4.3.0", + "@rollup/rollup-linux-x64-gnu": "4.3.0", + "@rollup/rollup-linux-x64-musl": "4.3.0", + "@rollup/rollup-win32-arm64-msvc": "4.3.0", + "@rollup/rollup-win32-ia32-msvc": "4.3.0", + "@rollup/rollup-win32-x64-msvc": "4.3.0", + "fsevents": "~2.3.2" + } + }, + "packages/plugin-headphone-check/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "packages/plugin-headphone-check/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/plugin-headphone-check/node_modules/to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "dev": true, + "dependencies": { + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "packages/plugin-headphone-check/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/plugin-headphone-check/node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "packages/plugin-headphone-check/node_modules/undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "packages/plugin-headphone-check/node_modules/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "packages/plugin-headphone-check/node_modules/value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "packages/plugin-headphone-check/node_modules/vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "dependencies": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "packages/plugin-headphone-check/node_modules/vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", + "dev": true, + "dependencies": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "packages/plugin-headphone-check/node_modules/vinyl-sourcemap/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/plugin-headphone-check/node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, "packages/plugin-html-choice": { "name": "@jspsych-contrib/plugin-html-choice", "version": "1.0.0", diff --git a/packages/plugin-headphone-check/README.md b/packages/plugin-headphone-check/README.md new file mode 100644 index 00000000..930fe736 --- /dev/null +++ b/packages/plugin-headphone-check/README.md @@ -0,0 +1,37 @@ +# headphone-check + +## Overview + +Allows for one to check if a participant is wearing headphones using an auditory task. + +## Loading + +### In browser + +```js + +``` + +### Via NPM + +``` +npm install @jspsych-contrib/plugin-headphone-check +``` + +```js +import jsPsychHeadphoneCheck from '@jspsych-contrib/plugin-headphone-check'; +``` + +## Compatibility + +jsPsych 8.0.0 + +## Documentation + +See [documentation](https://github.com/jspsych/jspsych-contrib/blob/main/packages/plugin-headphone-check/docs/jspsych-headphone-check.md) + +## Author / Citation + +jadeddelta, adapted from the original [HeadphoneCheck](https://github.com/mcdermottLab/HeadphoneCheck) repository. The paper is: + +[Woods KJP, Siegel MH, Traer J & McDermott JH (2017) Headphone screening to facilitate web-based auditory experiments. Attention, Perception & Psychophysics.](http://mcdermottlab.mit.edu/papers/Woods_etal_2017_headphone_screening.pdf) diff --git a/packages/plugin-headphone-check/docs/headphone-check.md b/packages/plugin-headphone-check/docs/headphone-check.md new file mode 100644 index 00000000..643b2e1f --- /dev/null +++ b/packages/plugin-headphone-check/docs/headphone-check.md @@ -0,0 +1,53 @@ +# headphone-check + +Allows for one to check if a participant is wearing headphones using an auditory task. + +## Parameters + +In addition to the [parameters available in all plugins](https://www.jspsych.org/latest/overview/plugins/#parameters-available-in-all-plugins), this plugin accepts the following parameters. Parameters with a default value of undefined must be specified. Other parameters can be left unspecified if the default value is acceptable. + +| Parameter | Type | Default Value | Description | +| ------------------- | ---------------- | ------------------ | ---------------------------------------- | +| | | | | + +## Data Generated + +In addition to the [default data collected by all plugins](https://jspsych.org/latest/overview/plugins.md#data-collected-by-all-plugins), this plugin collects the following data for each trial. + +| Name | Type | Value | +| --------- | ------- | ---------------------------------------- | +| | | | + +## Install + +Using the CDN-hosted JavaScript file: + +```js + +``` + +Using the JavaScript file downloaded from a GitHub release dist archive: + +```js + +``` + +Using NPM: + +``` +npm install @jspsych-contrib/plugin-headphone-check +``` + +```js +import HeadphoneCheck from '@jspsych-contrib/plugin-headphone-check'; +``` + +## Examples + +### Title of Example + +```javascript +var trial = { + type: jsPsychHeadphoneCheck +} +``` \ No newline at end of file diff --git a/packages/plugin-headphone-check/examples/audio/antiphase_HC_IOS.wav b/packages/plugin-headphone-check/examples/audio/antiphase_HC_IOS.wav new file mode 100644 index 0000000000000000000000000000000000000000..6eb901edfeffd22c2f4b927e87572b77d1539aa4 GIT binary patch literal 352856 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 literal 0 HcmV?d00001 diff --git a/packages/plugin-headphone-check/examples/audio/antiphase_HC_OSI.wav b/packages/plugin-headphone-check/examples/audio/antiphase_HC_OSI.wav new file mode 100644 index 0000000000000000000000000000000000000000..92d410cab376fa5e3ca0a9aa58d55986bdeb0fe8 GIT binary patch literal 352856 zcmeFaceoVA*7jW;CeO~9C^<_MBlLQ+f8JE4@&9Twu@L{Sw*TxL|J>$3+xA!c|LWggbtsI*Up@G% z<$tv>$jz*93vdhj>*nWH_J6wl^*nUHunoE`Y`@T^LOToXF7$=`EA+Qe2hyidKhn9- z`a;XeVq19gaXa&dHwSJV%oE<6%*_k82yl58`Dw@}z-vYq@OpU5}zlYA!sNej}2^dY@ScON_<56E(Nc%#-M!WQQ9D3-^g zS#EfXVL3cDyk+w^Mq3t-4{w<~f&Euo;l72(7M?4Y$AsIUwn!Cfn>;6b$S$(4Ft%hn z`9c0r)W}DAM6sfXQ+y~cq!pckw4}2}qlFlFK~|H+WNjkL;K?kVr?6CBggxU$*;8ID zyglK?*<)UUJqm9n*+c$cZM1Lk@b(zzcoIGros-U;%+km$jVK;Zp{-Q%U%9bSgr z=H=KeUY_0H71-~*61&bTv)_1?@b)XO%C7Nh|8k?(Xrq1U7&`U_ugGrVJhySaJG^YT z4Qh*&dIHa%LCG|DOm>ldlsgnp>KOs}purc4oecj>cx1)16lID!#fS7sf=8qs#o#%3 zQUy5BqL+nq-y~uvTxz6L97jW)hcnx+r+!m=-0d1Fs4W-!qa88hY6jRD4 ziX+94;zzNgo<}kBBB~UtY(zXAdq0I&50OcC;Sp&_x?X`N7tz{zw0s6uoPt%yc{6r| zw`7NS8}>bK&%Waw*-JvA1vP$wz3ENg7;=yct5t04`l24 z5VnR7W2^W`wt|mlpYSnkDId$0@NsN0f154(+eVM+d3t>m_8WoyhvK+FY%TB4Ht@ID zCf<{6LmOYg^POmOZ@BFiu%QvWt&1F~0Z*w1l!2GUV0Qv)KqNe*YDm?RDrz1gO7Wt8 zbPJhx6$v)uk zv5)w>VMSIzsdeyrGw%aW-#}ixg1ELrRyTu(FT&pH;r>ZgjH(^=J*t&N&Ey}l$*}xwzLJgL>)9Z_nf2jcupayy z_8R||y~6jgPW*e;o*!au_z$cVKgwESYr&7P=Hc5TxKGa?#Ot)*UhKaM$8E>)+i;%G zSYN)H4T0yQ`A6`47MlhI=fZ}?d@x(hd%>oz$mq7{4ULdfHPJWAp$8Q~kD}Po$VL^E zD(qdn96|kLBfMJ9hr^qRh{;U$4zwKxZ~E|!uwXl^*$az*U=8_?tPcN~ zRpVD#1%8v2;`dlF{+K26RF=RqSuD?C(L9eu@%+DS^q8Kf*Hd^JD~|n3fS9sEzpJVm;Z}8*+yvSsU+{2vQ zU<$WLK_f~kFcPIqqnPy6C?(xD%1O74O41FZiu9XNO}h5Ct%~$3p8p-M-@<wL}D0f?W?Hajgf=pQ5~ZYHy`TE15}NlkiWZ;foqU`vykf}5T|bZ zG;0FgDuy%2BpF5uw5j!7+ylTs7owA9czBQ?Nn1LKs`$T%)FGY(6wjD1o^;~S}~u|?`-td<5F3#GS> z_oW#)?_zlTnbBGL)@Uf5GAf|mSSYG7nLk0sUqmeTp|7rG15g8|q1voQ)!U1nbqRGp z6aCGC9#|G*Ni+1X-fT8{>=5*+j(iXD{vwO#>4=dcJur$RHg%<4@Msluo@u-%jWm`? zZy29Tt>Hl(5|p(O1dt~F5M|->hbauy{LR&e@?!mmz8hp<#1b0zNeRw zAL%9KG(APm(_`g;Zk1I-mtu^3={e((RKvImMUF$E9Z+jE+M6Yu*&n@T7Ag*nMyKJ+Gt_(=dR-NG*BSL@EV6MKdh0&atLyA}?nAyOL#G#| z3r2TohcN*e3SUcLmc zpXibt($l1PK zaaS<{(g-<&Pi5WFQ=dn?%;;115UcNvR?<@FHPTojwL|ulGk%v8BOpCS%cu1h2#rm%d4EtM8ZV=;!6K`fWKu&ya1pSLP@Te$A@5vwm}&X-qtFE@Z1RPBW1kyzA{4_qb$~XD;u?T%6D1~<)W5=bNOXe zzX6rLliTP^^XRel#*w$t~@MfC@Ap5{=_ zYIT%NS`X!YSlCLf^vrd#XEVFh^cMxkm;4+9#ik&Hq)5ka?{-4`=(970j3kd zR;FjclBTGT52~D3M?CE1ts6GshRo8^}sog?uH7-=sbUirCv?2JZX=v~l(~H4?$r*gk{3Ouad@}Hsd0SwD z`QyNc<|%>Y=8=K*=7E7v&HV#w&4U6<&7%Ud%u@rS&5Hxw%wGmxFrNv;m@@*Yrnuk% zQ}f^lrt!f}rf-6gru5(iwMuBNIxf^mJ%m_VwRK7lt&Orv%a$#uy94w(@^Sqd>h?Hk zwhW*bHMG%`o4_*kFgho6$2H8V987dI@=)K3k5|pUFG4w#rM$|ALSLk9w&s zk!|@wlWB9Xo9T_e;+2>%MpQ2!d-uCz?>e{7lSpJrL_A8I-1?_{~-uVgU=BukyZRr4^MXKP@f`Dvi6 zxk~W9X(D2KCfM3kG?b@~53N?Oq6gGQzh0wFK&^Euqfn!7>$T;Mm=zp_54HGR%&~^B z5|}qHM-&~B%4cClVwcqbz(?IKj{N4kD59Mlg$Ot ze0|`Uxnsa?;r>@F2mDJc@A}VM8u<;2#b4EW)Ay=%x9=V665m4WMBk^@0lu%S-F-W( zU47fFulYW+zU5nF9pjr|o#*Rj{lZtxdJ%7Y1byc%)%}Ys!~GpC-}q&V+rQV`0`XrJ zP|W#(Ev7EP#-{zjYidbk>Y`9S-o~1uyo*sLUz>&ABg;AZ3~4OpE^cEY=9{?~743hGOtE$VNqWu{!TGCMHVTr6fT>%ExadeZ+XA4&GLR=+v$DN_Q+e_R@|3q?FSXU@%6D9z6fh~|96(}{jXa} z1oF%a0w0+5K&*LUaIMJ|EN+?*TCZxM1a&S(ngrdDKi5ae4KQL|#@u!YuDBSBV`~w& z+L&2gl-d}B`pE_I#(+Rh$@W28HISCxTT>rGh`3<_3nCbN$@h+rP|m#aF`G(YMWd!CTJO z&HJhCi6_cF)ic>%)N{*z%3a$r!9Cki!+p--cA1?gUG<%7UHzTYTr-`+Tq~V@T^pVK zv5j`EaL#efaDMLU>%8Ks>$JEfXIuA4$1?Y1$1`_%M@!Fn`*zPjdr_~)_KA0zEy1T* zKlP2bR`)-#ob`9M3=Zrv+k+1Ccfo$9L8t*KnxR}lh4~ovcQP(W5!@+V!d2TRxTftc zoivKbhJF__pHG!3T5t7mD8*z1ub^_zH7^O&wcPhVu+;I-u`c$NvE_OX+q!!@+Ru2d z*&BPhI(~pBt=)B<*IjF!<6JIhlB-3;nS!|yGYgJKv?<7mNGgbqbmdowyp>-&@?w6i z$P4-9BY)42jLgZ;h=?vY6w$Qc{fNm0^&*ZIJatC7K6H+7J?FgY+Tm#FuHiW5{>t7O z@%+^@-8RyD*BargW8LqYWf|f>XD%7Ao9_nNU<7$j9TD20)Yopy4&5X_(5p%ZjIL}M ze;4oEtTQ@D$1q2Kik|7zZYeK>cB}m{J}nEpW0&)XWcD(~&68+o;&%I80eoSDBcG7T#9EchHz{eZWx?S0=mYbXCDOQ}E*eXykYUa*Pjbm$HBTWyr`8D{BA zjgO@{d<~n5tMhTvPGbmWroEI?+RN&tP*c`Q{N99+KdXTp(s!v|&=*-*?qi5$nh^~}dCFX9<(3nqi zR>q9Z*&ov>=WI;4GsP9_{LR(DvEKczeUxXNt(|wjwW{x&CE5R**%`QHG6!#} z=Fl}n<{aw9VX2JqHD)AhcxyHfS2E-E;qm}&s?sgAKy4dbZE6zOWNzU9+|tnZxwWPD zGh0{BQu|Q%dyWrXy`8%Y>P9@tS0hX3pN$-uH$CcPZsq85x#yx+=Jbe(&$%13DZ6WI z}=$I?5OU^vsd%F zZFPJ()|TikJp$*=?*@06*24Ca+CU{6*D1xgUFw8)@7~9JdKYHH_m#F~)4JKW!8XUc$3Dh$%+b&NqqCRmSVW(KU6G^nmq*RZ8x_4H_r;j|Ilh>ZIbXz% z%5E2TKI>Lo-K<{mdowS_H_fb;a5v+CJB*+=Wrow|5hYXY5Gm zm@y*Zql~14I~lv+X_5Kti^pFT3+#Y#wcMoT@0R5;zIp{*O<%_tH`{nss)1SP z{g6*t9BgZ9iCL27yJI=%Eopln)w#WUsiTDJs8h>-81XbO7i-GsP|+X*w%$0SPW`H9QZ`X)6@JCfv1H6@=+ZIHY*wP*60)SY#1a|4gtHl45@u$uj(;iZm$<6g1+hhP%(2P2 zwwQ8xMpX0sCy~PnjzoOw`p9|T-N8}WE7{-2tl+l4i=}BW$MjWbj+(3|DhrIQ5@Xfb z1nHoWF1OZus@Fp2Oap_pEFu3&>ndM?t-iOl#ka{Hf<P$;u&ZtMt549q%+8G?Jy(xca|_|LPeS9Bm5uZgR$ScuOf?>!#n;K$n=mw#WHWY~%e0EO!E3 z%pnR^okXN*n!JiTaA5T5l-dm;H2JR6$I zQXHvmQcl9NMeuAaJR1zp-iBw(;o13T50Vq$*@RScaz^UZq_@-VCPu=uBk4mEre`dR z@0$5_T)nJ)u~oBo#?;JN9o;H-Le${A){)EeZ4s9WPC4S;Z(~lAVms_TU@7YFVxARv zs%8hr<7!!wFY62Oo@x?5%r@&ar6$6& z1<8)o%;b~L>cX>;@N5x0TMN&Yz_YjES(B86R1Z8`4bRFazn!)*DKg!hbR@k;;`EHQ z30*VK#n;P9MW1uU*38L|X_b3FdT`#csO9;~A}SJa1QXCwIBA5wH5WpSZ4*k zHfIN$nR;til*{^Ca%)`Q9LD=4HDs=DQ5I@(xSDw1yesh3($3%7mg?PLU*yShG>^p(ibJoNlQ!) z!n4`%?77ssDOcgy8hADVo(+L#qu|+mcy{QSCz-*sp78AF)Qw3mrJ0kSru9f%lD;;f zbH=&&VwtINTBa*DJ1ajXC;L8X=CP<^dCMZ(=D!&+y&wUzy0i8u&sf_aZ;bVn?`w0# zKr_>_;1xyE-jd(Z(^;A^9`8?b{i?JObF!ki%HM@+r*{5@mQ-)Hb&;p7y|H_Z!&mUo zc{smBx}>YwWah--3`xLCBKw*3Z7L@T9Q65v2(_S zgkqUIUdt>MpPf}JE+@NotdUbLrdXaex^4db$ms=NMVxdEaYlKHIR<&p+D`d~St|xi zmSw^9CJ9$&@92l+G^4H58}FrG#e2JLlr-&o_1#cevn{yLvdN!qZR%@lf9zS~Sn7W0 zZ0jl!X)Aao>U!RU=v}!BV^-!Yk6oDkaop0ZiSeIjzLanwBR)~h_$l$F^kGTc)4WMV z)5a!$2G8oHmP>g8&pwA|@1eg9g=fRz*$jC0%`;m{_Oso|E#cXY)Kf`S;Mvi%d5Htk z;aLWcf0j`y{$ysYxLsMbW53BR7jrPj8htJIeq<=`tB4u}L!4t>#TXZaoP$lM_kV{MeWM1hB-*vn1$KhVwYxhiTgaWN&JP3A_;27lZ2PjHzaOPYXQ%G zOZqJJRd{wJ`N^|5c-9S`&46bs;n`|<_5nQW0ndu1v`jq*&-x`-NqY*Y83b)#<~tV54*=WBE7}!!+j^L zzu-!!UeIUS7Mian>B(Y@6JwkhjJ0LzgAU-=FJ|8DOA16K^ zCq5r1J|8DOA16K^Cq4r%J_9a311>%TE?| zi0?TO-{mE~%S(Khm-sF(@m*fxyS&7Ad5Q0<6yH}VzOPbzU#0lIO7VS_;`=JacQT9b zWES7aEWVRjd?&N`PG<4D1LAiF#P1G>-yIOYJ0N~{K>Y52_-!5W+dAU6b;NJ$h~L%` zzpW#FTSxqUocR4X@%wS&_v6Ix$BEyM6TcrPej`=W zE`A4G{0_MI9dPkG;No|{#qWSC1B0VYA+fGftg963D#f}=v940As}$=h#kxwdu2QV4 z6zeL*x=OLGQmm^K>ng>%O0lj|tg963D#f}=v940As}$=h#kxwdu2QV46zeL*x=OLG zQmm^K>ng>%O0lj|tg963D#f}=v940As}$=h#kxwdu2QV4j472H8yh9oRf=_$VqK+J zS1Hz2iglG@U8Pu8Db`hrb(LaWrC3)f)>Vpim113`SXU|5Rf=_$VqK+JS1Hz2iglG@ zU8Pu8Db`hrb(LaWrC3)f)>Vpim113`SXU|5Rf=_$VqK+JS1Hz2iglG@U8Pu8Db`hr zb(P6OQx_yV#JWncu2QV46zeL*x=OLGQmm^K>ng>%O0lj|tg963D#f}=v940As}$=h z#kxwdu2QV46zeL*x=OLGQmm^K>ng>%O0lj|tg963D#f}=v940As}$=h#kxwdu2QV4 z6zeL*x=OLGQmm^K>ng>%O0ljonWe5y?kUz)iglG@U8Pu8Db`hrb(LaWrC3)f)>Vpi zm113`SXU|5Rf=_$VqK+JSNXqsU1gfwM(?iv9y(zf87yb924-2e`>xww^Oka0J^h_$ zU8^FN6da2joPRs2eO_90gWP8^4RU^s?U21EZg|%8_;s1}6Yga^N~oPNDREtTFflQG zSkkt%ACuaqIg*XkCdubgdnJFFIwW}=Znxm^u~cVrPU`8TT4^Jb=BM#QciQyCap~C! zQbvb_%^54>yJcR9OUlw>GqRFnFJzaG`5~u5^ugSsQK$0M$ea0(oWX+c9cA6K?A<+W zZOgo>^_uU9xkzA~X>hQV`d#RrJR%CaB6)f(Rto3nc zGb_ZuoVh7JJ;R=`BBO7@s~Ou8%4GbWV9M|%1k=?-IfEw@%}7gVlW{EJgN)e;*D~rQ z)XuySzcq7MeEF=5xC2=|;@-?Y9Ba#Q#{QJ^O3Wv@bE8M*?TYG>|8r#Xf;$n7T#ud2 z-47fud49DI@E*5K_ieRq^3S&X6zFYs1#6i~X(qLc{+m3@*edPgZ?h+?1&@>Cj3!E| zHds9tnr~Vc{ML zkr(n`j#ynV$vMik+R@p))Bb|zh^?IWw6(bJjHRgmq`5@kps9TD8?{zwgVJ1ED0kH- zOM{Fd>|OpEpU+wwYovPm7jiXik5VCYKrJ6UWU3O_Z?5P6+S0+d#yZG5-8SFT%f8=T z-I3!8IBL4ScTO)D5pff7Y?{9#a!+2PsM>i)qE6)2jP9MgGTM@x6Ma0VUd+6laWTDf zHpH~ZITTYj=ckzZIcH-!w}=RtQL$4t*^dspvIwo1NytHmF0&Ggr_{2FL)J`wC? z+8r9DZq=qJYxFttVq=Lkhp%N**;YPA`qtRASzps4{uSqZ;L{jvA0RAZle^>8R^@zebkH zpAtDWKR)t){?>?>3o1sOE787AZdm%pY`NBc|G>45hI2445^%cTz*yiMEM}p zUp*A8YVrmOO!Wf0&F}k1ST6XATg&)m)#{Duevul9=KwhlU!4s zMO`eZNE}R_sGxmTJl%M7-F1!=^jvVQc}k$Z<+lHdrG>x0^;=)2wY+bXZL9aGt+MxZtQ|OF zf5lV8QQ#i!SnodQ=;97IqTJP;H(WiOU&G`1u4T?~u1}o$0Pgdx2w=yRqYt`>8$JGsiy0Q_TLm=NnraZynna?|0TlzUtQFzActc z{us+${}l5(f%~S&U{ll1;5xMnV&)5VR5ofG<&L^b^671)ZN_TWm1l6qn(!TLnem2{ zuFG-@{VVxXt+Qf;a+H3d1?u@=8B@LB_olA`t<9wa7tNdeFI&p{&s+BTnpoTVzP3L0 z#@Ob1N84(lrlxwL>{~sr+DCX6*&BF{+haZHcDLK=xbH6ExaO|nxPtzA!(GXd<}Tup zJhG##=K-qJe*0|CZ2K`!JG<&t?OnVFZQHzqY?9Az8|eGWdePU++8Cg4%JgfYg-jXk5bm@ljPdQ1L>mCMj8yC7>i?T*c4tvdSslD zIvG9W1A3-hL7$?m)>Jh@TcFMjMVOS(N2WRGgAu_A<~4yw=Bk1AmLL6JSqAuJtIgld zy5IMib-3>_;#tC$?(J&Z=Y8Myp?9-wfcGf0zXH$i*vfnF+e&+H;r0R^e{XB+U4z%h zW52f8Kh~D&y>2b-TW%fb>tNmC3tDuM^ z8mg-v3VpBC*Xk;Vv^{cTy_$Sd|3YeSJSSa7+`97^c8`C=2QigrvKh!zLoblt*WZ?z zo+r=MMkrC*BV~Q)HMLskw0a7;-8;C_qz8Pa&4I4w&Vet@hTm`g&fmiFwttSLuK%P( z^7}2#x2V zR@tvw>moj5{i`hB`roj4{c)D&fuGFF0+Y;XfimV6!E>ff!4Xi|W*Q#aqFxI%P@8EN zm0emNrIem6FW0BYHp48xj~eMQibx~*7WRl&WpA?m{1?`ow~#Iv-$^};a&o% zpseK~^gikzXxZqWVwvw>V437!VHxFLZ5f8!5&ngicl^^VGyOv>EB&1;yZx0dSN)2` z@4s#?8`x@oJuuSzaiE6zTp-6}4}NKSIrx@oO)v^o6G(=q-id0iWdz6;itI8&= zK$i8z@*uskd`>?tRX5&}RvKQW8;jT=UV&ZU$9Wz0CdLDo!KB5;K&hH>R=S{9kVort zvoS~4~DRfv}5}Ksm2-Q?eqtcDl)+)!e4oa*ZkO%AAJc-YiB_?@XkaJ%WX;5yTQ;5^g2!7-*q!LFvSgEdi?ou<6t zV>LOnUu_+lgL8LLzY3+O4?_2qBHAXUyVg%xrIk=_X*cB(`ZC0;gS1-0O$O_P!lyPl&mIdxyZaz%G(%o zw`u*An_4v`TKCEw^ds^deHJQ58<`naxtZ~kG}D+TokYw`T#?%G6Kny0pZ&rcvKZ#) zud?s>3ib}a&T8>Qsleza?KPH36OD^f1H*zdG(|p-mp{SGtdD*}eqJ{#Os}c@s`XI5 z(WWbNq3HnaxYA0yqg2$~s6aL~5Gtysg(|5xL$%dk;Q855WA#*cs}JjIsTV^PaqW?U z_*+$P$fekEY-#O;(n#B)^w4H0Q&1%~X!Vs-TC|d>J(Uyn0~n#^%j5Jn_a||y~4j@Df|I@VkAhr zj1JO!#x$v;u}dn7EX~#<jAB`vIQP5 z)kZ0^wD**W+I(fCwoDm}>x==~dTbkTe=VL{p-j*gDl@d1%3|#ujJ*AoecDUP&)SR1 z6RjkaQOYnXRvx=pTN+>>54_MrF7k#-v0rMpH&DS`)B zV}6c}=BwFfdB5ZL~t9M@y@XmC_h!)XsP; zl}4pC^osHwy&Zb-Ao)}D$=Ui^d6>Q%bMVs`XMUHf=&5p1cpQmZtLPRbq&XFj7Nrzm z%hw_lmu6Lbnxq(-56Wc9@%kOPw0=RZr5}`A!;>ERLd54C`6I+=o8AzL7MCCBy2SO{ zQYqsA`qpx32u7@hMtfJ@ktS`bV&IG3xG8Y|G>^xP3?eSe~rUlV>6x3-pQdDt$P-=p}!L zYss_l<`&e;)#GKep-UyuPCes-)YaH6jW$+D3yew9S4I!%C!?X1W)zcbJcR0Ti*@1$ z5VMtR2_Mh)@~-SRUY+@P1S`Ta(euvn-s}tX!nyoYHW=}1!|$*PJjiT32{EiKT`@XK z`;8&e24lMP0a_VtY?t0Jj!LbK%kcIAVwx+(8Jc899}Vfzay}|ix?Vzlte2MW>tzw^ za`Nr)Z7Do1CO^>=7DTBjz4=4YTAkvRDki!m9G`SX;h^4dBz*4CLQ>-ijT>`1TujumYaLBiU768KZa` zwvPA59@F66DroU7tBo8k#vfwt5@0z-6f&SJ#*r6MZ8}PujNZ~xW0W+@cuyK{d?XD; z_VzY5N!^UEF@xI+uMbJhjAQ8Wr=*6)X;h{&;oBy7+#Juh#p|81-|N`FkFgnEtd=IA zM$d*fOO0{TMx(#98y=lBnn}MJ&r7LBQ7L3tr0DPr|1N9De_~zu9yXM(W7GKusQ07T zPW~D@&6}{hygYOBDCR`;%CHB#0b=(GB03npzsKhBrR;6~IqS_2VuZNB>S7Em%kx+) zXOhgLQBO-qPmHS4b$EInBgaw1b)WIN^fl%OTZ}={dSke>3jK8%tXyoogRCBpjc(~N zJwF`th=I~N?7tbueTC!qppPF$Y|g-wD@G~lo)Ir)B1Qqj$E-Y+CGp>pOJ~@Nh*f*c zta`%6QOLFFd?Z`O-(=emodc+mKcko3=T5{efL`~ECu1zH%ueveY!`o-ZNQkf5brxo z<+Iob{t4^FH?z)sH*3m|v6}oMu8eM>Pd;OjJRdO)v5=v{+Xz?^FFl36_mMfbjdIfO zsA0dM&t8KH*Nkf6jUNAQRKn}!v0o`DR7}b+5~Y0PMF4$V=A1dWmnER8J%^mBg3+lS zKhIjBr*wf0Z^5gP7`3MId2BwP%vST^=uJJ@_q-!U>_(`JRoPQs9C3?aDl;&G=kn5s zT}^g{H)SXJOQK_J>fKK zfQr_F?_(WtrP+;dLYu4D5dJZ8X%>5rzl*#Y$v#2<`jmHL+j%?ms7CA*uYu}chTY~# zEEWCD%?*rk1&AQU?lv!rS8K2zQC$uq!aI2vRMehqEv^@qppMStli2&Hv=i}O%NV`{ zo~~m3P=vdl7{ryfxz0 zkX=SL-sBb8V_t$~^LUH^4vcXUvtxb|$8vZvM6(>bgYn@SM!)mn7`A1HkfnQYrtSPK zwgq0U$JoCTtt>%IKSJM}18--bH@^ofCh-Mq0%H6&tQw11>u6;3D84+LMI*zvbf2DE z3UwC4`i01c`A};vt|e!&Y3M&Q`4rUa379>NMH|D}3O*23?k#xq2Ky3f@8lgYmuks= z2*>IL*!ev2tvoy{iQG%V`w7v=Lo4ctgq#d=Gh!Ek(IB2Z;YCqrO0(a2C1_C{N4^k_ z<5AumJ+&>g>J*OWcK$kgZx6N^t$vF7x(;5i=0jo0aAeC!wv>;CWn)TU_P-PUVMhWz6Iy}9OtGsc455Q%R8g(_J~m{^q8iYQ8mC- z%nR_SI_#_rd&}aQtt7lkL4@L%3%&&49p^IooX+j=GYTHYvn*Z&`C1Ztm&H*P*$rNe z{ffSLiPuF9YJf90Ms7F9Y^@cvYm4mdfS%k5ee@;7_Z9Xntl5cq>JIdUZ%~!L4sWmj zc}tJ!dD>{dF5&968`keZHTVu5e2?C6C>)n&>=@cQi8jxm?Q^^~<{Q{^^&7mo0hMnf^X`U6tmn|Liihn>hgVsMNG{$JQ}*- zX#vifAC4<&78~BE2UE*beaVWfur;LZf3_9wTX<}2SizidEa=>nJJc4nNx4L^Av?$( zvdadKC{AQ6#ma=}P`t0aeX^x6K4cr&NcI-SiXudQkUxcS`{N!}O?u^z z7?S^g9Hsr~X(+4@X++x}trWIKRku)q|M~4dpR2Hq!g&0l^dE64w2AC1+zRcc2o?H5 zF)REl^tCXCe|Y)FQGY+nA7?An>R;WG1%+|{cekY0zdH7>&;4_o^!Tqf72f}=-G%oH zefsMy^}a&C|M|91oBtQL|7^>@d;C{l{;T_iI{a_C{jY2muL}i)0zv_yfKWgvAQTV^ z2nB=!LII(GP(Uak6c7ps1%v`Z0il3UKqw#-5DEwdgaSeVp@2|8C?FIN3J3*+0zv_y zfKWgvAQTV^2nB=!LII(GP(Uak6c7ps1%v`Z0il3UKqw#-5DEwdgaSeVp@2|8C?FIN z3J3*+0zv_yfKWgvAQTV^2nB=!LII(GP(Uak6c7ps1%v`Z0il3UKqw#-5DEwdgaSeV zp@2|8C?FIN3J3*+0zv_yfKWgvAQTV^2nB=!LII(GP(Uak6c7ps1%v`Z0il3UKqw#- z5DEwdgaSeVp@2|8C?FIN3J3*+0zv_yfKWgvAQTV^2nB=!LII(GP(Uak6c7ps1%v`Z z0il3UKqw#-5DEwdgaSeVp@2|8C?FIN3J3*+0zv_yfKWgvAQTV^2nB=!LII(GP(Uak z6c7ps1^#aokl6nj|2J*^PmbmPi~s&7e*AY;mf8Os{xkdjouB_MGzR~V==|TK@&Et$ zcdh)hMgMI3Uw!0Ag%<(5q_6HH{4r$4E~R#^S|?tuVnmrL}vI5h3BJlQybJ4wMlK04P*=1MD~%L zWG~rHK9E23M?R9TTWNaHk+3Z8<;;30Sb?t#1D4!8wwf*auXKe^8T;5YssDSVCgrDNz= zI>&85=c98|8`KuHNo|u26n(Ob?4x*6EGfSzhU5#yj{KvTQQng86f4q$v?+`Y=|_5! z!lgl3Pyti|RX{aR9n=7|KppS`s0-?W7yqO_`;X9Tv=2eY(6O~aO+e?Qb5k4CR(U{e zmjV=LiY>*I?4&qSFQt5=_)+ZWk8+g!r5q*=DA!3B(&!N&?MO$`_E&HP`~rRkKY`QW z6gUBnfg|8BI0O!W@Bd^!|BujXw9i36`~Lurg5%&MpmU!E=K-}zZBz6q#uQhIDcMQ( zlHHVVlzS9A@{Mwo{H1tNePeL$ClW0!zUsU)wH$ISz?!TVq`7!O8+p`ah2_;v-9FD*a=K>d?q_#8+C6g#RTG@emSB%i6? zQJ!&iGxDA473DVN zI>l)KAl)Vb((_|Lntukq1mA)K;21aqE`TfGI=BVyf(PIcc>EXWF+G0|+y=jctKcG_ z^Bf0sUON95;8U<1%m)OS>18Y`$CQvafOQC?H5DDSC1 zP>jX`icNPwv1kVBf~uf2NC7dx4pd;^F919sALN1@ko_lgKM%No4`@KG!(!7Mm2kK`uu6zwBUZe^2rJjKL1!-3X z!~zLWEFOVt;0!njc7QEl4Oj|30v~|sU@DjlCjANBe-F$6bHGCI30M!l0DHhOa1q=F znSf#&$s@z@ti$Vs`!V%RiXr6}#gE2I%0H_4G{(`GMzw}w)*nm(%K&LZc~5;I8z_<@ zC4nk{wC)1>gSWvpW9b~vgQlP> z7z`-J6xVOSY48A09I2nz15}$QfED07K;tvbw`fdn2xuNbHHc~;#p@xUd?&3aPQAcn zupI0HKY<6p3mmdTE&*zQX5b~z0}KMAz&l_PnDQr+<;n5{Fa`_(y+Iey64VBzKm_nf zzHl29`)|M!KzZ^is10I3F3V*<1FEMp0r^4op5|JVn^a@gfOi1ZqjG?OTgEM8KOoJ< zf|mhl8Vx8W*TD~9EBF{p27|$Cpe<+!YJy6jEGPw@1EoQEPz}@t&B4o{4;TmLf(>9l zxD2v^({P4!gKT&QtOnF4Q$aM3<_*9gK)FZrTDpFr@qp%s;{c5#q=65Vk;+Iffk|K! zI0y1Tf}9}N2R*@iU@h1Wu7Gr4fLJ9~DFbSP#-I)81YQAMz{{WmXbI|rs-QTq1CQ*H z?|~n|7hpaZ3R;1Zz%TiwOJFN_7f|gj0y0Kqt@x zj07{lYOohv2KgXfkJsyieqbRu2+}}`kz#ZNRBI`>XzZkX>jNkUsrFM|(wvdTiW5Ks z^`v^zIPevC2$JPwxigpnc7ul?Qi%*}-cRYL%mdrOd5{KVRaTQhRnQ2u2VFsT@FsWz z&|`YOF{lPo03DaAq$=mYmtZ#N2`K*bcTK(~Zv-O%^~<0Xl#T+b(=C7us8&$jpc+E; zgy#1&_n>)3x{+>t4hDiU;EDc3-v)+(=Yd!AYRAAr&=XVz61W+<8QKSyf$^XRXbEb7 z(jW;$g9s1>5;%^UN^Pi;R!Mskd<;$j9Z(!60g560wJ=&3^TAb6 zj2GiW0L`y3#D(W%YuVcH_)qm`IyevF<#@Rl*aFf(6{U(Y0(=FYfMRMfwF{U9z6G~| zWRgr}Knu_dj03a5Vz3&l18c!@Fds|-gTYInCWrhJpaRGZ<^~UekHA}?9*76tfH!a#oCAl!ZtxA*0rrBU;1YNWSdayu1FgXr z@F}>+!oE%*>z00~-x)(`9kimvEy0 z&{(wyWPsL6Yh?p)f!1nkbp?0;Dw!&oMu8n54U{yOGaPixFOw; zMgy8d(e)x-+t7O)bRBiyxNnRD6tgw@8ofF=tDOz&WQ2^+r=U4V4WfTonU+k;H((H;Sf4hZHje}m;7ik&rl#PEdPRK;P+c7ba^+lkG{}@Pr9ptM4e9-x z3;Y6a31~iF1AM7}8J;_A&^BmA!Mf18P)YE4@bh3za6E84&<*7HbNnBJn&6J_j&BiY z15Ds&@6X;fU^M6mYJw6V4#a>YP!2Q#J-|%xEl36BedT>4!66Xkj|#{CqW_}5ZlG>p z8z>Si5?l`ALUEy0prlq(`x-RR8|W86U!$+#1@t})UGvbj^Bd9|Qa<=l{!lKVlnB?Q zmTF5VbVa3__ZSQ|4>msry)3;fmq0^nL+d7h%Q)McU^{SuI`%sDQD6f&4IYC4Fgwf+ zJ5Yhg?y=tmKY(SR4=4lf+3wkvf`;Ip^`3PyaDvsA)#1Ln!Mwqo2&m5bRG-=poKemw z6~R1tp8QC9BsBtbtxoUYHwUYXRYs1UqqhMYwT)T`e>6`05d0xn3M>dL2n78>|7eir zOY;o{Io=%admt9<^6c`w1{83}eaJlpv;>L3g}+Dep_kCFfd$3_qcv|G z9^>e`dZIK@sxDW@$ni{Gr>s*ttDRL1d~W*O)XCh*oCW4t=2?nbi(0<|)os;nJ3%>n zIr}Go;_{l~HOH5r0MvBWbPfhf!5;7vxCVX&=fQViB^U`_1VKm8u?O@8Ca}@I(Ow%I zu^q8B1Ba}Ktku9;%UXIH($d%5*L>J?*c1Z>r~_0Q|8!ZG+klUykEN@44~FK;y?8Ia z+1PB*T#e@LQ?;quxzM>#5kTV&jZqcBLjOX)4}TQ1hu(+YejweG?wJDOz<&3BcYi>! zxbC{{+6cyjuAm`!9#jP{fOcRoSOiW0dIP1kyR~}-$OW%@UiBOUwY{~&eeng~3%(QJ zRsXC0Y_Kq}Fi;~{BX|?c3(X7B95oAU(YNTmj9x|}PYl0@Lhp^x`x-PUI|xQAqm@!> zsc>I=&-9+DjJXV|)oF7-OFxSb%(c$7M%p56i-FZ{wNC;MKvPFk$8zuhly;VO_5kz1 zc5n(@0Tj23;4t_MybIa@J2>q)?U(?HgG2U1_LspO+Z|h9aL0Pb+65f59J5pa^Ud?k zPfbrvjlg1cv3gIrr&I>xN^Mvhwtz3-myOFtB6v%GOaD^)QuBm7q1Iqc za80lvP!M<-?D6mM7Xu4?3w$z|;ho{NfEAtDX0Oe zfSRBM=nZCry&wnFa@TUt05?E=Pkql8kl;-S_qjMXj?5HJVL!JVLI zsAtHbIl^<@3Hk(`t~1lXX1cdNl><_+tjY6uBITM`qaSE zz;YD~unw?hgR!=;woK65-rIf_RCH8y%mBZDSZA!WGnfXpfTQ3N`2X6w?-gC})`eURP{I#1de+8H_?_Xh6`ejWHa&=lkR}l&P=D)y9=ICg@ecN(WmU_nkywkC)h(-^L>=y} zxwobQ6KW^aCe$U=%|my8_xj`2#{!Q9Is`ie_hV*gW=QA!e1sR){#u{^bl`7ZI(OCi ztUkYJ;BMgl4&y!JJ?*^hyjwBGH^!G0mld}Vz2bYt|A5O9E=$;q-if^v7a}7mBk3-D z0avmsxfkxkTzrlnp#Js~HsE7S$1OM+`APXnuj3*VCl)78MI+2hn3r%IX2;KtPr#VC zF>$~8e)V<3^WNvZM?6P7-SD{karYM27S1?xTsJvyaxQQzaOiW&)1c2HR)$w{gzXLw z2n`6m7JRM#IA6!-Z}{KvJ213vXx;YO?e)hXYiici^u^}t&DFOcSQV^#0|Vg0ca`5& z&cdCz7+s;fwa1wlfYF$XEl90Ot-2N;BCa~F`flvOGtF*dGtE;rSN~^21?+(~^2kg58_T2&d?tp!Fz`h@6-;cBJ z$JzJe?E7){{W$x6oP7se-)*$-fZKP#?K|N19dP>&xP1rQu5)77IkD@U*mX|qIwy9W z6T8ldUCYa^s8wID(!lec1>oxCbM0W z*{;cK*JQS9GTXcZHt&GVJ7Dt;*t`Qa?|{uaU~}u(+&VV5j?JxObL-gLIySeC%^zp; z$JzXGHh-MWA7}H&+5B-fN2<+{YICI89H}-(s?CvVbEMil;5HAq%>!=pfZIIaHV?SX z1O8y>!O+H_)m2(urPWnhU8U7kT3w~pRa#x8)m2(urPWnhU8U7kT3w~pRa#x8)m2(u zrPWnhU8U7kT3w~pRa#x8)m2(urPWnhU8U7kT3w~pRa#x8)m2(urPWnhU8U7kT3w~p zRa#x8)m2(uWop6UBIkB1(t2wcn6RSC~niH!zv6>UBIkB1(t2wcn6RSC~niH!zv6>UBIkB1(t2wcn z6RSC~niH!zv6>UBIkB1(t2wcnlPi*&z^>(G*YdJ!dD*qR>{?!SEibF9w7N>GtF*dG ztE;rSN~^21x=O37w7N>GtF*dGtE;rSN~^21x=O37{Qp~5Io3JW+1}OObpS8AUv&5N z^!1crmUou-4Br{PEx04@j<^bpj~^djhkFw4N!X8miTx7iqYizO`X)VwFOiRw)D=9jqIUs@kgBCvZGA)NH63jpOlK^>5X0VieB92}nYyDpXa20OG3Ss+*%b zZpRDQgp`_;nyc|HqPV&C=GqPDRM)9)0h;@p`{$y0pm|^cIs`ieS7AVCK&X6 zdlBV0KmPpqS=f!n35^pj!z8?eudxUDC`B<2U<*FQObo*r2*wBFSK>aj#+JA(arYw= zANfA=or^8rE#B+#hvyH^5FBycs4?COzD0yO1lI=E2ChY=ztTSo-H}(9SN968L^k%;?yY?v6LAB2;v_Uf zLo`B5bVPp)!8Ck^0<^AcU3UjQKsEaN`}<#mZr25_3#>xhVB6qKI780R{m8@3;hV$1 zU{GXGWE1*F`$yNIhogt%b98cca=wq_T*tX)!p-eo?1lQ@yYP8^-dpe~eB1`%W$Z+H zTzcGjxDRu%0y~h4Dg=(IjH`@0jBQvB<$n}q+VEibL;lbl^uVFuq2LVk zKzX1%@E(SsEsFic{?G9=Zb1(mhd3zy`A}ay0Oh(0UccAh3}@j6Jc>p5137`5z!i7_ zzo2EXW$-S1fs{~6=yrU8hT(?c`>+)qBON2pqXJh(uZ%87jw8o00ef(^^K9pARAZoP zpzB?PG0;7bD9v*hqKl`C=K-uh4Nmi(=DiKi;|u%_htJ__icaW*OK}CR#6a{zH=KY( z6nTrh8}SzYhVzkuU7lT@*Ki}6V268$dm4J7+*R&+6Kbb&_AUk?;0QS8;}TRytE2O9 zA*v!(kvA{^q%ph*x1$NRhqi}iK;u#dehK~(d=sN_E*hdNP!`yNC76q;&^S91L!mqm z$GvzMGoUf=EBuBi+63DKFT+GEg0`1tp=P0L@FIRjPBt)=4X86tdoAXs%k4D(x*x`5% z%3C}(L^njI;9NwweT7Nr10ObrH-}%uEohH$C>+{?xA8EpMK@?%jRYgXTx`dBe1?zl z9^S?K(C>QuYwSQC^tzl-PN*xc#(2!bx2V8z;p4&s@d%b8564B0i(G>l*a%P56YYfw zP=71Osg6?}!|*25@3Nd(&WrE}K1D8aTsieQ9OD|}ng`{v2x;y#cSl@`;dlhI@D7$? z4Zg!>{0QCa_qAA#_wX_v!`-+NXQB!GF28FhKEYGC1!o{0yPdn8A7BD5KtmjK9CR$g zgXoVe{2u*1`Vq!M`-X-%5;+oCj;Amfoe+;d!heLn#B7YibvOsdBMCL3n$SV)fMUK1 z%dr@X@ClY-CDudv{|zP3z|{yHa1n;$F}#g$QHb5;A1iK+-daCyXgxHB zIqR0In{TlCK zI_|?Y=!rH+K~1ElK2|?Oeu#XAxA6iV#TX334Y&;baW2lr88{s}b`brn$CUeCI3ELX z9fsguXq?t|@;VkldHNao&@oh2G%I=%G`6dqqc9b(<1=hQ9<-0sw%HLE;AZ>{io;v@ z44a@BRX};nMjLd7`s4syhdZFWD$Wl=W36)h1fD!fKR=GicnE*PXbgjLa|Lufuj3@; zs0GpxbwnK{_zgcm$H8yoc|42}xC-Y&V}B#KQ4%ewKj---`b~5RbgZKMXBxrlDL>~5ICw|0tP^?#BB|eA7T~W?g;7hE*254LO3A=F+MW}@<>WZeKDNaN; z^n;EW?|}Zs{TN=vJ5bKP!!8s++hmF(#nA#CpfP43ls|31iivVK7w1I=+FI-@5pgvOm4F%vqL7>va2P_8bA+NgYKY*arx0U9IIq4m;s zSqW{U8Z))-8f(=5zQU*Y7|Nsi;%q2x>XT1EIaNG$Y%>-bXGi01+y%v4=ZP`;U61Sk z^*lXauX_LwVKN@a(|8W*Pp{xDC{K%^W5!j`_`V4{pzTgMD?|m9HA*bZo1*8ZU>ltaZt{qPiM zEIl2H*;!Cd)i4WodJ``W=FV!C|`U`qo^c+23pK<88Ryk4s(Pue&?=zuoN6XZ* z)u&EE8)!UKuGCJoSM5%Na;D=g4|EGh!}Yn-`f6J(g|=J8;xLrQ{ZK9yE9Fyh+m3Be z|5R=jQ;k;}k5Zh!{R?_r^t|t(*XXrBLOIcU>bEn7MI1Ip78=y+f4)VQd8 zRYBvv`kKZO-PGrlJFTz!p7wc)fwo=kD-;*?Ma4+t>2Xj_6+7isacm3qQ{`B(RX-5r z`_E$kr{{@Yqu1&^^nM!e^xj&AmZfEC*=mFOl+It&F11f%qPDjrXxoc})aXpsu9&_yD`Z@L*y~r*U z?DcxTSU&XrvE^ymYJiJ0V!6}$YQ44ou{HV<`s5Qf&T8 zEXV&H_kZ>NvB!>WOYG-k+k5QKv32_M{jux*=bvNo`Tu?Y=XU&8zyEn%{@L%x#^Qh5 z&;P95|DFH$U&ZlXJ^tU>2751yfJML}U=gqgSOhEr76FTZMZh9p5wHkY1S|p;0gHe| zz#?D~un1TLECLn*i-1MIB481)2v`Ix0u}*_fJML}U=gqgSOhEr76FTZMZh9p5wHkY z1S|p;0gHe|z#?D~un1TLECLn*i-1MIB481)2v`Ix0u}*_fJML}U=gqgSOhEr76FTZ zMZh9p5wHkY1S|p;0gHe|z#?D~un1TLECLn*i-1MIB481)2v`Ix0u}*_fJML}U=gqg zSOhEr76FTZMZh9p5wHkY1S|p;0gHe|z#?D~un1TLECLn*i-1MIB481)2v`Ix0u}*_ zfJML}U=gqgSOhEr76FTZMZh9p5wHkY1S|p;0gHe|z#?D~un1TLECLn*i-1MIB481) z2v`Ix0u}*_fJML}U=gqgSOhEr76FTZMZh9p5wHkY1S|p;0gJ$&Bj9xW@AKz2{=gxn;+;|Je0AHV(0Dgrolu zivB||`VWEVKlr2nx4P*6yZ`&0{KqUM@E=Q$wJ6rgSi58EqV_0hU%9b>st925`5N3l`{6x%eUBLi7z zfNV5G4jQ8gnxffJ%^l4hEsi?Q@vrH*dX4Bk^j>;Ty|znTofb4OmS4y^O1|gIEX*+JN98O_Fy-D#V^>2pO4xR-4WgX zU(o-Fo~zgBwR(?T(0l5=wG1um01n{@@}PF9eafryskSSJS|8<3+o#r5+pyMOy+Qd= zd>TQqQ!HEJ1hm14I0fy|0jHx2x}qD-!r3?nJ&x+>=;`S7Cwffu96h%?^tv;l_tJan zy*on7IvMTI8m*vQt9{C;wkPFL>!AE8cUnK?OzW&%DGth!@}u1R2E|Zu-Gll%tcNyeNLkg<{+n7vNG1!qvDQ zH{w>@fngYdkr;*1xCi&*zGLWjJ+A-18+TzihTt~bgd3n`Tn;T$%kBf^S-DkC)lRin z{ZxHY+n&Y_^*8l1ZL`XkVxWHW6Mn$gP+k;A<>5WNg;((sp2IXu#S~1$1dPKN+>6n; z8zYapD|%P`PkL+=?!kQ+iwE!!9>HUH8Z+=BUV)bVKD1pZuWPXpYOngI`lGfzQ~yH6$@?m%8_EFxZMoJRB?U)kKjqnz)N@)Z{b~hgio*xpJ64w#8*eHcC4=d zX_aGD{o^YfE9#%O)UnjD2p`~W%)@LvkEbyOT|g2n^&LFG{7!i$h28*wqt#z|0&6A*|5B1PDb zpYScd#8P~Kx9}=n!c5G-GnfwD>vuh_|9=H~zFw!-ufliOfdeRmBkHKny>hEz4hgg5a4 zmSP1~V;wf&8|Z#L*5C^)!$+8p*_e)r(EHwuOVJ(ekO}4V5H>^odM-2uXpFrGr$OVs z`kVG)+Lx$*J&IvauC(1ZfO7OZl$%9(8Iv&**PsVK{KIP z>_jbcoH@=jaSg^|CO*bS96$gWt_)XOoP~>V14dvhCgBM@gXb~xs2Q#qu4#A-4`MWK z!xiX_)6f`B-4o3R)#;C@_=j!1_3aIY z6qE1@KF6;Jpn0Tuq%ZD-`m6eQ9<+Taf7+*N`_q`OeVq0UI<8R8)}s<9I8UgL%_Gi7 zoC~oF9+$_}9#=uJego@p06K_khBI&pZo$2H1k*4JbMe|y`dN=XjfohI8*u?TA{%wC zI@hoG6whHedLavkorj&D;xP<@#%1MC`&R9P&xOWHjgi{-YagOF%dVS7g{3)b-}t|E`G(2_!jGr`X=~Ia5H|vVbmfylwAMX zb3^BbZpLK1gDnW)#PEsX>o6T_p+4F<(m65;AE5vzM^EO+=Pr&?7uKK4=y-c9K1UE5 z11Dh(w1e*n-2YiNk zcoesz7jjVSE_Q!~>9`s#aL{$o^)~K6E9`adb-sv8pbo0zA&vJs*3$lbGCJc(Tg+x;B&;Y81go_nwiRp{jH1*lhjhiqQPhu8c z#p{@h=P?DNa3#(_26DZ*-p}zEEoiR zh3j@=8Rpx3oV0ZlBvX-#g#i1KT~@J$InoUGAO$jnh+HQ(U@fY}c{N-=NP%hC|05*I|2j zdw2l84}BlH5Z?#C4-UZ3fu94npwwULe-zE2c;5&gme($?9f^}sQd3g10@E=J7orQ= zq7_=B1Nz`5Ou@%EfabN$Yj4Fzh~S#KYwA8j3x5m$G-!ZS9xE|6I5rr<)X>zB_NVXQ z?8w=Xt+I}YzyBZN8sZ9LrhBHlji-%gIr@70dN*N^Z;$^Ra7a*NS1U~QPxY79mDcBJTkW>mi?OL@Q_Yn)RDG!WK{Uns zs`XW4(GgXZRh8>77Y}0uZozFBg~#y@wjr)6uBty~;t2Xy_pSZ_O>3IgynyW5?Aq7S zp{_&Sw;1Xl>Q4+L20n$_**MfVv<*5=(m0WKFf->=W-q=ZQczs3I+-vv|R zro?UZZS*DLeDC?*hdd8?7P=R@_qg`BywLfI&TaG=ht8u`hgXLWhYr{0?2Oi*S1d|vZ;&BWS? zwU^XgQrF7gs=g2I3+xMQ2yO^|68a=GFFY@-v_f+4hzU;W{I6r=g|0Vw8gpU&@B~D80pVU7oE;%mwE8LlKXG%(HO6mf1Nb8Wc z2*;-%pZ+9%$0-@7WDLhkSdMS;J-)(xjK{g~r~A|AqZc-(ZB842wW(|Cb3Hj_a>|zE zEyFNJ<9_!2?Az_#?cL?s<=O7u?%wFy=+e32hmH>& zbE0#iPeh)G=y?A2(CwisgI5N1?9kKS(|>l|*>&A(yVv%u>05Jo_2t#WtAXL()SURz^U0J)b{a8@GpnPn_*orGEuc$ny>YS<$)g7wa*R-$cQro4r zZ(ZNI>;2dJ#|6d(<_6~m*M-)Fio?ZWeQu+39-ZqhaxHT0ckg$ncvHM*`p)!eT$&s| zIsUbT*AkW_E=gRSv^weQss{l)5N&R@$tzyVLJZKQrUZj9R>#`EKR~Sr=sO z#^45n8*E1V?Dp9YVI>YjC$PSTzJ|fy@up?yuTkb#l$g_5E*8-JZH$fnI_4gYO4(!a3n-k!ca_<8)q~@5*=G;JLx0eaGo> zr^me%|5AKKLPbKqq<%@yB|n$EHDzmxH_e;YKD~W<|BU__S7u(BIVfvTR?h}K8#Kvo zl6?rTHGHjMpGJKe{fsMeuE<%1tj1Z5uf!vG3A6DSu17O$%-NW8D-Jh0+~{g7X}F|e zC_9wh1=lyYzQO3M(OF|M$7J4_ac9P$^g-z-r=6Tun^K#yB6&sf=%mp}%@dm^u8m(C zukEbXTkCzw^OPsYo#S5MT;SB_<0~R7BK^Ys!rOz}gLee(2ypsU_j2vawP)3wRdcB7 zP}Q8uIhEH`TvO4iyj3~7xzar)drCGJZ!Z3^=*Ob{h5HMg=u*(7V0`}g{B3#L@_OLQ z+%IznqV`Dbk)?PXcVQUDV;=V4l-yHtpF?6^VtxM3%s(@~2uli<6g*w{bm9F)_ZO)z zjwu;aGOcu4=_h5MlpQEPP<~wHah1cWhE=VoUQwM@n^mi0*1i6{{tJT_23LkwhE9u| z7SU%Y`fNm>Yed~q_bBfu@2|dJeLdoP#A`e%Pb^RDncOp3H8_N&*-NwUX?Rb=rj435T7olj&d7Ni`eWMp7>5@y2h%VNr{VXU-*X-Yhp0IZ zHhQqpZw-HIcq)cx56_<2U}l34vp&pPmbonRiDmkz8ywag%L(68B&nn+iv8AFxRfDSAt8cIVqUMX5rgcs0 zrue7$ivz_0eGafSyfxe}+AsQr;|oVeS4Y=;_k4GjH_JQGH_>-E?r>bcgnkLHCBBwe zlvI?Y@o8l0$ke%MbJM;||1y0`#+Hm7nL9E!W^K&+xWUH_CTCC1?%S|$!wNjx=-EaM za~kGMLm|30?%H@Hp2b`|hx^bI)j8EUv(XlBGLx!D^VY;2I5m77(W zS(#a$QJ%3seSiAuwAE=dQ)i}LmvUW7c5-&|w~5~--ji@oLPmT>{D-~|edl`5^=@-- zbKm5;$(8TOcj#{~`lIpm(DabblNR|G`7fxupf0y2x8~XEXRCWu^{A??sIB;-{EPBw zWz))rmkuwzyyWtdONuWkzN+Y|qEUsT3TGG0F4&R3BmV?Ep7(fOAUBZvC|csDBR?IP zgRxM5yBkkoCG_F=4fp{A@&@D`#&h}4U>t8 zU$pkM_DzqQ9#7xwMFV>X_uvqO&^;+J!5*ttjt-N&tyH5 z^|uCpYcL>tKz4(M4H|xj5sgMPs=+-u_vHMHHjUdfz7zUuj^{+0bJ*(Fr$EZbSOsB}^NG061d>BY|%Jzw-r;X8$!3N{sZFd%^#oS+`a>D-vPJpfZKP#?K|LhofEsxiCyQ!u5)77IkD@U*mX|qT3&W7FT0kPUCYa^ zoxCbM0W+2$Rvc?WFX z0h@Qg<{hwk2W;K}n_I``*0H&DY;GN!TgT?svAK0@{y3XI&gPG^`QvQGtF*dGtE;rSN~^21x=O37w7N>GtF*dGtE;rSN~^21x=O37w7N>G ztF*dGtE;rSN~^21x=O37w7N>GtF*dGtE;rSN~^21x=O37w7N>GtF*ex3|B@bw=8ZR zn+M$H0k?U;Z60u&2i)cXw|T&A9&non+~xtddBANRaGM9*<^i{Pz-=CIn+M$H0k?U; zZ60u&2i)cXw|T&A9&non+~xtddBANRaGM9*<^i{Pz-=CIn+M$H0k?U;Z60u&2i)cX zw|T&A9&o!}rPWp1^(yUpm3F;KyI!STuhOnpY1gZ?>s8wID(!lecD+iwUZq{H(ymu& z*Q>PaRoe9`?Ru4Vy-K@YrCqPmu2*T-tF-G?+Vv{!dX;v)O1oaAU9ZxvS83O)wCh#c z^(yUpm3F;KyI!STuhOnpY1gZ?>s8wIDszV;$?7VtuF~o%t*+AQDy^>4>ME_S(&{R$ zuF~o%t*+AQDy^>4>ME_S(&{SzSJzeMx$<1sc&_oR^{(}{iE9%#C4Nf$&V-!_t&&st0ow_G&Pg-7jUiy)YBN;m~cVsTfT9P%X!K4OfWuKLO01q^LpkV+b zxE9;jNXkjd>50J@2HorTWNc`(q0vZ08%7&WLUDF+_C65sRxn|B!8ClS<;lmDT)0P`X_keJ@Ko2t9FWY!p?;Y(6*>;(dW3X_`2eRl7y1)@IvVer6bEmmJKQ&RNlLycf~oC=T!Et z>RmOUdO-EV9LOh2a+F1o}Dy1>EpzY6IUgyO4ty;A^w}VZ{pVZ*7;U= zS9m}2eB^n}{hE8aYr1Q^bG&nyW0>Qr=vC2vk$#bG;cnsfq4uG6!FIv6fwqBD{HOT4 z)pe`8sP>}TAvHs4o~nMTdU@6Is*=i*%1)S6F{xr#`L6O_SW>p6tTWb@t}VS0aadEb zrsN6Sh(73wvv3ja#BBVGmZdFAAHY5gDjQU`4TH-EmsjGYikB+-RQ9R#V@1`9s>#)p zt1qv)yym3ZlWODY;_3>q!@tA7Hn29ZIJh{tAhaMfCp;%SBQhiMc=Yk;gN_Fsqn)Fj zx4Le1UFN>b-QCmObG-L>uiNML?Z>jXW%d2tsgtl9C#Id4HUh6>1NNa11=x!5pW?I)x5eKUUx>RC?oK$2 zs}rwIT!kh{O_D}o1^noc+#&gTJcyZi9dF=eJc^;{3Ej3PZB3en9ypwMIPq~b!$%1p zC3L~3@t?+b!2G!RaT%E4o8a5;-S6!MwNp8}7;m`Va8)`ho#$h=W45CpS`h7tnUR^1 z{BVA_4_*(w9*P7b!CUct;QK%~yzhVCe>^lUwZ+ofrM3NWu;yURRGbdwa{=zc*~ml{ zxBb|TZTJ;=a8^63TVo&|#cFtJJT-&xHk`H2+B>irJ?eVYEyZd6)BKCjCD0|X3Ks=0 z3hu$E(5R3*><+(z&XLZM%@`UT8g+1+gO1LQ&TnwN>v~rqCb%cKJ=~@t#hc=N8tQ{% zaR3*_T^RR1T=A~>D=`lT(ITNm!sVEVx9}CVVK4S$H#Xrj%)uCFKb47{@jK&Z;UWa$ z0%U1^Tz?$$9r8Vl47}le!+Q#rc$Rp&;xqSW?ygwkTHCD?w-0&P=nt7-u{`$L!UsOz?*Of-N8Gt9p{G54J|^e zaI5evBt#M-6H$$k(UH*uxXy8%<45#y_HllSHm)|V7ZAlT_b~TnoaQ;rGaZL;SP+% z1DFQoe>Hvwn_=K|+=iF21iBzN^3(as6&c*-?!=uo?>KhcHVW?rKFYd$J*oE|PdiWwd zj&*QE9FcP|8SCJUdZQO$8h(VvlPmBdcA}xPq4P@2#Ad{~;#|Ej2JhlmFl4$r;d)Gh zV!8%8`AQ?OOL*_k2vj%{U9`IP5y? z`W#Q;TC_!lv%$yk(=E^ww?KLN5Ze(# zyGXmp70}rJF@8fzG$q;tqc9I!z%I_w5w~ClzCsaloH@?(FbXe0F**pJ%jY@~7hnj~ zC+A`@HsBZJq6!*oH3%jn?Wh!YiaQ=o)VgZx_osVZdtIBb0t=wyc^xMyN8QmJVQ1L6 z2cKgWbR2vkjz_=|aQuY#@d&QLY4BoibT4N-%c9dU1Ugnx{;DEXk*!c{p26K12<`uK z5DiDex%dgIu@JB0c_`KoVJz;2#$6eW`!ODqF%2){ZG4Jvu^XlEMSPJK=!VNN3e%ut z#_y1aglIzaWLyH}>^UsO&!|NcM-xYP+=z*I9m?NcC??vLJL6Ie!z8?j5AYSX;&+rH z1ohE$a(Vws!uiz2rm`t(gjAqcW3#9{`sqd=ak1UNWjl7BHp>y3a7>*lp zB`$%^4K^K2u<1!4zLwFwVUaX|WevEZoqnh&*6+uBIz80&m! zj64onFO8K)pndsTEW&G0|9cR3VK6R5FLZ+9raqYpO& z|F7q1TrNO4{Lmnjglx3LDd>jtpgi3K9W$zJPhmFR#b@{iJ8>Awo5$gCWZ`&df8GlN zFc>57H%x(!)8<0^kVW_$Yq1g9?tg`Hdk~6oAxfZJmmfpF>v8>m9`w1*e(b__XdBsp zRak}(@g`ozGf-Q`LAg@@x)K-Q9B9nfHrNR2Z;@yuS^?#5543Oi8Y`gfcLC-?W6%?r zh`(Vpw5{KY8*nugSLIj7IsKtn_eCG{hVDg=pAS7x{aX9hE1_ds<>e0CiF@$?GzMrN ztTrf5Z{h=JOk4%!Yb$m^$6Cdxf%b8UQ0|(c4YYsg2Ia6n215Idn=l00_umWURDDzX zmB;WTra?J=4m0rrWOT`O7Wd#z+yO27S`5NP=nLiQ z45+Er6V2;4URxGP@lWPXkqjaG|v12#o~J?k6+<)C|1g+;`TP)!t2l&tC+rs z7w|k3=NWkR82Vk0>;GqB7GB02yb2vx%*Q*>GSvUIOf6eET8D433EQA{s=YdA%Y(-K zN@yI>O?^(eOG5)_pQjkK#);7Rg8E`tXguwK-q5~8c~u-Qf%>V&+RLHiRP}|cj=I`$ z^?&@V$3@Rm9<*Itii>d}G~OvM=R(WUGPUf^=zvq8eVF=|+SwG!m$toBXkC18fkTY? z^{kFoN6Vq@RiCG*4=Nt}q2m{A&l-m`rYfg8-d6mS+wY+5Ui%m2c|8jx&CR#slT(cc@>fefcOtDKu_q9qJH-#uBZcau)}!a|*Q0 zDh}DmfpV$-*a9t~aaDO$|5OZ>-;S)qAMl=soq`T85UT z+%$*s(-_K;+NJjCTt>Ol{!DFGKU2=MKI(7UE|oj2tF}`ei)sC}-71e|&~~i&s81@V z+O~6{*lB;FeyUiCa{b4@LC+JtMz0sWm)=wFtz~FgTBeq*?MeAjd(AiE6Xj zuCXHot&eURE0sGpbo{LKRt^)OSZH6NxG0~Bk@}_bs+eUSr5K9(t0=DjO6<9@*T&vU z?<-n{mZfEC*=mERJ!+TQr#z{xYO~s|d}%$jKFXVJT1Rc4T3@ZVawv*};-PI=6d%P& zlv`2kVie0iQ$L9L^Z)7h*lTqkdr#fRmZN2gman$N@}st?jcRW!S6T;&-L!66N74Gm za;WuJ97HjRdc}S|cD?`nb1XLh6Zd~^ f%YXHIY(4&+`&bGSf(Zmn2r7akK|lowDoG^>iXbXM1O+pQ1W`aF ziHd?mQG$TPVTQ?}r}O*$jm(wfIp^N{{?}dq_pW#C{;b7J_jFh7dY&DsirrN`Z|mIo z?*2~8{q67TH0X)Z)e|fhi`8PY)V$APnel+t;;sL9-N>*0ptGAEQ@%ACBhPUMU*AV5`9IC?kwJiejkvD%yo8KtA%2 ziyUMl>x#?aKV^phlo9?%m%@Mf$G>D;`9x;v63UjRWosQ;m)5Cus|+fO%B1qCoGP!% zu5Hlv=%H=YwrZQT{fdQRqWCCgik)Jsm?t6`<&c8%NJ9lwL?u*4l`E=R{#4EKm+F>3 z{q@S9zm>gLpVcz7EG<*Z);hE{B$I2{*p9%u0fPU9qg#|a$6QT&EquQ(F^(=XwFR`xf&SD(>mwT$D?^0aKN zL+jEywQiL`*;lz#KIK!nRQ*y8wJpk>wof@zz16lWSBi&XQUbe!wp5#CB}O7Hq~Qe1$Ks*bx3_ z`kUUf5qkgE_y*gs16ua?_z_yC)~)O-$I7d6s&cBlD!1yJ>Yj3^ZBrf9_9|a$Pl|=| zq#P+$ikotxm@3YB>HTvtA8%nXmSP1y!YZtT%Am3+ zr>Z*#p?0bqsx7KtRohdWQ(IGARlQZd>fi<_Ps&k8+z#bMaaF7bVi-o@89a+gco8!& z3$J1>UdJ1F6K`Eb&-J?guJ`Hv`rLH9fQcB7(HMatcofQSPpH0hKuf57Du>mP3gu4y zh{iMZiP~oMcWP70mD-Qm!)JIO%8g>G7{7?;@eD>{Cy zF500PZa_^`Kq8{xK!}GIMaV-AvXOO#e$Pb#JP5!RwuK`Qk2KW4b+`#y-PyvUXv|Z+R2|irr9Mdgl47Cu^c-g6ZLGv*?8a|6k9>p>X^pg&Llx9T z1KfmGXop+T1-Ie$E4o^{T05g7+Tdo~i0e=TX^4d$MV2DVMI6PC*o2R<0Mnp0skW&8 zTJ2B$yXvC$OEf;HooQV86v~%kqPElrY8Q%KEhNDT<>Cwu;X7=^DlErB%*D%i5tHyN z#$((S`u#af#!Hxu*YP$!#9C~{UK~dzl-sy)TxmX=hMShQW3^4?Q1wgs(|D=+r#@d} zoW?ZuHOg6kOu#%SHmdh(3t6yR?bh53vTDupQsyC;W{4SLk=W z_8qoiBRWD&trJ%H(?y&4AEvNcf6V7op<4K=yGX}HitHs=0_!Jb|Y%4il~zZyRqLgOM1FhtLBZ(F8RR z3y;-Px(?-jC0>K-NiQ@(B62J_mY<;hbPBW`>hHC$rMjs;W+9%2`lC9q;8^HbXaf|p zQRoiEGy%%V5qymmcm?Az2=}53TA?wnMQzkTb<{*%)JHS4M|V7eCov66umSs#g_uxG zY28p6p2h;GOfGUVWk*&yf65rxO%)}7fifSma zmRR>;1;#>sZ$)HSGAtXReH-oDs?BL1TKj1)LHiR`kP*rVeT8Yb4|P!zED8REWf+UQ zaUI;a5V#Qd0W0x3p2JW)fZNd)H=_w|gnsIIJKTu}F&vYz0PC6a0vD*c>)T8g9TXxD7pVKYHT<=(%2RjrynneeRNnJfs6WyEz4kq{pK&R4Df9szLoJ*Oo(sN@p=f~O zKyhFzW}^>ofE7pmNB!$D52NuQI-(J3qC651i+H4GD-I%}Z=`r=8vfH_!z#aM*-n28A(gl=ez1Y|fe9NRD# zkKkJ5*mLY_@g(Zwg6)EB3Dm#pvDUiQ+7B`K((+~LzKYJLC~przW7+D^>QHZJyjc@m zQ`&dM2jhd=1KR^*pgdjhU+^!-0MtW{FUPkDFXLe}M>!OGi@m>NH#TDpR$>*_;T!D3 zd02cFUv+fCNW6oCi1J7IyI=jrtqC-QV{Uo)!Y0wy;_NINt zIBT4BB((pavFcT1pp(6meF+NC$l)zQ;NE5#x?= zr=cpUpgf}Cb$MNXU?-O08FWQ5jyaE&=J^5V1I~EtbnJ9I3DuXK_MP^@aASpSg{>`q zv;Jls0qsNScu~hTI>({os8gX+p(ml7EetLUHpKUV?@Qwp@`wEIpgk`7F8b!79SXb! z-cKlLsUX6Tvx=D#FSLP4d{ZwcoknG7h2X(tcDMF`0ns6gC4#8 zz5QEIJ5W0?2Wo>Of+K=|;QrA4p?%PPu+HVQv9u{28=6|1mhN+0YrEF=F4F92_E!+b z2*(J=F?4ixbbbi8%k3I~jZpmW!`nE4)QHrG+b{-;u@U=m8kdlPbNCfI@II#Ee$+;$ zJJY=q1EE~+a_w>rM=U;ae&lS61C9fZhoOG;3FO#vY$K3q&9n}LjtzDGW>0uexFfVb z-v}QCKPugKSQ1zgsD#D-#r|se!1sZ#F}8WPdGA4XNp{IAXp9q{6P{Pm8BY9E{8RBl zjKCdejH*aRBFdugec5gbp~==bgnM z*C5wf^mX@j??bDIRuS)l!??)a_yh%L8r3xF2`s@boP`&zXjgO;94Lw^iuxU2V;&ws zEu4%z895iNa5Ca##CXJDfqOw|TV3K>;!1`3S&zfxcog5+zq4P1>9*;%GuAWKTcBfg zoxyL9w?c1)vV+;d&R7;$7Vz`XIQ6yfYhMk_^3L-5N_-_FknTzM3_*5rcJXsa!s?>c zMfbvvO@*5ZC!ixzQNZIEe#9>5r=IIkzOa1Zt#}Sw5K$CS^bj_qMsbbe*AU@}@JvTs zNnFX>XzXq5{RzW;!+lBqq|){`EHErkHCQ!x2(v=7LY=~$O2;@IS3hHY#@f)*b*Jkxrn{%RD@9a__!tc%8%BPHI#G3^UWf8>Z}h#*Lw_z_>=O$^7)@J0Kg*PSK|6kxoOp z`?>nLHaj;v6EVOsz@hOkXbajp;}z>G)`Ogb(f)GZaNqEIq4z@CSJS@xvw>#=yZyWU z6`}D)W7IX6T{64G!$Udyqxg^FM{%j>Qqcq?V?*JF!v0V$juadzSccK)iB@QU8*mf4 zVh~=%cIX63r@~H!Zy*P~ih31oMU&ztrET#h&rP1~=vC6IBnz{>v%QUcjeJKj-9O#0 zebmcX9$X&m8|oWM4X2i#L(#bro!8J#*+z`8kFeKp)F^Fh&pDrS)^gRNx7y`;)cvU2 zgJ}`dBH|+BBIh6?Dk5qePNQvf+vxc?jhZnvV;;nGe1e@g0Of5jHe)HqqBEkfD|%P- z7*xTgs7+DbaU$|WWIvpUI1$kUTisjT^)S;l({zbOZJj?kRi**WyCKg@RR>h~8+6Mz|i0(E$(P1*}6hZY;d9a58>Fi=q}q z%aKx?QrhN{J;|OWXi(Ciy8PI3FqYt#QR+uye3;vtzTmUdIFW2kh_J-m_&`Gpvm;#xlmD|4Y${^iI%m(viTC zKutX9f71W0?^|CbjP;K79xXXq(jKclt39=`taw>*ZLBF;Q`8w}3(pqLLMs#(6c=p5 zOgxHCXacpjhG>oZFdiS^B&ruyFC32Ts9sdPXa-8~Wbu>5`Iz9D;E61WELn#S2bRT3}@wVcQ*ju!>s2}`={=#MG1{Z!P_@Q7v9>*PM2IZ|jZbmnZ#3JlNTwz?{ z1Nao~B6rafIF6phJ&Op&=PJ#)N^`E#oU1hFD$Th{ zbFR|-f1LUMIP?E;=Ktf&|HqmCk2C)tXXc!kIVWb$iJ5a^=A4*0CuYuxnOAA%RhoH~ zW?rS4S83)|nt7Gxy94IC1LnH}=DP#ty94IC1Lpg2=KFEx`*G&`apwDR=KFEx`*G$w z;QDT(`3|`G4!HRaxcLsa`3|`G4!F6_iMh^+xz35X&WX9siMh^+xz35XmY2Dfm${ag zxt5o?mY2Dfm${agxn8BYUZuHSrMX_Exn8BYUZuHSrMV`vxhAu@CbPLFv$-a-xhAu@ z?|`}QfVuC0x$l6v?|`}QfVuC0xwnqFw~o2Dj=8svxwnqFw~o2Dj=6uFxqqCwf1J60 zoVkCTxqqCwf1J5Ts<}t1xkswGN2<9;s<}t1xkswG54gDxxVaCwxevIx54gDxxVaDb zvw>#=yZvTfrI}Z0=2e<`m1bV0nOAA%RhoH~W?rS4S83)|nt7FGUZt5=Y35a$d6i~f zrI}Z0=2e<`m1bV0nOAA%RhoH~W?rS4S83)|nt7FGUZt5=Y35a$d6i~frI}Z0=2e<` zm1bV0nOAA%RhoH~W?rS4R~Z*M2WDQSnOAA%RhoH~W?rS4S83)|nt7FGUZt5=Y35a$ zd6i~frI}Z0=2e<`m1bV0nOAA%RhoH~W?rS4S83)|nt7FGUZt5=Y35a$d6i~frI}Z0 z=2e<`m1bV0nOAA%RhoH~W?rS4S83)|nt7FGUZt5=Ik8}3L2tB0BV3Qh=zxdt0@fiL zHx}MlXy%-lIVWb$iJ5a^=A4*0CuYuxnR8<1oR~Q$X3mM3b7JP4m^mkA&WV|GV&D*x}!s~lq;W36wiZ##oG>~GjRIyySCG2c1gd6VlV*FHSve$1VZ z@e$)AN-!#NROBgiis}@#93|)&-7)$_e2q(pjfst^i)LsA{nT^4o)Mi9y#>?I8NsMv z)Tiiy?8xlM7m7}qK1Dd(;D!0~~@iGKEe_D!};wj>O-4z+Hz zY_+6dczAgD+t9b6su&*}AN(!wTc9PD`j`46G1fQMm*LIu4#3%xvn4}N=qdC}M@{T1 z-c>vjHSv4V??vxo1a3twL?cibC@h8#?jmxrGZ+^f7mN?Zhdx64aQpBvJY{*x5@n6DE<;mW zQ`>jA*M6`44-9n-b!1_&` zE+Ge5ID>uo0`o8!H^Cp_kJyB#P#gQ)``k|>2`gPIUG1>XxzG6^{&4)^7>M)s^Y#Ha zX*+3q0Q;@`tzEFivc=LApM*aN*Tmw`;!q0a1?L45@p|C(Kn1+#e~$J) zBhVi4(6ScbUc_RXbDMJnDqyQ)tD`?`SZZHtZ-E201Gd5NTm9BKsDX8sb(T)}HT-LM zD1xD2XdbS?_TctlUw8xFz(TafIsZBT9JEHBFVFW82BI#qyjk9_@G|-ZJb{nh=$uoA|6L1_Ytu3t!P=xNb?zRsRM0b04qO{bWiKdRGj&azCVl;3zaQ4Ss zY{qF=TozX)G)4#9gG)o7TO}u zmS=kxDyMSxA$q`P@mZGRP85ZU!b@=*3PXjVW#|Ud7+j43sE9*>LxDL^zm$ky{lEI( z#YnV6Dsp|fzI|AWMVJQlv%@h6%JUFBiRUo~>hr$A?+BxgzmETIOvGxazEloW4&0A7 z@C(v{X~BoE0+-P&)GRawdr=`=Av_4{VBv8W7UCQlSQ}W!;v3j)c3T(B!1quaY>lV! zA%2D3VRzI=PmIPqti%o+#u;QH4+Y4@C7i^5Y=Oq9*%*O4Q4e8zm@FN(zmL&qk0>0p z9kjiLKB$b}t-o8}#)Bx2!1+)>CorW0%?I}xDVs86yGBs)q>T6 z-7y*KkdA7hYN7iv2fN`2JHl--0cvk~xWRIRWiZ}_+Fi0W*?K!B;|p9wnk}s~hofzy zZA+m%UPin<-rfjzVF)H;K0d&DY{L)Oi=UyNdcGYS@Dbj^i+BR};AT{W*XFey!RMHX zez*w{IA%R&{R9)x6{$FDIcr&sXVC@8I2}G6UWxJ0*pP|~p$nl6n2EkQYofwMRa#e54kU=3E|bF9ZE?1b|FJF=mUt2`Rwb_~Lccpu**6A7V& zP;)$j8CZ+o5gCpQ--P~{gRgN3sg_hrM~uW`e1}|AuvW0P#}K@NH8_MqB-@g0jc_{# zU;^eqeb*Xn#g90IW6-|CX`I3d{EB_p1z%m~g1zJk}W7$0CQwn1an85AKZ6ji#8n?pCV$I&A+9MiD^J8&9d zR0~%t?JFJ)KU&&vXgk!0T!i|Q>u?8#VHQ5cZd`=J>abQvE8GLc>_sfXXV?zK^bh1f zO4!fdGS z^+GdLKp-5T#hng+i;plHPvL&FK^?@RI89iu5ymRG`xc^u@C9c z7^k|~2wm|Ao`K@<9=^mLC`S2E9#c>UO`tZ}4ZZOglvl<1S*Wj7j;CYB75e=pOu=(_ z1|u;T%1tk5e_s1Z%28FsBWwvHsLF%-xcM2BfiEq?1JjTK^((b zT!sg>uq_;iO1K8i(FxjTd<^KaGX zpWcnGP`z)7CTIY)1+`Nh8&*eERJn?t>-Acwi|f!3O`+xJ*jdZf@*jZuz{l}4p2rN# z!xE^ESdXnxf3IVkvrt{sPAa?ZmPAy+HE4o1xDD!e9>O4u!Z=LE49vlscpGY)%Iive z4jo5rfZD}IY`Th`s~syBdY|?u)Hmz%T8?t_7SxtrhH~^AMq@YzK)LD(l~MUp->7z0 z3+f{ipzTt_|L;VNlF< zoLENB^}7D9_v!um+&DakDR>Dl<29%~EyjCLo>oKqj9Z}oeGd*p^-ej(4f=d?~j`O=uC@@rp9C(QiN7^iKFL>#mat?{7}ltaZt z?eKc2FTD|pSqmtqYMUBYI^b4xhT^O7QtjdPe?hN{-lO;H9EbL6l@qleoy*a(Z-(lQ z)~R)?OaAjN9?Ih>D3^+r@~OBT z!U3p#Dz}QM`m5bnD9+#i3wmAjz8|5_=(9gVIngq;Y^_7<(wL=nD@T7odAb1Y@2i~Z z7nQF;-}o6gW{xa#WV5vRswrt1M?_dDC|4q3ssM zKopNMWjQVTskr@};`!h4_s?DZylnYpKg-sypJnCJ&$6>l;!w;;^)6we%WhRm!<6YtIK=!?`7Nc_n%j9``>>ri_ibOax2>Oax2>Oax2>Oax2>Oax2>Oax2> zOax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2> zOax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2> zOax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2> zOax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2> zOax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2> zOax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2>Oax2> zOax2>Oax2>Oax2>Oa%TO0juSIpTC#!KYJejZ$3id|L^=~Mf_LW_OCKxv-~r=<)1k$ z|23!OzxJOk%kYkIFf zBU*-*rDbZ_T8Gx9b!y#7P+VxhPwMv9r@sHk7U zMV!Z3{DIRri4!=EWB3if;s}1Z;&AwI_|U(hzlq+f&*-yS#!+aQTDI1qb)CUETtGTh zE|pJtRX$aA6*rf7!dXn~fv z1+A}WV`*b)`!{+`^d7yp74*5Ap=D{AT6QC7UDu%=YNG~}Yn4wqRee$(wGGOja;NQ6 z&a}g^jDQ=HIF;$$$VKQc54&KDu zcn=?9B|gV`e2Go?8sA*8)v~qpw=I?}rLS+aY%G1>I?FoCYJ7tCu@nn17cXNf#zSQo zguYNdyFhtt4D|N6 zfyzij3X+h3_^ar-Uf16%pbBc@8Z<<6v_)6+KpzZ(a;&l_r*B~e)J~N{wMF%-%AMMr z#xad2>W7rC+t3@z(^$NO`A}XISLI+ge!*#Eq6i_lt!`^PQc)Q-PzTrIdepy)p6hk} zUGJ-e6vV-afF)qb$3+~+K5U2by8>@OWgCqFQ2SS3tUgt_Q$M2dOzrGvsK5IV%9YxW z+R8(?11)ha6yr$vLcY*toWenTkFT)~pWr>bjW;n5bMOjgLqGLguj}uNq4(=^`urCB zfWtV0Tv)=E(%dVzsv}+SAXG-R%|%dOtNv7VP}`-vsh`pKqWb$dra*OFdD;cVEfAr(=#G9EiRUp3Z{l5if_2!4t=NHG_zwEH6Wg#E>#-8cu>i9%5nApexC^aN4@po? z&tWgrt`|Xlfcn_m(E#fA)!sCQX)ICudI5u>T&dodgK~5l%FSxLg((=02ha&kQ5z|U zK#)fPGI0*4a017npC@q!>Bxl_j*ugii0WvB4!94)p!F?;^12t7;0n9Kwb23np}Mvl zyPz>o`(oP9P@kwiXdV=cBk&;2nr6Kj_hSs^;WO;U8TgQBOSIKR3*3P|7>Y5Ngz0z% zb20CVIkq{rS$Gl8VkG*b7uur%D!__#Yr1tW*5GwKjh<+P7^qF|z+$NV-3jf#X#ZK` zgT@VwEBB)T6qA#olc6s$7s^pr)PWsmgJ*-g@DX0YX!J!FG(~NsAQI}dN>G5jD+&XJ z0WYjUYcK{Ca4lM)I|gAA7UL`Y1|O<~s)Rb?aj3njji*EPOZn57s`{rsUt^rc2JKfU zXFE}VTGm>nv6*b0Y+Z$;aM&ES`nVU0^)l?h8E7Z2GH$}1=!YjU8M81Si?HMh{jS$u z#zc(7L+FY|NI{9M#P%D$z-t(Swn)Z#>v`)Jco99Iep&g`*s3wO9n@Ehc;)fMOJfW5HvkIT{-r8|;co$PMHMzQ?&cn}kaDgA7_K)b*rn1TXZtj9vUfYBI+A<)k;n1;8p5htL)G{sP?z@HA%Q9ej*c_ykMwD#qX*)JNDI zF8%zg?pNJ+z=n0Mb*1^YyX>yz&gIV5IOI6wcno>=Jo^NwpPp))YSTk~yY^k4fzFK# zf%ZLm<52KWup531{1~_mKl*?4cf&8fUwr+Lg+X$miWS_{@2%vpb`>5x!1}C5jpB9}KeGM9-K58Ha*-_b1-{B4PMFspE z`E%q1RKdoGjS+X@nEROf5u9|Lbls2L&fU&tQ2)x%>*#OqZ~w;jjjcRJSVvg3ucGrQ z%G;*Urcf;U1^WfR2ziUXLXV8tjMz<>h~_vSb3SGUs$*63s^~`eIO^lld`^m-6#09^?-5Ng z)jid{+qK&jh0e~-&gUG@Iab+M*^k?f+nmtxijHk`jzh;$TZ3DJ=L6?Ub9R&eCVzil zf8RXsJg?$pMSD+s&-CKy#lIB&Qgj_=6wWBjF32u;7{BHJmfshb^DgI2!woo@dop(k zhM*m4BNZvAiB{;3x9}V4=GD!cf^_uB?~{KVg9-)}`0;k(+l5_ zcb42)Qo~!Lv<;s0o%HSU@A7{h_&l&QxHPE!;FrQLg`c%NYth&+*f!YK*WTCO-O=6A z*4fs1gX;!YiaW*a#jg>+Mtm0eS>&XsNl{&*yF|NV+%eza@z}>>W8-4uR-j>g!}!&x znNTxf22SJp#Oo7>;7x46_xKUtU^&L49lQzNgym?9z43eFyJ36W_R?HWiJcO=FJ@m% z5^j&aJ$h`^*r>&kiz7EgY>3$H-tGRy^^5D6^O*CfOCVx%- zxx90EH8DJQcUo7Nym~0 zy$^cF`o{Ve`4{}YGx6v_=j&)btR@+Y5PuXLgvCf-aH@nm?O^KKiu_SUy zXgZOqo#t+A`)R>#ecpCA83!V?KMC*GXs!G}p7CUs5jntTj>%k?d{ z7xh!>r#y#EI1e4bx>8-K{uF=8?^uOlD33Me)|6|3&yzn-PQ|dKVM%Ke*Cbv{xTxlu zP%pk-yxMBx*v7H7V`|4l^SBgwDRN81mWUbd8ScAWce$dRQO=$Ao%XS|u{Is6>wNqR zp%+4pf{lWw{HOeLd~0X-;(|o zT$fyzW}s?D)r{{kC38wka!*=adxIdyXDl!__muq1U! zYKQV2%Kw61X}!|6Ah|+vg?lg=Z(;#n#Dl1e-D$hi9>w|c=gZ%RwW(`U11W)&rg*U2 zgXKmhk4zq&G&J;o0Jmf#*f6VuokHfE$w>)ooS`@b^K390IaACp1g8TFD z&##eJBadM&=XmzvTEXDL!G#-(HWnp&l0DjIJ>fm!z0H4{e^X#nph2iXNas*=Zbaub z!uGIzgmZ-RH`i~j))B2E)F0(Vh};UdKYr!eBJO>9o^n&x2jmv}emdTmJXd-&1eE zkdz@Q^UBRD_i6H{$?KEWCw-RqS>l3(1qox~$HaGv>l7Cm8yUMZdS~=gQBOrxh^!F# zmHR8V_MOf<&O1iiN85EkH`_AXQa)Th{9f?AV8cMez&77D-@V>@y*Zv7&uhi66}KpA zQIuJbS@2>0hxsG&M&z~6ZJ%2sr$$bEc6@ehR%}*<%M~s+&upGKC}U8@2bVs$Dw*n?>do?H`E(v& ze{g@WQ@B%jvt_fTk*$$!xqZ1k*_rH|=$hy{?>_JD6xk_qNz{_4%h8vk)jti78y>eP zeo_3_3127dOWc=uIO%ZG?&RIcpOyQp+?13lDIHTgrsm_-@~@UpO-oIig-kT7(5%96 zyoyD54NsvBiqeYG7N9Pcm0wogg$Gj~OkI?+C}nrK-Q_MOUra7YDoDyp%u76#a4KPI z{MPt+ar5GO$M%j*iAjn1KI;3ZQIVq}6C)BMK6QQSYUga{JYYXyf7tf0?ULn^MgRAr z|1_Q*m>tk@(rWK&Z`YEpB^Qe?7Qb5bYEkRL)`gyYPyXh-&3UtOXXOsb8Isd8yJz;D zS$AgLd->kWBQi&1F34Drarn~VOSSM)`b+7)i@u95pgIm-ICx7dSo>HpCVS`S)vJgf5;wOzGcv)!}ZSrJ(g zU81@~EsS0m{YT6nF;(NL#@!u%cl?-yF$uF1XD7~2nxFJa@+-;DlzXOJx0G%vUlyN!gR4 z6TmfaWAcs3O_G`<)k&a4POp+{dvW#}1Ae98)>Ea`g9+-$xFO7#iVpJKb+P z-*)PlbF*!;t&6pbRsT2IH`F(j9!L+2^^f&O`XYVrmb_ci*3;H=w&-lp+`_qqT?)Ds zFeKz3$vu+0I%jq1KFI8>*;#Wh&%OLX<_DR3GWKLR(Ct#UOP{2Fl3oc*FD|{<9Oo{a zyYK;?!w@`<$ykXjbiCN{;woI9etr5k7;tI8rOFwVGcI69=8nwOmsek2nYA)&WA?`E zLpg_X{JH+zM){5MM-_}J*j%`|Fs?YR_;JtUo}Wv8E@|#-?t9<=zQ261ycy%n7-z;f zGsc-Q&Wv$pj5Eh^<~YtA$C=|ea~x-m|+GyflF{y)zAf1LUMI5X$O%sDZ0PRyJWGv~z2IWcoi%)Cl7uhPt`H1jIWyh<~# z(#)$g-yJaD9WdV=Fy9?8-yJaD9WdXIGvALh-;Xojk2BwoGvALh-;Xoj0XN?PH{Ss_ z-vKw@0XN?PH{Ss_*EuoQIWgBcG1oaU*EuoQIWgBcG1u}k*YYyg@-o-*GS~7l*YYyg z@-o+}G}o&%*Q+$wt2EcEG}o&%*Q+$wWH#4iHrHe}*JL)=WH#4iHuoJc_Z=|z9WeJD zF!voW_Z=|z9WeLSG56Ln_tr7@)-m_iG56Ln_tr7@k2Cj=Gxv`(_m4C8k2Cj=Gxv`( z_eeGONHzCJHTOt0_eeGONHzCJHTMBG_W?Ke0XO#nH}?TI_W?Ke0rx-Vd(7uI^D51} zN;9w0%&Ro>D$Tq~Gq2Ljt2FZ}&Adu8uhPt`H1jIWyh<~#(#)$g^D51}N;9w0%&Ro> zD$Tq~Gq2Ljt2FZ}&Adu8uhPt`H1jIWyh<~#(#)$g^D51}N;9w0%&Ro>D$Tq~Gq2Lj zt2FZ}&AiG)TVfKAWF8K4A8>OYaC0AUb02VXA8>OYaC0AUb02VXA8>OYaC0AUb02VX zA8>OYaC0AUb02VXA8>OYaC0AUb02VXA8>OYaC0AUb02VXA8>OYaC0AUb02VXA8>OY zaC0AUb02VXA8>OYaC0AUb02VXA8>OYaC0AUb02VXy-G8$(p<07T(8nxuhLwv(p<07 zT(8nxuhLwv(p<07T(8nxuhLwv(p<07T(8nxuhLwv(p<07T(8nxuhLwv(p<07T(8nx zuhLwv(p<07T(8nxuhLwv(p<07T(8nxuhLwv(p<07T(8nxuhLwv(p<07T(8nxuhLwv z(p<0d;t)ied6i~frI}Z0=2e<`m1bV0nOAA%RhoH~W?rS4S83)|nt7FGUZt5=Y35a$ zd6oaG=T)ZL(rx!U?ssf=ZgO{;@VMamhBOC6W$!%(ip_AR2*qSM--F9t(D^*jc< z%I_*a9O2Y(>Lg^PWTo7WH_N?Q?m+T^n7GqsFzSFzEZp+&JlMe=1k0& z(O*VSjhY(OC9+GTBf=4}#kIxtr1ME<4Mz>fe%pTA^Va9B*IBN!91R@}%?!>Awhpuo z6#I&O>%8l{<4VSrbo6xelrJt{TvS+8c%tA$!M^-``9J6VoOd+$Xl{N^eoh5+&+eZ6 zM%Eiy8J9CI-;M7xzt8NBOBt6k-as$Zf)l<=zDu?YTSg^x#)~+FCYen#SD^0Yx|hE~ z@2uWgk=c>iKj8J8*K>yF4$tk8*CVfee*64e3T`QAU)a8|TT!>70mTD~CwV4$-Yt2z zt72xw&Wi0D*Eg<4e2w^{n3^y(p-N(v#7|H!sb122 ze`C*vxkdu;dE zaWUg!7DO+I{w(UVs4bCOB6mgXiulg`oqLCChijvAqjRNWrDKVGiG8+hwr#w1ymhc; zu;t$Hz2Q!wPNC+(=E3@b`hj}>dj7h;y1whZ*L$0nG%vZ`bGv6?@xbDlMKg;w6mBTY zF32uuj7j;E@{i^n&1;LbxodNqV0+H?oQL4Xw(M=$)A0~Gpcz`=c07&+_yyH-s^^Tu zN%Y9=k$V7r^ZMo$;LZFu^E(uDDDYxq;l{!#MN^7;7WXW^)^n}LUE(gu#9{AY?{?pI z-x~iK|BAqhz{23d;GEE$&`aT$!p~ZswT!fmv_5Kk)ONT1ZhI?7D@RRdO{d*ucb&p| z_xjTI*EOGOpM?*H4u||ff3OaE1$qTu^uOreC zZFMh{>s+Yfw!;K`gV=)DfPN5A+Yz3f2l78g7L0xdOw`5=kiJaSDfU0KXv})*@?BZFI*A*a}Cnqqqm&ht*^C zJchk!UDCQ_9U6EWcvqvTuc>bfZuj5rKaLTB5dnM99$btjp(dfd7!)29w(wYpM%G5w z@9?1QL0cv!*eBQ>JZ2%*8S8u*YJ+2N2DiCybAJq5ge~G8EX7$=jjS5k6BF?szQF;U zz$qNV9(;*~7!8e6NjMU5Bw{{phtKUJOUvC|aL#qk^*j=>%(={YJ=QwbI-222`Ob$&Bg@U2rL|8B_Ff9;|xBYMX>tm;Hr|%&Iy+QAL zxC^0@P{|i~3e8}}AZsCrL$#e9)EHE;;iJVH5!VU~MvLV~b-j*gbKqwXe1JLcT5EHV4;Xmvxu* zVH8`6Ew7>;wuQHad!ry!z{oHsR3CeSdx9g7j7@<}fq_WIxBhSa6VMd-zI@+$Jcq8R zfE;g*_b04`Vm=WgF$n$f7=~jUW$ za`eSKe2Y9(bXF|wyB={q;+%lFSdP!3eTT2H8DHQNEXH(04BDU4i6N1gX|k>phrQ#y zwze3J5Ahr5GVP7=ASOXE-G&p;coXS}bX3B%Xo8k#eMJjL3&)MP2FeM$@{R&~LFs3= z+qc`7V=5j&3nbvY?Y!+P%)|qzi+pRobql7UJIX_K?|lrzjqrxOw76~I8Mqr2a4vK% zv>MOh4pc%`Fe|tn3or_I;2K0AGmshBkFT&Cb1@aqU^oV0z!mykuZ_WE%)v6O$4@v1 z_0v_+2K}HseTqW}pkAn6s29|?e}>-?8;%XP#t1CMJ}|^t8lfNN;2T^APHMHE7PtvbON#9t9>kF`g@3XjcGI-Z`eov`h}My!DL z=e3`t9JN9f1g$~qaeRgO(0=f3s0p9NXE}(EF&X!x0h~AyKEV;s`tWQFg!WaGzrs*q zXg?I2SMUV7L*suM!ohIxA`W6JR^c7Yg<}02#^6b)-<6Sg8sjkqv+x$)#~1h>$B+Y8 z$Q7!J=IDtLm<8=K{(y8uh9kq*;Z7)LuVEd2fd>^W6)mms5GLXsD1RrQn5Zr{!Ce@P zNq7UF;2Z46Y2+XPwb2Bmp(<*kHZ*qXXAM+F3Swc027Yd_XFY*E*o=>$9BF++(E}}@ zeGeB@zYgFFX#eVYsQ%pwjc?J&4rhlCVgnXqGPF;oSTsRpXy1jY101OzEgeVJh1P}M z#a!rEcQl6JA>4yIp<_e!W3AB&Euo)n&>mfI7w*F&cpPK!0<_#^SOfKeI$pU5c6CDu z;e>DuvjhD1XRThxEURx zyxs@xALuyhaj3mMiKj6d`l;u7U4MTJdcQuW&#R3qHw{n&<)9pSEFQ~6{EF|OTrG#n zsJb>B+Q;e)^^w(}?NVQP0UFDOmQ?eAF(Ltos5wrC8+O>Hs`%BkX+k4&7$DICYI z_yvcqqUU;Df7koeFJ~YRUZ@j_MhdFqdNjwaP@W!!_8C>SnOJ}i@g=^)5uAte=CC*{ z$*2j9=WWpqeK8czU@Ekqwg?(SR^uyd$8M+vbx#anm6?qz?7I z8qb`^^PPLoeea)p|0ve4=$W4Gs`Y&0K(?}F%V``7MpBd`4I9kWC4WPcnM?~01uM;*8lW9%63c3R>&sE=Ma`-8K)~CpFx&F7|)9#i=Gqqp6zF!FM}+H ztb(k8tcS35#b(G?5H<#je>Nr?o7w0j`zb6286OWIZ2iLgndKptQ<+WKdYkdbZ2K#O`8}Ion4M2S7{^Rl z{(WB9KK3~ib}T!O+2SmO^~L&ReKWhTvDiA}CWPe!W}}A?7FSHaY)BrY0K)PH!w`Zf z5SB|AK4v=;gkg3-n9njEQXuINW=j^2B_J4WcGat!tTd2UMv4Yn9cu{ zu+Q0XOxQW>T-FDR8`dZ5n~lN7Vzwy`VfM*@FdH$wn11Y9hS`eEXH0h%XUt{{4~sYE zm&|qyEAvyf7GwCC-!eP8Azj?i#$sc#v6(+H`!Ic&UQ9nWkFlJ{bY{A<+@V4k9`=vrN@hC=!q(3WH?yGy z!nj~_1>=R;lX1l2lG&AUmiP~095P|?%7pRy?<96??A%yitY0Q<3^o=Ula0-EV8Zla zdNKW&otUmnXQn%|7sJ8uFuSpT3?uVThL_=HHe|whV0Qsbm_BUF^ovPM?-&lYeg0nzE8E8K$F|I# z&r6J}f3=O-{6E|NtMmT8@A>g!uVeZ=zkOcs*z4zU#a=&;`|qz~-28WJ|E|k_^gf2; zzp{<-@IPt$U(uT%!x`WVa0WO7oB_@NXMi)n8Q=_X1~>zp0nPwtfHS}u;0$mEI0Kvk z&H!hCGr$?(3~&ZG1DpZQ0B3+Rz!~5Sa0WO7oB_@NXMi)n8Q=_X1~>zp0nPwtfHS}u z;0$mEI0Kvk&H!hCGr$?(3~&ZG1DpZQ0B3+Rz!~5Sa0WO7oB_@NXMi)n8Q=_X1~>zp z0nPwtfHS}u;0$mEI0Kvk&H!hCGr$?(3~&ZG1DpZQ0B3+Rz!~5Sa0WO7oB_@NXMi)n z8Q=_X1~>zp0nPwtfHS}u;0$mEI0Kvk&H!hCGr$?(3~&ZG1DpZQ0B3+Rz!~5Sa0WO7 zoB_@NXMi)n8Q=_X1~>zp0nPwtfHS}u;0$mEI0Kvk&H!hCGr$?(3~&ZG1DpZQ0B3+R zz!~5Sa0WO7oB_@NXMi)n8Q=_X1~>zp0nPwtfHS}uULE1{44DxqS3!MnW*&NH3L!TzianovuCZf_N84lc@g&+8>y!1JPO>moc63ZOHe--6>Li}1e$2kirc8I{Ys`KO z7qgp+cg(uXPK*o23*(5{gYn2X&!%Y@B?Folh1SKPZ3*&_zDVxVQsgczP43XLZ?7G^sU_zZYw#$IM+W_4yC#!ng$G47ZRUIdcT7^N&m ztboy(CQRF^q7BJO+K8O^KUzb) zXZzXbui?1*IG&yND)|+CokO4J(f37Kja-h7#n>v3vCBY*lH@_uCzyWBrp%w19hnW8 z{g~}okeoPt)zX=8GPHY0~< zOY$RaLw=y`$X?ok?53T_F4~#wq+Q5&^bNGGWIKH`+P2Yd|9s8%@4)BmxbNxfWDm~U zN86MAv@JPETalk=b8?I}iL%4SWMf}~4p-^RK>1SCu1rs6OBN{}*pT@ivmNtGmStIl zGCyYVQv!A>4OGlKs*>NMHet4495(}!*5m-R-v`ZiMYZfszNWp%X4;2*N&A!abP!oX zhmcitI9WkQlF#TUvXqV{OXwJ~n2sfj{@K`jwx4}I0>=%*@q=;R0J4_$B^&6wWFzfC zwqlHLfqW;%+#4OcDRg)ZXluhqssSmBfYLx&40@*^2gCs(%Z4mlvW)76MVY-=9NmWJ z{SGhq4XBu>FuO1wcY)V$=v!nHkgTWu$Vwn!nk}H?$UHik%%;=HbUK?%q4UT@I-iWA z3&|L|n2e%J$q2fP45!PZZ5Uk<-HyQfk=Q>PpO2-B$aow-3Fm!4=aQLp7Wt5VKt7=p zql~NoQ|o|w6YUM8Z^JKMhh1C4s~ZF1tI)S2!c(w%-s-lX4? z*Xcgep8iPM&_kpp{fRWEM@ciZrt}zT65SrbYqtL&K4-`6#qqmv-Zq@S75#ic-lMC@ zARr$}KLPUDWEvQp2OSpEfn+u937xvYqgx>wUV~3nM{Jfw1QkIeHV|E&3a&LVqXa z=`B){-Y3QAW0FoYNeay+iPS~nshc>d=bw$eXZzXb88nL&$ML0bUIluSR7F2^&|f2Z zlC%apoxxTQ`V|>S*MZF?(B(tebP_yx7})|pVsUx`ae0Z>M8+!v+od4pjKmHL7Da|< z8Mq#DR2x|P9aw%a{C*-lZZ5opdCw;BxQlcFk{0wVsY|Z|$wQ#XC8@NK*r`q=Y7!#4 zQ}F7kLats+c&e8a9_VF-JNiq)O}&zEU9Tcs{b#ErT*Ll9@cC^VcV90mJke8x96e6( z=msIItLV>59AGDn-XW#wB~p!^APvA~JGupST>+No!gt02Wj}aqXV|b2GEWuwT@m=8 z3Ap^oD}TZxS++d{Py8CuyBx7J8~#2DUe}9mL~naZJ=o?YAj+Umi3MmPx-8`BiO~K< z;di~Va7KSs_(^Xj?A6-~+w?buO?oe3z209~sSgpB=_7^3`WWF;{e5AfJ}$altdGV1 zQTTkAuudO{<9p-0w{dg{TJ^ z1YOSnx0S(nL*Zv=u~&Z&T8$Du)29g^>I;O4`buG#zEOBj-zId^_X-{LgF-9)n9x)| zDKyl75$fxwg?iZ5(@zPn>Boh}`eC8DzE5bUefkOQV6+pI>`+l$D$guI`Ncrzga%U~{P zjQHwB<{)ARA*R~VJ@ESrB$;NzMw0MQFAm$(7Ip#AD)2l@|3Db7FB9I@zYxyT!cH)m(5Akblh`2@@FD}$(h_khi#3|aR;y7)o zI9gjKj*Pa&c)dUzuYD*^)uxIcYNN!(T3>O!_J+7!Ya;%ny)0e=>L;2YDq5D1tX~kS z>bqgz&x9fH?D={ZcyKl7WfuzcOjzI~a=<#|gmL5}%>KJztv{%OIqrANfNX}GNvD#x z5UDT2UPi>!ec0+py}7Uyd=1x^2(95gW%WMH;G4e0ktKv7>o8qV1XlVY4*i+jm zw$k>CwX}0$8SRdkqUDGdEg(`PhLCEOe5yn8sLp8f<8>JO1dT{`9Fw7Ci!W)n#roQ> zVkd2%I8fUl&H(atVCjI?Uc9MQ79*NXEUsq?&EVlf^>v8X_Yvc5ge<*;kc=GM6ggoG zvdov5B`#xjC&WmqV^!4$Yk*~#aZe$u`$!TkEj$J{`}CQ@Jb1<1`YoZdE{lR*1*5zv z?gH2IwJ*g1+DWmg_DC!R4JECZl&QWVT~ymkKdSFZo76GVQgx;@TU{VcP?t-?)wR+< zb%WF|+SW<~uy2_9i8M}~F3nU&NsHB9(wAy$=?Ar%bU{r)Um;P}Zi1yB#Fp9;ahNt( zT&6XGO_SisPvQMPAR0atCcsO-MP9xK`z2wvXoJ~d7QFHxqRmS$!Yfx`#ngj-jy&`S z$=2hA-FjW9)-YH#V1T1SegcBz7PUwlW~2~VFYp3qt%M&rbq`gLKX zzDD>??};o|La2y2av0r!8KDPO{TZYN)@0+craOQ*QxIbfh2QiU@ag05LL!>=hKQr7 z=yAW;S#yhNT6yWA+C$o|E|MkzNozGnDyk;S9;KdqPU$6otxS{WDQo1R${xA1a$0^( z`9rR#Jdukl`Es)2k)4WHb|@}6Udfcxl{<22t0SOGl;G)P>RrwHth)gmhbd3~%2mzM=IOKhsKzH?+G#QGJEbH#+->f?xlUG)BH( zh?(scy@b`)ETF3ik9?*l2&?sXh4%V(K|sFSkH{X0SSqhw5g)0k(iiGG;B<{tQvE~9 zR1)P~N?UoVGDB{wd=KsK%l?STa4Ay7urt!hurxBGt|!@S6J!^TKI!-+_9!?VZ>2B#7PE9c~qU}=leU%m(X z7FAtRPjv@8cL+STlvD#AI|CW%l2%_VspkmeF$0~`8w;h7+oxc)b`@*QDp;v}gc8!d$nylWJDybFZKb6t)8fBl{Rq@M7N_E4H z$PmMZ$mfQ^k&A{`BVmI*@}lucxQX#(_+8`H@Oa~=;g5||!pn`r!|RRx!=D@bhSwSg zgqIpegl8M4hDRC~hr1fT3BO`I9ZoRjgfk6EkpqS%kq-^yBJB;|MdA$Ek@IpTWu81n zc}+e9Tbk8%Qg^kbv`ftwO~||bv|8eE?JDy27-5d?5Hj_zu_A1YxsI(c$6{`<0`De7 zW_|sDa6>C0j?w0baoRI+huTW&2>P*ict8j~Y5e(v4nlzCL`+*e+}}(a`Ir1ED3RiJ^0**Fw6< z6sl~#6@0_IJNUkNNpPWgLhy5Qzu>p#w}Ly&U4q-pZw9|GzZ+a+9u*vK{wUbh{B^L3 z`2ucyM1to`RYQwRLqqLM--SezKeX4_6!u>gmW-b8W<%#l1H=BvRrv*Y>LSI1+gMYi ziI`

TE=hD7v(n!f32r{Q3l}Hw!Sw4Te`f#7g%a`0Q1!nAlOM=UhU%Mog;tx4A-8FNu!(tiaDlmE@RHdTuv-oW znphSFMp*_0R$AHw_E~BLezTMd+_IDmJhYSv+_zK>T(dL{oUptb_}Vf%@S$aA;2q1O zKsihCV6M3jSokj3+pGs2=C?vWn0^d(GnELtjSIpb8ntkuaYAIR!51lR7_Y3CRV789 zhnXft)5Wi}5n?^eSeLQ39fT_`LXyZ@*sUg3Ru_bp`T%h!mQ1PIGR!+=<$Pto+*4_0 zxEMK)EYR6_3?9=k+`)7rbjs8&RMUJrxZXS(HxBK=9+q8!U6$?v)nX4cv7RZMW}RQS z+uF78uC+oTwaSI*wj6&2+f9E}+hujpsSucAnHnf=xe+*Mt{d!N-V(fRN(=QiEe+i_CWPNIt`46yl!??f{22KH%!_i4 z(pUOKJt|hw(!^`pNMV|O66@ep%-w?#Z-=moap?Dj_mF#jP-{ze%ryg)kK_}PN`{h= z-wgA@gNy|sYU~wSX1WqAVQv@PYCaz*Yv~&J-14N*X`Na)*;=&lw)K?1rfs}`j;)&i ztj+H;+E4oG+SmH}+Nb$u*@yU6+TZhiY43|R(zn7s*EiGtmG3?K6<=+;$uHPj`A^!G z`6t_+`ODdw6`r$hE9`GA8Yr}U7MNy9399DLgX7FqLr+X+LLE#4!@G>uh|Tyzq>o_$ zazKWvOIMI#K8616_49&*+J#HFYWob=v~LL~^&+CK-NVY~b7_j&OFpb*81%>$WbS#! zCE?np2cd_iTA{h-#lg~+g1}+RTY+}g(}h>94GO#1egcvf{@V5%zP0u-KA%0!*VJ*^ zJI^u8d)(2|>vE)d?>^`3>)zsA8{}{ z=Xn-4%d;>p3oP{T{@}O+v;%!R?20eLz8>~$Re0H|6c)E02)t*R9$aT`AG%~J8IB+Z zUohT}G&KC8ye)sPj*z~j8|v8Rb;KFHTjEA|syZLKcR72zOU36F zd>lWg;9>kr1(g!+xdtbE?pm2J(zQRKz3WUuUDvsUTCSrBja-`(-gZq+nCWVq@S`gn zuevtJzh2NNes94AXK8mw=SKGlFjPM7XU{ChVDBY+hA+{6-PhK(-apYgqHvw1bzr}_ za`3DvJ#^h@58pNzBe!Iuaut?2i+pidD6MbDiewFKK|aEj%s6eR*iW4*byXI~ts<)p z4Z|Ca^+I2n>Ic6vHw%1W=~B4VI@te#?PFgr`)+S-#}khnSIToHZn%4f^JGEA__76O z<5#-6CnUS>C2Y*^lGq^sU}9EYeA1@8w~|KWElO&gw?C;y-i4%>^R6Y;%R86UE${oJ zIeBxFj_0*aip$p%hv#ofyp>-kv775~!edwUgy{vV;>)|;&Ij&#&MlsaapS#TJKpg9 zW`E89*jBaBZLJdUTWSSe=4ObN?%{LBiIE+Kwb1>f+F#1YbxJX6724zO-E^#{cVRXB zKx(Br4C%_N#{6(^(=VY}=1sv3mbrmF)=`DWY<>Jc+k5(sIeL3{#f|hVcYfp^5x=A0 z)r1GGV8RQouM;TVRwzVou2BB9o{nbgFYK_Znni+c*I;h__68rPzTHsR>OtJDJfZB!D){7Y>md`Io7=TFB|cO>psfhqpB z%bbvvuO`U(er@xkUIc-(e#57~JHSOcQK z`QF4LE@NVPfhD1=TX#0`Jc%3PJ>vM>_lf<1zpbreK(J27s^Ctjv#C+UW%yQ^E2nFz z(gJ;pKuA?GUO1>{i!HPs@>S)mp?{=?NeQhquL^oCbptJIPy9>lYkZd-Z+Q*QlAbE@ zp@LQkcU)Z)FXVSlx|r86`9W@x6e0IXO0Ap?sgtvtrd`Rpp4K4ijr5-~kED0XOv(s8 z>zc9m+02Z&&sJs(d$u}b(6bLSCO_+*@x`-Z8F!wYO|O*MCw)og(==;VH=x{;`f9eC zl9yd8Wlv7`Ox%u7mokSiwxS#qtMy(yEkN2gxNDhgzK(tgT( z1<1Ch2cHojYYAi%f$TFNTLWYZfNT(uy_``g^C6H;OSfhj(^q9pO?x%_UTR);<w>r$_f^w{H2NvlkyNUxjx-#P+%&!!ZeT75uCpu&c&v2`8`^Vy zvm9T04*VfD8JIIV^{ecnX%QfMFYA@`+dwur zlVsR3TV|XDvPD2P8ps9$*;pW34rJ$^JxoslvhkV5^qkD8X=AhQrN#l-k?g@KGjf(C zcgfwJR3~p=V&(ju3DsSzQZv8Kte91a{X6%BPZ&JI77 z^CRPMwJeC2wS~B+nnn+kOV_EvX{ z^bC({;$G`4S@2W5({(Aqk$){QBkycdo!p(t19N7je3jiSHIn5`eJ^WK+U?9#AX|`b z%gjwb`K&gO4F|GCK(-dhmH^pUAZwVBl3563tAVUs`q->5)8ev?X-BfVr_RV(o6;rs zY;v8vOvIcovAWBX(7fP5{6P0H=W@@oxJ%x59LfF^d%wan*296(mZG5q^X%|;V}7Ku zp_h6^x~#n`w!rnxVcajNCQ@y)v`|gL)x>n;uJBV+>re|zW?+MLQDL5~fxo&V=p7z+ z*t6ET!2MJF;DSpDU0l}^+vlH6dNXfl^2pp-DXVjurC!VSrk2iLlr}djH9Z1kbAar{ z%-R{h1KAoN8xLfIfNTVi%?GkW&kEBCko5qv-!i{U>zHLsdz#ffbxHQxlnyy(lZ)kM zCaJl;#QZ!@f-C<4a^^8-G54~#R-ShpGrTES)t#|A3rAZ91QN`rg4>N1!i^2fB3C3q zeOG*6%O+X+INYD4+V8?btjUVvDt{NQomz($nlc0V=0%0AtPT8YY(ejz_QReMaSPn9 zI|mnxkMH7In9x3ddE%RSpC*mWoshgbr(?>s>|`MOHFa**khDl+>*)p zc{P$;`85-DSJ{MOZgYGq&x5!b-ftZzeS_@I!eX`ofisp5LJHMXVxKkco2CE_gJ*PS=q z1=ZCQb|qFJNUzW}m2nPoGc z0NGbS_5tE;Fpv!evY9~k-7`x@{lxmdIJd#!wAYqu@&O<3g`xslSD-m2ZjN;=Sy+;WjvT z6;#0*q*cPg{H}>h^ExMemD@1+d`^)RIp;}A$LtNM+p?Mh+4Zz9GT#8QBk50`B>`Di zAe#wfD}ih^kbMYb-GQuFMzhSbK-MR{Qr1%->z39pdrxYy95v-xPOX%ax!sd@<&8@E zE`MC&LD$fPs|B6o6?a8vHE+-{+IP@?*gwh^7btEW8a!dXh%2Ewk)UC#GG9*9()k?6 z=Quvc@i~sqaeR*Ba~!{px3IClF{yQi9x4igodGX)!;=kp^f6I&i zmKXmmFaCR#{P!yP?^W{OtK`2|$$zhs|6V2kO=kX^%=|Z*`EN4w-(=>$$;_WSz@Iz7 zpF6;xJHVeiz@Iz7pF6;xt;3(K!=J6gpRL26t;3(K!=J6gpC8AcAIF~`$Dbd^pC8Ac zAIF~`$DfhPpOMO+k;neF&C9kXGb(OrXlGj!8x=LPG z$?Gb4T_vxpneF&C9kXGb(OrXlGj!8x=LPG$?Gb4T_vxpneF&C9kXG zb(OrXlGj!8x=LPG$?Gb4T_vxpl5skyiUhOPh#9Hx7q0}@HjIHev9wqT9vROzbmvL zNw4RvPdbxZKDkrw#^mfAYs!k8_fp=-*_u*1=Z_RaPB0~sEvJe(G^J=xR!Ym9V<{iz z%t^VLQzxZn?#<*axkHl6<>e$D$m^c;PX6IUi_4z)tLycI&kE+n4|nf!cJ}-h*Tj3* z@tW_ky@~&!tz+ReYrnv8%Z%U_^TyB|)34!PMqi|cp`>b%J8Rd)+4>e?A011ckft0I8lqy>4~l6vNyPHK?%ds4N$ zi%B)|4kWe6`z&cl-n&Wb^U{+Z=ABBcncq8cMSfm_(KR$-p6gD0azVrRT?NaXZ@KTs z**(SL&U-pJR(mJeNBCCTI{0^5Unx9dDI563Ts(N%R5WzbSR#DTP%iSFTtnF)HBlFe zU9`!<0DTadNZ+LMNeg|AP)GY(tfKCb$}0!ta*;!ZO5y#+I-%{Rw!t;#0f8Bo`Gq~L z`~6jIE??MI-S?w?hIg3b7VOx_vmKN`#j|+Nc#4YmNj;rpe;C$pB z;{3w>xpRp77iSaqeP>yBt~1S@<4kqmb(VG?cfRIc?d<37=UnM7<-Fm(7FXIcC2p!G zIqrdHi=&gbg5#`rlf9!a(SFxA$u{19!=dpwdqIQvFhFr}>1S)>7E2uO?k+4ke@^-9eV=ZwuL)C^pr;6+c%y zNV?*Z`X~$JbCJ@9I*}g@--cTlONB2OH-P7g6)v*YD?DyZEX=n0{bt((e+k=FeM z>1t@JoRRM+b>xxi7D>{a(mHLDSW|x}T+mwz1A&Qd7k1hNXjRMxrjkWWV~@r_>r-4xQ*%O(6^?3A<=9Jbv5q~eqkOOd<=V* zuw)0iSoQ^`TRskKvh)ia1@~8g{H~>3;DM!7;5N4B@%~3ktH2t3J`TsV!tsfg%)kwE zso-*R|6p75j$p*3!A@O5tq@mFjPc=V#tGpBAGhAxpxhBJ{pawDa-d`S6Gs;kzP z4yk*@23i&Ir1rJYMt@Pb47=6FOsE0zvA3{w{V?%RIwL>ROLMUXq8Z2-AF4)Pu zAUN7QHu#CTPjCZflW)v#1b3L<3T`v^1ry_fi_D(}Cjdn^^R-|#vlx=iwPBypp;e~u zLvNb`p(In2@UO;Y;Yr4h=-wv`gKusBfLD*mK(!s;U=4AZ|9enG6gK=a6C zx{O?QM}1HF7E#+@eJYh! zOUqA{p7M5OnLJ+kS#G9ywdqYR58T@2eJ)sdI&26yDKoUZJbTPSnUcW3!qB}0Cw zJdld08>P3@KGG_+gmhcIC6>^Z!Cq~}9U4V$+$S{C2g5Q&guD6$QjyLelW28vnm(pU zWF_rG+90>+dYJ6fn}LIcLK*$4@IXr!*K0k+9@+-6xOPW;q^3#R)K1bkb*|J@{Smgz zl(LjW`2_rbgYvFCO_?G0QP#;s4LCSi0jxtl;tn`sjD-Gp5C0$Nc3*dRDq_LQDx2k=mTWS?4UJHnAwIkwOZ8kDT zOOfbiv9bQEFiZbPI0>5>s3f$eC&&Uiom`~#NdgJcH^>ik1$m#|AT?;J;MKbdd-Y|) z1pR_gPdA~5M)2ox;%8Wy_112RFKb4LXw{`_YIo^7b%rz#oc2?XOU>20QU%qI3}lhR zN>MpWc}c#d)RZp*`5C2wd@9=NLi-x>1*HP6Ju+Z_vm8)-k`?EcQcp;)shg$l>TGEW zvcv|pu5?O`mvYsoVybokGt_)>jP|y;Nh>E_L)J6vM}!9YJmG!4ldw%sL$1G1iqfs5 zD;-8Yr8USI8pa%VoYo~D(=p_A`Yp+z56KffMcAdc6+Y0X3GMVDXT?VfQ)E3faAYQ7DkY=kNNE6ig(r|T|G!WMr{nYhn z8}NE9_N|b{s|%%>>MUuo`aWjfzS2Imqx75ls`NyC0nABK3GJEKP&+NYr)`0qW{TUj z?&4LfJ5=tyH|Trh zE4r9Wphrn-L}L+}F68UYVd;^=YJH_J3LLf89}A_BX?3lFcvowUC>|hwj+mUItrdr8 zyRioU1@p`wVkIq8EDFSN$hDGYk`&c06{=3ji{?=sl20{DK~<1+H3(*M#boWSSV}uD z*3b@$Er6uEwh;DtU;G3%+N#wDqs7ICnkG=~j!;rRfY@3t48n}HP;Vpb(Mt)p^av5? z@8l&|rVE`(rqZ{tPJWqOpav44cj*gcA8kbz(ox8sE3sBN0{cBCe%*|juoAfGD16G+ zY5HQJlfFZ!sh<Y7jjS$Z+SLKS3>+oU}`0Gq8OOXxVVmv$l7X;l)W4pM~VBJ$4C zUgT>;;XL{|83_Beq<2Yq8X*>%1{>BCuIL?v{rVtbgFZv}5TlILw+V0SM}-#pWuScs zn-&O3x+)kEqly+UdXR~-wG!fEt(5pcD+61X74Jm1CGozP_(V$)bKvP-O@gO|1e2aC zB(`(Y`oh8qlo*7vGbb@Znvk`uZ=( zOsAvUhIrou`&;4j4mhqGj_<8+0*ckbc;x6gK(kaIBYdg%6?OyBNxiXfO@CR))Qbv= zZW7|7EBt$;KK+$+rhCX>x{l1CA0pq6AUo-s#*oR zVE=%8M3<7W^efVf9>ffBp47%1ScbYuA|--Igv;9M{j_5C}!||JN-nTe^4`Tc1;BLenxuIO{4?eO&ZZ-q&mHTE2Gv zdSFw9D7p-^4rr1rJO#fG;5m2nvcez8Vb>9}SHZ$ny-KvP_kZXw;q!7ht|S;LCgkX; zf(L#PMvRM;5*rPW6lAp*;WL#mJJq4*NOMF=XXx-QPz}edHI;ru=F`b!H64m*>Op>_ z?J#4%hRj%*Jf+29HwTf4jv2gwmV)i7lPk0lIY~PryYxiv975L62|zg;+$_QzxE3C; z6}H@koOA%(ogj_jwXeeOtI?atRrg70WT6t^xCmC@snkW1VCw`h;QVKElX&b;#OEnA zi=@*h@cIX&B)vt-(W{7`^N56BNIhh1} z@%1_FO19C~h^W`dDOwHLzcjf+(?}-b%};gAab8%E+3pT4gHNlGpOIY-!ooXgXJphK zWG${2mLQLQL?@By$g~r1uVoZn0;H=*A7q~%bPMT*EZmvygnjn_^?pS7L2!MTG>d9^ z6f5#$(DrDwHK#uzTOGo22N2i$Ft_dog72`l{RVc~MEcY9WGM397>qHAevBM23v=*f z=r9I$8bUS#)iz}Ny|BU&+5+~fPcFk7Z_x_mF)cyzX)64d$`aW06U63Rpq+_m{s3A`q6^4)*mx|o z8jV%!NO<%Jx;*Md!=qdFn(bQ(b{0eXh46>@U~3+(C1;aqh@V+>3i9=Mte!?=jG<%& z?T;+?E)cyV69SO}wlf__RQM8T4c5L)L+rJckunfm6$FZw$&Kj&I)&s>Ci1p3r^DFet#@L1V zYA@}8vD?5#%@Hw;u%fDmtC&}Ss4DcV2z|@on(YOk%7BHEh!0r8Ku4*FnA4~gIGsS4 zO!8$KyK11!g1O3W40;^e@i3TK$VXf%>yijuvP@fbczKMa2m14icjKjL?X$d zsffWMKv*0Z^+ohj239YRJX8@LTP14Ki}3ODxCT6jk$=TC(`l?te}V7+9Q78aRl{gI z0j{5KZ2ze!Lk*(Go{lnB7uvH(s2%N-^?e1g&&IkAG&jNW9eCco=#2Fu;;ML5zign& zgGCB(C&3Hd3lV1_*i1qG*MUof^<<(_6A)Svg$`IXp17kim;z5t2PZ|)Q!#jK37~xu zT$RGLUl|}SixJBMHM8$aQ4hHRO|ByoUyHUXQSF$9|7T;Lv*TE+2*%jCtdDZ!cC=5{ zHyh(cF#7`e6G$FM?UMnYVm4xWF*_vy6|mETf$_n7 zm^H=^Be+q`o?U< zEW~gyJTbfd^@?Rp_Q_v1WcdF&OZ^8@CCU%uh_$~)iH*jxZj6Ed_wC>Nij5Jo$6rkU zWtW&vOutx*>CG$@!@_J9`xnC+v*BMT|2pe`_wrY7F|PjAmT3^P`+u}$Z2hZqpWpZQ zG1>d)b&9=yUhmlJ7^dg9Ec#-&|GtfJ^WU-kyDtCH`{%LzyVo%u{wHn!ozDDo&H!iN Izn6jk1)s7$G5`Po literal 0 HcmV?d00001 diff --git a/packages/plugin-headphone-check/examples/audio/antiphase_HC_SOI.wav b/packages/plugin-headphone-check/examples/audio/antiphase_HC_SOI.wav new file mode 100644 index 0000000000000000000000000000000000000000..d2dd85a37f19f2b0c25c7193893d5680af18e11b GIT binary patch literal 352856 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 literal 0 HcmV?d00001 diff --git a/packages/plugin-headphone-check/examples/index.html b/packages/plugin-headphone-check/examples/index.html new file mode 100644 index 00000000..6f0261da --- /dev/null +++ b/packages/plugin-headphone-check/examples/index.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/plugin-headphone-check/jest.config.cjs b/packages/plugin-headphone-check/jest.config.cjs new file mode 100644 index 00000000..6ac19d5c --- /dev/null +++ b/packages/plugin-headphone-check/jest.config.cjs @@ -0,0 +1 @@ +module.exports = require("@jspsych/config/jest").makePackageConfig(__dirname); diff --git a/packages/plugin-headphone-check/package.json b/packages/plugin-headphone-check/package.json new file mode 100644 index 00000000..e51fb4b9 --- /dev/null +++ b/packages/plugin-headphone-check/package.json @@ -0,0 +1,48 @@ +{ + "name": "@jspsych-contrib/plugin-headphone-check", + "version": "0.0.1", + "description": "Allows for one to check if a participant is wearing headphones using an auditory task.", + "type": "module", + "main": "dist/index.cjs", + "exports": { + "import": "./dist/index.js", + "require": "./dist/index.cjs" + }, + "typings": "dist/index.d.ts", + "unpkg": "dist/index.browser.min.js", + "files": [ + "src", + "dist" + ], + "source": "src/index.ts", + "scripts": { + "test": "jest", + "test:watch": "npm test -- --watch", + "tsc": "tsc", + "build": "rollup --config", + "build:watch": "npm run build -- --watch" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jspsych/jspsych-contrib.git", + "directory": "packages/plugin-headphone-check" + }, + "author": { + "name": "jadeddelta", + "email": "jadeddelta@gmail.com", + "url": "https://github.com/jadeddelta" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/jspsych/jspsych-contrib/issues" + }, + "homepage": "https://github.com/jspsych/jspsych-contrib/tree/main/packages/plugin-headphone-check", + "peerDependencies": { + "jspsych": ">=8.0.0" + }, + "devDependencies": { + "@jspsych/config": "^3.0.1", + "@jspsych/test-utils": "^1.0.0", + "jspsych": "^8.0.0" + } +} diff --git a/packages/plugin-headphone-check/rollup.config.mjs b/packages/plugin-headphone-check/rollup.config.mjs new file mode 100644 index 00000000..8ce61671 --- /dev/null +++ b/packages/plugin-headphone-check/rollup.config.mjs @@ -0,0 +1,3 @@ +import { makeRollupConfig } from "@jspsych/config/rollup"; + +export default makeRollupConfig("jsPsychHeadphoneCheck"); diff --git a/packages/plugin-headphone-check/src/index.spec.ts b/packages/plugin-headphone-check/src/index.spec.ts new file mode 100644 index 00000000..05593bc6 --- /dev/null +++ b/packages/plugin-headphone-check/src/index.spec.ts @@ -0,0 +1,19 @@ +import { startTimeline } from "@jspsych/test-utils"; + +import jsPsychHeadphoneCheck from "."; + +jest.useFakeTimers(); + +describe.skip("headphone-check plugin", () => { + it("should load", async () => { + const { expectFinished, getHTML, getData, displayElement, jsPsych } = await startTimeline([ + { + type: jsPsychHeadphoneCheck, + parameter_name: 1, + parameter_name2: "img.png", + }, + ]); + + expect(3).toBe(3); + }); +}); diff --git a/packages/plugin-headphone-check/src/index.ts b/packages/plugin-headphone-check/src/index.ts new file mode 100644 index 00000000..e06b2f70 --- /dev/null +++ b/packages/plugin-headphone-check/src/index.ts @@ -0,0 +1,456 @@ +import autobind from "auto-bind"; +import { JsPsych, JsPsychPlugin, ParameterType, TrialType } from "jspsych"; +import { AudioPlayerInterface } from "jspsych/src/modules/plugin-api/AudioPlayer"; + +import { version } from "../package.json"; + +const info = { + name: "headphone-check", + version: version, + parameters: { + /** The list of tones that will be played. */ + stimuli: { + type: ParameterType.AUDIO, + default: undefined, + array: true, + }, + /** The list of correct answers, corresponding to each tone. Each number in the array is between 1-3, + * corresponding to the first, second, and third being correct or not. */ + correct: { + type: ParameterType.INT, + default: undefined, + array: true, + }, + /** Number of trials that will be played. */ + total_trials: { + type: ParameterType.INT, + default: 6, + }, + /** Threshold of correct trials needed to pass the headphone screening. */ + threshold: { + type: ParameterType.INT, + default: 5, + }, + /** Number of trials that are rendered on a single page. Must be a factor of `total_trials` so each page gets their own equal set of trials. */ + trials_per_page: { + type: ParameterType.INT, + default: 3, + }, + /** An HTML-formatted string presented to the participant above the audio questions. */ + prompt: { + type: ParameterType.HTML_STRING, + default: + "

Listen to the following sounds and select which option is quietest.
Click the play button to listen to the sound, and select the correct option.
Test sounds can only be played once!

", + }, + /** A 3 element array containing the labels of the three radio buttons. */ + labels: { + type: ParameterType.STRING, + array: true, + default: ["FIRST sound is SOFTEST", "SECOND sound is SOFTEST", "THIRD sound is SOFTEST"], + }, + /** The label of the play button. Will be used for calibration as well if enabled. */ + play_button_label: { + type: ParameterType.STRING, + default: "Play", + }, + /** The label of the continue button. Will be used for calibration as well if enabled. */ + continue_button_label: { + type: ParameterType.STRING, + default: "Continue", + }, + /** If a calibration sound will be played to allow the participant to adjust their volume. */ + calibration: { + type: ParameterType.BOOL, + default: false, + }, + /** The audio file that will be played for calibration. */ + calibration_stimulus: { + type: ParameterType.AUDIO, + default: null, + }, + /** A function taking in the current amount of calibration attempts, which acts to present this info + * along with a stimulus to the participant above the calibration button. */ + calibration_prompt: { + type: ParameterType.FUNCTION, + default: function (calibration_counter: number) { + return `

Calibrating Volume: Press the play button below to play a sound.
Adjust the volume of the sound to a comfortable level, and click continue when you are ready.
You have ${calibration_counter} calibration attempts remaining.

`; + }, + }, + /** The amount of times the user may play the calibraiton sound. */ + calibration_attempts: { + type: ParameterType.INT, + default: 3, + }, + }, + data: { + /** If the participant passed the headphone screen. */ + did_pass: { + type: ParameterType.BOOL, + }, + /** Total number of correct responses. */ + total_correct: { + type: ParameterType.INT, + }, + /** An array of objects indicating what the headphone check stimulus was, which option the participant selected, and if it was correct. */ + responses: { + type: ParameterType.COMPLEX, + array: true, + nested: { + /** Filepath of the stimulus object. */ + stimulus: { + type: ParameterType.STRING, + }, + /** The option the participant selected, from 1-3. */ + response: { + type: ParameterType.INT, + }, + /** If the participant's response was correct. */ + correct: { + type: ParameterType.BOOL, + }, + }, + }, + }, +}; + +type Info = typeof info; + +/** + * **headphone-check** + * + * Allows for one to check if a participant is wearing headphones using an auditory task. + * + * @author jadeddelta (jade) + * @see {@link https://github.com/jspsych/jspsych-contrib/packages/plugin-headphone-check/README.md}} + */ +class HeadphoneCheckPlugin implements JsPsychPlugin { + static info = info; + private params: TrialType; + private container: HTMLElement; + private context: AudioContext; + private startTime: number; + private trialData: { + did_pass: boolean; + total_correct: number; + responses: { + stimulus: string; + response: number; + correct: boolean; + }[]; + }; + + private calibrationPlayButton: HTMLButtonElement; + private calibrationContinueButton: HTMLButtonElement; + private calibrationAudioResource: AudioPlayerInterface; + private calibrationCounter: number; + + private trialResources: { + fieldset: HTMLFieldSetElement; + audioResource: AudioPlayerInterface; + page: number; + alreadyPlayed: boolean; + }[]; + + private trialContinueButton: HTMLButtonElement; + + private currentPage: number; + private numberOfPages: number; + + private css: string = + ``; + + private trialComplete: (trial_data) => void; + + constructor(private jsPsych: JsPsych) { + autobind(this); + } + + async trial(display_element: HTMLElement, trial: TrialType, on_load: () => void) { + this.params = trial; + this.container = display_element; + this.container.innerHTML = this.css; + this.context = this.jsPsych.pluginAPI.audioContext(); + this.trialResources = []; + this.trialData = { + did_pass: null, + total_correct: 0, + responses: [], + }; + + this.calibrationCounter = this.params.calibration_attempts; + this.currentPage = 0; + + await this.setupParameters(); + + on_load(); + + this.startTime = performance.now(); + + if (trial.calibration) { + await this.beginCalibration(); + } else { + await this.beginCheck(); + } + + return new Promise((resolve) => { + this.trialComplete = resolve; + }); + } + + /** throws errors/warns developer if any trial parameters are invalid to prevent unwanted behaviors, + * then handles the setup of default parameters. */ + private async setupParameters() { + // Trial parameter verification + if (this.params.total_trials < 5) + console.warn( + "Warning from HeadphoneCheckPlugin: The total number of trials is less than 5, and the test may be highly inaccurate." + ); + if (this.params.threshold / this.params.total_trials < 0.8) + console.warn( + "Warning from HeadphoneCheckPlugin: The threshold is less than 80% of the total trials, and the test may produce more false positives." + ); + if (this.params.total_trials % this.params.trials_per_page !== 0) + throw new Error( + "Error from HeadphoneCheckPlugin: The number of trials per page is not a factor of the total trials." + ); + this.numberOfPages = this.params.total_trials / this.params.trials_per_page; + + // Test parameter verification + if (this.params.labels.length !== 3) + throw new Error("Error from HeadphoneCheckPlugin: The number of labels are not equal to 3."); + if (this.params.stimuli.length !== this.params.correct.length) + throw new Error( + "Error from HeadphoneCheckPlugin: The number of stimuli and correct answers are not equal." + ); + + // Calibration parameter verification + if (this.params.calibration && !this.params.calibration_stimulus) + throw new Error( + "Error from HeadphoneCheckPlugin: Calibration is enabled, but no calibration stimulus was provided." + ); + + // instantiate trial resources + for (const [stimuliIndex, stimuli] of this.params.stimuli.entries()) { + var fieldset = document.createElement("fieldset"); + fieldset.id = `jspsych-headphone-check-fieldset-${stimuliIndex}`; + fieldset.className = "jspsych-headphone-check-fieldset"; + + var audioRes = await this.jsPsych.pluginAPI.getAudioPlayer(stimuli); + audioRes.addEventListener("ended", this.handleCheckAudioEnd(audioRes, fieldset)); + + var play = document.createElement("button"); + play.id = `jspsych-headphone-check-play-${stimuliIndex}`; + play.className = "jspsych-btn"; + play.innerHTML = this.params.play_button_label; + play.addEventListener("click", this.handleCheckPlay(audioRes, fieldset)); + fieldset.appendChild(play); + + var box = document.createElement("div"); + box.id = `jspsych-headphone-check-box-${stimuliIndex}`; + box.className = `jspsych-headphone-check-box`; + fieldset.appendChild(box); + + for (const [labelIndex, label] of this.params.labels.entries()) { + var radio = document.createElement("input"); + radio.type = "radio"; + radio.name = `jspsych-headphone-check-radio-${stimuliIndex}`; + radio.id = `jspsych-headphone-check-radio-${stimuliIndex}-${labelIndex}`; + radio.value = labelIndex.toString(); + + var radioLabel = document.createElement("label"); + radioLabel.setAttribute("for", radio.id); + radioLabel.innerHTML = label; + + var radioBox = document.createElement("div"); + radioBox.id = `jspsych-headphone-check-radio-box-${stimuliIndex}`; + + radioBox.appendChild(radio); + radioBox.appendChild(radioLabel); + + box.appendChild(radioBox); + } + + this.trialResources.push({ + fieldset: fieldset, + audioResource: audioRes, + page: Math.floor(stimuliIndex / this.params.trials_per_page), + alreadyPlayed: false, + }); + } + + var continueButton = document.createElement("button"); + continueButton.id = `jspsych-headphone-check-continue`; + continueButton.className = "jspsych-btn"; + continueButton.innerHTML = this.params.continue_button_label; + continueButton.addEventListener("click", this.handleCheckContinue); + + this.trialContinueButton = continueButton; + } + + // -- calibration -- + + /** displays the calibration screen, this function will get replayed for each new calibration request + * up to the amount of calibration attempts. */ + private async beginCalibration() { + // regenerate the audio player + this.calibrationAudioResource = await this.jsPsych.pluginAPI.getAudioPlayer( + this.params.calibration_stimulus + ); + + this.calibrationAudioResource.addEventListener("ended", this.handleCalibrationAudioEnd); + + // check non-null calibration prompt + if (this.params.calibration_prompt !== null) { + this.container.insertAdjacentHTML( + "beforeend", + this.params.calibration_prompt(this.calibrationCounter) + ); + } + + // calibration play button html + this.calibrationPlayButton = document.createElement("button"); + this.calibrationPlayButton.id = "jspsych-headphone-check-play-calibration"; + this.calibrationPlayButton.className = "jspsych-btn"; + this.calibrationPlayButton.innerHTML = this.params.play_button_label; + this.calibrationPlayButton.addEventListener("click", this.handleCalibrationPlay); + + // calibration continue button html + this.calibrationContinueButton = document.createElement("button"); + this.calibrationContinueButton.id = "jspsych-headphone-check-continue-calibration"; + this.calibrationContinueButton.className = "jspsych-btn"; + // if equal, then we know the participant hasn't used a calibration attempt yet + if (this.calibrationCounter === this.params.calibration_attempts) { + this.calibrationContinueButton.setAttribute("disabled", "disabled"); + } + this.calibrationContinueButton.innerHTML = this.params.continue_button_label; + this.calibrationContinueButton.addEventListener("click", this.setupCheck); + + this.container.appendChild(this.calibrationPlayButton); + this.container.appendChild(this.calibrationContinueButton); + } + + /** disables the play button to prevent multiple clicks, and logs a calibration attempt. */ + private handleCalibrationPlay() { + this.calibrationCounter--; + + this.calibrationPlayButton.setAttribute("disabled", "disabled"); + this.calibrationAudioResource.play(); + } + + /** finished up with play, reinstate new calibration attempt. */ + private handleCalibrationAudioEnd() { + this.calibrationAudioResource.stop(); + this.cleanupCalibration(); + this.beginCalibration(); + } + + /** clear display and event listeners */ + private cleanupCalibration() { + this.calibrationAudioResource.removeEventListener("ended", this.handleCalibrationAudioEnd); + this.container.innerHTML = this.css; + } + + // -- trial -- + + /** begin headphone check from calibration */ + private async setupCheck() { + this.cleanupCalibration(); + this.beginCheck(); + } + + /** rest of headphone check- similar to calibration this will get re-called */ + private async beginCheck() { + const currentResources = this.getCurrentResources(); + + // reset display + this.container.innerHTML = ""; + this.container.insertAdjacentHTML("beforeend", this.css); + this.container.insertAdjacentHTML("beforeend", this.params.prompt); + + for (const resource of currentResources) { + this.container.appendChild(resource.fieldset); + } + + this.container.appendChild(this.trialContinueButton); + } + + /** play the audio and disable all other controls to allow participant to focus on the audio. */ + private handleCheckPlay(audio: AudioPlayerInterface, fieldset: HTMLFieldSetElement) { + return () => { + audio.play(); + var playButton = document.querySelector(`#${fieldset.id} button`); + playButton.setAttribute("disabled", "disabled"); + + var fieldsets = document.querySelectorAll(`.${fieldset.className}`); + fieldsets.forEach((fieldset) => { + fieldset.setAttribute("disabled", "disabled"); + }); + }; + } + + /** cleanup audio resource, enable everything else */ + private handleCheckAudioEnd(audio: AudioPlayerInterface, fieldset: HTMLFieldSetElement) { + return () => { + audio.removeEventListener("ended", this.handleCheckAudioEnd(audio, fieldset)); + + var fieldsets = document.querySelectorAll(`.${fieldset.className}`); + fieldsets.forEach((fieldset) => { + fieldset.removeAttribute("disabled"); + }); + }; + } + + /** if there's more pages, instantiate another test- otherwise we are ending the trial. */ + private async handleCheckContinue() { + this.saveData(); + this.currentPage++; + var currentResources = this.getCurrentResources(); + if (currentResources.length === 0) { + this.endTrial(); + } else { + await this.beginCheck(); + } + } + + private saveData() { + var currentResources = this.getCurrentResources(); + for (var i = 0; i < currentResources.length; i++) { + var absoluteIndex = this.currentPage * this.params.trials_per_page + i; + var radioButtons = currentResources[i].fieldset.querySelectorAll("input[type='radio']"); + var selected = Array.from(radioButtons).find((radio) => (radio as HTMLInputElement).checked); + if (selected) { + var selectedValue = parseInt((selected as HTMLInputElement).value); + var correctValue = this.params.correct[absoluteIndex] - 1; + var correct = selectedValue === correctValue; + this.trialData.total_correct += correct ? 1 : 0; + this.trialData.responses.push({ + stimulus: this.params.stimuli[absoluteIndex], + response: selectedValue + 1, + correct: correct, + }); + } + } + } + + /** gets the resources for the current page */ + private getCurrentResources(): { + fieldset: HTMLFieldSetElement; + audioResource: AudioPlayerInterface; + page: number; + alreadyPlayed: boolean; + }[] { + return this.trialResources.filter((resource) => resource.page === this.currentPage); + } + + private endTrial() { + this.trialData.did_pass = this.trialData.total_correct >= this.params.threshold; + + // end trial + this.jsPsych.finishTrial(this.trialData); + } +} + +export default HeadphoneCheckPlugin; diff --git a/packages/plugin-headphone-check/tsconfig.json b/packages/plugin-headphone-check/tsconfig.json new file mode 100644 index 00000000..2ef23fa9 --- /dev/null +++ b/packages/plugin-headphone-check/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "@jspsych/config/tsconfig.contrib.json", + "compilerOptions": { + "baseUrl": ".", + }, + "include": ["src"] +} From 304ce2291e6c6b693ff7f60a1759839839776dc7 Mon Sep 17 00:00:00 2001 From: jade <101148768+jadeddelta@users.noreply.github.com> Date: Mon, 11 Nov 2024 17:55:05 -0500 Subject: [PATCH 2/6] added error checking, fix up css --- package-lock.json | 2 +- packages/plugin-headphone-check/package.json | 2 +- packages/plugin-headphone-check/src/index.ts | 40 ++++++++++++++----- packages/plugin-headphone-check/tsconfig.json | 1 + 4 files changed, 33 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index a092174f..57630f04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19384,7 +19384,7 @@ "version": "0.0.1", "license": "MIT", "devDependencies": { - "@jspsych/config": "^3.0.1", + "@jspsych/config": ">=3.0.1", "@jspsych/test-utils": "^1.0.0", "jspsych": "^8.0.0" }, diff --git a/packages/plugin-headphone-check/package.json b/packages/plugin-headphone-check/package.json index e51fb4b9..db2f7760 100644 --- a/packages/plugin-headphone-check/package.json +++ b/packages/plugin-headphone-check/package.json @@ -41,7 +41,7 @@ "jspsych": ">=8.0.0" }, "devDependencies": { - "@jspsych/config": "^3.0.1", + "@jspsych/config": ">=3.0.1", "@jspsych/test-utils": "^1.0.0", "jspsych": "^8.0.0" } diff --git a/packages/plugin-headphone-check/src/index.ts b/packages/plugin-headphone-check/src/index.ts index e06b2f70..683f2143 100644 --- a/packages/plugin-headphone-check/src/index.ts +++ b/packages/plugin-headphone-check/src/index.ts @@ -127,8 +127,6 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { static info = info; private params: TrialType; private container: HTMLElement; - private context: AudioContext; - private startTime: number; private trialData: { did_pass: boolean; total_correct: number; @@ -150,16 +148,15 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { page: number; alreadyPlayed: boolean; }[]; - private trialContinueButton: HTMLButtonElement; private currentPage: number; - private numberOfPages: number; private css: string = ``; private trialComplete: (trial_data) => void; @@ -172,7 +169,6 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { this.params = trial; this.container = display_element; this.container.innerHTML = this.css; - this.context = this.jsPsych.pluginAPI.audioContext(); this.trialResources = []; this.trialData = { did_pass: null, @@ -187,8 +183,6 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { on_load(); - this.startTime = performance.now(); - if (trial.calibration) { await this.beginCalibration(); } else { @@ -216,7 +210,6 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { throw new Error( "Error from HeadphoneCheckPlugin: The number of trials per page is not a factor of the total trials." ); - this.numberOfPages = this.params.total_trials / this.params.trials_per_page; // Test parameter verification if (this.params.labels.length !== 3) @@ -244,6 +237,7 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { var play = document.createElement("button"); play.id = `jspsych-headphone-check-play-${stimuliIndex}`; play.className = "jspsych-btn"; + play.style.alignSelf = "center"; play.innerHTML = this.params.play_button_label; play.addEventListener("click", this.handleCheckPlay(audioRes, fieldset)); fieldset.appendChild(play); @@ -370,9 +364,12 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { this.container.insertAdjacentHTML("beforeend", this.css); this.container.insertAdjacentHTML("beforeend", this.params.prompt); + var fieldsetContainer = document.createElement("div"); + fieldsetContainer.className = "jspsych-headphone-check-fieldset-container"; for (const resource of currentResources) { - this.container.appendChild(resource.fieldset); + fieldsetContainer.appendChild(resource.fieldset); } + this.container.appendChild(fieldsetContainer); this.container.appendChild(this.trialContinueButton); } @@ -405,6 +402,9 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { /** if there's more pages, instantiate another test- otherwise we are ending the trial. */ private async handleCheckContinue() { + if (!this.checkData()) { + return; + } this.saveData(); this.currentPage++; var currentResources = this.getCurrentResources(); @@ -415,6 +415,27 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { } } + /** checks for and highlights fieldsets that the participant has not responded to */ + private checkData(): boolean { + var isValidData = true; + + var currentResources = this.getCurrentResources(); + for (var i = 0; i < currentResources.length; i++) { + var fieldset = currentResources[i].fieldset; + var radioButtons = fieldset.querySelectorAll("input[type='radio']"); + var selected = Array.from(radioButtons).find((radio) => (radio as HTMLInputElement).checked); + if (!selected) { + isValidData = false; + fieldset.style.border = "2px solid red"; + } else { + fieldset.style.border = ""; + } + } + + return isValidData; + } + + /** saves the data for the current page */ private saveData() { var currentResources = this.getCurrentResources(); for (var i = 0; i < currentResources.length; i++) { @@ -448,7 +469,6 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { private endTrial() { this.trialData.did_pass = this.trialData.total_correct >= this.params.threshold; - // end trial this.jsPsych.finishTrial(this.trialData); } } diff --git a/packages/plugin-headphone-check/tsconfig.json b/packages/plugin-headphone-check/tsconfig.json index 2ef23fa9..8a845081 100644 --- a/packages/plugin-headphone-check/tsconfig.json +++ b/packages/plugin-headphone-check/tsconfig.json @@ -2,6 +2,7 @@ "extends": "@jspsych/config/tsconfig.contrib.json", "compilerOptions": { "baseUrl": ".", + "resolveJsonModule": true }, "include": ["src"] } From 3a50f61d3a9b6e17223457fa33236722591fec54 Mon Sep 17 00:00:00 2001 From: jade <101148768+jadeddelta@users.noreply.github.com> Date: Mon, 11 Nov 2024 23:19:04 -0500 Subject: [PATCH 3/6] add docs, allow for shuffling of stimuli --- .../docs/headphone-check.md | 36 ++++++++++-- .../{index.html => basic-configuration.html} | 3 +- packages/plugin-headphone-check/src/index.ts | 55 ++++++++++++++++--- 3 files changed, 80 insertions(+), 14 deletions(-) rename packages/plugin-headphone-check/examples/{index.html => basic-configuration.html} (95%) diff --git a/packages/plugin-headphone-check/docs/headphone-check.md b/packages/plugin-headphone-check/docs/headphone-check.md index 643b2e1f..37a5708e 100644 --- a/packages/plugin-headphone-check/docs/headphone-check.md +++ b/packages/plugin-headphone-check/docs/headphone-check.md @@ -6,9 +6,25 @@ Allows for one to check if a participant is wearing headphones using an auditory In addition to the [parameters available in all plugins](https://www.jspsych.org/latest/overview/plugins/#parameters-available-in-all-plugins), this plugin accepts the following parameters. Parameters with a default value of undefined must be specified. Other parameters can be left unspecified if the default value is acceptable. -| Parameter | Type | Default Value | Description | -| ------------------- | ---------------- | ------------------ | ---------------------------------------- | -| | | | | +| Parameter | Type | Default Value | Description | +| --------- | ------- | ------------------ | ------------------ | +| stimuli | array of audio files | *undefined* | The list of tones that will be played. | +| correct | array of integers | *undefined* | The list of correct answers, corresponding to each tone. Each number in the array is between 1-3, corresponding to the first, second, and third being the correct response. | +| total_trials | integer | 6 | Number of trials that will be played. | +| threshold | integer | 5 | Threshold of correct trials needed to pass the headphone screening. | +| trials_per_page | integer | 3 | Number of trials that are rendered on a single page. Must be a factor of `total_trials` so each page gets their own equal set of trials. | +| prompt | HTML string | `"

Listen to the following sounds and select which option is quietest.
Click the play button to listen to the sound, and select the correct option.
Test sounds can only be played once!

"` | An HTML-formatted string presented to the participant above the audio questions. | +| labels | array of strings | `["FIRST sound is SOFTEST", "SECOND sound is SOFTEST", "THIRD sound is SOFTEST"]` | A 3 element array containing the labels of the three radio buttons. | +| play_button_label | string | `"Play"` | The label of the play button. Will be used for calibration as well if enabled. | +| continue_button_label | string | `"Continue"` | The label of the continue button. Will be used for calibration as well if enabled. | +| sequential | boolean | `false` | If true, each stimulus must be played and completed from first to last. | +| shuffle | boolean | `true` | If true, the trials will be shuffled before being displayed to the participant. | +| sample_with_replacement | boolean | `false` | If true, on shuffle, the trials will be shuffled with replacement, meaning some trials may contain duplicates. | +| calibration | boolean | `true` | If true, a calibration sound will be played to allow the participant to adjust their volume. | +| calibration_stimulus | audio file | `null` | The audio file that will be played for calibration. | +| calibration_prompt | function | ``function (calibration_counter: number) { return `

Calibrating Volume: Press the play button below to play a sound.
Adjust the volume of the sound to a comfortable level, and click continue when you are ready.
You have ${calibration_counter} calibration attempts remaining.

`;}`` | A function taking in the current amount of calibration attempts, which acts to present this info along with a stimulus to the participant above the calibration button. | +| calibration_attempts | integer | 3 | The amount of times the user may play the calibration sound. | + ## Data Generated @@ -16,7 +32,9 @@ In addition to the [default data collected by all plugins](https://jspsych.org/l | Name | Type | Value | | --------- | ------- | ---------------------------------------- | -| | | | +| did_pass | boolean | If the participant passed the headphone screen. | +| total_correct | integer | Total number of correct responses. | +| responses | array of objects | An array of objects indicating what the headphone check stimulus was, which option the participant selected, and if it was correct. Has three fields: `stimulus`: Filepath of the stimulus object. `response`: The option the participant selected, from 1-3. `correct`: If the participant's response was correct. | ## Install @@ -44,10 +62,16 @@ import HeadphoneCheck from '@jspsych-contrib/plugin-headphone-check'; ## Examples -### Title of Example +### Basic Headphone Check +This example mimics the default configurations in the [original Headphone Check](https://github.com/mcdermottLab/HeadphoneCheck) plugin. ```javascript var trial = { - type: jsPsychHeadphoneCheck + type: jsPsychHeadphoneCheck, + stimuli: ["./audio/antiphase_HC_ISO.wav", "./audio/antiphase_HC_IOS.wav", "./audio/antiphase_HC_SOI.wav", "./audio/antiphase_HC_SIO.wav", "./audio/antiphase_HC_OSI.wav", "./audio/antiphase_HC_OIS.wav"], + correct: [2, 3, 1, 1, 2, 3], + calibration_stimulus: "./audio/noise_calib_stim.wav", + sample_with_replacement: true, + sequential: true, } ``` \ No newline at end of file diff --git a/packages/plugin-headphone-check/examples/index.html b/packages/plugin-headphone-check/examples/basic-configuration.html similarity index 95% rename from packages/plugin-headphone-check/examples/index.html rename to packages/plugin-headphone-check/examples/basic-configuration.html index 6f0261da..95bbd584 100644 --- a/packages/plugin-headphone-check/examples/index.html +++ b/packages/plugin-headphone-check/examples/basic-configuration.html @@ -25,8 +25,9 @@ type: jsPsychHeadphoneCheck, stimuli: ["./audio/antiphase_HC_ISO.wav", "./audio/antiphase_HC_IOS.wav", "./audio/antiphase_HC_SOI.wav", "./audio/antiphase_HC_SIO.wav", "./audio/antiphase_HC_OSI.wav", "./audio/antiphase_HC_OIS.wav"], correct: [2, 3, 1, 1, 2, 3], - calibration: true, calibration_stimulus: "./audio/noise_calib_stim.wav", + sequential: true, + shuffle: false, }; jsPsych.run([preload, trial]) diff --git a/packages/plugin-headphone-check/src/index.ts b/packages/plugin-headphone-check/src/index.ts index 683f2143..b6067b57 100644 --- a/packages/plugin-headphone-check/src/index.ts +++ b/packages/plugin-headphone-check/src/index.ts @@ -15,7 +15,7 @@ const info = { array: true, }, /** The list of correct answers, corresponding to each tone. Each number in the array is between 1-3, - * corresponding to the first, second, and third being correct or not. */ + * corresponding to the first, second, and third being the correct response. */ correct: { type: ParameterType.INT, default: undefined, @@ -58,11 +58,26 @@ const info = { type: ParameterType.STRING, default: "Continue", }, - /** If a calibration sound will be played to allow the participant to adjust their volume. */ - calibration: { + /** If true, each stimulus must be played and completed from first to last. */ + sequential: { type: ParameterType.BOOL, default: false, }, + /** If true, the trials will be shuffled before being displayed to the participant. */ + shuffle: { + type: ParameterType.BOOL, + default: true, + }, + /** If true, on shuffle, the trials will be shuffled with replacement, meaning some trials may contain duplicates. */ + sample_with_replacement: { + type: ParameterType.BOOL, + default: false, + }, + /** If true, a calibration sound will be played to allow the participant to adjust their volume. */ + calibration: { + type: ParameterType.BOOL, + default: true, + }, /** The audio file that will be played for calibration. */ calibration_stimulus: { type: ParameterType.AUDIO, @@ -76,7 +91,7 @@ const info = { return `

Calibrating Volume: Press the play button below to play a sound.
Adjust the volume of the sound to a comfortable level, and click continue when you are ready.
You have ${calibration_counter} calibration attempts remaining.

`; }, }, - /** The amount of times the user may play the calibraiton sound. */ + /** The amount of times the user may play the calibration sound. */ calibration_attempts: { type: ParameterType.INT, default: 3, @@ -149,6 +164,8 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { alreadyPlayed: boolean; }[]; private trialContinueButton: HTMLButtonElement; + private stimuliList: string[]; + private correctList: number[]; private currentPage: number; @@ -170,6 +187,8 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { this.container = display_element; this.container.innerHTML = this.css; this.trialResources = []; + this.stimuliList = trial.stimuli; + this.correctList = trial.correct; this.trialData = { did_pass: null, total_correct: 0, @@ -225,8 +244,30 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { "Error from HeadphoneCheckPlugin: Calibration is enabled, but no calibration stimulus was provided." ); + // shuffle stimuli + this.stimuliList = this.params.stimuli; + this.correctList = this.params.correct; + if (this.params.shuffle) { + if (this.params.sample_with_replacement) { + this.stimuliList = this.jsPsych.randomization.sampleWithReplacement( + this.stimuliList, + this.params.total_trials + ); + this.correctList = this.jsPsych.randomization.sampleWithReplacement( + this.correctList, + this.params.total_trials + ); + } else { + var shuffled = this.jsPsych.randomization.shuffle([ + ...Array(this.params.total_trials).keys(), + ]); + this.stimuliList = shuffled.map((i) => this.params.stimuli[i]); + this.correctList = shuffled.map((i) => this.params.correct[i]); + } + } + // instantiate trial resources - for (const [stimuliIndex, stimuli] of this.params.stimuli.entries()) { + for (const [stimuliIndex, stimuli] of this.stimuliList.entries()) { var fieldset = document.createElement("fieldset"); fieldset.id = `jspsych-headphone-check-fieldset-${stimuliIndex}`; fieldset.className = "jspsych-headphone-check-fieldset"; @@ -444,11 +485,11 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { var selected = Array.from(radioButtons).find((radio) => (radio as HTMLInputElement).checked); if (selected) { var selectedValue = parseInt((selected as HTMLInputElement).value); - var correctValue = this.params.correct[absoluteIndex] - 1; + var correctValue = this.correctList[absoluteIndex] - 1; var correct = selectedValue === correctValue; this.trialData.total_correct += correct ? 1 : 0; this.trialData.responses.push({ - stimulus: this.params.stimuli[absoluteIndex], + stimulus: this.stimuliList[absoluteIndex], response: selectedValue + 1, correct: correct, }); From eefa7f4de99231aef67ffd29fb0a8c668ee0395c Mon Sep 17 00:00:00 2001 From: jade <101148768+jadeddelta@users.noreply.github.com> Date: Sun, 24 Nov 2024 04:52:33 -0500 Subject: [PATCH 4/6] added forced sequential answering, final example touch --- .../examples/basic-configuration.html | 5 +- packages/plugin-headphone-check/src/index.ts | 59 +++++++++++++++---- 2 files changed, 50 insertions(+), 14 deletions(-) diff --git a/packages/plugin-headphone-check/examples/basic-configuration.html b/packages/plugin-headphone-check/examples/basic-configuration.html index 95bbd584..35bd6e95 100644 --- a/packages/plugin-headphone-check/examples/basic-configuration.html +++ b/packages/plugin-headphone-check/examples/basic-configuration.html @@ -21,13 +21,16 @@ auto_preload: true } + // this trial uses the default configuration described in the original headphonecheck + // https://github.com/mcdermottLab/HeadphoneCheck?tab=readme-ov-file#configure-and-start-the-headphone-check + // note sequential + sampleWithReplacement are defined: their default values are false. const trial = { type: jsPsychHeadphoneCheck, stimuli: ["./audio/antiphase_HC_ISO.wav", "./audio/antiphase_HC_IOS.wav", "./audio/antiphase_HC_SOI.wav", "./audio/antiphase_HC_SIO.wav", "./audio/antiphase_HC_OSI.wav", "./audio/antiphase_HC_OIS.wav"], correct: [2, 3, 1, 1, 2, 3], calibration_stimulus: "./audio/noise_calib_stim.wav", sequential: true, - shuffle: false, + sampleWithReplacement: true }; jsPsych.run([preload, trial]) diff --git a/packages/plugin-headphone-check/src/index.ts b/packages/plugin-headphone-check/src/index.ts index b6067b57..d2035df4 100644 --- a/packages/plugin-headphone-check/src/index.ts +++ b/packages/plugin-headphone-check/src/index.ts @@ -167,6 +167,7 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { private stimuliList: string[]; private correctList: number[]; + private trialCounter: number; private currentPage: number; private css: string = @@ -248,22 +249,17 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { this.stimuliList = this.params.stimuli; this.correctList = this.params.correct; if (this.params.shuffle) { + var shuffled: number[]; if (this.params.sample_with_replacement) { - this.stimuliList = this.jsPsych.randomization.sampleWithReplacement( - this.stimuliList, - this.params.total_trials - ); - this.correctList = this.jsPsych.randomization.sampleWithReplacement( - this.correctList, + shuffled = this.jsPsych.randomization.sampleWithReplacement( + [...Array(this.params.total_trials).keys()], this.params.total_trials ); } else { - var shuffled = this.jsPsych.randomization.shuffle([ - ...Array(this.params.total_trials).keys(), - ]); - this.stimuliList = shuffled.map((i) => this.params.stimuli[i]); - this.correctList = shuffled.map((i) => this.params.correct[i]); + shuffled = this.jsPsych.randomization.shuffle([...Array(this.params.total_trials).keys()]); } + this.stimuliList = shuffled.map((i) => this.params.stimuli[i]); + this.correctList = shuffled.map((i) => this.params.correct[i]); } // instantiate trial resources @@ -294,6 +290,11 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { radio.name = `jspsych-headphone-check-radio-${stimuliIndex}`; radio.id = `jspsych-headphone-check-radio-${stimuliIndex}-${labelIndex}`; radio.value = labelIndex.toString(); + if (this.params.sequential) + radio.addEventListener( + "click", + this.handleCheckRadioClick(stimuliIndex % this.params.trials_per_page) + ); var radioLabel = document.createElement("label"); radioLabel.setAttribute("for", radio.id); @@ -399,6 +400,7 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { /** rest of headphone check- similar to calibration this will get re-called */ private async beginCheck() { const currentResources = this.getCurrentResources(); + this.trialCounter = 0; // reset display this.container.innerHTML = ""; @@ -410,6 +412,11 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { for (const resource of currentResources) { fieldsetContainer.appendChild(resource.fieldset); } + + if (this.params.sequential) { + this.handleSequentialFieldsets(); + } + this.container.appendChild(fieldsetContainer); this.container.appendChild(this.trialContinueButton); @@ -435,9 +442,24 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { audio.removeEventListener("ended", this.handleCheckAudioEnd(audio, fieldset)); var fieldsets = document.querySelectorAll(`.${fieldset.className}`); - fieldsets.forEach((fieldset) => { + // not seq, enable all fieldsets, otherwise, enable current, radio will enable next + if (!this.params.sequential) { + fieldsets.forEach((fs) => { + fs.removeAttribute("disabled"); + }); + } else { fieldset.removeAttribute("disabled"); - }); + } + }; + } + + /** enables the next fieldset on answer */ + private handleCheckRadioClick(id: number) { + return () => { + if (id < this.trialCounter || this.trialCounter === this.params.trials_per_page - 1) return; + + this.trialCounter++; + this.handleSequentialFieldsets(); }; } @@ -456,6 +478,17 @@ class HeadphoneCheckPlugin implements JsPsychPlugin { } } + /** enables current fieldset, disables all others */ + private handleSequentialFieldsets() { + var currentResources = this.getCurrentResources(); + var currentFieldset = currentResources[this.trialCounter].fieldset; + currentFieldset.removeAttribute("disabled"); + for (var i = this.trialCounter + 1; i < currentResources.length; i++) { + var fieldset = currentResources[i].fieldset; + fieldset.setAttribute("disabled", "disabled"); + } + } + /** checks for and highlights fieldsets that the participant has not responded to */ private checkData(): boolean { var isValidData = true; From 31b8896df18a62e4c6af3ff1b8fe353791305e3c Mon Sep 17 00:00:00 2001 From: jade <101148768+jadeddelta@users.noreply.github.com> Date: Mon, 25 Nov 2024 10:53:24 -0500 Subject: [PATCH 5/6] dummy test --- .../plugin-headphone-check/src/index.spec.ts | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/packages/plugin-headphone-check/src/index.spec.ts b/packages/plugin-headphone-check/src/index.spec.ts index 05593bc6..1636a9c0 100644 --- a/packages/plugin-headphone-check/src/index.spec.ts +++ b/packages/plugin-headphone-check/src/index.spec.ts @@ -1,19 +1,29 @@ -import { startTimeline } from "@jspsych/test-utils"; +jest.mock("../node_modules/jspsych/src/modules/plugin-api/AudioPlayer"); + +import { clickTarget, startTimeline } from "@jspsych/test-utils"; import jsPsychHeadphoneCheck from "."; jest.useFakeTimers(); -describe.skip("headphone-check plugin", () => { - it("should load", async () => { - const { expectFinished, getHTML, getData, displayElement, jsPsych } = await startTimeline([ - { - type: jsPsychHeadphoneCheck, - parameter_name: 1, - parameter_name2: "img.png", - }, - ]); +describe("headphone-check plugin", () => { + it.skip("should complete", async () => { + const { expectFinished, expectRunning, getHTML, getData, displayElement, jsPsych } = + await startTimeline([ + { + type: jsPsychHeadphoneCheck, + stimuli: ["foo1.mp3"], + correct: [0], + calibration: false, + }, + ]); + + expectRunning(); + + clickTarget(displayElement.querySelector("#jspsych-headphone-check-play-0")); + clickTarget(displayElement.querySelector("#jspsych-headphone-check-radio-0-0")); + clickTarget(displayElement.querySelector("#jspsych-headphone-check-continue")); - expect(3).toBe(3); + expectFinished(); }); }); From 31db640cd42adbc2d9df0176a339dd3616a1b570 Mon Sep 17 00:00:00 2001 From: jade <101148768+jadeddelta@users.noreply.github.com> Date: Mon, 25 Nov 2024 11:02:33 -0500 Subject: [PATCH 6/6] add references to original paper in docs --- packages/plugin-headphone-check/README.md | 2 +- packages/plugin-headphone-check/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/plugin-headphone-check/README.md b/packages/plugin-headphone-check/README.md index 930fe736..a7aa0c1f 100644 --- a/packages/plugin-headphone-check/README.md +++ b/packages/plugin-headphone-check/README.md @@ -2,7 +2,7 @@ ## Overview -Allows for one to check if a participant is wearing headphones using an auditory task. +Allows for one to check if a participant is wearing headphones using an auditory task. In the default configuration, participants listen to 6 audio samples with 3 tones each, and asked for which is the quietest. Upon meeting a threshold (at least 5), we can accurately conclude that the participant is wearing headphones, as per the findings in the [paper describing the original HeadphoneCheck](http://mcdermottlab.mit.edu/papers/Woods_etal_2017_headphone_screening.pdf). ## Loading diff --git a/packages/plugin-headphone-check/package.json b/packages/plugin-headphone-check/package.json index db2f7760..5f3e6ace 100644 --- a/packages/plugin-headphone-check/package.json +++ b/packages/plugin-headphone-check/package.json @@ -1,7 +1,7 @@ { "name": "@jspsych-contrib/plugin-headphone-check", "version": "0.0.1", - "description": "Allows for one to check if a participant is wearing headphones using an auditory task.", + "description": "Allows for one to check if a participant is wearing headphones using an auditory task. ([Woods et al., 2017](http://mcdermottlab.mit.edu/papers/Woods_etal_2017_headphone_screening.pdf))", "type": "module", "main": "dist/index.cjs", "exports": {